moment/src/qml/UI.qml

111 lines
3.1 KiB
QML
Raw Normal View History

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