summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorꦌ ꦫꦶ ꦏ꧀ꦦꦿ ꦧ ꦮ ꦑ ꦩ ꦭ꧀ <erik@darapsa.co.id>2019-09-21 09:04:26 +0800
committerꦌ ꦫꦶ ꦏ꧀ꦦꦿ ꦧ ꦮ ꦑ ꦩ ꦭ꧀ <erik@darapsa.co.id>2019-09-21 09:04:26 +0800
commit1c2e0bdae47d142111abe96eabf39dceb8ea3051 (patch)
treec1a929b333f07be111ea31d3d7cc89ebef84fd06
parent90bff8fb6e3e3b1715c76a28ad27686243e3b307 (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.qml7
-rw-r--r--FutureForm.ui.qml13
-rw-r--r--Home.qml145
-rw-r--r--Today.qml7
-rw-r--r--forms/DayForm.ui.qml12
-rw-r--r--forms/DayListForm.ui.qml18
-rw-r--r--forms/HomeForm.ui.qml74
-rw-r--r--kelakon.qrc7
-rw-r--r--pages/HomeForm.ui.qml22
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
- }
-}
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 @@
<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}
-}
-##^##*/
-