add conversions from dbus types to AssignableInfo

This commit is contained in:
Jussi Kuokkanen 2020-05-24 17:45:01 +03:00
parent 8b80c9c9a6
commit 32ed6c460d

View File

@ -1,10 +1,13 @@
#pragma once
#include <Device.hpp>
#include <QDBusArgument>
#include <QDBusVariant>
#include <QDBusMetaType>
#include <QVector>
namespace TC = TuxClocker;
namespace TuxClocker::DBus {
template <typename T>
@ -41,6 +44,17 @@ struct Range {
arg.endStructure();
return arg;
}
TC::Device::AssignableInfo toAssignableInfo() {
auto min_v = min.variant();
auto max_v = max.variant();
if (min_v.type() == QMetaType::Int && max_v.type() == QMetaType::Int)
return TC::Device::Range<int>(min_v.value<int>(), max_v.value<int>());
if (min_v.type() == QMetaType::Double && max_v.type() == QMetaType::Double)
return TC::Device::Range<double>(min_v.value<double>(), max_v.value<double>());
// Should never reach here
return TC::Device::Range<int>(0, 0);
}
};
struct Enumeration {
@ -60,6 +74,15 @@ struct Enumeration {
}
};
/* MOC crap doubles this somewhere
TC::Device::AssignableInfo enumVecToAssignableInfo(QVector<Enumeration> enums) {
TC::Device::EnumerationVec v;
for (const auto &e : enums)
v.push_back(TC::Device::Enumeration(e.name.toStdString(), e.key));
return v;
}
*/
struct DeviceNode {
QString interface;
QString path;