summary refs log tree commit diff
path: root/src/UserSettingsPage.cpp
diff options
context:
space:
mode:
authorLorenDB <computersemiexpert@outlook.com>2020-11-09 21:28:41 -0500
committerLoren Burkholder <computersemiexpert@outlook.com>2020-12-24 21:16:46 -0500
commit53f45bdb1c9ee2b42b88ca4587775756f8daa124 (patch)
treeab8b89b8016d37dfb4a1e9e0aaae50a9d86b2d6f /src/UserSettingsPage.cpp
parentMerge pull request #357 from LorenDB/qkchdocs (diff)
downloadnheko-53f45bdb1c9ee2b42b88ca4587775756f8daa124.tar.xz
Switch profile code to a more flexible method
This introduces a new version of SingleApplication as well.
Diffstat (limited to 'src/UserSettingsPage.cpp')
-rw-r--r--src/UserSettingsPage.cpp72
1 files changed, 69 insertions, 3 deletions
diff --git a/src/UserSettingsPage.cpp b/src/UserSettingsPage.cpp
index 708fb7fd..55f666c1 100644
--- a/src/UserSettingsPage.cpp
+++ b/src/UserSettingsPage.cpp
@@ -89,6 +89,14 @@ UserSettings::load()
         cameraResolution_ = settings.value("user/camera_resolution", QString()).toString();
         cameraFrameRate_  = settings.value("user/camera_frame_rate", QString()).toString();
         useStunServer_    = settings.value("user/use_stun_server", false).toBool();
+        profile_          = settings.value("user/currentProfile", "").toString();
+
+        QString prefix =
+          (profile_ != "" && profile_ != "default") ? "profile/" + profile_ + "/" : "";
+        accessToken_ = settings.value(prefix + "auth/access_token", "").toString();
+        homeserver_  = settings.value(prefix + "auth/home_server", "").toString();
+        userId_      = settings.value(prefix + "auth/user_id", "").toString();
+        deviceId_    = settings.value(prefix + "auth/device_id", "").toString();
 
         applyTheme();
 }
@@ -373,6 +381,56 @@ UserSettings::setCameraFrameRate(QString frameRate)
 }
 
 void
+UserSettings::setProfile(QString profile)
+{
+        if (profile == profile_)
+                return;
+        profile_ = profile;
+        emit profileChanged(profile_);
+        save();
+}
+
+void
+UserSettings::setUserId(QString userId)
+{
+        if (userId == userId_)
+                return;
+        userId_ = userId;
+        emit userIdChanged(userId_);
+        save();
+}
+
+void
+UserSettings::setAccessToken(QString accessToken)
+{
+        if (accessToken == accessToken_)
+                return;
+        accessToken_ = accessToken;
+        emit accessTokenChanged(accessToken_);
+        save();
+}
+
+void
+UserSettings::setDeviceId(QString deviceId)
+{
+        if (deviceId == deviceId_)
+                return;
+        deviceId_ = deviceId;
+        emit deviceIdChanged(deviceId_);
+        save();
+}
+
+void
+UserSettings::setHomeserver(QString homeserver)
+{
+        if (homeserver == homeserver_)
+                return;
+        homeserver_ = homeserver;
+        emit homeserverChanged(homeserver_);
+        save();
+}
+
+void
 UserSettings::applyTheme()
 {
         QFile stylefile;
@@ -436,14 +494,14 @@ UserSettings::save()
         settings.beginGroup("window");
         settings.setValue("tray", tray_);
         settings.setValue("start_in_tray", startInTray_);
-        settings.endGroup();
+        settings.endGroup(); // window
 
         settings.beginGroup("timeline");
         settings.setValue("buttons", buttonsInTimeline_);
         settings.setValue("message_hover_highlight", messageHoverHighlight_);
         settings.setValue("enlarge_emoji_only_msg", enlargeEmojiOnlyMessages_);
         settings.setValue("max_width", timelineMaxWidth_);
-        settings.endGroup();
+        settings.endGroup(); // timeline
 
         settings.setValue("avatar_circles", avatarCircles_);
         settings.setValue("decrypt_sidebar", decryptSidebar_);
@@ -467,8 +525,16 @@ UserSettings::save()
         settings.setValue("camera_resolution", cameraResolution_);
         settings.setValue("camera_frame_rate", cameraFrameRate_);
         settings.setValue("use_stun_server", useStunServer_);
+        settings.setValue("currentProfile", profile_);
+
+        QString prefix =
+          (profile_ != "" && profile_ != "default") ? "profile/" + profile_ + "/" : "";
+        settings.setValue(prefix + "auth/access_token", accessToken_);
+        settings.setValue(prefix + "auth/home_server", homeserver_);
+        settings.setValue(prefix + "auth/user_id", userId_);
+        settings.setValue(prefix + "auth/device_id", deviceId_);
 
-        settings.endGroup();
+        settings.endGroup(); // user
 
         settings.sync();
 }