syncthingtray/connector/syncthingdev.h

73 lines
1.8 KiB
C
Raw Normal View History

#ifndef DATA_SYNCTHINGDEV_H
#define DATA_SYNCTHINGDEV_H
#include "./global.h"
#include <c++utilities/chrono/datetime.h>
2017-05-01 03:34:43 +02:00
#include <QMetaType>
#include <QString>
#include <QStringList>
namespace Data {
2019-09-27 16:48:58 +02:00
/// \brief The SyncthingDevStatus enum represents a Syncthing device status.
/// \remarks The device status is not directly provided by Syncthing and instead deduced by this library from
/// other information and events.
2017-05-01 03:34:43 +02:00
enum class SyncthingDevStatus { Unknown, Disconnected, OwnDevice, Idle, Synchronizing, OutOfSync, Rejected };
QString statusString(SyncthingDevStatus status);
2017-05-01 03:34:43 +02:00
struct LIB_SYNCTHING_CONNECTOR_EXPORT SyncthingDev {
2016-11-01 17:06:31 +01:00
SyncthingDev(const QString &id = QString(), const QString &name = QString());
2017-02-20 21:00:18 +01:00
QString statusString() const;
bool isConnected() const;
const QString displayName() const;
2017-02-20 21:00:18 +01:00
QString id;
QString name;
QStringList addresses;
QString compression;
QString certName;
2018-11-02 23:37:35 +01:00
SyncthingDevStatus status = SyncthingDevStatus::Unknown;
int progressPercentage = 0;
int progressRate = 0;
bool introducer = false;
bool paused = false;
2019-03-13 19:12:23 +01:00
std::uint64_t totalIncomingTraffic = 0;
std::uint64_t totalOutgoingTraffic = 0;
QString connectionAddress;
QString connectionType;
QString clientVersion;
2019-06-10 22:48:26 +02:00
CppUtilities::DateTime lastSeen;
};
2017-05-01 03:34:43 +02:00
inline SyncthingDev::SyncthingDev(const QString &id, const QString &name)
: id(id)
, name(name)
{
}
2016-11-01 17:06:31 +01:00
inline bool SyncthingDev::isConnected() const
{
switch (status) {
case SyncthingDevStatus::Unknown:
case SyncthingDevStatus::Disconnected:
case SyncthingDevStatus::OwnDevice:
return false;
default:
return true;
}
}
inline const QString SyncthingDev::displayName() const
{
return name.isEmpty() ? id : name;
}
} // namespace Data
Q_DECLARE_METATYPE(Data::SyncthingDev)
#endif // DATA_SYNCTHINGDEV_H