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_PATCH 0)
|
||||
set(META_RELEASE_DATE "2023-03-07")
|
||||
set(META_SOVERSION 5)
|
||||
set(META_SOVERSION 6)
|
||||
set(META_ADD_DEFAULT_CPP_UNIT_TEST_APPLICATION ON)
|
||||
|
||||
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
|
||||
* `SYNCTHINGTRAY_SYSTEMD_USER_UNIT`: override the name of the systemd user-unit checked by the wizard's
|
||||
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
|
||||
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;
|
||||
|
||||
// most startup options don't make much sense for a Plasmoid, so merge webview with startup
|
||||
auto *const webViewPage = new WebViewOptionPage;
|
||||
webViewPage->widget()->setWindowTitle(QCoreApplication::translate("Plasmoid::SettingsDialog", "Web view"));
|
||||
auto *const generalWebViewPage = new GeneralWebViewOptionPage;
|
||||
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
|
||||
auto *const systemdPage = new SystemdOptionPage;
|
||||
#endif
|
||||
|
||||
category = new OptionCategory;
|
||||
category->setDisplayName(QCoreApplication::translate("Plasmoid::SettingsDialog", "Extras"));
|
||||
category->assignPages({ webViewPage
|
||||
category->assignPages({ generalWebViewPage, builtinWebViewPage
|
||||
#ifdef LIB_SYNCTHING_CONNECTOR_SUPPORT_SYSTEMD
|
||||
,
|
||||
systemdPage
|
||||
|
|
|
@ -84,9 +84,7 @@ SyncthingApplet::SyncthingApplet(QObject *parent, const QVariantList &data)
|
|||
, m_settingsDlg(nullptr)
|
||||
, m_wizard(nullptr)
|
||||
, m_imageProvider(nullptr)
|
||||
#ifndef SYNCTHINGWIDGETS_NO_WEBVIEW
|
||||
, m_webViewDlg(nullptr)
|
||||
#endif
|
||||
, m_currentConnectionConfig(-1)
|
||||
, m_hasInternalErrors(false)
|
||||
, m_initialized(false)
|
||||
|
@ -417,22 +415,19 @@ void SyncthingApplet::concludeWizard(const QString &errorMessage)
|
|||
|
||||
void SyncthingApplet::showWebUI()
|
||||
{
|
||||
auto *const dlg = QtGui::showWebUI(m_connection.syncthingUrl(), currentConnectionConfig(), m_webViewDlg);
|
||||
#ifndef SYNCTHINGWIDGETS_NO_WEBVIEW
|
||||
if (Settings::values().webView.disabled) {
|
||||
#endif
|
||||
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 (!dlg) {
|
||||
return;
|
||||
}
|
||||
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
|
||||
}
|
||||
|
||||
|
@ -588,12 +583,10 @@ void SyncthingApplet::handleAboutDialogDeleted()
|
|||
m_aboutDlg = nullptr;
|
||||
}
|
||||
|
||||
#ifndef SYNCTHINGWIDGETS_NO_WEBVIEW
|
||||
void SyncthingApplet::handleWebViewDeleted()
|
||||
{
|
||||
m_webViewDlg = nullptr;
|
||||
}
|
||||
#endif
|
||||
|
||||
void SyncthingApplet::handleNewNotification(DateTime when, const QString &msg)
|
||||
{
|
||||
|
|
|
@ -35,7 +35,11 @@ class IconManager;
|
|||
} // namespace Data
|
||||
|
||||
namespace QtGui {
|
||||
#ifdef SYNCTHINGWIDGETS_NO_WEBVIEW
|
||||
using WebViewDialog = void;
|
||||
#else
|
||||
class WebViewDialog;
|
||||
#endif
|
||||
class Wizard;
|
||||
} // namespace QtGui
|
||||
|
||||
|
@ -181,9 +185,7 @@ private Q_SLOTS:
|
|||
void handleDirStatisticsChanged();
|
||||
void handleErrorsCleared();
|
||||
void handleAboutDialogDeleted();
|
||||
#ifndef SYNCTHINGWIDGETS_NO_WEBVIEW
|
||||
void handleWebViewDeleted();
|
||||
#endif
|
||||
void handleNewNotification(CppUtilities::DateTime when, const QString &msg);
|
||||
void handleSystemdServiceError(const QString &context, const QString &name, const QString &message);
|
||||
#ifdef LIB_SYNCTHING_CONNECTOR_SUPPORT_SYSTEMD
|
||||
|
@ -222,9 +224,7 @@ private:
|
|||
QtGui::DBusStatusNotifier m_dbusNotifier;
|
||||
std::vector<Data::SyncthingLogEntry> m_notifications;
|
||||
QtForkAwesome::QuickImageProvider *m_imageProvider;
|
||||
#ifndef SYNCTHINGWIDGETS_NO_WEBVIEW
|
||||
QtGui::WebViewDialog *m_webViewDlg;
|
||||
#endif
|
||||
int m_currentConnectionConfig;
|
||||
bool m_hasInternalErrors;
|
||||
bool m_initialized;
|
||||
|
|
|
@ -274,11 +274,20 @@
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../lib/settingsdialog.cpp" line="136"/>
|
||||
<source>Web view</source>
|
||||
<translation>Weboberfläche</translation>
|
||||
<source>General web view settings</source>
|
||||
<translation>Allgemeine Webanzeigeneinstellungen</translation>
|
||||
</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>
|
||||
<translation></translation>
|
||||
</message>
|
||||
|
@ -299,22 +308,22 @@
|
|||
<context>
|
||||
<name>Plasmoid::SyncthingApplet</name>
|
||||
<message>
|
||||
<location filename="../lib/syncthingapplet.cpp" line="460"/>
|
||||
<location filename="../lib/syncthingapplet.cpp" line="455"/>
|
||||
<source>About</source>
|
||||
<translation>Über Syncthing Plasmoid</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../lib/syncthingapplet.cpp" line="472"/>
|
||||
<location filename="../lib/syncthingapplet.cpp" line="467"/>
|
||||
<source>New notifications</source>
|
||||
<translation>Neue Benachrichtigungen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../lib/syncthingapplet.cpp" line="543"/>
|
||||
<location filename="../lib/syncthingapplet.cpp" line="538"/>
|
||||
<source>Unable to establish connection to Syncthing.</source>
|
||||
<translation>Verbindung zu Syncthing kann nicht hergestellt werden.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../lib/syncthingapplet.cpp" line="613"/>
|
||||
<location filename="../lib/syncthingapplet.cpp" line="606"/>
|
||||
<source>D-Bus error - unable to </source>
|
||||
<translation>D-Bus-Fehler bei Aktion </translation>
|
||||
</message>
|
||||
|
|
|
@ -212,11 +212,16 @@
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../lib/settingsdialog.cpp" line="136"/>
|
||||
<source>Web view</source>
|
||||
<source>General web view settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</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>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -237,22 +242,22 @@
|
|||
<context>
|
||||
<name>Plasmoid::SyncthingApplet</name>
|
||||
<message>
|
||||
<location filename="../lib/syncthingapplet.cpp" line="460"/>
|
||||
<location filename="../lib/syncthingapplet.cpp" line="455"/>
|
||||
<source>About</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../lib/syncthingapplet.cpp" line="472"/>
|
||||
<location filename="../lib/syncthingapplet.cpp" line="467"/>
|
||||
<source>New notifications</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../lib/syncthingapplet.cpp" line="543"/>
|
||||
<location filename="../lib/syncthingapplet.cpp" line="538"/>
|
||||
<source>Unable to establish connection to Syncthing.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../lib/syncthingapplet.cpp" line="613"/>
|
||||
<location filename="../lib/syncthingapplet.cpp" line="606"/>
|
||||
<source>D-Bus error - unable to </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
|
|
@ -51,7 +51,8 @@ set(WIDGETS_UI_FILES
|
|||
settings/autostartoptionpage.ui
|
||||
settings/launcheroptionpage.ui
|
||||
settings/systemdoptionpage.ui
|
||||
settings/webviewoptionpage.ui
|
||||
settings/generalwebviewoptionpage.ui
|
||||
settings/builtinwebviewoptionpage.ui
|
||||
settings/mainconfigwizardpage.ui
|
||||
settings/autostartwizardpage.ui
|
||||
settings/applywizardpage.ui)
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>QtGui::WebViewOptionPage</class>
|
||||
<widget class="QWidget" name="QtGui::WebViewOptionPage">
|
||||
<class>QtGui::BuiltinWebViewOptionPage</class>
|
||||
<widget class="QWidget" name="QtGui::BuiltinWebViewOptionPage">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
|
||||
<horstretch>0</horstretch>
|
||||
|
@ -9,7 +9,7 @@
|
|||
</sizepolicy>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>General</string>
|
||||
<string>Built-in web view</string>
|
||||
</property>
|
||||
<property name="windowIcon">
|
||||
<iconset theme="internet-web-browser" resource="../resources/syncthingwidgetsicons.qrc">
|
||||
|
@ -17,27 +17,13 @@
|
|||
</property>
|
||||
<layout class="QFormLayout" name="formLayout">
|
||||
<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">
|
||||
<property name="text">
|
||||
<string>Zoom factor</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<item row="1" column="1">
|
||||
<widget class="QDoubleSpinBox" name="zoomDoubleSpinBox">
|
||||
<property name="buttonSymbols">
|
||||
<enum>QAbstractSpinBox::PlusMinus</enum>
|
||||
|
@ -53,14 +39,14 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="keepRunningLabel">
|
||||
<property name="text">
|
||||
<string>Hiding</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<item row="2" column="1">
|
||||
<widget class="QCheckBox" name="keepRunningCheckBox">
|
||||
<property name="text">
|
||||
<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)
|
||||
settings.beginGroup(QStringLiteral("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.geometry = settings.value(QStringLiteral("geometry")).toByteArray();
|
||||
webView.keepRunning = settings.value(QStringLiteral("keepRunning"), webView.keepRunning).toBool();
|
||||
|
@ -529,7 +533,8 @@ bool save()
|
|||
#if defined(SYNCTHINGWIDGETS_USE_WEBENGINE) || defined(SYNCTHINGWIDGETS_USE_WEBKIT)
|
||||
settings.beginGroup(QStringLiteral("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("geometry"), webView.geometry);
|
||||
settings.setValue(QStringLiteral("keepRunning"), webView.keepRunning);
|
||||
|
|
|
@ -141,14 +141,16 @@ struct SYNCTHINGWIDGETS_EXPORT Systemd {
|
|||
};
|
||||
#endif
|
||||
|
||||
#if defined(SYNCTHINGWIDGETS_USE_WEBENGINE) || defined(SYNCTHINGWIDGETS_USE_WEBKIT)
|
||||
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;
|
||||
QByteArray geometry;
|
||||
bool keepRunning = true;
|
||||
};
|
||||
#endif
|
||||
};
|
||||
|
||||
struct SYNCTHINGWIDGETS_EXPORT Settings {
|
||||
bool firstLaunch = false;
|
||||
|
@ -173,9 +175,7 @@ struct SYNCTHINGWIDGETS_EXPORT Settings {
|
|||
#ifdef LIB_SYNCTHING_CONNECTOR_SUPPORT_SYSTEMD
|
||||
Systemd systemd;
|
||||
#endif
|
||||
#if defined(SYNCTHINGWIDGETS_USE_WEBENGINE) || defined(SYNCTHINGWIDGETS_USE_WEBKIT)
|
||||
WebView webView;
|
||||
#endif
|
||||
QtUtilities::QtSettings qt;
|
||||
|
||||
void apply(Data::SyncthingNotifier ¬ifier) const;
|
||||
|
|
|
@ -26,7 +26,8 @@
|
|||
#ifdef LIB_SYNCTHING_CONNECTOR_SUPPORT_SYSTEMD
|
||||
#include "ui_systemdoptionpage.h"
|
||||
#endif
|
||||
#include "ui_webviewoptionpage.h"
|
||||
#include "ui_builtinwebviewoptionpage.h"
|
||||
#include "ui_generalwebviewoptionpage.h"
|
||||
|
||||
// use meta-data of syncthingtray application here
|
||||
#include "resources/../../tray/resources/config.h"
|
||||
|
@ -1368,45 +1369,91 @@ void SystemdOptionPage::updateColors()
|
|||
}
|
||||
#endif
|
||||
|
||||
// WebViewOptionPage
|
||||
WebViewOptionPage::WebViewOptionPage(QWidget *parentWidget)
|
||||
: WebViewOptionPageBase(parentWidget)
|
||||
// GeneralWebViewOptionPage
|
||||
GeneralWebViewOptionPage::GeneralWebViewOptionPage(QWidget *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
|
||||
QWidget *WebViewOptionPage::setupWidget()
|
||||
QWidget *BuiltinWebViewOptionPage::setupWidget()
|
||||
{
|
||||
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->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 "
|
||||
"or Qt WebEngine.\nThe Web UI will be opened in the default web browser instead."));
|
||||
return label;
|
||||
}
|
||||
#endif
|
||||
|
||||
bool WebViewOptionPage::apply()
|
||||
bool BuiltinWebViewOptionPage::apply()
|
||||
{
|
||||
#ifndef SYNCTHINGWIDGETS_NO_WEBVIEW
|
||||
auto &webView = values().webView;
|
||||
webView.disabled = ui()->disableCheckBox->isChecked();
|
||||
webView.zoomFactor = ui()->zoomDoubleSpinBox->value();
|
||||
webView.keepRunning = ui()->keepRunningCheckBox->isChecked();
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
|
||||
void WebViewOptionPage::reset()
|
||||
void BuiltinWebViewOptionPage::reset()
|
||||
{
|
||||
#ifndef SYNCTHINGWIDGETS_NO_WEBVIEW
|
||||
const auto &webView = values().webView;
|
||||
ui()->disableCheckBox->setChecked(webView.disabled);
|
||||
ui()->zoomDoubleSpinBox->setValue(webView.zoomFactor);
|
||||
ui()->keepRunningCheckBox->setChecked(webView.keepRunning);
|
||||
#endif
|
||||
|
@ -1443,7 +1490,7 @@ SettingsDialog::SettingsDialog(Data::SyncthingConnection *connection, QWidget *p
|
|||
|
||||
category = new OptionCategory(this);
|
||||
category->setDisplayName(tr("Web view"));
|
||||
category->assignPages({ new WebViewOptionPage });
|
||||
category->assignPages({ new GeneralWebViewOptionPage, new BuiltinWebViewOptionPage });
|
||||
category->setIcon(
|
||||
QIcon::fromTheme(QStringLiteral("internet-web-browser"), QIcon(QStringLiteral(":/icons/hicolor/scalable/apps/internet-web-browser.svg"))));
|
||||
categories << category;
|
||||
|
@ -1515,6 +1562,7 @@ INSTANTIATE_UI_FILE_BASED_OPTION_PAGE_NS(QtGui, LauncherOptionPage)
|
|||
#ifdef LIB_SYNCTHING_CONNECTOR_SUPPORT_SYSTEMD
|
||||
INSTANTIATE_UI_FILE_BASED_OPTION_PAGE_NS(QtGui, SystemdOptionPage)
|
||||
#endif
|
||||
INSTANTIATE_UI_FILE_BASED_OPTION_PAGE_NS(QtGui, GeneralWebViewOptionPage)
|
||||
#ifndef SYNCTHINGWIDGETS_NO_WEBVIEW
|
||||
INSTANTIATE_UI_FILE_BASED_OPTION_PAGE_NS(QtGui, WebViewOptionPage)
|
||||
INSTANTIATE_UI_FILE_BASED_OPTION_PAGE_NS(QtGui, BuiltinWebViewOptionPage)
|
||||
#endif
|
||||
|
|
|
@ -162,10 +162,11 @@ QMetaObject::Connection m_enabledChangedConn;
|
|||
END_DECLARE_OPTION_PAGE
|
||||
#endif
|
||||
|
||||
DECLARE_UI_FILE_BASED_OPTION_PAGE_CUSTOM_SETUP(GeneralWebViewOptionPage)
|
||||
#ifndef SYNCTHINGWIDGETS_NO_WEBVIEW
|
||||
DECLARE_UI_FILE_BASED_OPTION_PAGE(WebViewOptionPage)
|
||||
DECLARE_UI_FILE_BASED_OPTION_PAGE(BuiltinWebViewOptionPage)
|
||||
#else
|
||||
DECLARE_OPTION_PAGE(WebViewOptionPage)
|
||||
DECLARE_OPTION_PAGE(BuiltinWebViewOptionPage)
|
||||
#endif
|
||||
|
||||
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
|
||||
DECLARE_EXTERN_UI_FILE_BASED_OPTION_PAGE_NS(QtGui, SystemdOptionPage)
|
||||
#endif
|
||||
DECLARE_EXTERN_UI_FILE_BASED_OPTION_PAGE_NS(QtGui, GeneralWebViewOptionPage)
|
||||
#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 // 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 "../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 "./webviewinterceptor.h"
|
||||
|
||||
#include "../settings/settings.h"
|
||||
|
||||
#include <qtutilities/misc/compat.h>
|
||||
#include <qtutilities/misc/dialogutils.h>
|
||||
|
||||
#include <QCloseEvent>
|
||||
|
@ -149,3 +159,61 @@ bool WebViewDialog::eventFilter(QObject *watched, QEvent *event)
|
|||
} // namespace QtGui
|
||||
|
||||
#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
|
||||
#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
|
||||
|
||||
#include "./webviewdefs.h"
|
||||
|
||||
#include "../settings/settings.h"
|
||||
|
||||
#include <QMainWindow>
|
||||
|
||||
QT_FORWARD_DECLARE_CLASS(WEB_VIEW_PROVIDER)
|
||||
QT_FORWARD_DECLARE_CLASS(QWebEngineProfile)
|
||||
|
||||
namespace Settings {
|
||||
struct ConnectionSettings;
|
||||
}
|
||||
|
||||
namespace QtGui {
|
||||
|
||||
class SYNCTHINGWIDGETS_EXPORT WebViewDialog : public QMainWindow {
|
||||
|
@ -53,5 +54,16 @@ inline const Data::SyncthingConnectionSettings &WebViewDialog::connectionSetting
|
|||
|
||||
} // namespace QtGui
|
||||
|
||||
#else // SYNCTHINGWIDGETS_NO_WEBVIEW
|
||||
namespace QtGui {
|
||||
using WebViewDialog = void;
|
||||
}
|
||||
|
||||
#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
|
||||
|
|
|
@ -131,7 +131,7 @@ static void trigger(bool tray, bool webUi, bool wizard)
|
|||
}
|
||||
auto *const trayWidget = TrayWidget::instances().front();
|
||||
if (webUi) {
|
||||
trayWidget->showWebUi();
|
||||
trayWidget->showWebUI();
|
||||
}
|
||||
if (tray) {
|
||||
trayWidget->showUsingPositioningSettings();
|
||||
|
|
|
@ -52,7 +52,7 @@ TrayIcon::TrayIcon(const QString &connectionConfig, QObject *parent)
|
|||
connect(m_contextMenu.addAction(
|
||||
QIcon::fromTheme(QStringLiteral("syncthing"), QIcon(QStringLiteral(":/icons/hicolor/scalable/status/syncthing-default.svg"))),
|
||||
tr("Open Syncthing")),
|
||||
&QAction::triggered, &widget, &TrayWidget::showWebUi);
|
||||
&QAction::triggered, &widget, &TrayWidget::showWebUI);
|
||||
connect(m_contextMenu.addAction(
|
||||
QIcon::fromTheme(QStringLiteral("preferences-other"), QIcon(QStringLiteral(":/icons/hicolor/scalable/apps/preferences-other.svg"))),
|
||||
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::showNotificationsRequested, &widget, &TrayWidget::showNotifications);
|
||||
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);
|
||||
#endif
|
||||
|
||||
|
@ -136,7 +136,7 @@ void TrayIcon::handleActivated(QSystemTrayIcon::ActivationReason reason)
|
|||
// can't catch that event on Plasma 5 anyways
|
||||
break;
|
||||
case QSystemTrayIcon::MiddleClick:
|
||||
trayMenu().widget().showWebUi();
|
||||
trayMenu().widget().showWebUI();
|
||||
break;
|
||||
case QSystemTrayIcon::Trigger: {
|
||||
trayMenu().showUsingPositioningSettings();
|
||||
|
@ -158,7 +158,7 @@ void TrayIcon::handleMessageClicked()
|
|||
showInternalErrorsDialog();
|
||||
break;
|
||||
case TrayIconMessageClickedAction::ShowWebUi:
|
||||
trayMenu().widget().showWebUi();
|
||||
trayMenu().widget().showWebUI();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -72,9 +72,7 @@ TrayWidget::TrayWidget(TrayMenu *parent)
|
|||
: QWidget(parent)
|
||||
, m_menu(parent)
|
||||
, m_ui(new Ui::TrayWidget)
|
||||
#ifndef SYNCTHINGWIDGETS_NO_WEBVIEW
|
||||
, m_webViewDlg(nullptr)
|
||||
#endif
|
||||
, m_internalErrorsButton(nullptr)
|
||||
, m_notifier(m_connection)
|
||||
, m_dirModel(m_connection)
|
||||
|
@ -194,7 +192,7 @@ TrayWidget::TrayWidget(TrayMenu *parent)
|
|||
// connect signals and slots
|
||||
connect(m_ui->statusPushButton, &QPushButton::clicked, this, &TrayWidget::changeStatus);
|
||||
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_connection, &SyncthingConnection::statusChanged, this, &TrayWidget::handleStatusChanged);
|
||||
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::settingsDialogRequested, this, &TrayWidget::showSettingsDialog);
|
||||
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);
|
||||
}
|
||||
showDialog(s_wizard, centerWidgetAvoidingOverflow(s_wizard));
|
||||
|
@ -343,23 +341,20 @@ void TrayWidget::showAboutDialog()
|
|||
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
|
||||
if (Settings::values().webView.disabled) {
|
||||
#endif
|
||||
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 (!dlg) {
|
||||
return;
|
||||
}
|
||||
if (!m_webViewDlg) {
|
||||
m_webViewDlg = dlg;
|
||||
connect(m_webViewDlg, &WebViewDialog::destroyed, this, &TrayWidget::handleWebViewDeleted);
|
||||
}
|
||||
showDialog(m_webViewDlg);
|
||||
#else
|
||||
Q_UNUSED(dlg)
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -890,12 +885,10 @@ Settings::Systemd::ServiceStatus TrayWidget::applySystemdSettings(bool reconnect
|
|||
}
|
||||
#endif
|
||||
|
||||
#ifndef SYNCTHINGWIDGETS_NO_WEBVIEW
|
||||
void TrayWidget::handleWebViewDeleted()
|
||||
{
|
||||
m_webViewDlg = nullptr;
|
||||
}
|
||||
#endif
|
||||
|
||||
void TrayWidget::handleNewNotification(DateTime when, const QString &msg)
|
||||
{
|
||||
|
|
|
@ -34,7 +34,11 @@ class AboutDialog;
|
|||
|
||||
namespace QtGui {
|
||||
|
||||
#ifdef SYNCTHINGWIDGETS_NO_WEBVIEW
|
||||
using WebViewDialog = void;
|
||||
#else
|
||||
class WebViewDialog;
|
||||
#endif
|
||||
class SettingsDialog;
|
||||
class Wizard;
|
||||
class TrayMenu;
|
||||
|
@ -64,7 +68,7 @@ public Q_SLOTS:
|
|||
void showLauncherSettings();
|
||||
void showWizard();
|
||||
void showAboutDialog();
|
||||
void showWebUi();
|
||||
void showWebUI();
|
||||
void showOwnDeviceId();
|
||||
void showLog();
|
||||
void showNotifications();
|
||||
|
@ -104,9 +108,7 @@ private Q_SLOTS:
|
|||
Settings::Systemd::ServiceStatus handleSystemdStatusChanged();
|
||||
Settings::Systemd::ServiceStatus applySystemdSettings(bool reconnectRequired = false);
|
||||
#endif
|
||||
#ifndef SYNCTHINGWIDGETS_NO_WEBVIEW
|
||||
void handleWebViewDeleted();
|
||||
#endif
|
||||
void handleNewNotification(CppUtilities::DateTime when, const QString &msg);
|
||||
void handleConnectionSelected(QAction *connectionAction);
|
||||
void concludeWizard(const QString &errorMessage = QString());
|
||||
|
@ -119,9 +121,7 @@ private:
|
|||
static SettingsDialog *s_settingsDlg;
|
||||
static Wizard *s_wizard;
|
||||
static QtUtilities::AboutDialog *s_aboutDlg;
|
||||
#ifndef SYNCTHINGWIDGETS_NO_WEBVIEW
|
||||
WebViewDialog *m_webViewDlg;
|
||||
#endif
|
||||
QFrame *m_cornerFrame;
|
||||
QPushButton *m_internalErrorsButton;
|
||||
Data::SyncthingConnection m_connection;
|
||||
|
|
|
@ -162,20 +162,20 @@
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="99"/>
|
||||
<location filename="../gui/traywidget.cpp" line="339"/>
|
||||
<location filename="../gui/traywidget.cpp" line="337"/>
|
||||
<source>About</source>
|
||||
<translation>O Syncthing Tray</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="58"/>
|
||||
<location filename="../gui/traywidget.cpp" line="464"/>
|
||||
<location filename="../gui/traywidget.cpp" line="459"/>
|
||||
<source>Connect</source>
|
||||
<translation>Připojit</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="72"/>
|
||||
<location filename="../gui/traywidget.cpp" line="840"/>
|
||||
<location filename="../gui/traywidget.cpp" line="882"/>
|
||||
<location filename="../gui/traywidget.cpp" line="836"/>
|
||||
<location filename="../gui/traywidget.cpp" line="878"/>
|
||||
<source>Start</source>
|
||||
<translation>Spustit</translation>
|
||||
</message>
|
||||
|
@ -246,8 +246,8 @@ For <i>all</i> notifications, checkout the log</source>
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="357"/>
|
||||
<location filename="../gui/traywidget.cpp" line="156"/>
|
||||
<location filename="../gui/traywidget.cpp" line="382"/>
|
||||
<location filename="../gui/traywidget.cpp" line="154"/>
|
||||
<location filename="../gui/traywidget.cpp" line="377"/>
|
||||
<source>New notifications</source>
|
||||
<translation>Nová oznámení</translation>
|
||||
</message>
|
||||
|
@ -282,118 +282,118 @@ For <i>all</i> notifications, checkout the log</source>
|
|||
<translation>Zahodit</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="128"/>
|
||||
<location filename="../gui/traywidget.cpp" line="126"/>
|
||||
<source>View own device ID</source>
|
||||
<translation>Zobrazit identifikátor místního zařízení</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="133"/>
|
||||
<location filename="../gui/traywidget.cpp" line="131"/>
|
||||
<source>Restart Syncthing</source>
|
||||
<translation>Restartovat Syncthing</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="138"/>
|
||||
<location filename="../gui/traywidget.cpp" line="136"/>
|
||||
<source>Show Syncthing log</source>
|
||||
<translation>Zobrazit záznam událostí v Syncthing</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="143"/>
|
||||
<location filename="../gui/traywidget.cpp" line="141"/>
|
||||
<source>Rescan all directories</source>
|
||||
<translation>Znovu proskenovat všechny složky</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="150"/>
|
||||
<location filename="../gui/traywidget.cpp" line="148"/>
|
||||
<source>Connection</source>
|
||||
<translation>Spojení</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="172"/>
|
||||
<location filename="../gui/traywidget.cpp" line="170"/>
|
||||
<source>Show internal errors</source>
|
||||
<translation>Zobrazit vnitřní chyby</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="187"/>
|
||||
<location filename="../gui/traywidget.cpp" line="185"/>
|
||||
<source>Quit Syncthing Tray</source>
|
||||
<translation>Ukončit Syncthing Tray</translation>
|
||||
</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>
|
||||
<translation>Opravdu chcete Syncthing restartovat?</translation>
|
||||
</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>
|
||||
<translation>Nepřipojeno k Syncthing, klikněte pro připojení se</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="470"/>
|
||||
<location filename="../gui/traywidget.cpp" line="465"/>
|
||||
<source>Unable to establish connection to Syncthing.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="480"/>
|
||||
<location filename="../gui/traywidget.cpp" line="475"/>
|
||||
<source>Pause</source>
|
||||
<translation>Pozastavit</translation>
|
||||
</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>
|
||||
<translation>Syncthing je spuštěné, kliknutím pozastavíte veškerá zařízení</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="486"/>
|
||||
<location filename="../gui/traywidget.cpp" line="481"/>
|
||||
<source>Continue</source>
|
||||
<translation>Pokračovat</translation>
|
||||
</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>
|
||||
<translation>Přinejmenším jedno zařízení je pozastaveno, kliknutím pokračujte</translation>
|
||||
</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>
|
||||
<translation>Zadané nastavení spojení <em>%1</em> není definováno a proto je ignorováno.</translation>
|
||||
</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>
|
||||
<translation>Adresář <i>%1</i> neexistuje místně.</translation>
|
||||
</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>
|
||||
<translation>Obsažený adresář <i>%1</i> neexistuje místně.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="699"/>
|
||||
<location filename="../gui/traywidget.cpp" line="695"/>
|
||||
<source>Copy path</source>
|
||||
<translation type="unfinished">Zkopírovat popis umístění</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="703"/>
|
||||
<location filename="../gui/traywidget.cpp" line="699"/>
|
||||
<source>Copy device ID</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="706"/>
|
||||
<location filename="../gui/traywidget.cpp" line="702"/>
|
||||
<source>Copy directory ID</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="836"/>
|
||||
<location filename="../gui/traywidget.cpp" line="876"/>
|
||||
<location filename="../gui/traywidget.cpp" line="832"/>
|
||||
<location filename="../gui/traywidget.cpp" line="872"/>
|
||||
<source>Stop</source>
|
||||
<translation>Zastavit</translation>
|
||||
</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>
|
||||
<translation>Zastavit instanci Syncthing spuštěnou prostřednictvím ikony v oznamovací oblasti</translation>
|
||||
</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>
|
||||
<translation>Spustit Syncthing s vestavěným spouštěčem nastaveným v nastaveních</translation>
|
||||
</message>
|
||||
|
|
|
@ -162,20 +162,20 @@
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="99"/>
|
||||
<location filename="../gui/traywidget.cpp" line="339"/>
|
||||
<location filename="../gui/traywidget.cpp" line="337"/>
|
||||
<source>About</source>
|
||||
<translation>Über Syncthing Tray</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="58"/>
|
||||
<location filename="../gui/traywidget.cpp" line="464"/>
|
||||
<location filename="../gui/traywidget.cpp" line="459"/>
|
||||
<source>Connect</source>
|
||||
<translation>Verbinden</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="72"/>
|
||||
<location filename="../gui/traywidget.cpp" line="840"/>
|
||||
<location filename="../gui/traywidget.cpp" line="882"/>
|
||||
<location filename="../gui/traywidget.cpp" line="836"/>
|
||||
<location filename="../gui/traywidget.cpp" line="878"/>
|
||||
<source>Start</source>
|
||||
<translation>Starten</translation>
|
||||
</message>
|
||||
|
@ -250,8 +250,8 @@ For <i>all</i> notifications, checkout the log</source>
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="357"/>
|
||||
<location filename="../gui/traywidget.cpp" line="156"/>
|
||||
<location filename="../gui/traywidget.cpp" line="382"/>
|
||||
<location filename="../gui/traywidget.cpp" line="154"/>
|
||||
<location filename="../gui/traywidget.cpp" line="377"/>
|
||||
<source>New notifications</source>
|
||||
<translation>Neue Benachrichtigungen</translation>
|
||||
</message>
|
||||
|
@ -287,118 +287,118 @@ For <i>all</i> notifications, checkout the log</source>
|
|||
<translation>Ignorieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="128"/>
|
||||
<location filename="../gui/traywidget.cpp" line="126"/>
|
||||
<source>View own device ID</source>
|
||||
<translation>Eigene Geräte-ID anzeigen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="133"/>
|
||||
<location filename="../gui/traywidget.cpp" line="131"/>
|
||||
<source>Restart Syncthing</source>
|
||||
<translation>Syncthing neustarten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="138"/>
|
||||
<location filename="../gui/traywidget.cpp" line="136"/>
|
||||
<source>Show Syncthing log</source>
|
||||
<translation>Syncthing-Log zeigen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="143"/>
|
||||
<location filename="../gui/traywidget.cpp" line="141"/>
|
||||
<source>Rescan all directories</source>
|
||||
<translation>Alle Verzeichnisse neu scannen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="150"/>
|
||||
<location filename="../gui/traywidget.cpp" line="148"/>
|
||||
<source>Connection</source>
|
||||
<translation>Verbindung</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="172"/>
|
||||
<location filename="../gui/traywidget.cpp" line="170"/>
|
||||
<source>Show internal errors</source>
|
||||
<translation>Interne Fehler</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="187"/>
|
||||
<location filename="../gui/traywidget.cpp" line="185"/>
|
||||
<source>Quit Syncthing Tray</source>
|
||||
<translation>Syncthing Tray schließen</translation>
|
||||
</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>
|
||||
<translation>Soll Syncthing wirklich neu gestartet werden?</translation>
|
||||
</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>
|
||||
<translation>Verbindung zu Syncthing getrennt, klicke um zu verbinden</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="470"/>
|
||||
<location filename="../gui/traywidget.cpp" line="465"/>
|
||||
<source>Unable to establish connection to Syncthing.</source>
|
||||
<translation>Verbindung zu Syncthing kann nicht hergestellt werden.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="480"/>
|
||||
<location filename="../gui/traywidget.cpp" line="475"/>
|
||||
<source>Pause</source>
|
||||
<translation>Pausieren</translation>
|
||||
</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>
|
||||
<translation>Syncthing läuft, klicke um alle Geräte zu pausieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="486"/>
|
||||
<location filename="../gui/traywidget.cpp" line="481"/>
|
||||
<source>Continue</source>
|
||||
<translation>Fortsetzen</translation>
|
||||
</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>
|
||||
<translation>Mind. ein Gerät ist pausiert, klicke um fortzusetzen</translation>
|
||||
</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>
|
||||
<translation>Die angegebene Verbindungskonfiguration <em>%1</em> ist nicht definiert und wird daher ignoriert.</translation>
|
||||
</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>
|
||||
<translation>Das Verzeichnis <i>%1</i> existiert nicht lokal.</translation>
|
||||
</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>
|
||||
<translation>Das beinhaltende Verzeichnis <i>%1</i> existiert nicht lokal.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="699"/>
|
||||
<location filename="../gui/traywidget.cpp" line="695"/>
|
||||
<source>Copy path</source>
|
||||
<translation>Pfad kopieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="703"/>
|
||||
<location filename="../gui/traywidget.cpp" line="699"/>
|
||||
<source>Copy device ID</source>
|
||||
<translation>Geräte-ID kopieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="706"/>
|
||||
<location filename="../gui/traywidget.cpp" line="702"/>
|
||||
<source>Copy directory ID</source>
|
||||
<translation>Verzeichnis-ID kopieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="836"/>
|
||||
<location filename="../gui/traywidget.cpp" line="876"/>
|
||||
<location filename="../gui/traywidget.cpp" line="832"/>
|
||||
<location filename="../gui/traywidget.cpp" line="872"/>
|
||||
<source>Stop</source>
|
||||
<translation>Stoppen</translation>
|
||||
</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>
|
||||
<translation>Stoppe Syncthing-Instanz, die mit dem internen Starter gestartet wurde</translation>
|
||||
</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>
|
||||
<translation>Starte Syncthing mit dem eingebauten Starter, der in den Einstellungen konfiguriert wird</translation>
|
||||
</message>
|
||||
|
|
|
@ -162,20 +162,20 @@
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="99"/>
|
||||
<location filename="../gui/traywidget.cpp" line="339"/>
|
||||
<location filename="../gui/traywidget.cpp" line="337"/>
|
||||
<source>About</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="58"/>
|
||||
<location filename="../gui/traywidget.cpp" line="464"/>
|
||||
<location filename="../gui/traywidget.cpp" line="459"/>
|
||||
<source>Connect</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="72"/>
|
||||
<location filename="../gui/traywidget.cpp" line="840"/>
|
||||
<location filename="../gui/traywidget.cpp" line="882"/>
|
||||
<location filename="../gui/traywidget.cpp" line="836"/>
|
||||
<location filename="../gui/traywidget.cpp" line="878"/>
|
||||
<source>Start</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -245,8 +245,8 @@ For <i>all</i> notifications, checkout the log</source>
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="357"/>
|
||||
<location filename="../gui/traywidget.cpp" line="156"/>
|
||||
<location filename="../gui/traywidget.cpp" line="382"/>
|
||||
<location filename="../gui/traywidget.cpp" line="154"/>
|
||||
<location filename="../gui/traywidget.cpp" line="377"/>
|
||||
<source>New notifications</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -281,118 +281,118 @@ For <i>all</i> notifications, checkout the log</source>
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="128"/>
|
||||
<location filename="../gui/traywidget.cpp" line="126"/>
|
||||
<source>View own device ID</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="133"/>
|
||||
<location filename="../gui/traywidget.cpp" line="131"/>
|
||||
<source>Restart Syncthing</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="138"/>
|
||||
<location filename="../gui/traywidget.cpp" line="136"/>
|
||||
<source>Show Syncthing log</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="143"/>
|
||||
<location filename="../gui/traywidget.cpp" line="141"/>
|
||||
<source>Rescan all directories</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="150"/>
|
||||
<location filename="../gui/traywidget.cpp" line="148"/>
|
||||
<source>Connection</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="172"/>
|
||||
<location filename="../gui/traywidget.cpp" line="170"/>
|
||||
<source>Show internal errors</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="187"/>
|
||||
<location filename="../gui/traywidget.cpp" line="185"/>
|
||||
<source>Quit Syncthing Tray</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</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>
|
||||
<translation type="unfinished"></translation>
|
||||
</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>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="470"/>
|
||||
<location filename="../gui/traywidget.cpp" line="465"/>
|
||||
<source>Unable to establish connection to Syncthing.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="480"/>
|
||||
<location filename="../gui/traywidget.cpp" line="475"/>
|
||||
<source>Pause</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</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>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="486"/>
|
||||
<location filename="../gui/traywidget.cpp" line="481"/>
|
||||
<source>Continue</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</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>
|
||||
<translation type="unfinished"></translation>
|
||||
</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>
|
||||
<translation type="unfinished"></translation>
|
||||
</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>
|
||||
<translation type="unfinished"></translation>
|
||||
</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>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="699"/>
|
||||
<location filename="../gui/traywidget.cpp" line="695"/>
|
||||
<source>Copy path</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="703"/>
|
||||
<location filename="../gui/traywidget.cpp" line="699"/>
|
||||
<source>Copy device ID</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="706"/>
|
||||
<location filename="../gui/traywidget.cpp" line="702"/>
|
||||
<source>Copy directory ID</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="836"/>
|
||||
<location filename="../gui/traywidget.cpp" line="876"/>
|
||||
<location filename="../gui/traywidget.cpp" line="832"/>
|
||||
<location filename="../gui/traywidget.cpp" line="872"/>
|
||||
<source>Stop</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</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>
|
||||
<translation type="unfinished"></translation>
|
||||
</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>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
|
|
@ -162,20 +162,20 @@
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="58"/>
|
||||
<location filename="../gui/traywidget.cpp" line="464"/>
|
||||
<location filename="../gui/traywidget.cpp" line="459"/>
|
||||
<source>Connect</source>
|
||||
<translation>连接</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="72"/>
|
||||
<location filename="../gui/traywidget.cpp" line="840"/>
|
||||
<location filename="../gui/traywidget.cpp" line="882"/>
|
||||
<location filename="../gui/traywidget.cpp" line="836"/>
|
||||
<location filename="../gui/traywidget.cpp" line="878"/>
|
||||
<source>Start</source>
|
||||
<translation>启动</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="99"/>
|
||||
<location filename="../gui/traywidget.cpp" line="339"/>
|
||||
<location filename="../gui/traywidget.cpp" line="337"/>
|
||||
<source>About</source>
|
||||
<translation>关于</translation>
|
||||
</message>
|
||||
|
@ -246,8 +246,8 @@ For <i>all</i> notifications, checkout the log</source>
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="357"/>
|
||||
<location filename="../gui/traywidget.cpp" line="156"/>
|
||||
<location filename="../gui/traywidget.cpp" line="382"/>
|
||||
<location filename="../gui/traywidget.cpp" line="154"/>
|
||||
<location filename="../gui/traywidget.cpp" line="377"/>
|
||||
<source>New notifications</source>
|
||||
<translation>新通知</translation>
|
||||
</message>
|
||||
|
@ -282,118 +282,118 @@ For <i>all</i> notifications, checkout the log</source>
|
|||
<translation>解除</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="128"/>
|
||||
<location filename="../gui/traywidget.cpp" line="126"/>
|
||||
<source>View own device ID</source>
|
||||
<translation>查看本设备 ID</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="133"/>
|
||||
<location filename="../gui/traywidget.cpp" line="131"/>
|
||||
<source>Restart Syncthing</source>
|
||||
<translation>重启 Syncthing</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="138"/>
|
||||
<location filename="../gui/traywidget.cpp" line="136"/>
|
||||
<source>Show Syncthing log</source>
|
||||
<translation>显示 Syncthing 日志</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="143"/>
|
||||
<location filename="../gui/traywidget.cpp" line="141"/>
|
||||
<source>Rescan all directories</source>
|
||||
<translation>重新扫描全部目录</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="150"/>
|
||||
<location filename="../gui/traywidget.cpp" line="148"/>
|
||||
<source>Connection</source>
|
||||
<translation>连接</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="172"/>
|
||||
<location filename="../gui/traywidget.cpp" line="170"/>
|
||||
<source>Show internal errors</source>
|
||||
<translation>显示内部错误</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="187"/>
|
||||
<location filename="../gui/traywidget.cpp" line="185"/>
|
||||
<source>Quit Syncthing Tray</source>
|
||||
<translation>退出 Syncthing Tray</translation>
|
||||
</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>
|
||||
<translation>您真的想要重启 Syncthing 吗?</translation>
|
||||
</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>
|
||||
<translation>未连接至 Syncthing,点击连接</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="470"/>
|
||||
<location filename="../gui/traywidget.cpp" line="465"/>
|
||||
<source>Unable to establish connection to Syncthing.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="480"/>
|
||||
<location filename="../gui/traywidget.cpp" line="475"/>
|
||||
<source>Pause</source>
|
||||
<translation>暂停</translation>
|
||||
</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>
|
||||
<translation>Syncthing 运行中,点击暂停全部设备</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="486"/>
|
||||
<location filename="../gui/traywidget.cpp" line="481"/>
|
||||
<source>Continue</source>
|
||||
<translation>继续</translation>
|
||||
</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>
|
||||
<translation>至少有一个设备已暂停,点击恢复</translation>
|
||||
</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>
|
||||
<translation>指定的连接配置 <em>%1</em> 没有定义,因此被忽略。</translation>
|
||||
</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>
|
||||
<translation>本地设备上不存在目录 <i>%1</i>。</translation>
|
||||
</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>
|
||||
<translation>本地设备上不存在包含目录 <i>%1</i>。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="699"/>
|
||||
<location filename="../gui/traywidget.cpp" line="695"/>
|
||||
<source>Copy path</source>
|
||||
<translation>复制路径</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="703"/>
|
||||
<location filename="../gui/traywidget.cpp" line="699"/>
|
||||
<source>Copy device ID</source>
|
||||
<translation>复制设备 ID</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="706"/>
|
||||
<location filename="../gui/traywidget.cpp" line="702"/>
|
||||
<source>Copy directory ID</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="836"/>
|
||||
<location filename="../gui/traywidget.cpp" line="876"/>
|
||||
<location filename="../gui/traywidget.cpp" line="832"/>
|
||||
<location filename="../gui/traywidget.cpp" line="872"/>
|
||||
<source>Stop</source>
|
||||
<translation>停止</translation>
|
||||
</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>
|
||||
<translation>停止通过托盘图标启动 Syncthing 实例</translation>
|
||||
</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>
|
||||
<translation>使用设置中配置的内置启动器启动 Syncthing</translation>
|
||||
</message>
|
||||
|
|
Loading…
Reference in New Issue