syncthingtray/widgets/settings/setupdetection.h
Martchus 84acab68aa Determine whether autostart is enabled in wizard's setup detection once
Instead of checking whether autostart is enabled each and every time it is
used. Also show it in details from setup detection.
2022-10-28 14:10:19 +02:00

75 lines
2.0 KiB
C++

#ifndef SETTINGS_SETUP_DETECTION_H
#define SETTINGS_SETUP_DETECTION_H
#include "./settings.h"
#include "../misc/syncthinglauncher.h"
#include <syncthingconnector/syncthingconfig.h>
#include <syncthingconnector/syncthingconnection.h>
#include <syncthingconnector/syncthingconnectionsettings.h>
#include <syncthingconnector/syncthingservice.h>
#include <QByteArray>
#include <QProcess>
#include <QStringBuilder>
#include <QTimer>
#include <memory>
#include <optional>
namespace QtGui {
class SYNCTHINGWIDGETS_EXPORT SetupDetection : public QObject {
Q_OBJECT
public:
explicit SetupDetection(QObject *parent = nullptr);
bool hasConfig() const;
bool isDone() const;
public Q_SLOTS:
void determinePaths();
void restoreConfig();
void initConnection();
void reset();
void startTest();
Q_SIGNALS:
void done();
private Q_SLOTS:
void handleConnectionError(const QString &error);
void handleLauncherExit(int exitCode, QProcess::ExitStatus exitStatus);
void handleLauncherError(QProcess::ProcessError error);
void handleLauncherOutput(const QByteArray &output);
void handleTimeout();
void checkDone();
public:
QString configFilePath;
QString certPath;
QStringList connectionErrors;
Data::SyncthingConfig config;
Data::SyncthingConnection connection;
#ifdef LIB_SYNCTHING_CONNECTOR_SUPPORT_SYSTEMD
Data::SyncthingService userService = Data::SyncthingService(Data::SystemdScope::User);
Data::SyncthingService systemService = Data::SyncthingService(Data::SystemdScope::System);
#endif
Settings::Launcher launcherSettings;
QString defaultSyncthingArgs;
Data::SyncthingLauncher launcher;
std::optional<int> launcherExitCode;
std::optional<QProcess::ExitStatus> launcherExitStatus;
std::optional<QProcess::ProcessError> launcherError;
QByteArray launcherOutput;
QTimer timeout;
bool timedOut = false;
bool configOk = false;
bool autostartEnabled = false;
};
} // namespace QtGui
#endif // SETTINGS_SETUP_DETECTION_H