mirror of
https://github.com/sharkdp/bat
synced 2024-12-30 06:03:06 +00:00
220 lines
6.3 KiB
QML
220 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)
|
||
|
}
|
||
|
}
|