summaryrefslogtreecommitdiffstats
path: root/src/settingsui/common
diff options
context:
space:
mode:
Diffstat (limited to 'src/settingsui/common')
-rw-r--r--src/settingsui/common/CustomCombobox.qml185
-rw-r--r--src/settingsui/common/FlatStyledDropdownDelegate.qml78
-rw-r--r--src/settingsui/common/IconButton.qml54
-rw-r--r--src/settingsui/common/TextLabel.qml48
4 files changed, 365 insertions, 0 deletions
diff --git a/src/settingsui/common/CustomCombobox.qml b/src/settingsui/common/CustomCombobox.qml
new file mode 100644
index 0000000..37c7871
--- /dev/null
+++ b/src/settingsui/common/CustomCombobox.qml
@@ -0,0 +1,185 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the Qt Device Utilities module of the Qt Toolkit.
+**
+** $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 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 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.5
+import QtQuick.Layouts 1.1
+import QtQuick.Controls 1.4
+import QtQuick.Controls.Styles.Flat 1.0 as Flat
+import QtQml.Models 2.1
+
+Item {
+ id: control
+ property alias popupParent: popupView.parent
+ property bool popupVisible: popupView.visible
+ property int selectedIndex: -1
+ property alias model: comboboxModel.model
+ property string textRole: "text"
+ property bool modified: false
+ property alias popupVisibility: popupView.visible
+ property alias textValue: label.text
+ property int popupHeight: comboboxModel.items.count * height
+ property bool enabled: true
+ property bool editable: true
+ property Component delegate
+
+ implicitWidth: Math.round(100 * Flat.FlatStyle.scaleFactor)
+ implicitHeight: Math.round(26 * Flat.FlatStyle.scaleFactor)
+
+ Component.onCompleted: {
+ //Find root window for parent
+ var p = control.parent
+ while (p.parent) {
+ p = p.parent;
+ }
+ popupParent = p;
+ }
+
+ function hide() {
+ popupView.visible = false
+ button.checked = false
+ }
+
+ function setSelectIndexToVal(value, role) {
+ if (model) {
+ for (var i=0, len=comboboxModel.items.count;i<len;i++) {
+ if (comboboxModel.items.get(i).model[role] === value) {
+ selectedIndex = i;
+ return;
+ }
+ }
+ }
+ selectedIndex = -1;
+ }
+
+ Button {
+ id: button
+ checkable: true
+ enabled: true
+ anchors.fill: parent
+ checked: popupView.visible
+ onClicked: popupView.visible = !popupView.visible
+
+ TextLabel {
+ id: label
+ anchors.fill: parent
+ anchors.margins: 10 * Flat.FlatStyle.scaleFactor
+ color: button.hovered || button.checked ? Flat.FlatStyle.selectedTextColor:Flat.FlatStyle.styleColor
+ horizontalAlignment: Text.AlignLeft
+ text: selectedIndex>=0 ? comboboxModel.items.count>0 ? comboboxModel.items.get(selectedIndex).model[textRole]:"":""
+ }
+
+ Flat.LeftArrowIcon {
+ anchors.right: parent.right
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.rightMargin: Math.round(10 * Flat.FlatStyle.scaleFactor)
+ width: Math.round(14 * Flat.FlatStyle.scaleFactor)
+ height: Math.round(14 * Flat.FlatStyle.scaleFactor)
+ rotation: popupVisibility ? 90 : -90
+ color: button.hovered || button.checked ? Flat.FlatStyle.selectedTextColor:Flat.FlatStyle.styleColor
+ opacity: control.enabled || control.editable ? 1.0 : 0.2
+ }
+ }
+
+ Item {
+ id: popupView
+ y: 0
+ x: 0
+ height: control.popupHeight
+ width: control.width
+ visible: false
+ onVisibleChanged: {
+ if (visible) {
+ var pos = control.mapToItem(popupView.parent, 0, 0)
+ x = pos.x
+ y = pos.y + button.height
+
+ if (y + control.popupHeight > popupParent.height) {
+ y = popupParent.height - control.popupHeight;
+ }
+ }
+ }
+
+ Rectangle {
+ anchors.fill: parent
+ border.color: Flat.FlatStyle.darkFrameColor
+ border.width: 1
+ color: "white"
+
+ Column {
+ ExclusiveGroup {
+ id: exgroup
+ }
+
+ DelegateModel {
+ id: comboboxModel
+ delegate: comboboxDelegate
+ }
+
+ Repeater {
+ id: comboboxView
+ model: comboboxModel
+ }
+ }
+ }
+ }
+
+ Component {
+ id: comboboxDelegate
+ Item {
+ id: comboboxViewDelegate
+ property bool checked
+ width: control.width
+ height: control.height
+
+ Loader {
+ id: loader
+ sourceComponent: delegate
+ anchors.fill: parent
+ property var modelData: model
+ property string textRole: textRole
+ onLoaded : exgroup.bindCheckable(item)
+ }
+
+ Connections {
+ target: loader.item
+ onClicked: {
+ popupView.visible = false;
+ button.checked = false
+ selectedIndex = index
+ }
+ }
+ }
+ }
+}
diff --git a/src/settingsui/common/FlatStyledDropdownDelegate.qml b/src/settingsui/common/FlatStyledDropdownDelegate.qml
new file mode 100644
index 0000000..c1bd24c
--- /dev/null
+++ b/src/settingsui/common/FlatStyledDropdownDelegate.qml
@@ -0,0 +1,78 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the Qt Device Utilities module of the Qt Toolkit.
+**
+** $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 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 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.5
+import QtQuick.Layouts 1.1
+import QtQuick.Controls 1.4
+import QtQuick.Controls.Styles.Flat 1.0 as Flat
+
+Item {
+ id: root
+ property bool checkable: true
+ property bool checked: false
+ property bool pressed: false
+ signal clicked()
+
+ MouseArea {
+ id: delegateButton
+ anchors.fill: parent
+ hoverEnabled: true
+
+ onPressed: root.pressed = true
+ onClicked: root.clicked();
+ onEntered: checked = !checked;
+
+ Rectangle {
+ anchors.fill: parent
+ color: root.checked ? Flat.FlatStyle.disabledColor : "transparent"
+ opacity: root.checked ? 0.15 : 1.0
+ }
+ Rectangle {
+ color: Flat.FlatStyle.darkFrameColor
+ width: parent.width
+ height: Flat.FlatStyle.onePixel
+ anchors.bottom: parent.bottom
+ }
+ TextLabel {
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.top: parent.top
+ anchors.bottom: parent.bottom
+ anchors.margins: Math.round(10 * Flat.FlatStyle.scaleFactor)
+ horizontalAlignment: Text.AlignLeft
+ text: modelData.name
+ }
+ }
+}
diff --git a/src/settingsui/common/IconButton.qml b/src/settingsui/common/IconButton.qml
new file mode 100644
index 0000000..898e5e0
--- /dev/null
+++ b/src/settingsui/common/IconButton.qml
@@ -0,0 +1,54 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the Qt Device Utilities module of the Qt Toolkit.
+**
+** $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 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 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.5
+
+MouseArea {
+ id: root
+ property alias pressedIcon: pressedImage.source
+ property alias releasedIcon: releasedImage.source
+ width: pressedImage.sourceSize.width
+ height: pressedImage.sourceSize.height
+
+ Image {
+ id: pressedImage
+ visible: root.pressed
+ }
+
+ Image {
+ id: releasedImage
+ visible: !root.pressed
+ }
+}
diff --git a/src/settingsui/common/TextLabel.qml b/src/settingsui/common/TextLabel.qml
new file mode 100644
index 0000000..e9f5d12
--- /dev/null
+++ b/src/settingsui/common/TextLabel.qml
@@ -0,0 +1,48 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the Qt Device Utilities module of the Qt Toolkit.
+**
+** $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 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 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.5
+import QtQuick.Layouts 1.1
+import QtQuick.Controls 1.4
+import QtQuick.Controls.Styles.Flat 1.0 as Flat
+
+Text {
+ color: systemPalette.text
+ font.family: Flat.FlatStyle.fontFamily
+ font.pixelSize: Math.round(12 * Flat.FlatStyle.scaleFactor)
+ renderType: Text.QtRendering
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+}