moment/src/qml/UI.qml

109 lines
3.0 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.12
import QtQuick.Controls 2.12
import QtQuick.Layouts 1.12
import QtQuick.Window 2.7
import "Base"
import "SidePane"
HRectangle {
2019-04-28 11:07:20 +10:00
id: mainUI
color: theme.ui.background
2019-04-28 14:44:55 +10:00
Connections {
target: py
onWillLoadAccounts: will => {
if (! will) {
pageStack.showPage("SignIn")
return
}
let page = window.uiState.page
let props = window.uiState.pageProperties
if (page == "Chat/Chat.qml") {
pageStack.showRoom(props.userId, props.category, props.roomId)
} else {
pageStack.show(page, props)
}
}
}
property bool accountsPresent:
2019-07-05 06:01:44 +10:00
accounts.count > 0 || py.loadingAccounts
HImage {
visible: false
2019-04-28 14:44:55 +10:00
id: mainUIBackground
fillMode: Image.PreserveAspectCrop
source: "../images/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
onAnyResizingChanged: if (anyResizing) {
sidePane.manuallyResizing = true
} else {
sidePane.manuallyResizing = false
sidePane.manuallyResized = true
sidePane.manualWidth = sidePane.width
}
SidePane {
id: sidePane
2019-07-17 07:08:06 +10:00
// Initial width until user manually resizes
width: implicitWidth
Layout.minimumWidth: reduce ? 0 : theme.sidePane.collapsedWidth
Layout.maximumWidth:
window.width -theme.minimumSupportedWidthPlusSpacing
Behavior on Layout.minimumWidth { HNumberAnimation {} }
}
StackView {
2019-04-28 14:44:55 +10:00
id: pageStack
property bool isWide: width > theme.contentIsWideAbove
2019-04-28 14:44:55 +10:00
function show(componentUrl, properties={}) {
pageStack.replace(componentUrl, properties)
}
function showPage(name, properties={}) {
let path = "Pages/" + name + ".qml"
show(path, properties)
window.uiState.page = path
window.uiState.pageProperties = properties
window.uiStateChanged()
}
function showRoom(userId, category, roomId) {
let roomInfo = rooms.find(userId, category, roomId)
show("Chat/Chat.qml", {roomInfo})
window.uiState.page = "Chat/Chat.qml"
window.uiState.pageProperties = {userId, category, roomId}
window.uiStateChanged()
2019-04-28 14:44:55 +10:00
}
onCurrentItemChanged: if (currentItem) {
currentItem.forceActiveFocus()
}
// Buggy
replaceExit: null
popExit: null
pushExit: null
}
}
}