21 #ifndef SETTINGCONVERTER_H
22 #define SETTINGCONVERTER_H
24 #include "Utils/typedefs.h"
27 #include <QStringList>
45 QString toString(
const bool& val);
46 bool fromString(
const QString& val,
bool& b);
48 QString toString(
const int& val);
49 bool fromString(
const QString& val,
int& i);
51 template<typename T, typename = typename std::enable_if< std::is_enum<T>::value, T >::type>
52 QString toString(
const T& val)
54 int i =
static_cast<int>(val);
58 template <typename T, typename = typename std::enable_if< std::is_enum<T>::value, T >::type>
59 bool fromString(
const QString& val, T& e)
62 bool b = fromString(val, i);
64 e =
static_cast<T
>(i);
69 QString toString(
const float& val);
70 bool fromString(
const QString& val,
float& i);
72 QString toString(
const QStringList& val);
73 bool fromString(
const QString& val, QStringList& lst);
75 QString toString(
const QString& val);
76 bool fromString(
const QString& val, QString& b);
78 QString toString(
const QSize& val);
79 bool fromString(
const QString& val, QSize& sz);
81 QString toString(
const QPoint& val);
82 bool fromString(
const QString& val, QPoint& sz);
84 QString toString(
const QByteArray& arr);
85 bool fromString(
const QString& str, QByteArray& arr);
87 template<
typename A,
typename B>
90 return toString(arr.first) +
"," + toString(arr.second);
93 template<
typename A,
typename B>
94 bool fromString(
const QString& str,
QPair<A, B>& pair)
96 QStringList lst = str.split(
",");
100 fromString(lst[0], pair.first);
101 fromString(lst[1], pair.second);
104 return (lst.size() >= 2);
108 QString toString(
const QList<T>& val)
112 for(
const T& v : val) {
116 return lst.join(
",");
120 bool fromString(
const QString& val,
QList<T>& ret)
123 QStringList lst = val.split(
",");
125 for(
const QString& l : lst)
130 if(fromString(l, v)){
133 }
catch (std::exception& e) {
134 std::cerr << e.what() << std::endl;
142 #endif // SETTINGCONVERTER_H