122 lines
3.9 KiB
QML
122 lines
3.9 KiB
QML
|
import QtQuick 2.14
|
||
|
import QtQuick.Layouts 1.12
|
||
|
import QtQml.Models 2.15
|
||
|
import QtQuick.Controls 2.15
|
||
|
|
||
|
import StatusQ.Core.Theme 0.1
|
||
|
import StatusQ.Core 0.1
|
||
|
import StatusQ.Controls 0.1
|
||
|
import StatusQ.Components 0.1
|
||
|
import StatusQ.Popups.Dialog 0.1
|
||
|
|
||
|
StatusDialog {
|
||
|
id: root
|
||
|
|
||
|
property double fromTimestamp: Date.now()
|
||
|
property double toTimestamp: Date.now()
|
||
|
property int supportedStartYear
|
||
|
|
||
|
signal newRangeSet(double fromTimestamp, double toTimestamp)
|
||
|
|
||
|
onOpened: fromInput.forceActiveFocus()
|
||
|
|
||
|
topPadding: 0
|
||
|
title: qsTr("Filter activity by period")
|
||
|
|
||
|
contentItem: RowLayout {
|
||
|
spacing: 20
|
||
|
|
||
|
// From Date
|
||
|
ColumnLayout {
|
||
|
spacing: 8
|
||
|
StatusBaseText {
|
||
|
height: visible ? contentHeight : 0
|
||
|
elide: Text.ElideRight
|
||
|
text: qsTr("From")
|
||
|
font.pixelSize: 15
|
||
|
color: Theme.palette.directColor1
|
||
|
}
|
||
|
StatusDateInput {
|
||
|
id: fromInput
|
||
|
datePlaceholderText: qsTr("dd")
|
||
|
monthPlaceholderText: qsTr("mm")
|
||
|
yearPlaceholderText: qsTr("yyyy")
|
||
|
presetTimestamp: fromTimestamp
|
||
|
errorMessage: qsTr("Invalid range")
|
||
|
supportedStartYear: root.supportedStartYear
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// To Date
|
||
|
ColumnLayout {
|
||
|
Layout.preferredWidth: toInput.width
|
||
|
spacing: 8
|
||
|
RowLayout {
|
||
|
Layout.preferredWidth: parent.width
|
||
|
StatusBaseText {
|
||
|
Layout.alignment: Qt.AlignLeft
|
||
|
height: visible ? contentHeight : 0
|
||
|
elide: Text.ElideRight
|
||
|
text: qsTr("To")
|
||
|
font.pixelSize: 15
|
||
|
color: Theme.palette.directColor1
|
||
|
}
|
||
|
StatusButton {
|
||
|
Layout.alignment: Qt.AlignRight
|
||
|
horizontalPadding: 0
|
||
|
verticalPadding: 0
|
||
|
spacing: 0
|
||
|
normalColor: Theme.palette.transparent
|
||
|
hoverColor: Theme.palette.transparent
|
||
|
font.weight: Font.Normal
|
||
|
text: toInput.isEditMode ? qsTr("Now") : qsTr("Edit")
|
||
|
onClicked: {
|
||
|
if(toInput.isEditMode)
|
||
|
root.toTimestamp = Date.now()
|
||
|
toInput.isEditMode = !toInput.isEditMode
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
StatusDateInput {
|
||
|
id: toInput
|
||
|
datePlaceholderText: qsTr("dd")
|
||
|
monthPlaceholderText: qsTr("mm")
|
||
|
yearPlaceholderText: qsTr("yyyy")
|
||
|
presetTimestamp: toTimestamp
|
||
|
nowText: qsTr("Now")
|
||
|
errorMessage: qsTr("Invalid range")
|
||
|
supportedStartYear: root.supportedStartYear
|
||
|
}
|
||
|
}
|
||
|
|
||
|
StatusButton {
|
||
|
Layout.preferredHeight: fromInput.height
|
||
|
Layout.alignment: Qt.AlignVCenter
|
||
|
Layout.topMargin: 28
|
||
|
text: qsTr("Reset")
|
||
|
enabled: fromInput.hasChange || toInput.hasChange
|
||
|
normalColor: Theme.palette.transparent
|
||
|
borderColor: Theme.palette.baseColor2
|
||
|
hoverColor: Theme.palette.primaryColor3
|
||
|
onClicked: {
|
||
|
toInput.isEditMode = false
|
||
|
fromInput.reset()
|
||
|
toInput.reset()
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
footer: StatusDialogFooter {
|
||
|
rightButtons: ObjectModel {
|
||
|
StatusButton {
|
||
|
text: qsTr("Apply")
|
||
|
enabled: fromInput.valid && toInput.valid && (fromInput.hasChange || toInput.hasChange)
|
||
|
onClicked: {
|
||
|
root.newRangeSet(fromInput.newDate.valueOf(), toInput.newDate.valueOf())
|
||
|
root.close()
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|