Fix opening room in seperate window and unify leaving room code
This commit is contained in:
@@ -5,6 +5,7 @@
|
|||||||
import QtQuick 2.15
|
import QtQuick 2.15
|
||||||
import QtQuick.Controls 2.15
|
import QtQuick.Controls 2.15
|
||||||
|
|
||||||
|
import org.kde.neochat 1.0
|
||||||
import NeoChat.Page 1.0
|
import NeoChat.Page 1.0
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -16,7 +17,7 @@ Menu {
|
|||||||
|
|
||||||
MenuItem {
|
MenuItem {
|
||||||
text: i18n("Open in new window")
|
text: i18n("Open in new window")
|
||||||
onTriggered: roomManager.openWindow(room);
|
onTriggered: RoomManager.openWindow(room);
|
||||||
}
|
}
|
||||||
|
|
||||||
MenuSeparator {}
|
MenuSeparator {}
|
||||||
@@ -43,12 +44,7 @@ Menu {
|
|||||||
|
|
||||||
MenuItem {
|
MenuItem {
|
||||||
text: i18n("Leave Room")
|
text: i18n("Leave Room")
|
||||||
onTriggered: {
|
onTriggered: RoomManager.leaveRoom()
|
||||||
if(roomManager.currentRoom == root.room) {
|
|
||||||
pageStack.pop()
|
|
||||||
}
|
|
||||||
room.forget()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
onClosed: destroy()
|
onClosed: destroy()
|
||||||
|
|||||||
@@ -78,10 +78,7 @@ Kirigami.ScrollablePage {
|
|||||||
Layout.alignment : Qt.AlignHCenter
|
Layout.alignment : Qt.AlignHCenter
|
||||||
text: i18n("Reject")
|
text: i18n("Reject")
|
||||||
|
|
||||||
onClicked: {
|
onClicked: RoomManager.leave(page.currentRoom);
|
||||||
page.currentRoom.forget()
|
|
||||||
RoomManager.getBack();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QQC2.Button {
|
QQC2.Button {
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ Kirigami.ApplicationWindow {
|
|||||||
|
|
||||||
function onOpenRoomInNewWindow(room) {
|
function onOpenRoomInNewWindow(room) {
|
||||||
const secondayWindow = roomWindow.createObject(applicationWindow(), {currentRoom: room});
|
const secondayWindow = roomWindow.createObject(applicationWindow(), {currentRoom: room});
|
||||||
secondayWindow.width = root.width - roomList.width;
|
secondayWindow.width = root.width - pageStack.get(0).width;
|
||||||
secondayWindow.show();
|
secondayWindow.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -107,14 +107,6 @@ void RoomManager::enterRoom(NeoChatRoom *room)
|
|||||||
|
|
||||||
void RoomManager::getBack()
|
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)
|
void RoomManager::openWindow(NeoChatRoom *room)
|
||||||
@@ -195,3 +187,22 @@ void RoomManager::reset()
|
|||||||
m_lastCurrentRoom = nullptr;
|
m_lastCurrentRoom = nullptr;
|
||||||
Q_EMIT currentRoomChanged();
|
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();
|
||||||
|
}
|
||||||
|
|||||||
@@ -43,6 +43,9 @@ public:
|
|||||||
|
|
||||||
Q_INVOKABLE void openWindow(NeoChatRoom *room);
|
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.
|
/// Getter for the currentRoom property.
|
||||||
NeoChatRoom *currentRoom() const;
|
NeoChatRoom *currentRoom() const;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user