#ifndef COMMAND_H_INCLUDED #define COMMAND_H_INCLUDED #include #include #include #include #include #include class Worker; class Command : public QObject { Q_OBJECT protected: QString m_command; mutable QString m_commandResult; private: int m_waitForStartTimeout; int m_waitForFinishTimeout; int m_exitCode; protected: mutable QMutex m_mtx; private: QProcess *m_p; protected: 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; } protected slots: void readyReadStandardOutput(); void readyReadStandardError(); virtual void finished(int exitCode, QProcess::ExitStatus exitStatus); }; #endif // COMMAND_H_INCLUDED