21 #include "postjobaction.h"
25 #include <QModelIndex>
27 #include <QElapsedTimer>
33 class AbstractJob :
public QProcess
37 explicit AbstractJob(
const QString &name, QThread::Priority priority = Settings.jobPriority());
38 virtual ~AbstractJob() {}
40 void setStandardItem(QStandardItem *item);
41 QStandardItem *standardItem();
44 void appendToLog(
const QString &);
50 void setLabel(
const QString &label);
51 QList<QAction *> standardActions()
const
53 return m_standardActions;
55 QList<QAction *> successActions()
const
57 return m_successActions;
59 QTime estimateRemaining(
int percent);
60 QElapsedTimer time()
const
64 void setPostJobAction(PostJobAction *action);
67 void start(
const QString &program,
const QStringList &arguments);
72 void progressUpdated(QStandardItem *item,
int percent);
73 void finished(AbstractJob *job,
bool isSuccess, QString failureTime = QString());
76 QList<QAction *> m_standardActions;
77 QList<QAction *> m_successActions;
78 QStandardItem *m_item;
81 virtual void onFinished(
int exitCode, QProcess::ExitStatus exitStatus = QProcess::NormalExit);
82 virtual void onReadyRead();
83 virtual void onStarted();
86 void onProgressUpdated(QStandardItem *,
int percent);
93 QElapsedTimer m_estimateTime;
94 int m_startingPercent;
95 QElapsedTimer m_totalTime;
96 QScopedPointer<PostJobAction> m_postJobAction;
97 QThread::Priority m_priority;