21#include "postjobaction.h"
27#include <QElapsedTimer>
33class 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);
68 void start(
const QString &program,
const QStringList &arguments);
75 void progressUpdated(QStandardItem *item,
int percent);
76 void finished(AbstractJob *job,
bool isSuccess, QString failureTime = QString());
79 QList<QAction *> m_standardActions;
80 QList<QAction *> m_successActions;
81 QStandardItem *m_item;
84 virtual void onFinished(
int exitCode, QProcess::ExitStatus exitStatus = QProcess::NormalExit);
85 virtual void onReadyRead();
86 virtual void onStarted();
89 void onProgressUpdated(QStandardItem *,
int percent);
96 QElapsedTimer m_estimateTime;
97 int m_startingPercent;
98 QElapsedTimer m_totalTime;
99 QScopedPointer<PostJobAction> m_postJobAction;
100 QThread::Priority m_priority;
101 QAction *m_actionPause;
102 QAction *m_actionResume;