Make QML more declarative
This commit is contained in:
39
qml/main.qml
39
qml/main.qml
@@ -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();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user