Handle status updates in KIO plugin
This commit is contained in:
parent
2635cde225
commit
fd2429b477
|
@ -88,6 +88,66 @@ void SyncthingMenuAction::updateStatus(SyncthingStatus status)
|
|||
}
|
||||
}
|
||||
|
||||
SyncthingDirActions::SyncthingDirActions(const SyncthingDir &dir, QObject *parent) :
|
||||
QObject(parent),
|
||||
m_dirId(dir.id)
|
||||
{
|
||||
m_infoAction.setSeparator(true);
|
||||
updateStatus(dir);
|
||||
}
|
||||
|
||||
void SyncthingDirActions::updateStatus(const std::vector<SyncthingDir> &dirs)
|
||||
{
|
||||
for(const SyncthingDir &dir : dirs) {
|
||||
if(updateStatus(dir)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
m_statusAction.setText(tr("Status: not available anymore"));
|
||||
m_statusAction.setIcon(statusIcons().disconnected);
|
||||
}
|
||||
|
||||
bool SyncthingDirActions::updateStatus(const SyncthingDir &dir)
|
||||
{
|
||||
if(dir.id != m_dirId) {
|
||||
return false;
|
||||
}
|
||||
m_infoAction.setText(tr("Directory info for %1").arg(dir.displayName()));
|
||||
m_infoAction.setIcon(QIcon::fromTheme(QStringLiteral("dialog-information")));
|
||||
m_statusAction.setText(tr("Status: ") + dir.statusString());
|
||||
if(dir.paused && dir.status != SyncthingDirStatus::OutOfSync) {
|
||||
m_statusAction.setIcon(statusIcons().pause);
|
||||
} else {
|
||||
switch(dir.status) {
|
||||
case SyncthingDirStatus::Unknown:
|
||||
case SyncthingDirStatus::Unshared:
|
||||
m_statusAction.setIcon(statusIcons().disconnected);
|
||||
break;
|
||||
case SyncthingDirStatus::Idle:
|
||||
m_statusAction.setIcon(statusIcons().idling);
|
||||
break;
|
||||
case SyncthingDirStatus::Scanning:
|
||||
m_statusAction.setIcon(statusIcons().scanninig);
|
||||
break;
|
||||
case SyncthingDirStatus::Synchronizing:
|
||||
m_statusAction.setIcon(statusIcons().sync);
|
||||
break;
|
||||
case SyncthingDirStatus::OutOfSync:
|
||||
m_statusAction.setIcon(statusIcons().error);
|
||||
break;
|
||||
}
|
||||
}
|
||||
m_lastScanAction.setText(tr("Last scan time: ") + agoString(dir.lastScanTime));
|
||||
m_lastScanAction.setIcon(QIcon::fromTheme(QStringLiteral("accept_time_event")));
|
||||
m_rescanIntervalAction.setText(tr("Rescan interval: %1 seconds").arg(dir.rescanInterval));
|
||||
return true;
|
||||
}
|
||||
|
||||
QList<QAction *> &operator <<(QList<QAction *> &actions, SyncthingDirActions &dirActions)
|
||||
{
|
||||
return actions << &dirActions.m_infoAction << &dirActions.m_statusAction << &dirActions.m_lastScanAction << &dirActions.m_rescanIntervalAction;
|
||||
}
|
||||
|
||||
SyncthingConnection SyncthingFileItemAction::s_connection;
|
||||
|
||||
SyncthingFileItemAction::SyncthingFileItemAction(QObject *parent, const QVariantList &) :
|
||||
|
@ -357,39 +417,12 @@ QList<QAction *> SyncthingFileItemAction::createActions(const KFileItemListPrope
|
|||
return actions;
|
||||
}
|
||||
|
||||
// add action to show further information about directory if the selection is only about
|
||||
// one particular Syncthing dir
|
||||
// add actions to show further information about directory if the selection is only about one particular Syncthing dir
|
||||
if(detectedDirs.size() + containingDirs.size() == 1) {
|
||||
QAction *infoAction = new QAction(QIcon::fromTheme(QStringLiteral("dialog-information")), tr("Directory info"), parentWidget);
|
||||
infoAction->setSeparator(true);
|
||||
QAction *statusAction = new QAction(tr("Status: ") + lastDir->statusString());
|
||||
if(lastDir->paused && lastDir->status != SyncthingDirStatus::OutOfSync) {
|
||||
statusAction->setIcon(statusIcons().pause);
|
||||
} else {
|
||||
switch(lastDir->status) {
|
||||
case SyncthingDirStatus::Unknown:
|
||||
case SyncthingDirStatus::Unshared:
|
||||
statusAction->setIcon(statusIcons().disconnected);
|
||||
break;
|
||||
case SyncthingDirStatus::Idle:
|
||||
statusAction->setIcon(statusIcons().idling);
|
||||
break;
|
||||
case SyncthingDirStatus::Scanning:
|
||||
statusAction->setIcon(statusIcons().scanninig);
|
||||
break;
|
||||
case SyncthingDirStatus::Synchronizing:
|
||||
statusAction->setIcon(statusIcons().sync);
|
||||
break;
|
||||
case SyncthingDirStatus::OutOfSync:
|
||||
statusAction->setIcon(statusIcons().error);
|
||||
break;
|
||||
}
|
||||
}
|
||||
actions << infoAction << statusAction;
|
||||
|
||||
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);
|
||||
auto *statusActions = new SyncthingDirActions(*lastDir, parentWidget);
|
||||
connect(&s_connection, &SyncthingConnection::newDirs, statusActions, static_cast<void(SyncthingDirActions::*)(const vector<SyncthingDir> &)>(&SyncthingDirActions::updateStatus));
|
||||
connect(&s_connection, &SyncthingConnection::dirStatusChanged, statusActions, static_cast<bool(SyncthingDirActions::*)(const SyncthingDir &)>(&SyncthingDirActions::updateStatus));
|
||||
actions << *statusActions;
|
||||
}
|
||||
|
||||
// about about action
|
||||
|
|
|
@ -26,6 +26,28 @@ private:
|
|||
KFileItemListProperties m_properties;
|
||||
};
|
||||
|
||||
class SyncthingDirActions : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
friend QList<QAction *> &operator <<(QList<QAction *> &, SyncthingDirActions &);
|
||||
|
||||
public:
|
||||
SyncthingDirActions(const Data::SyncthingDir &dir, QObject *parent = nullptr);
|
||||
|
||||
public Q_SLOTS:
|
||||
void updateStatus(const std::vector<Data::SyncthingDir> &dirs);
|
||||
bool updateStatus(const Data::SyncthingDir &dir);
|
||||
|
||||
private:
|
||||
QString m_dirId;
|
||||
QAction m_infoAction;
|
||||
QAction m_statusAction;
|
||||
QAction m_lastScanAction;
|
||||
QAction m_rescanIntervalAction;
|
||||
};
|
||||
|
||||
QList<QAction *> &operator <<(QList<QAction *> &actions, SyncthingDirActions &dirActions);
|
||||
|
||||
class SyncthingFileItemAction : public KAbstractFileItemActionPlugin
|
||||
{
|
||||
Q_OBJECT
|
||||
|
|
|
@ -2,88 +2,108 @@
|
|||
<!DOCTYPE TS>
|
||||
<TS version="2.1" language="de_DE">
|
||||
<context>
|
||||
<name>SyncthingFileItemAction</name>
|
||||
<name>SyncthingDirActions</name>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="242"/>
|
||||
<source>Rescan %1 (in %2)</source>
|
||||
<translation>"%1" neu scannen (in "%2")</translation>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="106"/>
|
||||
<source>not available anymore</source>
|
||||
<translation>nicht mehr verfügbar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="243"/>
|
||||
<source>Rescan selected items</source>
|
||||
<translation>Auswahl neu scannen</translation>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="115"/>
|
||||
<source>Directory info for %1</source>
|
||||
<translation>Verzeichnisinfo für %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="261"/>
|
||||
<source>Rescan selected directories</source>
|
||||
<translation>Ausgewählte Verzeichnisse neu scannen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="288"/>
|
||||
<source>Resume selected directories</source>
|
||||
<translation>Ausgewählte verzeichnisse fortsetzen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="260"/>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="311"/>
|
||||
<source>Rescan %1</source>
|
||||
<translation>"%1" neu scannen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="287"/>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="337"/>
|
||||
<source>Resume %1</source>
|
||||
<translation>"%1" fortsetzen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="294"/>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="344"/>
|
||||
<source>Pause %1</source>
|
||||
<translation>"%1" pausieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="295"/>
|
||||
<source>Pause selected directories</source>
|
||||
<translation>Ausgewählte Verzeichnisse pausieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="312"/>
|
||||
<source>Rescan containing directories</source>
|
||||
<translation>Beinhaltendes Verzeichnis neu scannen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="338"/>
|
||||
<source>Resume containing directories</source>
|
||||
<translation>Beinhaltendes Verzeichnis fortsetzen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="345"/>
|
||||
<source>Pause containing directories</source>
|
||||
<translation>Beinhaltendes Verzeichnis pausieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="363"/>
|
||||
<source>Directory info</source>
|
||||
<translation>Verzeichnisinfo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="365"/>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="117"/>
|
||||
<source>Status: </source>
|
||||
<translation></translation>
|
||||
<translation>Status: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="391"/>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="140"/>
|
||||
<source>Last scan time: </source>
|
||||
<translation>Letzter Scan: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="392"/>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="142"/>
|
||||
<source>Rescan interval: %1 seconds</source>
|
||||
<translation>Scanintervall: %1 Sekunden</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SyncthingFileItemAction</name>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="302"/>
|
||||
<source>Rescan %1 (in %2)</source>
|
||||
<translation>"%1" neu scannen (in "%2")</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="303"/>
|
||||
<source>Rescan selected items</source>
|
||||
<translation>Auswahl neu scannen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="321"/>
|
||||
<source>Rescan selected directories</source>
|
||||
<translation>Ausgewählte Verzeichnisse neu scannen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="348"/>
|
||||
<source>Resume selected directories</source>
|
||||
<translation>Ausgewählte verzeichnisse fortsetzen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="320"/>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="371"/>
|
||||
<source>Rescan %1</source>
|
||||
<translation>"%1" neu scannen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="347"/>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="397"/>
|
||||
<source>Resume %1</source>
|
||||
<translation>"%1" fortsetzen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="354"/>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="404"/>
|
||||
<source>Pause %1</source>
|
||||
<translation>"%1" pausieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="355"/>
|
||||
<source>Pause selected directories</source>
|
||||
<translation>Ausgewählte Verzeichnisse pausieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="372"/>
|
||||
<source>Rescan containing directories</source>
|
||||
<translation>Beinhaltendes Verzeichnis neu scannen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="180"/>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="398"/>
|
||||
<source>Resume containing directories</source>
|
||||
<translation>Beinhaltendes Verzeichnis fortsetzen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="405"/>
|
||||
<source>Pause containing directories</source>
|
||||
<translation>Beinhaltendes Verzeichnis pausieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Directory info</source>
|
||||
<translation type="vanished">Verzeichnisinfo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Last scan time: </source>
|
||||
<translation type="vanished">Letzter Scan: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Rescan interval: %1 seconds</source>
|
||||
<translation type="vanished">Scanintervall: %1 Sekunden</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="240"/>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="431"/>
|
||||
<source>About</source>
|
||||
<translation>Über</translation>
|
||||
</message>
|
||||
|
|
|
@ -2,88 +2,96 @@
|
|||
<!DOCTYPE TS>
|
||||
<TS version="2.1" language="en_US">
|
||||
<context>
|
||||
<name>SyncthingFileItemAction</name>
|
||||
<name>SyncthingDirActions</name>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="242"/>
|
||||
<source>Rescan %1 (in %2)</source>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="106"/>
|
||||
<source>Status: not available anymore</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="243"/>
|
||||
<source>Rescan selected items</source>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="115"/>
|
||||
<source>Directory info for %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="261"/>
|
||||
<source>Rescan selected directories</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="288"/>
|
||||
<source>Resume selected directories</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="260"/>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="311"/>
|
||||
<source>Rescan %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="287"/>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="337"/>
|
||||
<source>Resume %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="294"/>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="344"/>
|
||||
<source>Pause %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="295"/>
|
||||
<source>Pause selected directories</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="312"/>
|
||||
<source>Rescan containing directories</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="338"/>
|
||||
<source>Resume containing directories</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="345"/>
|
||||
<source>Pause containing directories</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="363"/>
|
||||
<source>Directory info</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="365"/>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="117"/>
|
||||
<source>Status: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="391"/>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="140"/>
|
||||
<source>Last scan time: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="392"/>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="142"/>
|
||||
<source>Rescan interval: %1 seconds</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SyncthingFileItemAction</name>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="302"/>
|
||||
<source>Rescan %1 (in %2)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="303"/>
|
||||
<source>Rescan selected items</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="321"/>
|
||||
<source>Rescan selected directories</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="348"/>
|
||||
<source>Resume selected directories</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="320"/>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="371"/>
|
||||
<source>Rescan %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="347"/>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="397"/>
|
||||
<source>Resume %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="354"/>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="404"/>
|
||||
<source>Pause %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="355"/>
|
||||
<source>Pause selected directories</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="372"/>
|
||||
<source>Rescan containing directories</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="180"/>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="398"/>
|
||||
<source>Resume containing directories</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="405"/>
|
||||
<source>Pause containing directories</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="240"/>
|
||||
<location filename="../syncthingfileitemaction.cpp" line="431"/>
|
||||
<source>About</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
|
Loading…
Reference in New Issue