mirror of
https://github.com/sharkdp/bat
synced 2024-11-27 22:30:33 +00:00
219 lines
6.3 KiB
QML
219 lines
6.3 KiB
QML
import QtQuick 2.0
|
|
import "../components"
|
|
|
|
Page {
|
|
id: page
|
|
|
|
// properties
|
|
|
|
property bool startup: true
|
|
readonly property var var1: null
|
|
readonly property QtObject var2: null
|
|
|
|
allowedOrientations: Orientation.All
|
|
|
|
/* components */
|
|
|
|
DBusServiceWatcher {
|
|
id: dbusService
|
|
service: "org.bat.service"
|
|
|
|
onRegisteredChanged: {
|
|
if (dbusService.registered) {
|
|
announcedNameField.text = daemon.announcedName()
|
|
}
|
|
}
|
|
}
|
|
|
|
Component.onCompleted: {
|
|
console.debug("completed")
|
|
}
|
|
|
|
Flickable {
|
|
anchors.fill: parent
|
|
contentHeight: column.height
|
|
visible: dbusService.registered
|
|
|
|
ViewPlaceholder {
|
|
enabled: !startup
|
|
&& trustedDevices.count == 0
|
|
&& nearDevices.count == 0
|
|
text: qsTr("Install Bat.")
|
|
}
|
|
|
|
Column {
|
|
id: column
|
|
|
|
width: page.width
|
|
spacing: Theme.paddingLarge
|
|
|
|
PageHeader {
|
|
title: qsTr("Syntax Test")
|
|
}
|
|
|
|
TextField {
|
|
id: announcedNameField
|
|
width: parent.width
|
|
label: qsTr("Device Name")
|
|
text: dbusService.registered ? daemon.announcedName() : ""
|
|
|
|
onActiveFocusChanged: {
|
|
if (activeFocus)
|
|
return
|
|
|
|
if (text.length === 0) {
|
|
text = daemon.announcedName()
|
|
} else {
|
|
daemon.setAnnouncedName(text)
|
|
placeholderText = text
|
|
}
|
|
}
|
|
|
|
EnterKey.onClicked: announcedNameField.focus = false
|
|
EnterKey.iconSource: "image://theme/icon-m-enter-close"
|
|
}
|
|
|
|
|
|
Component {
|
|
id: deviceDelegate
|
|
|
|
ListItem {
|
|
id: listItem
|
|
|
|
property bool showStatus: deviceStatusLabel.text.length
|
|
|
|
width: page.width
|
|
height: Theme.itemSizeMedium
|
|
|
|
Image {
|
|
id: icon
|
|
source: iconUrl
|
|
|
|
x: Theme.horizontalPageMargin
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
sourceSize.width: Theme.iconSizeMedium
|
|
sourceSize.height: Theme.iconSizeMedium
|
|
}
|
|
|
|
Label {
|
|
id: deviceNameLabel
|
|
anchors {
|
|
left: icon.right
|
|
leftMargin: Theme.paddingLarge
|
|
right: parent.right
|
|
rightMargin: Theme.horizontalPageMargin
|
|
}
|
|
y: listItem.contentHeight / 2 - implicitHeight / 2
|
|
- showStatus * (deviceStatusLabel.implicitHeight / 2)
|
|
|
|
text: name
|
|
color: listItem.highlighted
|
|
? Theme.highlightColor
|
|
: Theme.primaryColor
|
|
truncationMode: TruncationMode.Fade
|
|
textFormat: Text.PlainText
|
|
|
|
Behavior on y { NumberAnimation {} }
|
|
}
|
|
|
|
Label {
|
|
id: deviceStatusLabel
|
|
anchors {
|
|
left: deviceNameLabel.left
|
|
top: deviceNameLabel.bottom
|
|
right: parent.right
|
|
rightMargin: Theme.horizontalPageMargin
|
|
}
|
|
|
|
text: (trusted && reachable)
|
|
? qsTr("Connected")
|
|
: (hasPairingRequests || waitsForPairing
|
|
? qsTr("Pending pairing request ...") : "")
|
|
color: listItem.highlighted
|
|
? Theme.secondaryHighlightColor
|
|
: Theme.secondaryColor
|
|
truncationMode: TruncationMode.Fade
|
|
font.pixelSize: Theme.fontSizeExtraSmall
|
|
opacity: showStatus ? 1.0 : 0.0
|
|
width: parent.width
|
|
textFormat: Text.PlainText
|
|
|
|
Behavior on opacity { FadeAnimation {} }
|
|
}
|
|
|
|
onClicked: {
|
|
pageStack.push(
|
|
Qt.resolvedUrl("DevicePage.qml"),
|
|
{ deviceId: id })
|
|
}
|
|
}
|
|
}
|
|
|
|
DeviceListModel {
|
|
id: devicelistModel
|
|
}
|
|
|
|
ColumnView {
|
|
id: devicesView
|
|
width: page.width
|
|
itemHeight: Theme.itemSizeMedium
|
|
|
|
|
|
model: trustedDevicesModel
|
|
delegate: deviceDelegate
|
|
visible: devicesView.count > 0
|
|
}
|
|
}
|
|
|
|
PullDownMenu {
|
|
// MenuItem {
|
|
// text: qsTr("About ...")
|
|
// onClicked: pageStack.push(Qt.resolvedUrl("AboutPage.qml"))
|
|
// }
|
|
|
|
MenuItem {
|
|
text: qsTr("Settings ...")
|
|
onClicked: pageStack.push(Qt.resolvedUrl("SettingsPage.qml"))
|
|
}
|
|
}
|
|
|
|
VerticalScrollDecorator {}
|
|
}
|
|
|
|
/*
|
|
Connections {
|
|
target: ui
|
|
onOpeningDevicePage: openDevicePage(deviceId)
|
|
}*/
|
|
|
|
Timer {
|
|
interval: 1000
|
|
running: true
|
|
repeat: false
|
|
onTriggered: startup = false
|
|
}
|
|
|
|
function openDevicePage(deviceId) {
|
|
if (typeof pageStack === "undefined")
|
|
return;
|
|
|
|
console.log("opening device " + deviceId)
|
|
|
|
window.activate()
|
|
|
|
var devicePage = pageStack.find(function(page) {
|
|
return page.objectName === "DevicePage"
|
|
})
|
|
if (devicePage !== null && devicePage.deviceId === deviceId) {
|
|
pageStack.pop(devicePage)
|
|
ui.showMainWindow()
|
|
return
|
|
}
|
|
|
|
pageStack.pop(page, PageStackAction.Immediate)
|
|
pageStack.push(
|
|
Qt.resolvedUrl("DevicePage.qml"),
|
|
{ deviceId: deviceId },
|
|
PageStackAction.Immediate)
|
|
}
|
|
}
|