Allow swiping between views in single page mode
Allows access to spaces on mobile for example
2 files changed, 37 insertions, 7 deletions
diff --git a/resources/qml/ChatPage.qml b/resources/qml/ChatPage.qml
index 22a04b74..0b0c8533 100644
--- a/resources/qml/ChatPage.qml
+++ b/resources/qml/ChatPage.qml
@@ -21,7 +21,39 @@ Rectangle {
anchors.fill: parent
singlePageMode: communityListC.preferredWidth + roomListC.preferredWidth + timlineViewC.minimumWidth > width
- pageIndex: (Rooms.currentRoom || Rooms.currentRoomPreview.roomid) ? 2 : 1
+ pageIndex: 1
+
+ Component.onCompleted: initializePageIndex()
+ onSinglePageModeChanged: initializePageIndex()
+
+ function initializePageIndex() {
+ if (!singlePageMode)
+ adaptiveView.pageIndex = 0;
+ else if (Rooms.currentRoom || Rooms.currentRoomPreview.roomid)
+ adaptiveView.pageIndex = 2;
+ else
+ adaptiveView.pageIndex = 1;
+ }
+
+ Connections {
+ target: Rooms
+ function onCurrentRoomChanged() {
+ adaptiveView.initializePageIndex();
+ }
+ }
+
+ Connections {
+ target: Communities
+ function onCurrentTagIdChanged() {
+ adaptiveView.initializePageIndex();
+ }
+ }
+
+ onPageIndexChanged: {
+ if (adaptiveView.pageIndex == 1 && (Rooms.currentRoom || Rooms.currentRoomPreview.roomid)) {
+ Rooms.resetCurrentRoom();
+ }
+ }
AdaptiveLayoutElement {
id: communityListC
diff --git a/resources/qml/components/AdaptiveLayout.qml b/resources/qml/components/AdaptiveLayout.qml
index 357a7831..756d3291 100644
--- a/resources/qml/components/AdaptiveLayout.qml
+++ b/resources/qml/components/AdaptiveLayout.qml
@@ -16,10 +16,12 @@ Container {
property bool singlePageMode: width < 800
property int splitterGrabMargin: Nheko.paddingSmall
- property int pageIndex: 0
+ property alias pageIndex: view.currentIndex
property Component handle
property Component handleToucharea
+ onSinglePageModeChanged: if (!singlePageMode) pageIndex = 0
+
anchors.fill: parent
Component.onCompleted: {
for (var i = 0; i < count - 1; i++) {
@@ -103,9 +105,7 @@ Container {
xAxis.minimum: splitter.minimumWidth - 1
xAxis.maximum: splitter.maximumWidth
margin: container.splitterGrabMargin
- //dragThreshold: 0
grabPermissions: PointerHandler.CanTakeOverFromAnything | PointerHandler.ApprovesTakeOverByHandlersOfSameType
- //cursorShape: Qt.SizeHorCursor
onActiveChanged: {
if (!active)
splitter.parent.preferredWidth = splitter.x;
@@ -114,8 +114,6 @@ Container {
}
HoverHandler {
- //cursorShape: Qt.SizeHorCursor
-
enabled: !container.singlePageMode
margin: container.splitterGrabMargin
}
@@ -129,7 +127,7 @@ Container {
snapMode: ListView.SnapOneItem
orientation: ListView.Horizontal
highlightRangeMode: ListView.StrictlyEnforceRange
- interactive: false
+ interactive: singlePageMode
highlightMoveDuration: container.singlePageMode ? 200 : 0
currentIndex: container.singlePageMode ? container.pageIndex : 0
}
|