Handle case when not connected in KIO plugin
This commit is contained in:
parent
6c51a470b7
commit
2635cde225
|
@ -9,7 +9,6 @@
|
||||||
#include <qtutilities/resources/resources.h>
|
#include <qtutilities/resources/resources.h>
|
||||||
#include <qtutilities/aboutdialog/aboutdialog.h>
|
#include <qtutilities/aboutdialog/aboutdialog.h>
|
||||||
|
|
||||||
#include <KFileItemListProperties>
|
|
||||||
#include <KFileItem>
|
#include <KFileItem>
|
||||||
#include <KPluginFactory>
|
#include <KPluginFactory>
|
||||||
#include <KPluginLoader>
|
#include <KPluginLoader>
|
||||||
|
@ -51,6 +50,44 @@ SyncthingItem::SyncthingItem(const SyncthingDir *dir, const QString &path) :
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SyncthingMenuAction::SyncthingMenuAction(const KFileItemListProperties &properties, const QList<QAction *> &actions, QWidget *parentWidget) :
|
||||||
|
QAction(parentWidget),
|
||||||
|
m_properties(properties)
|
||||||
|
{
|
||||||
|
if(!actions.isEmpty()) {
|
||||||
|
auto *menu = new QMenu(parentWidget);
|
||||||
|
menu->addActions(actions);
|
||||||
|
setMenu(menu);
|
||||||
|
}
|
||||||
|
updateStatus(SyncthingFileItemAction::connection().status());
|
||||||
|
}
|
||||||
|
|
||||||
|
void SyncthingMenuAction::updateStatus(SyncthingStatus status)
|
||||||
|
{
|
||||||
|
if(status != SyncthingStatus::Disconnected && status != SyncthingStatus::Reconnecting && status != SyncthingStatus::BeingDestroyed) {
|
||||||
|
setText(tr("Syncthing"));
|
||||||
|
setIcon(statusIcons().scanninig);
|
||||||
|
if(!menu()) {
|
||||||
|
const QList<QAction *> actions = SyncthingFileItemAction::createActions(m_properties, parentWidget());
|
||||||
|
if(!actions.isEmpty()) {
|
||||||
|
auto *menu = new QMenu(parentWidget());
|
||||||
|
menu->addActions(actions);
|
||||||
|
setMenu(menu);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if(status != SyncthingStatus::Reconnecting) {
|
||||||
|
SyncthingFileItemAction::connection().connect();
|
||||||
|
}
|
||||||
|
setText(tr("Syncthing - connecting"));
|
||||||
|
setIcon(statusIcons().disconnected);
|
||||||
|
if(QMenu *menu = this->menu()) {
|
||||||
|
setMenu(nullptr);
|
||||||
|
delete menu;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
SyncthingConnection SyncthingFileItemAction::s_connection;
|
SyncthingConnection SyncthingFileItemAction::s_connection;
|
||||||
|
|
||||||
SyncthingFileItemAction::SyncthingFileItemAction(QObject *parent, const QVariantList &) :
|
SyncthingFileItemAction::SyncthingFileItemAction(QObject *parent, const QVariantList &) :
|
||||||
|
@ -100,10 +137,60 @@ SyncthingFileItemAction::SyncthingFileItemAction(QObject *parent, const QVariant
|
||||||
|
|
||||||
QList<QAction *> SyncthingFileItemAction::actions(const KFileItemListProperties &fileItemInfo, QWidget *parentWidget)
|
QList<QAction *> SyncthingFileItemAction::actions(const KFileItemListProperties &fileItemInfo, QWidget *parentWidget)
|
||||||
{
|
{
|
||||||
|
// handle case when not connected yet
|
||||||
|
if(!s_connection.isConnected()) {
|
||||||
|
s_connection.connect();
|
||||||
|
auto *menuAction = new SyncthingMenuAction(fileItemInfo, QList<QAction *>(), parentWidget);
|
||||||
|
connect(&s_connection, &SyncthingConnection::statusChanged, menuAction, &SyncthingMenuAction::updateStatus);
|
||||||
|
return QList<QAction *>() << menuAction;
|
||||||
|
}
|
||||||
|
|
||||||
|
QList<QAction *> actions = createActions(fileItemInfo, parentWidget);
|
||||||
|
// don't show anything if relevant actions could be determined
|
||||||
|
if(actions.isEmpty()) {
|
||||||
|
return actions;
|
||||||
|
}
|
||||||
|
|
||||||
|
return QList<QAction*>() << new SyncthingMenuAction(fileItemInfo, actions, parentWidget);
|
||||||
|
}
|
||||||
|
|
||||||
|
SyncthingConnection &SyncthingFileItemAction::connection()
|
||||||
|
{
|
||||||
|
return s_connection;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SyncthingFileItemAction::logConnectionStatus()
|
||||||
|
{
|
||||||
|
cerr << "Syncthing connection status changed to: " << s_connection.statusText().toLocal8Bit().data() << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SyncthingFileItemAction::logConnectionError(const QString &errorMessage)
|
||||||
|
{
|
||||||
|
cerr << "Syncthing connection error: " << errorMessage.toLocal8Bit().data() << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SyncthingFileItemAction::rescanDir(const QString &dirId, const QString &relpath)
|
||||||
|
{
|
||||||
|
s_connection.rescan(dirId, relpath);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SyncthingFileItemAction::showAboutDialog()
|
||||||
|
{
|
||||||
|
auto *aboutDialog = new AboutDialog(nullptr, QStringLiteral(APP_NAME), QStringLiteral(APP_AUTHOR "\nSyncthing icons from Syncthing project"), QStringLiteral(APP_VERSION), QStringLiteral(APP_URL), QStringLiteral(APP_DESCRIPTION), QImage(statusIcons().scanninig.pixmap(128).toImage()));
|
||||||
|
aboutDialog->setWindowTitle(tr("About") + QStringLiteral(" - " APP_NAME));
|
||||||
|
aboutDialog->setWindowIcon(QIcon::fromTheme(QStringLiteral("syncthingtray")));
|
||||||
|
aboutDialog->setWindowFlags(static_cast<Qt::WindowFlags>(aboutDialog->windowFlags() | Qt::WA_DeleteOnClose));
|
||||||
|
aboutDialog->show();
|
||||||
|
}
|
||||||
|
|
||||||
|
QList<QAction *> SyncthingFileItemAction::createActions(const KFileItemListProperties &fileItemInfo, QWidget *parentWidget)
|
||||||
|
{
|
||||||
|
QList<QAction*> actions;
|
||||||
|
|
||||||
// check whether any directories are known
|
// check whether any directories are known
|
||||||
const auto &dirs = s_connection.dirInfo();
|
const auto &dirs = s_connection.dirInfo();
|
||||||
if(dirs.empty()) {
|
if(dirs.empty()) {
|
||||||
return QList<QAction*>();
|
return actions;
|
||||||
}
|
}
|
||||||
|
|
||||||
// get all paths
|
// get all paths
|
||||||
|
@ -148,7 +235,6 @@ QList<QAction *> SyncthingFileItemAction::actions(const KFileItemListProperties
|
||||||
}
|
}
|
||||||
|
|
||||||
// add actions for the selected items itself
|
// add actions for the selected items itself
|
||||||
QList<QAction*> actions;
|
|
||||||
if(!detectedItems.isEmpty()) {
|
if(!detectedItems.isEmpty()) {
|
||||||
actions << new QAction(
|
actions << new QAction(
|
||||||
QIcon::fromTheme(QStringLiteral("view-refresh")),
|
QIcon::fromTheme(QStringLiteral("view-refresh")),
|
||||||
|
@ -266,24 +352,17 @@ QList<QAction *> SyncthingFileItemAction::actions(const KFileItemListProperties
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// don't show anything if relevant actions could be determined
|
// don't add any further actions if no relevant actions could be determined so far
|
||||||
if(actions.isEmpty()) {
|
if(actions.isEmpty()) {
|
||||||
return actions;
|
return actions;
|
||||||
}
|
}
|
||||||
|
|
||||||
// create the menu
|
|
||||||
QAction *menuAction = new QAction(statusIcons().scanninig, tr("Syncthing"), this);
|
|
||||||
QMenu *menu = new QMenu(parentWidget);
|
|
||||||
menuAction->setMenu(menu);
|
|
||||||
menu->addActions(actions);
|
|
||||||
|
|
||||||
// add action to show further information about directory if the selection is only about
|
// add action to show further information about directory if the selection is only about
|
||||||
// one particular Syncthing dir
|
// one particular Syncthing dir
|
||||||
if(detectedDirs.size() + containingDirs.size() == 1) {
|
if(detectedDirs.size() + containingDirs.size() == 1) {
|
||||||
QAction *infoAction = menu->addSeparator();
|
QAction *infoAction = new QAction(QIcon::fromTheme(QStringLiteral("dialog-information")), tr("Directory info"), parentWidget);
|
||||||
infoAction->setIcon(QIcon::fromTheme(QStringLiteral("dialog-information")));
|
infoAction->setSeparator(true);
|
||||||
infoAction->setText(tr("Directory info"));
|
QAction *statusAction = new QAction(tr("Status: ") + lastDir->statusString());
|
||||||
QAction *statusAction = menu->addAction(tr("Status: ") + lastDir->statusString());
|
|
||||||
if(lastDir->paused && lastDir->status != SyncthingDirStatus::OutOfSync) {
|
if(lastDir->paused && lastDir->status != SyncthingDirStatus::OutOfSync) {
|
||||||
statusAction->setIcon(statusIcons().pause);
|
statusAction->setIcon(statusIcons().pause);
|
||||||
} else {
|
} else {
|
||||||
|
@ -306,41 +385,21 @@ QList<QAction *> SyncthingFileItemAction::actions(const KFileItemListProperties
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
menu->addAction(QIcon::fromTheme(QStringLiteral("accept_time_event")),
|
actions << infoAction << statusAction;
|
||||||
tr("Last scan time: ") + agoString(lastDir->lastScanTime));
|
|
||||||
menu->addAction(tr("Rescan interval: %1 seconds").arg(lastDir->rescanInterval));
|
actions << new QAction(QIcon::fromTheme(QStringLiteral("accept_time_event")),
|
||||||
|
tr("Last scan time: ") + agoString(lastDir->lastScanTime), parentWidget);
|
||||||
|
actions << new QAction(tr("Rescan interval: %1 seconds").arg(lastDir->rescanInterval), parentWidget);
|
||||||
}
|
}
|
||||||
|
|
||||||
// about about action
|
// about about action
|
||||||
menu->addSeparator();
|
QAction *separator = new QAction(parentWidget);
|
||||||
menu->addAction(QIcon::fromTheme(QStringLiteral("help-about")), tr("About"), &SyncthingFileItemAction::showAboutDialog);
|
separator->setSeparator(true);
|
||||||
|
QAction *aboutAction = new QAction(QIcon::fromTheme(QStringLiteral("help-about")), tr("About"));
|
||||||
|
connect(aboutAction, &QAction::triggered, &SyncthingFileItemAction::showAboutDialog);
|
||||||
|
actions << separator << aboutAction;
|
||||||
|
|
||||||
return QList<QAction*>() << menuAction;
|
return actions;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SyncthingFileItemAction::logConnectionStatus()
|
|
||||||
{
|
|
||||||
cerr << "Syncthing connection status changed to: " << s_connection.statusText().toLocal8Bit().data() << endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
void SyncthingFileItemAction::logConnectionError(const QString &errorMessage)
|
|
||||||
{
|
|
||||||
cerr << "Syncthing connection error: " << errorMessage.toLocal8Bit().data() << endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
void SyncthingFileItemAction::rescanDir(const QString &dirId, const QString &relpath)
|
|
||||||
{
|
|
||||||
s_connection.rescan(dirId, relpath);
|
|
||||||
}
|
|
||||||
|
|
||||||
void SyncthingFileItemAction::showAboutDialog()
|
|
||||||
{
|
|
||||||
auto *aboutDialog = new AboutDialog(nullptr, QStringLiteral(APP_NAME), QStringLiteral(APP_AUTHOR "\nSyncthing icons from Syncthing project"), QStringLiteral(APP_VERSION), QStringLiteral(APP_URL), QStringLiteral(APP_DESCRIPTION), QImage(statusIcons().scanninig.pixmap(128).toImage()));
|
|
||||||
aboutDialog->setWindowTitle(tr("About") + QStringLiteral(" - " APP_NAME));
|
|
||||||
aboutDialog->setWindowIcon(QIcon::fromTheme(QStringLiteral("syncthingtray")));
|
|
||||||
aboutDialog->setWindowFlags(static_cast<Qt::WindowFlags>(aboutDialog->windowFlags() | Qt::WA_DeleteOnClose));
|
|
||||||
aboutDialog->show();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#include <syncthingfileitemaction.moc>
|
#include <syncthingfileitemaction.moc>
|
||||||
|
|
|
@ -4,12 +4,28 @@
|
||||||
#include "../connector/syncthingconnection.h"
|
#include "../connector/syncthingconnection.h"
|
||||||
|
|
||||||
#include <KAbstractFileItemActionPlugin>
|
#include <KAbstractFileItemActionPlugin>
|
||||||
|
#include <KFileItemListProperties>
|
||||||
|
|
||||||
|
#include <QAction>
|
||||||
|
|
||||||
QT_FORWARD_DECLARE_CLASS(QAction)
|
|
||||||
QT_FORWARD_DECLARE_CLASS(QWidget)
|
QT_FORWARD_DECLARE_CLASS(QWidget)
|
||||||
|
|
||||||
class KFileItemListProperties;
|
class KFileItemListProperties;
|
||||||
|
|
||||||
|
class SyncthingMenuAction : public QAction
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
SyncthingMenuAction(const KFileItemListProperties &properties = KFileItemListProperties(), const QList<QAction *> &actions = QList<QAction *>(), QWidget *parentWidget = nullptr);
|
||||||
|
|
||||||
|
public Q_SLOTS:
|
||||||
|
void updateStatus(Data::SyncthingStatus status);
|
||||||
|
|
||||||
|
private:
|
||||||
|
KFileItemListProperties m_properties;
|
||||||
|
};
|
||||||
|
|
||||||
class SyncthingFileItemAction : public KAbstractFileItemActionPlugin
|
class SyncthingFileItemAction : public KAbstractFileItemActionPlugin
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
@ -17,6 +33,8 @@ class SyncthingFileItemAction : public KAbstractFileItemActionPlugin
|
||||||
public:
|
public:
|
||||||
SyncthingFileItemAction(QObject* parent, const QVariantList &args);
|
SyncthingFileItemAction(QObject* parent, const QVariantList &args);
|
||||||
QList<QAction *> actions(const KFileItemListProperties &fileItemInfo, QWidget *parentWidget) override;
|
QList<QAction *> actions(const KFileItemListProperties &fileItemInfo, QWidget *parentWidget) override;
|
||||||
|
static Data::SyncthingConnection &connection();
|
||||||
|
static QList<QAction *> createActions(const KFileItemListProperties &fileItemInfo, QWidget *parentWidget);
|
||||||
|
|
||||||
private Q_SLOTS:
|
private Q_SLOTS:
|
||||||
static void logConnectionStatus();
|
static void logConnectionStatus();
|
||||||
|
|
|
@ -4,93 +4,101 @@
|
||||||
<context>
|
<context>
|
||||||
<name>SyncthingFileItemAction</name>
|
<name>SyncthingFileItemAction</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../syncthingfileitemaction.cpp" line="156"/>
|
<location filename="../syncthingfileitemaction.cpp" line="242"/>
|
||||||
<source>Rescan %1 (in %2)</source>
|
<source>Rescan %1 (in %2)</source>
|
||||||
<translation>"%1" neu scannen (in "%2")</translation>
|
<translation>"%1" neu scannen (in "%2")</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../syncthingfileitemaction.cpp" line="157"/>
|
<location filename="../syncthingfileitemaction.cpp" line="243"/>
|
||||||
<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="175"/>
|
<location filename="../syncthingfileitemaction.cpp" line="261"/>
|
||||||
<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="202"/>
|
<location filename="../syncthingfileitemaction.cpp" line="288"/>
|
||||||
<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="174"/>
|
<location filename="../syncthingfileitemaction.cpp" line="260"/>
|
||||||
<location filename="../syncthingfileitemaction.cpp" line="225"/>
|
<location filename="../syncthingfileitemaction.cpp" line="311"/>
|
||||||
<source>Rescan %1</source>
|
<source>Rescan %1</source>
|
||||||
<translation>"%1" neu scannen</translation>
|
<translation>"%1" neu scannen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../syncthingfileitemaction.cpp" line="201"/>
|
<location filename="../syncthingfileitemaction.cpp" line="287"/>
|
||||||
<location filename="../syncthingfileitemaction.cpp" line="251"/>
|
<location filename="../syncthingfileitemaction.cpp" line="337"/>
|
||||||
<source>Resume %1</source>
|
<source>Resume %1</source>
|
||||||
<translation>"%1" fortsetzen</translation>
|
<translation>"%1" fortsetzen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../syncthingfileitemaction.cpp" line="208"/>
|
<location filename="../syncthingfileitemaction.cpp" line="294"/>
|
||||||
<location filename="../syncthingfileitemaction.cpp" line="258"/>
|
<location filename="../syncthingfileitemaction.cpp" line="344"/>
|
||||||
<source>Pause %1</source>
|
<source>Pause %1</source>
|
||||||
<translation>"%1" pausieren</translation>
|
<translation>"%1" pausieren</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../syncthingfileitemaction.cpp" line="209"/>
|
<location filename="../syncthingfileitemaction.cpp" line="295"/>
|
||||||
<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="226"/>
|
<location filename="../syncthingfileitemaction.cpp" line="312"/>
|
||||||
<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="252"/>
|
<location filename="../syncthingfileitemaction.cpp" line="338"/>
|
||||||
<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="259"/>
|
<location filename="../syncthingfileitemaction.cpp" line="345"/>
|
||||||
<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="275"/>
|
<location filename="../syncthingfileitemaction.cpp" line="363"/>
|
||||||
<source>Syncthing</source>
|
|
||||||
<translation></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../syncthingfileitemaction.cpp" line="285"/>
|
|
||||||
<source>Directory info</source>
|
<source>Directory info</source>
|
||||||
<translation>Verzeichnisinfo</translation>
|
<translation>Verzeichnisinfo</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../syncthingfileitemaction.cpp" line="286"/>
|
<location filename="../syncthingfileitemaction.cpp" line="365"/>
|
||||||
<source>Status: </source>
|
<source>Status: </source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../syncthingfileitemaction.cpp" line="310"/>
|
<location filename="../syncthingfileitemaction.cpp" line="391"/>
|
||||||
<source>Last scan time: </source>
|
<source>Last scan time: </source>
|
||||||
<translation>Letzter Scan: </translation>
|
<translation>Letzter Scan: </translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../syncthingfileitemaction.cpp" line="311"/>
|
<location filename="../syncthingfileitemaction.cpp" line="392"/>
|
||||||
<source>Rescan interval: %1 seconds</source>
|
<source>Rescan interval: %1 seconds</source>
|
||||||
<translation>Scanintervall: %1 Sekunden</translation>
|
<translation>Scanintervall: %1 Sekunden</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../syncthingfileitemaction.cpp" line="316"/>
|
<location filename="../syncthingfileitemaction.cpp" line="180"/>
|
||||||
<location filename="../syncthingfileitemaction.cpp" line="339"/>
|
<location filename="../syncthingfileitemaction.cpp" line="398"/>
|
||||||
<source>About</source>
|
<source>About</source>
|
||||||
<translation>Über</translation>
|
<translation>Über</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
|
<context>
|
||||||
|
<name>SyncthingMenuAction</name>
|
||||||
|
<message>
|
||||||
|
<location filename="../syncthingfileitemaction.cpp" line="68"/>
|
||||||
|
<source>Syncthing</source>
|
||||||
|
<translation></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../syncthingfileitemaction.cpp" line="82"/>
|
||||||
|
<source>Syncthing - connecting</source>
|
||||||
|
<translation>Syncthing - verbinde</translation>
|
||||||
|
</message>
|
||||||
|
</context>
|
||||||
</TS>
|
</TS>
|
||||||
|
|
|
@ -4,93 +4,101 @@
|
||||||
<context>
|
<context>
|
||||||
<name>SyncthingFileItemAction</name>
|
<name>SyncthingFileItemAction</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../syncthingfileitemaction.cpp" line="156"/>
|
<location filename="../syncthingfileitemaction.cpp" line="242"/>
|
||||||
<source>Rescan %1 (in %2)</source>
|
<source>Rescan %1 (in %2)</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../syncthingfileitemaction.cpp" line="157"/>
|
<location filename="../syncthingfileitemaction.cpp" line="243"/>
|
||||||
<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="175"/>
|
<location filename="../syncthingfileitemaction.cpp" line="261"/>
|
||||||
<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="202"/>
|
<location filename="../syncthingfileitemaction.cpp" line="288"/>
|
||||||
<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="174"/>
|
<location filename="../syncthingfileitemaction.cpp" line="260"/>
|
||||||
<location filename="../syncthingfileitemaction.cpp" line="225"/>
|
<location filename="../syncthingfileitemaction.cpp" line="311"/>
|
||||||
<source>Rescan %1</source>
|
<source>Rescan %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../syncthingfileitemaction.cpp" line="201"/>
|
<location filename="../syncthingfileitemaction.cpp" line="287"/>
|
||||||
<location filename="../syncthingfileitemaction.cpp" line="251"/>
|
<location filename="../syncthingfileitemaction.cpp" line="337"/>
|
||||||
<source>Resume %1</source>
|
<source>Resume %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../syncthingfileitemaction.cpp" line="208"/>
|
<location filename="../syncthingfileitemaction.cpp" line="294"/>
|
||||||
<location filename="../syncthingfileitemaction.cpp" line="258"/>
|
<location filename="../syncthingfileitemaction.cpp" line="344"/>
|
||||||
<source>Pause %1</source>
|
<source>Pause %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../syncthingfileitemaction.cpp" line="209"/>
|
<location filename="../syncthingfileitemaction.cpp" line="295"/>
|
||||||
<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="226"/>
|
<location filename="../syncthingfileitemaction.cpp" line="312"/>
|
||||||
<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="252"/>
|
<location filename="../syncthingfileitemaction.cpp" line="338"/>
|
||||||
<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="259"/>
|
<location filename="../syncthingfileitemaction.cpp" line="345"/>
|
||||||
<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="275"/>
|
<location filename="../syncthingfileitemaction.cpp" line="363"/>
|
||||||
<source>Syncthing</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../syncthingfileitemaction.cpp" line="285"/>
|
|
||||||
<source>Directory info</source>
|
<source>Directory info</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../syncthingfileitemaction.cpp" line="286"/>
|
<location filename="../syncthingfileitemaction.cpp" line="365"/>
|
||||||
<source>Status: </source>
|
<source>Status: </source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../syncthingfileitemaction.cpp" line="310"/>
|
<location filename="../syncthingfileitemaction.cpp" line="391"/>
|
||||||
<source>Last scan time: </source>
|
<source>Last scan time: </source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../syncthingfileitemaction.cpp" line="311"/>
|
<location filename="../syncthingfileitemaction.cpp" line="392"/>
|
||||||
<source>Rescan interval: %1 seconds</source>
|
<source>Rescan interval: %1 seconds</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../syncthingfileitemaction.cpp" line="316"/>
|
<location filename="../syncthingfileitemaction.cpp" line="180"/>
|
||||||
<location filename="../syncthingfileitemaction.cpp" line="339"/>
|
<location filename="../syncthingfileitemaction.cpp" line="398"/>
|
||||||
<source>About</source>
|
<source>About</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
|
<context>
|
||||||
|
<name>SyncthingMenuAction</name>
|
||||||
|
<message>
|
||||||
|
<location filename="../syncthingfileitemaction.cpp" line="68"/>
|
||||||
|
<source>Syncthing</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../syncthingfileitemaction.cpp" line="82"/>
|
||||||
|
<source>Syncthing - connecting</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
</context>
|
||||||
</TS>
|
</TS>
|
||||||
|
|
Loading…
Reference in New Issue