Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

gui: Refresh overview page design #2117

Merged
merged 5 commits into from
May 2, 2021

Conversation

cyrossignol
Copy link
Member

This is a set of lightweight changes that update the appearance of the GUI overview page to match the designs in #847. Please see below and read the commit descriptions for details.

I applied spacing more conservatively than shown in the mock-ups because we received reports that the wallet's main window appears too large for some displays. I also did not add any new features from the proposed designs—we can save these for the full redesign in the future:

  • Icons and a popover-type widget for displaying section help tooltips
  • A longer list of the current active polls
  • A balance label in the header that displays the value in fiat

I'm not sure whether the last one even belongs in the wallet, but several people have asked for it.


image

image


The proposed designs were created for macOS which displays an application's main menus in a separate menu bar at the top of the screen, and no guidance exists for menus on other platforms. An in-window menu bar looks goofy on Windows and Linux so I collapsed it into an "app menu" button:

image


I moved the beacon button to the "researcher" section header as an icon and display the "action needed" label as a badge. The "out of sync" labels also display as badges now:

image

image

@RoboticMind
Copy link
Contributor

Overall it look so much better. Have a couple of suggestions:

  • With the indicator icons moved, I noticed that I was able to miss that the wallet was not staking. Perhaps the status message could be moved to be more visible so that's less of an issue?

    • Maybe could go up somewhere in the whitespace between Account Overview and the balance?
    • If possible maybe could put yellow around it on warnings and red on errors?
  • I didn't notice the hamburger menu was there until you mentioned it. The hamburger menu's position makes it fairly easy to miss.

    • Maybe could left/right align the logo and put it on the other side to make it more noticeable?
    • Maybe could put it on the right hand side next to the balance instead?

Overall it's looking pretty good

@jamescowens
Copy link
Member

jamescowens commented Apr 25, 2021

Here is how it looks on my Linux for dark. I think the contrast between the deeper black of the sections and the gray-black of the background is too low, and the first impression is of too many horizontal lines (because the eye does not resolve the difference between background and the deeper black). I think the light mode looks really good now.
image
image

@jamescowens
Copy link
Member

I do not believe we should offer a currency conversion to fiat, even though people have asked for it.

@jamescowens jamescowens mentioned this pull request Apr 25, 2021
5 tasks
@jamescowens
Copy link
Member

Ah I just noticed on the above that the bottom edges of the boxes don't align...

@cyrossignol
Copy link
Member Author

cyrossignol commented Apr 25, 2021

With the indicator icons moved, I noticed that I was able to miss that the wallet was not staking. Perhaps the status message could be moved to be more visible so that's less of an issue?

@RoboticMind I was a bit worried about this too, but I noticed that it didn't take long to adjust to the new layout. The status bar is empty when everything is "ok", so the presence of the warning text stands out. I've become so keenly aware of the status bar icons that any flash of red in the corner triggers a mild case of anxiety 🙂

Perhaps we could add a "wallet locked" or "not staking" badge to the "staking" section header like the "action needed" badge in the researcher header.

I didn't notice the hamburger menu was there until you mentioned it. The hamburger menu's position makes it fairly easy to miss.

I did try a few variations on this. Most of the alternative layouts looked pretty bad. One option that I'm still considering: we could make the entire Gridcoin logo a merged, hamburger-styled menu button. Haven't had time to draw it yet for a proof-of-concept. I don't think it's a big priority right now. The menu button is subtle, but I found that my eyes naturally jump to the top-left corner when I want to open something in the menu. Because most people are conditioned for this too, and many are familiar with hamburgers these days, I don't think the menu will be trouble to find. We can do something fancier for the full redesign later.

@cyrossignol
Copy link
Member Author

I think the contrast between the deeper black of the sections and the gray-black of the background is too low, and the first impression is of too many horizontal lines (because the eye does not resolve the difference between background and the deeper black). I think the light mode looks really good now.

@jamescowens Weird. Looks like the background is rendered as #15202f on your machine and #1a2632 on mine, and the section cards are similarly darker (#111724 vs. #171e28), so the horizontal highlights are emphasized. I wonder... is your compositor performing dynamic color adjustment? Some have a "vibrant" or similar mode. I will try to tone-down the lines.

Ah I just noticed on the above that the bottom edges of the boxes don't align...

They should line up at the minimum window height. I can make the cards or the spacing stretch so that the bottom edges line up for every height, but it will look strange with all of that negative space.

@jamescowens
Copy link
Member

This is kde 5.18.6 with compositing enabled using OpenGL 3.1. Nothing unusual.

@jamescowens
Copy link
Member

Gamma is set to the default value.

@RoboticMind
Copy link
Contributor

I was a bit worried about this too, but I noticed that it didn't take long to adjust to the new layout

My concern would also be that new users might miss that too. That would be especially important since they might not know that some of these things could be an issue. That's why I think adding a badge for all status messages with errors/warnings would be a good idea since it would cover it all (if it can be easily done in code). We could put it down there at the bottom like it is normally if there's not an error so it doesn't take any extra room when things are fine

found that my eyes naturally jump to the top-left corner when I want to open something in the menu

Unfortunately I don't find my eyes drawn to that position when looking for a menu. It find myself looking to the right hand side because the logo is in the space I would look on the left. I think that's partly because the hamburger menu is fairly high up

Maybe another thing we could do is put some bordering around the hamburger menu button? That might make it stand out a bit more

@RoboticMind
Copy link
Contributor

Ran this locally and see #1a2632 for my background color like cycy, but I see #171e28 on the selection card. Running on Ubuntu 20.10 on X11 on GNOME 3.38.3 and haven't messed with any color calibrations settings as far as I know

One other thing I did notice is I see some minor (aliasing? banding?) artifacts around the curves of staking only badge thing. Looks like it's there on other screenshots as well. This is pretty minor, but if there's a easy fix for it, it might be worth doing

screenshot_of_pr_2117

@cyrossignol
Copy link
Member Author

cyrossignol commented Apr 26, 2021

That's why I think adding a badge for all status messages with errors/warnings would be a good idea since it would cover it all (if it can be easily done in code).

I'll see if I can improve indicators for staking and status messages. Showing full error messages may not be feasible in some parts of the layout.

found that my eyes naturally jump to the top-left corner when I want to open something in the menu

Unfortunately I don't find my eyes drawn to that position when looking for a menu. It find myself looking to the right hand side because the logo is in the space I would look on the left.

Unfortunately, we're mostly limited to the sidebar for the menu button unless we do some significant plumbing to inject it into the content frames, and I don't think that's worth the effort for this PR. If we don't agree that the menu button is accessible, we'll have to put the menu bar back, and I'd rather avoid that for appearance and for size constraint portability. Suggestions welcome, though.

It's worth noting that the menu could be a temporary element since the mock ups suggest that some of the features found in the menu will likely be implemented as content pages accessible from other areas of the UI. An ultimate goal would be to implement a modern frame-less design which gives us more flexibility to organize and style top-level controls in the title bar (think: "quick pay", BOINC quick controls, wallet chooser (for multi-wallet support—hardware wallets), other menus, etc.). The menu button could fit in naturally here... something like:

gridcoin_frameless

...but this is not in the scope of this PR, or even any of the changes that I'm working on, really.

Ran this locally and see #1a2632 for my background color like cycy, but I see #171e28 on the selection card.

Those are the same colors that I see.

One other thing I did notice is I see some minor (aliasing? banding?) artifacts around the curves of staking only badge thing.

I'll try to find a way to smooth it out. Qt doesn't seem to paint thin, curved lines very well at standard-DPI. It will probably end up as a choice between sharpness with some aliasing or smoothness with blurry sections of horizontal lines.

@jamescowens
Copy link
Member

I think you just need to make the hamburger more obvious... let's don't overcomplicate it.

@RoboticMind
Copy link
Contributor

RoboticMind commented Apr 26, 2021

One thing we could also potentially do is add a light border to the menu button like this:

screenshot_with_border

That's just a one/two line change with border: 1px solid #8c9298;

I think adding that helps makes it fit in other locations a bit better too, so can maybe help give some more options

Those are the same colors that I see.

Ah sorry must of misread then. Not sure why Jim sees something different 🤷

@jamescowens
Copy link
Member

I think it needs to be more than just a gray box around it. Use color - use a different background that draws your attention to it. For dark mode, I would use the same blue background as the buttons, likewise with the light mode.

@jamescowens
Copy link
Member

I would also move all of the icons down slightly on the left because they look like they and the hamburger are crowding.

@presciencia
Copy link

Oh my frame less title looks very good! When...soon? Lol 😍

I don not think current menu button is a problem. As this button is located at the same position like all the mobile/web apps that I have so I see it first. From screens it looks bad with borders and background. I like it quiet like that in original.

This removes the standard menu bar from the main application layout in
favor of a menu button placed at the top-left corner of the window. It
enables the visual style of the proposed GUI designs which do not have
a menu bar. The menu button does not appear on macOS because the macOS
standard menu bar at the top of the screen already separates the menus
from the main layout.
This replaces the "error messages" field on the overview page with a
section in the status bar to match the proposed GUI design.
@cyrossignol
Copy link
Member Author

I added a light/dark mode toggle button to the layout container for the menu button and logo. The extra button should give this section a sense of utility as a whole which helps to highlight the role of the menu icon as a control for those that may miss it. The toggle button also provides symmetry needed to move the menu button into a more obvious position without looking unbalanced. This should solve the usability concerns for the menu button without over-emphasizing the appearance, and we get a useful feature in the theme switcher.

image

One other thing I did notice is I see some minor (aliasing? banding?) artifacts around the curves of staking only badge thing.

I'll try to find a way to smooth it out. Qt doesn't seem to paint thin, curved lines very well at standard-DPI.

@RoboticMind After playing with this, it seems Qt rounds to the pixel by default, so we get limited sub-pixel rendering. We can configure Qt to do more advanced antialiasing for that widget, but it requires painting the widget manually and a lot of boilerplate. I don't think it's worth it for a border.

I would also move all of the icons down slightly on the left because they look like they and the hamburger are crowding.

@jamescowens I'll do a pass to polish the styles once everything is in place. I have a running list of minor color tweaks, layout adjustments, and rendering bugs. Don't want to enlarge the scope of this PR too much.

Oh my frame less title looks very good! When...soon? Lol 😍

@presciencia Thanks. The title bar concept design is not in the scope of the current UI changes. It was just a quick example. Maybe in the future... 🙂

@cyrossignol
Copy link
Member Author

cyrossignol commented May 2, 2021

I think the contrast between the deeper black of the sections and the gray-black of the background is too low, and the first impression is of too many horizontal lines

@jamescowens I reduced the contrast for the horizontal rulers.

That's why I think adding a badge for all status messages with errors/warnings would be a good idea since it would cover it all (if it can be easily done in code).

@RoboticMind I will expand on this in a separate PR after I rebase my branch that cleans up the old GlobalStatusStruct used by the GUI. The current mess is too much to deal with in this PR.

@jamescowens
Copy link
Member

Looks good. Yes. I did a little cleanup on the GlobalStatusStruct myself a while back, but it really needs a complete overhaul.

@jamescowens
Copy link
Member

This looks good enough to merge for me. Time to remove the draft moniker.

@cyrossignol cyrossignol marked this pull request as ready for review May 2, 2021 04:10
Copy link
Member

@jamescowens jamescowens left a comment

Choose a reason for hiding this comment

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

ACK. This is an excellent bridge between the existing GUI and the GUI rewrite. We need to get this to testnet so a broader audience can use it.

This updates the overview page to match the appearance from the proposed
GUI design.

 - Add a header bar with status, magnitude, and available balance
 - Split content sections into cards
 - Change out of sync and researcher action needed labels to badges
 - Change beacon button to an icon
 - Limit the max content width for large window sizes
 - Update colors, layout, sizing, and spacing
This changes the text for the following phrases on the overview page:

 - the "Recent transactions" label to "Recent Transactions"
 - the "out of sync" label to "Out of Sync"
 - the "Current Poll:" label to "Current Polls"

...and updates the localization metadata keys. Because the meanings of the
phrases did not change, this preserves the existing translations for those
entries.
This adds a button next to the logo in the sidebar that switches the
active GUI theme between light and dark mode.
@jamescowens jamescowens merged commit 73c4817 into gridcoin-community:development May 2, 2021
jamescowens added a commit to jamescowens/Gridcoin-Research that referenced this pull request Aug 1, 2021
Added
 - util, rpc. gui: Changes for snapshotdownload and add feature sync from zero gridcoin-community#2093 (@iFoggz)
 - gui: Implement GUI version of consolidateunspent (coin control part) gridcoin-community#2111 (@jamescowens)
 - gui: Implement consolidateunspent wizard gridcoin-community#2125 (@jamescowens)
 - qt: Add antialiasing to traffic graph widget gridcoin-community#2150 (@barton2526)
 - util: Port of ArgsManager and a significant subset of src/util gridcoin-community#2146 (@jamescowens)
 - doc: add issue templates for bug reports and feature requests gridcoin-community#2147 (@Pythonix)
 - gui, rpc: Implement dynamic stakesplitting control, settings changes via rpc, and dynamic changes to sidestaking via rpc gridcoin-community#2164 (@jamescowens)
 - rpc: Implement getblocksbatch gridcoin-community#2205 (@jamescowens)
 - voting, rpc, gui: Implement demand loading of historical poll by poll id and AVW calculation gridcoin-community#2210 (@jamescowens)
 - gui: Show GUI error dialog if command line parsing fails gridcoin-community#2218 (@jamescowens)
 - gui: Implement close confirmation. gridcoin-community#2216 (@denravonska)
 - build: Use -fstack-reuse=none gridcoin-community#2232 (@barton2526)

Changed
 - doc: Update build doc gridcoin-community#2078 (@iFoggz)
 - gui: Normalize button and input control appearance gridcoin-community#2096 (@cyrossignol)
 - consensus: Implement GetMinimumRequiredConnectionsForStaking gridcoin-community#2097 (@jamescowens)
 - refactor: move CTransaction to primitives gridcoin-community#2006 (@div72)
 - consensus, refactor, test: Merkle gridcoin-community#2094 (@div72)
 - gui: Update diagnostics gridcoin-community#2095 (@jamescowens)
 - gui: Refresh UI styles and sidebar/statusbar design gridcoin-community#2102 (@cyrossignol)
 - gui: Set standard base Qt style on Windows and macOS gridcoin-community#2114 (@cyrossignol)
 - build, refactor: bump to C++17 gridcoin-community#2113 (@div72)
 - util, rpc, gui: Implement GetMaxInputsForConsolidationTxn() gridcoin-community#2119 (@jamescowens)
 - gui: Refresh overview page design gridcoin-community#2117 (@cyrossignol)
 - depends: change boost mirror gridcoin-community#2122 (@div72)
 - refactor: small cleanup gridcoin-community#2123 (@div72)
 - build: Update depends Qt recipe to version 5.12.10 gridcoin-community#2129 (@cyrossignol)
 - build: Bump Codespell to 2.0.0 gridcoin-community#2135 (@barton2526)
 - gui: Refresh "send coins" page design gridcoin-community#2126 (@cyrossignol)
 - gui: Optimize locks to improve responsiveness gridcoin-community#2137 (@cyrossignol)
 - gui: Refresh "receive payment" page design gridcoin-community#2138 (@cyrossignol)
 - gui: Add empty placeholder to recent transactions list gridcoin-community#2140 (@cyrossignol)
 - gui: Refresh transaction history page design gridcoin-community#2143 (@cyrossignol)
 - gui: Refresh address book page design gridcoin-community#2145 (@cyrossignol)
 - doc: Update http to https where possible gridcoin-community#2148 (@barton2526)
 - depends: Update dependencies gridcoin-community#2153 (@barton2526)
 - depends: Bump python to 3.6 gridcoin-community#2159 (@barton2526)
 - test: Update cppcheck linter to c++17 gridcoin-community#2157 (@barton2526)
 - test: Drop Travis specific workarounds, Mention commit id in error, Fix typos, Update spellcheck ignore words gridcoin-community#2158 (@barton2526)
 - gui: Overhaul the voting UI gridcoin-community#2151 (@cyrossignol)
 - wallet: simplify nTimeSmart calculation gridcoin-community#2144 (@div72)
 - gui: Refresh checkbox and radio button styles gridcoin-community#2170 (@cyrossignol)
 - build: Bump libevent to 2.1.11 gridcoin-community#2172 (@barton2526)
 - build: Update native_mac_alias, Remove big sur patch file in qt recipe gridcoin-community#2173 (@barton2526)
 - docs: Misc Grammar gridcoin-community#2176 (@barton2526)
 - build: miniupnpc 2.2.2 gridcoin-community#2179 (@barton2526)
 - rpc: Refresh rainbymagnitude gridcoin-community#2163 (@jamescowens)
 - util: optimize HexStr gridcoin-community#2185 (@div72)
 - refactor: misc style changes gridcoin-community#2177 (@div72)
 - rpc: consolidatemsunspent changes. gridcoin-community#2136 (@iFoggz)
 - refactor: Replace "GlobalStatus" state management gridcoin-community#2183 (@cyrossignol)
 - rpc, util: Remove use of ArgsManager::NETWORK_ONLY for now gridcoin-community#2190 (@jamescowens)
 - doc: Replace hidden service with onion service, Capitalize "Tor" gridcoin-community#2193 (@barton2526)
 - gui: Update Qt Linguist localization files gridcoin-community#2192 (@cyrossignol)
 - script: Shell script cleanups gridcoin-community#2195 (@barton2526)
 - build: set minimum required Boost to 1.58.0 gridcoin-community#2194 (@barton2526)
 - build, util: Prevent execution for Windows versions less than Windows 7 gridcoin-community#2203 (@jamescowens)
 - build: Tweak NSIS Windows installer gridcoin-community#2204 (@jamescowens)
 - build: Add bison in depends gridcoin-community#2206 (@iFoggz)
 - build: macOS toolchain bump gridcoin-community#2207 (@div72)
 - doc: Update build-unix.md gridcoin-community#2212 (@springfielddatarecovery)
 - build: Bump minimum python version to 3.6, Remove python2 references gridcoin-community#2219 (@barton2526)
 - depends: Change openSSL source path to Github gridcoin-community#2237 (@barton2526)
 - doc: Fix typo in bug report template gridcoin-community#2243 (@jamescowens)
 - ci: fold depends output gridcoin-community#2244 (@div72)

Removed
 - wallet: remove dead hardcoded addnodes gridcoin-community#2116 (@sweede-se)
 - rpc: Remove readconfig gridcoin-community#2248 (@jamescowens)
 - rpc: Remove obsolete comparesnapshotaccrual RPC function gridcoin-community#2100 (@jamescowens)
 - rpc: Remove memorypool RPC Command gridcoin-community#2214 (@RoboticMind)
 - rpc: Remove deprecated RPC commands gridcoin-community#2101 (@jamescowens)
 - Remove CCT from README, add Discord gridcoin-community#2134 (@barton2526)
 - refactor: Remove obsolete pubsub method definitions gridcoin-community#2191 (@barton2526)
 - refactor: Remove msMiningErrorsIncluded & msMiningErrorsExcluded gridcoin-community#2215 (@RoboticMind)
 - qt: Remove obsolete topLevelWidget(), Remove obsolete QRegExpValidator gridcoin-community#2198 (@barton2526)
 - net: Drop support of the insecure miniUPnPc versions gridcoin-community#2178 (@barton2526)
 - log: remove deprecated db log category gridcoin-community#2201 (@barton2526)
 - doc: Remove CCT from README and release process docs gridcoin-community#2175 (@barton2526)
 - build: Remove travis references gridcoin-community#2156 (@barton2526)

Fixed
 - gui: Fix macOS and designer font sizes gridcoin-community#2098 (@cyrossignol)
 - gui: Have the TrafficGraphWidget respect the selected stylesheet. gridcoin-community#2107 (@jamescowens)
 - gui: Fix macOS display inconsistencies gridcoin-community#2106 (@cyrossignol)
 - gui: Fix RPC console auto-complete background color gridcoin-community#2108 (@cyrossignol)
 - gui: Avoid reloading redundant stylesheets gridcoin-community#2109 (@cyrossignol)
 - gui: Fix "no active beacon" status gridcoin-community#2110 (@cyrossignol)
 - gui: Fix dark theme link text color visibility gridcoin-community#2115 (@cyrossignol)
 - scraper, util, qt: Fix several deprecations and warnings gridcoin-community#2131 (@jamescowens)
 - gui: Fix duplicate time in GUIUtil::dateTimeStr() gridcoin-community#2139 (@cyrossignol)
 - gui: Fix debug console traffic graph legend colors gridcoin-community#2142 (@cyrossignol)
 - gui: Fix nomenclature gridcoin-community#2104 (@jamescowens)
 - doc: Fix Typos gridcoin-community#2149 (@barton2526)
 - doc: Fix "master" branch build status badge in readme gridcoin-community#2167 (@cyrossignol)
 - gui: Fix Inter font rendering on Windows with FreeType gridcoin-community#2169 (@cyrossignol)
 - gui: Fix assert on non-existent data directory and GUI datadir chooser corner case issues gridcoin-community#2174 (@jamescowens)
 - gui: Fix display artifact in poll loading indicator gridcoin-community#2180 (@cyrossignol)
 - rpc, logging: Minor fixes for sidestake logging gridcoin-community#2187 (@jamescowens)
 - gui: Fix fractional scaling for dialog sizes gridcoin-community#2189 (@cyrossignol)
 - doc: Random fixes gridcoin-community#2197 (@barton2526)
 - doc: getbalance should say GRC not "btc" gridcoin-community#2199 (@barton2526)
 - net: Add missing verification of IPv6 address in CNetAddr::GetIn6Addr¦ gridcoin-community#2200 (@barton2526)
 - doc: remove duplicate line from .gitignore gridcoin-community#2202 (@Pythonix)
 - util: Tweak exception handling in MilliTimer class to eliminate compiler warnings gridcoin-community#2233 (@jamescowens)
 - depends: patch missing include in qt gridcoin-community#2234 (@div72)
 - wallet, rpc: Check each input for IsMine() in GetAddressGroupings gridcoin-community#2242 (@jamescowens)
 - util, qt: Fix snapshot download gridcoin-community#2246 (@jamescowens)
 - gui: Fix Column Widths in RPC Console. Elide long strings in their center. Indent user agent. gridcoin-community#2241 (@barton2526)
 - qt: Fix crash during download snapshot on macOS gridcoin-community#2250 (@jamescowens)
 - qt: Don't allow to open the debug window during splashscreen & verification state gridcoin-community#2245 (@barton2526)
 - gui: Fix address book selected model record when editing gridcoin-community#2253 (@cyrossignol)
 - researcher: Check wallet status before beacon renewal gridcoin-community#2254 (@cyrossignol)
 - qt: Prevent pasting (no label) as label in consolidation transaction gridcoin-community#2255 (@jamescowens)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants