From 74c9af0432f6c2142be1387f16c481173c03a4ba Mon Sep 17 00:00:00 2001
From: Nicolas Werner <nicolas.werner@hotmail.de>
Date: Tue, 19 Jan 2021 03:16:59 +0100
Subject: [PATCH] Fix presence unknown type warning

---
 src/UserSettingsPage.cpp | 18 +++++++++++-------
 src/main.cpp             |  3 ---
 2 files changed, 11 insertions(+), 10 deletions(-)

diff --git a/src/UserSettingsPage.cpp b/src/UserSettingsPage.cpp
index 331c51a2b..f90938c92 100644
--- a/src/UserSettingsPage.cpp
+++ b/src/UserSettingsPage.cpp
@@ -97,12 +97,14 @@ UserSettings::load(std::optional<QString> profile)
         decryptSidebar_      = settings.value("user/decrypt_sidebar", true).toBool();
         shareKeysWithTrustedUsers_ =
           settings.value("user/share_keys_with_trusted_users", true).toBool();
-        mobileMode_   = settings.value("user/mobile_mode", false).toBool();
-        emojiFont_    = settings.value("user/emoji_font_family", "default").toString();
-        baseFontSize_ = settings.value("user/font_size", QFont().pointSizeF()).toDouble();
-        presence_ =
-          settings.value("user/presence", QVariant::fromValue(Presence::AutomaticPresence))
-            .value<Presence>();
+        mobileMode_        = settings.value("user/mobile_mode", false).toBool();
+        emojiFont_         = settings.value("user/emoji_font_family", "default").toString();
+        baseFontSize_      = settings.value("user/font_size", QFont().pointSizeF()).toDouble();
+        auto tempPresence  = settings.value("user/presence", "").toString().toStdString();
+        auto presenceValue = QMetaEnum::fromType<Presence>().keyToValue(tempPresence.c_str());
+        if (presenceValue < 0)
+                presenceValue = 0;
+        presence_         = static_cast<Presence>(presenceValue);
         ringtone_         = settings.value("user/ringtone", "Default").toString();
         microphone_       = settings.value("user/microphone", QString()).toString();
         camera_           = settings.value("user/camera", QString()).toString();
@@ -542,7 +544,9 @@ UserSettings::save()
         settings.setValue("theme", theme());
         settings.setValue("font_family", font_);
         settings.setValue("emoji_font_family", emojiFont_);
-        settings.setValue("presence", QVariant::fromValue(presence_));
+        settings.setValue("presence",
+                          QString::fromUtf8(QMetaEnum::fromType<Presence>().valueToKey(
+                            static_cast<int>(presence_))));
         settings.setValue("ringtone", ringtone_);
         settings.setValue("microphone", microphone_);
         settings.setValue("camera", camera_);
diff --git a/src/main.cpp b/src/main.cpp
index a0b72be79..b1dfa9f67 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -106,9 +106,6 @@ createCacheDirectory()
 int
 main(int argc, char *argv[])
 {
-        // needed for settings so need to register before any settings are read to prevent warnings
-        qRegisterMetaType<UserSettings::Presence>();
-
         QCoreApplication::setApplicationName("nheko");
         QCoreApplication::setApplicationVersion(nheko::version);
         QCoreApplication::setOrganizationName("nheko");
-- 
GitLab