From 83b7e7d1219aed5ca5c0d34b962a81c67d23ab7e Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Thu, 19 Oct 2023 16:35:05 -0400 Subject: [PATCH] Use KSharedConfig::openStateConfig() instead of using a "data" file This function will automatically create a "neochatstarerc" for us, and KConfig will decide the best place for us to place our state. It won't always be in AppDataLocation. --- src/models/serverlistmodel.cpp | 21 +++++++++++++-------- src/roomlastmessageprovider.cpp | 2 +- src/roommanager.cpp | 4 ++-- src/roommanager.h | 4 ++-- src/windowcontroller.cpp | 13 +++++++++---- 5 files changed, 27 insertions(+), 17 deletions(-) diff --git a/src/models/serverlistmodel.cpp b/src/models/serverlistmodel.cpp index 893e6ab8f..239004f84 100644 --- a/src/models/serverlistmodel.cpp +++ b/src/models/serverlistmodel.cpp @@ -11,12 +11,13 @@ #include #include +#include ServerListModel::ServerListModel(QObject *parent) : QAbstractListModel(parent) { - KConfig dataResource(QStringLiteral("data"), KConfig::SimpleConfig, QStandardPaths::AppDataLocation); - KConfigGroup serverGroup(&dataResource, QStringLiteral("Servers")); + const auto stateConfig = KSharedConfig::openStateConfig(); + const KConfigGroup serverGroup = stateConfig->group(QStringLiteral("Servers")); QString domain = Controller::instance().activeConnection()->domain(); @@ -91,8 +92,8 @@ int ServerListModel::rowCount(const QModelIndex &parent) const void ServerListModel::checkServer(const QString &url) { - KConfig dataResource(QStringLiteral("data"), KConfig::SimpleConfig, QStandardPaths::AppDataLocation); - KConfigGroup serverGroup(&dataResource, QStringLiteral("Servers")); + const auto stateConfig = KSharedConfig::openStateConfig(); + const KConfigGroup serverGroup = stateConfig->group(QStringLiteral("Servers")); if (!serverGroup.hasKey(url)) { if (Quotient::isJobPending(m_checkServerJob)) { @@ -108,8 +109,8 @@ void ServerListModel::checkServer(const QString &url) void ServerListModel::addServer(const QString &url) { - KConfig dataResource(QStringLiteral("data"), KConfig::SimpleConfig, QStandardPaths::AppDataLocation); - KConfigGroup serverGroup(&dataResource, QStringLiteral("Servers")); + const auto stateConfig = KSharedConfig::openStateConfig(); + KConfigGroup serverGroup = stateConfig->group(QStringLiteral("Servers")); if (!serverGroup.hasKey(url)) { Server newServer = Server{ @@ -125,17 +126,21 @@ void ServerListModel::addServer(const QString &url) } serverGroup.writeEntry(url, url); + stateConfig->sync(); } void ServerListModel::removeServerAtIndex(int row) { - KConfig dataResource(QStringLiteral("data"), KConfig::SimpleConfig, QStandardPaths::AppDataLocation); - KConfigGroup serverGroup(&dataResource, QStringLiteral("Servers")); + const auto stateConfig = KSharedConfig::openStateConfig(); + KConfigGroup serverGroup = stateConfig->group(QStringLiteral("Servers")); + serverGroup.deleteEntry(data(index(row), UrlRole).toString()); beginRemoveRows(QModelIndex(), row, row); m_servers.removeAt(row); endRemoveRows(); + + stateConfig->sync(); } QHash ServerListModel::roleNames() const diff --git a/src/roomlastmessageprovider.cpp b/src/roomlastmessageprovider.cpp index ca151604c..0d600c24a 100644 --- a/src/roomlastmessageprovider.cpp +++ b/src/roomlastmessageprovider.cpp @@ -6,7 +6,7 @@ using namespace Qt::Literals::StringLiterals; RoomLastMessageProvider::RoomLastMessageProvider() - : m_config(KSharedConfig::openConfig(u"data"_s, KConfig::SimpleConfig, QStandardPaths::AppDataLocation)) + : m_config(KSharedConfig::openStateConfig()) , m_configGroup(KConfigGroup(m_config, u"EventCache"_s)) { } diff --git a/src/roommanager.cpp b/src/roommanager.cpp index ccd859b76..8aa18ebaf 100644 --- a/src/roommanager.cpp +++ b/src/roommanager.cpp @@ -28,12 +28,12 @@ RoomManager::RoomManager(QObject *parent) : QObject(parent) , m_currentRoom(nullptr) , m_lastCurrentRoom(nullptr) - , m_config(KConfig(QStringLiteral("data"), KConfig::SimpleConfig, QStandardPaths::AppDataLocation)) + , m_config(KSharedConfig::openStateConfig()) , m_messageEventModel(new MessageEventModel(this)) , m_messageFilterModel(new MessageFilterModel(this, m_messageEventModel)) , m_mediaMessageFilterModel(new MediaMessageFilterModel(this, m_messageFilterModel)) { - m_lastRoomConfig = m_config.group(QStringLiteral("LastOpenRoom")); + m_lastRoomConfig = m_config->group(QStringLiteral("LastOpenRoom")); connect(this, &RoomManager::currentRoomChanged, this, [this]() { m_messageEventModel->setRoom(m_currentRoom); diff --git a/src/roommanager.h b/src/roommanager.h index d49a9c0d7..21fb614dd 100644 --- a/src/roommanager.h +++ b/src/roommanager.h @@ -3,8 +3,8 @@ #pragma once -#include #include +#include #include #include #include @@ -371,7 +371,7 @@ private: NeoChatRoom *m_currentRoom; NeoChatRoom *m_lastCurrentRoom; QString m_arg; - KConfig m_config; + KSharedConfig::Ptr m_config; KConfigGroup m_lastRoomConfig; QPointer m_chatDocumentHandler; diff --git a/src/windowcontroller.cpp b/src/windowcontroller.cpp index 6059b82a9..15259e5a6 100644 --- a/src/windowcontroller.cpp +++ b/src/windowcontroller.cpp @@ -13,6 +13,7 @@ #include #endif +#include #include WindowController &WindowController::instance() @@ -35,18 +36,22 @@ QWindow *WindowController::window() const void WindowController::restoreGeometry() { - KConfig dataResource(QStringLiteral("data"), KConfig::SimpleConfig, QStandardPaths::AppDataLocation); - KConfigGroup windowGroup(&dataResource, QStringLiteral("Window")); + const auto stateConfig = KSharedConfig::openStateConfig(); + const KConfigGroup windowGroup = stateConfig->group(QStringLiteral("Window")); + KWindowConfig::restoreWindowSize(m_window, windowGroup); KWindowConfig::restoreWindowPosition(m_window, windowGroup); } void WindowController::saveGeometry() { - KConfig dataResource(QStringLiteral("data"), KConfig::SimpleConfig, QStandardPaths::AppDataLocation); - KConfigGroup windowGroup(&dataResource, QStringLiteral("Window")); + const auto stateConfig = KSharedConfig::openStateConfig(); + KConfigGroup windowGroup = stateConfig->group(QStringLiteral("Window")); + KWindowConfig::saveWindowPosition(m_window, windowGroup); KWindowConfig::saveWindowSize(m_window, windowGroup); + + stateConfig->sync(); } void WindowController::showAndRaiseWindow(const QString &startupId)