Determine usage of bright custom colors automatically in fileitemaction

This commit is contained in:
Martchus 2022-07-16 20:30:18 +02:00
parent a49da56829
commit 983ef9d37c
9 changed files with 135 additions and 149 deletions

View File

@ -19,7 +19,7 @@ find_package(${PACKAGE_NAMESPACE_PREFIX}c++utilities${CONFIGURATION_PACKAGE_SUFF
list(APPEND CMAKE_MODULE_PATH ${CPP_UTILITIES_MODULE_DIRS}) list(APPEND CMAKE_MODULE_PATH ${CPP_UTILITIES_MODULE_DIRS})
# find qtutilities # find qtutilities
find_package(${PACKAGE_NAMESPACE_PREFIX}qtutilities${CONFIGURATION_PACKAGE_SUFFIX_QTUTILITIES} 6.0.0 REQUIRED) find_package(${PACKAGE_NAMESPACE_PREFIX}qtutilities${CONFIGURATION_PACKAGE_SUFFIX_QTUTILITIES} 6.7.0 REQUIRED)
use_qt_utilities() use_qt_utilities()
# find backend libraries # find backend libraries

View File

@ -5,11 +5,14 @@
#include <syncthingmodel/syncthingicons.h> #include <syncthingmodel/syncthingicons.h>
#include <qtutilities/misc/desktoputils.h>
#include <KFileItem> #include <KFileItem>
#include <KPluginFactory> #include <KPluginFactory>
#include <KPluginLoader> #include <KPluginLoader>
#include <QAction> #include <QAction>
#include <QEvent>
#include <functional> #include <functional>
#include <utility> #include <utility>
@ -42,6 +45,7 @@ SyncthingFileItemActionStaticData SyncthingFileItemAction::s_data;
SyncthingFileItemAction::SyncthingFileItemAction(QObject *parent, const QVariantList &) SyncthingFileItemAction::SyncthingFileItemAction(QObject *parent, const QVariantList &)
: KAbstractFileItemActionPlugin(parent) : KAbstractFileItemActionPlugin(parent)
, m_parentWidget(nullptr)
{ {
s_data.initialize(); s_data.initialize();
} }
@ -59,6 +63,11 @@ QList<QAction *> SyncthingFileItemAction::actions(const KFileItemListProperties
return topLevelActions; return topLevelActions;
} }
if ((m_parentWidget = parentWidget)) {
s_data.applyBrightCustomColorsSetting(QtUtilities::isPaletteDark(parentWidget->palette()));
parentWidget->installEventFilter(this);
}
topLevelActions << new SyncthingMenuAction(fileItemInfo, subActions, this); topLevelActions << new SyncthingMenuAction(fileItemInfo, subActions, this);
return topLevelActions; return topLevelActions;
} }
@ -248,11 +257,6 @@ QList<QAction *> SyncthingFileItemAction::createActions(const KFileItemListPrope
actions << errorAction; actions << errorAction;
// add config items // add config items
QAction *const brightCustomColorsAction = new QAction(QIcon::fromTheme(QStringLiteral("color-profile")), tr("Use bright custom colors"), parent);
brightCustomColorsAction->setCheckable(true);
brightCustomColorsAction->setChecked(data.isUsingBrightCustomColors());
connect(brightCustomColorsAction, &QAction::triggered, &data, &SyncthingFileItemActionStaticData::handleBrightCustomColorsChanged);
actions << brightCustomColorsAction;
QAction *const configFileAction = new QAction(QIcon::fromTheme(QStringLiteral("settings-configure")), tr("Select Syncthing config ..."), parent); QAction *const configFileAction = new QAction(QIcon::fromTheme(QStringLiteral("settings-configure")), tr("Select Syncthing config ..."), parent);
connect(configFileAction, &QAction::triggered, &data, &SyncthingFileItemActionStaticData::selectSyncthingConfig); connect(configFileAction, &QAction::triggered, &data, &SyncthingFileItemActionStaticData::selectSyncthingConfig);
actions << configFileAction; actions << configFileAction;
@ -265,4 +269,12 @@ QList<QAction *> SyncthingFileItemAction::createActions(const KFileItemListPrope
return actions; return actions;
} }
bool SyncthingFileItemAction::eventFilter(QObject *object, QEvent *event)
{
if (object == m_parentWidget && event->type() == QEvent::PaletteChange) {
s_data.handlePaletteChanged(m_parentWidget->palette());
}
return false;
}
#include <syncthingfileitemaction.moc> #include <syncthingfileitemaction.moc>

View File

@ -20,8 +20,12 @@ public:
static QList<QAction *> createActions(const KFileItemListProperties &fileItemInfo, QObject *parent); static QList<QAction *> createActions(const KFileItemListProperties &fileItemInfo, QObject *parent);
static SyncthingFileItemActionStaticData &staticData(); static SyncthingFileItemActionStaticData &staticData();
protected:
bool eventFilter(QObject *object, QEvent *event) override;
private: private:
static SyncthingFileItemActionStaticData s_data; static SyncthingFileItemActionStaticData s_data;
QWidget *m_parentWidget;
}; };
inline SyncthingFileItemActionStaticData &SyncthingFileItemAction::staticData() inline SyncthingFileItemActionStaticData &SyncthingFileItemAction::staticData()

View File

@ -10,6 +10,7 @@
#include <c++utilities/io/ansiescapecodes.h> #include <c++utilities/io/ansiescapecodes.h>
#include <qtutilities/aboutdialog/aboutdialog.h> #include <qtutilities/aboutdialog/aboutdialog.h>
#include <qtutilities/misc/desktoputils.h>
#include <qtutilities/resources/resources.h> #include <qtutilities/resources/resources.h>
#include <QAction> #include <QAction>
@ -29,8 +30,7 @@ using namespace QtUtilities;
using namespace Data; using namespace Data;
SyncthingFileItemActionStaticData::SyncthingFileItemActionStaticData() SyncthingFileItemActionStaticData::SyncthingFileItemActionStaticData()
: m_useBrightCustomColors(false) : m_initialized(false)
, m_initialized(false)
{ {
} }
@ -59,10 +59,6 @@ void SyncthingFileItemActionStaticData::initialize()
}(); }();
applySyncthingConfiguration(m_configFilePath, settingsFile.value(QStringLiteral("syncthingApiKey")).toString(), true); applySyncthingConfiguration(m_configFilePath, settingsFile.value(QStringLiteral("syncthingApiKey")).toString(), true);
// apply icon settings
applyBrightCustomColorsSetting(
m_useBrightCustomColors = settingsFile.value(QStringLiteral("useBrightCustomColors"), m_useBrightCustomColors).toBool(), true);
// prevent unnecessary API calls (for the purpose of the context menu) // prevent unnecessary API calls (for the purpose of the context menu)
m_connection.disablePolling(); m_connection.disablePolling();
@ -123,9 +119,9 @@ void SyncthingFileItemActionStaticData::selectSyncthingConfig()
} }
} }
void SyncthingFileItemActionStaticData::handleBrightCustomColorsChanged() void SyncthingFileItemActionStaticData::handlePaletteChanged(const QPalette &palette)
{ {
applyBrightCustomColorsSetting(qobject_cast<const QAction *>(QObject::sender())->isChecked(), false); applyBrightCustomColorsSetting(isPaletteDark(palette));
} }
void SyncthingFileItemActionStaticData::appendNoteToError(QString &errorMessage, const QString &newSyncthingConfigFilePath) const void SyncthingFileItemActionStaticData::appendNoteToError(QString &errorMessage, const QString &newSyncthingConfigFilePath) const
@ -204,7 +200,7 @@ bool SyncthingFileItemActionStaticData::applySyncthingConfiguration(
return true; return true;
} }
void SyncthingFileItemActionStaticData::applyBrightCustomColorsSetting(bool useBrightCustomColors, bool skipSavingConfig) void SyncthingFileItemActionStaticData::applyBrightCustomColorsSetting(bool useBrightCustomColors)
{ {
if (useBrightCustomColors) { if (useBrightCustomColors) {
static const auto settings = StatusIconSettings(StatusIconSettings::DarkTheme()); static const auto settings = StatusIconSettings(StatusIconSettings::DarkTheme());
@ -213,12 +209,6 @@ void SyncthingFileItemActionStaticData::applyBrightCustomColorsSetting(bool useB
static const auto settings = StatusIconSettings(StatusIconSettings::BrightTheme()); static const auto settings = StatusIconSettings(StatusIconSettings::BrightTheme());
IconManager::instance().applySettings(&settings); IconManager::instance().applySettings(&settings);
} }
// save new config persistently
if (!skipSavingConfig) {
QSettings settings(QSettings::IniFormat, QSettings::UserScope, QStringLiteral(PROJECT_NAME));
settings.setValue(QStringLiteral("useBrightCustomColors"), m_useBrightCustomColors = useBrightCustomColors);
}
} }
void SyncthingFileItemActionStaticData::setCurrentError(const QString &currentError) void SyncthingFileItemActionStaticData::setCurrentError(const QString &currentError)

View File

@ -12,7 +12,6 @@
class SyncthingFileItemActionStaticData : public QObject { class SyncthingFileItemActionStaticData : public QObject {
Q_OBJECT Q_OBJECT
Q_PROPERTY(QString configPath READ configPath) Q_PROPERTY(QString configPath READ configPath)
Q_PROPERTY(bool useBrightCustomColors READ isUsingBrightCustomColors)
Q_PROPERTY(QString currentError READ currentError WRITE setCurrentError NOTIFY currentErrorChanged RESET clearCurrentError) Q_PROPERTY(QString currentError READ currentError WRITE setCurrentError NOTIFY currentErrorChanged RESET clearCurrentError)
Q_PROPERTY(bool hasError READ hasError NOTIFY hasErrorChanged) Q_PROPERTY(bool hasError READ hasError NOTIFY hasErrorChanged)
Q_PROPERTY(bool initialized READ isInitialized) Q_PROPERTY(bool initialized READ isInitialized)
@ -22,7 +21,6 @@ public:
Data::SyncthingConnection &connection(); Data::SyncthingConnection &connection();
const Data::SyncthingConnection &connection() const; const Data::SyncthingConnection &connection() const;
const QString &configPath() const; const QString &configPath() const;
bool isUsingBrightCustomColors() const;
const QString &currentError() const; const QString &currentError() const;
bool hasError() const; bool hasError() const;
bool isInitialized() const; bool isInitialized() const;
@ -30,13 +28,13 @@ public:
public Q_SLOTS: public Q_SLOTS:
void initialize(); void initialize();
bool applySyncthingConfiguration(const QString &syncthingConfigFilePath, const QString &syncthingApiKey, bool skipSavingConfig); bool applySyncthingConfiguration(const QString &syncthingConfigFilePath, const QString &syncthingApiKey, bool skipSavingConfig);
void applyBrightCustomColorsSetting(bool useBrightCustomColors, bool skipSavingConfig); void applyBrightCustomColorsSetting(bool useBrightCustomColors);
void logConnectionStatus(); void logConnectionStatus();
void logConnectionError(const QString &errorMessage, Data::SyncthingErrorCategory errorCategory); void logConnectionError(const QString &errorMessage, Data::SyncthingErrorCategory errorCategory);
void rescanDir(const QString &dirId, const QString &relpath = QString()); void rescanDir(const QString &dirId, const QString &relpath = QString());
static void showAboutDialog(); static void showAboutDialog();
void selectSyncthingConfig(); void selectSyncthingConfig();
void handleBrightCustomColorsChanged(); void handlePaletteChanged(const QPalette &palette);
void setCurrentError(const QString &currentError); void setCurrentError(const QString &currentError);
void clearCurrentError(); void clearCurrentError();
@ -50,7 +48,6 @@ private:
Data::SyncthingConnection m_connection; Data::SyncthingConnection m_connection;
QString m_configFilePath; QString m_configFilePath;
QString m_currentError; QString m_currentError;
bool m_useBrightCustomColors;
bool m_initialized; bool m_initialized;
}; };
@ -69,11 +66,6 @@ inline const QString &SyncthingFileItemActionStaticData::configPath() const
return m_configFilePath; return m_configFilePath;
} }
inline bool SyncthingFileItemActionStaticData::isUsingBrightCustomColors() const
{
return m_useBrightCustomColors;
}
inline const QString &SyncthingFileItemActionStaticData::currentError() const inline const QString &SyncthingFileItemActionStaticData::currentError() const
{ {
return m_currentError; return m_currentError;

View File

@ -50,71 +50,66 @@
<context> <context>
<name>SyncthingFileItemAction</name> <name>SyncthingFileItemAction</name>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="144"/> <location filename="../syncthingfileitemaction.cpp" line="153"/>
<source>Rescan selected items</source> <source>Rescan selected items</source>
<translation>Znovu prohledat označené položky</translation> <translation>Znovu prohledat označené položky</translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="163"/> <location filename="../syncthingfileitemaction.cpp" line="172"/>
<source>Rescan selected directories</source> <source>Rescan selected directories</source>
<translation>Znovu prohledat označené adresáře</translation> <translation>Znovu prohledat označené adresáře</translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="176"/> <location filename="../syncthingfileitemaction.cpp" line="185"/>
<source>Resume selected directories</source> <source>Resume selected directories</source>
<translation>Pokračovat označené adresáře</translation> <translation>Pokračovat označené adresáře</translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="146"/> <location filename="../syncthingfileitemaction.cpp" line="155"/>
<location filename="../syncthingfileitemaction.cpp" line="163"/> <location filename="../syncthingfileitemaction.cpp" line="172"/>
<location filename="../syncthingfileitemaction.cpp" line="194"/> <location filename="../syncthingfileitemaction.cpp" line="203"/>
<source>Rescan &quot;%1&quot;</source> <source>Rescan &quot;%1&quot;</source>
<translation>Znovu prohledat %</translation> <translation>Znovu prohledat %</translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="179"/> <location filename="../syncthingfileitemaction.cpp" line="188"/>
<source>Pause selected directories</source> <source>Pause selected directories</source>
<translation>Pozastavit označené adresáře</translation> <translation>Pozastavit označené adresáře</translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="194"/> <location filename="../syncthingfileitemaction.cpp" line="203"/>
<source>Rescan containing directories</source> <source>Rescan containing directories</source>
<translation>Znovu prohledat obsažené adresáře</translation> <translation>Znovu prohledat obsažené adresáře</translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="207"/> <location filename="../syncthingfileitemaction.cpp" line="216"/>
<source>Resume containing directories</source> <source>Resume containing directories</source>
<translation>Pokračovat obsažené adresáře</translation> <translation>Pokračovat obsažené adresáře</translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="176"/> <location filename="../syncthingfileitemaction.cpp" line="185"/>
<location filename="../syncthingfileitemaction.cpp" line="207"/> <location filename="../syncthingfileitemaction.cpp" line="216"/>
<source>Resume &quot;%1&quot;</source> <source>Resume &quot;%1&quot;</source>
<translation>Pokračovat %1</translation> <translation>Pokračovat %1</translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="211"/> <location filename="../syncthingfileitemaction.cpp" line="220"/>
<source>Pause containing directories</source> <source>Pause containing directories</source>
<translation>Pozastavit obsažené adresáře</translation> <translation>Pozastavit obsažené adresáře</translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="179"/> <location filename="../syncthingfileitemaction.cpp" line="188"/>
<location filename="../syncthingfileitemaction.cpp" line="211"/> <location filename="../syncthingfileitemaction.cpp" line="220"/>
<source>Pause &quot;%1&quot;</source> <source>Pause &quot;%1&quot;</source>
<translation>Pozastavit %1</translation> <translation>Pozastavit %1</translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="251"/> <location filename="../syncthingfileitemaction.cpp" line="260"/>
<source>Use bright custom colors</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../syncthingfileitemaction.cpp" line="256"/>
<source>Select Syncthing config ...</source> <source>Select Syncthing config ...</source>
<translation>Vybrat nastavení pro Syncthing</translation> <translation>Vybrat nastavení pro Syncthing</translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="261"/> <location filename="../syncthingfileitemaction.cpp" line="265"/>
<source>About</source> <source>About</source>
<translation>O aplikaci</translation> <translation>O aplikaci</translation>
</message> </message>
@ -122,52 +117,52 @@
<context> <context>
<name>SyncthingFileItemActionStaticData</name> <name>SyncthingFileItemActionStaticData</name>
<message> <message>
<location filename="../syncthingfileitemactionstaticdata.cpp" line="88"/> <location filename="../syncthingfileitemactionstaticdata.cpp" line="84"/>
<source>Syncthing connection error</source> <source>Syncthing connection error</source>
<translation>Chyba spojení se Syncthing</translation> <translation>Chyba spojení se Syncthing</translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemactionstaticdata.cpp" line="112"/> <location filename="../syncthingfileitemactionstaticdata.cpp" line="108"/>
<source>About</source> <source>About</source>
<translation>O aplikaci</translation> <translation>O aplikaci</translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemactionstaticdata.cpp" line="120"/> <location filename="../syncthingfileitemactionstaticdata.cpp" line="116"/>
<source>Select Syncthing config file</source> <source>Select Syncthing config file</source>
<translation>Vybrat soubor s nastaveními pro Syncthing</translation> <translation>Vybrat soubor s nastaveními pro Syncthing</translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemactionstaticdata.cpp" line="146"/> <location filename="../syncthingfileitemactionstaticdata.cpp" line="142"/>
<source>Syncthing config file can not be automatically located</source> <source>Syncthing config file can not be automatically located</source>
<translation>Soubor s nastaveními pro Syncthing se nepodařilo nalézt automaticky</translation> <translation>Soubor s nastaveními pro Syncthing se nepodařilo nalézt automaticky</translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemactionstaticdata.cpp" line="153"/> <location filename="../syncthingfileitemactionstaticdata.cpp" line="149"/>
<source>Unable to load Syncthing config from &quot;%1&quot;</source> <source>Unable to load Syncthing config from &quot;%1&quot;</source>
<translation>Nedaří se načíst nastavení pro Syncthing z %1</translation> <translation>Nedaří se načíst nastavení pro Syncthing z %1</translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemactionstaticdata.cpp" line="162"/> <location filename="../syncthingfileitemactionstaticdata.cpp" line="158"/>
<source>Syncthing config from &quot;%1&quot; does not contain GUI address.</source> <source>Syncthing config from &quot;%1&quot; does not contain GUI address.</source>
<translation>Nastavení pro Syncthing z %1 neobsahují adresu GUI.</translation> <translation>Nastavení pro Syncthing z %1 neobsahují adresu GUI.</translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemactionstaticdata.cpp" line="174"/> <location filename="../syncthingfileitemactionstaticdata.cpp" line="170"/>
<source>Enter API key</source> <source>Enter API key</source>
<translation>Zadejte klíč k API</translation> <translation>Zadejte klíč k API</translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemactionstaticdata.cpp" line="174"/> <location filename="../syncthingfileitemactionstaticdata.cpp" line="170"/>
<source>The selected config file does not contain an API key. Please enter the API key manually:</source> <source>The selected config file does not contain an API key. Please enter the API key manually:</source>
<translation>Zvolený soubor s nastaveními neobsahuje klíč k API. Zadejte klíč ručně:</translation> <translation>Zvolený soubor s nastaveními neobsahuje klíč k API. Zadejte klíč ručně:</translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemactionstaticdata.cpp" line="176"/> <location filename="../syncthingfileitemactionstaticdata.cpp" line="172"/>
<source>No API key supplied for &quot;%1&quot;.</source> <source>No API key supplied for &quot;%1&quot;.</source>
<translation>Neposkytnut žádný klíč k API pro %1.</translation> <translation>Neposkytnut žádný klíč k API pro %1.</translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemactionstaticdata.cpp" line="135"/> <location filename="../syncthingfileitemactionstaticdata.cpp" line="131"/>
<source>(still using config from &quot;%1&quot;)</source> <source>(still using config from &quot;%1&quot;)</source>
<translation>(pořád je používáno nastavení z %1)</translation> <translation>(pořád je používáno nastavení z %1)</translation>
</message> </message>

View File

@ -50,71 +50,70 @@
<context> <context>
<name>SyncthingFileItemAction</name> <name>SyncthingFileItemAction</name>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="144"/> <location filename="../syncthingfileitemaction.cpp" line="153"/>
<source>Rescan selected items</source> <source>Rescan selected items</source>
<translation>Auswahl neu scannen</translation> <translation>Auswahl neu scannen</translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="163"/> <location filename="../syncthingfileitemaction.cpp" line="172"/>
<source>Rescan selected directories</source> <source>Rescan selected directories</source>
<translation>Ausgewählte Verzeichnisse neu scannen</translation> <translation>Ausgewählte Verzeichnisse neu scannen</translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="176"/> <location filename="../syncthingfileitemaction.cpp" line="185"/>
<source>Resume selected directories</source> <source>Resume selected directories</source>
<translation>Ausgewählte verzeichnisse fortsetzen</translation> <translation>Ausgewählte verzeichnisse fortsetzen</translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="146"/> <location filename="../syncthingfileitemaction.cpp" line="155"/>
<location filename="../syncthingfileitemaction.cpp" line="163"/> <location filename="../syncthingfileitemaction.cpp" line="172"/>
<location filename="../syncthingfileitemaction.cpp" line="194"/> <location filename="../syncthingfileitemaction.cpp" line="203"/>
<source>Rescan &quot;%1&quot;</source> <source>Rescan &quot;%1&quot;</source>
<translation>&quot;%1&quot; neu scannen</translation> <translation>&quot;%1&quot; neu scannen</translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="179"/> <location filename="../syncthingfileitemaction.cpp" line="188"/>
<source>Pause selected directories</source> <source>Pause selected directories</source>
<translation>Ausgewählte Verzeichnisse pausieren</translation> <translation>Ausgewählte Verzeichnisse pausieren</translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="194"/> <location filename="../syncthingfileitemaction.cpp" line="203"/>
<source>Rescan containing directories</source> <source>Rescan containing directories</source>
<translation>Beinhaltendes Verzeichnis neu scannen</translation> <translation>Beinhaltendes Verzeichnis neu scannen</translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="207"/> <location filename="../syncthingfileitemaction.cpp" line="216"/>
<source>Resume containing directories</source> <source>Resume containing directories</source>
<translation>Beinhaltendes Verzeichnis fortsetzen</translation> <translation>Beinhaltendes Verzeichnis fortsetzen</translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="176"/> <location filename="../syncthingfileitemaction.cpp" line="185"/>
<location filename="../syncthingfileitemaction.cpp" line="207"/> <location filename="../syncthingfileitemaction.cpp" line="216"/>
<source>Resume &quot;%1&quot;</source> <source>Resume &quot;%1&quot;</source>
<translation>&quot;%1&quot; fortsetzen (in &quot;%1&quot;)</translation> <translation>&quot;%1&quot; fortsetzen (in &quot;%1&quot;)</translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="211"/> <location filename="../syncthingfileitemaction.cpp" line="220"/>
<source>Pause containing directories</source> <source>Pause containing directories</source>
<translation>Beinhaltendes Verzeichnis pausieren</translation> <translation>Beinhaltendes Verzeichnis pausieren</translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="179"/> <location filename="../syncthingfileitemaction.cpp" line="188"/>
<location filename="../syncthingfileitemaction.cpp" line="211"/> <location filename="../syncthingfileitemaction.cpp" line="220"/>
<source>Pause &quot;%1&quot;</source> <source>Pause &quot;%1&quot;</source>
<translation>&quot;%1&quot; pausieren (in &quot;%1&quot;)</translation> <translation>&quot;%1&quot; pausieren (in &quot;%1&quot;)</translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="251"/>
<source>Use bright custom colors</source> <source>Use bright custom colors</source>
<translation>Helle Farben verwenden</translation> <translation type="vanished">Helle Farben verwenden</translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="256"/> <location filename="../syncthingfileitemaction.cpp" line="260"/>
<source>Select Syncthing config ...</source> <source>Select Syncthing config ...</source>
<translation>Syncthing-Konfiguration wählen ...</translation> <translation>Syncthing-Konfiguration wählen ...</translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="261"/> <location filename="../syncthingfileitemaction.cpp" line="265"/>
<source>About</source> <source>About</source>
<translation>Über</translation> <translation>Über</translation>
</message> </message>
@ -122,52 +121,52 @@
<context> <context>
<name>SyncthingFileItemActionStaticData</name> <name>SyncthingFileItemActionStaticData</name>
<message> <message>
<location filename="../syncthingfileitemactionstaticdata.cpp" line="88"/> <location filename="../syncthingfileitemactionstaticdata.cpp" line="84"/>
<source>Syncthing connection error</source> <source>Syncthing connection error</source>
<translation>Fehler beim Verbinden mit Syncthing</translation> <translation>Fehler beim Verbinden mit Syncthing</translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemactionstaticdata.cpp" line="112"/> <location filename="../syncthingfileitemactionstaticdata.cpp" line="108"/>
<source>About</source> <source>About</source>
<translation>Über</translation> <translation>Über</translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemactionstaticdata.cpp" line="120"/> <location filename="../syncthingfileitemactionstaticdata.cpp" line="116"/>
<source>Select Syncthing config file</source> <source>Select Syncthing config file</source>
<translation>Syncthing-Konfigurationsdatei auswählen</translation> <translation>Syncthing-Konfigurationsdatei auswählen</translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemactionstaticdata.cpp" line="146"/> <location filename="../syncthingfileitemactionstaticdata.cpp" line="142"/>
<source>Syncthing config file can not be automatically located</source> <source>Syncthing config file can not be automatically located</source>
<translation>Syncthing-Konfigurationsdatei kann nicht automatisch gefunden werden</translation> <translation>Syncthing-Konfigurationsdatei kann nicht automatisch gefunden werden</translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemactionstaticdata.cpp" line="153"/> <location filename="../syncthingfileitemactionstaticdata.cpp" line="149"/>
<source>Unable to load Syncthing config from &quot;%1&quot;</source> <source>Unable to load Syncthing config from &quot;%1&quot;</source>
<translation>Fehler beim Laden der Syncthing-Konfiguration von &quot;%1&quot;</translation> <translation>Fehler beim Laden der Syncthing-Konfiguration von &quot;%1&quot;</translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemactionstaticdata.cpp" line="162"/> <location filename="../syncthingfileitemactionstaticdata.cpp" line="158"/>
<source>Syncthing config from &quot;%1&quot; does not contain GUI address.</source> <source>Syncthing config from &quot;%1&quot; does not contain GUI address.</source>
<translation>Die Syncthing-Konfiguration &quot;%1&quot; beinhaltet keine GUI-Adresse.</translation> <translation>Die Syncthing-Konfiguration &quot;%1&quot; beinhaltet keine GUI-Adresse.</translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemactionstaticdata.cpp" line="174"/> <location filename="../syncthingfileitemactionstaticdata.cpp" line="170"/>
<source>Enter API key</source> <source>Enter API key</source>
<translation>API-Schlüssel eingeben</translation> <translation>API-Schlüssel eingeben</translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemactionstaticdata.cpp" line="174"/> <location filename="../syncthingfileitemactionstaticdata.cpp" line="170"/>
<source>The selected config file does not contain an API key. Please enter the API key manually:</source> <source>The selected config file does not contain an API key. Please enter the API key manually:</source>
<translation>Die gewählte Konfiguration enthält keinen API-Schlüssel. Gib den API-Schlüssel manuell ein:</translation> <translation>Die gewählte Konfiguration enthält keinen API-Schlüssel. Gib den API-Schlüssel manuell ein:</translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemactionstaticdata.cpp" line="176"/> <location filename="../syncthingfileitemactionstaticdata.cpp" line="172"/>
<source>No API key supplied for &quot;%1&quot;.</source> <source>No API key supplied for &quot;%1&quot;.</source>
<translation>Kein API-Schlüssel für die Konfiguration &quot;%1&quot; angegeben.</translation> <translation>Kein API-Schlüssel für die Konfiguration &quot;%1&quot; angegeben.</translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemactionstaticdata.cpp" line="135"/> <location filename="../syncthingfileitemactionstaticdata.cpp" line="131"/>
<source>(still using config from &quot;%1&quot;)</source> <source>(still using config from &quot;%1&quot;)</source>
<translation>(verwende weiterhin &quot;%1&quot;)</translation> <translation>(verwende weiterhin &quot;%1&quot;)</translation>
</message> </message>

View File

@ -50,71 +50,66 @@
<context> <context>
<name>SyncthingFileItemAction</name> <name>SyncthingFileItemAction</name>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="261"/> <location filename="../syncthingfileitemaction.cpp" line="265"/>
<source>About</source> <source>About</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="144"/> <location filename="../syncthingfileitemaction.cpp" line="153"/>
<source>Rescan selected items</source> <source>Rescan selected items</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="163"/> <location filename="../syncthingfileitemaction.cpp" line="172"/>
<source>Rescan selected directories</source> <source>Rescan selected directories</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="146"/> <location filename="../syncthingfileitemaction.cpp" line="155"/>
<location filename="../syncthingfileitemaction.cpp" line="163"/> <location filename="../syncthingfileitemaction.cpp" line="172"/>
<location filename="../syncthingfileitemaction.cpp" line="194"/> <location filename="../syncthingfileitemaction.cpp" line="203"/>
<source>Rescan &quot;%1&quot;</source> <source>Rescan &quot;%1&quot;</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="176"/> <location filename="../syncthingfileitemaction.cpp" line="185"/>
<source>Resume selected directories</source> <source>Resume selected directories</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="179"/> <location filename="../syncthingfileitemaction.cpp" line="188"/>
<source>Pause selected directories</source> <source>Pause selected directories</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="194"/> <location filename="../syncthingfileitemaction.cpp" line="203"/>
<source>Rescan containing directories</source> <source>Rescan containing directories</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="207"/> <location filename="../syncthingfileitemaction.cpp" line="216"/>
<source>Resume containing directories</source> <source>Resume containing directories</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="176"/> <location filename="../syncthingfileitemaction.cpp" line="185"/>
<location filename="../syncthingfileitemaction.cpp" line="207"/> <location filename="../syncthingfileitemaction.cpp" line="216"/>
<source>Resume &quot;%1&quot;</source> <source>Resume &quot;%1&quot;</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="211"/> <location filename="../syncthingfileitemaction.cpp" line="220"/>
<source>Pause containing directories</source> <source>Pause containing directories</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="179"/> <location filename="../syncthingfileitemaction.cpp" line="188"/>
<location filename="../syncthingfileitemaction.cpp" line="211"/> <location filename="../syncthingfileitemaction.cpp" line="220"/>
<source>Pause &quot;%1&quot;</source> <source>Pause &quot;%1&quot;</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="251"/> <location filename="../syncthingfileitemaction.cpp" line="260"/>
<source>Use bright custom colors</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../syncthingfileitemaction.cpp" line="256"/>
<source>Select Syncthing config ...</source> <source>Select Syncthing config ...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -122,52 +117,52 @@
<context> <context>
<name>SyncthingFileItemActionStaticData</name> <name>SyncthingFileItemActionStaticData</name>
<message> <message>
<location filename="../syncthingfileitemactionstaticdata.cpp" line="88"/> <location filename="../syncthingfileitemactionstaticdata.cpp" line="84"/>
<source>Syncthing connection error</source> <source>Syncthing connection error</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemactionstaticdata.cpp" line="112"/> <location filename="../syncthingfileitemactionstaticdata.cpp" line="108"/>
<source>About</source> <source>About</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemactionstaticdata.cpp" line="120"/> <location filename="../syncthingfileitemactionstaticdata.cpp" line="116"/>
<source>Select Syncthing config file</source> <source>Select Syncthing config file</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemactionstaticdata.cpp" line="146"/> <location filename="../syncthingfileitemactionstaticdata.cpp" line="142"/>
<source>Syncthing config file can not be automatically located</source> <source>Syncthing config file can not be automatically located</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemactionstaticdata.cpp" line="153"/> <location filename="../syncthingfileitemactionstaticdata.cpp" line="149"/>
<source>Unable to load Syncthing config from &quot;%1&quot;</source> <source>Unable to load Syncthing config from &quot;%1&quot;</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemactionstaticdata.cpp" line="162"/> <location filename="../syncthingfileitemactionstaticdata.cpp" line="158"/>
<source>Syncthing config from &quot;%1&quot; does not contain GUI address.</source> <source>Syncthing config from &quot;%1&quot; does not contain GUI address.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemactionstaticdata.cpp" line="174"/> <location filename="../syncthingfileitemactionstaticdata.cpp" line="170"/>
<source>Enter API key</source> <source>Enter API key</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemactionstaticdata.cpp" line="174"/> <location filename="../syncthingfileitemactionstaticdata.cpp" line="170"/>
<source>The selected config file does not contain an API key. Please enter the API key manually:</source> <source>The selected config file does not contain an API key. Please enter the API key manually:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemactionstaticdata.cpp" line="176"/> <location filename="../syncthingfileitemactionstaticdata.cpp" line="172"/>
<source>No API key supplied for &quot;%1&quot;.</source> <source>No API key supplied for &quot;%1&quot;.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemactionstaticdata.cpp" line="135"/> <location filename="../syncthingfileitemactionstaticdata.cpp" line="131"/>
<source>(still using config from &quot;%1&quot;)</source> <source>(still using config from &quot;%1&quot;)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

View File

@ -49,71 +49,70 @@
<context> <context>
<name>SyncthingFileItemAction</name> <name>SyncthingFileItemAction</name>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="144"/> <location filename="../syncthingfileitemaction.cpp" line="153"/>
<source>Rescan selected items</source> <source>Rescan selected items</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="146"/> <location filename="../syncthingfileitemaction.cpp" line="155"/>
<location filename="../syncthingfileitemaction.cpp" line="163"/> <location filename="../syncthingfileitemaction.cpp" line="172"/>
<location filename="../syncthingfileitemaction.cpp" line="194"/> <location filename="../syncthingfileitemaction.cpp" line="203"/>
<source>Rescan &quot;%1&quot;</source> <source>Rescan &quot;%1&quot;</source>
<translation> &quot;%1&quot;</translation> <translation> &quot;%1&quot;</translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="163"/> <location filename="../syncthingfileitemaction.cpp" line="172"/>
<source>Rescan selected directories</source> <source>Rescan selected directories</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="176"/> <location filename="../syncthingfileitemaction.cpp" line="185"/>
<location filename="../syncthingfileitemaction.cpp" line="207"/> <location filename="../syncthingfileitemaction.cpp" line="216"/>
<source>Resume &quot;%1&quot;</source> <source>Resume &quot;%1&quot;</source>
<translation> &quot;%1&quot;</translation> <translation> &quot;%1&quot;</translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="176"/> <location filename="../syncthingfileitemaction.cpp" line="185"/>
<source>Resume selected directories</source> <source>Resume selected directories</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="179"/> <location filename="../syncthingfileitemaction.cpp" line="188"/>
<location filename="../syncthingfileitemaction.cpp" line="211"/> <location filename="../syncthingfileitemaction.cpp" line="220"/>
<source>Pause &quot;%1&quot;</source> <source>Pause &quot;%1&quot;</source>
<translation> &quot;%1&quot;</translation> <translation> &quot;%1&quot;</translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="179"/> <location filename="../syncthingfileitemaction.cpp" line="188"/>
<source>Pause selected directories</source> <source>Pause selected directories</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="194"/> <location filename="../syncthingfileitemaction.cpp" line="203"/>
<source>Rescan containing directories</source> <source>Rescan containing directories</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="207"/> <location filename="../syncthingfileitemaction.cpp" line="216"/>
<source>Resume containing directories</source> <source>Resume containing directories</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="211"/> <location filename="../syncthingfileitemaction.cpp" line="220"/>
<source>Pause containing directories</source> <source>Pause containing directories</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="251"/>
<source>Use bright custom colors</source> <source>Use bright custom colors</source>
<translation>使</translation> <translation type="vanished">使</translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="256"/> <location filename="../syncthingfileitemaction.cpp" line="260"/>
<source>Select Syncthing config ...</source> <source>Select Syncthing config ...</source>
<translation> Syncthing ...</translation> <translation> Syncthing ...</translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemaction.cpp" line="261"/> <location filename="../syncthingfileitemaction.cpp" line="265"/>
<source>About</source> <source>About</source>
<translation></translation> <translation></translation>
</message> </message>
@ -121,52 +120,52 @@
<context> <context>
<name>SyncthingFileItemActionStaticData</name> <name>SyncthingFileItemActionStaticData</name>
<message> <message>
<location filename="../syncthingfileitemactionstaticdata.cpp" line="88"/> <location filename="../syncthingfileitemactionstaticdata.cpp" line="84"/>
<source>Syncthing connection error</source> <source>Syncthing connection error</source>
<translation>Syncthing </translation> <translation>Syncthing </translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemactionstaticdata.cpp" line="112"/> <location filename="../syncthingfileitemactionstaticdata.cpp" line="108"/>
<source>About</source> <source>About</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemactionstaticdata.cpp" line="120"/> <location filename="../syncthingfileitemactionstaticdata.cpp" line="116"/>
<source>Select Syncthing config file</source> <source>Select Syncthing config file</source>
<translation> Syncthing </translation> <translation> Syncthing </translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemactionstaticdata.cpp" line="135"/> <location filename="../syncthingfileitemactionstaticdata.cpp" line="131"/>
<source>(still using config from &quot;%1&quot;)</source> <source>(still using config from &quot;%1&quot;)</source>
<translation>使 &quot;%1&quot; </translation> <translation>使 &quot;%1&quot; </translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemactionstaticdata.cpp" line="146"/> <location filename="../syncthingfileitemactionstaticdata.cpp" line="142"/>
<source>Syncthing config file can not be automatically located</source> <source>Syncthing config file can not be automatically located</source>
<translation>Syncthing </translation> <translation>Syncthing </translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemactionstaticdata.cpp" line="153"/> <location filename="../syncthingfileitemactionstaticdata.cpp" line="149"/>
<source>Unable to load Syncthing config from &quot;%1&quot;</source> <source>Unable to load Syncthing config from &quot;%1&quot;</source>
<translation> &quot;%1&quot; Syncthing </translation> <translation> &quot;%1&quot; Syncthing </translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemactionstaticdata.cpp" line="162"/> <location filename="../syncthingfileitemactionstaticdata.cpp" line="158"/>
<source>Syncthing config from &quot;%1&quot; does not contain GUI address.</source> <source>Syncthing config from &quot;%1&quot; does not contain GUI address.</source>
<translation>&quot;%1&quot; Syncthing GUI </translation> <translation>&quot;%1&quot; Syncthing GUI </translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemactionstaticdata.cpp" line="174"/> <location filename="../syncthingfileitemactionstaticdata.cpp" line="170"/>
<source>Enter API key</source> <source>Enter API key</source>
<translation> API </translation> <translation> API </translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemactionstaticdata.cpp" line="174"/> <location filename="../syncthingfileitemactionstaticdata.cpp" line="170"/>
<source>The selected config file does not contain an API key. Please enter the API key manually:</source> <source>The selected config file does not contain an API key. Please enter the API key manually:</source>
<translation> API API </translation> <translation> API API </translation>
</message> </message>
<message> <message>
<location filename="../syncthingfileitemactionstaticdata.cpp" line="176"/> <location filename="../syncthingfileitemactionstaticdata.cpp" line="172"/>
<source>No API key supplied for &quot;%1&quot;.</source> <source>No API key supplied for &quot;%1&quot;.</source>
<translation> &quot;%1 &quot; API </translation> <translation> &quot;%1 &quot; API </translation>
</message> </message>