kdeconnect-kde/app/qml/main.qml

125 lines
4 KiB
QML
Raw Normal View History

2015-06-13 00:30:38 +01:00
/*
* SPDX-FileCopyrightText: 2015 Aleix Pol Gonzalez <aleixpol@kde.org>
2015-06-13 00:30:38 +01:00
*
* SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
2015-06-13 00:30:38 +01:00
*/
import QtQuick 2.2
2018-06-08 00:58:50 +01:00
import QtQuick.Controls 2.1
2015-06-13 00:30:38 +01:00
import QtQuick.Layouts 1.1
2017-05-09 10:41:55 +01:00
import org.kde.kirigami 2.0 as Kirigami
2015-06-13 00:30:38 +01:00
import org.kde.kdeconnect 1.0
Kirigami.ApplicationWindow
2015-06-13 00:30:38 +01:00
{
id: root
visible: true
2017-05-09 10:41:55 +01:00
width: 900
2015-06-13 00:30:38 +01:00
height: 500
Kirigami.Action {
id: findDevicesAction
text: i18nd("kdeconnect-app", "Find devices...")
iconName: "list-add"
2017-05-09 10:41:55 +01:00
checked: pageStack.currentItem && pageStack.currentItem.objectName == "FindDevices"
2016-08-21 17:45:49 +01:00
onTriggered: {
root.pageStack.clear()
2019-10-15 19:06:04 +01:00
root.pageStack.push(Qt.resolvedUrl("FindDevicesPage.qml"));
}
}
globalDrawer: Kirigami.GlobalDrawer {
id: drawer
modal: !root.wideScreen
handleVisible: !root.wideScreen
2020-09-19 13:51:11 +01:00
header: Kirigami.AbstractApplicationHeader {
topPadding: Kirigami.Units.smallSpacing / 2 // HACK: not dividing by two makes the header to big and not adding the spacing make it to small
bottomPadding: Kirigami.Units.smallSpacing
leftPadding: Kirigami.Units.smallSpacing
rightPadding: Kirigami.Units.smallSpacing
contentItem: RowLayout {
anchors.fill: parent
spacing: Kirigami.Units.smallSpacing
2020-09-19 13:51:11 +01:00
DBusProperty {
id: announcedNameProperty
object: DaemonDbusInterface
read: "announcedName"
defaultValue: ""
}
2020-09-19 13:51:11 +01:00
TextField {
id: nameField
visible: false
Layout.fillWidth: true
text: announcedNameProperty.value
onAccepted: {
DaemonDbusInterface.setAnnouncedName(text)
text = Qt.binding(function() {return announcedNameProperty.value})
}
}
Kirigami.Heading {
level: 2
text: announcedNameProperty.value
Layout.fillWidth: true
visible: !nameField.visible
elide: Qt.ElideRight
font.pointSize: 18
}
2020-09-19 13:51:11 +01:00
Button {
icon.name: nameField.visible ? "dialog-ok-apply" : "entry-edit"
onClicked: {
nameField.visible = !nameField.visible
nameField.accepted()
}
}
}
2019-07-21 19:40:16 +01:00
}
property var objects: [findDevicesAction]
Instantiator {
model: DevicesSortProxyModel {
sourceModel: DevicesModel { displayFilter: DevicesModel.Paired | DevicesModel.Reachable }
}
delegate: Kirigami.Action {
2019-02-08 23:17:07 +00:00
icon.name: model.iconName
icon.color: "transparent"
text: display + "\n" + toolTip
visible: status & DevicesModel.Reachable
2017-05-09 10:41:55 +01:00
checked: pageStack.currentItem && pageStack.currentItem.currentDevice == device
onTriggered: {
root.pageStack.clear()
root.pageStack.push(
2019-10-15 19:06:04 +01:00
Qt.resolvedUrl("DevicePage.qml"),
{currentDevice: device}
);
2015-06-13 00:30:38 +01:00
}
}
onObjectAdded: {
drawer.objects.push(object)
drawer.objects = drawer.objects
}
onObjectRemoved: {
var idx = drawer.objects.indexOf(object);
if (idx>=0) {
var removed = drawer.objects.splice(idx, 1)
drawer.objects = drawer.objects
}
}
2015-06-13 00:30:38 +01:00
}
actions: objects
2015-06-13 00:30:38 +01:00
}
contextDrawer: Kirigami.ContextDrawer {
id: contextDrawer
}
2019-10-15 19:06:04 +01:00
pageStack.initialPage: Qt.resolvedUrl("FindDevicesPage.qml")
2015-06-13 00:30:38 +01:00
}