syncthingtray/connector/syncthingprocess.h

72 lines
1.7 KiB
C
Raw Normal View History

2016-09-03 19:39:43 +02:00
#ifndef DATA_SYNCTHINGPROCESS_H
#define DATA_SYNCTHINGPROCESS_H
#include "./global.h"
#include <c++utilities/chrono/datetime.h>
2016-09-03 19:39:43 +02:00
#include <QProcess>
#include <QTimer>
2016-09-03 19:39:43 +02:00
namespace Data {
2017-05-01 03:34:43 +02:00
class LIB_SYNCTHING_CONNECTOR_EXPORT SyncthingProcess : public QProcess {
2016-09-03 19:39:43 +02:00
Q_OBJECT
Q_PROPERTY(bool running READ isRunning)
Q_PROPERTY(ChronoUtilities::DateTime activeSince READ activeSince)
Q_PROPERTY(bool manuallyStopped READ isManuallyStopped)
2016-09-03 19:39:43 +02:00
public:
2017-01-06 15:19:37 +01:00
explicit SyncthingProcess(QObject *parent = nullptr);
bool isRunning() const;
ChronoUtilities::DateTime activeSince() const;
bool isActiveFor(unsigned int atLeastSeconds) const;
bool isManuallyStopped() const;
2016-09-03 19:39:43 +02:00
Q_SIGNALS:
void confirmKill();
2016-09-03 19:39:43 +02:00
public Q_SLOTS:
void restartSyncthing(const QString &cmd);
void startSyncthing(const QString &cmd);
void stopSyncthing();
void killSyncthing();
2016-09-03 19:39:43 +02:00
private Q_SLOTS:
void handleStarted();
2016-09-03 19:39:43 +02:00
void handleFinished(int exitCode, QProcess::ExitStatus exitStatus);
void killToRestart();
private:
QString m_cmd;
ChronoUtilities::DateTime m_activeSince;
QTimer m_killTimer;
bool m_manuallyStopped;
2016-09-03 19:39:43 +02:00
};
inline bool SyncthingProcess::isRunning() const
{
return state() != QProcess::NotRunning;
}
inline ChronoUtilities::DateTime SyncthingProcess::activeSince() const
{
return m_activeSince;
}
inline bool SyncthingProcess::isActiveFor(unsigned int atLeastSeconds) const
{
return !m_activeSince.isNull() && (ChronoUtilities::DateTime::gmtNow() - m_activeSince).totalSeconds() > atLeastSeconds;
}
inline bool SyncthingProcess::isManuallyStopped() const
{
return m_manuallyStopped;
}
2016-10-03 00:41:38 +02:00
SyncthingProcess LIB_SYNCTHING_CONNECTOR_EXPORT &syncthingProcess();
2016-09-03 19:39:43 +02:00
} // namespace Data
#endif // DATA_SYNCTHINGPROCESS_H