- The model always has two columns, and the column names are always
the same. We don't need to specially set headers for that.
- Use QCoreApplication::translation() to re-use the existing
translations and avoid creating "new" strings (in a new context).
- Now that multiple netinstall pages may be supported, it's annoying
that they all have the same name. Copy the approach from other
modules (e.g. notesQML) of having the sidebar and other labels
configured in the config file.
- Since operations are added each time you leave this page,
the existing operations (from a previous visit) need to be
cleaned up. With the old setup of only **one** possible
set of operations, this wasn't a problem. Now, merging
in operations is necessary. Implement that by looking for
the *source* property in an operation.
FIXES#1303
- Let's just have one header definining export- and visibility-
macros for Calamares. They are still selected based on the
export flags (*_PRO), just defined in one header instead of two.
- This small header file contained a few unrelated typedefs.
Move those typedefs to the classes they relate to. This
**does** mean that some consumers need to #include something
else instead.
- Use type names more consistently.
Editorial: why are **pages** responsible for creating the jobs?
- Use only utils/YamlUtils.h to pull in yaml-cpp and supporting code.
- When compiling with clang, turn off warnings that the system header
for yaml-cpp would generate.
- These methods are used for multi-page view-steps, which are rare.
For all the others, just drop the empty implementation and defer
to the base class.
Root is always selected, can't be unselected, and has its own explicit
constructor and name. This resolves issue reported where unchecking
all *visible* groups caused the root to be unchecked, after which
hidden-but-still-selected subgroups were not installed.
Reported by crazy@
If a subgroup is hidden, then it should be considered
selected if its parent is selected or partially-selected.
If the parent group is totally unselected, then the hidden
subgroup shouldn't be installed either. This allows putting
required-packages into a group, without cluttering the
interface.
FIXES#864
While walking up the tree, only switch the selectedness states
of parents with children. This avoids the case where a parent
has a first subgroup that is hidden -- in which case the
parent ends up with no children, and is unselected even though
it is marked as selected in the config file.
FIXES#864
- m_groups is only set to a non-nullptr value when data is received
and fully processed,
- avoid nullptr dereference when paging *back* from a netinstall
page that hasn't loaded groups data.
FIXES#859
- Document netinstall.conf a little,
- Add setting *required* which influences whether next is enabled or not
in case of missing or corrupt data,
- Enable *next* button only once some (any!) data is received.
This can be used to disallow stepping past the netinstall step when
there is no data (e.g. internet has failed between the welcome page
and the netinstall page).
- If there's no scripts involved in a package for netinstall, just
name it without the scripts; this lets the packages module
optimize to fewer package manager calls.
- Each element of the (list) packageOperations needs to be a
package operation, which is a dictionary with keys (identifying actions)
and lists of packages (which may be strings or script-info dictionaries).
- both NetInstall (group data) and Locale (GeoIP) use network
data returned as a source of YAML data. Try to explain
parsing errors for both.
FIXES#786
When NetInstall receives YAML data, handle parser errors more gracefully:
show line and column, but because it's network data (not in a local file),
do some work to print out the actual data received.
FIXES#786
the docs do not current reflect the new net-install and packages modules
changes well. This updates them to explain the new keys in the
configuration files.
Package groups are divided into critical and non-critical
depending on whether we want all Calamares to fail if installing
a package in the group fails, or we are okay with just logging a
warning.
The distinction is configured in the YAML file listing the package
groups. By default, all groups are critical, to keep supporting
the previous behaviour.
In other words, support:
hidden: false
selected: true
groups.
This was supposed to work according to README.md, but not actually
implemented. Now it should be working.