Allow showing Syncthing UI in Chromium-based browser in "app mode"
See https://github.com/Martchus/syncthingtray/issues/178
This commit is contained in:
parent
a95fd02436
commit
58b8a4e540
|
@ -13,7 +13,7 @@ set(META_VERSION_MAJOR 1)
|
||||||
set(META_VERSION_MINOR 4)
|
set(META_VERSION_MINOR 4)
|
||||||
set(META_VERSION_PATCH 0)
|
set(META_VERSION_PATCH 0)
|
||||||
set(META_RELEASE_DATE "2023-03-07")
|
set(META_RELEASE_DATE "2023-03-07")
|
||||||
set(META_SOVERSION 5)
|
set(META_SOVERSION 6)
|
||||||
set(META_ADD_DEFAULT_CPP_UNIT_TEST_APPLICATION ON)
|
set(META_ADD_DEFAULT_CPP_UNIT_TEST_APPLICATION ON)
|
||||||
|
|
||||||
project(${META_PROJECT_NAME})
|
project(${META_PROJECT_NAME})
|
||||||
|
|
|
@ -506,6 +506,8 @@ It is possible to turn on logging of the underlying library by setting environme
|
||||||
* `SYNCTHING_PORT`: override the port of the Syncthing test instance spawned when running tests
|
* `SYNCTHING_PORT`: override the port of the Syncthing test instance spawned when running tests
|
||||||
* `SYNCTHINGTRAY_SYSTEMD_USER_UNIT`: override the name of the systemd user-unit checked by the wizard's
|
* `SYNCTHINGTRAY_SYSTEMD_USER_UNIT`: override the name of the systemd user-unit checked by the wizard's
|
||||||
setup detection
|
setup detection
|
||||||
|
* `SYNCTHINGWIDGETS_CHROMIUM_BASED_BROWSER`: override the path of the Chromium-based browser to open
|
||||||
|
Syncthing in app mode
|
||||||
* `LIB_SYNCTHING_CONNECTOR_USE_DEPRECATED_ROUTES`: change whether to use deprecated routes (enabled by
|
* `LIB_SYNCTHING_CONNECTOR_USE_DEPRECATED_ROUTES`: change whether to use deprecated routes (enabled by
|
||||||
default for compatibility with older Syncthing versions, set to `0` to change the behavior)
|
default for compatibility with older Syncthing versions, set to `0` to change the behavior)
|
||||||
|
|
||||||
|
|
|
@ -132,15 +132,17 @@ SettingsDialog::SettingsDialog(Plasmoid::SyncthingApplet &applet)
|
||||||
categories << category;
|
categories << category;
|
||||||
|
|
||||||
// most startup options don't make much sense for a Plasmoid, so merge webview with startup
|
// most startup options don't make much sense for a Plasmoid, so merge webview with startup
|
||||||
auto *const webViewPage = new WebViewOptionPage;
|
auto *const generalWebViewPage = new GeneralWebViewOptionPage;
|
||||||
webViewPage->widget()->setWindowTitle(QCoreApplication::translate("Plasmoid::SettingsDialog", "Web view"));
|
generalWebViewPage->widget()->setWindowTitle(QCoreApplication::translate("Plasmoid::SettingsDialog", "General web view settings"));
|
||||||
|
auto *const builtinWebViewPage = new BuiltinWebViewOptionPage;
|
||||||
|
builtinWebViewPage->widget()->setWindowTitle(QCoreApplication::translate("Plasmoid::SettingsDialog", "Built-in web view"));
|
||||||
#ifdef LIB_SYNCTHING_CONNECTOR_SUPPORT_SYSTEMD
|
#ifdef LIB_SYNCTHING_CONNECTOR_SUPPORT_SYSTEMD
|
||||||
auto *const systemdPage = new SystemdOptionPage;
|
auto *const systemdPage = new SystemdOptionPage;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
category = new OptionCategory;
|
category = new OptionCategory;
|
||||||
category->setDisplayName(QCoreApplication::translate("Plasmoid::SettingsDialog", "Extras"));
|
category->setDisplayName(QCoreApplication::translate("Plasmoid::SettingsDialog", "Extras"));
|
||||||
category->assignPages({ webViewPage
|
category->assignPages({ generalWebViewPage, builtinWebViewPage
|
||||||
#ifdef LIB_SYNCTHING_CONNECTOR_SUPPORT_SYSTEMD
|
#ifdef LIB_SYNCTHING_CONNECTOR_SUPPORT_SYSTEMD
|
||||||
,
|
,
|
||||||
systemdPage
|
systemdPage
|
||||||
|
|
|
@ -84,9 +84,7 @@ SyncthingApplet::SyncthingApplet(QObject *parent, const QVariantList &data)
|
||||||
, m_settingsDlg(nullptr)
|
, m_settingsDlg(nullptr)
|
||||||
, m_wizard(nullptr)
|
, m_wizard(nullptr)
|
||||||
, m_imageProvider(nullptr)
|
, m_imageProvider(nullptr)
|
||||||
#ifndef SYNCTHINGWIDGETS_NO_WEBVIEW
|
|
||||||
, m_webViewDlg(nullptr)
|
, m_webViewDlg(nullptr)
|
||||||
#endif
|
|
||||||
, m_currentConnectionConfig(-1)
|
, m_currentConnectionConfig(-1)
|
||||||
, m_hasInternalErrors(false)
|
, m_hasInternalErrors(false)
|
||||||
, m_initialized(false)
|
, m_initialized(false)
|
||||||
|
@ -417,22 +415,19 @@ void SyncthingApplet::concludeWizard(const QString &errorMessage)
|
||||||
|
|
||||||
void SyncthingApplet::showWebUI()
|
void SyncthingApplet::showWebUI()
|
||||||
{
|
{
|
||||||
|
auto *const dlg = QtGui::showWebUI(m_connection.syncthingUrl(), currentConnectionConfig(), m_webViewDlg);
|
||||||
#ifndef SYNCTHINGWIDGETS_NO_WEBVIEW
|
#ifndef SYNCTHINGWIDGETS_NO_WEBVIEW
|
||||||
if (Settings::values().webView.disabled) {
|
if (!dlg) {
|
||||||
#endif
|
return;
|
||||||
QDesktopServices::openUrl(m_connection.syncthingUrl());
|
|
||||||
#ifndef SYNCTHINGWIDGETS_NO_WEBVIEW
|
|
||||||
} else {
|
|
||||||
if (!m_webViewDlg) {
|
|
||||||
m_webViewDlg = new WebViewDialog;
|
|
||||||
if (const auto *connectionConfig = currentConnectionConfig()) {
|
|
||||||
m_webViewDlg->applySettings(*connectionConfig, true);
|
|
||||||
}
|
|
||||||
connect(m_webViewDlg, &WebViewDialog::destroyed, this, &SyncthingApplet::handleWebViewDeleted);
|
|
||||||
}
|
|
||||||
m_webViewDlg->show();
|
|
||||||
m_webViewDlg->activateWindow();
|
|
||||||
}
|
}
|
||||||
|
if (!m_webViewDlg) {
|
||||||
|
m_webViewDlg = dlg;
|
||||||
|
connect(m_webViewDlg, &WebViewDialog::destroyed, this, &SyncthingApplet::handleWebViewDeleted);
|
||||||
|
}
|
||||||
|
m_webViewDlg->show();
|
||||||
|
m_webViewDlg->activateWindow();
|
||||||
|
#else
|
||||||
|
Q_UNUSED(dlg)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -588,12 +583,10 @@ void SyncthingApplet::handleAboutDialogDeleted()
|
||||||
m_aboutDlg = nullptr;
|
m_aboutDlg = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef SYNCTHINGWIDGETS_NO_WEBVIEW
|
|
||||||
void SyncthingApplet::handleWebViewDeleted()
|
void SyncthingApplet::handleWebViewDeleted()
|
||||||
{
|
{
|
||||||
m_webViewDlg = nullptr;
|
m_webViewDlg = nullptr;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
void SyncthingApplet::handleNewNotification(DateTime when, const QString &msg)
|
void SyncthingApplet::handleNewNotification(DateTime when, const QString &msg)
|
||||||
{
|
{
|
||||||
|
|
|
@ -35,7 +35,11 @@ class IconManager;
|
||||||
} // namespace Data
|
} // namespace Data
|
||||||
|
|
||||||
namespace QtGui {
|
namespace QtGui {
|
||||||
|
#ifdef SYNCTHINGWIDGETS_NO_WEBVIEW
|
||||||
|
using WebViewDialog = void;
|
||||||
|
#else
|
||||||
class WebViewDialog;
|
class WebViewDialog;
|
||||||
|
#endif
|
||||||
class Wizard;
|
class Wizard;
|
||||||
} // namespace QtGui
|
} // namespace QtGui
|
||||||
|
|
||||||
|
@ -181,9 +185,7 @@ private Q_SLOTS:
|
||||||
void handleDirStatisticsChanged();
|
void handleDirStatisticsChanged();
|
||||||
void handleErrorsCleared();
|
void handleErrorsCleared();
|
||||||
void handleAboutDialogDeleted();
|
void handleAboutDialogDeleted();
|
||||||
#ifndef SYNCTHINGWIDGETS_NO_WEBVIEW
|
|
||||||
void handleWebViewDeleted();
|
void handleWebViewDeleted();
|
||||||
#endif
|
|
||||||
void handleNewNotification(CppUtilities::DateTime when, const QString &msg);
|
void handleNewNotification(CppUtilities::DateTime when, const QString &msg);
|
||||||
void handleSystemdServiceError(const QString &context, const QString &name, const QString &message);
|
void handleSystemdServiceError(const QString &context, const QString &name, const QString &message);
|
||||||
#ifdef LIB_SYNCTHING_CONNECTOR_SUPPORT_SYSTEMD
|
#ifdef LIB_SYNCTHING_CONNECTOR_SUPPORT_SYSTEMD
|
||||||
|
@ -222,9 +224,7 @@ private:
|
||||||
QtGui::DBusStatusNotifier m_dbusNotifier;
|
QtGui::DBusStatusNotifier m_dbusNotifier;
|
||||||
std::vector<Data::SyncthingLogEntry> m_notifications;
|
std::vector<Data::SyncthingLogEntry> m_notifications;
|
||||||
QtForkAwesome::QuickImageProvider *m_imageProvider;
|
QtForkAwesome::QuickImageProvider *m_imageProvider;
|
||||||
#ifndef SYNCTHINGWIDGETS_NO_WEBVIEW
|
|
||||||
QtGui::WebViewDialog *m_webViewDlg;
|
QtGui::WebViewDialog *m_webViewDlg;
|
||||||
#endif
|
|
||||||
int m_currentConnectionConfig;
|
int m_currentConnectionConfig;
|
||||||
bool m_hasInternalErrors;
|
bool m_hasInternalErrors;
|
||||||
bool m_initialized;
|
bool m_initialized;
|
||||||
|
|
|
@ -274,11 +274,20 @@
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../lib/settingsdialog.cpp" line="136"/>
|
<location filename="../lib/settingsdialog.cpp" line="136"/>
|
||||||
<source>Web view</source>
|
<source>General web view settings</source>
|
||||||
<translation>Weboberfläche</translation>
|
<translation>Allgemeine Webanzeigeneinstellungen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../lib/settingsdialog.cpp" line="142"/>
|
<location filename="../lib/settingsdialog.cpp" line="138"/>
|
||||||
|
<source>Built-in web view</source>
|
||||||
|
<translation>Eingebaute Webanzeige</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Web view</source>
|
||||||
|
<translation type="vanished">Weboberfläche</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../lib/settingsdialog.cpp" line="144"/>
|
||||||
<source>Extras</source>
|
<source>Extras</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -299,22 +308,22 @@
|
||||||
<context>
|
<context>
|
||||||
<name>Plasmoid::SyncthingApplet</name>
|
<name>Plasmoid::SyncthingApplet</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../lib/syncthingapplet.cpp" line="460"/>
|
<location filename="../lib/syncthingapplet.cpp" line="455"/>
|
||||||
<source>About</source>
|
<source>About</source>
|
||||||
<translation>Über Syncthing Plasmoid</translation>
|
<translation>Über Syncthing Plasmoid</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../lib/syncthingapplet.cpp" line="472"/>
|
<location filename="../lib/syncthingapplet.cpp" line="467"/>
|
||||||
<source>New notifications</source>
|
<source>New notifications</source>
|
||||||
<translation>Neue Benachrichtigungen</translation>
|
<translation>Neue Benachrichtigungen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../lib/syncthingapplet.cpp" line="543"/>
|
<location filename="../lib/syncthingapplet.cpp" line="538"/>
|
||||||
<source>Unable to establish connection to Syncthing.</source>
|
<source>Unable to establish connection to Syncthing.</source>
|
||||||
<translation>Verbindung zu Syncthing kann nicht hergestellt werden.</translation>
|
<translation>Verbindung zu Syncthing kann nicht hergestellt werden.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../lib/syncthingapplet.cpp" line="613"/>
|
<location filename="../lib/syncthingapplet.cpp" line="606"/>
|
||||||
<source>D-Bus error - unable to </source>
|
<source>D-Bus error - unable to </source>
|
||||||
<translation>D-Bus-Fehler bei Aktion </translation>
|
<translation>D-Bus-Fehler bei Aktion </translation>
|
||||||
</message>
|
</message>
|
||||||
|
|
|
@ -212,11 +212,16 @@
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../lib/settingsdialog.cpp" line="136"/>
|
<location filename="../lib/settingsdialog.cpp" line="136"/>
|
||||||
<source>Web view</source>
|
<source>General web view settings</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../lib/settingsdialog.cpp" line="142"/>
|
<location filename="../lib/settingsdialog.cpp" line="138"/>
|
||||||
|
<source>Built-in web view</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../lib/settingsdialog.cpp" line="144"/>
|
||||||
<source>Extras</source>
|
<source>Extras</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -237,22 +242,22 @@
|
||||||
<context>
|
<context>
|
||||||
<name>Plasmoid::SyncthingApplet</name>
|
<name>Plasmoid::SyncthingApplet</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../lib/syncthingapplet.cpp" line="460"/>
|
<location filename="../lib/syncthingapplet.cpp" line="455"/>
|
||||||
<source>About</source>
|
<source>About</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../lib/syncthingapplet.cpp" line="472"/>
|
<location filename="../lib/syncthingapplet.cpp" line="467"/>
|
||||||
<source>New notifications</source>
|
<source>New notifications</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../lib/syncthingapplet.cpp" line="543"/>
|
<location filename="../lib/syncthingapplet.cpp" line="538"/>
|
||||||
<source>Unable to establish connection to Syncthing.</source>
|
<source>Unable to establish connection to Syncthing.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../lib/syncthingapplet.cpp" line="613"/>
|
<location filename="../lib/syncthingapplet.cpp" line="606"/>
|
||||||
<source>D-Bus error - unable to </source>
|
<source>D-Bus error - unable to </source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
|
|
@ -51,7 +51,8 @@ set(WIDGETS_UI_FILES
|
||||||
settings/autostartoptionpage.ui
|
settings/autostartoptionpage.ui
|
||||||
settings/launcheroptionpage.ui
|
settings/launcheroptionpage.ui
|
||||||
settings/systemdoptionpage.ui
|
settings/systemdoptionpage.ui
|
||||||
settings/webviewoptionpage.ui
|
settings/generalwebviewoptionpage.ui
|
||||||
|
settings/builtinwebviewoptionpage.ui
|
||||||
settings/mainconfigwizardpage.ui
|
settings/mainconfigwizardpage.ui
|
||||||
settings/autostartwizardpage.ui
|
settings/autostartwizardpage.ui
|
||||||
settings/applywizardpage.ui)
|
settings/applywizardpage.ui)
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<ui version="4.0">
|
<ui version="4.0">
|
||||||
<class>QtGui::WebViewOptionPage</class>
|
<class>QtGui::BuiltinWebViewOptionPage</class>
|
||||||
<widget class="QWidget" name="QtGui::WebViewOptionPage">
|
<widget class="QWidget" name="QtGui::BuiltinWebViewOptionPage">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
|
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
|
||||||
<horstretch>0</horstretch>
|
<horstretch>0</horstretch>
|
||||||
|
@ -9,7 +9,7 @@
|
||||||
</sizepolicy>
|
</sizepolicy>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
<string>General</string>
|
<string>Built-in web view</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowIcon">
|
<property name="windowIcon">
|
||||||
<iconset theme="internet-web-browser" resource="../resources/syncthingwidgetsicons.qrc">
|
<iconset theme="internet-web-browser" resource="../resources/syncthingwidgetsicons.qrc">
|
||||||
|
@ -17,27 +17,13 @@
|
||||||
</property>
|
</property>
|
||||||
<layout class="QFormLayout" name="formLayout">
|
<layout class="QFormLayout" name="formLayout">
|
||||||
<item row="1" column="0">
|
<item row="1" column="0">
|
||||||
<widget class="QLabel" name="usageLabel">
|
|
||||||
<property name="text">
|
|
||||||
<string>Usage</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="1">
|
|
||||||
<widget class="QCheckBox" name="disableCheckBox">
|
|
||||||
<property name="text">
|
|
||||||
<string>Disable web view (open regular web browser instead)</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="0">
|
|
||||||
<widget class="QLabel" name="zoomLabel">
|
<widget class="QLabel" name="zoomLabel">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Zoom factor</string>
|
<string>Zoom factor</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="1">
|
<item row="1" column="1">
|
||||||
<widget class="QDoubleSpinBox" name="zoomDoubleSpinBox">
|
<widget class="QDoubleSpinBox" name="zoomDoubleSpinBox">
|
||||||
<property name="buttonSymbols">
|
<property name="buttonSymbols">
|
||||||
<enum>QAbstractSpinBox::PlusMinus</enum>
|
<enum>QAbstractSpinBox::PlusMinus</enum>
|
||||||
|
@ -53,14 +39,14 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="0">
|
<item row="2" column="0">
|
||||||
<widget class="QLabel" name="keepRunningLabel">
|
<widget class="QLabel" name="keepRunningLabel">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Hiding</string>
|
<string>Hiding</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="1">
|
<item row="2" column="1">
|
||||||
<widget class="QCheckBox" name="keepRunningCheckBox">
|
<widget class="QCheckBox" name="keepRunningCheckBox">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Keep web view running when currently not shown</string>
|
<string>Keep web view running when currently not shown</string>
|
|
@ -0,0 +1,52 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>QtGui::GeneralWebViewOptionPage</class>
|
||||||
|
<widget class="QWidget" name="QtGui::GeneralWebViewOptionPage">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>General</string>
|
||||||
|
</property>
|
||||||
|
<property name="windowIcon">
|
||||||
|
<iconset theme="preferences-other"/>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="groupBox">
|
||||||
|
<property name="title">
|
||||||
|
<string>Open Syncthing's UI via</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||||
|
<item>
|
||||||
|
<widget class="QRadioButton" name="builtinRadioButton">
|
||||||
|
<property name="text">
|
||||||
|
<string>Syncthing Tray's built-in web view</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QRadioButton" name="browserRadioButton">
|
||||||
|
<property name="text">
|
||||||
|
<string>Tab in the default web browser</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QRadioButton" name="appModeRadioButton">
|
||||||
|
<property name="text">
|
||||||
|
<string>Chromium-based browser in "app mode"</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
|
@ -410,7 +410,11 @@ bool restore()
|
||||||
#if defined(SYNCTHINGWIDGETS_USE_WEBENGINE) || defined(SYNCTHINGWIDGETS_USE_WEBKIT)
|
#if defined(SYNCTHINGWIDGETS_USE_WEBENGINE) || defined(SYNCTHINGWIDGETS_USE_WEBKIT)
|
||||||
settings.beginGroup(QStringLiteral("webview"));
|
settings.beginGroup(QStringLiteral("webview"));
|
||||||
auto &webView = v.webView;
|
auto &webView = v.webView;
|
||||||
webView.disabled = settings.value(QStringLiteral("disabled"), webView.disabled).toBool();
|
if (auto mode = settings.value(QStringLiteral("mode")); mode.isValid()) {
|
||||||
|
webView.mode = static_cast<WebView::Mode>(mode.toInt());
|
||||||
|
} else if (auto disabled = settings.value(QStringLiteral("disabled")); disabled.isValid()) {
|
||||||
|
webView.mode = disabled.toBool() ? WebView::Mode::Browser : WebView::Mode::Builtin;
|
||||||
|
}
|
||||||
webView.zoomFactor = settings.value(QStringLiteral("zoomFactor"), webView.zoomFactor).toDouble();
|
webView.zoomFactor = settings.value(QStringLiteral("zoomFactor"), webView.zoomFactor).toDouble();
|
||||||
webView.geometry = settings.value(QStringLiteral("geometry")).toByteArray();
|
webView.geometry = settings.value(QStringLiteral("geometry")).toByteArray();
|
||||||
webView.keepRunning = settings.value(QStringLiteral("keepRunning"), webView.keepRunning).toBool();
|
webView.keepRunning = settings.value(QStringLiteral("keepRunning"), webView.keepRunning).toBool();
|
||||||
|
@ -529,7 +533,8 @@ bool save()
|
||||||
#if defined(SYNCTHINGWIDGETS_USE_WEBENGINE) || defined(SYNCTHINGWIDGETS_USE_WEBKIT)
|
#if defined(SYNCTHINGWIDGETS_USE_WEBENGINE) || defined(SYNCTHINGWIDGETS_USE_WEBKIT)
|
||||||
settings.beginGroup(QStringLiteral("webview"));
|
settings.beginGroup(QStringLiteral("webview"));
|
||||||
const auto &webView = v.webView;
|
const auto &webView = v.webView;
|
||||||
settings.setValue(QStringLiteral("disabled"), webView.disabled);
|
settings.setValue(QStringLiteral("mode"), static_cast<int>(webView.mode));
|
||||||
|
settings.setValue(QStringLiteral("disabled"), webView.mode == WebView::Mode::Browser);
|
||||||
settings.setValue(QStringLiteral("zoomFactor"), webView.zoomFactor);
|
settings.setValue(QStringLiteral("zoomFactor"), webView.zoomFactor);
|
||||||
settings.setValue(QStringLiteral("geometry"), webView.geometry);
|
settings.setValue(QStringLiteral("geometry"), webView.geometry);
|
||||||
settings.setValue(QStringLiteral("keepRunning"), webView.keepRunning);
|
settings.setValue(QStringLiteral("keepRunning"), webView.keepRunning);
|
||||||
|
|
|
@ -141,14 +141,16 @@ struct SYNCTHINGWIDGETS_EXPORT Systemd {
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(SYNCTHINGWIDGETS_USE_WEBENGINE) || defined(SYNCTHINGWIDGETS_USE_WEBKIT)
|
|
||||||
struct SYNCTHINGWIDGETS_EXPORT WebView {
|
struct SYNCTHINGWIDGETS_EXPORT WebView {
|
||||||
bool disabled = false;
|
enum class Mode { Builtin, Browser, Command };
|
||||||
|
Mode mode;
|
||||||
|
QString customCommand;
|
||||||
|
#if defined(SYNCTHINGWIDGETS_USE_WEBENGINE) || defined(SYNCTHINGWIDGETS_USE_WEBKIT)
|
||||||
double zoomFactor = 1.0;
|
double zoomFactor = 1.0;
|
||||||
QByteArray geometry;
|
QByteArray geometry;
|
||||||
bool keepRunning = true;
|
bool keepRunning = true;
|
||||||
};
|
|
||||||
#endif
|
#endif
|
||||||
|
};
|
||||||
|
|
||||||
struct SYNCTHINGWIDGETS_EXPORT Settings {
|
struct SYNCTHINGWIDGETS_EXPORT Settings {
|
||||||
bool firstLaunch = false;
|
bool firstLaunch = false;
|
||||||
|
@ -173,9 +175,7 @@ struct SYNCTHINGWIDGETS_EXPORT Settings {
|
||||||
#ifdef LIB_SYNCTHING_CONNECTOR_SUPPORT_SYSTEMD
|
#ifdef LIB_SYNCTHING_CONNECTOR_SUPPORT_SYSTEMD
|
||||||
Systemd systemd;
|
Systemd systemd;
|
||||||
#endif
|
#endif
|
||||||
#if defined(SYNCTHINGWIDGETS_USE_WEBENGINE) || defined(SYNCTHINGWIDGETS_USE_WEBKIT)
|
|
||||||
WebView webView;
|
WebView webView;
|
||||||
#endif
|
|
||||||
QtUtilities::QtSettings qt;
|
QtUtilities::QtSettings qt;
|
||||||
|
|
||||||
void apply(Data::SyncthingNotifier ¬ifier) const;
|
void apply(Data::SyncthingNotifier ¬ifier) const;
|
||||||
|
|
|
@ -26,7 +26,8 @@
|
||||||
#ifdef LIB_SYNCTHING_CONNECTOR_SUPPORT_SYSTEMD
|
#ifdef LIB_SYNCTHING_CONNECTOR_SUPPORT_SYSTEMD
|
||||||
#include "ui_systemdoptionpage.h"
|
#include "ui_systemdoptionpage.h"
|
||||||
#endif
|
#endif
|
||||||
#include "ui_webviewoptionpage.h"
|
#include "ui_builtinwebviewoptionpage.h"
|
||||||
|
#include "ui_generalwebviewoptionpage.h"
|
||||||
|
|
||||||
// use meta-data of syncthingtray application here
|
// use meta-data of syncthingtray application here
|
||||||
#include "resources/../../tray/resources/config.h"
|
#include "resources/../../tray/resources/config.h"
|
||||||
|
@ -1368,45 +1369,91 @@ void SystemdOptionPage::updateColors()
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// WebViewOptionPage
|
// GeneralWebViewOptionPage
|
||||||
WebViewOptionPage::WebViewOptionPage(QWidget *parentWidget)
|
GeneralWebViewOptionPage::GeneralWebViewOptionPage(QWidget *parentWidget)
|
||||||
: WebViewOptionPageBase(parentWidget)
|
: GeneralWebViewOptionPageBase(parentWidget)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
WebViewOptionPage::~WebViewOptionPage()
|
GeneralWebViewOptionPage::~GeneralWebViewOptionPage()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
QWidget *GeneralWebViewOptionPage::setupWidget()
|
||||||
|
{
|
||||||
|
auto *const widget = GeneralWebViewOptionPageBase::setupWidget();
|
||||||
|
#ifdef SYNCTHINGWIDGETS_NO_WEBVIEW
|
||||||
|
ui()->builtinRadioButton->setEnabled(false);
|
||||||
|
#endif
|
||||||
|
return widget;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool GeneralWebViewOptionPage::apply()
|
||||||
|
{
|
||||||
|
auto &webView = values().webView;
|
||||||
|
if (ui()->builtinRadioButton->isChecked()) {
|
||||||
|
webView.mode = ::Settings::WebView::Mode::Builtin;
|
||||||
|
} else if (ui()->browserRadioButton->isChecked()) {
|
||||||
|
webView.mode = ::Settings::WebView::Mode::Browser;
|
||||||
|
} else if (ui()->appModeRadioButton->isChecked()) {
|
||||||
|
webView.mode = ::Settings::WebView::Mode::Command;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void GeneralWebViewOptionPage::reset()
|
||||||
|
{
|
||||||
|
const auto &webView = values().webView;
|
||||||
|
switch (webView.mode) {
|
||||||
|
case ::Settings::WebView::Mode::Builtin:
|
||||||
|
ui()->builtinRadioButton->setChecked(true);
|
||||||
|
break;
|
||||||
|
case ::Settings::WebView::Mode::Browser:
|
||||||
|
ui()->browserRadioButton->setChecked(true);
|
||||||
|
break;
|
||||||
|
case ::Settings::WebView::Mode::Command:
|
||||||
|
ui()->appModeRadioButton->setChecked(true);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// BuiltinWebViewOptionPage
|
||||||
|
BuiltinWebViewOptionPage::BuiltinWebViewOptionPage(QWidget *parentWidget)
|
||||||
|
: BuiltinWebViewOptionPageBase(parentWidget)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
BuiltinWebViewOptionPage::~BuiltinWebViewOptionPage()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef SYNCTHINGWIDGETS_NO_WEBVIEW
|
#ifdef SYNCTHINGWIDGETS_NO_WEBVIEW
|
||||||
QWidget *WebViewOptionPage::setupWidget()
|
QWidget *BuiltinWebViewOptionPage::setupWidget()
|
||||||
{
|
{
|
||||||
auto *label = new QLabel;
|
auto *label = new QLabel;
|
||||||
label->setWindowTitle(QCoreApplication::translate("QtGui::WebViewOptionPage", "General"));
|
label->setWindowTitle(QCoreApplication::translate("QtGui::BuiltinWebViewOptionPage", "Built-in web view"));
|
||||||
label->setAlignment(Qt::AlignCenter);
|
label->setAlignment(Qt::AlignCenter);
|
||||||
label->setText(QCoreApplication::translate("QtGui::WebViewOptionPage",
|
label->setText(QCoreApplication::translate("QtGui::BuiltinWebViewOptionPage",
|
||||||
"Syncthing Tray has not been built with vieb view support utilizing either Qt WebKit "
|
"Syncthing Tray has not been built with vieb view support utilizing either Qt WebKit "
|
||||||
"or Qt WebEngine.\nThe Web UI will be opened in the default web browser instead."));
|
"or Qt WebEngine.\nThe Web UI will be opened in the default web browser instead."));
|
||||||
return label;
|
return label;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
bool WebViewOptionPage::apply()
|
bool BuiltinWebViewOptionPage::apply()
|
||||||
{
|
{
|
||||||
#ifndef SYNCTHINGWIDGETS_NO_WEBVIEW
|
#ifndef SYNCTHINGWIDGETS_NO_WEBVIEW
|
||||||
auto &webView = values().webView;
|
auto &webView = values().webView;
|
||||||
webView.disabled = ui()->disableCheckBox->isChecked();
|
|
||||||
webView.zoomFactor = ui()->zoomDoubleSpinBox->value();
|
webView.zoomFactor = ui()->zoomDoubleSpinBox->value();
|
||||||
webView.keepRunning = ui()->keepRunningCheckBox->isChecked();
|
webView.keepRunning = ui()->keepRunningCheckBox->isChecked();
|
||||||
#endif
|
#endif
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void WebViewOptionPage::reset()
|
void BuiltinWebViewOptionPage::reset()
|
||||||
{
|
{
|
||||||
#ifndef SYNCTHINGWIDGETS_NO_WEBVIEW
|
#ifndef SYNCTHINGWIDGETS_NO_WEBVIEW
|
||||||
const auto &webView = values().webView;
|
const auto &webView = values().webView;
|
||||||
ui()->disableCheckBox->setChecked(webView.disabled);
|
|
||||||
ui()->zoomDoubleSpinBox->setValue(webView.zoomFactor);
|
ui()->zoomDoubleSpinBox->setValue(webView.zoomFactor);
|
||||||
ui()->keepRunningCheckBox->setChecked(webView.keepRunning);
|
ui()->keepRunningCheckBox->setChecked(webView.keepRunning);
|
||||||
#endif
|
#endif
|
||||||
|
@ -1443,7 +1490,7 @@ SettingsDialog::SettingsDialog(Data::SyncthingConnection *connection, QWidget *p
|
||||||
|
|
||||||
category = new OptionCategory(this);
|
category = new OptionCategory(this);
|
||||||
category->setDisplayName(tr("Web view"));
|
category->setDisplayName(tr("Web view"));
|
||||||
category->assignPages({ new WebViewOptionPage });
|
category->assignPages({ new GeneralWebViewOptionPage, new BuiltinWebViewOptionPage });
|
||||||
category->setIcon(
|
category->setIcon(
|
||||||
QIcon::fromTheme(QStringLiteral("internet-web-browser"), QIcon(QStringLiteral(":/icons/hicolor/scalable/apps/internet-web-browser.svg"))));
|
QIcon::fromTheme(QStringLiteral("internet-web-browser"), QIcon(QStringLiteral(":/icons/hicolor/scalable/apps/internet-web-browser.svg"))));
|
||||||
categories << category;
|
categories << category;
|
||||||
|
@ -1515,6 +1562,7 @@ INSTANTIATE_UI_FILE_BASED_OPTION_PAGE_NS(QtGui, LauncherOptionPage)
|
||||||
#ifdef LIB_SYNCTHING_CONNECTOR_SUPPORT_SYSTEMD
|
#ifdef LIB_SYNCTHING_CONNECTOR_SUPPORT_SYSTEMD
|
||||||
INSTANTIATE_UI_FILE_BASED_OPTION_PAGE_NS(QtGui, SystemdOptionPage)
|
INSTANTIATE_UI_FILE_BASED_OPTION_PAGE_NS(QtGui, SystemdOptionPage)
|
||||||
#endif
|
#endif
|
||||||
|
INSTANTIATE_UI_FILE_BASED_OPTION_PAGE_NS(QtGui, GeneralWebViewOptionPage)
|
||||||
#ifndef SYNCTHINGWIDGETS_NO_WEBVIEW
|
#ifndef SYNCTHINGWIDGETS_NO_WEBVIEW
|
||||||
INSTANTIATE_UI_FILE_BASED_OPTION_PAGE_NS(QtGui, WebViewOptionPage)
|
INSTANTIATE_UI_FILE_BASED_OPTION_PAGE_NS(QtGui, BuiltinWebViewOptionPage)
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -162,10 +162,11 @@ QMetaObject::Connection m_enabledChangedConn;
|
||||||
END_DECLARE_OPTION_PAGE
|
END_DECLARE_OPTION_PAGE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
DECLARE_UI_FILE_BASED_OPTION_PAGE_CUSTOM_SETUP(GeneralWebViewOptionPage)
|
||||||
#ifndef SYNCTHINGWIDGETS_NO_WEBVIEW
|
#ifndef SYNCTHINGWIDGETS_NO_WEBVIEW
|
||||||
DECLARE_UI_FILE_BASED_OPTION_PAGE(WebViewOptionPage)
|
DECLARE_UI_FILE_BASED_OPTION_PAGE(BuiltinWebViewOptionPage)
|
||||||
#else
|
#else
|
||||||
DECLARE_OPTION_PAGE(WebViewOptionPage)
|
DECLARE_OPTION_PAGE(BuiltinWebViewOptionPage)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
class SYNCTHINGWIDGETS_EXPORT SettingsDialog : public QtUtilities::SettingsDialog {
|
class SYNCTHINGWIDGETS_EXPORT SettingsDialog : public QtUtilities::SettingsDialog {
|
||||||
|
@ -198,8 +199,9 @@ DECLARE_EXTERN_UI_FILE_BASED_OPTION_PAGE_NS(QtGui, LauncherOptionPage)
|
||||||
#ifdef LIB_SYNCTHING_CONNECTOR_SUPPORT_SYSTEMD
|
#ifdef LIB_SYNCTHING_CONNECTOR_SUPPORT_SYSTEMD
|
||||||
DECLARE_EXTERN_UI_FILE_BASED_OPTION_PAGE_NS(QtGui, SystemdOptionPage)
|
DECLARE_EXTERN_UI_FILE_BASED_OPTION_PAGE_NS(QtGui, SystemdOptionPage)
|
||||||
#endif
|
#endif
|
||||||
|
DECLARE_EXTERN_UI_FILE_BASED_OPTION_PAGE_NS(QtGui, GeneralWebViewOptionPage)
|
||||||
#ifndef SYNCTHINGWIDGETS_NO_WEBVIEW
|
#ifndef SYNCTHINGWIDGETS_NO_WEBVIEW
|
||||||
DECLARE_EXTERN_UI_FILE_BASED_OPTION_PAGE_NS(QtGui, WebViewOptionPage)
|
DECLARE_EXTERN_UI_FILE_BASED_OPTION_PAGE_NS(QtGui, BuiltinWebViewOptionPage)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif // SETTINGS_DIALOG_H
|
#endif // SETTINGS_DIALOG_H
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,10 +1,20 @@
|
||||||
#ifndef SYNCTHINGWIDGETS_NO_WEBVIEW
|
|
||||||
#include "./webviewdialog.h"
|
#include "./webviewdialog.h"
|
||||||
|
#include "../settings/settings.h"
|
||||||
|
|
||||||
|
#include "resources/config.h"
|
||||||
|
|
||||||
|
#include <syncthingconnector/syncthingprocess.h>
|
||||||
|
|
||||||
|
#include <QCoreApplication>
|
||||||
|
#include <QDesktopServices>
|
||||||
|
#include <QMessageBox>
|
||||||
|
#include <QUrl>
|
||||||
|
|
||||||
|
#ifndef SYNCTHINGWIDGETS_NO_WEBVIEW
|
||||||
#include "./webpage.h"
|
#include "./webpage.h"
|
||||||
#include "./webviewinterceptor.h"
|
#include "./webviewinterceptor.h"
|
||||||
|
|
||||||
#include "../settings/settings.h"
|
#include <qtutilities/misc/compat.h>
|
||||||
|
|
||||||
#include <qtutilities/misc/dialogutils.h>
|
#include <qtutilities/misc/dialogutils.h>
|
||||||
|
|
||||||
#include <QCloseEvent>
|
#include <QCloseEvent>
|
||||||
|
@ -149,3 +159,61 @@ bool WebViewDialog::eventFilter(QObject *watched, QEvent *event)
|
||||||
} // namespace QtGui
|
} // namespace QtGui
|
||||||
|
|
||||||
#endif // SYNCTHINGWIDGETS_NO_WEBVIEW
|
#endif // SYNCTHINGWIDGETS_NO_WEBVIEW
|
||||||
|
|
||||||
|
namespace QtGui {
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Opens the specified \a url as "app" in a Chromium-based web browser.
|
||||||
|
* \todo Check for other Chromium-based browsers and use the Windows registry to find apps under Windows.
|
||||||
|
*/
|
||||||
|
static void openBrowserInAppMode(const QString &url)
|
||||||
|
{
|
||||||
|
static const auto app = qEnvironmentVariable(PROJECT_VARNAME_UPPER "_CHROMIUM_BASED_BROWSER", QStringLiteral("chromium"));
|
||||||
|
auto *const process = new Data::SyncthingProcess();
|
||||||
|
QObject::connect(process, &Data::SyncthingProcess::finished, process, &QObject::deleteLater);
|
||||||
|
QObject::connect(process, &Data::SyncthingProcess::errorOccurred, process, [process] {
|
||||||
|
auto messageBox = QMessageBox();
|
||||||
|
messageBox.setWindowTitle(QStringLiteral("Syncthing"));
|
||||||
|
messageBox.setIcon(QMessageBox::Critical);
|
||||||
|
messageBox.setText(QCoreApplication::translate("QtGui", "Unable to open Syncthing UI via \"%1\": %2").arg(app, process->errorString()));
|
||||||
|
messageBox.exec();
|
||||||
|
});
|
||||||
|
process->setProcessChannelMode(QProcess::ForwardedChannels);
|
||||||
|
process->startSyncthing(app, QStringList{ QStringLiteral("--app=") + url });
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Opens the Syncthing UI using the configured web view mode.
|
||||||
|
* \param url The URL of the Syncthing UI.
|
||||||
|
* \param settings The connection settings to be used (instead of the \a url) in case a WebViewDialog is used. Allowed to be nullptr.
|
||||||
|
* \param dlg An existing WebViewDialog that may be reused in case a WebViewDialog is used.
|
||||||
|
* \param parent The parent to use when creating a new WebViewDialog. Allowed to be nullptr (as usual with parents).
|
||||||
|
* \returns Returns the used WebViewDialog or nullptr if another method was used.
|
||||||
|
*/
|
||||||
|
WebViewDialog *showWebUI(const QString &url, const Data::SyncthingConnectionSettings *settings, WebViewDialog *dlg, QWidget *parent)
|
||||||
|
{
|
||||||
|
switch (Settings::values().webView.mode) {
|
||||||
|
#ifndef SYNCTHINGWIDGETS_NO_WEBVIEW
|
||||||
|
case Settings::WebView::Mode::Builtin:
|
||||||
|
if (!dlg) {
|
||||||
|
dlg = new WebViewDialog(parent);
|
||||||
|
}
|
||||||
|
if (settings) {
|
||||||
|
dlg->applySettings(*settings, true);
|
||||||
|
}
|
||||||
|
return dlg;
|
||||||
|
#else
|
||||||
|
Q_UNUSED(settings)
|
||||||
|
Q_UNUSED(dlg)
|
||||||
|
Q_UNUSED(parent)
|
||||||
|
#endif
|
||||||
|
case Settings::WebView::Mode::Command:
|
||||||
|
openBrowserInAppMode(url);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
QDesktopServices::openUrl(url);
|
||||||
|
}
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace QtGui
|
||||||
|
|
|
@ -1,20 +1,21 @@
|
||||||
#ifndef WEBVIEW_DIALOG_H
|
#ifndef WEBVIEW_DIALOG_H
|
||||||
#define WEBVIEW_DIALOG_H
|
#define WEBVIEW_DIALOG_H
|
||||||
|
|
||||||
|
#include "../global.h"
|
||||||
|
|
||||||
|
#include <syncthingconnector/syncthingconnectionsettings.h>
|
||||||
|
|
||||||
|
QT_FORWARD_DECLARE_CLASS(QString)
|
||||||
|
QT_FORWARD_DECLARE_CLASS(QWidget)
|
||||||
|
|
||||||
#ifndef SYNCTHINGWIDGETS_NO_WEBVIEW
|
#ifndef SYNCTHINGWIDGETS_NO_WEBVIEW
|
||||||
|
|
||||||
#include "./webviewdefs.h"
|
#include "./webviewdefs.h"
|
||||||
|
|
||||||
#include "../settings/settings.h"
|
|
||||||
|
|
||||||
#include <QMainWindow>
|
#include <QMainWindow>
|
||||||
|
|
||||||
QT_FORWARD_DECLARE_CLASS(WEB_VIEW_PROVIDER)
|
QT_FORWARD_DECLARE_CLASS(WEB_VIEW_PROVIDER)
|
||||||
QT_FORWARD_DECLARE_CLASS(QWebEngineProfile)
|
QT_FORWARD_DECLARE_CLASS(QWebEngineProfile)
|
||||||
|
|
||||||
namespace Settings {
|
|
||||||
struct ConnectionSettings;
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace QtGui {
|
namespace QtGui {
|
||||||
|
|
||||||
class SYNCTHINGWIDGETS_EXPORT WebViewDialog : public QMainWindow {
|
class SYNCTHINGWIDGETS_EXPORT WebViewDialog : public QMainWindow {
|
||||||
|
@ -53,5 +54,16 @@ inline const Data::SyncthingConnectionSettings &WebViewDialog::connectionSetting
|
||||||
|
|
||||||
} // namespace QtGui
|
} // namespace QtGui
|
||||||
|
|
||||||
|
#else // SYNCTHINGWIDGETS_NO_WEBVIEW
|
||||||
|
namespace QtGui {
|
||||||
|
using WebViewDialog = void;
|
||||||
|
}
|
||||||
|
|
||||||
#endif // SYNCTHINGWIDGETS_NO_WEBVIEW
|
#endif // SYNCTHINGWIDGETS_NO_WEBVIEW
|
||||||
|
|
||||||
|
namespace QtGui {
|
||||||
|
SYNCTHINGWIDGETS_EXPORT WebViewDialog *showWebUI(
|
||||||
|
const QString &url, const Data::SyncthingConnectionSettings *settings, WebViewDialog *dlg = nullptr, QWidget *parent = nullptr);
|
||||||
|
}
|
||||||
|
|
||||||
#endif // WEBVIEW_DIALOG_H
|
#endif // WEBVIEW_DIALOG_H
|
||||||
|
|
|
@ -131,7 +131,7 @@ static void trigger(bool tray, bool webUi, bool wizard)
|
||||||
}
|
}
|
||||||
auto *const trayWidget = TrayWidget::instances().front();
|
auto *const trayWidget = TrayWidget::instances().front();
|
||||||
if (webUi) {
|
if (webUi) {
|
||||||
trayWidget->showWebUi();
|
trayWidget->showWebUI();
|
||||||
}
|
}
|
||||||
if (tray) {
|
if (tray) {
|
||||||
trayWidget->showUsingPositioningSettings();
|
trayWidget->showUsingPositioningSettings();
|
||||||
|
|
|
@ -52,7 +52,7 @@ TrayIcon::TrayIcon(const QString &connectionConfig, QObject *parent)
|
||||||
connect(m_contextMenu.addAction(
|
connect(m_contextMenu.addAction(
|
||||||
QIcon::fromTheme(QStringLiteral("syncthing"), QIcon(QStringLiteral(":/icons/hicolor/scalable/status/syncthing-default.svg"))),
|
QIcon::fromTheme(QStringLiteral("syncthing"), QIcon(QStringLiteral(":/icons/hicolor/scalable/status/syncthing-default.svg"))),
|
||||||
tr("Open Syncthing")),
|
tr("Open Syncthing")),
|
||||||
&QAction::triggered, &widget, &TrayWidget::showWebUi);
|
&QAction::triggered, &widget, &TrayWidget::showWebUI);
|
||||||
connect(m_contextMenu.addAction(
|
connect(m_contextMenu.addAction(
|
||||||
QIcon::fromTheme(QStringLiteral("preferences-other"), QIcon(QStringLiteral(":/icons/hicolor/scalable/apps/preferences-other.svg"))),
|
QIcon::fromTheme(QStringLiteral("preferences-other"), QIcon(QStringLiteral(":/icons/hicolor/scalable/apps/preferences-other.svg"))),
|
||||||
tr("Settings")),
|
tr("Settings")),
|
||||||
|
@ -102,7 +102,7 @@ TrayIcon::TrayIcon(const QString &connectionConfig, QObject *parent)
|
||||||
connect(&m_dbusNotifier, &DBusStatusNotifier::dismissNotificationsRequested, &widget, &TrayWidget::dismissNotifications);
|
connect(&m_dbusNotifier, &DBusStatusNotifier::dismissNotificationsRequested, &widget, &TrayWidget::dismissNotifications);
|
||||||
connect(&m_dbusNotifier, &DBusStatusNotifier::showNotificationsRequested, &widget, &TrayWidget::showNotifications);
|
connect(&m_dbusNotifier, &DBusStatusNotifier::showNotificationsRequested, &widget, &TrayWidget::showNotifications);
|
||||||
connect(&m_dbusNotifier, &DBusStatusNotifier::errorDetailsRequested, this, &TrayIcon::showInternalErrorsDialog);
|
connect(&m_dbusNotifier, &DBusStatusNotifier::errorDetailsRequested, this, &TrayIcon::showInternalErrorsDialog);
|
||||||
connect(&m_dbusNotifier, &DBusStatusNotifier::webUiRequested, &widget, &TrayWidget::showWebUi);
|
connect(&m_dbusNotifier, &DBusStatusNotifier::webUiRequested, &widget, &TrayWidget::showWebUI);
|
||||||
connect(¬ifier, &SyncthingNotifier::connected, &m_dbusNotifier, &DBusStatusNotifier::hideDisconnect);
|
connect(¬ifier, &SyncthingNotifier::connected, &m_dbusNotifier, &DBusStatusNotifier::hideDisconnect);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -136,7 +136,7 @@ void TrayIcon::handleActivated(QSystemTrayIcon::ActivationReason reason)
|
||||||
// can't catch that event on Plasma 5 anyways
|
// can't catch that event on Plasma 5 anyways
|
||||||
break;
|
break;
|
||||||
case QSystemTrayIcon::MiddleClick:
|
case QSystemTrayIcon::MiddleClick:
|
||||||
trayMenu().widget().showWebUi();
|
trayMenu().widget().showWebUI();
|
||||||
break;
|
break;
|
||||||
case QSystemTrayIcon::Trigger: {
|
case QSystemTrayIcon::Trigger: {
|
||||||
trayMenu().showUsingPositioningSettings();
|
trayMenu().showUsingPositioningSettings();
|
||||||
|
@ -158,7 +158,7 @@ void TrayIcon::handleMessageClicked()
|
||||||
showInternalErrorsDialog();
|
showInternalErrorsDialog();
|
||||||
break;
|
break;
|
||||||
case TrayIconMessageClickedAction::ShowWebUi:
|
case TrayIconMessageClickedAction::ShowWebUi:
|
||||||
trayMenu().widget().showWebUi();
|
trayMenu().widget().showWebUI();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -72,9 +72,7 @@ TrayWidget::TrayWidget(TrayMenu *parent)
|
||||||
: QWidget(parent)
|
: QWidget(parent)
|
||||||
, m_menu(parent)
|
, m_menu(parent)
|
||||||
, m_ui(new Ui::TrayWidget)
|
, m_ui(new Ui::TrayWidget)
|
||||||
#ifndef SYNCTHINGWIDGETS_NO_WEBVIEW
|
|
||||||
, m_webViewDlg(nullptr)
|
, m_webViewDlg(nullptr)
|
||||||
#endif
|
|
||||||
, m_internalErrorsButton(nullptr)
|
, m_internalErrorsButton(nullptr)
|
||||||
, m_notifier(m_connection)
|
, m_notifier(m_connection)
|
||||||
, m_dirModel(m_connection)
|
, m_dirModel(m_connection)
|
||||||
|
@ -194,7 +192,7 @@ TrayWidget::TrayWidget(TrayMenu *parent)
|
||||||
// connect signals and slots
|
// connect signals and slots
|
||||||
connect(m_ui->statusPushButton, &QPushButton::clicked, this, &TrayWidget::changeStatus);
|
connect(m_ui->statusPushButton, &QPushButton::clicked, this, &TrayWidget::changeStatus);
|
||||||
connect(m_ui->aboutPushButton, &QPushButton::clicked, this, &TrayWidget::showAboutDialog);
|
connect(m_ui->aboutPushButton, &QPushButton::clicked, this, &TrayWidget::showAboutDialog);
|
||||||
connect(m_ui->webUiPushButton, &QPushButton::clicked, this, &TrayWidget::showWebUi);
|
connect(m_ui->webUiPushButton, &QPushButton::clicked, this, &TrayWidget::showWebUI);
|
||||||
connect(m_ui->settingsPushButton, &QPushButton::clicked, this, &TrayWidget::showSettingsDialog);
|
connect(m_ui->settingsPushButton, &QPushButton::clicked, this, &TrayWidget::showSettingsDialog);
|
||||||
connect(&m_connection, &SyncthingConnection::statusChanged, this, &TrayWidget::handleStatusChanged);
|
connect(&m_connection, &SyncthingConnection::statusChanged, this, &TrayWidget::handleStatusChanged);
|
||||||
connect(&m_connection, &SyncthingConnection::trafficChanged, this, &TrayWidget::updateTraffic);
|
connect(&m_connection, &SyncthingConnection::trafficChanged, this, &TrayWidget::updateTraffic);
|
||||||
|
@ -278,7 +276,7 @@ void TrayWidget::showWizard()
|
||||||
connect(s_wizard, &Wizard::destroyed, this, [] { s_wizard = nullptr; });
|
connect(s_wizard, &Wizard::destroyed, this, [] { s_wizard = nullptr; });
|
||||||
connect(s_wizard, &Wizard::settingsDialogRequested, this, &TrayWidget::showSettingsDialog);
|
connect(s_wizard, &Wizard::settingsDialogRequested, this, &TrayWidget::showSettingsDialog);
|
||||||
connect(s_wizard, &Wizard::openLauncherSettingsRequested, this, &TrayWidget::showLauncherSettings);
|
connect(s_wizard, &Wizard::openLauncherSettingsRequested, this, &TrayWidget::showLauncherSettings);
|
||||||
connect(s_wizard, &Wizard::openSyncthingRequested, this, &TrayWidget::showWebUi);
|
connect(s_wizard, &Wizard::openSyncthingRequested, this, &TrayWidget::showWebUI);
|
||||||
connect(s_wizard, &Wizard::settingsChanged, this, &TrayWidget::applySettingsChangesFromWizard);
|
connect(s_wizard, &Wizard::settingsChanged, this, &TrayWidget::applySettingsChangesFromWizard);
|
||||||
}
|
}
|
||||||
showDialog(s_wizard, centerWidgetAvoidingOverflow(s_wizard));
|
showDialog(s_wizard, centerWidgetAvoidingOverflow(s_wizard));
|
||||||
|
@ -343,23 +341,20 @@ void TrayWidget::showAboutDialog()
|
||||||
showDialog(s_aboutDlg);
|
showDialog(s_aboutDlg);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrayWidget::showWebUi()
|
void TrayWidget::showWebUI()
|
||||||
{
|
{
|
||||||
|
auto *const dlg = QtGui::showWebUI(m_connection.syncthingUrl(), m_selectedConnection, m_webViewDlg, this);
|
||||||
#ifndef SYNCTHINGWIDGETS_NO_WEBVIEW
|
#ifndef SYNCTHINGWIDGETS_NO_WEBVIEW
|
||||||
if (Settings::values().webView.disabled) {
|
if (!dlg) {
|
||||||
#endif
|
return;
|
||||||
QDesktopServices::openUrl(m_connection.syncthingUrl());
|
|
||||||
#ifndef SYNCTHINGWIDGETS_NO_WEBVIEW
|
|
||||||
} else {
|
|
||||||
if (!m_webViewDlg) {
|
|
||||||
m_webViewDlg = new WebViewDialog(this);
|
|
||||||
if (m_selectedConnection) {
|
|
||||||
m_webViewDlg->applySettings(*m_selectedConnection, true);
|
|
||||||
}
|
|
||||||
connect(m_webViewDlg, &WebViewDialog::destroyed, this, &TrayWidget::handleWebViewDeleted);
|
|
||||||
}
|
|
||||||
showDialog(m_webViewDlg);
|
|
||||||
}
|
}
|
||||||
|
if (!m_webViewDlg) {
|
||||||
|
m_webViewDlg = dlg;
|
||||||
|
connect(m_webViewDlg, &WebViewDialog::destroyed, this, &TrayWidget::handleWebViewDeleted);
|
||||||
|
}
|
||||||
|
showDialog(m_webViewDlg);
|
||||||
|
#else
|
||||||
|
Q_UNUSED(dlg)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -890,12 +885,10 @@ Settings::Systemd::ServiceStatus TrayWidget::applySystemdSettings(bool reconnect
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef SYNCTHINGWIDGETS_NO_WEBVIEW
|
|
||||||
void TrayWidget::handleWebViewDeleted()
|
void TrayWidget::handleWebViewDeleted()
|
||||||
{
|
{
|
||||||
m_webViewDlg = nullptr;
|
m_webViewDlg = nullptr;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
void TrayWidget::handleNewNotification(DateTime when, const QString &msg)
|
void TrayWidget::handleNewNotification(DateTime when, const QString &msg)
|
||||||
{
|
{
|
||||||
|
|
|
@ -34,7 +34,11 @@ class AboutDialog;
|
||||||
|
|
||||||
namespace QtGui {
|
namespace QtGui {
|
||||||
|
|
||||||
|
#ifdef SYNCTHINGWIDGETS_NO_WEBVIEW
|
||||||
|
using WebViewDialog = void;
|
||||||
|
#else
|
||||||
class WebViewDialog;
|
class WebViewDialog;
|
||||||
|
#endif
|
||||||
class SettingsDialog;
|
class SettingsDialog;
|
||||||
class Wizard;
|
class Wizard;
|
||||||
class TrayMenu;
|
class TrayMenu;
|
||||||
|
@ -64,7 +68,7 @@ public Q_SLOTS:
|
||||||
void showLauncherSettings();
|
void showLauncherSettings();
|
||||||
void showWizard();
|
void showWizard();
|
||||||
void showAboutDialog();
|
void showAboutDialog();
|
||||||
void showWebUi();
|
void showWebUI();
|
||||||
void showOwnDeviceId();
|
void showOwnDeviceId();
|
||||||
void showLog();
|
void showLog();
|
||||||
void showNotifications();
|
void showNotifications();
|
||||||
|
@ -104,9 +108,7 @@ private Q_SLOTS:
|
||||||
Settings::Systemd::ServiceStatus handleSystemdStatusChanged();
|
Settings::Systemd::ServiceStatus handleSystemdStatusChanged();
|
||||||
Settings::Systemd::ServiceStatus applySystemdSettings(bool reconnectRequired = false);
|
Settings::Systemd::ServiceStatus applySystemdSettings(bool reconnectRequired = false);
|
||||||
#endif
|
#endif
|
||||||
#ifndef SYNCTHINGWIDGETS_NO_WEBVIEW
|
|
||||||
void handleWebViewDeleted();
|
void handleWebViewDeleted();
|
||||||
#endif
|
|
||||||
void handleNewNotification(CppUtilities::DateTime when, const QString &msg);
|
void handleNewNotification(CppUtilities::DateTime when, const QString &msg);
|
||||||
void handleConnectionSelected(QAction *connectionAction);
|
void handleConnectionSelected(QAction *connectionAction);
|
||||||
void concludeWizard(const QString &errorMessage = QString());
|
void concludeWizard(const QString &errorMessage = QString());
|
||||||
|
@ -119,9 +121,7 @@ private:
|
||||||
static SettingsDialog *s_settingsDlg;
|
static SettingsDialog *s_settingsDlg;
|
||||||
static Wizard *s_wizard;
|
static Wizard *s_wizard;
|
||||||
static QtUtilities::AboutDialog *s_aboutDlg;
|
static QtUtilities::AboutDialog *s_aboutDlg;
|
||||||
#ifndef SYNCTHINGWIDGETS_NO_WEBVIEW
|
|
||||||
WebViewDialog *m_webViewDlg;
|
WebViewDialog *m_webViewDlg;
|
||||||
#endif
|
|
||||||
QFrame *m_cornerFrame;
|
QFrame *m_cornerFrame;
|
||||||
QPushButton *m_internalErrorsButton;
|
QPushButton *m_internalErrorsButton;
|
||||||
Data::SyncthingConnection m_connection;
|
Data::SyncthingConnection m_connection;
|
||||||
|
|
|
@ -162,20 +162,20 @@
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.ui" line="99"/>
|
<location filename="../gui/traywidget.ui" line="99"/>
|
||||||
<location filename="../gui/traywidget.cpp" line="339"/>
|
<location filename="../gui/traywidget.cpp" line="337"/>
|
||||||
<source>About</source>
|
<source>About</source>
|
||||||
<translation>O Syncthing Tray</translation>
|
<translation>O Syncthing Tray</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.ui" line="58"/>
|
<location filename="../gui/traywidget.ui" line="58"/>
|
||||||
<location filename="../gui/traywidget.cpp" line="464"/>
|
<location filename="../gui/traywidget.cpp" line="459"/>
|
||||||
<source>Connect</source>
|
<source>Connect</source>
|
||||||
<translation>Připojit</translation>
|
<translation>Připojit</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.ui" line="72"/>
|
<location filename="../gui/traywidget.ui" line="72"/>
|
||||||
<location filename="../gui/traywidget.cpp" line="840"/>
|
<location filename="../gui/traywidget.cpp" line="836"/>
|
||||||
<location filename="../gui/traywidget.cpp" line="882"/>
|
<location filename="../gui/traywidget.cpp" line="878"/>
|
||||||
<source>Start</source>
|
<source>Start</source>
|
||||||
<translation>Spustit</translation>
|
<translation>Spustit</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -246,8 +246,8 @@ For <i>all</i> notifications, checkout the log</source>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.ui" line="357"/>
|
<location filename="../gui/traywidget.ui" line="357"/>
|
||||||
<location filename="../gui/traywidget.cpp" line="156"/>
|
<location filename="../gui/traywidget.cpp" line="154"/>
|
||||||
<location filename="../gui/traywidget.cpp" line="382"/>
|
<location filename="../gui/traywidget.cpp" line="377"/>
|
||||||
<source>New notifications</source>
|
<source>New notifications</source>
|
||||||
<translation>Nová oznámení</translation>
|
<translation>Nová oznámení</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -282,118 +282,118 @@ For <i>all</i> notifications, checkout the log</source>
|
||||||
<translation>Zahodit</translation>
|
<translation>Zahodit</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="128"/>
|
<location filename="../gui/traywidget.cpp" line="126"/>
|
||||||
<source>View own device ID</source>
|
<source>View own device ID</source>
|
||||||
<translation>Zobrazit identifikátor místního zařízení</translation>
|
<translation>Zobrazit identifikátor místního zařízení</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="133"/>
|
<location filename="../gui/traywidget.cpp" line="131"/>
|
||||||
<source>Restart Syncthing</source>
|
<source>Restart Syncthing</source>
|
||||||
<translation>Restartovat Syncthing</translation>
|
<translation>Restartovat Syncthing</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="138"/>
|
<location filename="../gui/traywidget.cpp" line="136"/>
|
||||||
<source>Show Syncthing log</source>
|
<source>Show Syncthing log</source>
|
||||||
<translation>Zobrazit záznam událostí v Syncthing</translation>
|
<translation>Zobrazit záznam událostí v Syncthing</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="143"/>
|
<location filename="../gui/traywidget.cpp" line="141"/>
|
||||||
<source>Rescan all directories</source>
|
<source>Rescan all directories</source>
|
||||||
<translation>Znovu proskenovat všechny složky</translation>
|
<translation>Znovu proskenovat všechny složky</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="150"/>
|
<location filename="../gui/traywidget.cpp" line="148"/>
|
||||||
<source>Connection</source>
|
<source>Connection</source>
|
||||||
<translation>Spojení</translation>
|
<translation>Spojení</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="172"/>
|
<location filename="../gui/traywidget.cpp" line="170"/>
|
||||||
<source>Show internal errors</source>
|
<source>Show internal errors</source>
|
||||||
<translation>Zobrazit vnitřní chyby</translation>
|
<translation>Zobrazit vnitřní chyby</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="187"/>
|
<location filename="../gui/traywidget.cpp" line="185"/>
|
||||||
<source>Quit Syncthing Tray</source>
|
<source>Quit Syncthing Tray</source>
|
||||||
<translation>Ukončit Syncthing Tray</translation>
|
<translation>Ukončit Syncthing Tray</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="439"/>
|
<location filename="../gui/traywidget.cpp" line="434"/>
|
||||||
<source>Do you really want to restart Syncthing?</source>
|
<source>Do you really want to restart Syncthing?</source>
|
||||||
<translation>Opravdu chcete Syncthing restartovat?</translation>
|
<translation>Opravdu chcete Syncthing restartovat?</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="465"/>
|
<location filename="../gui/traywidget.cpp" line="460"/>
|
||||||
<source>Not connected to Syncthing, click to connect</source>
|
<source>Not connected to Syncthing, click to connect</source>
|
||||||
<translation>Nepřipojeno k Syncthing, klikněte pro připojení se</translation>
|
<translation>Nepřipojeno k Syncthing, klikněte pro připojení se</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="470"/>
|
<location filename="../gui/traywidget.cpp" line="465"/>
|
||||||
<source>Unable to establish connection to Syncthing.</source>
|
<source>Unable to establish connection to Syncthing.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="480"/>
|
<location filename="../gui/traywidget.cpp" line="475"/>
|
||||||
<source>Pause</source>
|
<source>Pause</source>
|
||||||
<translation>Pozastavit</translation>
|
<translation>Pozastavit</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="481"/>
|
<location filename="../gui/traywidget.cpp" line="476"/>
|
||||||
<source>Syncthing is running, click to pause all devices</source>
|
<source>Syncthing is running, click to pause all devices</source>
|
||||||
<translation>Syncthing je spuštěné, kliknutím pozastavíte veškerá zařízení</translation>
|
<translation>Syncthing je spuštěné, kliknutím pozastavíte veškerá zařízení</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="486"/>
|
<location filename="../gui/traywidget.cpp" line="481"/>
|
||||||
<source>Continue</source>
|
<source>Continue</source>
|
||||||
<translation>Pokračovat</translation>
|
<translation>Pokračovat</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="487"/>
|
<location filename="../gui/traywidget.cpp" line="482"/>
|
||||||
<source>At least one device is paused, click to resume</source>
|
<source>At least one device is paused, click to resume</source>
|
||||||
<translation>Přinejmenším jedno zařízení je pozastaveno, kliknutím pokračujte</translation>
|
<translation>Přinejmenším jedno zařízení je pozastaveno, kliknutím pokračujte</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="610"/>
|
<location filename="../gui/traywidget.cpp" line="605"/>
|
||||||
<source>The specified connection configuration <em>%1</em> is not defined and hence ignored.</source>
|
<source>The specified connection configuration <em>%1</em> is not defined and hence ignored.</source>
|
||||||
<translation>Zadané nastavení spojení <em>%1</em> není definováno a proto je ignorováno.</translation>
|
<translation>Zadané nastavení spojení <em>%1</em> není definováno a proto je ignorováno.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="645"/>
|
<location filename="../gui/traywidget.cpp" line="641"/>
|
||||||
<source>The directory <i>%1</i> does not exist on the local machine.</source>
|
<source>The directory <i>%1</i> does not exist on the local machine.</source>
|
||||||
<translation>Adresář <i>%1</i> neexistuje místně.</translation>
|
<translation>Adresář <i>%1</i> neexistuje místně.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="656"/>
|
<location filename="../gui/traywidget.cpp" line="652"/>
|
||||||
<source>The containing directory <i>%1</i> does not exist on the local machine.</source>
|
<source>The containing directory <i>%1</i> does not exist on the local machine.</source>
|
||||||
<translation>Obsažený adresář <i>%1</i> neexistuje místně.</translation>
|
<translation>Obsažený adresář <i>%1</i> neexistuje místně.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="699"/>
|
<location filename="../gui/traywidget.cpp" line="695"/>
|
||||||
<source>Copy path</source>
|
<source>Copy path</source>
|
||||||
<translation type="unfinished">Zkopírovat popis umístění</translation>
|
<translation type="unfinished">Zkopírovat popis umístění</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="703"/>
|
<location filename="../gui/traywidget.cpp" line="699"/>
|
||||||
<source>Copy device ID</source>
|
<source>Copy device ID</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="706"/>
|
<location filename="../gui/traywidget.cpp" line="702"/>
|
||||||
<source>Copy directory ID</source>
|
<source>Copy directory ID</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="836"/>
|
<location filename="../gui/traywidget.cpp" line="832"/>
|
||||||
<location filename="../gui/traywidget.cpp" line="876"/>
|
<location filename="../gui/traywidget.cpp" line="872"/>
|
||||||
<source>Stop</source>
|
<source>Stop</source>
|
||||||
<translation>Zastavit</translation>
|
<translation>Zastavit</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="837"/>
|
<location filename="../gui/traywidget.cpp" line="833"/>
|
||||||
<source>Stop Syncthing instance launched via tray icon</source>
|
<source>Stop Syncthing instance launched via tray icon</source>
|
||||||
<translation>Zastavit instanci Syncthing spuštěnou prostřednictvím ikony v oznamovací oblasti</translation>
|
<translation>Zastavit instanci Syncthing spuštěnou prostřednictvím ikony v oznamovací oblasti</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="841"/>
|
<location filename="../gui/traywidget.cpp" line="837"/>
|
||||||
<source>Start Syncthing with the built-in launcher configured in the settings</source>
|
<source>Start Syncthing with the built-in launcher configured in the settings</source>
|
||||||
<translation>Spustit Syncthing s vestavěným spouštěčem nastaveným v nastaveních</translation>
|
<translation>Spustit Syncthing s vestavěným spouštěčem nastaveným v nastaveních</translation>
|
||||||
</message>
|
</message>
|
||||||
|
|
|
@ -162,20 +162,20 @@
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.ui" line="99"/>
|
<location filename="../gui/traywidget.ui" line="99"/>
|
||||||
<location filename="../gui/traywidget.cpp" line="339"/>
|
<location filename="../gui/traywidget.cpp" line="337"/>
|
||||||
<source>About</source>
|
<source>About</source>
|
||||||
<translation>Über Syncthing Tray</translation>
|
<translation>Über Syncthing Tray</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.ui" line="58"/>
|
<location filename="../gui/traywidget.ui" line="58"/>
|
||||||
<location filename="../gui/traywidget.cpp" line="464"/>
|
<location filename="../gui/traywidget.cpp" line="459"/>
|
||||||
<source>Connect</source>
|
<source>Connect</source>
|
||||||
<translation>Verbinden</translation>
|
<translation>Verbinden</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.ui" line="72"/>
|
<location filename="../gui/traywidget.ui" line="72"/>
|
||||||
<location filename="../gui/traywidget.cpp" line="840"/>
|
<location filename="../gui/traywidget.cpp" line="836"/>
|
||||||
<location filename="../gui/traywidget.cpp" line="882"/>
|
<location filename="../gui/traywidget.cpp" line="878"/>
|
||||||
<source>Start</source>
|
<source>Start</source>
|
||||||
<translation>Starten</translation>
|
<translation>Starten</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -250,8 +250,8 @@ For <i>all</i> notifications, checkout the log</source>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.ui" line="357"/>
|
<location filename="../gui/traywidget.ui" line="357"/>
|
||||||
<location filename="../gui/traywidget.cpp" line="156"/>
|
<location filename="../gui/traywidget.cpp" line="154"/>
|
||||||
<location filename="../gui/traywidget.cpp" line="382"/>
|
<location filename="../gui/traywidget.cpp" line="377"/>
|
||||||
<source>New notifications</source>
|
<source>New notifications</source>
|
||||||
<translation>Neue Benachrichtigungen</translation>
|
<translation>Neue Benachrichtigungen</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -287,118 +287,118 @@ For <i>all</i> notifications, checkout the log</source>
|
||||||
<translation>Ignorieren</translation>
|
<translation>Ignorieren</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="128"/>
|
<location filename="../gui/traywidget.cpp" line="126"/>
|
||||||
<source>View own device ID</source>
|
<source>View own device ID</source>
|
||||||
<translation>Eigene Geräte-ID anzeigen</translation>
|
<translation>Eigene Geräte-ID anzeigen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="133"/>
|
<location filename="../gui/traywidget.cpp" line="131"/>
|
||||||
<source>Restart Syncthing</source>
|
<source>Restart Syncthing</source>
|
||||||
<translation>Syncthing neustarten</translation>
|
<translation>Syncthing neustarten</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="138"/>
|
<location filename="../gui/traywidget.cpp" line="136"/>
|
||||||
<source>Show Syncthing log</source>
|
<source>Show Syncthing log</source>
|
||||||
<translation>Syncthing-Log zeigen</translation>
|
<translation>Syncthing-Log zeigen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="143"/>
|
<location filename="../gui/traywidget.cpp" line="141"/>
|
||||||
<source>Rescan all directories</source>
|
<source>Rescan all directories</source>
|
||||||
<translation>Alle Verzeichnisse neu scannen</translation>
|
<translation>Alle Verzeichnisse neu scannen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="150"/>
|
<location filename="../gui/traywidget.cpp" line="148"/>
|
||||||
<source>Connection</source>
|
<source>Connection</source>
|
||||||
<translation>Verbindung</translation>
|
<translation>Verbindung</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="172"/>
|
<location filename="../gui/traywidget.cpp" line="170"/>
|
||||||
<source>Show internal errors</source>
|
<source>Show internal errors</source>
|
||||||
<translation>Interne Fehler</translation>
|
<translation>Interne Fehler</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="187"/>
|
<location filename="../gui/traywidget.cpp" line="185"/>
|
||||||
<source>Quit Syncthing Tray</source>
|
<source>Quit Syncthing Tray</source>
|
||||||
<translation>Syncthing Tray schließen</translation>
|
<translation>Syncthing Tray schließen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="439"/>
|
<location filename="../gui/traywidget.cpp" line="434"/>
|
||||||
<source>Do you really want to restart Syncthing?</source>
|
<source>Do you really want to restart Syncthing?</source>
|
||||||
<translation>Soll Syncthing wirklich neu gestartet werden?</translation>
|
<translation>Soll Syncthing wirklich neu gestartet werden?</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="465"/>
|
<location filename="../gui/traywidget.cpp" line="460"/>
|
||||||
<source>Not connected to Syncthing, click to connect</source>
|
<source>Not connected to Syncthing, click to connect</source>
|
||||||
<translation>Verbindung zu Syncthing getrennt, klicke um zu verbinden</translation>
|
<translation>Verbindung zu Syncthing getrennt, klicke um zu verbinden</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="470"/>
|
<location filename="../gui/traywidget.cpp" line="465"/>
|
||||||
<source>Unable to establish connection to Syncthing.</source>
|
<source>Unable to establish connection to Syncthing.</source>
|
||||||
<translation>Verbindung zu Syncthing kann nicht hergestellt werden.</translation>
|
<translation>Verbindung zu Syncthing kann nicht hergestellt werden.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="480"/>
|
<location filename="../gui/traywidget.cpp" line="475"/>
|
||||||
<source>Pause</source>
|
<source>Pause</source>
|
||||||
<translation>Pausieren</translation>
|
<translation>Pausieren</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="481"/>
|
<location filename="../gui/traywidget.cpp" line="476"/>
|
||||||
<source>Syncthing is running, click to pause all devices</source>
|
<source>Syncthing is running, click to pause all devices</source>
|
||||||
<translation>Syncthing läuft, klicke um alle Geräte zu pausieren</translation>
|
<translation>Syncthing läuft, klicke um alle Geräte zu pausieren</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="486"/>
|
<location filename="../gui/traywidget.cpp" line="481"/>
|
||||||
<source>Continue</source>
|
<source>Continue</source>
|
||||||
<translation>Fortsetzen</translation>
|
<translation>Fortsetzen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="487"/>
|
<location filename="../gui/traywidget.cpp" line="482"/>
|
||||||
<source>At least one device is paused, click to resume</source>
|
<source>At least one device is paused, click to resume</source>
|
||||||
<translation>Mind. ein Gerät ist pausiert, klicke um fortzusetzen</translation>
|
<translation>Mind. ein Gerät ist pausiert, klicke um fortzusetzen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="610"/>
|
<location filename="../gui/traywidget.cpp" line="605"/>
|
||||||
<source>The specified connection configuration <em>%1</em> is not defined and hence ignored.</source>
|
<source>The specified connection configuration <em>%1</em> is not defined and hence ignored.</source>
|
||||||
<translation>Die angegebene Verbindungskonfiguration <em>%1</em> ist nicht definiert und wird daher ignoriert.</translation>
|
<translation>Die angegebene Verbindungskonfiguration <em>%1</em> ist nicht definiert und wird daher ignoriert.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="645"/>
|
<location filename="../gui/traywidget.cpp" line="641"/>
|
||||||
<source>The directory <i>%1</i> does not exist on the local machine.</source>
|
<source>The directory <i>%1</i> does not exist on the local machine.</source>
|
||||||
<translation>Das Verzeichnis <i>%1</i> existiert nicht lokal.</translation>
|
<translation>Das Verzeichnis <i>%1</i> existiert nicht lokal.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="656"/>
|
<location filename="../gui/traywidget.cpp" line="652"/>
|
||||||
<source>The containing directory <i>%1</i> does not exist on the local machine.</source>
|
<source>The containing directory <i>%1</i> does not exist on the local machine.</source>
|
||||||
<translation>Das beinhaltende Verzeichnis <i>%1</i> existiert nicht lokal.</translation>
|
<translation>Das beinhaltende Verzeichnis <i>%1</i> existiert nicht lokal.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="699"/>
|
<location filename="../gui/traywidget.cpp" line="695"/>
|
||||||
<source>Copy path</source>
|
<source>Copy path</source>
|
||||||
<translation>Pfad kopieren</translation>
|
<translation>Pfad kopieren</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="703"/>
|
<location filename="../gui/traywidget.cpp" line="699"/>
|
||||||
<source>Copy device ID</source>
|
<source>Copy device ID</source>
|
||||||
<translation>Geräte-ID kopieren</translation>
|
<translation>Geräte-ID kopieren</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="706"/>
|
<location filename="../gui/traywidget.cpp" line="702"/>
|
||||||
<source>Copy directory ID</source>
|
<source>Copy directory ID</source>
|
||||||
<translation>Verzeichnis-ID kopieren</translation>
|
<translation>Verzeichnis-ID kopieren</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="836"/>
|
<location filename="../gui/traywidget.cpp" line="832"/>
|
||||||
<location filename="../gui/traywidget.cpp" line="876"/>
|
<location filename="../gui/traywidget.cpp" line="872"/>
|
||||||
<source>Stop</source>
|
<source>Stop</source>
|
||||||
<translation>Stoppen</translation>
|
<translation>Stoppen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="837"/>
|
<location filename="../gui/traywidget.cpp" line="833"/>
|
||||||
<source>Stop Syncthing instance launched via tray icon</source>
|
<source>Stop Syncthing instance launched via tray icon</source>
|
||||||
<translation>Stoppe Syncthing-Instanz, die mit dem internen Starter gestartet wurde</translation>
|
<translation>Stoppe Syncthing-Instanz, die mit dem internen Starter gestartet wurde</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="841"/>
|
<location filename="../gui/traywidget.cpp" line="837"/>
|
||||||
<source>Start Syncthing with the built-in launcher configured in the settings</source>
|
<source>Start Syncthing with the built-in launcher configured in the settings</source>
|
||||||
<translation>Starte Syncthing mit dem eingebauten Starter, der in den Einstellungen konfiguriert wird</translation>
|
<translation>Starte Syncthing mit dem eingebauten Starter, der in den Einstellungen konfiguriert wird</translation>
|
||||||
</message>
|
</message>
|
||||||
|
|
|
@ -162,20 +162,20 @@
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.ui" line="99"/>
|
<location filename="../gui/traywidget.ui" line="99"/>
|
||||||
<location filename="../gui/traywidget.cpp" line="339"/>
|
<location filename="../gui/traywidget.cpp" line="337"/>
|
||||||
<source>About</source>
|
<source>About</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.ui" line="58"/>
|
<location filename="../gui/traywidget.ui" line="58"/>
|
||||||
<location filename="../gui/traywidget.cpp" line="464"/>
|
<location filename="../gui/traywidget.cpp" line="459"/>
|
||||||
<source>Connect</source>
|
<source>Connect</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.ui" line="72"/>
|
<location filename="../gui/traywidget.ui" line="72"/>
|
||||||
<location filename="../gui/traywidget.cpp" line="840"/>
|
<location filename="../gui/traywidget.cpp" line="836"/>
|
||||||
<location filename="../gui/traywidget.cpp" line="882"/>
|
<location filename="../gui/traywidget.cpp" line="878"/>
|
||||||
<source>Start</source>
|
<source>Start</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -245,8 +245,8 @@ For <i>all</i> notifications, checkout the log</source>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.ui" line="357"/>
|
<location filename="../gui/traywidget.ui" line="357"/>
|
||||||
<location filename="../gui/traywidget.cpp" line="156"/>
|
<location filename="../gui/traywidget.cpp" line="154"/>
|
||||||
<location filename="../gui/traywidget.cpp" line="382"/>
|
<location filename="../gui/traywidget.cpp" line="377"/>
|
||||||
<source>New notifications</source>
|
<source>New notifications</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -281,118 +281,118 @@ For <i>all</i> notifications, checkout the log</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="128"/>
|
<location filename="../gui/traywidget.cpp" line="126"/>
|
||||||
<source>View own device ID</source>
|
<source>View own device ID</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="133"/>
|
<location filename="../gui/traywidget.cpp" line="131"/>
|
||||||
<source>Restart Syncthing</source>
|
<source>Restart Syncthing</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="138"/>
|
<location filename="../gui/traywidget.cpp" line="136"/>
|
||||||
<source>Show Syncthing log</source>
|
<source>Show Syncthing log</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="143"/>
|
<location filename="../gui/traywidget.cpp" line="141"/>
|
||||||
<source>Rescan all directories</source>
|
<source>Rescan all directories</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="150"/>
|
<location filename="../gui/traywidget.cpp" line="148"/>
|
||||||
<source>Connection</source>
|
<source>Connection</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="172"/>
|
<location filename="../gui/traywidget.cpp" line="170"/>
|
||||||
<source>Show internal errors</source>
|
<source>Show internal errors</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="187"/>
|
<location filename="../gui/traywidget.cpp" line="185"/>
|
||||||
<source>Quit Syncthing Tray</source>
|
<source>Quit Syncthing Tray</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="439"/>
|
<location filename="../gui/traywidget.cpp" line="434"/>
|
||||||
<source>Do you really want to restart Syncthing?</source>
|
<source>Do you really want to restart Syncthing?</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="465"/>
|
<location filename="../gui/traywidget.cpp" line="460"/>
|
||||||
<source>Not connected to Syncthing, click to connect</source>
|
<source>Not connected to Syncthing, click to connect</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="470"/>
|
<location filename="../gui/traywidget.cpp" line="465"/>
|
||||||
<source>Unable to establish connection to Syncthing.</source>
|
<source>Unable to establish connection to Syncthing.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="480"/>
|
<location filename="../gui/traywidget.cpp" line="475"/>
|
||||||
<source>Pause</source>
|
<source>Pause</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="481"/>
|
<location filename="../gui/traywidget.cpp" line="476"/>
|
||||||
<source>Syncthing is running, click to pause all devices</source>
|
<source>Syncthing is running, click to pause all devices</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="486"/>
|
<location filename="../gui/traywidget.cpp" line="481"/>
|
||||||
<source>Continue</source>
|
<source>Continue</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="487"/>
|
<location filename="../gui/traywidget.cpp" line="482"/>
|
||||||
<source>At least one device is paused, click to resume</source>
|
<source>At least one device is paused, click to resume</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="610"/>
|
<location filename="../gui/traywidget.cpp" line="605"/>
|
||||||
<source>The specified connection configuration <em>%1</em> is not defined and hence ignored.</source>
|
<source>The specified connection configuration <em>%1</em> is not defined and hence ignored.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="645"/>
|
<location filename="../gui/traywidget.cpp" line="641"/>
|
||||||
<source>The directory <i>%1</i> does not exist on the local machine.</source>
|
<source>The directory <i>%1</i> does not exist on the local machine.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="656"/>
|
<location filename="../gui/traywidget.cpp" line="652"/>
|
||||||
<source>The containing directory <i>%1</i> does not exist on the local machine.</source>
|
<source>The containing directory <i>%1</i> does not exist on the local machine.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="699"/>
|
<location filename="../gui/traywidget.cpp" line="695"/>
|
||||||
<source>Copy path</source>
|
<source>Copy path</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="703"/>
|
<location filename="../gui/traywidget.cpp" line="699"/>
|
||||||
<source>Copy device ID</source>
|
<source>Copy device ID</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="706"/>
|
<location filename="../gui/traywidget.cpp" line="702"/>
|
||||||
<source>Copy directory ID</source>
|
<source>Copy directory ID</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="836"/>
|
<location filename="../gui/traywidget.cpp" line="832"/>
|
||||||
<location filename="../gui/traywidget.cpp" line="876"/>
|
<location filename="../gui/traywidget.cpp" line="872"/>
|
||||||
<source>Stop</source>
|
<source>Stop</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="837"/>
|
<location filename="../gui/traywidget.cpp" line="833"/>
|
||||||
<source>Stop Syncthing instance launched via tray icon</source>
|
<source>Stop Syncthing instance launched via tray icon</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="841"/>
|
<location filename="../gui/traywidget.cpp" line="837"/>
|
||||||
<source>Start Syncthing with the built-in launcher configured in the settings</source>
|
<source>Start Syncthing with the built-in launcher configured in the settings</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
|
|
@ -162,20 +162,20 @@
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.ui" line="58"/>
|
<location filename="../gui/traywidget.ui" line="58"/>
|
||||||
<location filename="../gui/traywidget.cpp" line="464"/>
|
<location filename="../gui/traywidget.cpp" line="459"/>
|
||||||
<source>Connect</source>
|
<source>Connect</source>
|
||||||
<translation>连接</translation>
|
<translation>连接</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.ui" line="72"/>
|
<location filename="../gui/traywidget.ui" line="72"/>
|
||||||
<location filename="../gui/traywidget.cpp" line="840"/>
|
<location filename="../gui/traywidget.cpp" line="836"/>
|
||||||
<location filename="../gui/traywidget.cpp" line="882"/>
|
<location filename="../gui/traywidget.cpp" line="878"/>
|
||||||
<source>Start</source>
|
<source>Start</source>
|
||||||
<translation>启动</translation>
|
<translation>启动</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.ui" line="99"/>
|
<location filename="../gui/traywidget.ui" line="99"/>
|
||||||
<location filename="../gui/traywidget.cpp" line="339"/>
|
<location filename="../gui/traywidget.cpp" line="337"/>
|
||||||
<source>About</source>
|
<source>About</source>
|
||||||
<translation>关于</translation>
|
<translation>关于</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -246,8 +246,8 @@ For <i>all</i> notifications, checkout the log</source>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.ui" line="357"/>
|
<location filename="../gui/traywidget.ui" line="357"/>
|
||||||
<location filename="../gui/traywidget.cpp" line="156"/>
|
<location filename="../gui/traywidget.cpp" line="154"/>
|
||||||
<location filename="../gui/traywidget.cpp" line="382"/>
|
<location filename="../gui/traywidget.cpp" line="377"/>
|
||||||
<source>New notifications</source>
|
<source>New notifications</source>
|
||||||
<translation>新通知</translation>
|
<translation>新通知</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -282,118 +282,118 @@ For <i>all</i> notifications, checkout the log</source>
|
||||||
<translation>解除</translation>
|
<translation>解除</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="128"/>
|
<location filename="../gui/traywidget.cpp" line="126"/>
|
||||||
<source>View own device ID</source>
|
<source>View own device ID</source>
|
||||||
<translation>查看本设备 ID</translation>
|
<translation>查看本设备 ID</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="133"/>
|
<location filename="../gui/traywidget.cpp" line="131"/>
|
||||||
<source>Restart Syncthing</source>
|
<source>Restart Syncthing</source>
|
||||||
<translation>重启 Syncthing</translation>
|
<translation>重启 Syncthing</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="138"/>
|
<location filename="../gui/traywidget.cpp" line="136"/>
|
||||||
<source>Show Syncthing log</source>
|
<source>Show Syncthing log</source>
|
||||||
<translation>显示 Syncthing 日志</translation>
|
<translation>显示 Syncthing 日志</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="143"/>
|
<location filename="../gui/traywidget.cpp" line="141"/>
|
||||||
<source>Rescan all directories</source>
|
<source>Rescan all directories</source>
|
||||||
<translation>重新扫描全部目录</translation>
|
<translation>重新扫描全部目录</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="150"/>
|
<location filename="../gui/traywidget.cpp" line="148"/>
|
||||||
<source>Connection</source>
|
<source>Connection</source>
|
||||||
<translation>连接</translation>
|
<translation>连接</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="172"/>
|
<location filename="../gui/traywidget.cpp" line="170"/>
|
||||||
<source>Show internal errors</source>
|
<source>Show internal errors</source>
|
||||||
<translation>显示内部错误</translation>
|
<translation>显示内部错误</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="187"/>
|
<location filename="../gui/traywidget.cpp" line="185"/>
|
||||||
<source>Quit Syncthing Tray</source>
|
<source>Quit Syncthing Tray</source>
|
||||||
<translation>退出 Syncthing Tray</translation>
|
<translation>退出 Syncthing Tray</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="439"/>
|
<location filename="../gui/traywidget.cpp" line="434"/>
|
||||||
<source>Do you really want to restart Syncthing?</source>
|
<source>Do you really want to restart Syncthing?</source>
|
||||||
<translation>您真的想要重启 Syncthing 吗?</translation>
|
<translation>您真的想要重启 Syncthing 吗?</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="465"/>
|
<location filename="../gui/traywidget.cpp" line="460"/>
|
||||||
<source>Not connected to Syncthing, click to connect</source>
|
<source>Not connected to Syncthing, click to connect</source>
|
||||||
<translation>未连接至 Syncthing,点击连接</translation>
|
<translation>未连接至 Syncthing,点击连接</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="470"/>
|
<location filename="../gui/traywidget.cpp" line="465"/>
|
||||||
<source>Unable to establish connection to Syncthing.</source>
|
<source>Unable to establish connection to Syncthing.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="480"/>
|
<location filename="../gui/traywidget.cpp" line="475"/>
|
||||||
<source>Pause</source>
|
<source>Pause</source>
|
||||||
<translation>暂停</translation>
|
<translation>暂停</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="481"/>
|
<location filename="../gui/traywidget.cpp" line="476"/>
|
||||||
<source>Syncthing is running, click to pause all devices</source>
|
<source>Syncthing is running, click to pause all devices</source>
|
||||||
<translation>Syncthing 运行中,点击暂停全部设备</translation>
|
<translation>Syncthing 运行中,点击暂停全部设备</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="486"/>
|
<location filename="../gui/traywidget.cpp" line="481"/>
|
||||||
<source>Continue</source>
|
<source>Continue</source>
|
||||||
<translation>继续</translation>
|
<translation>继续</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="487"/>
|
<location filename="../gui/traywidget.cpp" line="482"/>
|
||||||
<source>At least one device is paused, click to resume</source>
|
<source>At least one device is paused, click to resume</source>
|
||||||
<translation>至少有一个设备已暂停,点击恢复</translation>
|
<translation>至少有一个设备已暂停,点击恢复</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="610"/>
|
<location filename="../gui/traywidget.cpp" line="605"/>
|
||||||
<source>The specified connection configuration <em>%1</em> is not defined and hence ignored.</source>
|
<source>The specified connection configuration <em>%1</em> is not defined and hence ignored.</source>
|
||||||
<translation>指定的连接配置 <em>%1</em> 没有定义,因此被忽略。</translation>
|
<translation>指定的连接配置 <em>%1</em> 没有定义,因此被忽略。</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="645"/>
|
<location filename="../gui/traywidget.cpp" line="641"/>
|
||||||
<source>The directory <i>%1</i> does not exist on the local machine.</source>
|
<source>The directory <i>%1</i> does not exist on the local machine.</source>
|
||||||
<translation>本地设备上不存在目录 <i>%1</i>。</translation>
|
<translation>本地设备上不存在目录 <i>%1</i>。</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="656"/>
|
<location filename="../gui/traywidget.cpp" line="652"/>
|
||||||
<source>The containing directory <i>%1</i> does not exist on the local machine.</source>
|
<source>The containing directory <i>%1</i> does not exist on the local machine.</source>
|
||||||
<translation>本地设备上不存在包含目录 <i>%1</i>。</translation>
|
<translation>本地设备上不存在包含目录 <i>%1</i>。</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="699"/>
|
<location filename="../gui/traywidget.cpp" line="695"/>
|
||||||
<source>Copy path</source>
|
<source>Copy path</source>
|
||||||
<translation>复制路径</translation>
|
<translation>复制路径</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="703"/>
|
<location filename="../gui/traywidget.cpp" line="699"/>
|
||||||
<source>Copy device ID</source>
|
<source>Copy device ID</source>
|
||||||
<translation>复制设备 ID</translation>
|
<translation>复制设备 ID</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="706"/>
|
<location filename="../gui/traywidget.cpp" line="702"/>
|
||||||
<source>Copy directory ID</source>
|
<source>Copy directory ID</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="836"/>
|
<location filename="../gui/traywidget.cpp" line="832"/>
|
||||||
<location filename="../gui/traywidget.cpp" line="876"/>
|
<location filename="../gui/traywidget.cpp" line="872"/>
|
||||||
<source>Stop</source>
|
<source>Stop</source>
|
||||||
<translation>停止</translation>
|
<translation>停止</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="837"/>
|
<location filename="../gui/traywidget.cpp" line="833"/>
|
||||||
<source>Stop Syncthing instance launched via tray icon</source>
|
<source>Stop Syncthing instance launched via tray icon</source>
|
||||||
<translation>停止通过托盘图标启动 Syncthing 实例</translation>
|
<translation>停止通过托盘图标启动 Syncthing 实例</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/traywidget.cpp" line="841"/>
|
<location filename="../gui/traywidget.cpp" line="837"/>
|
||||||
<source>Start Syncthing with the built-in launcher configured in the settings</source>
|
<source>Start Syncthing with the built-in launcher configured in the settings</source>
|
||||||
<translation>使用设置中配置的内置启动器启动 Syncthing</translation>
|
<translation>使用设置中配置的内置启动器启动 Syncthing</translation>
|
||||||
</message>
|
</message>
|
||||||
|
|
Loading…
Reference in New Issue