123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810 |
- import QtQuick 2.5
- import ApplicationLauncher 1.0
- import "qrc:/Globals"
- Item {
- id: dateTimeSETTINGS
- property int dateListTextFontSize: mHighlightBarHeight - 3 * mHighlightBarThickness
- property int mHighlightBarThickness: 3
- property int mHighlightBarHeight: (setMonthRect.height / 3)
- property color cGreenLetterColor: "gray" //Globals.customer_color_base
- property color bgColor: "lightgray"
- property color selCol: Globals.customer_color_base //"black"//"white"
- property int numITEMS: 3
- property double pathScale: 0.5
- property int defaultMONTHIDX: 0
- property int defaultDAYIDX: 0
- property int defaultYEARIDX: 0
- property int defaultHOURIDX: 0
- property int defaultMINIDX: 0
- property int defaultSECIDX: 0
- property int defaultTZIDX: 0
- //------------------
- property int dtDay: -1
- property int dtMonth: -1
- property int dtYear: -1
- property int dtHour: -1
- property int dtMin: -1
- property int dtSec: -1
- property string dtTZ: ""
- function datetimeSet() {
- dayNumSet();
- monthNamesSet();
- yearNumSet();
- hourNumSet();
- minNumSet();
- secNumSet();
- tzNamesSet();
- defaultDAYIDX = parseInt(Qt.formatDate(new Date(), "d")) - 1;
- dayView.currentIndex = defaultDAYIDX;
- }
- function monthNamesSet(){
- var monthnames = transLoad.getMonthNames();
- monthModel.clear();
- defaultMONTHIDX = 0;
- var i = 0;
- for ( i = 0; i < monthnames.length; i++){
- monthModel.append( {index: i,
- month: monthnames[i],
- } );
- }
- defaultMONTHIDX = new Date().getMonth();
- }
- function dayNumSet(){
- if ( dayModel.count === 0) {
- dayModel.clear();
- defaultDAYIDX = 0;
- var i = 0;
- for ( i = 0; i < 31; i++){
- dayModel.append( {index: i,
- day: (i + 1).toString(),
- } );
- }
- }
- defaultDAYIDX = parseInt(Qt.formatDate(new Date(), "d")) - 1;
- }
- function dayNumSetMonth(){
- var rows = dayModel.count;
- if ( rows === 0) {
- dayModel.clear();
- defaultDAYIDX = 0;
- var i = 0;
- for ( i = 0; i < 31; i++){
- dayModel.append( {index: i,
- day: (i + 1).toString(),
- } );
- }
- defaultDAYIDX = parseInt(Qt.formatDate(new Date(), "d")) - 1;
- }
- if ((dtYear != -1) && (dtMonth != -1)) {
- var daysinmonth = new Date(dtYear, dtMonth, 0).getDate();
- if (daysinmonth > dayModel.count) {
- for (i = dayModel.count; i < daysinmonth; i++ ) {
- dayModel.append( {index: i,
- day: (i + 1).toString(),
- } );
- }
- }
- if (daysinmonth < dayModel.count) {
- var rmcnt = dayModel.count;
- for (i = daysinmonth; i < rmcnt; i++ ) {
- var idx = dayModel.count - 1;
- dayModel.remove(idx);
- }
- }
- }
- }
- function yearNumSet(){
- yearModel.clear();
- defaultYEARIDX = 0;
- var i = 0;
- for ( i = 2010; i < 2035; i++){
- yearModel.append( {index: i - 2010,
- year: i.toString(),
- } );
- }
- var year = new Date().getFullYear();
- year -= 2010;
- defaultYEARIDX = year;
- }
- function hourNumSet() {
- hourModel.clear();
- defaultHOURIDX = 0;
- var i = 0;
- for ( i = 0; i < 24; i++){
- hourModel.append( {index: i,
- hour: i.toString(),
- } );
- }
- defaultHOURIDX = new Date().getHours();
- }
- function minNumSet() {
- minModel.clear();
- defaultMINIDX = 0;
- var i = 0;
- for ( i = 0; i < 60; i++){
- minModel.append( {index: i,
- min: i.toString(),
- } );
- }
- defaultMINIDX = new Date().getMinutes();
- }
- function secNumSet() {
- secModel.clear();
- defaultSECIDX = 0;
- var i = 0;
- for ( i = 0; i < 60; i++){
- secModel.append( {index: i,
- sec: i.toString(),
- } );
- }
- defaultSECIDX = new Date().getSeconds();
- }
- function tzNamesSet(){
- var tznames = transLoad.getTimeZoneIds();
- var idxtxt = transLoad.getSystemTimeZoneId();
- var idx = 0;
- tzModel.clear();
- defaultTZIDX = 0;
- var i = 0;
- for ( i = 0; i < tznames.length; i++){
- tzModel.append( {index: i,
- tz: tznames[i],
- } );
- if (tznames[i] === idxtxt) idx = i;
- }
- defaultTZIDX = idx;
- }
- Rectangle {
- id: setDayRect
- width: (parent.width / 2) / 3
- height: (parent.height / 3) - mHighlightBarThickness
- x: 0
- y: 0
- color: bgColor
- Component.onCompleted: {
- dayNumSet();
- }
- ListModel {
- id: dayModel
- }
- Component {
- id: dayDelegate
- Text {
- anchors.horizontalCenter: parent.horizontalCenter
- scale: PathView.pathScale
- opacity: scale
- font.pixelSize: dateListTextFontSize
- onScaleChanged: {
- color = scale === 1.0 ? selCol:cGreenLetterColor;
- }
- text: day
- }
- }
- PathView{
- id: dayView
- onCurrentIndexChanged: {
- dtDay = currentIndex + 1;
- }
- anchors.fill: parent
- preferredHighlightBegin: 0.5
- preferredHighlightEnd: 0.5
- highlightRangeMode: PathView.StrictlyEnforceRange
- highlight: Component {
- Rectangle{
- visible: PathView.onPath
- anchors.centerIn: parent
- height: mHighlightBarHeight
- width: parent.width
- color: "transparent"
- border.color: "transparent"
- Rectangle{
- anchors.top: parent.top
- width: parent.width
- height: mHighlightBarThickness
- color: cGreenLetterColor
- }
- Rectangle{
- anchors.bottom: parent.bottom
- width: parent.width
- height: mHighlightBarThickness
- color: cGreenLetterColor
- }
- }
- }
- model: dayModel
- delegate: dayDelegate
- currentIndex: defaultDAYIDX
- pathItemCount: numITEMS
- path:Path{
- startX: 0
- startY: 0
- PathAttribute { name: "pathScale"; value: pathScale }
- PathLine { x:0; y: setMonthRect.height/2}
- PathAttribute { name: "pathScale"; value: 1.0 }
- PathLine { x: 0; y: setMonthRect.height }
- PathAttribute { name: "pathScale"; value: pathScale }
- }
- }
- } // END DAY
- Rectangle {
- id: setMonthRect
- width: (parent.width / 2) * 1.15
- height: (parent.height / 3) - mHighlightBarThickness
- x: (parent.width / 2) / 3
- y: 0
- color: bgColor
- Component.onCompleted: {
- monthNamesSet();
- }
- ListModel {
- id: monthModel
- }
- Component {
- id: monthDelegate
- Text {
- anchors.horizontalCenter: parent.horizontalCenter
- scale: PathView.pathScale
- opacity: scale
- font.pixelSize: dateListTextFontSize
- onScaleChanged: {
- color = scale === 1.0 ? selCol:cGreenLetterColor;
- }
- text: month
- }
- }
- PathView{
- id: monthView
- onCurrentIndexChanged: {
- dtMonth = currentIndex + 1;
- dayNumSetMonth();
- }
- anchors.fill: parent
- preferredHighlightBegin: 0.5
- preferredHighlightEnd: 0.5
- highlightRangeMode: PathView.StrictlyEnforceRange
- highlight: Component {
- Rectangle{
- visible: PathView.onPath
- anchors.centerIn: parent
- height: mHighlightBarHeight
- width: parent.width
- color: "transparent"
- border.color: "transparent"
- Rectangle{
- anchors.top: parent.top
- width: parent.width
- height: mHighlightBarThickness
- color: cGreenLetterColor
- }
- Rectangle{
- anchors.bottom: parent.bottom
- width: parent.width
- height: mHighlightBarThickness
- color: cGreenLetterColor
- }
- }
- }
- model: monthModel
- delegate: monthDelegate
- currentIndex: defaultMONTHIDX
- pathItemCount: numITEMS
- path:Path{
- startX: 0
- startY: 0
- PathAttribute { name: "pathScale"; value: pathScale }
- PathLine { x:0; y: setMonthRect.height/2}
- PathAttribute { name: "pathScale"; value: 1.0 }
- PathLine { x: 0; y: setMonthRect.height }
- PathAttribute { name: "pathScale"; value: pathScale }
- }
- }
- } // Month END
- Rectangle {
- id: setYearRect
- width: parent.width - (setMonthRect.x + setMonthRect.width)
- height: (parent.height / 3) - mHighlightBarThickness
- x: setMonthRect.x + setMonthRect.width
- y: 0
- color: bgColor
- Component.onCompleted: {
- yearNumSet();
- }
- ListModel {
- id: yearModel
- }
- Component {
- id: yearDelegate
- Text {
- anchors.horizontalCenter: parent.horizontalCenter
- scale: PathView.pathScale
- opacity: scale
- font.pixelSize: dateListTextFontSize
- onScaleChanged: {
- color = scale === 1.0 ? selCol:cGreenLetterColor;
- }
- text: year
- }
- }
- PathView{
- id: yearView
- onCurrentIndexChanged: {
- dtYear = currentIndex + 2010;
- dayNumSetMonth();
- }
- anchors.fill: parent
- preferredHighlightBegin: 0.5
- preferredHighlightEnd: 0.5
- highlightRangeMode: PathView.StrictlyEnforceRange
- highlight: Component {
- Rectangle{
- visible: PathView.onPath
- anchors.centerIn: parent
- height: mHighlightBarHeight
- width: parent.width
- color: "transparent"
- border.color: "transparent"
- Rectangle{
- anchors.top: parent.top
- width: parent.width
- height: mHighlightBarThickness
- color: cGreenLetterColor
- }
- Rectangle{
- anchors.bottom: parent.bottom
- width: parent.width
- height: mHighlightBarThickness
- color: cGreenLetterColor
- }
- }
- }
- model: yearModel
- delegate: yearDelegate
- currentIndex: defaultYEARIDX
- pathItemCount: numITEMS
- path:Path{
- startX: 0
- startY: 0
- PathAttribute { name: "pathScale"; value: pathScale }
- PathLine { x:0; y: setYearRect.height/2}
- PathAttribute { name: "pathScale"; value: 1.0 }
- PathLine { x: 0; y: setYearRect.height }
- PathAttribute { name: "pathScale"; value: pathScale }
- }
- }
- } // YEAR END
- Rectangle {
- id: setHourRect
- width: (parent.width / 2) / 3
- height: (parent.height / 3) - mHighlightBarThickness
- x: 0
- y: (parent.height / 3)
- color: bgColor
- Component.onCompleted: {
- hourNumSet();
- }
- ListModel {
- id: hourModel
- }
- Component {
- id: hourDelegate
- Text {
- anchors.horizontalCenter: parent.horizontalCenter
- scale: PathView.pathScale
- opacity: scale
- font.pixelSize: dateListTextFontSize
- onScaleChanged: {
- color = scale === 1.0 ? selCol:cGreenLetterColor;
- }
- text: hour
- }
- }
- PathView{
- id: hourView
- onCurrentIndexChanged: {
- dtHour = currentIndex;
- }
- anchors.fill: parent
- preferredHighlightBegin: 0.5
- preferredHighlightEnd: 0.5
- highlightRangeMode: PathView.StrictlyEnforceRange
- highlight: Component {
- Rectangle{
- visible: PathView.onPath
- anchors.centerIn: parent
- height: mHighlightBarHeight
- width: parent.width
- color: "transparent"
- border.color: "transparent"
- Rectangle{
- anchors.top: parent.top
- width: parent.width
- height: mHighlightBarThickness
- color: cGreenLetterColor
- }
- Rectangle{
- anchors.bottom: parent.bottom
- width: parent.width
- height: mHighlightBarThickness
- color: cGreenLetterColor
- }
- }
- }
- model: hourModel
- delegate: hourDelegate
- currentIndex: defaultHOURIDX
- pathItemCount: numITEMS
- path:Path{
- startX: 0
- startY: 0
- PathAttribute { name: "pathScale"; value: pathScale }
- PathLine { x:0; y: setHourRect.height/2}
- PathAttribute { name: "pathScale"; value: 1.0 }
- PathLine { x: 0; y: setHourRect.height }
- PathAttribute { name: "pathScale"; value: pathScale }
- }
- }
- } // HOUR END
- Rectangle {
- id: setMinRect
- width: (parent.width / 2) / 3
- height: (parent.height / 3) - mHighlightBarThickness
- x: (parent.width / 2) / 3
- y: parent.height / 3
- color: bgColor
- Component.onCompleted: {
- minNumSet();
- }
- ListModel {
- id: minModel
- }
- Component {
- id: minDelegate
- Text {
- anchors.horizontalCenter: parent.horizontalCenter
- scale: PathView.pathScale
- opacity: scale
- font.pixelSize: dateListTextFontSize
- onScaleChanged: {
- color = scale === 1.0 ? selCol:cGreenLetterColor;
- }
- text: min
- }
- }
- PathView{
- id: minView
- onCurrentIndexChanged: {
- dtMin = currentIndex;
- }
- anchors.fill: parent
- preferredHighlightBegin: 0.5
- preferredHighlightEnd: 0.5
- highlightRangeMode: PathView.StrictlyEnforceRange
- highlight: Component {
- Rectangle{
- visible: PathView.onPath
- anchors.centerIn: parent
- height: mHighlightBarHeight
- width: parent.width
- color: "transparent"
- border.color: "transparent"
- Rectangle{
- anchors.top: parent.top
- width: parent.width
- height: mHighlightBarThickness
- color: cGreenLetterColor
- }
- Rectangle{
- anchors.bottom: parent.bottom
- width: parent.width
- height: mHighlightBarThickness
- color: cGreenLetterColor
- }
- }
- }
- model: minModel
- delegate: minDelegate
- currentIndex: defaultMINIDX
- pathItemCount: numITEMS
- path:Path{
- startX: 0
- startY: 0
- PathAttribute { name: "pathScale"; value: pathScale }
- PathLine { x:0; y: setMinRect.height/2}
- PathAttribute { name: "pathScale"; value: 1.0 }
- PathLine { x: 0; y: setMinRect.height }
- PathAttribute { name: "pathScale"; value: pathScale }
- }
- }
- } // MIN END
- Rectangle {
- id: setSecRect
- width: (parent.width / 2) / 3
- height: (parent.height / 3) - mHighlightBarThickness
- x: 2 * ((parent.width / 2) / 3)
- y: parent.height / 3
- color: bgColor
- Component.onCompleted: {
- secNumSet();
- }
- ListModel {
- id: secModel
- }
- Component {
- id: secDelegate
- Text {
- anchors.horizontalCenter: parent.horizontalCenter
- scale: PathView.pathScale
- opacity: scale
- font.pixelSize: dateListTextFontSize
- onScaleChanged: {
- color = scale === 1.0 ? selCol:cGreenLetterColor;
- }
- text: sec
- }
- }
- PathView{
- id: secView
- onCurrentIndexChanged: {
- dtSec = currentIndex;
- }
- anchors.fill: parent
- preferredHighlightBegin: 0.5
- preferredHighlightEnd: 0.5
- highlightRangeMode: PathView.StrictlyEnforceRange
- highlight: Component {
- Rectangle{
- visible: PathView.onPath
- anchors.centerIn: parent
- height: mHighlightBarHeight
- width: parent.width
- color: "transparent"
- border.color: "transparent"
- Rectangle{
- anchors.top: parent.top
- width: parent.width
- height: mHighlightBarThickness
- color: cGreenLetterColor
- }
- Rectangle{
- anchors.bottom: parent.bottom
- width: parent.width
- height: mHighlightBarThickness
- color: cGreenLetterColor
- }
- }
- }
- model: secModel
- delegate: secDelegate
- currentIndex: defaultSECIDX
- pathItemCount: numITEMS
- path:Path{
- startX: 0
- startY: 0
- PathAttribute { name: "pathScale"; value: pathScale }
- PathLine { x:0; y: setSecRect.height/2}
- PathAttribute { name: "pathScale"; value: 1.0 }
- PathLine { x: 0; y: setSecRect.height }
- PathAttribute { name: "pathScale"; value: pathScale }
- }
- }
- } // END SEC
- Rectangle {
- id: setTzRect
- width: parent.width
- height: (parent.height / 3) - mHighlightBarThickness
- x: 0
- y: 2 * (parent.height / 3)
- color: bgColor
- Component.onCompleted: {
- tzNamesSet();
- }
- ListModel {
- id: tzModel
- }
- Component {
- id: tzDelegate
- Text {
- anchors.horizontalCenter: parent.horizontalCenter
- scale: PathView.pathScale
- opacity: scale
- font.pixelSize: dateListTextFontSize
- onScaleChanged: {
- color = scale === 1.0 ? selCol:cGreenLetterColor;
- }
- text: tz
- }
- }
- PathView{
- id: tzView
- anchors.fill: parent
- onCurrentIndexChanged: {
- dtTZ = tzModel.get(currentIndex).tz;
- }
- preferredHighlightBegin: 0.5
- preferredHighlightEnd: 0.5
- highlightRangeMode: PathView.StrictlyEnforceRange
- highlight: Component {
- Rectangle{
- visible: PathView.onPath
- anchors.centerIn: parent
- height: mHighlightBarHeight
- width: parent.width
- color: "transparent"
- border.color: "transparent"
- Rectangle{
- anchors.top: parent.top
- width: parent.width
- height: mHighlightBarThickness
- color: cGreenLetterColor
- }
- Rectangle{
- anchors.bottom: parent.bottom
- width: parent.width
- height: mHighlightBarThickness
- color: cGreenLetterColor
- }
- }
- }
- model: tzModel
- delegate: tzDelegate
- currentIndex: defaultTZIDX
- pathItemCount: numITEMS
- path:Path{
- startX: 0
- startY: 0
- PathAttribute { name: "pathScale"; value: pathScale }
- PathLine { x:0; y: tzView.height/2}
- PathAttribute { name: "pathScale"; value: 1.0 }
- PathLine { x: 0; y: tzView.height }
- PathAttribute { name: "pathScale"; value: pathScale }
- }
- }
- } // END TZ
- //==================================
- ApplicationLaunch {
- id: setTimeZone
- appName: "sudo " + Globals.baseDir + "/Scripts/SetTimeDateZone.sh " + dtTZ + " " + dtYear + " " + dtMonth + " " + dtDay + " " + dtHour + " " + dtMin + " " + dtSec + " " + sysinfo.currentCpuArchitecture;
- onAppFinished: {
- transLoad.reloadTimeZone();
- }
- }
- Rectangle {
- id: setDateTimeButtArea
- width: parent.width / 2
- height: (parent.height / 3) - mHighlightBarThickness
- x: 3 * ((parent.width / 2) / 3)
- y: parent.height / 3
- color: bgColor
- ButtHMI {
- id: datetimeOK
- buttY: (parent.height / 2) - (buttHeight / 2)
- buttX: parent.width / 3 // (parent.width / 2) - (buttWidth / 2)
- buttWidth: 35
- buttHeight: buttWidth
- color: Globals.customer_color_base
- text: "\uf046" //check-sqare
- onButtPressed: {
- // Take selected settings and save to SystemPalette
- console.log(dtYear+"."+dtMonth+"."+dtDay+" "+dtHour+":"+dtMin+":"+dtSec);
- console.log(dtTZ);
- setTimeZone.launchScript();
- }
- }
- ButtHMI {
- id: datetimeREDO
- buttY: (parent.height / 2) - (buttHeight / 2)
- buttX: parent.width - (parent.width / 3) // (parent.width / 2) - (buttWidth / 2)
- buttWidth: 35
- buttHeight: buttWidth
- color: Globals.customer_color_base
- text: "\uf01e" // redo
- onButtPressed: {
- datetimeSet();
- }
- }
- }
- }
|