From 3a4bc18d453be6bd6ea465e668a34c04ca19960e Mon Sep 17 00:00:00 2001 From: James Graham Date: Sat, 12 Apr 2025 20:14:59 +0100 Subject: [PATCH] Move more stuff to settings --- src/CMakeLists.txt | 15 ------------ src/controller.cpp | 6 +++++ src/libneochat/CMakeLists.txt | 2 ++ .../models/imagepacksmodel.cpp | 0 src/{ => libneochat}/models/imagepacksmodel.h | 0 src/{ => libneochat}/models/stickermodel.cpp | 0 src/{ => libneochat}/models/stickermodel.h | 0 src/libneochat/neochatconnection.cpp | 11 +++++++++ src/libneochat/neochatconnection.h | 12 ++++++++++ src/settings/CMakeLists.txt | 10 ++++++++ .../models/accountemoticonmodel.cpp | 0 .../models/accountemoticonmodel.h | 0 src/{ => settings}/models/devicesmodel.cpp | 3 ++- src/{ => settings}/models/devicesmodel.h | 0 .../models/devicesproxymodel.cpp | 0 src/{ => settings}/models/devicesproxymodel.h | 0 .../models/emoticonfiltermodel.cpp | 2 +- .../models/emoticonfiltermodel.h | 0 .../models/permissionsmodel.cpp | 0 src/{ => settings}/models/permissionsmodel.h | 0 src/{ => settings}/models/pushrulemodel.cpp | 24 +++++-------------- src/{ => settings}/models/pushrulemodel.h | 10 -------- 22 files changed, 50 insertions(+), 45 deletions(-) rename src/{ => libneochat}/models/imagepacksmodel.cpp (100%) rename src/{ => libneochat}/models/imagepacksmodel.h (100%) rename src/{ => libneochat}/models/stickermodel.cpp (100%) rename src/{ => libneochat}/models/stickermodel.h (100%) rename src/{ => settings}/models/accountemoticonmodel.cpp (100%) rename src/{ => settings}/models/accountemoticonmodel.h (100%) rename src/{ => settings}/models/devicesmodel.cpp (99%) rename src/{ => settings}/models/devicesmodel.h (100%) rename src/{ => settings}/models/devicesproxymodel.cpp (100%) rename src/{ => settings}/models/devicesproxymodel.h (100%) rename src/{ => settings}/models/emoticonfiltermodel.cpp (98%) rename src/{ => settings}/models/emoticonfiltermodel.h (100%) rename src/{ => settings}/models/permissionsmodel.cpp (100%) rename src/{ => settings}/models/permissionsmodel.h (100%) rename src/{ => settings}/models/pushrulemodel.cpp (96%) rename src/{ => settings}/models/pushrulemodel.h (91%) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 2d5b5c92c..1315c7fae 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -17,8 +17,6 @@ add_library(neochat STATIC models/roomlistmodel.h models/sortfilterspacelistmodel.cpp models/sortfilterspacelistmodel.h - models/accountemoticonmodel.cpp - models/accountemoticonmodel.h roommanager.cpp roommanager.h models/userlistmodel.cpp @@ -35,10 +33,6 @@ add_library(neochat STATIC models/spacetreeitem.h models/userdirectorylistmodel.cpp models/userdirectorylistmodel.h - models/pushrulemodel.cpp - models/pushrulemodel.h - models/emoticonfiltermodel.cpp - models/emoticonfiltermodel.h notificationsmanager.cpp notificationsmanager.h models/sortfilterroomlistmodel.cpp @@ -47,9 +41,6 @@ add_library(neochat STATIC models/roomtreemodel.h chatdocumenthandler.cpp chatdocumenthandler.h - models/devicesmodel.cpp - models/devicesmodel.h - models/devicesproxymodel.cpp login.cpp login.h models/webshortcutmodel.cpp @@ -72,10 +63,6 @@ add_library(neochat STATIC models/statefiltermodel.h logger.cpp logger.h - models/stickermodel.cpp - models/stickermodel.h - models/imagepacksmodel.cpp - models/imagepacksmodel.h models/livelocationsmodel.cpp models/livelocationsmodel.h models/locationsmodel.cpp @@ -111,8 +98,6 @@ add_library(neochat STATIC threepidaddhelper.h identityserverhelper.cpp identityserverhelper.h - models/permissionsmodel.cpp - models/permissionsmodel.h threepidbindhelper.cpp threepidbindhelper.h enums/roomsortparameter.cpp diff --git a/src/controller.cpp b/src/controller.cpp index 0f50a04a5..034d548b6 100644 --- a/src/controller.cpp +++ b/src/controller.cpp @@ -21,6 +21,7 @@ #include "models/actionsmodel.h" #include "models/messagemodel.h" +#include "models/pushrulemodel.h" #include "neochatconfig.h" #include "neochatconnection.h" #include "neochatroom.h" @@ -65,6 +66,11 @@ Controller::Controller(QObject *parent) Q_EMIT globalUrlPreviewDefaultChanged(); }); + NeoChatConnection::setKeywordPushRuleDefault(static_cast(NeoChatConfig::keywordPushRuleDefault())); + connect(NeoChatConfig::self(), &NeoChatConfig::KeywordPushRuleDefaultChanged, this, [] { + NeoChatConnection::setKeywordPushRuleDefault(static_cast(NeoChatConfig::keywordPushRuleDefault())); + }); + ActionsModel::setAllowQuickEdit(NeoChatConfig::allowQuickEdit()); connect(NeoChatConfig::self(), &NeoChatConfig::AllowQuickEditChanged, this, []() { ActionsModel::setAllowQuickEdit(NeoChatConfig::allowQuickEdit()); diff --git a/src/libneochat/CMakeLists.txt b/src/libneochat/CMakeLists.txt index 759eb454b..d70e3b32f 100644 --- a/src/libneochat/CMakeLists.txt +++ b/src/libneochat/CMakeLists.txt @@ -29,6 +29,8 @@ target_sources(LibNeoChat PRIVATE models/actionsmodel.cpp models/customemojimodel.cpp models/emojimodel.cpp + models/imagepacksmodel.cpp + models/stickermodel.cpp ) ecm_add_qml_module(LibNeoChat GENERATE_PLUGIN_SOURCE diff --git a/src/models/imagepacksmodel.cpp b/src/libneochat/models/imagepacksmodel.cpp similarity index 100% rename from src/models/imagepacksmodel.cpp rename to src/libneochat/models/imagepacksmodel.cpp diff --git a/src/models/imagepacksmodel.h b/src/libneochat/models/imagepacksmodel.h similarity index 100% rename from src/models/imagepacksmodel.h rename to src/libneochat/models/imagepacksmodel.h diff --git a/src/models/stickermodel.cpp b/src/libneochat/models/stickermodel.cpp similarity index 100% rename from src/models/stickermodel.cpp rename to src/libneochat/models/stickermodel.cpp diff --git a/src/models/stickermodel.h b/src/libneochat/models/stickermodel.h similarity index 100% rename from src/models/stickermodel.h rename to src/libneochat/models/stickermodel.h diff --git a/src/libneochat/neochatconnection.cpp b/src/libneochat/neochatconnection.cpp index 4feb85bda..871853fbd 100644 --- a/src/libneochat/neochatconnection.cpp +++ b/src/libneochat/neochatconnection.cpp @@ -35,6 +35,7 @@ using namespace Quotient; using namespace Qt::StringLiterals; bool NeoChatConnection::m_globalUrlPreviewDefault = true; +PushRuleAction::Action NeoChatConnection::m_defaultAction = PushRuleAction::Unknown; NeoChatConnection::NeoChatConnection(QObject *parent) : Connection(parent) @@ -178,6 +179,16 @@ void NeoChatConnection::setGlobalUrlPreviewDefault(bool useByDefault) NeoChatConnection::m_globalUrlPreviewDefault = useByDefault; } +PushRuleAction::Action NeoChatConnection::keywordPushRuleDefault() const +{ + return m_defaultAction; +} + +void NeoChatConnection::setKeywordPushRuleDefault(PushRuleAction::Action defaultAction) +{ + NeoChatConnection::m_defaultAction = defaultAction; +} + void NeoChatConnection::logout(bool serverSideLogout) { SettingsGroup(u"Accounts"_s).remove(userId()); diff --git a/src/libneochat/neochatconnection.h b/src/libneochat/neochatconnection.h index 5aa1aba05..1daa5ae5c 100644 --- a/src/libneochat/neochatconnection.h +++ b/src/libneochat/neochatconnection.h @@ -13,6 +13,7 @@ #include #include "enums/messagetype.h" +#include "enums/pushrule.h" #include "linkpreviewer.h" class NeoChatConnection : public Quotient::Connection @@ -181,6 +182,16 @@ public: */ static void setGlobalUrlPreviewDefault(bool useByDefault); + /** + * @brief The current default PushRuleAction for keyword rules. + */ + PushRuleAction::Action keywordPushRuleDefault() const; + + /** + * @brief Set the current default PushRuleAction for keyword rules. + */ + static void setKeywordPushRuleDefault(PushRuleAction::Action defaultAction); + bool directChatInvites() const; // note: this is intentionally a copied QString because @@ -223,6 +234,7 @@ Q_SIGNALS: private: static bool m_globalUrlPreviewDefault; + static PushRuleAction::Action m_defaultAction; bool m_isOnline = true; void setIsOnline(bool isOnline); diff --git a/src/settings/CMakeLists.txt b/src/settings/CMakeLists.txt index 289e49659..9767f19eb 100644 --- a/src/settings/CMakeLists.txt +++ b/src/settings/CMakeLists.txt @@ -46,8 +46,18 @@ ecm_add_qml_module(Settings GENERATE_PLUGIN_SOURCE RoomProfile.qml SOURCES colorschemer.cpp + models/accountemoticonmodel.cpp + models/devicesmodel.cpp + models/devicesproxymodel.cpp + models/emoticonfiltermodel.cpp + models/permissionsmodel.cpp + models/pushrulemodel.cpp ) + +target_include_directories(Settings PRIVATE ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/models) target_link_libraries(Settings PRIVATE KF6::ColorScheme + QuotientQt6 + LibNeoChat ) diff --git a/src/models/accountemoticonmodel.cpp b/src/settings/models/accountemoticonmodel.cpp similarity index 100% rename from src/models/accountemoticonmodel.cpp rename to src/settings/models/accountemoticonmodel.cpp diff --git a/src/models/accountemoticonmodel.h b/src/settings/models/accountemoticonmodel.h similarity index 100% rename from src/models/accountemoticonmodel.h rename to src/settings/models/accountemoticonmodel.h diff --git a/src/models/devicesmodel.cpp b/src/settings/models/devicesmodel.cpp similarity index 99% rename from src/models/devicesmodel.cpp rename to src/settings/models/devicesmodel.cpp index bf5856729..1610efbe1 100644 --- a/src/models/devicesmodel.cpp +++ b/src/settings/models/devicesmodel.cpp @@ -136,7 +136,8 @@ void DevicesModel::logout(const QString &deviceId, const QString &password) void DevicesModel::setName(const QString &deviceId, const QString &name) { int index; - for (index = 0; m_devices[index].deviceId != deviceId; index++); + for (index = 0; m_devices[index].deviceId != deviceId; index++) + ; auto job = m_connection->callApi(m_devices[index].deviceId, name); QString oldName = m_devices[index].displayName; diff --git a/src/models/devicesmodel.h b/src/settings/models/devicesmodel.h similarity index 100% rename from src/models/devicesmodel.h rename to src/settings/models/devicesmodel.h diff --git a/src/models/devicesproxymodel.cpp b/src/settings/models/devicesproxymodel.cpp similarity index 100% rename from src/models/devicesproxymodel.cpp rename to src/settings/models/devicesproxymodel.cpp diff --git a/src/models/devicesproxymodel.h b/src/settings/models/devicesproxymodel.h similarity index 100% rename from src/models/devicesproxymodel.h rename to src/settings/models/devicesproxymodel.h diff --git a/src/models/emoticonfiltermodel.cpp b/src/settings/models/emoticonfiltermodel.cpp similarity index 98% rename from src/models/emoticonfiltermodel.cpp rename to src/settings/models/emoticonfiltermodel.cpp index e06d7ebc5..5301d15b0 100644 --- a/src/models/emoticonfiltermodel.cpp +++ b/src/settings/models/emoticonfiltermodel.cpp @@ -4,7 +4,7 @@ #include "emoticonfiltermodel.h" #include "accountemoticonmodel.h" -#include "stickermodel.h" +#include "models/stickermodel.h" EmoticonFilterModel::EmoticonFilterModel(QObject *parent) : QSortFilterProxyModel(parent) diff --git a/src/models/emoticonfiltermodel.h b/src/settings/models/emoticonfiltermodel.h similarity index 100% rename from src/models/emoticonfiltermodel.h rename to src/settings/models/emoticonfiltermodel.h diff --git a/src/models/permissionsmodel.cpp b/src/settings/models/permissionsmodel.cpp similarity index 100% rename from src/models/permissionsmodel.cpp rename to src/settings/models/permissionsmodel.cpp diff --git a/src/models/permissionsmodel.h b/src/settings/models/permissionsmodel.h similarity index 100% rename from src/models/permissionsmodel.h rename to src/settings/models/permissionsmodel.h diff --git a/src/models/pushrulemodel.cpp b/src/settings/models/pushrulemodel.cpp similarity index 96% rename from src/models/pushrulemodel.cpp rename to src/settings/models/pushrulemodel.cpp index 3b66b499d..69786a8a6 100644 --- a/src/models/pushrulemodel.cpp +++ b/src/settings/models/pushrulemodel.cpp @@ -10,7 +10,7 @@ #include #include -#include "neochatconfig.h" +#include "enums/pushrule.h" #include @@ -65,7 +65,6 @@ static const QStringList noHighlight = { PushRuleModel::PushRuleModel(QObject *parent) : QAbstractListModel(parent) { - m_defaultKeywordAction = static_cast(NeoChatConfig::self()->keywordPushRuleDefault()); } void PushRuleModel::updateNotificationRules(const QString &type) @@ -172,21 +171,6 @@ PushRuleSection::Section PushRuleModel::getSection(Quotient::PushRule rule) } } -PushRuleAction::Action PushRuleModel::defaultState() const -{ - return m_defaultKeywordAction; -} - -void PushRuleModel::setDefaultState(PushRuleAction::Action defaultState) -{ - if (defaultState == m_defaultKeywordAction) { - return; - } - m_defaultKeywordAction = defaultState; - NeoChatConfig::setKeywordPushRuleDefault(m_defaultKeywordAction); - Q_EMIT defaultStateChanged(); -} - bool PushRuleModel::globalNotificationsEnabled() const { auto masterIndex = getRuleIndex(u".m.rule.master"_s); @@ -292,8 +276,12 @@ void PushRuleModel::setPushRuleAction(const QString &id, PushRuleAction::Action void PushRuleModel::addKeyword(const QString &keyword, const QString &roomId) { + if (!m_connection) { + return; + } + PushRuleKind::Kind kind = PushRuleKind::Content; - const QList actions = actionToVariant(m_defaultKeywordAction); + const QList actions = actionToVariant(m_connection->keywordPushRuleDefault()); QList pushConditions; if (!roomId.isEmpty()) { kind = PushRuleKind::Override; diff --git a/src/models/pushrulemodel.h b/src/settings/models/pushrulemodel.h similarity index 91% rename from src/models/pushrulemodel.h rename to src/settings/models/pushrulemodel.h index 7ec684e4e..107936900 100644 --- a/src/models/pushrulemodel.h +++ b/src/settings/models/pushrulemodel.h @@ -23,11 +23,6 @@ class PushRuleModel : public QAbstractListModel Q_OBJECT QML_ELEMENT - /** - * @brief The default state for any newly created keyword rule. - */ - Q_PROPERTY(PushRuleAction::Action defaultState READ defaultState WRITE setDefaultState NOTIFY defaultStateChanged) - /** * @brief The global notification state. * @@ -72,9 +67,6 @@ public: explicit PushRuleModel(QObject *parent = nullptr); - [[nodiscard]] PushRuleAction::Action defaultState() const; - void setDefaultState(PushRuleAction::Action defaultState); - [[nodiscard]] bool globalNotificationsEnabled() const; void setGlobalNotificationsEnabled(bool enabled); @@ -117,7 +109,6 @@ public: NeoChatConnection *connection() const; Q_SIGNALS: - void defaultStateChanged(); void globalNotificationsEnabledChanged(); void globalNotificationsSetChanged(); void connectionChanged(); @@ -126,7 +117,6 @@ private Q_SLOTS: void updateNotificationRules(const QString &type); private: - PushRuleAction::Action m_defaultKeywordAction; QList m_rules; QPointer m_connection;