#ifndef COMMAND_H_INCLUDED #define COMMAND_H_INCLUDED #endif // COMMAND_H_INCLUDED #include #include #include #include #include #include class Worker; class Command : public QObject { Q_OBJECT QString m_command; mutable QString m_commandResult; int m_waitForStartTimeout; int m_waitForFinishTimeout; int m_exitCode; mutable QMutex m_mtx; QProcess *m_p; Worker *m_worker; public: explicit Command(QString const &command, int start_timeout = 100000, int finish_timeout = 100000); QString getCommandResult(bool reset = false) const; QString command() const { return m_command; } bool execute(QString workingDirectory, QStringList args = QStringList()); bool start(QString workingDirectory, QStringList args = QStringList()); int exitCode() const { return m_exitCode; } void setWorker(Worker *worker) {m_worker = worker; } private slots: void readyReadStandardOutput(); void readyReadStandardError(); void finished(int exitCode, QProcess::ExitStatus exitStatus); };