From 5f1124156056e889c1cf2c840c3931dc772f823b Mon Sep 17 00:00:00 2001 From: Jarol Rodriguez Date: Wed, 7 Dec 2022 00:39:04 -0500 Subject: [PATCH 1/3] qml: make settings pages independent from onboarding pages --- src/Makefile.qt.include | 8 ++++---- src/qml/bitcoin_qml.qrc | 8 ++++---- src/qml/pages/onboarding/onboarding01.qml | 4 ++-- src/qml/pages/onboarding/onboarding05.qml | 2 +- src/qml/pages/onboarding/onboarding06.qml | 2 +- .../onboarding01b.qml => settings/SettingsAbout.qml} | 0 .../onboarding06b.qml => settings/SettingsConnection.qml} | 0 .../onboarding01c.qml => settings/SettingsDeveloper.qml} | 0 .../onboarding05b.qml => settings/SettingsStorage.qml} | 0 9 files changed, 12 insertions(+), 12 deletions(-) rename src/qml/pages/{onboarding/onboarding01b.qml => settings/SettingsAbout.qml} (100%) rename src/qml/pages/{onboarding/onboarding06b.qml => settings/SettingsConnection.qml} (100%) rename src/qml/pages/{onboarding/onboarding01c.qml => settings/SettingsDeveloper.qml} (100%) rename src/qml/pages/{onboarding/onboarding05b.qml => settings/SettingsStorage.qml} (100%) diff --git a/src/Makefile.qt.include b/src/Makefile.qt.include index 065511abc4..afd9b06a73 100644 --- a/src/Makefile.qt.include +++ b/src/Makefile.qt.include @@ -346,17 +346,17 @@ QML_RES_QML = \ qml/pages/main.qml \ qml/pages/onboarding/onboarding01.qml \ qml/pages/onboarding/onboarding01a.qml \ - qml/pages/onboarding/onboarding01b.qml \ - qml/pages/onboarding/onboarding01c.qml \ qml/pages/onboarding/onboarding02.qml \ qml/pages/onboarding/onboarding03.qml \ qml/pages/onboarding/onboarding04.qml \ qml/pages/onboarding/onboarding05.qml \ qml/pages/onboarding/onboarding05a.qml \ - qml/pages/onboarding/onboarding05b.qml \ qml/pages/onboarding/onboarding06.qml \ qml/pages/onboarding/onboarding06a.qml \ - qml/pages/onboarding/onboarding06b.qml + qml/pages/settings/SettingsAbout.qml \ + qml/pages/settings/SettingsConnection.qml \ + qml/pages/settings/SettingsDeveloper.qml \ + qml/pages/settings/SettingsStorage.qml BITCOIN_QT_CPP = $(BITCOIN_QT_BASE_CPP) if TARGET_WINDOWS diff --git a/src/qml/bitcoin_qml.qrc b/src/qml/bitcoin_qml.qrc index 64f83b6826..b8fc3df1ce 100644 --- a/src/qml/bitcoin_qml.qrc +++ b/src/qml/bitcoin_qml.qrc @@ -29,17 +29,17 @@ pages/main.qml pages/onboarding/onboarding01.qml pages/onboarding/onboarding01a.qml - pages/onboarding/onboarding01b.qml - pages/onboarding/onboarding01c.qml pages/onboarding/onboarding02.qml pages/onboarding/onboarding03.qml pages/onboarding/onboarding04.qml pages/onboarding/onboarding05.qml pages/onboarding/onboarding05a.qml - pages/onboarding/onboarding05b.qml pages/onboarding/onboarding06.qml pages/onboarding/onboarding06a.qml - pages/onboarding/onboarding06b.qml + pages/settings/SettingsAbout.qml + pages/settings/SettingsConnection.qml + pages/settings/SettingsDeveloper.qml + pages/settings/SettingsStorage.qml res/icons/arrow-down.png diff --git a/src/qml/pages/onboarding/onboarding01.qml b/src/qml/pages/onboarding/onboarding01.qml index d44a41bfdb..14027c0d2c 100644 --- a/src/qml/pages/onboarding/onboarding01.qml +++ b/src/qml/pages/onboarding/onboarding01.qml @@ -21,10 +21,10 @@ Page { source:"onboarding01a.qml" } Loader { - source:"onboarding01b.qml" + source:"../settings/SettingsAbout.qml" } Loader { - source:"onboarding01c.qml" + source:"../settings/SettingsDeveloper.qml" } } } diff --git a/src/qml/pages/onboarding/onboarding05.qml b/src/qml/pages/onboarding/onboarding05.qml index 85b918edc2..8d506fcbe0 100644 --- a/src/qml/pages/onboarding/onboarding05.qml +++ b/src/qml/pages/onboarding/onboarding05.qml @@ -21,7 +21,7 @@ Page { source:"onboarding05a.qml" } Loader { - source:"onboarding05b.qml" + source:"../settings/SettingsStorage.qml" } } } diff --git a/src/qml/pages/onboarding/onboarding06.qml b/src/qml/pages/onboarding/onboarding06.qml index e0fae57bdf..52ff27ec9b 100644 --- a/src/qml/pages/onboarding/onboarding06.qml +++ b/src/qml/pages/onboarding/onboarding06.qml @@ -21,7 +21,7 @@ Page { source:"onboarding06a.qml" } Loader { - source:"onboarding06b.qml" + source:"../settings/SettingsConnection.qml" } } } diff --git a/src/qml/pages/onboarding/onboarding01b.qml b/src/qml/pages/settings/SettingsAbout.qml similarity index 100% rename from src/qml/pages/onboarding/onboarding01b.qml rename to src/qml/pages/settings/SettingsAbout.qml diff --git a/src/qml/pages/onboarding/onboarding06b.qml b/src/qml/pages/settings/SettingsConnection.qml similarity index 100% rename from src/qml/pages/onboarding/onboarding06b.qml rename to src/qml/pages/settings/SettingsConnection.qml diff --git a/src/qml/pages/onboarding/onboarding01c.qml b/src/qml/pages/settings/SettingsDeveloper.qml similarity index 100% rename from src/qml/pages/onboarding/onboarding01c.qml rename to src/qml/pages/settings/SettingsDeveloper.qml diff --git a/src/qml/pages/onboarding/onboarding05b.qml b/src/qml/pages/settings/SettingsStorage.qml similarity index 100% rename from src/qml/pages/onboarding/onboarding05b.qml rename to src/qml/pages/settings/SettingsStorage.qml From 86170be45b7d8606b7e414a27863c1914c9dec86 Mon Sep 17 00:00:00 2001 From: Jarol Rodriguez Date: Wed, 7 Dec 2022 00:50:45 -0500 Subject: [PATCH 2/3] qml: do not load settings pages from url inside of onboarding pages --- src/Makefile.qt.include | 3 -- src/qml/bitcoin_qml.qrc | 3 -- src/qml/pages/onboarding/onboarding01.qml | 38 ++++++++++++++---- src/qml/pages/onboarding/onboarding01a.qml | 40 ------------------- src/qml/pages/onboarding/onboarding05.qml | 40 ++++++++++++++++--- src/qml/pages/onboarding/onboarding05a.qml | 45 ---------------------- src/qml/pages/onboarding/onboarding06.qml | 38 +++++++++++++++--- src/qml/pages/onboarding/onboarding06a.qml | 43 --------------------- 8 files changed, 98 insertions(+), 152 deletions(-) delete mode 100644 src/qml/pages/onboarding/onboarding01a.qml delete mode 100644 src/qml/pages/onboarding/onboarding05a.qml delete mode 100644 src/qml/pages/onboarding/onboarding06a.qml diff --git a/src/Makefile.qt.include b/src/Makefile.qt.include index afd9b06a73..9a320d4840 100644 --- a/src/Makefile.qt.include +++ b/src/Makefile.qt.include @@ -345,14 +345,11 @@ QML_RES_QML = \ qml/pages/initerrormessage.qml \ qml/pages/main.qml \ qml/pages/onboarding/onboarding01.qml \ - qml/pages/onboarding/onboarding01a.qml \ qml/pages/onboarding/onboarding02.qml \ qml/pages/onboarding/onboarding03.qml \ qml/pages/onboarding/onboarding04.qml \ qml/pages/onboarding/onboarding05.qml \ - qml/pages/onboarding/onboarding05a.qml \ qml/pages/onboarding/onboarding06.qml \ - qml/pages/onboarding/onboarding06a.qml \ qml/pages/settings/SettingsAbout.qml \ qml/pages/settings/SettingsConnection.qml \ qml/pages/settings/SettingsDeveloper.qml \ diff --git a/src/qml/bitcoin_qml.qrc b/src/qml/bitcoin_qml.qrc index b8fc3df1ce..18e4b39ad0 100644 --- a/src/qml/bitcoin_qml.qrc +++ b/src/qml/bitcoin_qml.qrc @@ -28,14 +28,11 @@ pages/initerrormessage.qml pages/main.qml pages/onboarding/onboarding01.qml - pages/onboarding/onboarding01a.qml pages/onboarding/onboarding02.qml pages/onboarding/onboarding03.qml pages/onboarding/onboarding04.qml pages/onboarding/onboarding05.qml - pages/onboarding/onboarding05a.qml pages/onboarding/onboarding06.qml - pages/onboarding/onboarding06a.qml pages/settings/SettingsAbout.qml pages/settings/SettingsConnection.qml pages/settings/SettingsDeveloper.qml diff --git a/src/qml/pages/onboarding/onboarding01.qml b/src/qml/pages/onboarding/onboarding01.qml index 14027c0d2c..31fbf27512 100644 --- a/src/qml/pages/onboarding/onboarding01.qml +++ b/src/qml/pages/onboarding/onboarding01.qml @@ -7,6 +7,7 @@ import QtQuick.Controls 2.15 import QtQuick.Layouts 1.15 import "../../controls" import "../../components" +import "../settings" Page { background: null @@ -17,14 +18,35 @@ Page { anchors.fill: parent interactive: false orientation: Qt.Horizontal - Loader { - source:"onboarding01a.qml" - } - Loader { - source:"../settings/SettingsAbout.qml" - } - Loader { - source:"../settings/SettingsDeveloper.qml" + InformationPage { + Layout.fillWidth: true + navRightDetail: NavButton { + iconSource: "image://images/info" + iconHeight: 24 + onClicked: { + introductions.incrementCurrentIndex() + swipeView.inSubPage = true + } + } + bannerItem: Image { + Layout.fillWidth: true + Layout.alignment: Qt.AlignCenter + source: "image://images/app" + // Bitcoin icon has ~11% padding + sourceSize.width: 112 + sourceSize.height: 112 + } + bannerMargin: 0 + bold: true + headerText: qsTr("Bitcoin Core App") + headerSize: 36 + description: qsTr("Be part of the Bitcoin network.") + descriptionMargin: 10 + descriptionSize: 24 + subtext: qsTr("100% open-source & open-design") + buttonText: qsTr("Start") } + SettingsAbout {} + SettingsDeveloper {} } } diff --git a/src/qml/pages/onboarding/onboarding01a.qml b/src/qml/pages/onboarding/onboarding01a.qml deleted file mode 100644 index 9ad6389d24..0000000000 --- a/src/qml/pages/onboarding/onboarding01a.qml +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (c) 2022 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. -// Copyright (c) 2022 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 -import "../../controls" - -InformationPage { - Layout.fillWidth: true - navRightDetail: NavButton { - iconSource: "image://images/info" - iconHeight: 24 - onClicked: { - introductions.incrementCurrentIndex() - swipeView.inSubPage = true - } - } - bannerItem: Image { - Layout.fillWidth: true - Layout.alignment: Qt.AlignCenter - source: "image://images/app" - // Bitcoin icon has ~11% padding - sourceSize.width: 112 - sourceSize.height: 112 - } - bannerMargin: 0 - bold: true - headerText: qsTr("Bitcoin Core App") - headerSize: 36 - description: qsTr("Be part of the Bitcoin network.") - descriptionMargin: 10 - descriptionSize: 24 - subtext: qsTr("100% open-source & open-design") - buttonText: qsTr("Start") -} diff --git a/src/qml/pages/onboarding/onboarding05.qml b/src/qml/pages/onboarding/onboarding05.qml index 8d506fcbe0..49ba390e2b 100644 --- a/src/qml/pages/onboarding/onboarding05.qml +++ b/src/qml/pages/onboarding/onboarding05.qml @@ -7,6 +7,7 @@ import QtQuick.Controls 2.15 import QtQuick.Layouts 1.15 import "../../controls" import "../../components" +import "../settings" Page { background: null @@ -17,11 +18,40 @@ Page { anchors.fill: parent interactive: false orientation: Qt.Vertical - Loader { - source:"onboarding05a.qml" - } - Loader { - source:"../settings/SettingsStorage.qml" + InformationPage { + Layout.fillWidth: true + navLeftDetail: NavButton { + iconSource: "image://images/caret-left" + text: qsTr("Back") + onClicked: swipeView.decrementCurrentIndex() + } + bannerActive: false + bold: true + headerText: qsTr("Storage") + headerMargin: 0 + description: qsTr("Data retrieved from the Bitcoin network is stored on your device.\nYou have 500GB of storage available.") + descriptionMargin: 10 + detailActive: true + detailItem: ColumnLayout { + spacing: 0 + StorageOptions { + Layout.maximumWidth: 450 + Layout.alignment: Qt.AlignCenter + } + TextButton { + Layout.topMargin: 30 + Layout.fillWidth: true + text: qsTr("Detailed settings") + textSize: 18 + textColor: "#F7931A" + onClicked: { + storages.incrementCurrentIndex() + swipeView.inSubPage = true + } + } + } + buttonText: qsTr("Next") } + SettingsStorage {} } } diff --git a/src/qml/pages/onboarding/onboarding05a.qml b/src/qml/pages/onboarding/onboarding05a.qml deleted file mode 100644 index 8cbc31cea1..0000000000 --- a/src/qml/pages/onboarding/onboarding05a.qml +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright (c) 2022 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -import QtQuick 2.12 -import QtQuick.Controls 2.12 -import QtQuick.Layouts 1.11 -import org.bitcoincore.qt 1.0 -import "../../controls" -import "../../components" - -InformationPage { - Layout.fillWidth: true - navLeftDetail: NavButton { - iconSource: "image://images/caret-left" - text: qsTr("Back") - onClicked: swipeView.decrementCurrentIndex() - } - bannerActive: false - bold: true - headerText: qsTr("Storage") - headerMargin: 0 - description: qsTr("Data retrieved from the Bitcoin network is stored on your device.\nYou have 500GB of storage available.") - descriptionMargin: 10 - detailActive: true - detailItem: ColumnLayout { - spacing: 0 - StorageOptions { - Layout.maximumWidth: 450 - Layout.alignment: Qt.AlignCenter - } - TextButton { - Layout.topMargin: 30 - Layout.fillWidth: true - text: qsTr("Detailed settings") - textSize: 18 - textColor: "#F7931A" - onClicked: { - storages.incrementCurrentIndex() - swipeView.inSubPage = true - } - } - } - buttonText: qsTr("Next") -} diff --git a/src/qml/pages/onboarding/onboarding06.qml b/src/qml/pages/onboarding/onboarding06.qml index 52ff27ec9b..6ab124e383 100644 --- a/src/qml/pages/onboarding/onboarding06.qml +++ b/src/qml/pages/onboarding/onboarding06.qml @@ -7,6 +7,7 @@ import QtQuick.Controls 2.15 import QtQuick.Layouts 1.15 import "../../controls" import "../../components" +import "../settings" Page { background: null @@ -17,11 +18,38 @@ Page { anchors.fill: parent interactive: false orientation: Qt.Vertical - Loader { - source:"onboarding06a.qml" - } - Loader { - source:"../settings/SettingsConnection.qml" + InformationPage { + Layout.fillWidth: true + navLeftDetail: NavButton { + iconSource: "image://images/caret-left" + text: qsTr("Back") + onClicked: swipeView.decrementCurrentIndex() + } + bannerItem: Image { + Layout.topMargin: 20 + Layout.alignment: Qt.AlignCenter + source: Theme.image.storage + sourceSize.width: 200 + sourceSize.height: 200 + } + bold: true + headerText: qsTr("Starting initial download") + headerMargin: 30 + description: qsTr("The application will connect to the Bitcoin network and start downloading and verifying transactions.\n\nThis may take several hours, or even days, based on your connection.") + descriptionMargin: 20 + detailActive: true + detailItem: TextButton { + text: qsTr("Connection settings") + textSize: 18 + textColor: Theme.color.orange + onClicked: { + connections.incrementCurrentIndex() + swipeView.inSubPage = true + } + } + lastPage: true + buttonText: qsTr("Next") } + SettingsConnection {} } } diff --git a/src/qml/pages/onboarding/onboarding06a.qml b/src/qml/pages/onboarding/onboarding06a.qml deleted file mode 100644 index ed369aefbd..0000000000 --- a/src/qml/pages/onboarding/onboarding06a.qml +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright (c) 2022 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 -import org.bitcoincore.qt 1.0 -import "../../controls" -import "../../components" - -InformationPage { - Layout.fillWidth: true - navLeftDetail: NavButton { - iconSource: "image://images/caret-left" - text: qsTr("Back") - onClicked: swipeView.decrementCurrentIndex() - } - bannerItem: Image { - Layout.topMargin: 20 - Layout.alignment: Qt.AlignCenter - source: Theme.image.storage - sourceSize.width: 200 - sourceSize.height: 200 - } - bold: true - headerText: qsTr("Starting initial download") - headerMargin: 30 - description: qsTr("The application will connect to the Bitcoin network and start downloading and verifying transactions.\n\nThis may take several hours, or even days, based on your connection.") - descriptionMargin: 20 - detailActive: true - detailItem: TextButton { - text: qsTr("Connection settings") - textSize: 18 - textColor: Theme.color.orange - onClicked: { - connections.incrementCurrentIndex() - swipeView.inSubPage = true - } - } - lastPage: true - buttonText: qsTr("Next") -} From 30db8cc02e86494f6d2486188dd8aa6eb16363f9 Mon Sep 17 00:00:00 2001 From: Jarol Rodriguez Date: Wed, 7 Dec 2022 00:56:27 -0500 Subject: [PATCH 3/3] qml: define the settings pages nav elements at page instantiation This extracts out the navbar element defintions from the settings page itself, and moves it to where the page is instantiated. This allows the settings views to be reused anywhere else we want to use them, and are now no longer limited to being used within the onboarding wizard. --- src/qml/pages/onboarding/onboarding01.qml | 22 +++++++++++++++++-- src/qml/pages/onboarding/onboarding05.qml | 10 ++++++++- src/qml/pages/onboarding/onboarding06.qml | 10 ++++++++- src/qml/pages/settings/SettingsAbout.qml | 8 ------- src/qml/pages/settings/SettingsConnection.qml | 7 ------ src/qml/pages/settings/SettingsDeveloper.qml | 8 ------- src/qml/pages/settings/SettingsStorage.qml | 7 ------ 7 files changed, 38 insertions(+), 34 deletions(-) diff --git a/src/qml/pages/onboarding/onboarding01.qml b/src/qml/pages/onboarding/onboarding01.qml index 31fbf27512..70b425f28e 100644 --- a/src/qml/pages/onboarding/onboarding01.qml +++ b/src/qml/pages/onboarding/onboarding01.qml @@ -46,7 +46,25 @@ Page { subtext: qsTr("100% open-source & open-design") buttonText: qsTr("Start") } - SettingsAbout {} - SettingsDeveloper {} + SettingsAbout { + navLeftDetail: NavButton { + iconSource: "image://images/caret-left" + text: qsTr("Back") + onClicked: { + introductions.decrementCurrentIndex() + swipeView.inSubPage = false + } + } + } + SettingsDeveloper { + navLeftDetail: NavButton { + iconSource: "image://images/caret-left" + text: qsTr("Back") + onClicked: { + introductions.decrementCurrentIndex() + swipeView.inSubPage = true + } + } + } } } diff --git a/src/qml/pages/onboarding/onboarding05.qml b/src/qml/pages/onboarding/onboarding05.qml index 49ba390e2b..1ba997e448 100644 --- a/src/qml/pages/onboarding/onboarding05.qml +++ b/src/qml/pages/onboarding/onboarding05.qml @@ -52,6 +52,14 @@ Page { } buttonText: qsTr("Next") } - SettingsStorage {} + SettingsStorage { + navRightDetail: NavButton { + text: qsTr("Done") + onClicked: { + storages.decrementCurrentIndex() + swipeView.inSubPage = false + } + } + } } } diff --git a/src/qml/pages/onboarding/onboarding06.qml b/src/qml/pages/onboarding/onboarding06.qml index 6ab124e383..c4397530a2 100644 --- a/src/qml/pages/onboarding/onboarding06.qml +++ b/src/qml/pages/onboarding/onboarding06.qml @@ -50,6 +50,14 @@ Page { lastPage: true buttonText: qsTr("Next") } - SettingsConnection {} + SettingsConnection { + navRightDetail: NavButton { + text: qsTr("Done") + onClicked: { + connections.decrementCurrentIndex() + swipeView.inSubPage = false + } + } + } } } diff --git a/src/qml/pages/settings/SettingsAbout.qml b/src/qml/pages/settings/SettingsAbout.qml index e39778505a..bdda843c3c 100644 --- a/src/qml/pages/settings/SettingsAbout.qml +++ b/src/qml/pages/settings/SettingsAbout.qml @@ -10,14 +10,6 @@ import "../../components" InformationPage { Layout.fillWidth: true - navLeftDetail: NavButton { - iconSource: "image://images/caret-left" - text: qsTr("Back") - onClicked: { - introductions.decrementCurrentIndex() - swipeView.inSubPage = false - } - } bannerActive: false bold: true headerText: qsTr("About") diff --git a/src/qml/pages/settings/SettingsConnection.qml b/src/qml/pages/settings/SettingsConnection.qml index 8283128e20..1230baabd6 100644 --- a/src/qml/pages/settings/SettingsConnection.qml +++ b/src/qml/pages/settings/SettingsConnection.qml @@ -12,13 +12,6 @@ InformationPage { background: null Layout.fillWidth: true clip: true - navRightDetail: NavButton { - text: qsTr("Done") - onClicked: { - connections.decrementCurrentIndex() - swipeView.inSubPage = false - } - } bannerActive: false bold: true headerText: qsTr("Connection settings") diff --git a/src/qml/pages/settings/SettingsDeveloper.qml b/src/qml/pages/settings/SettingsDeveloper.qml index c773420e21..0f702bc359 100644 --- a/src/qml/pages/settings/SettingsDeveloper.qml +++ b/src/qml/pages/settings/SettingsDeveloper.qml @@ -10,14 +10,6 @@ import "../../components" InformationPage { Layout.fillWidth: true - navLeftDetail: NavButton { - iconSource: "image://images/caret-left" - text: qsTr("Back") - onClicked: { - introductions.decrementCurrentIndex() - swipeView.inSubPage = true - } - } bannerActive: false bold: true headerText: qsTr("Developer options") diff --git a/src/qml/pages/settings/SettingsStorage.qml b/src/qml/pages/settings/SettingsStorage.qml index ae1b51e317..8ca73879c7 100644 --- a/src/qml/pages/settings/SettingsStorage.qml +++ b/src/qml/pages/settings/SettingsStorage.qml @@ -10,13 +10,6 @@ import "../../components" InformationPage { Layout.fillWidth: true - navRightDetail: NavButton { - text: qsTr("Done") - onClicked: { - storages.decrementCurrentIndex() - swipeView.inSubPage = false - } - } bannerActive: false bold: true headerText: qsTr("Storage settings")