Fix mobile ExploreComponent

Make sure that the search filter is removed when another button is pressed.
Make sure that the popup closes when one of the other menus is open.
Make the separator is at the top on NavigationTabBar
This commit is contained in:
James Graham
2024-10-13 12:41:56 +00:00
parent ba8d2b1281
commit 3a66b4d67e

View File

@@ -10,9 +10,8 @@ import org.kde.kirigamiaddons.delegates as Delegates
import org.kde.neochat import org.kde.neochat
ColumnLayout { Kirigami.NavigationTabBar {
id: root id: root
spacing: 0
/** /**
* @brief The connection for the current user. * @brief The connection for the current user.
@@ -24,75 +23,72 @@ ColumnLayout {
*/ */
signal textChanged(string newText) signal textChanged(string newText)
Kirigami.Separator { Layout.fillWidth: true
Layout.fillWidth: true
} actions: [
Kirigami.NavigationTabBar { Kirigami.Action {
id: exploreTabBar id: infoAction
Layout.fillWidth: true text: i18n("Search")
actions: [ icon.name: "search"
Kirigami.Action { onTriggered: {
id: infoAction if (explorePopup.visible && explorePopupLoader.sourceComponent == search) {
text: i18n("Search") explorePopup.close();
icon.name: "search" root.currentIndex = -1;
onTriggered: { } else if (explorePopup.visible && explorePopupLoader.sourceComponent != search) {
if (explorePopup.visible && explorePopupLoader.sourceComponent == search) { explorePopup.close();
explorePopup.close(); explorePopup.open();
exploreTabBar.currentIndex = -1; } else {
} else if (explorePopup.visible && explorePopupLoader.sourceComponent != search) { explorePopup.open();
explorePopup.close();
explorePopup.open();
} else {
explorePopup.open();
}
explorePopupLoader.sourceComponent = search;
}
},
Kirigami.Action {
text: i18n("Explore rooms")
icon.name: "compass"
onTriggered: {
let dialog = pageStack.pushDialogLayer(Qt.createComponent('org.kde.neochat', 'ExploreRoomsPage'), {
connection: root.connection
}, {
title: i18nc("@title", "Explore Rooms")
});
dialog.roomSelected.connect((roomId, displayName, avatarUrl, alias, topic, memberCount, isJoined) => {
RoomManager.resolveResource(roomId.length > 0 ? roomId : alias, isJoined ? "" : "join");
});
exploreTabBar.currentIndex = -1;
}
},
Kirigami.Action {
text: i18n("Find your friends")
icon.name: "list-add-user"
onTriggered: {
pageStack.pushDialogLayer(Qt.createComponent('org.kde.neochat', 'UserSearchPage'), {
connection: root.connection
}, {
title: i18nc("@title", "Find your friends")
});
exploreTabBar.currentIndex = -1;
}
},
Kirigami.Action {
text: i18n("Create New")
icon.name: "list-add"
onTriggered: {
if (explorePopup.visible && explorePopupLoader.sourceComponent == create) {
explorePopup.close();
exploreTabBar.currentIndex = -1;
} else if (explorePopup.visible && explorePopupLoader.sourceComponent != create) {
explorePopup.close();
explorePopup.open();
} else {
explorePopup.open();
}
explorePopupLoader.sourceComponent = create;
} }
explorePopupLoader.switchComponent(search);
} }
] },
} Kirigami.Action {
text: i18n("Explore rooms")
icon.name: "compass"
onTriggered: {
explorePopup.close();
let dialog = pageStack.pushDialogLayer(Qt.createComponent('org.kde.neochat', 'ExploreRoomsPage'), {
connection: root.connection
}, {
title: i18nc("@title", "Explore Rooms")
});
dialog.roomSelected.connect((roomId, displayName, avatarUrl, alias, topic, memberCount, isJoined) => {
RoomManager.resolveResource(roomId.length > 0 ? roomId : alias, isJoined ? "" : "join");
});
root.currentIndex = -1;
}
},
Kirigami.Action {
text: i18n("Find your friends")
icon.name: "list-add-user"
onTriggered: {
explorePopup.close();
pageStack.pushDialogLayer(Qt.createComponent('org.kde.neochat', 'UserSearchPage'), {
connection: root.connection
}, {
title: i18nc("@title", "Find your friends")
});
root.currentIndex = -1;
}
},
Kirigami.Action {
text: i18n("Create New")
icon.name: "list-add"
onTriggered: {
if (explorePopup.visible && explorePopupLoader.sourceComponent == create) {
explorePopup.close();
root.currentIndex = -1;
} else if (explorePopup.visible && explorePopupLoader.sourceComponent != create) {
explorePopup.close();
explorePopup.open();
} else {
explorePopup.open();
}
explorePopupLoader.switchComponent(create);
}
}
]
QQC2.Popup { QQC2.Popup {
id: explorePopup id: explorePopup
@@ -110,6 +106,13 @@ ColumnLayout {
contentItem: Loader { contentItem: Loader {
id: explorePopupLoader id: explorePopupLoader
sourceComponent: search sourceComponent: search
function switchComponent(newComponent) {
if (sourceComponent == search) {
root.textChanged("");
}
sourceComponent = newComponent;
}
} }
background: ColumnLayout { background: ColumnLayout {