Allow opening window in a secondary window

This commit is contained in:
Carl Schwan
2021-01-09 13:32:16 +00:00
parent a82b9dc14e
commit f4784bb0a1
6 changed files with 41 additions and 1 deletions

View File

@@ -6,6 +6,7 @@
*/ */
import QtQuick 2.12 import QtQuick 2.12
import QtQuick.Controls 2.12 import QtQuick.Controls 2.12
import NeoChat.Page 1.0
/** /**
* Context menu when clicking on a room in the room list * Context menu when clicking on a room in the room list
@@ -45,5 +46,12 @@ Menu {
onTriggered: room.forget() onTriggered: room.forget()
} }
MenuSeparator {}
MenuItem {
text: i18n("Open in new window")
onTriggered: roomManager.openWindow(room);
}
onClosed: destroy() onClosed: destroy()
} }

View File

@@ -23,7 +23,7 @@ import NeoChat.Menu.Timeline 1.0
Kirigami.ScrollablePage { Kirigami.ScrollablePage {
id: page id: page
property var currentRoom required property var currentRoom
signal switchRoomUp() signal switchRoomUp()
signal switchRoomDown() signal switchRoomDown()

View File

@@ -0,0 +1,19 @@
/**
* SPDX-FileCopyrightText: 2020 Carl Schwan <carl@carlschwan.eu>
*
* 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
}
}

View File

@@ -3,6 +3,7 @@ LoadingPage 1.0 LoadingPage.qml
LoginPage 1.0 LoginPage.qml LoginPage 1.0 LoginPage.qml
RoomListPage 1.0 RoomListPage.qml RoomListPage 1.0 RoomListPage.qml
RoomPage 1.0 RoomPage.qml RoomPage 1.0 RoomPage.qml
RoomWindow 1.0 RoomWindow.qml
JoinRoomPage 1.0 JoinRoomPage.qml JoinRoomPage 1.0 JoinRoomPage.qml
InviteUserPage 1.0 InviteUserPage.qml InviteUserPage 1.0 InviteUserPage.qml
SettingsPage 1.0 SettingsPage.qml SettingsPage 1.0 SettingsPage.qml

View File

@@ -117,6 +117,12 @@ Kirigami.ApplicationWindow {
pageStack.replace(roomPage, { 'currentRoom': currentRoom, }); 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) { function connectRoomToSignal(item) {
if (!roomList) { if (!roomList) {
console.log("Should not happen: no room list page but room page"); console.log("Should not happen: no room list page but room page");
@@ -347,4 +353,9 @@ Kirigami.ApplicationWindow {
CreateRoomDialog {} CreateRoomDialog {}
} }
Component {
id: roomWindow
RoomWindow {}
}
} }

View File

@@ -6,6 +6,7 @@
<file>imports/NeoChat/Page/LoadingPage.qml</file> <file>imports/NeoChat/Page/LoadingPage.qml</file>
<file>imports/NeoChat/Page/RoomListPage.qml</file> <file>imports/NeoChat/Page/RoomListPage.qml</file>
<file>imports/NeoChat/Page/RoomPage.qml</file> <file>imports/NeoChat/Page/RoomPage.qml</file>
<file>imports/NeoChat/Page/RoomWindow.qml</file>
<file>imports/NeoChat/Page/AccountsPage.qml</file> <file>imports/NeoChat/Page/AccountsPage.qml</file>
<file>imports/NeoChat/Page/JoinRoomPage.qml</file> <file>imports/NeoChat/Page/JoinRoomPage.qml</file>
<file>imports/NeoChat/Page/InviteUserPage.qml</file> <file>imports/NeoChat/Page/InviteUserPage.qml</file>