When filtering the OS list, if all items in a category/sublist are
filtered out then don't show the category/sublist.
Also, clear the selected OS when the HW device is changed, otherwise you
can get weird effects like having an incompatible (hw, os) pair selected
or the highlighted OS moving when the items in the OS list change.
- All of our red buttons were ImButton with the colours overridden at the
use site. Instead make an ImButtonRed which defines these colours in
one place.
- Previously the red buttons had focus indicated by the text colour
changing from white to blue. This was quite hard to see, instead
change the button colour to blue (as is done for the white buttons).
A darker shade of blue is used so that there is still good contrast
with the white text.
- Update the reds (buttons and main screen background) with the
branding-approved red: the official colour palette says Pi Red is
#cd2355
- Make write confirmation popup modal
- Force focus on the write confirmation popup when it opens
- Force focus on the error popup when it opens
- When the hw select popup opens, force focus on the ListView instead of
on the currentItem, because the latter doesn't work when the list is
empty.
- On embedded, when the settings popup closes, force focus back to the
usecustomisation dialog
Previously, if you clicked "edit settings" in the "use customisation"
msgbox then the flow got a bit confusing, when you saved settings the
"use customisation" msgbox would have disappeared and you had to click
"next" and go back through again. Instead, keep the "use customisation"
msgbox open when editing settings so when you save settings you are back
where you left it.
Also:
- Make "use customisation" modal so you can't click other things while
it's open
- Separate windows in QtQuick can't be modal so we can't stop the user
interacting with the main window while "edit settings" is open. This
could get confusing, so if they close the "use customisation" modal in
the main window then close the settings window.
- Fix a bug where saved settings weren't recognised on startup, only
after being saved during the session
In the new flow, it doesn't make sense to _not_ save the OS
customization parameters, so remove the ComboBox.
Additionally, our data model was failing to notify the UI of changes to
the saved settings state. Due to time constraints, I'm not able to
resolve the binding in the 'correct' manner, but I can introduce a
makeshift status signalling mechanism to prevent UI inconsistency.
Previously it was not possible to select a HW device without a mouse
because the focus change to the HW list was not working. This is
because an extra nested ListView had been left in. Remove the extra
ListView and set the focus target correctly.
Seems like there's a weird Qt bug in the ProgressBar widget where giving
it padding means the white progress indicator doesn't actually start at
the left edge of the bar or extend to the right edge of the bar. So
just remove the padding from ProgressBar because it's not doing much.
- Update back to colour logo
- Change logo alignment and positioning to make it generally
left-aligned, have some nice padding above and below it, and to not
occupy the full window width.
This patch carries a translation risk, as we change the default
progression button.
Remove the customisation button all together, and make the customisation
options something we offer as part of flashing an image that
has that capability.
While this adds an additional click to the flash sequence, it should
provide a steer to people who are flashing customisable images to make
use of this capability, potentially avoiding an additional pass through the
Imager.
This change adjusts the layout for the progress bar, write button and
cancellation buttons such that they are all placed on the same layout
'row', with the progress bar stacked as before, and the
write/cancel/cancel buttons stacked as a column.
This is not ideal, but probably as sensible as we can get inside this
layout paradigm.
1) Resize the window back to 680dip default widths. We don't need the
extra space now.
2) Reduce Row spacing within the grid layout. We need all the space we
can get.
3) Assign layouts to explicit cells, at least for selection options and
write. This layout isn't really scaling to the amount of data we want
to provide, but we'll make do for now.
4) Mark selection buttons as accessibility ignored when the hwpopup is
active.
Introduce 4 filtering types per device spec:
- "exclusive", which only includes OS' that match one of the specified
tags, and discards any OS that is untagged.
- "exclusive_prefix", which only includes OS' that prefix-match one of
the specified tags, discarding any OS that is untagged.
- "inclusive", which discards any OS that doesn't include one of the
specified tags, but includes untagged images.
- "inclusive_prefix", which discards any OS that doesn't prefix match
one of the specified tags, but includes untagged images.
Removed preferred widths for OS, device buttons, and set one for the
storage button. This allows the storage label (generally the longest)
to fit on the control face reliably.
Prior to this change, you could enter a submenu of the OS selector,
close the window, and then change device filter - presenting stale information
when you went back in to the OS selector.
Work around this by resetting the OS selector sequence when you close
the OS selector window.
Rather than a drop down dialog, which could present users with images
that may not run on their hardware, allow selection of Raspberry Pi as a
first stage. If users adopt this feature, they are presented with a
subset of images that we know will actually run on their hardware.
This is achieved by leveraging @maxnet's excellent OS filtering scheme.
Future work will attach image and description support to this OS list.
If you load a custom image by running `rpi-imager my_image.img.xz` then
the Advanced Options button is not shown. This is triggered if you set
a file association to load rpi-imager and then double-click an image
file.
The fix is simply to set the visibility on this button on start-up
(custom images set on the command-line are loaded before this).
Fixes#451