- Some variant helpers take a default parameter if the map does not
contains the given key or if the type mismatches. Make all helpers
behave the same.
- Initialize the attribute partAttributes to 0; it is a primitive type
and it is not initialized in some constructors.
Fixes commit c1b5426c6 ([partition] Add support for partition attributes).
- Move implementation of default constructor to cpp.
added missing components listed as ResponsiveBase, ListItemDelegate & ListViewTemplate
parts of which were on nitrux
keyboard.qml no longer uses buttons within ListView, can't work as buttons and have them visible
see https://doc.qt.io/qt-5/qml-qtquick-listview.html#footerPositioning-prop
set ListView as actually visible within a normal calamares window size
- If the 'no tracking' box is checked, then the way to uncheck
it is to tick some **other** box.
- It doesn't make sense to unselect 'none' and then have .. none
selected.
KDE neon does not do this kind of tracking -- although it was originally
requested by KDE neon, no server roll-out was done once the
privacy policy was thought out.
- give the on-some-checkbox-state-changed slots better names
- while here, refactor is-any-actual-tracking-option-checked
- improve other debug messages, to be a whole sentence
- QString to-integer members detect if an integer string begins with
"0x" (base 16) or "0", base 8; but QVariant members do not.
- QString: the C language convention is used is base is set to 0.
- Convert to QString and use its member toLongLong() and set base to 0
to detect integer strings begin with a prefix.
- These have **not** been fixed for validation, so the schema's themselves
will fail to load. This is a consequence of variations in JSON-Schema
representations through various drafts. Fixing the schemata is
fairly straightforward.
This gives us 19 new tests, all of which fail.
- Note that this is missing *languageIcon* so if that gets uncommented,
it will fail validation.
- While here decide that should be
right up front in object (mappings) declaration.
- The size of a 2GiB partition (in bytes) is larger than the largest
32-bit signed integer; we hit signed overflow while calculating
2^11 * 2^10 * 2^10 and the test fails.
- Switch the whole table of sizes to qint64 instead.
- For testing purposes only, introduce a _qi suffix for qint64.
FIXES#1430
- All the headers go to relevant subdirs, but we don't keep
libcalamares and libcalamaresui apart.
- While here, remove unused variable from libcalamares CMake
- link the library privately -- the public API uses QVariantMap
- install FindYAMLCPP just in case
- add yamlcpp explicitly in the few places that really need it
(e.g. netinstall testing the parsing of netinstall.yaml)
- Add the Calamares CMake-modules to the search path automatically
- Export to CalamaresTargets.cmake and use namespace Calamares::
- Document imported targets
- Find Qt, because the translations machinery will need macros from that
- The installed lib links to IMPORTED libraries from KF5, so we need
to find them (again) as well.
- Do all the status indication in one component, but vary
the top-level message based on whether the mandatory
requirements are satisfied.
- Vary color and icon based on each requirement's *mandatory* setting.
- Value is configurable (through the "selector" which is passed
to GeoIP lookups). This is convenient for tests so you can "fix"
the value that the lookup will return.
- The Radio's are replaced by CheckBoxes and some logic, so
that different tracking styles can be enabled independently.
None of the settings end up in the Config yet, though.
- Uses global storage to steer the jobs that are created, in case
the slideshow needs to be tweaked by percentages or whatever.
- While here, add some code docs and apply coding style.
- When loading QML V2, both loadQmlV2Complete() and changeSlideShowState()
lock the same mutex, introduced in e7f4479df1.
- Explicitly unlock when loading is done and we need to change the state
immediately.
- For testing purposes, it's useful to load a module externally
and then register it to the ModuleManager (this hands off ownership).
- Refactor overall module loading to use the exposed single-module method.
- QML files need to be searched in specific places; this was initialized
by Calamares, but not for the text application. Move initialization
into the library.
- fixes:
12:44:25 [6]: Python Error:
<class 'TypeError'>
'builtin_function_or_method' object is not subscriptable
File "/usr/lib/calamares/modules/rawfs/main.py", line 188, in run
item.copy(filesystems.index(item), len(filesystems))
File "/usr/lib/calamares/modules/rawfs/main.py", line 99, in copy
if libcalamares.job.configuration["bogus"]:
- The -s will run the slideshow with a bogus job-queue, allowing easier
testing of the slideshow. This is more convenient than having a Calamares
with an empty show and a bogus exec section.
- The -s option for running the slideshow / execution phase of
Calamares needs to create a bogus Module for the ExecutionViewStep.
- Previously, unless setDefaultFontSize() was called explicitly,
the default size would be 0, leading to unexpected and weird
displays (and a warning on stderr).
- If setDefaultFontSize() is not called, get a sensible size instead
(like defaultFontHeight() was already trying to do).
- When loading *view* modules, we always need a QApplication for GUI
bits, because the widget for a module is created is very early.
- If it's a view module, replace the application object with one
that supports GUIs; without the --ui flag, though, it will just
run the jobs.
- All the configuration lives in the Config object (or the
tracking objects that it exposes).
- Get data from the config object for the jobs; TODO: give the
jobs a less-clunky interface.
The UI isn't hooked up to the Config object yet, though.
- a single tracking type can be enabled for configuration in the
config file; each must have a policy URL. Class TrackingStyleConfig
is a base class for that kind of configuration.
- root_mount_point was used initially for logging c1a139995 (adding new
bootloader job options are to use grub for BIOS, gummiboot for efi set
extra mountpoint when efi is found)
- the trace was removed since 533031b3c ([bootloader] print() does not
log)
- The Python configuration tests sometimes need extra setup, so
do that through a CMakeTests.txt file in the test directory.
- Patch up existing tests:
- grubcfg needs /tmp/calamares/etc/default to exist
- rawfs won't work on FreeBSD because of differences in /proc
- drop the *discard* from filesystems-on-SSD in the standard example
configuration.
- keep the table **with** *discard* around for referece and explanation.
Remember that the example configurations are intended as **examples**,
to document available settings, and do not reflect a sensible
production configuration.
FIXES#1395
clean up obsolete lines in welcomeq.qml
add requirement section from welcome.conf to welcomeq.conf
data shows correctly in Recommended.qml, fails to show any in Requirements.qml if run without admin rights
This makes it possible to remove QML from Calamares, possibly yielding
a smaller, lighter installer; it takes with it the nice slideshow,
modern configurable navigation and the QML UIs built for various modules.
By default, WITH_QML is on and the "normal" feature set is retained.
- look for Qml modules only when WITH_QML is on (the default)
- look for Network, since that's pulled in only implicitly
- disable the QML Calamares models (modules/*q) if no QML is
enabled; longer-term plan is to merge the **pages** back to
the "upstream" modules, and have things be run-time switchable,
but that's not here yet. Also disable the notesqml module when
QML is off.
- reminder to make all the ABI-relevant WITH_* settings available as #defines
- move the compilation of KDSAG to the calamares executable, not the library
- when DBus activation is on, drop all of kdsingleapplicationguard
- It is the requirements model (checking) that reports progress, and now
the model is accessible (ask for it with requirementsModel(), make the
messages come from there.
- The architecture of letting someone build up a list of requirements
from data emitted by the ModuleManager is broken: if it gets loaded
later, it will miss data; passing around complicated objects is
no fun anyway. Get rid of it, on the way to "ModuleManager has
its own model of requirements".
- Give the ModuleManager a RequirementsModel -- that is the source
of truth about the module-requirements of the modules managed
by that particular ModuleManager.
- Let the RequirementsChecker operate on a given RequirementsModel.
- The requirements are collected by ModuleManager, checked
by an internal RequirementsChecker and changes to the
requirements state are all signalled from ModuleManager.
By connecting the requirements in the welcome modules' Config
only to their own configs -- and immediately checking them,
which is bad on its own -- we end up with a disconnect between
what the ModuleManager says about requirements, and what
the welcome modules report on.
Doesn't compile (but I need to get it off this machine)
- Prepare to implement a picture-based slideshow alongside QML
- Split QML loading into the slideshow component
This might be good prep-work for moving QML loading out of the QMLViewStep as well.
fully implemented:
* loading of a live map, ESRI based, zooming & dragging possible
* IP address is translated to map coordinates
* loading of the map centers to the obtained coordinates, with a marker set
* coordinates are translated to a timezone, label visible at bottom of the map
* mouse movement will show changing coordinates
* clicking on new location will center map there, marker moved too, timezone label adjusted
* hasInternet switch set to either load Map.qml or Offline.qml
not done:
* get hasInternet status
* fill the fine-tune 181n.qml with proper locale & language data
* connect the obtained timezone to globalstorage
comments are left in the various files for what needs attention/changes
Improve testing framework while adding tests to rawfs to double-
check that the conversion (for Python 3.3 compatibility) of
capture_output is correct.
- If a module has tests/#.global or tests/#.job, these are used
as arguments to a test-run of loadmodule (which reads them
and runs the module with that configuration).
- This makes the old python-loading test and test-runner entirely
obsolete, so remove them too.
- By default, try to use DBus service to keep Calamares unique
- The older implementation via KDSingleApplicationGuard is still
available, just not used by default.
- Calamares doesn't like to run multiple instances, since they would
interfere with each other (stealing disks from each other, for instance).
The single-application code tries to prevent that.
- For -d runs, for developers where presumably they know what they are
doing, the single-application restriction is annoying: especially if
you need two instances at once for some kind of visual comparison.
Drop the single-app requirement if -d is given.
- If the QML navigation panel sets a height, use that
- If it doesn't, use 48px (which *may* make sense, but like many
screen dimensions in Calamares doesn't take HiDPI into account)
- Give the demo QML an explicit height of 48
- This code has existed for a long time but never stored anything
to the Branding object, and the most literal slideshow (just some
images) was not implemented.
Region "Africa" zones # 52
14:25:19 [6]: .. Zone "Asmara" QPoint(445,183)
14:25:19 [6]: .. First zone found 2 "2.0"
14:25:19 [6]: .. Also in zone 3 "3.0"
- All failures were being reported as Timeout, which is confusing
when they are not. Introduce HttpError for the not-timeout
other kinds of errors.
- Add operator<< for RequestStatus for nicer error logging.
- The Config object can handle GeoIP loading on its own. Both
View steps that used this had a derpy view->setCountry() that
didn't really do anything with the view anymore.
- This forces the EFI firmware to boot the loader that was just
created, whatever the boot order set in the firmware setup (USB,
CD/DVD, HD...).
- It is safe to use the first Boot Entry listed in BootOrder as the
previous command creates the new entry and adds it to the first place
of the BootOrder.
- This is a good example of being overly clever in C++
- the whole API with an enum requesting a specific string is a bit weird,
although it makes sense from the 'might need more strings specified'
point of view.
- sometimes if you use external OEM modules you might have those lines already present
- by skipping them you won't have double lines when rerun the module in a later step
Merge in the documentation from Bill Auger and then implement
what it documents (this had been missing; productWallpaper was
an orphan setting).
FIXES#1380
- If we have a wallpaper, bung in an extra QWidget between the main
window and the panels (sidebar, nav and main) where we set a
stylesheet that displays the chosen image.
- things that can be done in the designer file should be there,
not weirdly repeated in code elsewhere
- drop the insertion of an extra spacer (why not include it in the
designer file?)
- shuffle all the connect() calls down to the end of the constructor
This commit adds the new configuration `efiSystemPartitionName` to the
file partition.conf.
This option sets the partition name to the EFI System Partition that is
created. If this option is unset, the partition is left unnamed.
- Use << Logger::NoQuote{} to turn off quoting **and** the space
- In practice, in Calamares we use this only around other processes'
output, where we want neither quotes nor spaces.
- the test checks that the default locale is C or en_US .. let's just
make it so instead of relying on the environment. This fixes tests
on my dev-laptop, which happens to be set to en_NL (with volapuk
date format).
- Although we long ago replaced the getPartitions implementation, the
test is still there, and on a machine with no /dev/sda (e.g. because
root is on nvme) the echo-awk-shell-pipeline can give an empty string;
this is turned into a QStringList{""} which has one element, while
the new version has 0 elements.
- Special-case the test that empty strings should be empty lists, rather
than 1-element lists with an empty element.
reads data from languagesModel correctly, debug added to see index changes
code cleanup
button layout improved
install info text added, better spacing of text
about button no longer commented out, 3 reasons:
- info provided by any about is standard, will be odd if it can't be found
- about.qml is a seperate file, can be completely adjusted
- not showing it takes away the options for new QML cala users to see what is possible with Loader, thus stopping new possible contributors
- This is a follow-up to d0c205c1cc6a2ae49935c92bfd52911b9a0d43f7;
I really don't know why static constexpr const elements that are
not referenced by address need to be defined separately.
- rename enlarge to ensureSize() and change the meaning from
"make this much bigger" to "make sure this is displayed",
which is easier on the caller to calculate.
- the navigation bar was set "too tall", leave it at the natural
layout height for this widget
- margins needed some massaging to give contents some more space
(contents has a margin, so it doesn't need more space above
the navigation bar)
- This isn't something that Calamares can acutally fix,
so the test will be disabled later. After all, if
Brazzaville and Kinshasa are close enough that on the
map they are the same pixel, we can't move the cities.
- Merge all the format documentation into netinstall.conf,
where the example is given in full as an embedded
*groups* entry.
- Get README.md to point to the example.
- Fix up headers in netinstall.yaml, pointing to the
embedded example in netinstall.conf.
Timezones updated for these countries found on pixel detection tool
Dublin is in 0 (-1 needs editing)
Gibraltar should be 1.0 (0 needs editing)
Guernsey and Jersey are in 0 (1.0 needs editing)
Lisbon is in 0 (-1 needs editing)
Vilnius should be in 2 (1 needs editing)