diff options
author | ꦌ ꦫꦶ ꦏ꧀ꦦꦿ ꦧ ꦮ ꦑ ꦩ ꦭ꧀ <erik@darapsa.co.id> | 2019-09-21 09:04:26 +0800 |
---|---|---|
committer | ꦌ ꦫꦶ ꦏ꧀ꦦꦿ ꦧ ꦮ ꦑ ꦩ ꦭ꧀ <erik@darapsa.co.id> | 2019-09-21 09:04:26 +0800 |
commit | 1c2e0bdae47d142111abe96eabf39dceb8ea3051 (patch) | |
tree | c1a929b333f07be111ea31d3d7cc89ebef84fd06 | |
parent | 90bff8fb6e3e3b1715c76a28ad27686243e3b307 (diff) |
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.
-rw-r--r-- | Future.qml | 7 | ||||
-rw-r--r-- | FutureForm.ui.qml | 13 | ||||
-rw-r--r-- | Home.qml | 145 | ||||
-rw-r--r-- | Today.qml | 7 | ||||
-rw-r--r-- | forms/DayForm.ui.qml | 12 | ||||
-rw-r--r-- | forms/DayListForm.ui.qml | 18 | ||||
-rw-r--r-- | forms/HomeForm.ui.qml | 74 | ||||
-rw-r--r-- | kelakon.qrc | 7 | ||||
-rw-r--r-- | pages/HomeForm.ui.qml | 22 |
9 files changed, 164 insertions, 141 deletions
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 - } -} @@ -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 @@ <file>CreateProfile.qml</file> <file>pages/CreateProfileForm.ui.qml</file> <file>Home.qml</file> - <file>pages/HomeForm.ui.qml</file> + <file>forms/HomeForm.ui.qml</file> + <file>Today.qml</file> + <file>Future.qml</file> + <file>forms/DayForm.ui.qml</file> + <file>forms/DayListForm.ui.qml</file> <file>TaskList.qml</file> <file>pages/TaskListForm.ui.qml</file> <file>pages/TaskForm.ui.qml</file> @@ -38,7 +42,6 @@ <file>larva/features/LoginPassword.qml</file> <file>larva/features/Home.qml</file> <file>larva/features/HomeForm.ui.qml</file> - <file>FutureForm.ui.qml</file> <file>assets/arrow-back-24px.svg</file> <file>onboarding-1.png</file> <file>larva/features/ProfileForm.ui.qml</file> 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} -} -##^##*/ - |