syncthingtray/connector/utils.h

58 lines
1.8 KiB
C
Raw Normal View History

2016-09-01 16:34:30 +02:00
#ifndef DATA_UTILS_H
#define DATA_UTILS_H
#include "./global.h"
#include <c++utilities/conversion/types.h>
2018-01-25 00:03:31 +01:00
#include <c++utilities/misc/traits.h>
#include <QJsonValue>
2017-02-22 18:16:41 +01:00
#include <QStringList>
2016-09-01 16:34:30 +02:00
2017-08-24 00:00:57 +02:00
#include <limits>
#include <vector>
2017-08-24 00:00:57 +02:00
QT_FORWARD_DECLARE_CLASS(QUrl)
QT_FORWARD_DECLARE_CLASS(QJsonObject)
2016-09-01 16:34:30 +02:00
namespace ChronoUtilities {
class DateTime;
}
namespace Data {
struct SyncthingStatistics;
struct SyncthingDir;
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(const Data::SyncthingStatistics &stats);
QString LIB_SYNCTHING_CONNECTOR_EXPORT syncCompleteString(const std::vector<const SyncthingDir *> &completedDirs);
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);
2016-09-01 16:34:30 +02:00
2018-01-25 00:03:31 +01:00
template <typename IntType = quint64, Traits::EnableIf<std::is_integral<IntType>>...>
inline IntType LIB_SYNCTHING_CONNECTOR_EXPORT jsonValueToInt(const QJsonValue &value, double defaultValue = 0.0)
{
2018-01-25 00:03:31 +01:00
return static_cast<IntType>(value.toDouble(defaultValue));
}
2017-08-24 00:00:57 +02:00
constexpr int LIB_SYNCTHING_CONNECTOR_EXPORT trQuandity(quint64 quandity)
{
return quandity > std::numeric_limits<int>::max() ? std::numeric_limits<int>::max() : static_cast<int>(quandity);
}
2017-05-01 03:34:43 +02:00
template <class Objects> QStringList LIB_SYNCTHING_CONNECTOR_EXPORT ids(const Objects &objects)
2017-02-22 18:16:41 +01:00
{
QStringList ids;
ids.reserve(objects.size());
2017-05-01 03:34:43 +02:00
for (const auto &object : objects) {
2017-02-22 18:16:41 +01:00
ids << object.id;
}
return ids;
}
} // namespace Data
2016-09-01 16:34:30 +02:00
#endif // DATA_UTILS_H