kdeconnect-kde/app/qml/main.qml

131 lines
4.2 KiB
QML
Raw Normal View History

2015-06-13 00:30:38 +01:00
/*
* Copyright 2015 Aleix Pol Gonzalez <aleixpol@kde.org>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License or (at your option) version 3 or any later version
* accepted by the membership of KDE e.V. (or its successor approved
* by the membership of KDE e.V.), which shall act as a proxy
* defined in Section 14 of version 3 of the license.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
2019-03-23 16:29:26 +00:00
* along with this program. If not, see <https://www.gnu.org/licenses/>.
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
topContent: RowLayout {
width: parent.width
DBusProperty {
id: announcedNameProperty
object: DaemonDbusInterface
read: "announcedName"
defaultValue: ""
}
TextField {
id: nameField
visible: false
Layout.fillWidth: true
Layout.leftMargin: Kirigami.Units.smallSpacing
text: announcedNameProperty.value
onAccepted: {
DaemonDbusInterface.setAnnouncedName(text)
text = Qt.binding(function() {return announcedNameProperty.value})
}
}
Label {
text: announcedNameProperty.value
visible: !nameField.visible
Layout.fillWidth: true
font.pointSize: 18
Layout.leftMargin: Kirigami.Units.smallSpacing
}
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
}