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
|
#include "./syncthingstatuscomputionmodel.h"
#include <syncthingconnector/syncthingconnectionsettings.h>
#include <type_traits>
using namespace QtUtilities;
namespace Data {
using FlagType = SyncthingStatusComputionFlags;
using UnderlyingFlagType = std::underlying_type_t<FlagType>;
inline static ChecklistItem itemFor(SyncthingStatusComputionFlags oneFlag)
{
return ChecklistItem(
static_cast<UnderlyingFlagType>(oneFlag), QString(), SyncthingStatusComputionFlags::Default && oneFlag ? Qt::Checked : Qt::Unchecked);
}
SyncthingStatusComputionModel::SyncthingStatusComputionModel(QObject *parent)
: ChecklistModel(parent)
{
setItems({
itemFor(SyncthingStatusComputionFlags::Scanning),
itemFor(SyncthingStatusComputionFlags::Synchronizing),
itemFor(SyncthingStatusComputionFlags::RemoteSynchronizing),
itemFor(SyncthingStatusComputionFlags::NoRemoteConnected),
itemFor(SyncthingStatusComputionFlags::DevicePaused),
itemFor(SyncthingStatusComputionFlags::OutOfSync),
itemFor(SyncthingStatusComputionFlags::UnreadNotifications),
});
}
QString SyncthingStatusComputionModel::labelForId(const QVariant &id) const
{
switch (static_cast<SyncthingStatusComputionFlags>(id.toInt())) {
case SyncthingStatusComputionFlags::Scanning:
return tr("Local dir is scanning");
case SyncthingStatusComputionFlags::Synchronizing:
return tr("Local dir is synchronizing");
case SyncthingStatusComputionFlags::RemoteSynchronizing:
return tr("Remote dir has outstanding progress");
case SyncthingStatusComputionFlags::NoRemoteConnected:
return tr("No remote device connected");
case SyncthingStatusComputionFlags::DevicePaused:
return tr("A device is paused");
case SyncthingStatusComputionFlags::OutOfSync:
return tr("Local dir is out of sync");
case SyncthingStatusComputionFlags::UnreadNotifications:
return tr("Unread notification present");
default:
return id.toString();
}
}
SyncthingStatusComputionFlags SyncthingStatusComputionModel::statusComputionFlags() const
{
auto flags = SyncthingStatusComputionFlags::None;
for (auto row = 0, rows = rowCount(); row != rows; ++row) {
const auto i = index(row);
if (i.data(Qt::CheckStateRole).toInt() == Qt::Checked) {
flags += static_cast<SyncthingStatusComputionFlags>(i.data(idRole()).value<UnderlyingFlagType>());
}
}
return flags;
}
void SyncthingStatusComputionModel::setStatusComputionFlags(SyncthingStatusComputionFlags flags)
{
for (auto row = 0, rows = rowCount(); row != rows; ++row) {
const auto i = index(row);
setData(i, flags && static_cast<FlagType>(i.data(idRole()).value<UnderlyingFlagType>()) ? Qt::Checked : Qt::Unchecked, Qt::CheckStateRole);
}
}
} // namespace Data
|