Alt+Shift+Up/Down to switch to previous/next unread room

This is the same key combination as commonly used by other chat clients
such as Element, Slack and Discord. For consistency, also add the same
Alt+Up/Down shortcut as used in thes other clients as aliases for
switching rooms without considering the unread status.
This commit is contained in:
Kevin Wolf
2023-02-22 15:47:33 +01:00
committed by Tobias Fella
parent 12afa43d23
commit c0c86c67b6
2 changed files with 38 additions and 6 deletions

View File

@@ -131,10 +131,10 @@ Kirigami.ScrollablePage {
}
}
function goToNextRoom() {
function goToNextRoomFiltered(condition) {
let index = listView.currentIndex;
while (index++ !== listView.count - 1) {
if (listView.itemAtIndex(index).visible) {
if (condition(listView.itemAtIndex(index))) {
listView.currentIndex = index;
listView.currentItem.action.trigger();
return;
@@ -142,10 +142,10 @@ Kirigami.ScrollablePage {
}
}
function goToPreviousRoom() {
function goToPreviousRoomFiltered(condition) {
let index = listView.currentIndex;
while (index-- !== 0) {
if (listView.itemAtIndex(index).visible) {
if (condition(listView.itemAtIndex(index))) {
listView.currentIndex = index;
listView.currentItem.action.trigger();
return;
@@ -153,6 +153,22 @@ Kirigami.ScrollablePage {
}
}
function goToNextRoom() {
goToNextRoomFiltered((item) => item.visible);
}
function goToPreviousRoom() {
goToPreviousRoomFiltered((item) => item.visible);
}
function goToNextUnreadRoom() {
goToNextRoomFiltered((item) => (item.visible && item.hasUnread));
}
function goToPreviousUnreadRoom() {
goToPreviousRoomFiltered((item) => (item.visible && item.hasUnread));
}
titleDelegate: collapsedMode ? empty : searchField
Component {
@@ -428,6 +444,8 @@ Kirigami.ScrollablePage {
})
menu.open()
}
readonly property bool hasUnread: unreadCount > 0
}
}
}

View File

@@ -318,18 +318,32 @@ Kirigami.ApplicationWindow {
id: roomList
Shortcut {
sequences: ["Ctrl+PgUp", "Ctrl+Backtab"]
sequences: ["Ctrl+PgUp", "Ctrl+Backtab", "Alt+Up"]
onActivated: {
roomList.goToPreviousRoom();
}
}
Shortcut {
sequences: ["Ctrl+PgDown", "Ctrl+Tab"]
sequences: ["Ctrl+PgDown", "Ctrl+Tab", "Alt+Down"]
onActivated: {
roomList.goToNextRoom();
}
}
Shortcut {
sequence: "Alt+Shift+Up"
onActivated: {
roomList.goToPreviousUnreadRoom();
}
}
Shortcut {
sequence: "Alt+Shift+Down"
onActivated: {
roomList.goToNextUnreadRoom();
}
}
}
}