File indexing completed on 2024-05-19 04:48:24

0001 #ifndef PROCESSMANAGER_H
0002 #define PROCESSMANAGER_H
0003 
0004 #include <QObject>
0005 #include <QUrl>
0006 
0007 class QProcess;
0008 class CMakeProject;
0009 
0010 class ConfigureProcess;
0011 class ProcessManager : public QObject
0012 {
0013     Q_OBJECT
0014 
0015     Q_PROPERTY(bool processRunning READ processRunning NOTIFY processRunningChanged FINAL)
0016 
0017     Q_PROPERTY(Status configureStatus READ configureStatus NOTIFY configureStatusChanged FINAL)
0018     Q_PROPERTY(Status buildStatus READ buildStatus NOTIFY buildStatusChanged FINAL)
0019     Q_PROPERTY(Status deployStatus READ deployStatus NOTIFY deployStatusChanged FINAL)
0020 
0021     Q_PROPERTY(QString infoLabel READ infoLabel NOTIFY infoLabelChanged)
0022 
0023     Q_PROPERTY(bool enabled READ enabled NOTIFY enabledChanged FINAL)
0024 
0025 public:
0026   enum Status
0027   {
0028       Running,
0029       Finished,
0030       Error,
0031       None
0032   };Q_ENUM(Status)
0033 
0034     explicit ProcessManager(CMakeProject *project);
0035   ~ProcessManager();
0036 
0037     bool processRunning() const;
0038 
0039     Status configureStatus() const;
0040 
0041     Status buildStatus() const;
0042 
0043     Status  deployStatus() const;
0044 
0045     bool enabled() const;
0046 
0047     QString infoLabel() const;
0048 
0049 public slots:
0050     void build();
0051     void configure();
0052     void deploy();
0053 
0054     void stopBuild();
0055     void stopConfigure();
0056     void stopDeploy();
0057 
0058 private:
0059     CMakeProject *m_project;
0060     ConfigureProcess *m_configureProcess;
0061     QProcess *m_buildProcess;
0062     QProcess *m_deployProcess;
0063 
0064     bool m_processRunning {false};
0065 
0066     void buildStep();
0067     void configureStep();
0068     void deployStep();
0069 
0070     Status m_configureStatus {Status::None};
0071 
0072     Status m_buildStatus {Status::None};
0073 
0074     Status m_deployStatus {Status::None};
0075 
0076     bool m_enabled {false};
0077 
0078     QString m_infoLabel;
0079 
0080 signals:
0081    void processRunningChanged(bool running);
0082 
0083     void outputLine(QString output);
0084 
0085     void configureStatusChanged(Status configureStatus);
0086     void buildStatusChanged(Status buildStatus);
0087     void deployStatusChanged(Status binaryStatus);
0088 
0089     void enabledChanged(bool enabled);
0090     void infoLabelChanged(QString infoLabel);
0091 };
0092 
0093 #endif // PROCESSMANAGER_H