Compare commits

...

2 Commits

8 changed files with 31 additions and 15 deletions

View File

@@ -35,7 +35,6 @@ void ActionsHandler::setRoom(NeoChatRoom *room)
} }
m_room = room; m_room = room;
Q_EMIT roomChanged();
} }
void ActionsHandler::handleMessageEvent(ChatBarCache *chatBarCache) void ActionsHandler::handleMessageEvent(ChatBarCache *chatBarCache)

View File

@@ -35,20 +35,18 @@ class ActionsHandler : public QObject
{ {
Q_OBJECT Q_OBJECT
QML_ELEMENT QML_ELEMENT
QML_UNCREATABLE("")
/**
* @brief The room that messages will be sent to.
*/
Q_PROPERTY(NeoChatRoom *room READ room WRITE setRoom NOTIFY roomChanged)
public: public:
explicit ActionsHandler(QObject *parent = nullptr); explicit ActionsHandler(QObject *parent = nullptr);
/**
* @brief The room that messages will be sent to.
*/
[[nodiscard]] NeoChatRoom *room() const; [[nodiscard]] NeoChatRoom *room() const;
void setRoom(NeoChatRoom *room); void setRoom(NeoChatRoom *room);
Q_SIGNALS: Q_SIGNALS:
void roomChanged();
void showEffect(const QString &effect); void showEffect(const QString &effect);
public Q_SLOTS: public Q_SLOTS:

View File

@@ -478,7 +478,7 @@ QQC2.Control {
} }
function postMessage() { function postMessage() {
actionsHandler.handleMessageEvent(_private.chatBarCache); RoomManager.actionsHandler.handleMessageEvent(_private.chatBarCache);
repeatTimer.stop() repeatTimer.stop()
root.currentRoom.markAllMessagesAsRead(); root.currentRoom.markAllMessagesAsRead();
textField.clear(); textField.clear();

View File

@@ -137,7 +137,7 @@ QQC2.TextArea {
} }
function postEdit() { function postEdit() {
actionsHandler.handleMessageEvent(_private.chatBarCache); RoomManager.actionsHandler.handleMessageEvent(_private.chatBarCache);
root.clear(); root.clear();
_private.chatBarCache.editId = ""; _private.chatBarCache.editId = "";
} }

View File

@@ -139,11 +139,6 @@ Kirigami.Page {
} }
} }
ActionsHandler {
id: actionsHandler
room: root.currentRoom
}
Shortcut { Shortcut {
sequence: StandardKey.Cancel sequence: StandardKey.Cancel
onActivated: { onActivated: {

View File

@@ -292,7 +292,7 @@ QQC2.ScrollView {
Connections { Connections {
enabled: Config.showFancyEffects enabled: Config.showFancyEffects
target: actionsHandler target: RoomManager.actionsHandler
function onShowEffect(fancyEffect) { function onShowEffect(fancyEffect) {
fancyEffectsContainer.processFancyEffectsReason(fancyEffect) fancyEffectsContainer.processFancyEffectsReason(fancyEffect)

View File

@@ -4,6 +4,7 @@
#include "roommanager.h" #include "roommanager.h"
#include "actionshandler.h"
#include "chatbarcache.h" #include "chatbarcache.h"
#include "controller.h" #include "controller.h"
#include "enums/delegatetype.h" #include "enums/delegatetype.h"
@@ -29,6 +30,7 @@ RoomManager::RoomManager(QObject *parent)
, m_currentRoom(nullptr) , m_currentRoom(nullptr)
, m_lastCurrentRoom(nullptr) , m_lastCurrentRoom(nullptr)
, m_config(KSharedConfig::openStateConfig()) , m_config(KSharedConfig::openStateConfig())
, m_actionsHandler(new ActionsHandler(this))
, m_messageEventModel(new MessageEventModel(this)) , m_messageEventModel(new MessageEventModel(this))
, m_messageFilterModel(new MessageFilterModel(this, m_messageEventModel)) , m_messageFilterModel(new MessageFilterModel(this, m_messageEventModel))
, m_mediaMessageFilterModel(new MediaMessageFilterModel(this, m_messageFilterModel)) , m_mediaMessageFilterModel(new MediaMessageFilterModel(this, m_messageFilterModel))
@@ -36,6 +38,7 @@ RoomManager::RoomManager(QObject *parent)
m_lastRoomConfig = m_config->group(QStringLiteral("LastOpenRoom")); m_lastRoomConfig = m_config->group(QStringLiteral("LastOpenRoom"));
connect(this, &RoomManager::currentRoomChanged, this, [this]() { connect(this, &RoomManager::currentRoomChanged, this, [this]() {
m_actionsHandler->setRoom(m_currentRoom);
m_messageEventModel->setRoom(m_currentRoom); m_messageEventModel->setRoom(m_currentRoom);
}); });
} }
@@ -55,6 +58,11 @@ NeoChatRoom *RoomManager::currentRoom() const
return m_currentRoom; return m_currentRoom;
} }
ActionsHandler *RoomManager::actionsHandler() const
{
return m_actionsHandler;
}
MessageEventModel *RoomManager::messageEventModel() const MessageEventModel *RoomManager::messageEventModel() const
{ {
return m_messageEventModel; return m_messageEventModel;

View File

@@ -10,6 +10,7 @@
#include <Quotient/room.h> #include <Quotient/room.h>
#include <Quotient/uriresolver.h> #include <Quotient/uriresolver.h>
#include "actionshandler.h"
#include "chatdocumenthandler.h" #include "chatdocumenthandler.h"
#include "enums/delegatetype.h" #include "enums/delegatetype.h"
#include "models/mediamessagefiltermodel.h" #include "models/mediamessagefiltermodel.h"
@@ -44,6 +45,17 @@ class RoomManager : public QObject, public UriResolverBase
*/ */
Q_PROPERTY(NeoChatRoom *currentRoom READ currentRoom NOTIFY currentRoomChanged) Q_PROPERTY(NeoChatRoom *currentRoom READ currentRoom NOTIFY currentRoomChanged)
/**
* @brief The ActionsHandler that should be used when sending messages.
*
* The room object the object uses will be updated by this class so there is no
* need to do this manually or replace the object when a room changes.
*
* @note Available here so that the room page and drawer both have access to the
* same model.
*/
Q_PROPERTY(ActionsHandler *actionsHandler READ actionsHandler CONSTANT)
/** /**
* @brief The MessageEventModel that should be used for room message visualisation. * @brief The MessageEventModel that should be used for room message visualisation.
* *
@@ -98,6 +110,8 @@ public:
NeoChatRoom *currentRoom() const; NeoChatRoom *currentRoom() const;
ActionsHandler *actionsHandler() const;
MessageEventModel *messageEventModel() const; MessageEventModel *messageEventModel() const;
MessageFilterModel *messageFilterModel() const; MessageFilterModel *messageFilterModel() const;
MediaMessageFilterModel *mediaMessageFilterModel() const; MediaMessageFilterModel *mediaMessageFilterModel() const;
@@ -375,6 +389,8 @@ private:
KConfigGroup m_lastRoomConfig; KConfigGroup m_lastRoomConfig;
QPointer<ChatDocumentHandler> m_chatDocumentHandler; QPointer<ChatDocumentHandler> m_chatDocumentHandler;
ActionsHandler *m_actionsHandler;
MessageEventModel *m_messageEventModel; MessageEventModel *m_messageEventModel;
MessageFilterModel *m_messageFilterModel; MessageFilterModel *m_messageFilterModel;
MediaMessageFilterModel *m_mediaMessageFilterModel; MediaMessageFilterModel *m_mediaMessageFilterModel;