From 1c2e0bdae47d142111abe96eabf39dceb8ea3051 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=A6=8C=20=EA=A6=AB=EA=A6=B6=20=EA=A6=8F=EA=A7=80?= =?UTF-8?q?=EA=A6=A6=EA=A6=BF=20=EA=A6=A7=20=EA=A6=AE=20=EA=A6=91=20?= =?UTF-8?q?=EA=A6=A9=20=EA=A6=AD=EA=A7=80?= Date: Sat, 21 Sep 2019 09:04:26 +0800 Subject: Separate logics from presentation on Home Note: Inner stack view pushes (instead of pops) day forms, and there needs to be some button that pops them back, like in Qt gallery example. --- Future.qml | 7 +++ FutureForm.ui.qml | 13 ----- Home.qml | 145 ++++++++++++++--------------------------------- Today.qml | 7 +++ forms/DayForm.ui.qml | 12 ++++ forms/DayListForm.ui.qml | 18 ++++++ forms/HomeForm.ui.qml | 74 ++++++++++++++++++++++++ kelakon.qrc | 7 ++- pages/HomeForm.ui.qml | 22 ------- 9 files changed, 164 insertions(+), 141 deletions(-) create mode 100644 Future.qml delete mode 100644 FutureForm.ui.qml create mode 100644 Today.qml create mode 100644 forms/DayForm.ui.qml create mode 100644 forms/DayListForm.ui.qml create mode 100644 forms/HomeForm.ui.qml delete mode 100644 pages/HomeForm.ui.qml diff --git a/Future.qml b/Future.qml new file mode 100644 index 0000000..6550ad5 --- /dev/null +++ b/Future.qml @@ -0,0 +1,7 @@ +import QtQuick 2.12 +import "forms" + +DayForm { + title: qsTr("Future task") + contentLabel.text: qsTr("You are back to the future.") +} diff --git a/FutureForm.ui.qml b/FutureForm.ui.qml deleted file mode 100644 index 6f6bc19..0000000 --- a/FutureForm.ui.qml +++ /dev/null @@ -1,13 +0,0 @@ -import QtQuick 2.12 -import QtQuick.Layouts 1.12 -import QtQuick.Controls 2.12 -import QtQuick.Controls.Material 2.12 - -Page { - title: qsTr("Future task") - - Label { - text: qsTr("You are back to the future.") - anchors.centerIn: parent - } -} diff --git a/Home.qml b/Home.qml index d5db6b1..eb5f321 100644 --- a/Home.qml +++ b/Home.qml @@ -1,107 +1,44 @@ import QtQuick 2.12 import QtQuick.Controls 2.12 -import QtQuick.Controls.Material 2.12 -import QtQuick.Layouts 1.12 -import "pages" - -Page { - header: ToolBar { - background: Rectangle { - color: "#FAFFFFFF" - } - RowLayout { - anchors.fill: parent - spacing: 0 - ToolButton { - id: menuButton - icon.name: "menu-button" - icon.source: "assets/menu-24px.svg" - highlighted: true - onClicked: { - drawer.open() - } - } - Label { - text: contentView.currentItem.title - Layout.leftMargin: 16 - verticalAlignment: Text.AlignVCenter - horizontalAlignment: Text.AlignLeft - wrapMode: Text.WordWrap - font.family: "Work Sans" - font.weight: Font.Medium - font.pointSize: 20 - color: "#000000" - Layout.fillWidth: true - } - ToolButton { - id: profileButton - icon.name: "profile-button" - icon.source: "assets/profile-24px.svg" - highlighted: true - onClicked: { - pageView.push("Profile.qml") - } - } - } - } - footer: RowLayout { - RoundButton { - id: roundButton - width: 64 - height: 64 - Layout.alignment: Qt.AlignRight | Qt.AlignVCenter - Layout.minimumHeight: 64 - Layout.minimumWidth: 64 - display: AbstractButton.IconOnly - spacing: 8 - - padding: 16 - highlighted: true - - icon.name: "add-icon" - icon.source: "/assets/add-24px.svg" - } - } - - Drawer { - id: drawer - width: window.width * 0.8 - height: window.height - visible: false - - Column { - anchors.fill: parent - ItemDelegate { - text: qsTr("Today") - width: parent.width - onClicked: { - contentView.pop("HomeForm.ui.qml") - drawer.close() - } - } - - ItemDelegate { - text:qsTr("Future") - width: parent.width - onClicked: { - contentView.push("FutureForm.ui.qml") - drawer.close() - } - - } - } - } - - StackView { - id: contentView - anchors.fill: parent - initialItem: HomeForm {} - } -} - - -/*##^## -Designer { - D{i:0;autoSize:true;height:480;width:640} +import "forms" + +HomeForm { + menuButton { + icon.source: "assets/menu-24px.svg" + onClicked: drawer.open() + } + + titleLabel.text: contentView.currentItem.title + + profileButton { + icon.source: "assets/profile-24px.svg" + onClicked: pageView.push("Profile.qml") + } + + roundButton.icon.source: "/assets/add-24px.svg" + + Drawer { + id: drawer + width: window.width * 0.8 + height: window.height + visible: false + + DayListForm { + todayItemDelegate { + text: qsTr("Today") + onClicked: { + contentView.push("Today.qml") + drawer.close() + } + } + + futureItemDelegate { + text:qsTr("Future") + onClicked: { + contentView.push("Future.qml") + drawer.close() + } + } + } + } } -##^##*/ diff --git a/Today.qml b/Today.qml new file mode 100644 index 0000000..a1fd613 --- /dev/null +++ b/Today.qml @@ -0,0 +1,7 @@ +import QtQuick 2.12 +import "forms" + +DayForm { + title: qsTr("Today") + contentLabel.text: qsTr("Load `contentView` here") +} diff --git a/forms/DayForm.ui.qml b/forms/DayForm.ui.qml new file mode 100644 index 0000000..f2de6cf --- /dev/null +++ b/forms/DayForm.ui.qml @@ -0,0 +1,12 @@ +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.Material 2.12 + +Page { + property alias contentLabel: contentLabel + + Label { + id: contentLabel + anchors.centerIn: parent + } +} diff --git a/forms/DayListForm.ui.qml b/forms/DayListForm.ui.qml new file mode 100644 index 0000000..1b4c937 --- /dev/null +++ b/forms/DayListForm.ui.qml @@ -0,0 +1,18 @@ +import QtQuick 2.12 +import QtQuick.Controls 2.12 + +Column { + property alias todayItemDelegate: todayItemDelegate + property alias futureItemDelegate: futureItemDelegate + + anchors.fill: parent + ItemDelegate { + id: todayItemDelegate + width: parent.width + } + + ItemDelegate { + id: futureItemDelegate + width: parent.width + } +} diff --git a/forms/HomeForm.ui.qml b/forms/HomeForm.ui.qml new file mode 100644 index 0000000..7aeea4a --- /dev/null +++ b/forms/HomeForm.ui.qml @@ -0,0 +1,74 @@ +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.Material 2.12 +import QtQuick.Layouts 1.12 + +Page { + property alias menuButton: menuButton + property alias titleLabel: titleLabel + property alias profileButton: profileButton + property alias roundButton: roundButton + property alias contentView: contentView + + header: ToolBar { + background: Rectangle { + color: "#FAFFFFFF" + } + RowLayout { + anchors.fill: parent + spacing: 0 + ToolButton { + id: menuButton + icon.name: "menu-button" + highlighted: true + } + Label { + id: titleLabel + Layout.leftMargin: 16 + verticalAlignment: Text.AlignVCenter + horizontalAlignment: Text.AlignLeft + wrapMode: Text.WordWrap + font.family: "Work Sans" + font.weight: Font.Medium + font.pointSize: 20 + color: "#000000" + Layout.fillWidth: true + } + ToolButton { + id: profileButton + icon.name: "profile-button" + highlighted: true + } + } + } + footer: RowLayout { + RoundButton { + id: roundButton + width: 64 + height: 64 + Layout.alignment: Qt.AlignRight | Qt.AlignVCenter + Layout.minimumHeight: 64 + Layout.minimumWidth: 64 + display: AbstractButton.IconOnly + spacing: 8 + padding: 16 + highlighted: true + icon.name: "add-icon" + } + } + + StackView { + id: contentView + anchors.fill: parent + initialItem: Page { + id: page + title: qsTr("Today") + + Label { + text: qsTr("Load `contentView` here") + anchors.verticalCenter: parent.verticalCenter + anchors.horizontalCenter: parent.horizontalCenter + } + } + } +} diff --git a/kelakon.qrc b/kelakon.qrc index 69c4eb7..0348b57 100644 --- a/kelakon.qrc +++ b/kelakon.qrc @@ -19,7 +19,11 @@ CreateProfile.qml pages/CreateProfileForm.ui.qml Home.qml - pages/HomeForm.ui.qml + forms/HomeForm.ui.qml + Today.qml + Future.qml + forms/DayForm.ui.qml + forms/DayListForm.ui.qml TaskList.qml pages/TaskListForm.ui.qml pages/TaskForm.ui.qml @@ -38,7 +42,6 @@ larva/features/LoginPassword.qml larva/features/Home.qml larva/features/HomeForm.ui.qml - FutureForm.ui.qml assets/arrow-back-24px.svg onboarding-1.png larva/features/ProfileForm.ui.qml diff --git a/pages/HomeForm.ui.qml b/pages/HomeForm.ui.qml deleted file mode 100644 index 8119e9e..0000000 --- a/pages/HomeForm.ui.qml +++ /dev/null @@ -1,22 +0,0 @@ -import QtQuick 2.12 -import QtQuick.Layouts 1.12 -import QtQuick.Controls 2.12 -import QtQuick.Controls.Material 2.12 - -Page { - id: page - title: qsTr("Today") - - Label { - text: qsTr("Load `contentView` here") - anchors.verticalCenter: parent.verticalCenter - anchors.horizontalCenter: parent.horizontalCenter - } -} - -/*##^## -Designer { - D{i:0;autoSize:true;height:480;width:640} -} -##^##*/ - -- cgit v1.2.3