diff --git a/imports/NeoChat/Component/ChatBox/AttachmentPane.qml b/imports/NeoChat/Component/ChatBox/AttachmentPane.qml
index 2de62ff21..9d47b5620 100644
--- a/imports/NeoChat/Component/ChatBox/AttachmentPane.qml
+++ b/imports/NeoChat/Component/ChatBox/AttachmentPane.qml
@@ -14,14 +14,14 @@ import NeoChat.Page 1.0
Loader {
id: root
- property var attachmentMimetype: FileType.mimeTypeForUrl(ChatBoxHelper.attachmentPath)
+ property var attachmentMimetype: FileType.mimeTypeForUrl(chatBoxHelper.attachmentPath)
readonly property bool hasImage: attachmentMimetype.valid && FileType.supportedImageFormats.includes(attachmentMimetype.preferredSuffix)
active: visible
sourceComponent: Component {
Pane {
id: attachmentPane
- property string baseFileName: ChatBoxHelper.attachmentPath.toString().substring(ChatBoxHelper.attachmentPath.toString().lastIndexOf('/') + 1, ChatBoxHelper.attachmentPath.length)
+ property string baseFileName: chatBoxHelper.attachmentPath.toString().substring(chatBoxHelper.attachmentPath.toString().lastIndexOf('/') + 1, chatBoxHelper.attachmentPath.length)
Kirigami.Theme.colorSet: Kirigami.Theme.View
contentItem: Item {
@@ -46,7 +46,7 @@ Loader {
asynchronous: true
cache: false // Cache is not needed. Images will rarely be shown repeatedly.
smooth: height == preferredHeight && parent.height == parent.implicitHeight // Don't smooth until height animation stops
- source: hasImage ? ChatBoxHelper.attachmentPath : ""
+ source: hasImage ? chatBoxHelper.attachmentPath : ""
visible: hasImage
fillMode: Image.PreserveAspectFit
@@ -162,14 +162,14 @@ Loader {
Component {
id: imageEditorPage
ImageEditorPage {
- imagePath: ChatBoxHelper.attachmentPath
+ imagePath: chatBoxHelper.attachmentPath
}
}
onClicked: {
let imageEditor = applicationWindow().pageStack.layers.push(imageEditorPage);
imageEditor.newPathChanged.connect(function(newPath) {
applicationWindow().pageStack.layers.pop();
- ChatBoxHelper.attachmentPath = newPath;
+ chatBoxHelper.attachmentPath = newPath;
});
}
ToolTip.text: text
@@ -180,7 +180,7 @@ Loader {
icon.name: "dialog-cancel"
text: i18n("Cancel")
display: AbstractButton.IconOnly
- onClicked: ChatBoxHelper.clearAttachment();
+ onClicked: chatBoxHelper.clearAttachment();
ToolTip.text: text
ToolTip.visible: hovered
}
diff --git a/imports/NeoChat/Component/ChatBox/ChatBar.qml b/imports/NeoChat/Component/ChatBox/ChatBar.qml
index 3dd997dbc..be53a5ab3 100644
--- a/imports/NeoChat/Component/ChatBox/ChatBar.qml
+++ b/imports/NeoChat/Component/ChatBox/ChatBar.qml
@@ -277,14 +277,14 @@ ToolBar {
}
Item {
- visible: !ChatBoxHelper.isReplying && (!ChatBoxHelper.hasAttachment || uploadingBusySpinner.running)
+ visible: !chatBoxHelper.isReplying && (!chatBoxHelper.hasAttachment || uploadingBusySpinner.running)
implicitWidth: uploadButton.implicitWidth
implicitHeight: uploadButton.implicitHeight
ToolButton {
id: uploadButton
anchors.fill: parent
// Matrix does not allow sending attachments in replies
- visible: !ChatBoxHelper.isReplying && !ChatBoxHelper.hasAttachment && !uploadingBusySpinner.running
+ visible: !chatBoxHelper.isReplying && !chatBoxHelper.hasAttachment && !uploadingBusySpinner.running
icon.name: "mail-attachment"
text: i18n("Attach an image or file")
display: AbstractButton.IconOnly
@@ -296,7 +296,7 @@ ToolBar {
var fileDialog = openFileDialog.createObject(ApplicationWindow.overlay)
fileDialog.chosen.connect((path) => {
if (!path) { return }
- ChatBoxHelper.attachmentPath = path;
+ chatBoxHelper.attachmentPath = path;
})
fileDialog.open()
}
@@ -379,16 +379,16 @@ ToolBar {
if (!Clipboard.saveImage(localPath)) {
return;
}
- ChatBoxHelper.attachmentPath = localPath;
+ chatBoxHelper.attachmentPath = localPath;
}
function postMessage() {
checkForFancyEffectsReason();
- if (ChatBoxHelper.hasAttachment) {
+ if (chatBoxHelper.hasAttachment) {
// send attachment but don't reset the text
- actionsHandler.postMessage("", ChatBoxHelper.attachmentPath,
- ChatBoxHelper.replyEventId, ChatBoxHelper.editEventId, {}, this.customEmojiModel);
+ actionsHandler.postMessage("", chatBoxHelper.attachmentPath,
+ chatBoxHelper.replyEventId, chatBoxHelper.editEventId, {}, this.customEmojiModel);
currentRoom.markAllMessagesAsRead();
messageSent();
return;
@@ -400,8 +400,8 @@ ToolBar {
actionsHandler.postEdit(inputField.text);
} else {
// send normal message
- actionsHandler.postMessage(inputField.text.trim(), ChatBoxHelper.attachmentPath,
- ChatBoxHelper.replyEventId, ChatBoxHelper.editEventId, userAutocompleted, this.customEmojiModel);
+ actionsHandler.postMessage(inputField.text.trim(), chatBoxHelper.attachmentPath,
+ chatBoxHelper.replyEventId, chatBoxHelper.editEventId, userAutocompleted, this.customEmojiModel);
}
currentRoom.markAllMessagesAsRead();
inputField.clear();
diff --git a/imports/NeoChat/Component/ChatBox/ChatBox.qml b/imports/NeoChat/Component/ChatBox/ChatBox.qml
index f9c3b78df..9156c5d91 100644
--- a/imports/NeoChat/Component/ChatBox/ChatBox.qml
+++ b/imports/NeoChat/Component/ChatBox/ChatBox.qml
@@ -127,8 +127,8 @@ Item {
ReplyPane {
id: replyPane
- visible: ChatBoxHelper.isReplying || ChatBoxHelper.isEditing
- user: ChatBoxHelper.replyUser
+ visible: chatBoxHelper.isReplying || chatBoxHelper.isEditing
+ user: chatBoxHelper.replyUser
width: parent.width
height: visible ? implicitHeight : 0
anchors.bottom: attachmentSeparator.top
@@ -154,7 +154,7 @@ Item {
AttachmentPane {
id: attachmentPane
- visible: ChatBoxHelper.hasAttachment
+ visible: chatBoxHelper.hasAttachment
width: parent.width
height: visible ? implicitHeight : 0
anchors.bottom: chatBarSeparator.top
@@ -248,7 +248,7 @@ Item {
}
Connections {
- target: ChatBoxHelper
+ target: chatBoxHelper
function onShouldClearText() {
root.inputFieldText = "";
@@ -277,7 +277,7 @@ Item {
}
function closeAll() {
- ChatBoxHelper.clear();
+ chatBoxHelper.clear();
chatBar.emojiPaneOpened = false;
}
}
diff --git a/imports/NeoChat/Component/ChatBox/ReplyPane.qml b/imports/NeoChat/Component/ChatBox/ReplyPane.qml
index a637ffc24..311e1e159 100644
--- a/imports/NeoChat/Component/ChatBox/ReplyPane.qml
+++ b/imports/NeoChat/Component/ChatBox/ReplyPane.qml
@@ -12,7 +12,7 @@ import org.kde.neochat 1.0
Loader {
id: root
- readonly property bool isEdit: ChatBoxHelper.isEditing
+ readonly property bool isEdit: chatBoxHelper.isEditing
property var user: null
property string avatarMediaUrl: user ? "image://mxc/" + user.avatarMediaId : ""
@@ -83,7 +83,7 @@ Loader {
bottomPadding: 0
text: {
const stylesheet = "";
- const content = ChatBoxHelper.isReplying ? ChatBoxHelper.replyEventContent : ChatBoxHelper.editContent;
+ const content = chatBoxHelper.isReplying ? chatBoxHelper.replyEventContent : chatBoxHelper.editContent;
return stylesheet + content;
}
selectByMouse: true
@@ -106,7 +106,7 @@ Loader {
text: i18n("Cancel")
display: AbstractButton.IconOnly
onClicked: {
- ChatBoxHelper.clear();
+ chatBoxHelper.clear();
root.replyCancelled();
}
ToolTip.text: text
diff --git a/imports/NeoChat/Menu/Timeline/FileDelegateContextMenu.qml b/imports/NeoChat/Menu/Timeline/FileDelegateContextMenu.qml
index 63b9ac0fe..2a5623f79 100644
--- a/imports/NeoChat/Menu/Timeline/FileDelegateContextMenu.qml
+++ b/imports/NeoChat/Menu/Timeline/FileDelegateContextMenu.qml
@@ -50,7 +50,7 @@ MessageDelegateContextMenu {
text: i18n("Reply")
icon.name: "mail-replied-symbolic"
onTriggered: {
- ChatBoxHelper.replyToMessage(eventId, message, author);
+ chatBoxHelper.replyToMessage(eventId, message, author);
}
},
Kirigami.Action {
diff --git a/imports/NeoChat/Menu/Timeline/MessageDelegateContextMenu.qml b/imports/NeoChat/Menu/Timeline/MessageDelegateContextMenu.qml
index 78e88ee29..1ade0ae65 100644
--- a/imports/NeoChat/Menu/Timeline/MessageDelegateContextMenu.qml
+++ b/imports/NeoChat/Menu/Timeline/MessageDelegateContextMenu.qml
@@ -28,13 +28,13 @@ Loader {
Kirigami.Action {
text: i18n("Edit")
icon.name: "document-edit"
- onTriggered: ChatBoxHelper.edit(message, formattedBody, eventId);
+ onTriggered: chatBoxHelper.edit(message, formattedBody, eventId);
visible: eventType.length > 0 && author.id === Controller.activeConnection.localUserId && (eventType === "emote" || eventType === "message")
},
Kirigami.Action {
text: i18n("Reply")
icon.name: "mail-replied-symbolic"
- onTriggered: ChatBoxHelper.replyToMessage(eventId, message, author);
+ onTriggered: chatBoxHelper.replyToMessage(eventId, message, author);
},
Kirigami.Action {
visible: author.id === currentRoom.localUser.id || currentRoom.canSendState("redact")
diff --git a/imports/NeoChat/Page/RoomPage.qml b/imports/NeoChat/Page/RoomPage.qml
index 240e2aa8a..6307db6aa 100644
--- a/imports/NeoChat/Page/RoomPage.qml
+++ b/imports/NeoChat/Page/RoomPage.qml
@@ -53,7 +53,7 @@ Kirigami.ScrollablePage {
onCurrentRoomChanged: {
hasScrolledUpBefore = false;
- ChatBoxHelper.clearEditReply()
+ chatBoxHelper.clearEditReply()
}
Connections {
@@ -81,6 +81,10 @@ Kirigami.ScrollablePage {
connection: Controller.activeConnection
}
+ ChatBoxHelper {
+ id: chatBoxHelper
+ }
+
Shortcut {
sequence: StandardKey.Cancel
onActivated: applicationWindow().pageStack.get(0).forceActiveFocus()
@@ -262,7 +266,7 @@ Kirigami.ScrollablePage {
fileDialog.chosen.connect(function(path) {
if (!path) return
- ChatBoxHelper.attachmentPath = path;
+ chatBoxHelper.attachmentPath = path;
})
fileDialog.open()
@@ -284,7 +288,7 @@ Kirigami.ScrollablePage {
if (!Clipboard.saveImage(localPath)) {
return;
}
- ChatBoxHelper.attachmentPath = localPath;
+ chatBoxHelper.attachmentPath = localPath;
attachDialog.close();
}
}
@@ -359,7 +363,7 @@ Kirigami.ScrollablePage {
DropArea {
id: dropAreaFile
anchors.fill: parent
- onDropped: ChatBoxHelper.attachmentPath = drop.urls[0]
+ onDropped: chatBoxHelper.attachmentPath = drop.urls[0]
}
QQC2.Pane {
@@ -486,7 +490,7 @@ Kirigami.ScrollablePage {
icon.name: "document-edit"
onClicked: {
if (hoverActions.showEdit) {
- ChatBoxHelper.edit(hoverActions.event.message, hoverActions.event.formattedBody, hoverActions.event.eventId)
+ chatBoxHelper.edit(hoverActions.event.message, hoverActions.event.formattedBody, hoverActions.event.eventId)
}
chatBox.focusInputField();
}
@@ -496,7 +500,7 @@ Kirigami.ScrollablePage {
QQC2.ToolTip.visible: hovered
icon.name: "mail-replied-symbolic"
onClicked: {
- ChatBoxHelper.replyToMessage(hoverActions.event.eventId, hoverActions.event.message, hoverActions.event.author);
+ chatBoxHelper.replyToMessage(hoverActions.event.eventId, hoverActions.event.message, hoverActions.event.author);
chatBox.focusInputField();
}
}
@@ -516,14 +520,14 @@ Kirigami.ScrollablePage {
onEditLastUserMessage: {
const targetMessage = messageEventModel.getLastLocalUserMessageEventId();
if (targetMessage) {
- ChatBoxHelper.edit(targetMessage["message"], targetMessage["formattedBody"], targetMessage["event_id"]);
+ chatBoxHelper.edit(targetMessage["message"], targetMessage["formattedBody"], targetMessage["event_id"]);
chatBox.focusInputField();
}
}
onReplyPreviousUserMessage: {
const replyResponse = messageEventModel.getLatestMessageFromIndex(0);
if (replyResponse && replyResponse["event_id"]) {
- ChatBoxHelper.replyToMessage(replyResponse["event_id"], replyResponse["message"], replyResponse["sender_id"]);
+ chatBoxHelper.replyToMessage(replyResponse["event_id"], replyResponse["message"], replyResponse["sender_id"]);
}
}
}
diff --git a/src/main.cpp b/src/main.cpp
index 7a09d3e99..9c4f96ee1 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -195,13 +195,13 @@ int main(int argc, char *argv[])
qmlRegisterSingletonInstance("org.kde.neochat", 1, 0, "RoomManager", &RoomManager::instance());
qmlRegisterSingletonInstance("org.kde.neochat", 1, 0, "FileType", &fileTypeSingleton);
qmlRegisterSingletonInstance("org.kde.neochat", 1, 0, "LoginHelper", login);
- qmlRegisterSingletonInstance("org.kde.neochat", 1, 0, "ChatBoxHelper", &chatBoxHelper);
qmlRegisterSingletonInstance("org.kde.neochat", 1, 0, "UrlHelper", &urlHelper);
qmlRegisterSingletonInstance("org.kde.neochat", 1, 0, "EmojiModel", new EmojiModel(&app));
qmlRegisterSingletonInstance("org.kde.neochat", 1, 0, "CommandModel", new CommandModel(&app));
qmlRegisterSingletonInstance("org.kde.neochat", 1, 0, "AccountRegistry", &Quotient::AccountRegistry::instance());
qmlRegisterSingletonInstance("org.kde.neochat", 1, 0, "SpaceHierarchyCache", &spaceHierarchyCache);
qmlRegisterType("org.kde.neochat", 1, 0, "ActionsHandler");
+ qmlRegisterType("org.kde.neochat", 1, 0, "ChatBoxHelper");
qmlRegisterType("org.kde.neochat", 1, 0, "ChatDocumentHandler");
qmlRegisterType("org.kde.neochat", 1, 0, "RoomListModel");
qmlRegisterType("org.kde.neochat", 1, 0, "WebShortcutModel");