diff --git a/widgets/resources/icons/hicolor/scalable/actions/edit-undo.svg b/widgets/resources/icons/hicolor/scalable/actions/edit-undo.svg
new file mode 100644
index 0000000..14546aa
--- /dev/null
+++ b/widgets/resources/icons/hicolor/scalable/actions/edit-undo.svg
@@ -0,0 +1,13 @@
+
diff --git a/widgets/resources/syncthingwidgetsicons.qrc b/widgets/resources/syncthingwidgetsicons.qrc
index 134de40..ea7ec15 100644
--- a/widgets/resources/syncthingwidgetsicons.qrc
+++ b/widgets/resources/syncthingwidgetsicons.qrc
@@ -12,5 +12,6 @@
icons/hicolor/scalable/actions/globe.svg
icons/hicolor/scalable/places/user-home.svg
icons/hicolor/scalable/emblems/emblem-important-old.svg
+ icons/hicolor/scalable/actions/edit-undo.svg
diff --git a/widgets/settings/settings.h b/widgets/settings/settings.h
index 810d47c..33c15c1 100644
--- a/widgets/settings/settings.h
+++ b/widgets/settings/settings.h
@@ -67,7 +67,7 @@ struct SYNCTHINGWIDGETS_EXPORT Launcher {
#else
QStringLiteral("syncthing");
#endif
- QString syncthingArgs;
+ QString syncthingArgs = QStringLiteral("-no-browser -no-restart -logflags=3");
QHash tools;
bool considerForReconnect = false;
static Data::SyncthingProcess &toolProcess(const QString &tool);
diff --git a/widgets/settings/settingsdialog.cpp b/widgets/settings/settingsdialog.cpp
index 2ac5d0a..7f46a63 100644
--- a/widgets/settings/settingsdialog.cpp
+++ b/widgets/settings/settingsdialog.cpp
@@ -30,6 +30,7 @@
#include
#include
#include
+#include
#ifdef QT_UTILITIES_SUPPORT_DBUS_NOTIFICATIONS
#include
#endif
@@ -738,6 +739,7 @@ LauncherOptionPage::LauncherOptionPage(const QString &tool, QWidget *parentWidge
: LauncherOptionPageBase(parentWidget)
, m_process(&Launcher::toolProcess(tool))
, m_launcher(nullptr)
+ , m_restoreArgsButton(nullptr)
, m_kill(false)
, m_tool(tool)
{
@@ -753,6 +755,7 @@ LauncherOptionPage::~LauncherOptionPage()
QWidget *LauncherOptionPage::setupWidget()
{
auto *const widget = LauncherOptionPageBase::setupWidget();
+
// adjust labels to use name of additional tool instead of "Syncthing"
if (!m_tool.isEmpty()) {
widget->setWindowTitle(QCoreApplication::translate("QtGui::LauncherOptionPage", "%1-launcher").arg(m_tool));
@@ -760,8 +763,20 @@ QWidget *LauncherOptionPage::setupWidget()
ui()->syncthingPathLabel->setText(QCoreApplication::translate("QtGui::LauncherOptionPage", "%1 executable").arg(m_tool));
ui()->logLabel->setText(QCoreApplication::translate("QtGui::LauncherOptionPage", "%1 log (interleaved stdout/stderr)").arg(m_tool));
}
+
// hide "consider for reconnect" checkbox for tools
ui()->considerForReconnectCheckBox->setVisible(m_tool.isEmpty());
+
+ // add "restore to defaults" action for arguments
+ if (m_tool.isEmpty()) {
+ m_restoreArgsButton = new IconButton(ui()->argumentsLineEdit);
+ m_restoreArgsButton->setPixmap(
+ QIcon::fromTheme(QStringLiteral("edit-undo"), QIcon(QStringLiteral(":/icons/hicolor/scalable/actions/edit-paste.svg"))).pixmap(16));
+ m_restoreArgsButton->setToolTip(QCoreApplication::translate("QtGui::LauncherOptionPage", "Restore default"));
+ QObject::connect(m_restoreArgsButton, &IconButton::clicked, bind(&LauncherOptionPage::restoreDefaultArguments, this));
+ ui()->argumentsLineEdit->insertCustomButton(0, m_restoreArgsButton);
+ }
+
// setup other widgets
ui()->syncthingPathSelection->provideCustomFileMode(QFileDialog::ExistingFile);
ui()->logTextEdit->setFont(QFontDatabase::systemFont(QFontDatabase::FixedFont));
@@ -769,6 +784,7 @@ QWidget *LauncherOptionPage::setupWidget()
ui()->launchNowPushButton->setHidden(running);
ui()->stopPushButton->setHidden(!running);
ui()->useBuiltInVersionCheckBox->setHidden(!SyncthingLauncher::isLibSyncthingAvailable());
+
// connect signals & slots
if (m_process) {
m_connections << QObject::connect(m_process, &SyncthingProcess::readyRead, bind(&LauncherOptionPage::handleSyncthingReadyRead, this));
@@ -782,6 +798,7 @@ QWidget *LauncherOptionPage::setupWidget()
}
QObject::connect(ui()->launchNowPushButton, &QPushButton::clicked, bind(&LauncherOptionPage::launch, this));
QObject::connect(ui()->stopPushButton, &QPushButton::clicked, bind(&LauncherOptionPage::stop, this));
+
return widget;
}
@@ -914,6 +931,12 @@ void LauncherOptionPage::stop()
}
}
+void LauncherOptionPage::restoreDefaultArguments()
+{
+ static const ::Settings::Launcher defaults;
+ ui()->argumentsLineEdit->setText(defaults.syncthingArgs);
+}
+
// SystemdOptionPage
#ifdef LIB_SYNCTHING_CONNECTOR_SUPPORT_SYSTEMD
SystemdOptionPage::SystemdOptionPage(QWidget *parentWidget)
diff --git a/widgets/settings/settingsdialog.h b/widgets/settings/settingsdialog.h
index 3049b60..c2e1275 100644
--- a/widgets/settings/settingsdialog.h
+++ b/widgets/settings/settingsdialog.h
@@ -22,7 +22,8 @@ class DateTime;
namespace QtUtilities {
class ColorButton;
-}
+class IconButton;
+} // namespace QtUtilities
namespace Data {
class SyncthingConnection;
@@ -106,8 +107,10 @@ void handleSyncthingExited(int exitCode, QProcess::ExitStatus exitStatus);
bool isRunning() const;
void launch();
void stop();
+void restoreDefaultArguments();
Data::SyncthingProcess *const m_process;
Data::SyncthingLauncher *const m_launcher;
+QtUtilities::IconButton *m_restoreArgsButton;
QList m_connections;
bool m_kill;
QString m_tool;