summaryrefslogtreecommitdiffstats
path: root/src/settingsui/main.qml
diff options
context:
space:
mode:
Diffstat (limited to 'src/settingsui/main.qml')
-rw-r--r--src/settingsui/main.qml302
1 files changed, 102 insertions, 200 deletions
diff --git a/src/settingsui/main.qml b/src/settingsui/main.qml
index 1ed1138..a194c4f 100644
--- a/src/settingsui/main.qml
+++ b/src/settingsui/main.qml
@@ -1,241 +1,143 @@
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
+** Contact: http://www.qt.io/licensing/
**
-** This file is part of the FOO module of the Qt Toolkit.
+** This file is part of the Qt Device Utilities module of the Qt Toolkit.
**
-** $QT_BEGIN_LICENSE:GPL$
+** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPLv3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+** General Public License version 2.0 or later as published by the Free
+** Software Foundation and appearing in the file LICENSE.GPL included in
+** the packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 2.0 requirements will be
+** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
import QtQuick 2.6
-import QtQuick.Layouts 1.3
-import Qt.labs.controls 1.0
-import Qt.labs.controls.material 1.0
-import Qt.labs.controls.universal 1.0
-import Qt.labs.settings 1.0
-import QtQuick.XmlListModel 2.0
+import QtQuick.Window 2.2
+import com.theqtcompany.settingsui 1.0
import QtQuick.Enterprise.VirtualKeyboard 2.0
-import com.theqtcompany.localdevice 1.0
import "common"
-ApplicationWindow {
- id: root
- title: qsTr("Device settings")
- width: 800
- height: 600
+Window {
+ id: window
visible: true
- property var service
-
- header: ToolBar {
- id: titlebar
- property string title: ""
-
- RowLayout {
- spacing: 20
- anchors.fill: parent
-
- ToolButton {
- label: Image {
- source: "../icons/Chevron-left_black_1x.png"
- anchors.centerIn: parent
- }
- visible: stackView.depth > 1
- onClicked: stackView.pop();
- }
- Label {
- id: titleText
- font.pixelSize: 20
- text: stackView.currentItem.title
- horizontalAlignment: Qt.AlignHCenter
- verticalAlignment: Qt.AlignVCenter
- anchors.centerIn: parent
- }
- ToolButton {
- label: Image {
- source: "../icons/Power_black_1x.png"
- anchors.centerIn: parent
- }
- anchors.right: parent.right
-
- visible: stackView.depth === 1
- onClicked: menu.open();
-
- Menu {
- id: menu
- x: parent.width - width
-
- MenuItem {
- text: qsTr("Reboot")
- onTriggered: LocalDevice.reboot()
- }
- MenuItem {
- text: qsTr("Shutdown")
- onTriggered: LocalDevice.powerOff()
- }
- }
- }
- }
- }
- StackView {
- id: stackView
- initialItem: mainView
- anchors.top: parent.top
- anchors.bottom: parent.bottom
- anchors.left: parent.left
- anchors.right: parent.right
-
- Behavior on anchors.topMargin { NumberAnimation { duration: 250; easing.type: Easing.InOutQuad }}
-
- Component {
- id: mainView
-
- Item {
- property string title: qsTr("Device Settings")
-
- XmlListModel {
- id: xmlModel
- source: "settingsview.xml"
- query: "/xml/settings/item"
- XmlRole { name: "title"; query: "title/string()"}
- XmlRole { name: "icon"; query: "icon/string()"}
- XmlRole { name: "view"; query: "view/string()"}
- XmlRole { name: "path"; query: "path/string()"}
- }
- GridView {
- id: grid
- anchors.fill: parent
- anchors.margins: 40
- cellHeight: 133 + spacing
- cellWidth: 117 + spacing
- model: xmlModel
- property int spacing: 20
- delegate: MouseArea {
- width: grid.cellWidth - grid.spacing
- height: grid.cellHeight - grid.spacing
- Rectangle {
- anchors.fill: parent
- color: "#d6d6d6"
- radius: 5
- visible: pressed
- }
- Column {
- anchors.fill: parent
- anchors.topMargin: 10
- Image {
- id: image
- source: icon
- anchors.horizontalCenter: parent.horizontalCenter
- width: grid.cellWidth
- fillMode: Image.PreserveAspectFit
- }
- Label {
- text: title
- anchors.horizontalCenter: parent.horizontalCenter
- font.pixelSize: grid.cellHeight * .1
- }
- }
- onClicked: {
- var component = Qt.createComponent(path + '/' +view+'.qml');
- stackView.push(component.createObject(stackView));
- titlebar.title = title
- }
- }
- }
- }
- }
- }
-
- property var inputItem: InputContext.inputItem
-
- HandwritingInputPanel {
-
- id: handwritingInputPanel
+ Item {
+ id: root
anchors.fill: parent
- inputPanel: inputPanel
- Rectangle {
- z: -1
+ SettingsUI {
+ id: settingsUI
anchors.fill: parent
- color: "black"
- opacity: 0.10
+ anchors.bottomMargin: parent.height - inputPanel.y
}
- onAvailableChanged: {
- if (!available)
- inputPanel.ensureVisible()
- }
- }
- Item {
- visible: handwritingInputPanel.enabled && Qt.inputMethod.visible
- anchors { left: parent.left; top: parent.top; right: parent.right; bottom: inputPanel.top; }
+ /* Handwriting input panel for full screen handwriting input.
- HandwritingModeButton {
- id: handwritingModeButton
- anchors.top: parent.top
- anchors.right: parent.right
- anchors.margins: 10
- floating: true
- flipable: true
- width: 76
- height: width
- state: handwritingInputPanel.state
- onClicked: handwritingInputPanel.active = !handwritingInputPanel.active
- onDoubleClicked: handwritingInputPanel.available = !handwritingInputPanel.available
- }
- }
- InputPanel {
- id: inputPanel
- y: active ? parent.height - inputPanel.height : parent.height
- anchors.left: parent.left
- anchors.right: parent.right
-
- Behavior on y { NumberAnimation {duration: 250; easing.type: Easing.InOutQuad}}
+ This component is an optional add-on for the InputPanel component, that
+ is, its use does not affect the operation of the InputPanel component,
+ but it also can not be used as a standalone component.
- property var inputItem: InputContext.inputItem
+ The handwriting input panel is positioned to cover the entire area of
+ application. The panel itself is transparent, but once it is active the
+ user can draw handwriting on it.
+ */
- onInputItemChanged: {
- if (handwritingInputPanel.available)
- return;
-
- if (inputItem) {
- ensureVisible()
+ HandwritingInputPanel {
+ z: 79
+ id: handwritingInputPanel
+ anchors.fill: parent
+ inputPanel: inputPanel
+ Rectangle {
+ z: -1
+ anchors.fill: parent
+ color: "black"
+ opacity: 0.10
}
}
- onActiveChanged: {
- if (!active) {
- stackView.anchors.topMargin = 0
-
- if (!handwritingInputPanel.available && inputItem)
- inputItem.focus = false
+ /* Container area for the handwriting mode button.
+
+ Handwriting mode button can be moved freely within the container area.
+ In this example, a single click changes the handwriting mode and a
+ double-click changes the availability of the full screen handwriting input.
+ */
+ Item {
+ z: 89
+ visible: handwritingInputPanel.enabled && Qt.inputMethod.visible
+ anchors { left: parent.left; top: parent.top; right: parent.right; bottom: inputPanel.top; }
+ HandwritingModeButton {
+ id: handwritingModeButton
+ anchors.top: parent.top
+ anchors.right: parent.right
+ anchors.margins: 10
+ floating: true
+ flipable: true
+ width: 76
+ height: width
+ state: handwritingInputPanel.state
+ onClicked: handwritingInputPanel.active = !handwritingInputPanel.active
+ onDoubleClicked: handwritingInputPanel.available = !handwritingInputPanel.available
}
}
- function ensureVisible() {
- var mapped = inputItem.mapToItem(handwritingInputPanel, 0,0)
- if (mapped.y > (handwritingInputPanel.height-inputPanel.height-40)) {
- stackView.anchors.topMargin = -inputPanel.height
+ /* Keyboard input panel.
+ The keyboard is anchored to the bottom of the application.
+ */
+ InputPanel {
+ id: inputPanel
+ z: 99
+ y: root.height
+ anchors.left: root.left
+ anchors.right: root.right
+
+ states: State {
+ name: "visible"
+ /* The visibility of the InputPanel can be bound to the Qt.inputMethod.visible property,
+ but then the handwriting input panel and the keyboard input panel can be visible
+ at the same time. Here the visibility is bound to InputPanel.active property instead,
+ which allows the handwriting panel to control the visibility when necessary.
+ */
+ when: inputPanel.active
+ PropertyChanges {
+ target: inputPanel
+ y: root.height - inputPanel.height
+ }
+ }
+ transitions: Transition {
+ from: ""
+ to: "visible"
+ reversible: true
+ ParallelAnimation {
+ NumberAnimation {
+ properties: "y"
+ duration: 250
+ easing.type: Easing.InOutQuad
+ }
+ }
}
+ AutoScroller {}
}
}
}