tray: Allow specifying name of initial connection via CLI
This includes refactoring TrayWidget::applySettings() which is now a member function and only affects the current instance. This prevents applying settings on every instance every time a new tray widget is created. To apply settings for all tray widgets, the static function TrayWidget::applySettingsOnAllInstances() is used instead.
This commit is contained in:
parent
c843548baa
commit
7b19be01f2
|
@ -46,7 +46,7 @@ void handleSystemdServiceError(const QString &context, const QString &name, cons
|
|||
}
|
||||
#endif
|
||||
|
||||
int initSyncthingTray(bool windowed, bool waitForTray)
|
||||
int initSyncthingTray(bool windowed, bool waitForTray, const char *connectionConfig)
|
||||
{
|
||||
auto &v = Settings::values();
|
||||
#ifdef LIB_SYNCTHING_CONNECTOR_SUPPORT_SYSTEMD
|
||||
|
@ -54,16 +54,17 @@ int initSyncthingTray(bool windowed, bool waitForTray)
|
|||
service.setUnitName(v.systemd.syncthingUnit);
|
||||
QObject::connect(&service, &SyncthingService::errorOccurred, &handleSystemdServiceError);
|
||||
#endif
|
||||
const QString connectionConfigQStr = connectionConfig ? QString::fromLocal8Bit(connectionConfig) : QString();
|
||||
if (windowed) {
|
||||
v.launcher.autostart();
|
||||
auto *trayWidget = new TrayWidget;
|
||||
auto *trayWidget = new TrayWidget(connectionConfigQStr);
|
||||
trayWidget->setAttribute(Qt::WA_DeleteOnClose);
|
||||
trayWidget->show();
|
||||
} else {
|
||||
#ifndef QT_NO_SYSTEMTRAYICON
|
||||
if (QSystemTrayIcon::isSystemTrayAvailable() || waitForTray) {
|
||||
v.launcher.autostart();
|
||||
auto *trayIcon = new TrayIcon;
|
||||
auto *trayIcon = new TrayIcon(connectionConfigQStr);
|
||||
trayIcon->show();
|
||||
if (v.firstLaunch) {
|
||||
QMessageBox msgBox;
|
||||
|
@ -124,11 +125,13 @@ int runApplication(int argc, const char *const *argv)
|
|||
Argument waitForTrayArg("wait", '\0',
|
||||
"wait until the system tray becomes available instead of showing an error message if the system tray is not available on start-up");
|
||||
waitForTrayArg.setCombinable(true);
|
||||
ConfigValueArgument connectionArg("connection", '\0', "specifies the connection configuration to be used", { "config name" });
|
||||
Argument &widgetsGuiArg = qtConfigArgs.qtWidgetsGuiArg();
|
||||
widgetsGuiArg.addSubArgument(&windowedArg);
|
||||
widgetsGuiArg.addSubArgument(&showWebUiArg);
|
||||
widgetsGuiArg.addSubArgument(&triggerArg);
|
||||
widgetsGuiArg.addSubArgument(&waitForTrayArg);
|
||||
widgetsGuiArg.addSubArgument(&connectionArg);
|
||||
|
||||
parser.setMainArguments({ &qtConfigArgs.qtWidgetsGuiArg(), &helpArg });
|
||||
try {
|
||||
|
@ -149,7 +152,7 @@ int runApplication(int argc, const char *const *argv)
|
|||
qtConfigArgs.applySettings(true);
|
||||
LOAD_QT_TRANSLATIONS;
|
||||
|
||||
int res = initSyncthingTray(windowedArg.isPresent(), waitForTrayArg.isPresent());
|
||||
int res = initSyncthingTray(windowedArg.isPresent(), waitForTrayArg.isPresent(), connectionArg.firstValue());
|
||||
if (!res) {
|
||||
trigger(triggerArg.isPresent(), showWebUiArg.isPresent());
|
||||
res = application.exec();
|
||||
|
@ -163,7 +166,7 @@ int runApplication(int argc, const char *const *argv)
|
|||
// if --webui or --trigger is present don't create a new tray icon, just trigger actions
|
||||
trigger(triggerArg.isPresent(), showWebUiArg.isPresent());
|
||||
} else {
|
||||
const int res = initSyncthingTray(windowedArg.isPresent(), waitForTrayArg.isPresent());
|
||||
const int res = initSyncthingTray(windowedArg.isPresent(), waitForTrayArg.isPresent(), connectionArg.firstValue());
|
||||
if (!res) {
|
||||
trigger(triggerArg.isPresent(), showWebUiArg.isPresent());
|
||||
}
|
||||
|
|
|
@ -34,10 +34,10 @@ namespace QtGui {
|
|||
/*!
|
||||
* \brief Instantiates a new tray icon.
|
||||
*/
|
||||
TrayIcon::TrayIcon(QObject *parent)
|
||||
TrayIcon::TrayIcon(const QString &connectionConfig, QObject *parent)
|
||||
: QSystemTrayIcon(parent)
|
||||
, m_initialized(false)
|
||||
, m_trayMenu(this)
|
||||
, m_trayMenu(this, connectionConfig)
|
||||
, m_status(SyncthingStatus::Disconnected)
|
||||
{
|
||||
// set context menu
|
||||
|
|
|
@ -23,7 +23,7 @@ class TrayIcon : public QSystemTrayIcon {
|
|||
Q_OBJECT
|
||||
|
||||
public:
|
||||
TrayIcon(QObject *parent = nullptr);
|
||||
TrayIcon(const QString &connectionConfig = QString(), QObject *parent = nullptr);
|
||||
TrayMenu &trayMenu();
|
||||
|
||||
public slots:
|
||||
|
|
|
@ -11,19 +11,19 @@
|
|||
|
||||
namespace QtGui {
|
||||
|
||||
TrayMenu::TrayMenu(TrayIcon *trayIcon, QWidget *parent)
|
||||
: TrayMenu(parent)
|
||||
TrayMenu::TrayMenu(TrayIcon *trayIcon, const QString &connectionConfig, QWidget *parent)
|
||||
: TrayMenu(connectionConfig, parent)
|
||||
{
|
||||
m_trayIcon = trayIcon;
|
||||
}
|
||||
|
||||
TrayMenu::TrayMenu(QWidget *parent)
|
||||
TrayMenu::TrayMenu(const QString &connectionConfig, QWidget *parent)
|
||||
: QMenu(parent)
|
||||
, m_trayIcon(nullptr)
|
||||
{
|
||||
auto *menuLayout = new QHBoxLayout;
|
||||
menuLayout->setMargin(0), menuLayout->setSpacing(0);
|
||||
menuLayout->addWidget(m_trayWidget = new TrayWidget(this));
|
||||
menuLayout->addWidget(m_trayWidget = new TrayWidget(connectionConfig, this));
|
||||
setLayout(menuLayout);
|
||||
setPlatformMenu(nullptr);
|
||||
}
|
||||
|
|
|
@ -12,8 +12,8 @@ class TrayMenu : public QMenu {
|
|||
Q_OBJECT
|
||||
|
||||
public:
|
||||
TrayMenu(TrayIcon *trayIcon, QWidget *parent = nullptr);
|
||||
TrayMenu(QWidget *parent = nullptr);
|
||||
TrayMenu(TrayIcon *trayIcon, const QString &connectionConfig = QString(), QWidget *parent = nullptr);
|
||||
TrayMenu(const QString &connectionConfig = QString(), QWidget *parent = nullptr);
|
||||
|
||||
QSize sizeHint() const;
|
||||
TrayWidget *widget();
|
||||
|
|
|
@ -54,7 +54,7 @@ vector<TrayWidget *> TrayWidget::m_instances;
|
|||
/*!
|
||||
* \brief Instantiates a new tray widget.
|
||||
*/
|
||||
TrayWidget::TrayWidget(TrayMenu *parent)
|
||||
TrayWidget::TrayWidget(const QString &connectionConfig, TrayMenu *parent)
|
||||
: QWidget(parent)
|
||||
, m_menu(parent)
|
||||
, m_ui(new Ui::TrayWidget)
|
||||
|
@ -113,7 +113,6 @@ TrayWidget::TrayWidget(TrayMenu *parent)
|
|||
m_connectionsActionGroup = new QActionGroup(m_connectionsMenu = new QMenu(tr("Connection"), this));
|
||||
m_connectionsMenu->setIcon(
|
||||
QIcon::fromTheme(QStringLiteral("network-connect"), QIcon(QStringLiteral(":/icons/hicolor/scalable/actions/network-connect.svg"))));
|
||||
m_ui->connectionsPushButton->setText(Settings::values().connection.primary.label);
|
||||
m_ui->connectionsPushButton->setMenu(m_connectionsMenu);
|
||||
|
||||
// setup notifications menu
|
||||
|
@ -123,7 +122,7 @@ TrayWidget::TrayWidget(TrayMenu *parent)
|
|||
m_ui->notificationsPushButton->setMenu(m_notificationsMenu);
|
||||
|
||||
// apply settings, this also establishes the connection to Syncthing (according to settings)
|
||||
applySettings();
|
||||
applySettings(connectionConfig);
|
||||
|
||||
// setup other widgets
|
||||
m_ui->notificationsPushButton->setHidden(true);
|
||||
|
@ -179,7 +178,7 @@ void TrayWidget::showSettingsDialog()
|
|||
{
|
||||
if (!m_settingsDlg) {
|
||||
m_settingsDlg = new SettingsDialog(&m_connection, this);
|
||||
connect(m_settingsDlg, &SettingsDialog::applied, &TrayWidget::applySettings);
|
||||
connect(m_settingsDlg, &SettingsDialog::applied, &TrayWidget::applySettingsOnAllInstances);
|
||||
}
|
||||
centerWidget(m_settingsDlg);
|
||||
showDialog(m_settingsDlg);
|
||||
|
@ -360,80 +359,100 @@ void TrayWidget::handleStatusChanged(SyncthingStatus status)
|
|||
}
|
||||
}
|
||||
|
||||
void TrayWidget::applySettings()
|
||||
void TrayWidget::applySettings(const QString &connectionConfig)
|
||||
{
|
||||
// update connections menu
|
||||
int connectionIndex = 0;
|
||||
auto &settings = Settings::values();
|
||||
auto &primaryConnectionSettings = settings.connection.primary;
|
||||
auto &secondaryConnectionSettings = settings.connection.secondary;
|
||||
const int connectionCount = static_cast<int>(1 + secondaryConnectionSettings.size());
|
||||
const QList<QAction *> connectionActions = m_connectionsActionGroup->actions();
|
||||
m_selectedConnection = nullptr;
|
||||
bool specifiedConnectionConfigFound = false;
|
||||
for (; connectionIndex < connectionCount; ++connectionIndex) {
|
||||
SyncthingConnectionSettings &connectionSettings
|
||||
= (connectionIndex == 0 ? primaryConnectionSettings : secondaryConnectionSettings[static_cast<size_t>(connectionIndex - 1)]);
|
||||
QAction *action;
|
||||
if (connectionIndex < connectionActions.size()) {
|
||||
action = connectionActions.at(connectionIndex);
|
||||
action->setText(connectionSettings.label);
|
||||
if (action->isChecked() && !m_selectedConnection) {
|
||||
m_selectedConnection = &connectionSettings;
|
||||
}
|
||||
} else {
|
||||
action = m_connectionsMenu->addAction(connectionSettings.label);
|
||||
action->setCheckable(true);
|
||||
m_connectionsActionGroup->addAction(action);
|
||||
}
|
||||
if (!connectionConfig.isEmpty() && !connectionSettings.label.compare(connectionConfig, Qt::CaseInsensitive)) {
|
||||
m_selectedConnection = &connectionSettings;
|
||||
specifiedConnectionConfigFound = true;
|
||||
action->setChecked(true);
|
||||
}
|
||||
}
|
||||
for (; connectionIndex < connectionActions.size(); ++connectionIndex) {
|
||||
delete connectionActions.at(connectionIndex);
|
||||
}
|
||||
if (!m_selectedConnection) {
|
||||
m_selectedConnection = &primaryConnectionSettings;
|
||||
m_connectionsMenu->actions().at(0)->setChecked(true);
|
||||
}
|
||||
m_ui->connectionsPushButton->setText(m_selectedConnection->label);
|
||||
const bool reconnectRequired = m_connection.applySettings(*m_selectedConnection);
|
||||
|
||||
#ifdef LIB_SYNCTHING_CONNECTOR_SUPPORT_SYSTEMD
|
||||
// reconnect to apply settings considering systemd
|
||||
const bool couldReconnect = handleSystemdStatusChanged();
|
||||
if (reconnectRequired && couldReconnect) {
|
||||
m_connection.reconnect();
|
||||
}
|
||||
#else
|
||||
instance->m_connection.reconnect();
|
||||
#endif
|
||||
|
||||
#ifndef SYNCTHINGWIDGETS_NO_WEBVIEW
|
||||
// web view
|
||||
if (m_webViewDlg) {
|
||||
m_webViewDlg->applySettings(*m_selectedConnection);
|
||||
}
|
||||
#endif
|
||||
|
||||
// update visual appearance
|
||||
m_ui->trafficFormWidget->setVisible(settings.appearance.showTraffic);
|
||||
m_ui->trafficIconLabel->setVisible(settings.appearance.showTraffic);
|
||||
m_ui->trafficHorizontalSpacer->changeSize(
|
||||
0, 20, settings.appearance.showTraffic ? QSizePolicy::Expanding : QSizePolicy::Ignored, QSizePolicy::Minimum);
|
||||
if (settings.appearance.showTraffic) {
|
||||
updateTraffic();
|
||||
}
|
||||
m_ui->infoFrame->setFrameStyle(settings.appearance.frameStyle);
|
||||
m_ui->buttonsFrame->setFrameStyle(settings.appearance.frameStyle);
|
||||
if (QApplication::style() && !QApplication::style()->objectName().compare(QLatin1String("adwaita"), Qt::CaseInsensitive)) {
|
||||
m_cornerFrame->setFrameStyle(QFrame::NoFrame);
|
||||
} else {
|
||||
m_cornerFrame->setFrameStyle(settings.appearance.frameStyle);
|
||||
}
|
||||
if (settings.appearance.tabPosition >= QTabWidget::North && settings.appearance.tabPosition <= QTabWidget::East) {
|
||||
m_ui->tabWidget->setTabPosition(static_cast<QTabWidget::TabPosition>(settings.appearance.tabPosition));
|
||||
}
|
||||
m_dirModel.setBrightColors(settings.appearance.brightTextColors);
|
||||
m_devModel.setBrightColors(settings.appearance.brightTextColors);
|
||||
m_dlModel.setBrightColors(settings.appearance.brightTextColors);
|
||||
|
||||
// show warning when explicitely specified connection configuration was not found
|
||||
if (!specifiedConnectionConfigFound && !connectionConfig.isEmpty()) {
|
||||
auto *const msgBox = new QMessageBox(QMessageBox::Warning, QCoreApplication::applicationName(),
|
||||
tr("The specified connection configuration <em>%1</em> is not defined and hence ignored.").arg(connectionConfig));
|
||||
msgBox->setAttribute(Qt::WA_DeleteOnClose);
|
||||
msgBox->show();
|
||||
}
|
||||
}
|
||||
|
||||
void TrayWidget::applySettingsOnAllInstances()
|
||||
{
|
||||
for (TrayWidget *instance : m_instances) {
|
||||
// update connections menu
|
||||
int connectionIndex = 0;
|
||||
auto &settings = Settings::values();
|
||||
auto &primaryConnectionSettings = settings.connection.primary;
|
||||
auto &secondaryConnectionSettings = settings.connection.secondary;
|
||||
const int connectionCount = static_cast<int>(1 + secondaryConnectionSettings.size());
|
||||
const QList<QAction *> connectionActions = instance->m_connectionsActionGroup->actions();
|
||||
instance->m_selectedConnection = nullptr;
|
||||
for (; connectionIndex < connectionCount; ++connectionIndex) {
|
||||
SyncthingConnectionSettings &connectionSettings
|
||||
= (connectionIndex == 0 ? primaryConnectionSettings : secondaryConnectionSettings[static_cast<size_t>(connectionIndex - 1)]);
|
||||
if (connectionIndex < connectionActions.size()) {
|
||||
QAction *action = connectionActions.at(connectionIndex);
|
||||
action->setText(connectionSettings.label);
|
||||
if (action->isChecked()) {
|
||||
instance->m_selectedConnection = &connectionSettings;
|
||||
}
|
||||
} else {
|
||||
QAction *action = instance->m_connectionsMenu->addAction(connectionSettings.label);
|
||||
action->setCheckable(true);
|
||||
instance->m_connectionsActionGroup->addAction(action);
|
||||
}
|
||||
}
|
||||
for (; connectionIndex < connectionActions.size(); ++connectionIndex) {
|
||||
delete connectionActions.at(connectionIndex);
|
||||
}
|
||||
if (!instance->m_selectedConnection) {
|
||||
instance->m_selectedConnection = &primaryConnectionSettings;
|
||||
instance->m_connectionsMenu->actions().at(0)->setChecked(true);
|
||||
}
|
||||
instance->m_ui->connectionsPushButton->setText(instance->m_selectedConnection->label);
|
||||
const bool reconnectRequired = instance->m_connection.applySettings(*instance->m_selectedConnection);
|
||||
|
||||
// reconnect to apply settings considering systemd
|
||||
#ifdef LIB_SYNCTHING_CONNECTOR_SUPPORT_SYSTEMD
|
||||
const bool couldReconnect = instance->handleSystemdStatusChanged();
|
||||
if (reconnectRequired && couldReconnect) {
|
||||
instance->m_connection.reconnect();
|
||||
}
|
||||
#else
|
||||
instance->m_connection.reconnect();
|
||||
#endif
|
||||
|
||||
// web view
|
||||
#ifndef SYNCTHINGWIDGETS_NO_WEBVIEW
|
||||
if (instance->m_webViewDlg) {
|
||||
instance->m_webViewDlg->applySettings(*instance->m_selectedConnection);
|
||||
}
|
||||
#endif
|
||||
|
||||
// update visual appearance
|
||||
instance->m_ui->trafficFormWidget->setVisible(settings.appearance.showTraffic);
|
||||
instance->m_ui->trafficIconLabel->setVisible(settings.appearance.showTraffic);
|
||||
instance->m_ui->trafficHorizontalSpacer->changeSize(
|
||||
0, 20, settings.appearance.showTraffic ? QSizePolicy::Expanding : QSizePolicy::Ignored, QSizePolicy::Minimum);
|
||||
if (settings.appearance.showTraffic) {
|
||||
instance->updateTraffic();
|
||||
}
|
||||
instance->m_ui->infoFrame->setFrameStyle(settings.appearance.frameStyle);
|
||||
instance->m_ui->buttonsFrame->setFrameStyle(settings.appearance.frameStyle);
|
||||
if (QApplication::style() && !QApplication::style()->objectName().compare(QLatin1String("adwaita"), Qt::CaseInsensitive)) {
|
||||
instance->m_cornerFrame->setFrameStyle(QFrame::NoFrame);
|
||||
} else {
|
||||
instance->m_cornerFrame->setFrameStyle(settings.appearance.frameStyle);
|
||||
}
|
||||
if (settings.appearance.tabPosition >= QTabWidget::North && settings.appearance.tabPosition <= QTabWidget::East) {
|
||||
instance->m_ui->tabWidget->setTabPosition(static_cast<QTabWidget::TabPosition>(settings.appearance.tabPosition));
|
||||
}
|
||||
instance->m_dirModel.setBrightColors(settings.appearance.brightTextColors);
|
||||
instance->m_devModel.setBrightColors(settings.appearance.brightTextColors);
|
||||
instance->m_dlModel.setBrightColors(settings.appearance.brightTextColors);
|
||||
instance->applySettings();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -40,7 +40,7 @@ class TrayWidget : public QWidget {
|
|||
Q_OBJECT
|
||||
|
||||
public:
|
||||
TrayWidget(TrayMenu *parent = nullptr);
|
||||
TrayWidget(const QString &connectionConfig = QString(), TrayMenu *parent = nullptr);
|
||||
~TrayWidget();
|
||||
|
||||
Data::SyncthingConnection &connection();
|
||||
|
@ -61,7 +61,8 @@ public slots:
|
|||
|
||||
private slots:
|
||||
void handleStatusChanged(Data::SyncthingStatus status);
|
||||
static void applySettings();
|
||||
void applySettings(const QString &connectionConfig = QString());
|
||||
static void applySettingsOnAllInstances();
|
||||
void openDir(const Data::SyncthingDir &dir);
|
||||
void openItemDir(const Data::SyncthingItemDownloadProgress &item);
|
||||
void scanDir(const Data::SyncthingDir &dir);
|
||||
|
|
|
@ -124,19 +124,19 @@
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="72"/>
|
||||
<location filename="../gui/traywidget.cpp" line="194"/>
|
||||
<location filename="../gui/traywidget.cpp" line="193"/>
|
||||
<source>About</source>
|
||||
<translation>Über Syncthing Tray</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="99"/>
|
||||
<location filename="../gui/traywidget.cpp" line="333"/>
|
||||
<location filename="../gui/traywidget.cpp" line="332"/>
|
||||
<source>Connect</source>
|
||||
<translation>Verbinden</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="113"/>
|
||||
<location filename="../gui/traywidget.cpp" line="555"/>
|
||||
<location filename="../gui/traywidget.cpp" line="574"/>
|
||||
<source>Start</source>
|
||||
<translation>Starten</translation>
|
||||
</message>
|
||||
|
@ -168,7 +168,7 @@
|
|||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="250"/>
|
||||
<location filename="../gui/traywidget.ui" line="270"/>
|
||||
<location filename="../gui/traywidget.cpp" line="509"/>
|
||||
<location filename="../gui/traywidget.cpp" line="528"/>
|
||||
<source>unknown</source>
|
||||
<translation>unbekannt</translation>
|
||||
</message>
|
||||
|
@ -191,8 +191,8 @@ For <i>all</i> notifications, checkout the log</source>
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="311"/>
|
||||
<location filename="../gui/traywidget.cpp" line="120"/>
|
||||
<location filename="../gui/traywidget.cpp" line="277"/>
|
||||
<location filename="../gui/traywidget.cpp" line="119"/>
|
||||
<location filename="../gui/traywidget.cpp" line="276"/>
|
||||
<source>New notifications</source>
|
||||
<translation>Neue Benachrichtigungen</translation>
|
||||
</message>
|
||||
|
@ -247,67 +247,72 @@ For <i>all</i> notifications, checkout the log</source>
|
|||
<translation>Verbindung</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="224"/>
|
||||
<location filename="../gui/traywidget.cpp" line="223"/>
|
||||
<source>Own device ID</source>
|
||||
<translation>Eigene Geräte-ID</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="234"/>
|
||||
<location filename="../gui/traywidget.cpp" line="233"/>
|
||||
<source>device ID is unknown</source>
|
||||
<translation>die Geräte-ID ist unbekannt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="242"/>
|
||||
<location filename="../gui/traywidget.cpp" line="241"/>
|
||||
<source>Copy to clipboard</source>
|
||||
<translation>in Zwischenablage kopieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="259"/>
|
||||
<location filename="../gui/traywidget.cpp" line="258"/>
|
||||
<source>Log</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="308"/>
|
||||
<location filename="../gui/traywidget.cpp" line="307"/>
|
||||
<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="334"/>
|
||||
<location filename="../gui/traywidget.cpp" line="333"/>
|
||||
<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="346"/>
|
||||
<location filename="../gui/traywidget.cpp" line="345"/>
|
||||
<source>Pause</source>
|
||||
<translation>Pausieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="347"/>
|
||||
<location filename="../gui/traywidget.cpp" line="346"/>
|
||||
<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="353"/>
|
||||
<location filename="../gui/traywidget.cpp" line="352"/>
|
||||
<source>Continue</source>
|
||||
<translation>Fortsetzen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="354"/>
|
||||
<location filename="../gui/traywidget.cpp" line="353"/>
|
||||
<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="446"/>
|
||||
<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="465"/>
|
||||
<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="457"/>
|
||||
<location filename="../gui/traywidget.cpp" line="476"/>
|
||||
<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="550"/>
|
||||
<location filename="../gui/traywidget.cpp" line="569"/>
|
||||
<source>Stop</source>
|
||||
<translation>Stoppen</translation>
|
||||
</message>
|
||||
|
@ -320,22 +325,22 @@ For <i>all</i> notifications, checkout the log</source>
|
|||
<translation>Fehler beim </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../application/main.cpp" line="72"/>
|
||||
<location filename="../application/main.cpp" line="73"/>
|
||||
<source>You must configure how to connect to Syncthing when using Syncthing Tray the first time.</source>
|
||||
<translation>Vor der ersten Verwendung muss eingestellt werden, wie sich das Syncthing Tray mit Syncthing verbinden soll.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../application/main.cpp" line="73"/>
|
||||
<location filename="../application/main.cpp" line="74"/>
|
||||
<source>Note that the settings dialog allows importing URL, credentials and API-key from the local Syncthing configuration.</source>
|
||||
<translation>Der Einstellungsdialog ermöglicht es die URL, Zugangsdaten und den API-Key automatisch aus der lokalen Syncthing-Konfiguration auszulesen.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../application/main.cpp" line="80"/>
|
||||
<location filename="../application/main.cpp" line="81"/>
|
||||
<source>The system tray is (currently) not available. You could open the tray menu as a regular window using the -w flag, though.</source>
|
||||
<translation>Das System-Tray bzw. der Infobereich ist aktuell nicht verfügbar. Es wäre möglich, Syncthing Tray als normales Fenster zu starten (mit Option -w).</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../application/main.cpp" line="86"/>
|
||||
<location filename="../application/main.cpp" line="87"/>
|
||||
<source>The Qt libraries have not been built with tray icon support. You could open the tray menu as a regular window using the -w flag, though.</source>
|
||||
<translation>Die verwendete Qt-Bibliothek wurde nicht mit Unterstützung für System-Tray konfiguriert. Es wäre möglich, Syncthing Tray als normales Fenster zu starten (mit Option -w).</translation>
|
||||
</message>
|
||||
|
|
|
@ -123,19 +123,19 @@
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="72"/>
|
||||
<location filename="../gui/traywidget.cpp" line="194"/>
|
||||
<location filename="../gui/traywidget.cpp" line="193"/>
|
||||
<source>About</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="99"/>
|
||||
<location filename="../gui/traywidget.cpp" line="333"/>
|
||||
<location filename="../gui/traywidget.cpp" line="332"/>
|
||||
<source>Connect</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="113"/>
|
||||
<location filename="../gui/traywidget.cpp" line="555"/>
|
||||
<location filename="../gui/traywidget.cpp" line="574"/>
|
||||
<source>Start</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -167,7 +167,7 @@
|
|||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="250"/>
|
||||
<location filename="../gui/traywidget.ui" line="270"/>
|
||||
<location filename="../gui/traywidget.cpp" line="509"/>
|
||||
<location filename="../gui/traywidget.cpp" line="528"/>
|
||||
<source>unknown</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -189,8 +189,8 @@ For <i>all</i> notifications, checkout the log</source>
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="311"/>
|
||||
<location filename="../gui/traywidget.cpp" line="120"/>
|
||||
<location filename="../gui/traywidget.cpp" line="277"/>
|
||||
<location filename="../gui/traywidget.cpp" line="119"/>
|
||||
<location filename="../gui/traywidget.cpp" line="276"/>
|
||||
<source>New notifications</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -245,67 +245,72 @@ For <i>all</i> notifications, checkout the log</source>
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="224"/>
|
||||
<location filename="../gui/traywidget.cpp" line="223"/>
|
||||
<source>Own device ID</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="234"/>
|
||||
<location filename="../gui/traywidget.cpp" line="233"/>
|
||||
<source>device ID is unknown</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="242"/>
|
||||
<location filename="../gui/traywidget.cpp" line="241"/>
|
||||
<source>Copy to clipboard</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="259"/>
|
||||
<location filename="../gui/traywidget.cpp" line="258"/>
|
||||
<source>Log</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="308"/>
|
||||
<location filename="../gui/traywidget.cpp" line="307"/>
|
||||
<source>Do you really want to restart Syncthing?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="334"/>
|
||||
<location filename="../gui/traywidget.cpp" line="333"/>
|
||||
<source>Not connected to Syncthing, click to connect</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="346"/>
|
||||
<location filename="../gui/traywidget.cpp" line="345"/>
|
||||
<source>Pause</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="347"/>
|
||||
<location filename="../gui/traywidget.cpp" line="346"/>
|
||||
<source>Syncthing is running, click to pause all devices</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="353"/>
|
||||
<location filename="../gui/traywidget.cpp" line="352"/>
|
||||
<source>Continue</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="354"/>
|
||||
<location filename="../gui/traywidget.cpp" line="353"/>
|
||||
<source>At least one device is paused, click to resume</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="446"/>
|
||||
<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="465"/>
|
||||
<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="457"/>
|
||||
<location filename="../gui/traywidget.cpp" line="476"/>
|
||||
<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="550"/>
|
||||
<location filename="../gui/traywidget.cpp" line="569"/>
|
||||
<source>Stop</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -318,22 +323,22 @@ For <i>all</i> notifications, checkout the log</source>
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../application/main.cpp" line="72"/>
|
||||
<location filename="../application/main.cpp" line="73"/>
|
||||
<source>You must configure how to connect to Syncthing when using Syncthing Tray the first time.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../application/main.cpp" line="73"/>
|
||||
<location filename="../application/main.cpp" line="74"/>
|
||||
<source>Note that the settings dialog allows importing URL, credentials and API-key from the local Syncthing configuration.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../application/main.cpp" line="80"/>
|
||||
<location filename="../application/main.cpp" line="81"/>
|
||||
<source>The system tray is (currently) not available. You could open the tray menu as a regular window using the -w flag, though.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../application/main.cpp" line="86"/>
|
||||
<location filename="../application/main.cpp" line="87"/>
|
||||
<source>The Qt libraries have not been built with tray icon support. You could open the tray menu as a regular window using the -w flag, though.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
|
Loading…
Reference in New Issue