Show global/local dir status in Dolphin action

This commit is contained in:
Martchus 2017-08-30 00:36:49 +02:00
parent 8dce7de433
commit 80c2a4212e
12 changed files with 142 additions and 60 deletions

View File

@ -217,20 +217,36 @@
<context>
<name>Data::Utils</name>
<message>
<location filename="../utils.cpp" line="28"/>
<location filename="../utils.cpp" line="29"/>
<source>%1 ago</source>
<translation>vor %1</translation>
</message>
<message>
<location filename="../utils.cpp" line="31"/>
<location filename="../utils.cpp" line="32"/>
<source>right now</source>
<translation>gerade eben</translation>
</message>
<message>
<location filename="../utils.cpp" line="42"/>
<location filename="../utils.cpp" line="43"/>
<source>unknown</source>
<translation>unbekannt</translation>
</message>
<message numerus="yes">
<location filename="../utils.cpp" line="59"/>
<source>%1 file(s)</source>
<translation>
<numerusform>%1 Datei</numerusform>
<numerusform>%1 Dateien</numerusform>
</translation>
</message>
<message numerus="yes">
<location filename="../utils.cpp" line="60"/>
<source>%1 dir(s)</source>
<translation>
<numerusform>%1 Verz.</numerusform>
<numerusform>%1 Verz.</numerusform>
</translation>
</message>
</context>
<context>
<name>SyncthingDev</name>

View File

@ -217,20 +217,36 @@
<context>
<name>Data::Utils</name>
<message>
<location filename="../utils.cpp" line="28"/>
<location filename="../utils.cpp" line="29"/>
<source>%1 ago</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../utils.cpp" line="31"/>
<location filename="../utils.cpp" line="32"/>
<source>right now</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../utils.cpp" line="42"/>
<location filename="../utils.cpp" line="43"/>
<source>unknown</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
<location filename="../utils.cpp" line="59"/>
<source>%1 file(s)</source>
<translation>
<numerusform>%1 file</numerusform>
<numerusform>%1 files</numerusform>
</translation>
</message>
<message numerus="yes">
<location filename="../utils.cpp" line="60"/>
<source>%1 dir(s)</source>
<translation>
<numerusform>%1 dir</numerusform>
<numerusform>%1 dirs</numerusform>
</translation>
</message>
</context>
<context>
<name>SyncthingDev</name>

View File

@ -11,6 +11,7 @@
#include <QJsonValue>
#include <QNetworkInterface>
#include <QString>
#include <QStringBuilder>
#include <QUrl>
using namespace ChronoUtilities;
@ -50,6 +51,16 @@ QString trafficString(uint64 total, double rate)
return unknownStr;
}
/*!
* \brief Returns the string for global/local directory status, eg. "5 files, 1 directory, 23.7 MiB".
*/
QString directoryStatusString(quint64 files, quint64 dirs, quint64 size)
{
return QCoreApplication::translate("Data::Utils", "%1 file(s)", nullptr, trQuandity(files)).arg(files) % QChar(',') % QChar(' ')
% QCoreApplication::translate("Data::Utils", "%1 dir(s)", nullptr, trQuandity(dirs)).arg(dirs) % QChar(',') % QChar(' ')
% QString::fromUtf8(dataSizeToString(size).data());
}
/*!
* \brief Returns whether the host specified by the given \a url is the local machine.
*/

View File

@ -21,6 +21,7 @@ namespace Data {
QString LIB_SYNCTHING_CONNECTOR_EXPORT agoString(ChronoUtilities::DateTime dateTime);
QString LIB_SYNCTHING_CONNECTOR_EXPORT trafficString(uint64 total, double rate);
QString LIB_SYNCTHING_CONNECTOR_EXPORT directoryStatusString(quint64 files, quint64 dirs, quint64 size);
bool LIB_SYNCTHING_CONNECTOR_EXPORT isLocal(const QUrl &url);
bool LIB_SYNCTHING_CONNECTOR_EXPORT setDirectoriesPaused(QJsonObject &syncthingConfig, const QStringList &dirIds, bool paused);
bool LIB_SYNCTHING_CONNECTOR_EXPORT setDevicesPaused(QJsonObject &syncthingConfig, const QStringList &dirs, bool paused);

View File

@ -161,15 +161,25 @@ bool SyncthingDirActions::updateStatus(const SyncthingDir &dir)
break;
}
}
m_globalStatusAction.setText(tr("Global: ") + directoryStatusString(dir.globalFiles, dir.globalDirs, dir.globalBytes));
m_localStatusAction.setText(tr("Local: ") + directoryStatusString(dir.localFiles, dir.localDirs, dir.localBytes));
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));
if (dir.itemErrors.empty()) {
m_errorsAction.setVisible(false);
} else {
m_errorsAction.setVisible(true);
m_errorsAction.setIcon(QIcon::fromTheme(QStringLiteral("dialog-error")));
m_errorsAction.setText(tr("%1 item(s) out-of-sync", nullptr, trQuandity(dir.itemErrors.size())).arg(dir.itemErrors.size()));
}
return true;
}
QList<QAction *> &operator<<(QList<QAction *> &actions, SyncthingDirActions &dirActions)
{
return actions << &dirActions.m_infoAction << &dirActions.m_statusAction << &dirActions.m_lastScanAction << &dirActions.m_rescanIntervalAction;
return actions << &dirActions.m_infoAction << &dirActions.m_statusAction << &dirActions.m_globalStatusAction << &dirActions.m_localStatusAction
<< &dirActions.m_lastScanAction << &dirActions.m_rescanIntervalAction << &dirActions.m_errorsAction;
}
SyncthingConnection SyncthingFileItemAction::s_connection;

View File

@ -51,8 +51,11 @@ private:
QString m_dirId;
QAction m_infoAction;
SyncthingInfoAction m_statusAction;
SyncthingInfoAction m_globalStatusAction;
SyncthingInfoAction m_localStatusAction;
SyncthingInfoAction m_lastScanAction;
SyncthingInfoAction m_rescanIntervalAction;
SyncthingInfoAction m_errorsAction;
};
QList<QAction *> &operator<<(QList<QAction *> &actions, SyncthingDirActions &dirActions);

View File

@ -20,83 +20,101 @@
</message>
<message>
<location filename="../syncthingfileitemaction.cpp" line="164"/>
<source>Global: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../syncthingfileitemaction.cpp" line="165"/>
<source>Local: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../syncthingfileitemaction.cpp" line="166"/>
<source>Last scan time: </source>
<translation>Letzter Scan: </translation>
</message>
<message>
<location filename="../syncthingfileitemaction.cpp" line="166"/>
<location filename="../syncthingfileitemaction.cpp" line="168"/>
<source>Rescan interval: %1 seconds</source>
<translation>Scanintervall: %1 Sekunden</translation>
</message>
<message numerus="yes">
<location filename="../syncthingfileitemaction.cpp" line="174"/>
<source>%1 item(s) out-of-sync</source>
<translation type="unfinished">
<numerusform></numerusform>
<numerusform></numerusform>
</translation>
</message>
</context>
<context>
<name>SyncthingFileItemAction</name>
<message>
<location filename="../syncthingfileitemaction.cpp" line="323"/>
<location filename="../syncthingfileitemaction.cpp" line="333"/>
<source>Rescan %1 (in %2)</source>
<translation>&quot;%1&quot; neu scannen (in &quot;%2&quot;)</translation>
</message>
<message>
<location filename="../syncthingfileitemaction.cpp" line="324"/>
<location filename="../syncthingfileitemaction.cpp" line="334"/>
<source>Rescan selected items</source>
<translation>Auswahl neu scannen</translation>
</message>
<message>
<location filename="../syncthingfileitemaction.cpp" line="339"/>
<location filename="../syncthingfileitemaction.cpp" line="349"/>
<source>Rescan selected directories</source>
<translation>Ausgewählte Verzeichnisse neu scannen</translation>
</message>
<message>
<location filename="../syncthingfileitemaction.cpp" line="362"/>
<location filename="../syncthingfileitemaction.cpp" line="372"/>
<source>Resume selected directories</source>
<translation>Ausgewählte verzeichnisse fortsetzen</translation>
</message>
<message>
<location filename="../syncthingfileitemaction.cpp" line="339"/>
<location filename="../syncthingfileitemaction.cpp" line="380"/>
<location filename="../syncthingfileitemaction.cpp" line="349"/>
<location filename="../syncthingfileitemaction.cpp" line="390"/>
<source>Rescan %1</source>
<translation>&quot;%1&quot; neu scannen</translation>
</message>
<message>
<location filename="../syncthingfileitemaction.cpp" line="254"/>
<location filename="../syncthingfileitemaction.cpp" line="264"/>
<source>Syncthing connection error</source>
<translation>Fehler beim Verbinden mit Syncthing</translation>
</message>
<message>
<location filename="../syncthingfileitemaction.cpp" line="362"/>
<location filename="../syncthingfileitemaction.cpp" line="403"/>
<location filename="../syncthingfileitemaction.cpp" line="372"/>
<location filename="../syncthingfileitemaction.cpp" line="413"/>
<source>Resume %1</source>
<translation>&quot;%1&quot; fortsetzen</translation>
</message>
<message>
<location filename="../syncthingfileitemaction.cpp" line="366"/>
<location filename="../syncthingfileitemaction.cpp" line="407"/>
<location filename="../syncthingfileitemaction.cpp" line="376"/>
<location filename="../syncthingfileitemaction.cpp" line="417"/>
<source>Pause %1</source>
<translation>&quot;%1&quot; pausieren</translation>
</message>
<message>
<location filename="../syncthingfileitemaction.cpp" line="366"/>
<location filename="../syncthingfileitemaction.cpp" line="376"/>
<source>Pause selected directories</source>
<translation>Ausgewählte Verzeichnisse pausieren</translation>
</message>
<message>
<location filename="../syncthingfileitemaction.cpp" line="380"/>
<location filename="../syncthingfileitemaction.cpp" line="390"/>
<source>Rescan containing directories</source>
<translation>Beinhaltendes Verzeichnis neu scannen</translation>
</message>
<message>
<location filename="../syncthingfileitemaction.cpp" line="403"/>
<location filename="../syncthingfileitemaction.cpp" line="413"/>
<source>Resume containing directories</source>
<translation>Beinhaltendes Verzeichnis fortsetzen</translation>
</message>
<message>
<location filename="../syncthingfileitemaction.cpp" line="407"/>
<location filename="../syncthingfileitemaction.cpp" line="417"/>
<source>Pause containing directories</source>
<translation>Beinhaltendes Verzeichnis pausieren</translation>
</message>
<message>
<location filename="../syncthingfileitemaction.cpp" line="270"/>
<location filename="../syncthingfileitemaction.cpp" line="436"/>
<location filename="../syncthingfileitemaction.cpp" line="280"/>
<location filename="../syncthingfileitemaction.cpp" line="446"/>
<source>About</source>
<translation>Über</translation>
</message>

View File

@ -20,83 +20,101 @@
</message>
<message>
<location filename="../syncthingfileitemaction.cpp" line="164"/>
<source>Last scan time: </source>
<source>Global: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../syncthingfileitemaction.cpp" line="165"/>
<source>Local: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../syncthingfileitemaction.cpp" line="166"/>
<source>Last scan time: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../syncthingfileitemaction.cpp" line="168"/>
<source>Rescan interval: %1 seconds</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
<location filename="../syncthingfileitemaction.cpp" line="174"/>
<source>%1 item(s) out-of-sync</source>
<translation type="unfinished">
<numerusform></numerusform>
<numerusform></numerusform>
</translation>
</message>
</context>
<context>
<name>SyncthingFileItemAction</name>
<message>
<location filename="../syncthingfileitemaction.cpp" line="323"/>
<location filename="../syncthingfileitemaction.cpp" line="333"/>
<source>Rescan %1 (in %2)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../syncthingfileitemaction.cpp" line="324"/>
<location filename="../syncthingfileitemaction.cpp" line="334"/>
<source>Rescan selected items</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../syncthingfileitemaction.cpp" line="339"/>
<location filename="../syncthingfileitemaction.cpp" line="349"/>
<source>Rescan selected directories</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../syncthingfileitemaction.cpp" line="362"/>
<location filename="../syncthingfileitemaction.cpp" line="372"/>
<source>Resume selected directories</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../syncthingfileitemaction.cpp" line="339"/>
<location filename="../syncthingfileitemaction.cpp" line="380"/>
<location filename="../syncthingfileitemaction.cpp" line="349"/>
<location filename="../syncthingfileitemaction.cpp" line="390"/>
<source>Rescan %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../syncthingfileitemaction.cpp" line="254"/>
<location filename="../syncthingfileitemaction.cpp" line="264"/>
<source>Syncthing connection error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../syncthingfileitemaction.cpp" line="362"/>
<location filename="../syncthingfileitemaction.cpp" line="403"/>
<location filename="../syncthingfileitemaction.cpp" line="372"/>
<location filename="../syncthingfileitemaction.cpp" line="413"/>
<source>Resume %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../syncthingfileitemaction.cpp" line="366"/>
<location filename="../syncthingfileitemaction.cpp" line="407"/>
<location filename="../syncthingfileitemaction.cpp" line="376"/>
<location filename="../syncthingfileitemaction.cpp" line="417"/>
<source>Pause %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../syncthingfileitemaction.cpp" line="366"/>
<location filename="../syncthingfileitemaction.cpp" line="376"/>
<source>Pause selected directories</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../syncthingfileitemaction.cpp" line="380"/>
<location filename="../syncthingfileitemaction.cpp" line="390"/>
<source>Rescan containing directories</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../syncthingfileitemaction.cpp" line="403"/>
<location filename="../syncthingfileitemaction.cpp" line="413"/>
<source>Resume containing directories</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../syncthingfileitemaction.cpp" line="407"/>
<location filename="../syncthingfileitemaction.cpp" line="417"/>
<source>Pause containing directories</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../syncthingfileitemaction.cpp" line="270"/>
<location filename="../syncthingfileitemaction.cpp" line="436"/>
<location filename="../syncthingfileitemaction.cpp" line="280"/>
<location filename="../syncthingfileitemaction.cpp" line="446"/>
<source>About</source>
<translation type="unfinished"></translation>
</message>

View File

@ -141,9 +141,9 @@ QVariant SyncthingDirectoryModel::data(const QModelIndex &index, int role) const
case 1:
return dir.path;
case 2:
return statusLabel(dir.globalFiles, dir.globalDirs, dir.globalBytes);
return directoryStatusString(dir.globalFiles, dir.globalDirs, dir.globalBytes);
case 3:
return statusLabel(dir.localFiles, dir.localDirs, dir.localBytes);
return directoryStatusString(dir.localFiles, dir.localDirs, dir.localBytes);
case 4:
if (!dir.deviceNames.isEmpty()) {
return dir.deviceNames.join(QStringLiteral(", "));
@ -410,10 +410,4 @@ QColor SyncthingDirectoryModel::dirStatusColor(const SyncthingDir &dir) const
return QColor();
}
QString SyncthingDirectoryModel::statusLabel(quint64 files, quint64 dirs, quint64 size)
{
return tr("%1 file(s)", nullptr, trQuandity(files)).arg(files) % QChar(',') % QChar(' ') % tr("%1 dir(s)", nullptr, trQuandity(dirs)).arg(dirs)
% QChar(',') % QChar(' ') % QString::fromUtf8(dataSizeToString(size).data());
}
} // namespace Data

View File

@ -43,7 +43,6 @@ private Q_SLOTS:
void dirStatusChanged(const SyncthingDir &, int index);
private:
static QString statusLabel(quint64 files, quint64 dirs, quint64 size);
static QHash<int, QByteArray> initRoleNames();
static QString dirStatusString(const SyncthingDir &dir);
QColor dirStatusColor(const SyncthingDir &dir) const;

View File

@ -187,17 +187,15 @@
<translation>keine</translation>
</message>
<message numerus="yes">
<location filename="../syncthingdirectorymodel.cpp" line="415"/>
<source>%1 file(s)</source>
<translation>
<translation type="vanished">
<numerusform>%1 Datei</numerusform>
<numerusform>%1 Dateien</numerusform>
</translation>
</message>
<message numerus="yes">
<location filename="../syncthingdirectorymodel.cpp" line="415"/>
<source>%1 dir(s)</source>
<translation>
<translation type="vanished">
<numerusform>%1 Verz.</numerusform>
<numerusform>%1 Verz.</numerusform>
</translation>

View File

@ -271,17 +271,15 @@
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
<location filename="../syncthingdirectorymodel.cpp" line="415"/>
<source>%1 file(s)</source>
<translation>
<translation type="vanished">
<numerusform>%1 file</numerusform>
<numerusform>%1 files</numerusform>
</translation>
</message>
<message numerus="yes">
<location filename="../syncthingdirectorymodel.cpp" line="415"/>
<source>%1 dir(s)</source>
<translation>
<translation type="vanished">
<numerusform>%1 dir</numerusform>
<numerusform>%1 dirs</numerusform>
</translation>