Fix opening room in seperate window and unify leaving room code

This commit is contained in:
Carl Schwan
2021-04-28 15:06:57 +02:00
parent b7d98fc6d9
commit f30b17bf73
5 changed files with 27 additions and 20 deletions

View File

@@ -5,6 +5,7 @@
import QtQuick 2.15
import QtQuick.Controls 2.15
import org.kde.neochat 1.0
import NeoChat.Page 1.0
/**
@@ -16,7 +17,7 @@ Menu {
MenuItem {
text: i18n("Open in new window")
onTriggered: roomManager.openWindow(room);
onTriggered: RoomManager.openWindow(room);
}
MenuSeparator {}
@@ -43,12 +44,7 @@ Menu {
MenuItem {
text: i18n("Leave Room")
onTriggered: {
if(roomManager.currentRoom == root.room) {
pageStack.pop()
}
room.forget()
}
onTriggered: RoomManager.leaveRoom()
}
onClosed: destroy()

View File

@@ -78,10 +78,7 @@ Kirigami.ScrollablePage {
Layout.alignment : Qt.AlignHCenter
text: i18n("Reject")
onClicked: {
page.currentRoom.forget()
RoomManager.getBack();
}
onClicked: RoomManager.leave(page.currentRoom);
}
QQC2.Button {

View File

@@ -103,7 +103,7 @@ Kirigami.ApplicationWindow {
function onOpenRoomInNewWindow(room) {
const secondayWindow = roomWindow.createObject(applicationWindow(), {currentRoom: room});
secondayWindow.width = root.width - roomList.width;
secondayWindow.width = root.width - pageStack.get(0).width;
secondayWindow.show();
}

View File

@@ -107,14 +107,6 @@ void RoomManager::enterRoom(NeoChatRoom *room)
void RoomManager::getBack()
{
Q_ASSERT(m_currentRoom);
if (!m_lastCurrentRoom) {
Q_EMIT pushWelcomePage();
return;
}
Q_EMIT replaceRoom(m_lastCurrentRoom, QString());
}
void RoomManager::openWindow(NeoChatRoom *room)
@@ -195,3 +187,22 @@ void RoomManager::reset()
m_lastCurrentRoom = nullptr;
Q_EMIT currentRoomChanged();
}
void RoomManager::leaveRoom(NeoChatRoom *room)
{
// close the room and open the last open room if it exist
// other open welcome page.
if (m_currentRoom && m_currentRoom->id() == room->id()) {
if (!m_lastCurrentRoom) {
Q_EMIT pushWelcomePage();
return;
}
m_currentRoom = m_lastCurrentRoom;
m_lastCurrentRoom = nullptr;
Q_EMIT currentRoomChanged();
Q_EMIT replaceRoom(m_lastCurrentRoom, QString());
}
room->forget();
}

View File

@@ -43,6 +43,9 @@ public:
Q_INVOKABLE void openWindow(NeoChatRoom *room);
/// Leave the room and close it if it is open.
Q_INVOKABLE void leaveRoom(NeoChatRoom *room);
/// Getter for the currentRoom property.
NeoChatRoom *currentRoom() const;