2019-07-08 13:52:41 +10:00
|
|
|
// Copyright 2019 miruka
|
|
|
|
// This file is part of harmonyqml, licensed under LGPLv3.
|
|
|
|
|
2019-04-28 08:54:33 +10:00
|
|
|
import QtQuick 2.7
|
|
|
|
import QtQuick.Controls 2.2
|
2019-04-29 05:45:42 +10:00
|
|
|
import QtQuick.Layouts 1.3
|
2019-05-01 17:25:58 +10:00
|
|
|
import QtQuick.Window 2.7
|
2019-04-29 05:18:36 +10:00
|
|
|
import "Base"
|
|
|
|
import "SidePane"
|
2019-04-28 08:54:33 +10:00
|
|
|
|
2019-04-28 14:44:55 +10:00
|
|
|
Item {
|
2019-04-28 11:07:20 +10:00
|
|
|
id: mainUI
|
2019-04-28 14:44:55 +10:00
|
|
|
|
2019-07-03 03:59:52 +10:00
|
|
|
Connections {
|
|
|
|
target: py
|
|
|
|
onWillLoadAccounts: function(will) {
|
2019-07-09 02:52:07 +10:00
|
|
|
pageStack.showPage(will ? "Default": "SignIn")
|
2019-07-09 02:39:58 +10:00
|
|
|
if (will) {initialRoomTimer.start()}
|
2019-07-03 03:59:52 +10:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-06-29 08:12:45 +10:00
|
|
|
property bool accountsPresent:
|
2019-07-05 06:01:44 +10:00
|
|
|
accounts.count > 0 || py.loadingAccounts
|
2019-06-27 16:31:03 +10:00
|
|
|
|
2019-04-29 05:18:36 +10:00
|
|
|
HImage {
|
2019-04-28 14:44:55 +10:00
|
|
|
id: mainUIBackground
|
|
|
|
fillMode: Image.PreserveAspectCrop
|
|
|
|
source: "../images/login_background.jpg"
|
2019-05-01 17:25:58 +10:00
|
|
|
sourceSize.width: Screen.width
|
|
|
|
sourceSize.height: Screen.height
|
2019-04-28 14:44:55 +10:00
|
|
|
anchors.fill: parent
|
2019-06-27 16:31:03 +10:00
|
|
|
asynchronous: false
|
2019-04-28 14:44:55 +10:00
|
|
|
}
|
2019-04-28 08:54:33 +10:00
|
|
|
|
2019-04-29 05:18:36 +10:00
|
|
|
HSplitView {
|
2019-05-13 05:57:18 +10:00
|
|
|
id: uiSplitView
|
2019-04-28 08:54:33 +10:00
|
|
|
anchors.fill: parent
|
|
|
|
|
2019-04-29 05:18:36 +10:00
|
|
|
SidePane {
|
2019-05-13 06:13:00 +10:00
|
|
|
id: sidePane
|
2019-06-29 08:12:45 +10:00
|
|
|
visible: accountsPresent
|
2019-05-13 05:57:18 +10:00
|
|
|
collapsed: width < Layout.minimumWidth + normalSpacing
|
|
|
|
|
2019-05-13 06:13:00 +10:00
|
|
|
property int parentWidth: parent.width
|
|
|
|
property int collapseBelow: 120
|
|
|
|
|
2019-05-13 05:57:18 +10:00
|
|
|
function set_width() {
|
2019-05-13 06:13:00 +10:00
|
|
|
width = parent.width * 0.3 < collapseBelow ?
|
2019-05-13 05:57:18 +10:00
|
|
|
Layout.minimumWidth : Math.min(parent.width * 0.3, 300)
|
|
|
|
}
|
|
|
|
|
|
|
|
onParentWidthChanged: if (uiSplitView.canAutoSize) { set_width() }
|
2019-04-29 04:20:30 +10:00
|
|
|
|
2019-05-13 05:57:18 +10:00
|
|
|
width: set_width() // Initial width
|
2019-07-07 07:50:55 +10:00
|
|
|
Layout.minimumWidth: theme.avatar.size
|
2019-04-29 02:40:42 +10:00
|
|
|
Layout.maximumWidth: parent.width
|
2019-05-13 06:13:00 +10:00
|
|
|
|
|
|
|
Behavior on width {
|
2019-07-07 07:42:04 +10:00
|
|
|
HNumberAnimation {
|
2019-05-13 06:13:00 +10:00
|
|
|
// Don't slow down the user manually resizing
|
|
|
|
duration:
|
|
|
|
(uiSplitView.canAutoSize &&
|
|
|
|
parent.width * 0.3 < sidePane.collapseBelow * 1.2) ?
|
2019-07-07 07:50:55 +10:00
|
|
|
theme.animationDuration : 0
|
2019-05-13 06:13:00 +10:00
|
|
|
}
|
|
|
|
}
|
2019-04-28 08:54:33 +10:00
|
|
|
}
|
|
|
|
|
|
|
|
StackView {
|
2019-04-28 14:44:55 +10:00
|
|
|
id: pageStack
|
|
|
|
|
2019-04-28 11:07:20 +10:00
|
|
|
function showPage(name, properties) {
|
2019-04-29 02:45:12 +10:00
|
|
|
pageStack.replace("Pages/" + name + ".qml", properties || {})
|
2019-04-28 08:54:33 +10:00
|
|
|
}
|
|
|
|
|
2019-05-03 04:20:21 +10:00
|
|
|
function showRoom(userId, category, roomId) {
|
2019-07-07 16:35:22 +10:00
|
|
|
var info = rooms.getWhere({
|
|
|
|
"userId": userId,
|
|
|
|
"roomId": roomId,
|
|
|
|
"category": category
|
|
|
|
}, 1)[0]
|
|
|
|
|
|
|
|
pageStack.replace("Chat/Chat.qml", {"roomInfo": info})
|
2019-04-28 08:54:33 +10:00
|
|
|
}
|
|
|
|
|
2019-05-13 03:17:42 +10:00
|
|
|
Timer {
|
|
|
|
// TODO: remove this, debug
|
|
|
|
id: initialRoomTimer
|
2019-07-09 02:39:58 +10:00
|
|
|
interval: 4000
|
2019-05-13 03:17:42 +10:00
|
|
|
repeat: false
|
|
|
|
onTriggered: pageStack.showRoom(
|
|
|
|
"@test_mary:matrix.org",
|
|
|
|
"Rooms",
|
2019-05-18 05:18:46 +10:00
|
|
|
"!TSXGsbBbdwsdylIOJZ:matrix.org"
|
2019-05-13 03:17:42 +10:00
|
|
|
)
|
2019-04-28 14:44:55 +10:00
|
|
|
}
|
2019-04-28 08:54:33 +10:00
|
|
|
|
|
|
|
onCurrentItemChanged: if (currentItem) {
|
|
|
|
currentItem.forceActiveFocus()
|
|
|
|
}
|
|
|
|
|
|
|
|
// Buggy
|
|
|
|
replaceExit: null
|
|
|
|
popExit: null
|
|
|
|
pushExit: null
|
|
|
|
}
|
2019-05-07 03:07:00 +10:00
|
|
|
|
2019-06-27 16:31:03 +10:00
|
|
|
Keys.onEscapePressed: if (window.debug) { py.call("APP.pdb") }
|
2019-04-28 08:54:33 +10:00
|
|
|
}
|
|
|
|
}
|