Spectral/qml/main.qml

192 lines
3.9 KiB
QML
Raw Normal View History

2018-12-07 01:18:42 +00:00
import QtQuick 2.12
2018-12-22 14:25:03 +00:00
import QtQuick.Controls 2.12
import QtQuick.Layouts 1.12
import QtQuick.Controls.Material 2.12
import Qt.labs.settings 1.0
import Qt.labs.platform 1.0 as Platform
2018-10-01 08:07:48 +00:00
import Spectral.Panel 2.0
2018-10-01 08:07:48 +00:00
import Spectral.Component 2.0
import Spectral.Dialog 2.0
import Spectral.Effect 2.0
2018-10-01 08:07:48 +00:00
import Spectral 0.1
2018-10-01 08:07:48 +00:00
import Spectral.Setting 0.1
2018-02-23 14:39:14 +00:00
ApplicationWindow {
readonly property bool inPortrait: window.width < 640
2018-12-16 02:47:58 +00:00
Material.theme: MPalette.theme
Material.background: MPalette.background
2018-11-16 12:30:42 +00:00
2018-02-23 14:39:14 +00:00
width: 960
height: 640
minimumWidth: 480
2018-09-15 11:07:38 +00:00
minimumHeight: 360
2018-09-04 13:13:14 +00:00
id: window
visible: true
title: qsTr("Spectral")
2019-04-30 09:02:00 +00:00
font.family: MSettings.fontFamily
2018-12-16 02:47:58 +00:00
background: Rectangle {
color: MSettings.darkTheme ? "#303030" : "#FFFFFF"
}
Platform.SystemTrayIcon {
visible: MSettings.showTray
iconSource: "qrc:/assets/img/icon.png"
menu: Platform.Menu {
Platform.MenuItem {
text: qsTr("Toggle Window")
onTriggered: window.visible ? hideWindow() : showWindow()
}
Platform.MenuItem {
text: qsTr("Quit")
onTriggered: Qt.quit()
}
}
}
2018-02-27 11:07:50 +00:00
Controller {
id: spectralController
2018-08-19 06:51:09 +00:00
quitOnLastWindowClosed: !MSettings.showTray
onErrorOccured: errorControl.show(error + ": " + detail, 3000)
}
NotificationsManager {
id: notificationsManager
2018-10-19 14:02:12 +00:00
onNotificationClicked: {
2018-11-17 13:12:56 +00:00
roomListForm.enteredRoom = spectralController.connection.room(roomId)
roomForm.goToEvent(eventId)
2018-10-19 14:02:12 +00:00
showWindow()
}
2018-02-26 12:41:20 +00:00
}
2018-02-23 14:39:14 +00:00
2018-11-22 12:35:49 +00:00
Shortcut {
2019-04-30 13:12:24 +00:00
sequence: "Ctrl+Q"
context: Qt.ApplicationShortcut
2018-11-22 12:35:49 +00:00
onActivated: Qt.quit()
}
2019-04-30 09:02:00 +00:00
ToolTip {
id: errorControl
2019-04-30 09:02:00 +00:00
parent: ApplicationWindow.overlay
2019-04-30 09:02:00 +00:00
font.pixelSize: 14
}
2019-04-30 09:02:00 +00:00
Component {
id: accountDetailDialog
2019-04-30 09:02:00 +00:00
AccountDetailDialog {}
}
Component {
id: loginDialog
LoginDialog {}
}
Component {
id: joinRoomDialog
JoinRoomDialog {}
}
Component {
id: createRoomDialog
CreateRoomDialog {}
}
2019-04-30 09:02:00 +00:00
Component {
id: fontFamilyDialog
FontFamilyDialog {}
}
Component {
id: chatBackgroundDialog
OpenFileDialog {}
}
Drawer {
width: Math.min((inPortrait ? 0.67 : 0.3) * window.width, 360)
height: window.height
modal: inPortrait
interactive: inPortrait
position: inPortrait ? 0 : 1
visible: !inPortrait
2019-04-21 13:21:48 +00:00
id: roomListDrawer
2018-09-22 14:28:47 +00:00
RoomListPanel {
anchors.fill: parent
2018-09-22 14:28:47 +00:00
id: roomListForm
2018-09-22 14:28:47 +00:00
clip: true
2018-09-22 14:28:47 +00:00
connection: spectralController.connection
2018-02-23 14:39:14 +00:00
onLeaveRoom: roomForm.saveReadMarker(room)
}
}
2018-02-23 14:39:14 +00:00
RoomPanel {
anchors.fill: parent
2019-04-21 13:21:48 +00:00
anchors.leftMargin: !inPortrait ? roomListDrawer.width : undefined
anchors.rightMargin: !inPortrait && roomDrawer.visible ? roomDrawer.width : undefined
id: roomForm
2018-09-04 13:13:14 +00:00
clip: true
2018-09-04 13:13:14 +00:00
currentRoom: roomListForm.enteredRoom
}
RoomDrawer {
width: Math.min((inPortrait ? 0.67 : 0.3) * window.width, 360)
height: window.height
modal: inPortrait
interactive: inPortrait
edge: Qt.RightEdge
id: roomDrawer
room: roomListForm.enteredRoom
2018-02-23 14:39:14 +00:00
}
Binding {
target: imageProvider
property: "connection"
value: spectralController.connection
2018-02-23 14:39:14 +00:00
}
2018-09-13 00:22:41 +00:00
function showWindow() {
window.show()
window.raise()
window.requestActivate()
}
function hideWindow() {
window.hide()
}
Component.onCompleted: {
spectralController.initiated.connect(function() {
if (spectralController.accountCount == 0) loginDialog.createObject(window).open()
})
}
2018-02-23 14:39:14 +00:00
}