File indexing completed on 2024-05-12 05:12:48
0001 /* 0002 SPDX-FileCopyrightText: 2018 Daniel Vrátil <dvratil@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include <QDateTime> 0010 #include <QStandardItem> 0011 #include <QStringList> 0012 0013 #include <akonadi/private/protocol_p.h> 0014 0015 template<typename T> 0016 typename std::enable_if<std::is_integral<T>::value, QString>::type toString(T num) 0017 { 0018 return QString::number(num); 0019 } 0020 0021 inline QString toString(bool value) 0022 { 0023 return value ? QStringLiteral("true") : QStringLiteral("false"); 0024 } 0025 0026 inline QString toString(const QDateTime &dt) 0027 { 0028 return dt.toString(Qt::ISODate); 0029 } 0030 0031 inline QString toString(const QString &str) 0032 { 0033 return str; 0034 } 0035 0036 inline QString toString(const QByteArray &ba) 0037 { 0038 return QString::fromUtf8(ba); 0039 } 0040 0041 inline QString toString(Akonadi::Tristate tristate) 0042 { 0043 switch (tristate) { 0044 case Akonadi::Tristate::True: 0045 return QStringLiteral("true"); 0046 case Akonadi::Tristate::False: 0047 return QStringLiteral("false"); 0048 case Akonadi::Tristate::Undefined: 0049 return QStringLiteral("undefined"); 0050 } 0051 return {}; 0052 } 0053 0054 template<typename T, template<typename> class Container> 0055 QString toString(const Container<T> &set) 0056 { 0057 QStringList rv; 0058 for (const auto &v : set) { 0059 rv << toString(v); 0060 } 0061 return rv.join(QLatin1StringView(", ")); 0062 } 0063 0064 inline void appendRow(QStandardItemModel *model, const QString &name, const QString &value) 0065 { 0066 auto item = new QStandardItem(value); 0067 item->setToolTip(value); 0068 model->appendRow({new QStandardItem(name), item}); 0069 } 0070 0071 inline void appendRow(QStandardItem *parent, const QString &name, const QString &value) 0072 { 0073 auto item = new QStandardItem(value); 0074 item->setToolTip(value); 0075 parent->appendRow({new QStandardItem(name), item}); 0076 }