diff --git a/src/core/utilities.cpp b/src/core/utilities.cpp index 9a5748e3f..6996d7cef 100644 --- a/src/core/utilities.cpp +++ b/src/core/utilities.cpp @@ -35,6 +35,7 @@ #include #include #include +#include #if defined(Q_OS_UNIX) # include @@ -395,6 +396,17 @@ void ConsumeCurrentElement(QXmlStreamReader* reader) { } } +const char* EnumToString(const QMetaObject& meta, const char* name, int value) { + int index = meta.indexOfEnumerator(name); + if (index == -1) + return "[UnknownEnum]"; + QMetaEnum metaenum = meta.enumerator(index); + const char* result = metaenum.valueToKey(value); + if (result == 0) + return "[UnknownEnumValue]"; + return result; +} + } // namespace Utilities diff --git a/src/core/utilities.h b/src/core/utilities.h index bbc6105de..32ccfe03b 100644 --- a/src/core/utilities.h +++ b/src/core/utilities.h @@ -30,6 +30,7 @@ class QIODevice; class QMouseEvent; class QXmlStreamReader; +class QMetaObject; namespace Utilities { QString PrettyTime(int seconds); @@ -81,6 +82,11 @@ namespace Utilities { // file - whichever came first. void ConsumeCurrentElement(QXmlStreamReader* reader); + // Shortcut for getting a Qt-aware enum value as a string. + // Pass in the QMetaObject of the class that owns the enum, the string name of + // the enum and a valid value from that enum. + const char* EnumToString(const QMetaObject& meta, const char* name, int value); + enum ConfigPath { Path_Root,