From f4784bb0a1926590470c92d7e24c17b7ae4fed16 Mon Sep 17 00:00:00 2001 From: Carl Schwan Date: Sat, 9 Jan 2021 13:32:16 +0000 Subject: [PATCH] Allow opening window in a secondary window --- imports/NeoChat/Menu/RoomListContextMenu.qml | 8 ++++++++ imports/NeoChat/Page/RoomPage.qml | 2 +- imports/NeoChat/Page/RoomWindow.qml | 19 +++++++++++++++++++ imports/NeoChat/Page/qmldir | 1 + qml/main.qml | 11 +++++++++++ res.qrc | 1 + 6 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 imports/NeoChat/Page/RoomWindow.qml diff --git a/imports/NeoChat/Menu/RoomListContextMenu.qml b/imports/NeoChat/Menu/RoomListContextMenu.qml index 9685fcbb5..f6d5063e2 100644 --- a/imports/NeoChat/Menu/RoomListContextMenu.qml +++ b/imports/NeoChat/Menu/RoomListContextMenu.qml @@ -6,6 +6,7 @@ */ import QtQuick 2.12 import QtQuick.Controls 2.12 +import NeoChat.Page 1.0 /** * Context menu when clicking on a room in the room list @@ -45,5 +46,12 @@ Menu { onTriggered: room.forget() } + MenuSeparator {} + + MenuItem { + text: i18n("Open in new window") + onTriggered: roomManager.openWindow(room); + } + onClosed: destroy() } diff --git a/imports/NeoChat/Page/RoomPage.qml b/imports/NeoChat/Page/RoomPage.qml index 42ad6715a..32fe7659d 100644 --- a/imports/NeoChat/Page/RoomPage.qml +++ b/imports/NeoChat/Page/RoomPage.qml @@ -23,7 +23,7 @@ import NeoChat.Menu.Timeline 1.0 Kirigami.ScrollablePage { id: page - property var currentRoom + required property var currentRoom signal switchRoomUp() signal switchRoomDown() diff --git a/imports/NeoChat/Page/RoomWindow.qml b/imports/NeoChat/Page/RoomWindow.qml new file mode 100644 index 000000000..6e7babf4f --- /dev/null +++ b/imports/NeoChat/Page/RoomWindow.qml @@ -0,0 +1,19 @@ +/** + * SPDX-FileCopyrightText: 2020 Carl Schwan + * + * SPDX-License-Identifier: GPL-3.0-or-later + */ +import QtQuick 2.12 +import QtQuick.Controls 2.12 as QQC2 +import QtQuick.Window 2.2 +import QtQuick.Layouts 1.12 +import org.kde.kirigami 2.14 as Kirigami + +Kirigami.ApplicationWindow { + id: window + required property var currentRoom + pageStack.initialPage: RoomPage { + visible: true + currentRoom: window.currentRoom + } +} diff --git a/imports/NeoChat/Page/qmldir b/imports/NeoChat/Page/qmldir index 9c3539af4..9bea80824 100644 --- a/imports/NeoChat/Page/qmldir +++ b/imports/NeoChat/Page/qmldir @@ -3,6 +3,7 @@ LoadingPage 1.0 LoadingPage.qml LoginPage 1.0 LoginPage.qml RoomListPage 1.0 RoomListPage.qml RoomPage 1.0 RoomPage.qml +RoomWindow 1.0 RoomWindow.qml JoinRoomPage 1.0 JoinRoomPage.qml InviteUserPage 1.0 InviteUserPage.qml SettingsPage 1.0 SettingsPage.qml diff --git a/qml/main.qml b/qml/main.qml index 90fdb0db7..ebe7c4b40 100644 --- a/qml/main.qml +++ b/qml/main.qml @@ -117,6 +117,12 @@ Kirigami.ApplicationWindow { pageStack.replace(roomPage, { 'currentRoom': currentRoom, }); } + function openWindow(room) { + const secondayWindow = roomWindow.createObject(applicationWindow(), {currentRoom: room}); + secondayWindow.width = root.width - roomList.width; + secondayWindow.show(); + } + function connectRoomToSignal(item) { if (!roomList) { console.log("Should not happen: no room list page but room page"); @@ -347,4 +353,9 @@ Kirigami.ApplicationWindow { CreateRoomDialog {} } + + Component { + id: roomWindow + RoomWindow {} + } } diff --git a/res.qrc b/res.qrc index 05f8cdc6e..34b1a1208 100644 --- a/res.qrc +++ b/res.qrc @@ -6,6 +6,7 @@ imports/NeoChat/Page/LoadingPage.qml imports/NeoChat/Page/RoomListPage.qml imports/NeoChat/Page/RoomPage.qml + imports/NeoChat/Page/RoomWindow.qml imports/NeoChat/Page/AccountsPage.qml imports/NeoChat/Page/JoinRoomPage.qml imports/NeoChat/Page/InviteUserPage.qml