From 96555dfc65034c46578309f39ae0f754e1acb0f8 Mon Sep 17 00:00:00 2001 From: Miquel Lionel Date: Mon, 20 Dec 2021 21:10:36 +0100 Subject: Less clicks: focus compose pane on chat selection. - Also we now use Enter to send chat, and Ctrl/Shift+Enter to add newlines. Updated the F1 help accordingly. - there was no way to refresh the message list until you clicked on the chat again, so I moved updateMessagelist() to trigger on every incoming message. We have working block mechanisms now, so it shouldn't be that much of a bother if someone spams you. - To speed up the delay between the UI displaying the message has waiting to be sent, upon sending a message, the startIo() function is now triggered. --- qml/ChatPage.qml | 4 +--- qml/ChatlistPage.qml | 1 + qml/ComposePane.qml | 33 +++++++++++++++++++-------------- qml/main.qml | 4 ++-- 4 files changed, 23 insertions(+), 19 deletions(-) (limited to 'qml') diff --git a/qml/ChatPage.qml b/qml/ChatPage.qml index fb99eeb..b830bc0 100644 --- a/qml/ChatPage.qml +++ b/qml/ChatPage.qml @@ -54,10 +54,8 @@ Kirigami.ScrollablePage { } function onIncomingMessage(accountId, chatId, msgId) { + updateMessagelist(); console.log("Incoming message for chat " + chatId); - if (chatId == root.chatId) - root.updateMessagelist(); - } function onMessagesChanged(accountId, chatId, msgId) { diff --git a/qml/ChatlistPage.qml b/qml/ChatlistPage.qml index 42ceb64..d7e66ae 100644 --- a/qml/ChatlistPage.qml +++ b/qml/ChatlistPage.qml @@ -89,6 +89,7 @@ Kirigami.ScrollablePage { title: qsTr("Chats") Component.onCompleted: { + dcAccounts.startIo(); updateChatlist(); } contextualActions: [ diff --git a/qml/ComposePane.qml b/qml/ComposePane.qml index 254e484..14bfb36 100644 --- a/qml/ComposePane.qml +++ b/qml/ComposePane.qml @@ -82,6 +82,20 @@ Pane { placeholderText: qsTr("Message") wrapMode: TextArea.Wrap selectByMouse: true + Keys.onReturnPressed: { + if (event.key === Qt.Key_Return) { + if (event.modifiers & (Qt.ControlModifier | Qt.ShiftModifier)){ + messageField.append(""); + } else { + if(sendButton.enabled){ + sendButton.clicked(); + dcAccounts.startIo(); + event.accepted = true; + } + } + } + } + Component.onCompleted: { let draft = root.context.getDraft(chatId); if (draft) @@ -118,22 +132,9 @@ Pane { Button { id: sendButton - action: Kirigami.Action { - checked: false - shortcut: "Ctrl+S" - onTriggered:{ - if (sendButton.enabled) { - root.focus = true; - sendButton.focus = true; - sendButton.down = true; - sendButton.clicked(); - sendButton.down = false; - } - } - } hoverEnabled: true ToolTip.visible: hovered - ToolTip.text: "Ctrl+S" + ToolTip.text: "Press Enter" visible: root.canSend Layout.alignment: Qt.AlignBottom icon.name: "document-send" @@ -145,6 +146,7 @@ Pane { attachFileUrl = ""; messageField.text = ""; root.context.setDraft(chatId, null); + messageField.forceActiveFocus(); } } @@ -192,4 +194,7 @@ Pane { } } + Component.onCompleted : { + messageField.forceActiveFocus(); + } } diff --git a/qml/main.qml b/qml/main.qml index 34e94e8..f254274 100644 --- a/qml/main.qml +++ b/qml/main.qml @@ -125,7 +125,7 @@ Kirigami.ApplicationWindow { focus: true anchors.centerIn: parent width: 200 - height: 200 + height: 230 padding: 10 contentChildren: [ Text { @@ -135,7 +135,7 @@ Kirigami.ApplicationWindow { font.pixelSize: 14 }, Text { - text: "F1: Displays this" + "
F2: Work on/offline" + "
F5: Network check" + "
Shift+Tab: Account settings" + "
Alt+C: Clear search" + "
Alt+Tab: Switch accounts" + "
Ctrl+F: Search contacts" + "
Ctrl+N: New chat" + "
Ctrl+S: Send message" + "
Ctrl+Tab: Show sidebar" + "
Ctrl+Q: Quit" + text: "F1: Displays this" + "
F2: Work on/offline" + "
F5: Network check" + "
Shift+Tab: Account settings" + "
Alt+C: Clear search" + "
Alt+Tab: Switch accounts" + "
Ctrl+F: Search contacts" + "
Ctrl+N: New chat" + "
Enter: Send message" + "
Shift/Ctrl+Enter: Add
newline" + "
Ctrl+Tab: Show sidebar" + "
Ctrl+Q: Quit" topPadding: 20 leftPadding: 10 bottomPadding: 20 -- cgit v1.2.3-70-g09d2