summaryrefslogtreecommitdiffstats
path: root/app/datetime/DateEdit.qml
diff options
context:
space:
mode:
Diffstat (limited to 'app/datetime/DateEdit.qml')
-rw-r--r--app/datetime/DateEdit.qml122
1 files changed, 122 insertions, 0 deletions
diff --git a/app/datetime/DateEdit.qml b/app/datetime/DateEdit.qml
new file mode 100644
index 0000000..f9f75fd
--- /dev/null
+++ b/app/datetime/DateEdit.qml
@@ -0,0 +1,122 @@
+/*
+ * Copyright (C) 2016 The Qt Company Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import QtQuick 2.6
+import QtQuick.Layouts 1.1
+import QtQuick.Controls 2.0
+import AGL.Demo.Controls 1.0
+
+GridLayout {
+ id: root
+ flow: GridLayout.TopToBottom
+ rows: 3
+
+ property int year: yearControl.model[yearControl.currentIndex]
+ property int month: monthControl.currentIndex + 1
+ property int day: dayControl.currentIndex + 1
+
+ ImageButton {
+ Layout.alignment: Layout.Center
+ offImage: './images/HMI_Settings_TimeDate_Arrow_Up.svg'
+ onClicked: monthControl.currentIndex++
+ }
+ Tumbler {
+ id: monthControl
+ implicitWidth: 200
+ model: ['JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC']
+ onCurrentIndexChanged: dayControl.regenerateModel()
+
+ EditSeparator { anchors.fill: parent }
+ }
+ ImageButton {
+ Layout.alignment: Layout.Center
+ offImage: './images/HMI_Settings_TimeDate_Arrow_Down.svg'
+ onClicked: monthControl.currentIndex--
+ }
+
+ Item { width: 10; height: 10 }
+ Label { text: ':' }
+ Item { width: 10; height: 10 }
+
+ ImageButton {
+ Layout.alignment: Layout.Center
+ offImage: './images/HMI_Settings_TimeDate_Arrow_Up.svg'
+ onClicked: dayControl.currentIndex++
+ }
+
+ Tumbler {
+ id: dayControl
+ model: ListModel{
+ id: monthModel
+ }
+ Component.onCompleted: regenerateModel()
+ function regenerateModel() {
+ var eom = 0
+ var y = yearControl.model[yearControl.currentIndex]
+ var m = monthControl.currentIndex + 1
+ switch (m) {
+ case 2:
+ eom = 28 + parseInt(1 / (y % 4 + 1)) - parseInt(1 - 1 / (y % 100 + 1)) + parseInt(1 / (y % 400 + 1))
+ break
+ case 4:
+ case 6:
+ case 9:
+ case 11:
+ eom = 30
+ break
+ default:
+ eom = 31
+ break
+ }
+ while (monthModel.count < eom)
+ monthModel.append({modelData: monthModel.count + 1})
+ while (monthModel.count > eom)
+ monthModel.remove(monthModel.count - 1, 1)
+ }
+ EditSeparator { anchors.fill: parent }
+ }
+
+ ImageButton {
+ Layout.alignment: Layout.Center
+ offImage: './images/HMI_Settings_TimeDate_Arrow_Down.svg'
+ onClicked: dayControl.currentIndex--
+ }
+
+ ImageButton {
+ Layout.alignment: Layout.Center
+ offImage: './images/HMI_Settings_TimeDate_Arrow_Up.svg'
+ onClicked: yearControl.currentIndex++
+ }
+
+ Tumbler {
+ id: yearControl
+ Component.onCompleted: {
+ var arr = new Array
+ for (var i = 2010; i < 2050; i++) {
+ arr.push(i)
+ }
+ yearControl.model = arr
+ }
+ onCurrentIndexChanged: dayControl.regenerateModel()
+ EditSeparator { anchors.fill: parent }
+ }
+
+ ImageButton {
+ Layout.alignment: Layout.Center
+ offImage: './images/HMI_Settings_TimeDate_Arrow_Down.svg'
+ onClicked: yearControl.currentIndex--
+ }
+}