Skip to content

Introducing the node settings views#203

Merged
hebasto merged 2 commits into
bitcoin-core:mainfrom
jarolrod:node-settings-view
Dec 14, 2022
Merged

Introducing the node settings views#203
hebasto merged 2 commits into
bitcoin-core:mainfrom
jarolrod:node-settings-view

Conversation

@jarolrod
Copy link
Copy Markdown
Contributor

@jarolrod jarolrod commented Dec 10, 2022

This introduces the views that would allow for settings configuration after the user has finished onboarding and the node has started to run.

NodeRuner NodeSettings
Screen Shot 2022-12-10 at 12 58 07 AM Screen Shot 2022-12-10 at 12 58 12 AM

For several reasons this also entangles the About and Developer options and entangles them into their own independent SwipeView, which means that we only need to instantiate SettingsAbout. There isn't a use case for the Developer options to be shown independently.

Follow-ups:

  • The caret-right icon used within the settings rows is too large because I'm just using NavButton, the width and height should be adjusted to match closer to what the design file specifies
  • This uses a StackView to move through the settings pages but on linux, the animation between pages isn't how we'd want it to be; it's fine on macOS. The animation should match our SwipeViews. Note: I didn't use SwipeView because while you can set an index to go to, it flips through all previous pages to get there which is visually distracting.

Windows
Intel macOS
Apple Silicon macOS
ARM64 Android

@hebasto
Copy link
Copy Markdown
Member

hebasto commented Dec 10, 2022

Rebase needed.

@jarolrod
Copy link
Copy Markdown
Contributor Author

updated from e7763aa to 942a3b4

changes: rebased over master

Comment thread src/qml/pages/node/NodeSettings.qml Outdated
Comment thread src/qml/pages/node/NodeSettings.qml Outdated
ColumnLayout {
spacing: 0
width: parent.width
ColumnLayout {
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems like one of these ColumnLayouts can be removed

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this allows for the table to expand but be a max width of 450, we use the same nested approach in the InformationPage control; open to better ways of accomplishing this

Copy link
Copy Markdown
Collaborator

@johnny9 johnny9 Dec 14, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can use width: Math.min(parent.width, 450)

Comment thread src/qml/pages/settings/SettingsAbout.qml Outdated
@jarolrod
Copy link
Copy Markdown
Contributor Author

jarolrod commented Dec 14, 2022

updated from 942a3b4 to 06235ca (pr203.02 -> pr203.03, diff)

changes:

  • rebased over changes on base pr
  • addressed @johnny9 suggestions -1

jarolrod and others added 2 commits December 14, 2022 03:03
Currently, the parent SwipeView of the AboutOptions page needs to have
an id of introductions. We abuse the knowledge that in our codebase we
will have that available, but this limits when and where the
AboutOptions can be used. This entangles the About and Developer options
so that we can avoid this, and have these pages truly be reusable.

Co-Authored-By: Johnny Carlson <johncarlson@pm.me>
Co-Authored-By: Johnny Carlson <johncarlson@pm.me>
@jarolrod
Copy link
Copy Markdown
Contributor Author

jarolrod commented Dec 14, 2022

updated from from 06235ca to 6037471 (pr203.03 -> pr203.04, diff)

changes: rebased over changes on master

ColumnLayout {
spacing: 0
anchors.fill: parent
ColumnLayout {
Copy link
Copy Markdown
Collaborator

@johnny9 johnny9 Dec 14, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here's another double ColumnLayout. I think we should reduce the layers here or use a different top level Item since using another Layout component isn't necessary.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe we can leave it to a follow-up pr to address the nested columnlayouts throughout the code?

Copy link
Copy Markdown
Collaborator

@johnny9 johnny9 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ACK 6037471

Changes look good. Built and ran with not qml warnings/errors and views render as expected. Will address ColumnLayout comments in a follow up PR.

@hebasto hebasto merged commit b80cbe7 into bitcoin-core:main Dec 14, 2022
@jarolrod jarolrod deleted the node-settings-view branch December 15, 2022 15:29
hebasto pushed a commit to hebasto/gui-qml that referenced this pull request Jun 8, 2025
Currently, the parent SwipeView of the AboutOptions page needs to have
an id of introductions. We abuse the knowledge that in our codebase we
will have that available, but this limits when and where the
AboutOptions can be used. This entangles the About and Developer options
so that we can avoid this, and have these pages truly be reusable.

Github-Pull: bitcoin-core#203
Rebased-From: 6ac40e8

Co-Authored-By: Johnny Carlson <johncarlson@pm.me>
hebasto pushed a commit to hebasto/gui-qml that referenced this pull request Jun 8, 2025
Github-Pull: bitcoin-core#203
Rebased-From: 6037471

Co-Authored-By: Johnny Carlson <johncarlson@pm.me>
hebasto pushed a commit to hebasto/gui-qml that referenced this pull request Jun 9, 2025
Currently, the parent SwipeView of the AboutOptions page needs to have
an id of introductions. We abuse the knowledge that in our codebase we
will have that available, but this limits when and where the
AboutOptions can be used. This entangles the About and Developer options
so that we can avoid this, and have these pages truly be reusable.

Github-Pull: bitcoin-core#203
Rebased-From: 6ac40e8

Co-Authored-By: Johnny Carlson <johncarlson@pm.me>
hebasto pushed a commit to hebasto/gui-qml that referenced this pull request Jun 9, 2025
Github-Pull: bitcoin-core#203
Rebased-From: 6037471

Co-Authored-By: Johnny Carlson <johncarlson@pm.me>
hebasto pushed a commit to hebasto/gui-qml that referenced this pull request Jun 9, 2025
Currently, the parent SwipeView of the AboutOptions page needs to have
an id of introductions. We abuse the knowledge that in our codebase we
will have that available, but this limits when and where the
AboutOptions can be used. This entangles the About and Developer options
so that we can avoid this, and have these pages truly be reusable.

Github-Pull: bitcoin-core#203
Rebased-From: 6ac40e8

Co-Authored-By: Johnny Carlson <johncarlson@pm.me>
hebasto pushed a commit to hebasto/gui-qml that referenced this pull request Jun 9, 2025
Github-Pull: bitcoin-core#203
Rebased-From: 6037471

Co-Authored-By: Johnny Carlson <johncarlson@pm.me>
johnny9 pushed a commit to johnny9/bitcoin-core-app that referenced this pull request Jul 4, 2025
35ca445 qml: use node specific pages, introduce node settings (jarolrod)
bbdbee8 qml: entangle the About and Developer options pages (jarolrod)

Pull request description:

  This introduces the views that would allow for [settings configuration](https://www.figma.com/file/GaCoOSNHB2yMB9ThiDtred/Bitcoin-Core-App?node-id=4588%3A101966&t=m6V59cZ2STeCRp1y-0) after the user has finished onboarding and the node has started to run.

  | NodeRuner | NodeSettings |
  | --------- | ------------ |
  | <img width="752" alt="Screen Shot 2022-12-10 at 12 58 07 AM" src="https://user-images.githubusercontent.com/23396902/206832668-0a5e469a-830f-4d7e-bfc5-0e6c115d74fd.png"> | <img width="752" alt="Screen Shot 2022-12-10 at 12 58 12 AM" src="https://user-images.githubusercontent.com/23396902/206832715-299234d4-6850-4dd3-956f-fd5bc47980c7.png"> |

  For several reasons this also entangles the About and Developer options and entangles them into their own independent SwipeView, which means that we only need to instantiate SettingsAbout. There isn't a use case for the Developer options to be shown independently.

  ### Follow-ups:
  - The caret-right icon used within the settings rows is too large because I'm just using NavButton, the width and height should be adjusted to match closer to what the design file [specifies](https://www.figma.com/file/GaCoOSNHB2yMB9ThiDtred/Bitcoin-Core-App?node-id=4588%3A101966&t=m6V59cZ2STeCRp1y-0)
  - This uses a StackView to move through the settings pages but on linux, the animation between pages isn't how we'd want it to be; it's fine on macOS. The animation should match our SwipeViews. Note: I didn't use SwipeView because while you can set an index to go to, it flips through all previous pages to get there which is visually distracting.

  [![Windows](https://img.shields.io/badge/OS-Windows-green)](https://api.cirrus-ci.com/v1/artifact/github/bitcoin-core/gui-qml/win64/insecure_win_gui.zip?branch=pull/203)
  [![Intel macOS](https://img.shields.io/badge/OS-Intel%20macOS-green)](https://api.cirrus-ci.com/v1/artifact/github/bitcoin-core/gui-qml/macos/insecure_mac_gui.zip?branch=pull/203)
  [![Apple Silicon macOS](https://img.shields.io/badge/OS-Apple%20Silicon%20macOS-green)](https://api.cirrus-ci.com/v1/artifact/github/bitcoin-core/gui-qml/macos_arm64/insecure_mac_arm64_gui.zip?branch=pull/203)
  [![ARM64 Android](https://img.shields.io/badge/OS-Android-green)](https://api.cirrus-ci.com/v1/artifact/github/bitcoin-core/gui-qml/android/insecure_android_apk.zip?branch=pull/203)

ACKs for top commit:
  johnny9:
    ACK 35ca445

Tree-SHA512: 0dbf22abccded6786a9970b01ee4a7b70b25c03e29334a145ae6d261fe425343cc7ec60836e6fee565a2d40550d2749766c63ac0af285d92dad2c8d1a4bc1836
tx-signer450 added a commit to tx-signer450/gui-qml that referenced this pull request Oct 20, 2025
35ca4452e423c89ce84f7cfb30a14c07d09dd1c2 qml: use node specific pages, introduce node settings (jarolrod)
bbdbee8cfd9a0c0056ba4be4f665828473e7fd49 qml: entangle the About and Developer options pages (jarolrod)

Pull request description:

  This introduces the views that would allow for [settings configuration](https://www.figma.com/file/GaCoOSNHB2yMB9ThiDtred/Bitcoin-Core-App?node-id=4588%3A101966&t=m6V59cZ2STeCRp1y-0) after the user has finished onboarding and the node has started to run.

  | NodeRuner | NodeSettings |
  | --------- | ------------ |
  | <img width="752" alt="Screen Shot 2022-12-10 at 12 58 07 AM" src="https://user-images.githubusercontent.com/23396902/206832668-0a5e469a-830f-4d7e-bfc5-0e6c115d74fd.png"> | <img width="752" alt="Screen Shot 2022-12-10 at 12 58 12 AM" src="https://user-images.githubusercontent.com/23396902/206832715-299234d4-6850-4dd3-956f-fd5bc47980c7.png"> |

  For several reasons this also entangles the About and Developer options and entangles them into their own independent SwipeView, which means that we only need to instantiate SettingsAbout. There isn't a use case for the Developer options to be shown independently.

  ### Follow-ups:
  - The caret-right icon used within the settings rows is too large because I'm just using NavButton, the width and height should be adjusted to match closer to what the design file [specifies](https://www.figma.com/file/GaCoOSNHB2yMB9ThiDtred/Bitcoin-Core-App?node-id=4588%3A101966&t=m6V59cZ2STeCRp1y-0)
  - This uses a StackView to move through the settings pages but on linux, the animation between pages isn't how we'd want it to be; it's fine on macOS. The animation should match our SwipeViews. Note: I didn't use SwipeView because while you can set an index to go to, it flips through all previous pages to get there which is visually distracting.

  [![Windows](https://img.shields.io/badge/OS-Windows-green)](https://api.cirrus-ci.com/v1/artifact/github/bitcoin-core/gui-qml/win64/insecure_win_gui.zip?branch=pull/203)
  [![Intel macOS](https://img.shields.io/badge/OS-Intel%20macOS-green)](https://api.cirrus-ci.com/v1/artifact/github/bitcoin-core/gui-qml/macos/insecure_mac_gui.zip?branch=pull/203)
  [![Apple Silicon macOS](https://img.shields.io/badge/OS-Apple%20Silicon%20macOS-green)](https://api.cirrus-ci.com/v1/artifact/github/bitcoin-core/gui-qml/macos_arm64/insecure_mac_arm64_gui.zip?branch=pull/203)
  [![ARM64 Android](https://img.shields.io/badge/OS-Android-green)](https://api.cirrus-ci.com/v1/artifact/github/bitcoin-core/gui-qml/android/insecure_android_apk.zip?branch=pull/203)

ACKs for top commit:
  johnny9:
    ACK 35ca4452e423c89ce84f7cfb30a14c07d09dd1c2

Tree-SHA512: 0dbf22abccded6786a9970b01ee4a7b70b25c03e29334a145ae6d261fe425343cc7ec60836e6fee565a2d40550d2749766c63ac0af285d92dad2c8d1a4bc1836
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants