syncthingtray/application/settings.cpp

215 lines
6.1 KiB
C++
Raw Normal View History

2016-08-25 00:45:32 +02:00
#include "./settings.h"
2016-09-01 16:34:30 +02:00
2016-08-25 00:45:32 +02:00
#include <qtutilities/settingsdialog/qtsettings.h>
#include <QString>
#include <QByteArray>
#include <QApplication>
#include <QSettings>
2016-09-03 19:39:43 +02:00
#include <QFrame>
2016-08-25 00:45:32 +02:00
using namespace Media;
namespace Settings {
2016-09-01 16:34:30 +02:00
bool &firstLaunch()
{
static bool v = false;
return v;
}
// connection
2016-08-25 00:45:32 +02:00
QString &syncthingUrl()
{
static QString v;
return v;
}
bool &authEnabled()
{
static bool v = false;
return v;
}
QString &userName()
{
static QString v;
return v;
}
QString &password()
{
static QString v;
return v;
}
QByteArray &apiKey()
{
static QByteArray v;
return v;
}
2016-09-01 16:34:30 +02:00
// notifications
2016-08-25 00:45:32 +02:00
bool &notifyOnDisconnect()
{
static bool v = true;
return v;
}
2016-09-01 16:34:30 +02:00
bool &notifyOnInternalErrors()
2016-08-25 00:45:32 +02:00
{
static bool v = true;
return v;
}
bool &notifyOnSyncComplete()
{
static bool v = true;
return v;
}
bool &showSyncthingNotifications()
{
static bool v = true;
return v;
}
2016-09-01 16:34:30 +02:00
// appearance
2016-08-29 20:51:30 +02:00
bool &showTraffic()
{
static bool v = true;
return v;
}
2016-09-01 16:34:30 +02:00
QSize &trayMenuSize()
{
static QSize v(350, 300);
return v;
}
2016-09-03 19:39:43 +02:00
int &frameStyle()
{
static int v = QFrame::StyledPanel | QFrame::Sunken;
return v;
}
2016-09-01 16:34:30 +02:00
// autostart/launcher
2016-08-25 00:45:32 +02:00
bool &launchSynchting()
{
static bool v = false;
return v;
}
2016-09-03 19:39:43 +02:00
QString &syncthingPath()
{
#ifdef PLATFORM_WINDOWS
static QString v(QStringLiteral("syncthing.exe"));
#else
static QString v(QStringLiteral("syncthing"));
#endif
return v;
}
QString &syncthingArgs()
2016-08-25 00:45:32 +02:00
{
static QString v;
return v;
}
// web view
#if defined(SYNCTHINGTRAY_USE_WEBENGINE) || defined(SYNCTHINGTRAY_USE_WEBKIT)
bool &webViewDisabled()
{
static bool v = false;
return v;
}
double &webViewZoomFactor()
{
static double v = 1.0;
return v;
}
QByteArray &webViewGeometry()
{
static QByteArray v;
return v;
}
bool &webViewKeepRunning()
{
static bool v = true;
return v;
}
#endif
// Qt settings
Dialogs::QtSettings &qtSettings()
{
static Dialogs::QtSettings v;
return v;
}
void restore()
{
QSettings settings(QSettings::IniFormat, QSettings::UserScope, QApplication::organizationName(), QApplication::applicationName());
settings.beginGroup(QStringLiteral("tray"));
2016-09-01 16:34:30 +02:00
firstLaunch() = !settings.contains(QStringLiteral("syncthingUrl"));
2016-08-25 00:45:32 +02:00
syncthingUrl() = settings.value(QStringLiteral("syncthingUrl"), QStringLiteral("http://localhost:8080/")).toString();
authEnabled() = settings.value(QStringLiteral("authEnabled"), false).toBool();
userName() = settings.value(QStringLiteral("userName")).toString();
password() = settings.value(QStringLiteral("password")).toString();
apiKey() = settings.value(QStringLiteral("apiKey")).toByteArray();
notifyOnDisconnect() = settings.value(QStringLiteral("notifyOnDisconnect"), true).toBool();
2016-09-01 16:34:30 +02:00
notifyOnInternalErrors() = settings.value(QStringLiteral("notifyOnErrors"), true).toBool();
2016-08-25 00:45:32 +02:00
notifyOnSyncComplete() = settings.value(QStringLiteral("notifyOnSyncComplete"), true).toBool();
2016-08-29 20:51:30 +02:00
showSyncthingNotifications() = settings.value(QStringLiteral("showSyncthingNotifications"), true).toBool();
showTraffic() = settings.value(QStringLiteral("showTraffic"), true).toBool();
2016-09-01 16:34:30 +02:00
trayMenuSize() = settings.value(QStringLiteral("trayMenuSize"), trayMenuSize()).toSize();
2016-09-03 19:39:43 +02:00
frameStyle() = settings.value(QStringLiteral("frameStyle"), frameStyle()).toInt();
settings.endGroup();
settings.beginGroup(QStringLiteral("startup"));
2016-08-25 00:45:32 +02:00
launchSynchting() = settings.value(QStringLiteral("launchSynchting"), false).toBool();
2016-09-03 19:39:43 +02:00
syncthingPath() = settings.value(QStringLiteral("syncthingPath"), syncthingPath()).toString();
syncthingArgs() = settings.value(QStringLiteral("syncthingArgs"), syncthingArgs()).toString();
2016-08-25 00:45:32 +02:00
settings.endGroup();
#if defined(SYNCTHINGTRAY_USE_WEBENGINE) || defined(SYNCTHINGTRAY_USE_WEBKIT)
settings.beginGroup(QStringLiteral("webview"));
webViewDisabled() = settings.value(QStringLiteral("isabled"), false).toBool();
webViewZoomFactor() = settings.value(QStringLiteral("zoomFactor"), 1.0).toDouble();
webViewGeometry() = settings.value(QStringLiteral("geometry")).toByteArray();
webViewKeepRunning() = settings.value(QStringLiteral("keepRunning"), true).toBool();
settings.endGroup();
#endif
qtSettings().restore(settings);
}
void save()
{
QSettings settings(QSettings::IniFormat, QSettings::UserScope, QApplication::organizationName(), QApplication::applicationName());
settings.beginGroup(QStringLiteral("tray"));
settings.setValue(QStringLiteral("syncthingUrl"), syncthingUrl());
settings.setValue(QStringLiteral("authEnabled"), authEnabled());
settings.setValue(QStringLiteral("userName"), userName());
settings.setValue(QStringLiteral("password"), password());
settings.setValue(QStringLiteral("apiKey"), apiKey());
settings.setValue(QStringLiteral("notifyOnDisconnect"), notifyOnDisconnect());
2016-09-01 16:34:30 +02:00
settings.setValue(QStringLiteral("notifyOnErrors"), notifyOnInternalErrors());
2016-08-25 00:45:32 +02:00
settings.setValue(QStringLiteral("notifyOnSyncComplete"), notifyOnSyncComplete());
settings.setValue(QStringLiteral("showSyncthingNotifications"), showSyncthingNotifications());
2016-08-29 20:51:30 +02:00
settings.setValue(QStringLiteral("showTraffic"), showTraffic());
2016-09-01 16:34:30 +02:00
settings.setValue(QStringLiteral("trayMenuSize"), trayMenuSize());
2016-09-03 19:39:43 +02:00
settings.setValue(QStringLiteral("frameStyle"), frameStyle());
settings.endGroup();
settings.beginGroup(QStringLiteral("startup"));
2016-08-25 00:45:32 +02:00
settings.setValue(QStringLiteral("launchSynchting"), launchSynchting());
2016-09-03 19:39:43 +02:00
settings.setValue(QStringLiteral("syncthingPath"), syncthingPath());
settings.setValue(QStringLiteral("syncthingArgs"), syncthingArgs());
2016-08-25 00:45:32 +02:00
settings.endGroup();
#if defined(SYNCTHINGTRAY_USE_WEBENGINE) || defined(SYNCTHINGTRAY_USE_WEBKIT)
settings.beginGroup(QStringLiteral("webview"));
settings.setValue(QStringLiteral("disabled"), webViewDisabled());
settings.setValue(QStringLiteral("zoomFactor"), webViewZoomFactor());
settings.setValue(QStringLiteral("geometry"), webViewGeometry());
settings.setValue(QStringLiteral("keepRunning"), webViewKeepRunning());
settings.endGroup();
#endif
qtSettings().save(settings);
}
}