#pragma once #include #include class Entry : public QObject { Q_OBJECT public: Entry(const QString &name, const QString &tunnel, bool sudo, QObject *parent = nullptr); ~Entry() override; const QString &name() const { return m_name; } const QString &tunnel() const { return m_tunnel; } bool sudo() const { return m_sudo; } const QString &logOutput() const { return m_logOutput; } Qt::CheckState state() const; void toggle(); void start(); void stop(); QString binaryName() const; QStringList arguments() const; signals: void dataChanged(); private slots: void errorOccurred(QProcess::ProcessError error); void stateChanged(QProcess::ProcessState state); void readyReadStandardOutput(); void readyReadStandardError(); private: const QString m_name; const QString m_tunnel; const bool m_sudo; bool m_readyReceived{false}; QProcess m_process; QString m_logOutput; };