Commit Graph

37 Commits (e6568667c4e8944d14b446154267da00bdbac496)

Author SHA1 Message Date
Adriaan de Groot e6568667c4 [packagechooser] Sanitize includes
- build was broken due to AppStream moving around
- unnecessary includes
- change name HAVE_XML -> HAVE_APPDATA for meaning
Adriaan de Groot aa3633e43a [packagechooser] Delay initialization of default Id
When the module is loaded and the viewstep created, it doesn't have a
module Id **yet**. That is set after reading more of the configuration
file. It **is** set by the time setConfigurationMap() is called,
so pass it on to the Config object then. This means that packagechooser
modules can skip the *id* config key and use the module Id.
Adriaan de Groot 61557cf805 [packagechooser] Connect UI to model
The model needs to be attached to the widget; because of changes
in the order that widget() and setConfigurationMap() are called,
the model is created earlier, but needs to be connected later.
Adriaan de Groot 5e77d65424 [packagechooser] Add install-method to pick *packages* module
Adriaan de Groot dd52e10839 [packagechooser] Introduce a Config object
Rip out most of the ViewStep that deals with configuration,
move it to a Config object (not one that supports QML yet,
though), and massage the model a little.
Adriaan de Groot 98c7cec732 CMake: restore NOTREACHED, without the macro-mess
- gcc (up to at least version 10) is worse at recognizing that all
  cases have been handled, so it complains about all the switches
  that cover enum values.
Adriaan de Groot 2b9fa0f982 CMake: drop the NOTREACHED macro
- both clang and g++ support __builtin_unreachable(); (as Kevin
   Kofler pointed out) so we don't need the macro to do different things;
 - the compilers have gotten better at detecting unreachable code,
   so instead of inserting macros or fiddly bits, just drop them
   and the unreachable code they comment.
Adriaan de Groot 1cd9b93a22 REUSE: Giant boilerplate cleanup
- point to main Calamares site in the 'part of' headers instead
  of to github (this is the "this file is part of Calamares"
  opening line for most files).
- remove boilerplate from all source files, CMake modules and completions,
  this is the 3-paragraph summary of the GPL-3.0-or-later, which has
  a meaning entirely covered by the SPDX tag.
Adriaan de Groot 30a85668b7 REUSE: (GPL-3.0-or-later) C++ modules
Adriaan de Groot 00deeec8c8 [libcalamaresui] Use InstanceKey instead of strings
- Replace return type of Module::instanceKey() by the structured
   ModuleSystem::InstanceKey type
 - Chase API breakage
Adriaan de Groot d21ed0cc7f [packagechooser] Coding style
bill-auger 7510e883b8 pre-select default item in packagechooser
Adriaan de Groot 01c4383178 [packagechooser] Simplify parameters
- Just pass the no-package-selected item around.
Adriaan de Groot 996714dd06 [packagechooser] Use all translations for no-package-selected
- If there is an item with id "" (empty), it is used as the
   "no-package-selected" placeholder text.
 - Existing code iterated over the abstract model and used the
   name and description at the time the model was set -- but
   by getting the name and description from the model, only
   a single string was obtained instead of the full range
   of translations.
 - Therefore, when arriving on the page, the "no-package-selected"
   information was displayed from the translation that was active
   when the model was set.

Instead, extend the non-abstract model so we can find the no-package-
selected item and pass that explicitly to the page.

FIXES 
Adriaan de Groot 019d1c36c6 [packagechooser] Load translated strings from config
- Apply the *labels* from the configuration file to the
   visible strings (only the ViewStep name).
Adriaan de Groot d8af11adee [packagechooser] Build AppStream Pool first
- Don't build a Pool for each PackageItem loaded
 - Do make it load all languages instead of only the current one
Adriaan de Groot 0a92ef7655 [packagechooser] Refactor fromApp*()
- These don't have to be static methods of PackageItem, a free
   function is more convenient.
 - Since it's not API of PackageItem anymore, need to
   - update tests not to use API
   - do API-not-available warnings in consumers
Adriaan de Groot eaa0c02f8d [packagechooser] Initial support for appstream items
- Use *appstream* as key in one of the items for the package-
   chooser to load data from the AppStream cache in the system.
 - Usable for some applications; for DE-selection not so much.
 - Currently unimplemented.
Adriaan de Groot f3de320288 [packagechooser] Drop hard-coded data
- Now that the configuration can do all the things, we don't need
   a hard-coded model with bogus entries.
Adriaan de Groot 6ddae94628 [packagechooser] Allow to override some of AppData
- The ID and Screenshot entries might be weird in AppData (in particular,
   a remove URL) so put those back under the control of Calamares even
   when using AppData as the source of descriptions.
Adriaan de Groot d72391942f [packagechooser] Implement AppData loading
- An item can refer to *appdata* and load that, or provide
   the data in the config file itself.
 - Fix documentation about translations.
Adriaan de Groot 6e05a1ef05 [packagechooser] Load translated strings as well
- This makes it possible to put the translations into the config
   file, and have them displayed when the Calamares language changes.
Adriaan de Groot b16354133d [packagechooser] Switch to a list form
- Using id's as keys in a map orders them indeterminately -- in
   practice, alphabetically by key. Switch to a list form so that
   the products stick to the order they have in the config file
   (which means distro's can list "preferred" versions at top).
Adriaan de Groot 791f9cbccb [packagechooser] Read packages model from config
- add key *items* which will be used to fill up the model for
   software products.

TODO: needs translation support
Adriaan de Groot d5275d5e10 [packagechooser] Allow the model to set the introductory text
Adriaan de Groot 140c0db7a4 [packagechooser] Set GlobalStorage packagechooser_<id>
Adriaan de Groot c59ffc7765 [packagechooser] Set default ID as documented
Adriaan de Groot b711c791bd [packagechooser] Fix build, tidy code
Adriaan de Groot 87d7b2a5c0 [packagechooser] Allow setting an ID for the module's GS key
Adriaan de Groot 76077743af [packagechooser] Add configuration setting for selection mode
- Add a *mode* key to the configuration file
 - Change some names around to be more consistent (not user-visible)
Adriaan de Groot ab7374628b [packagechooser] Use sample screenshots
Adriaan de Groot 86d8db6bbf [packagechooser] Enforce selection mode on the next-button
Adriaan de Groot 2272d2ab43 [packagechooser] Add selection modes
- Introduce different selection modes (most don't work yet)
 - Use model data in the main widget
Adriaan de Groot 86e2e6242f [packagechooser] Warn about weird calling orders
Adriaan de Groot a32dcdad86 [packagechooser] Support multiple selection modes
Adriaan de Groot d1a85ba5ca [packagechooser] Add a model for the list to use
- Model contents currently hard-coded
Adriaan de Groot 735d5d2683 [packagechooser] Add stub of module
Package chooser is a **low density** package selector -- unlike
netinstall which offers a high density tree view -- for picking
zero, one, or more items from a small collection of packages.

This can be used, e.g., for "pick exactly one desktop environment",
"pick zero or more text editors" which can then be installed
by another module. The UI is big and shiny (rather than netinstall's
text-based tree view) and isn't suitable for more than a dozen or
so items.