diff options
Diffstat (limited to 'lang/qt/src/qgpgmenewcryptoconfig.cpp')
-rw-r--r-- | lang/qt/src/qgpgmenewcryptoconfig.cpp | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/lang/qt/src/qgpgmenewcryptoconfig.cpp b/lang/qt/src/qgpgmenewcryptoconfig.cpp index b93db760..32bf888c 100644 --- a/lang/qt/src/qgpgmenewcryptoconfig.cpp +++ b/lang/qt/src/qgpgmenewcryptoconfig.cpp @@ -43,6 +43,7 @@ #include <QFile> #include <QDir> +#include <QList> #include "global.h" #include "error.h" @@ -710,6 +711,57 @@ bool QGpgMENewCryptoConfigEntry::isDirty() const return m_option.dirty(); } +QVariant QGpgMENewCryptoConfigEntry::defaultValue() const +{ + const auto defaultValue = m_option.defaultValue(); + if (defaultValue.isNull() || defaultValue.numElements() == 0) { + return {}; + } + if (defaultValue.numElements() == 1) { + switch (m_option.alternateType()) { + case NoType: + return QVariant{defaultValue.boolValue()}; + case StringType: + return QVariant{QString::fromUtf8(defaultValue.stringValue())}; + case IntegerType: + return QVariant{defaultValue.intValue()}; + case UnsignedIntegerType: + return QVariant{defaultValue.uintValue()}; + default: + // alternateType should always be one of the above four types + qCWarning(QGPGME_LOG) << __func__ << ": unsupported alternateType" << m_option.alternateType(); + } + } else { + QList<QVariant> list; + switch (m_option.alternateType()) { + case StringType: { + const auto values = defaultValue.stringValues(); + std::transform(std::begin(values), std::end(values), std::back_inserter(list), + [] (const char *value) { return QVariant{QString::fromUtf8(value)}; }); + break; + } + case IntegerType: { + const auto values = defaultValue.intValues(); + std::transform(std::begin(values), std::end(values), std::back_inserter(list), + [] (int value) { return QVariant{value}; }); + break; + } + case UnsignedIntegerType: { + const auto values = defaultValue.uintValues(); + std::transform(std::begin(values), std::end(values), std::back_inserter(list), + [] (unsigned int value) { return QVariant{value}; }); + break; + } + default: + // alternateType should always be one of the above four types + qCWarning(QGPGME_LOG) << __func__ << ": unsupported alternateType" << m_option.alternateType() << "for list"; + } + return QVariant{list}; + } + + return {}; +} + #if 0 QString QGpgMENewCryptoConfigEntry::toString(bool escape) const { |