1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
|
#include "./syncthingdiractions.h"
#include "./syncthingfileitemactionstaticdata.h"
#include <syncthingmodel/syncthingicons.h>
#include <syncthingconnector/syncthingdir.h>
#include <syncthingconnector/utils.h>
using namespace Data;
SyncthingDirActions::SyncthingDirActions(const SyncthingDir &dir, const SyncthingFileItemActionStaticData *data, QObject *parent)
: QObject(parent)
, m_dirId(dir.id)
{
Q_UNUSED(data)
const auto &icons = commonForkAwesomeIcons();
m_infoAction.setSeparator(true);
m_infoAction.setIcon(icons.folder);
m_globalStatusAction.setIcon(icons.globe);
m_localStatusAction.setIcon(icons.home);
m_lastScanAction.setIcon(icons.clock);
m_rescanIntervalAction.setIcon(icons.refresh);
m_errorsAction.setIcon(icons.exclamationTriangle);
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("Folder info for %1").arg(dir.displayName()));
m_statusAction.setText(tr("Status: ") + dir.statusString());
if (dir.paused) {
m_statusAction.setIcon(statusIcons().pause);
} else if (dir.isUnshared()) {
m_statusAction.setIcon(statusIcons().disconnected);
} else {
switch (dir.status) {
case SyncthingDirStatus::Unknown:
m_statusAction.setIcon(statusIcons().disconnected);
break;
case SyncthingDirStatus::Idle:
case SyncthingDirStatus::WaitingToClean:
case SyncthingDirStatus::Cleaning:
m_statusAction.setIcon(statusIcons().idling);
break;
case SyncthingDirStatus::WaitingToScan:
case SyncthingDirStatus::Scanning:
m_statusAction.setIcon(statusIcons().scanninig);
break;
case SyncthingDirStatus::WaitingToSync:
case SyncthingDirStatus::PreparingToSync:
case SyncthingDirStatus::Synchronizing:
m_statusAction.setIcon(statusIcons().sync);
break;
case SyncthingDirStatus::OutOfSync:
m_statusAction.setIcon(statusIcons().error);
break;
}
}
m_globalStatusAction.setText(tr("Global: ") + directoryStatusString(dir.globalStats));
m_localStatusAction.setText(tr("Local: ") + directoryStatusString(dir.localStats));
m_lastScanAction.setText(tr("Last scan time: ") + agoString(dir.lastScanTime));
m_rescanIntervalAction.setText(tr("Rescan interval: %1 seconds").arg(dir.rescanInterval));
if (!dir.pullErrorCount) {
m_errorsAction.setVisible(false);
} else {
m_errorsAction.setVisible(true);
m_errorsAction.setText(tr("%1 item(s) out-of-sync", nullptr, trQuandity(dir.pullErrorCount)).arg(dir.pullErrorCount));
}
return true;
}
QList<QAction *> &operator<<(QList<QAction *> &actions, SyncthingDirActions &dirActions)
{
return actions << &dirActions.m_infoAction << &dirActions.m_statusAction << &dirActions.m_globalStatusAction << &dirActions.m_localStatusAction
<< &dirActions.m_lastScanAction << &dirActions.m_rescanIntervalAction << &dirActions.m_errorsAction;
}
|