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})
# 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()
# find backend libraries

View File

@ -5,11 +5,14 @@
#include <syncthingmodel/syncthingicons.h>
#include <qtutilities/misc/desktoputils.h>
#include <KFileItem>
#include <KPluginFactory>
#include <KPluginLoader>
#include <QAction>
#include <QEvent>
#include <functional>
#include <utility>
@ -42,6 +45,7 @@ SyncthingFileItemActionStaticData SyncthingFileItemAction::s_data;
SyncthingFileItemAction::SyncthingFileItemAction(QObject *parent, const QVariantList &)
: KAbstractFileItemActionPlugin(parent)
, m_parentWidget(nullptr)
{
s_data.initialize();
}
@ -59,6 +63,11 @@ QList<QAction *> SyncthingFileItemAction::actions(const KFileItemListProperties
return topLevelActions;
}
if ((m_parentWidget = parentWidget)) {
s_data.applyBrightCustomColorsSetting(QtUtilities::isPaletteDark(parentWidget->palette()));
parentWidget->installEventFilter(this);
}
topLevelActions << new SyncthingMenuAction(fileItemInfo, subActions, this);
return topLevelActions;
}
@ -248,11 +257,6 @@ QList<QAction *> SyncthingFileItemAction::createActions(const KFileItemListPrope
actions << errorAction;
// 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);
connect(configFileAction, &QAction::triggered, &data, &SyncthingFileItemActionStaticData::selectSyncthingConfig);
actions << configFileAction;
@ -265,4 +269,12 @@ QList<QAction *> SyncthingFileItemAction::createActions(const KFileItemListPrope
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>

View File

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

View File

@ -10,6 +10,7 @@
#include <c++utilities/io/ansiescapecodes.h>
#include <qtutilities/aboutdialog/aboutdialog.h>
#include <qtutilities/misc/desktoputils.h>
#include <qtutilities/resources/resources.h>
#include <QAction>
@ -29,8 +30,7 @@ using namespace QtUtilities;
using namespace Data;
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);
// 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)
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
@ -204,7 +200,7 @@ bool SyncthingFileItemActionStaticData::applySyncthingConfiguration(
return true;
}
void SyncthingFileItemActionStaticData::applyBrightCustomColorsSetting(bool useBrightCustomColors, bool skipSavingConfig)
void SyncthingFileItemActionStaticData::applyBrightCustomColorsSetting(bool useBrightCustomColors)
{
if (useBrightCustomColors) {
static const auto settings = StatusIconSettings(StatusIconSettings::DarkTheme());
@ -213,12 +209,6 @@ void SyncthingFileItemActionStaticData::applyBrightCustomColorsSetting(bool useB
static const auto settings = StatusIconSettings(StatusIconSettings::BrightTheme());
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)

View File

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

View File

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

View File

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

View File

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

View File

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