From c32d9035e035d5539a639b2f60314bd1002c107a Mon Sep 17 00:00:00 2001 From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> Date: Tue, 20 May 2025 22:01:42 +0800 Subject: dashboard: add calendar --- modules/dashboard/Dash.qml | 6 ++-- modules/dashboard/dash/Calendar.qml | 65 +++++++++++++++++++++++++++++++++++++ modules/dashboard/dash/DateTime.qml | 5 +-- 3 files changed, 71 insertions(+), 5 deletions(-) create mode 100644 modules/dashboard/dash/Calendar.qml (limited to 'modules') diff --git a/modules/dashboard/Dash.qml b/modules/dashboard/Dash.qml index 31ece71..52ee629 100644 --- a/modules/dashboard/Dash.qml +++ b/modules/dashboard/Dash.qml @@ -27,18 +27,18 @@ GridLayout { Rect { Layout.row: 1 + Layout.fillHeight: true DateTime {} } Rect { - // text: "calendar" - Layout.row: 1 Layout.column: 1 Layout.columnSpan: 3 Layout.fillWidth: true - Layout.fillHeight: true + + Calendar {} } Rect { diff --git a/modules/dashboard/dash/Calendar.qml b/modules/dashboard/dash/Calendar.qml new file mode 100644 index 0000000..ac31861 --- /dev/null +++ b/modules/dashboard/dash/Calendar.qml @@ -0,0 +1,65 @@ +import "root:/widgets" +import "root:/services" +import "root:/config" +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts + +ColumnLayout { + id: root + + anchors.left: parent.left + anchors.right: parent.right + anchors.margins: Appearance.padding.large + spacing: Appearance.spacing.small + + DayOfWeekRow { + id: days + + Layout.topMargin: Appearance.padding.large + Layout.fillWidth: true + + font.family: Appearance.font.family.sans + font.weight: 500 + + // delegate: StyledText {} + } + + MonthGrid { + id: grid + + Layout.bottomMargin: Appearance.padding.large + Layout.fillWidth: true + + spacing: 3 + + delegate: Item { + id: day + + required property var model + + implicitWidth: implicitHeight + implicitHeight: text.implicitHeight + Appearance.padding.small * 2 + + StyledRect { + anchors.centerIn: parent + + implicitWidth: parent.implicitHeight + implicitHeight: parent.implicitHeight + + radius: Appearance.rounding.full + color: model.today ? Colours.palette.m3primary : "transparent" + + StyledText { + id: text + + anchors.centerIn: parent + + horizontalAlignment: Text.AlignHCenter + text: grid.locale.toString(day.model.date, "d") + color: day.model.today ? Colours.palette.m3onPrimary : day.model.month === grid.month ? Colours.palette.m3onSurface : Colours.palette.m3outline + } + } + } + } +} diff --git a/modules/dashboard/dash/DateTime.qml b/modules/dashboard/dash/DateTime.qml index 7b4e277..5f44227 100644 --- a/modules/dashboard/dash/DateTime.qml +++ b/modules/dashboard/dash/DateTime.qml @@ -6,8 +6,9 @@ import QtQuick Item { id: root + anchors.top: parent.top + anchors.bottom: parent.bottom implicitWidth: DashboardConfig.sizes.dateTimeWidth - implicitHeight: date.y + date.implicitHeight + Appearance.padding.large * 2 StyledText { id: hours @@ -15,7 +16,7 @@ Item { anchors.left: parent.left anchors.right: parent.right anchors.top: parent.top - anchors.topMargin: Appearance.padding.large * 2 + anchors.topMargin: (root.height - (hours.implicitHeight + sep.implicitHeight + sep.anchors.topMargin + mins.implicitHeight + mins.anchors.topMargin + date.implicitHeight + date.anchors.topMargin)) / 2 horizontalAlignment: Text.AlignHCenter text: Time.format("HH") -- cgit v1.2.3-freya