Make QML more declarative

This commit is contained in:
Tobias Fella
2021-10-02 16:34:31 +00:00
parent fa631ece3a
commit 5bf0aa7a68

View File

@@ -31,6 +31,10 @@ Kirigami.ApplicationWindow {
property bool roomListLoaded: false property bool roomListLoaded: false
property RoomPage roomPage: RoomPage {
KeyNavigation.left: pageStack.get(0)
}
Connections { Connections {
target: root.quitAction target: root.quitAction
function onTriggered() { function onTriggered() {
@@ -72,38 +76,21 @@ Kirigami.ApplicationWindow {
sourceComponent: QuickSwitcher { } sourceComponent: QuickSwitcher { }
} }
/// Setup keyboard navigation to the room page.
function connectRoomToSignal(item) {
if (!roomListLoaded) {
console.log("Should not happen: no room list page but room page");
}
const roomList = pageStack.get(0);
item.switchRoomUp.connect(function() {
roomList.goToNextRoom();
});
item.switchRoomDown.connect(function() {
roomList.goToPreviousRoom();
});
item.forceActiveFocus();
item.KeyNavigation.left = pageStack.get(0);
}
Connections { Connections {
target: RoomManager target: RoomManager
function onPushRoom(room, event) { function onPushRoom(room, event) {
const roomItem = pageStack.push("qrc:/imports/NeoChat/Page/RoomPage.qml"); pageStack.push(roomPage);
connectRoomToSignal(roomItem); roomPage.forceActiveFocus();
if (event.length > 0) { if (event.length > 0) {
roomItem.goToEvent(event); roomPage.goToEvent(event);
} }
} }
function onReplaceRoom(room, event) { function onReplaceRoom(room, event) {
const roomItem = pageStack.get(pageStack.depth - 1); const roomItem = pageStack.get(pageStack.depth - 1);
pageStack.currentIndex = pageStack.depth - 1; pageStack.currentIndex = pageStack.depth - 1;
connectRoomToSignal(roomItem); roomPage.forceActiveFocus();
if (event.length > 0) { if (event.length > 0) {
roomItem.goToEvent(event); roomItem.goToEvent(event);
} }
@@ -310,6 +297,16 @@ Kirigami.ApplicationWindow {
id: roomListComponent id: roomListComponent
RoomListPage { RoomListPage {
id: roomList id: roomList
Connections {
target: root.roomPage
function onSwitchRoomUp() {
roomList.goToNextRoom();
}
function onSwitchRoomDown() {
roomList.goToPreviousRoom();
}
}
} }
} }