Commit Graph

546 Commits

Author SHA1 Message Date
Adriaan de Groot
b78eacd7a8 [libcalamaresui] Set button texts always
- if the welcome module wasn't loaded (or loading otherwise failed)
   then no text was set, leading to confusing screens with
   buttons with icons but no label.
2019-10-21 19:47:58 +02:00
Adriaan de Groot
5ac4f3ec38 [libcalamaresui] Fix up module dependency checking
- If a module exists, and has unmet dependencies, then
   that is only a problem if the module itself is *used*.
   Merely existing is ok.

This triggers on FreeBSD, where partition isn't built, but
bootloader depends on partition -- so you can never start
Calamares on FreeBSD, because bootloader depends on something
non-existent.

Relax the check: just warn, and only fail if a non-existent
module is used (all those with unmet dependencies are considered
non-existent).
2019-10-21 19:28:59 +02:00
Adriaan de Groot
a9a12820d8 [libcalamaresui] Log the found-modules
- fix up comment because it described an old member variable name
 - log number of modules found (all the *potential* modules)
2019-10-21 19:16:15 +02:00
Adriaan de Groot
c4b0511f8d [libcalamaresui] Improve debug message for bad dirs
- Calamares scans **all** subdirs of the module-directory
   for a module.desc and complains about those that don't have
   a module.desc.
 - For ./calamares -d runs from the build-directory, this
   leads to a few complaints when some plugins have been
   ignored (and so no module.desc is generated for them).
2019-10-21 18:08:16 +02:00
Andrius Štikonas
490c14d93d QLatin1Literal->QLatin1String. 2019-09-21 20:44:33 +01:00
Adriaan de Groot
7a5ac63f92 [libcalamares] Chase change of API
- Replace QString( x ) by x.toString() where x is an InstanceKey
2019-09-15 20:38:16 +02:00
Adriaan de Groot
d6ed046495 [libcalamaresui] Replace a superfluous lambda
- The whole method body can be a lot on its own, and since
   loadModules() does nothing but single-shot the lambda,
   call it from outside instead.
2019-09-15 20:38:16 +02:00
Adriaan de Groot
2f99004041 [libcalamares] Move the module instance-key
- Split out of the UI library and into (header-only) libcalamares.
2019-09-15 20:38:16 +02:00
Adriaan de Groot
666462651b [libcalamares] Namespace consistently
- Things in libcalamares/ subdirectories are namespaced
   according to that subdirectory (sometimes in namespace
   Calamares, sometimes CalamaresUtils). Do that in modulesystem/ too.
2019-09-15 20:38:16 +02:00
Adriaan de Groot
78de6776af [libcalamaresui] Swap out use of QString for ModuleInstanceKey
- The strings `module@id` are used internally, make that type explicit.
2019-09-15 20:38:19 +02:00
Adriaan de Groot
b8dd6e9ae7 [libcalamaresui] Introduce a module-instance-key class
- This replaces rather ad-hoc use of a QString as key.
2019-09-15 20:38:16 +02:00
Adriaan de Groot
1cde8c20df [libcalamaresui] Simplify retranslation
- Use any object method to connect() to
2019-08-29 15:01:41 +02:00
bill-auger
e459b82cfe
fix typo in src/libcalamaresui/ViewManager.cpp 2019-08-28 13:02:27 -04:00
Adriaan de Groot
559a65d169 Merge branch 'issue-1213'
FIXES #1213

Better slideshow loading, both V1 and V2. Keyboard shortcuts only while
the slideshow is visible.
2019-08-27 15:59:00 +02:00
Adriaan de Groot
8ab0fb4e5f [libcalamaresui] Apply coding style (missed earlier) 2019-08-27 15:58:09 +02:00
Adriaan de Groot
be5388abcd [libcalamaresui] activate -> change state
- since we also need to *disable* the shortcuts, and should tell a
   V1 slideshow that it no longer is running,
 - use existing function to set the property to true / false depending.
 - instead of changeState( true ) or changeStage( false ), use
   meaningful enum names so that the code at the call site
   becomes readable; make the boolean part internal to the
   state-changing method.
2019-08-27 15:40:13 +02:00
Adriaan de Groot
1e3e53d30a [libcalamaresui] Set activatedInCalamares special property
- when the QML is activated, if the slideshow has this property,
   set it to true. This enables the keyboard shortcuts.
2019-08-27 15:12:47 +02:00
Adriaan de Groot
7df6ed31e9 [libcalamaresui] Refactor QML slideshow activation
- one function for activation, since we activate from different
   places and each loader-API may need multiple steps for activation.
2019-08-27 13:36:28 +02:00
Adriaan de Groot
ac8952f223 [libcalamaresui] Improve QML API v2 debugging
- log what is being loaded
 - distinguish "component complete" from actuial loading
2019-08-27 13:36:28 +02:00
Adriaan de Groot
85f5410735 [libcalamaresui] Apply coding style 2019-08-22 10:25:16 +02:00
Adriaan de Groot
6b8c0129fd [libcalamaresui] Add one more icon (donate) from Breeze
- LGPLv3 like the others
2019-08-13 23:10:56 +02:00
Adriaan de Groot
e7dedbbfe0 [libcalamaresui] Apply coding style to remainder 2019-08-13 21:07:46 +02:00
Adriaan de Groot
d44e8f6115 [libcalamaresui] Apply coding style to viewpages/ 2019-08-13 21:02:30 +02:00
Adriaan de Groot
6f74463a80 [libcalamaresui] Apply coding style to utils/ 2019-08-13 21:00:36 +02:00
Adriaan de Groot
1b6aed8c40 [libcalamaresui] Apply coding style to modulesystem/ 2019-08-13 20:58:39 +02:00
Adriaan de Groot
6224d6605b [libcalamaresui] Apply coding style to widgets/ 2019-08-13 20:57:52 +02:00
Adriaan de Groot
0716a46eb2 [libcalamares] Switch to using KPluginFactory
- this is not entirely straightfoward, since  we need
   different constructor arguments for the objects
   Calamares creates (no QVariantList& args, in particular).
   Implement our own registerPlugin() and createInstance()
   for that.
 - work around a bug in K_PLUGIN_FACTORY_DECLARATION_WITH_BASEFACTORY
2019-08-12 15:52:59 +02:00
Adriaan de Groot
44991e700b [libcalamaresui] Check KCoreAddons version directly 2019-08-12 13:24:53 +02:00
Adriaan de Groot
8a7f32d3aa [libcalamaresui] Polish ImageRegistry
- do static initialization more carefully
 - float -> qreal (double) because that's what the Qt API expects,
   to reduce type-conversion warnings
 - apply current coding style
2019-08-09 16:52:54 +02:00
Adriaan de Groot
ec08a293b2 [libcalamaresui] Reduce compile warnings
- "this" isn't used in the lambda; in future it might be if the
   lambda needs to get the configuration from settings.
2019-08-09 16:43:50 +02:00
Adriaan de Groot
91d327b224 [libcalamaresui] Paste TCP port is quint16
- no sense in feeding in an int (and getting a compiler warning
   for narrowing) into something that by spec is a 16-bit value.
2019-08-09 16:41:59 +02:00
Adriaan de Groot
739363cecd [libcalamaresui] Fix initialization order (reduce warnings) 2019-08-09 16:28:29 +02:00
Adriaan de Groot
e31a498c9b [calamares] Move DebugWindow
- This is a fairly specialized class, for use only in the
   whole-application where it ties in with the module system.
   Move it to the application directory and slim down the UI library.
 - Include it from the new location.
 - Add UIC to Calamares (the application) because there's now
   a designer-based widget in it.
2019-08-09 06:54:31 -04:00
Adriaan de Groot
85d28af1e2 [libcalamaresui] Don't include QJsonModel 2019-08-09 06:34:38 -04:00
Adriaan de Groot
695e16bb87 [libcalamaresui] Drop QJsonModel from the library 2019-08-09 06:21:07 -04:00
Adriaan de Groot
c83e95e66a [libcalamaresui] Chase 3rdparty move
- Widgets need to #include from different path
2019-08-08 12:42:02 -04:00
Adriaan de Groot
2166eb4511 [libcalamares] [libcalamaresui] Adjust for moved sources 2019-08-08 10:47:14 -04:00
Adriaan de Groot
937ff608eb [libcalamaresui] Move spinner widget to 3rd party 2019-08-08 10:27:52 -04:00
Adriaan de Groot
47dbf9ab0c [libcalamares] Move 3rd party code to separate dir 2019-08-08 10:23:36 -04:00
Adriaan de Groot
beeda24423 [libcalamaresui] Fix build of the PythonQt bindings
- Change to std::chrono::seconds wasn't tried against the (optional)
   PythonQt bindings, leading to build failure. Reported by Phil (Manjaro).

FIXES #1210
2019-08-04 08:52:33 -04:00
Adriaan de Groot
e2504627aa [libcalamaresui] Chase timeout-type into the UI library
(TODO: move ProcessJobModule to libcalamares, it has no UI dependency)
2019-08-01 22:51:52 +02:00
Adriaan de Groot
20cf0c8f3d [libcalamaresui] Remove unused code
- This operator is declared, yet never defined or used. The definition
   was removed in fb44fb97b6.
2019-08-01 11:32:32 +02:00
Adriaan de Groot
566be48f16 libcalamaresui: rename and document pastebin method 2019-07-30 15:47:44 +02:00
Adriaan de Groot
2aae30f517 libcalamaresui: don't rely on translations to interpret button
- Keep the debug-failure-call in the code, but commented out
 - Check ButtonRole, rather than the button's text, to see
   which one it is.
2019-07-30 15:43:20 +02:00
Adriaan de Groot
675a35bb2e libcalamaresui: when displaying pasted URL, don't be fancy
- Just call the static method and then quit, rather
   than being careful about allocations.
2019-07-30 15:28:17 +02:00
Adriaan de Groot
fac9ccde88 libcalamaresui: document magic constants in question() 2019-07-30 15:15:41 +02:00
Adriaan de Groot
630694b242 libcalamaresui: apply coding style to viewmanager 2019-07-30 15:12:05 +02:00
Adriaan de Groot
d49ddf6463 libcalamaresui: factor out the pastebin functionality
- While called from the ViewManager (to post the debug log)
   this isn't really part of the ViewManager itself, so factor
   out the pasting code into its own file.
2019-07-30 15:09:25 +02:00
Adriaan de Groot
8f7d183a0c libcalamaresui: don't always fail
- The paste-branch was merged too soon. Now undoing the damage.
2019-07-30 14:41:42 +02:00
Adriaan de Groot
edd2cc7244
Merge pull request #1186 from bill-auger/master
implement post log to paste server (needs some cleanup)
2019-07-29 13:26:13 +02:00
Adriaan de Groot
e2028cf85b [libcalamaresui] Warnings--, no copy constructor for CDebug 2019-07-04 16:20:26 +02:00
bill-auger
c90d3b2016 squashme WIP upload log to paste server - more error checks and validations 2019-06-30 09:52:31 -04:00
bill-auger
e096631c54 squashme WIP upload log to paste server - refactor error checking 2019-06-30 09:52:29 -04:00
bill-auger
e7960474d4 implement post log to paste server 2019-06-30 09:50:24 -04:00
Adriaan de Groot
18bf925a11 [libcalamaresui] Name pending requirements checks
- Give each check a name (based on the module it runs for, so
   there might be overlaps when there are multiple module instances).
 - Log the remaining checks each time the timeout fires, to help
   figure out which one is hanging.
2019-06-27 15:30:32 +02:00
Adriaan de Groot
0bd2bfa708 CI: apply coding style to libcalamaresui/modulesystem 2019-06-27 15:15:47 +02:00
Adriaan de Groot
08b24b9ea2 [libcalamaresui] Fix Doxygen comments 2019-06-26 12:12:17 +02:00
Adriaan de Groot
6ba8ac8526 [libcalamaresui] Use mount from partition service 2019-06-20 12:13:45 +02:00
Adriaan de Groot
79dc9e3463 [libcalamares] Update button icons as we go along
- Adapt the button icons (previous, next, do-install, all-done)
   to the state of the buttons and the corresponding text.
2019-06-18 22:54:41 +02:00
Adriaan de Groot
b3d9af4cae [libcalamaresui] Apply correct button labels
- updateButtonLabels() knows all the special cases for
   buttons, so use it when the language changes instead
   of setting up some possibly-wrong values.
 - One edge case that this fixes is: have **just** the welcome
   page before the first exec section in sequence. Then the
   *next* button label was *next* instead of *install*.
2019-06-18 22:45:49 +02:00
Adriaan de Groot
780fe125f7 [libcalamaresui] Give the buttons icons
- Next, Back, Cancel/Quit have somewhat-appropriate icons.
2019-06-18 16:18:18 +02:00
Adriaan de Groot
34b1a250ba [libcalamares] Improve warnings when module descriptor files are bad 2019-06-18 12:06:13 +02:00
Adriaan de Groot
5fdaeaa899 [libcalamaresui] Improve wording when module is missing configuration 2019-06-18 11:58:03 +02:00
Adriaan de Groot
c7d09f06c5 [libcalamaresui] QML Retranslation since Qt 5.10 2019-06-17 12:23:31 +02:00
Adriaan de Groot
58f6635ca0 [libcalamaresui] Force retranslation on language change 2019-06-17 11:52:20 +02:00
Adriaan de Groot
f9bd0fba10 [libcalamares] Handle async QML loading
- The component isn't ready immediately, so instatiate
   once it is fully loaded and ready
 - Edge case if the execution view step is already visible, then
   start the show (because a previous call to onActivate() will
   have missed it).
2019-06-17 11:47:25 +02:00
Adriaan de Groot
193bcbde71 [libcalamaresui] Use setSource() for API version 1
- Just avoid all the componentized loading and do the
   synchronous load-compile-setContent thing.
2019-06-17 11:17:06 +02:00
Adriaan de Groot
15ab98cb26 [libcalamaresui] Use API version to load slideshow differently 2019-06-17 11:05:56 +02:00
Adriaan de Groot
148b829591 [libcalamares] Introduce slideshowAPI setting 2019-06-17 10:58:14 +02:00
Adriaan de Groot
075f0787f9 Merge branch 'master' into issue-1152 2019-06-16 13:11:03 +02:00
Adriaan de Groot
71209b323a [libcalamaresui] Call QML methods on start and stop
- Use onActivate() and onLeave() in QML as well, to start and stop
   the slideshow.
2019-06-16 13:06:34 +02:00
Adriaan de Groot
68e6bd676e [libcalamaresui] Instantiate QML at load time
- By instantiating only on activation, an ugly "white" gap
   appears where there is no widget at all. So instantiate
   earlier so that the widget already exists and is painting
   by the time the slideshow part is visible.
 - This makes the net effect of this branch so far zero:
   the slideshow is still loaded and started when Calamares starts.
2019-06-16 12:15:41 +02:00
Adriaan de Groot
c233bbb23d [libcalamaresui] Handle no-finished-page scenarios
- From an exec section, next() is called automatically when
   all the jobs in that section are done.
 - If there **is** no next section (e.g. there's no finished
   page to show after the exec), then m_steps.at() would assert
   on an out-of-range index.
 - Introdcuce a helper predicate isAtVeryEnd() which handles both
   out-of-range and normal at-the-end scenarios.
 - If there's no page following the exec section, stay with the
   slideshow but update buttons to match the normal last-page
   behavior, and don't ask about cancel (since we're done).
2019-06-07 21:54:07 +02:00
Adriaan de Groot
2b5cf9e613 [libcalamaresui] There is code in Qt for setting up QML widgets
- The not-publicly documented setContent() method does all the
   parenting and resizing needed; some of this isn't available
   from outside of the widget either.

The QML slideshow now sizes and re-sizes correctly.
2019-06-03 10:38:29 +02:00
Adriaan de Groot
f52d62034b [libcalamaresui] Manual QML loading trickery
- The slideshow item needs a parent to be visible,
 - QML gets size 0,0 unless explicitly sized to the surrounding widget.
2019-06-03 10:18:24 +02:00
Adriaan de Groot
103decab68 [libcalamaresui] Create the slideshow on activation
- Load QML on startup, compile async
 - Create QML component when the page is reached.
 - On leave, stop the slideshow (otherwise, e.g. timers will keep running)

This should move some of the delay from loading a large
slideshow forward as the engine is already initialized when
we reach the install / slideshow page.
2019-06-03 10:16:52 +02:00
Adriaan de Groot
ff03235e33 [libcalamaresui] Load QML on startup 2019-06-02 13:19:16 +02:00
Adriaan de Groot
5973dbf74c [libcalamaresui] Shuffle code for QML slideshow
- Create widgets earlier
 - Group layouting code
 - Add retranslator only once, not on every activate
 - Load QML only once, preferably at activation
2019-06-01 23:39:39 +02:00
Adriaan de Groot
cbe14bbf03 [libcalamaresui] Rename m_slideShow -> m_qmlShow
- It could be any QML, so it's not a slideshow per se.
 - Minor prep-work for fixing up loading times.
2019-06-01 23:26:08 +02:00
Adriaan de Groot
75ce391e7e [libcalamaresui] Add branding-aware function for loading image by name 2019-05-31 17:27:11 +02:00
Adriaan de Groot
1438729b72 [libcalamaresui] Do filename checks more sanely
- check directory exists before trying to open file from it
 - re-use the componentDir already found for later tests.
2019-05-31 17:27:11 +02:00
Adriaan de Groot
95009a5222 [libcalamaresui] Fix disable-cancel behavior
- d78bc0c5 added an early `return false` when cancel is disabled,
   before checking if we were at the last step; so last-step
   didn't get any special handling.
 - refactor so that last-step now gets special handling first,
   **then** disable-cancel handling, and then the usual case.
2019-05-28 13:38:28 +02:00
Adriaan de Groot
2e39f24bb0 [libcalamaresui] Make sure finished() is processed once
- Avoid races which might double-delete the timer, or enter
   the if twice (which would lead to duplicate emissions of
   requirementsComplete and the associated UI glitches).
2019-05-27 17:15:49 +02:00
Adriaan de Groot
2b91608b82 [libcalamaresui] Avoid requirements-results UI duplication
If the requirements checking is **really fast**, e.g. you don't
have a check for internet connectivity, then the checks
might be done as fast as the 0-timeout single-shot timer,
which means that finished() is called once by the QFutureWatcher,
and then after that by the QTimer .. leading to two messages
"All requirements have been checked", but also twice
requirementsComplete being emitted, so you end up with two
results lists being added by the CheckerContainer.

Stop that by using the results-progress timer as an additional
flag: the first time everything is complete, delete that timer
and set the pointer back to nullptr.
2019-05-27 17:10:21 +02:00
Adriaan de Groot
f64e55f0dc [libcalamaresui] Use meaningful asserts
- In debug mode, hitting assert(false) is meaningless,
 - In release mode, the assert is optimized out.
 - So assert the condition we're actually testing, for better messages.
2019-05-27 15:38:37 +02:00
Adriaan de Groot
976ad7e3e7 [libcalamaresui] Look up icons via theme
- Don't cache icons, because they could be changed via
   the active desktop theme.
2019-05-27 15:35:56 +02:00
Adriaan de Groot
822bbaad9c [libcalamaresui] Allow icon names in branding images
- It's ok to use path / filenames in images, but you can also
   use icon names according to the FDO icon spec. This makes
   sense for at least *productLogo*, possibly *productIcon*, but
   not really for *productWelcome*.
2019-05-27 15:26:57 +02:00
Adriaan de Groot
cd38ded8d5 [libcalamaresui] Support os-release substitutions in images
- Branding images might want to use os-release data as well.
 - Refactor a little to keep the number of #ifdefs the same;
   an intermediate expand() lambda handles expansion (or not,
   if it's not enabled).

FIXES #1153
2019-05-21 17:12:00 +02:00
Adriaan de Groot
18b111218a [libcalamaresui] Sort includes in DebugWindow.cpp 2019-05-21 13:35:58 +02:00
Adriaan de Groot
ac941e6756 [libcalamares] Implement reload-stylesheet
- From the debug-window, clicking *reload stylesheet* does just
   that, and applies the new stylesheet to the Calamares window.
 - Remove stylesheet caching from the Branding class; we only
   need the sheet once (on Calamares startup) or when updating
   the stylesheet, which is seldom-enough that we don't need
   to keep an extra copy around.
 - To use, start Calamares, open the debug window, open stylesheet.qss
   in an editor. Make changes, save, then click *reload stylesheet*.

SEE #1149
2019-05-21 13:21:47 +02:00
Adriaan de Groot
877cb0e999 [libcalamaresui] Debug-tool to dump widget tree
- Adds another tool to the debug window, which dumps (to the debug
   log) a tree-like view of all the widgets in the application.
   This can be used when writing stylesheets.
2019-05-21 13:07:34 +02:00
Adriaan de Groot
b5625fc14d [libcalamares] Add a reload-stylesheet button
- This is a debugging-option to test stylesheet changes quickly.
 - Right now, the stylesheet is cached, so it doesn't even work.
2019-05-21 12:52:50 +02:00
Adriaan de Groot
af73d90b7b [libcalamaresui] Fix build with KOSRelease
- initialization of the hash was all wrong
 - special-case ID_LIKE
 - typo's
 - link to CoreAddons
2019-05-20 22:54:54 +02:00
Adriaan de Groot
fbbbe63642 [libcalamaresui] WIP: Use KOSRelease and KMacroExpander in branding
- allows you to use -- at runtime -- values from os-release in the
   branding file.
 - WIP because the only machine I have with sufficiently new KF5
   is the FreeBSD box.
2019-05-20 22:11:11 +02:00
Adriaan de Groot
92d0e71029 [libcalamaresui] one more refactor for string-loading
- Do the checking for IsMap inside loadStrings() and use
   YAML::Exception to get to bail() (since we're already dealing
   with exceptions here, no extra costs). This tidies up the code
   somewhat.
2019-05-20 17:03:32 +02:00
Adriaan de Groot
667f78c016 [libcalamaresui] if there's a YAML exception in branding, bail
- all kinds of type errors result in bailing out, but a totally
   broken branding file does not?
2019-05-20 17:03:28 +02:00
Adriaan de Groot
62328c9940 [libcalamaresui] images-strings loading fixed
- move the string-munge into a lambda and use the generic loadStrings()
2019-05-20 17:03:17 +02:00
Adriaan de Groot
544d905b2f [libcalamaresui] WIP: refactor again
- the string-manipulation can be done through a lambda. That makes
   handling *strings* and *styles* simple.
 - still doesn't compile.
2019-05-20 17:03:17 +02:00
Adriaan de Groot
5a126816f4 [libcalamaresui] WIP: refactor copying strings from config to Branding
- this is mostly to make the constructor easier to read by
   moving parts of the story to easily-understood methods.
 - doesn't actually compile.
2019-05-20 17:03:08 +02:00
Adriaan de Groot
5bae7b7b52 [libcalamaresui] check for sufficiently-new KF5CoreAddons
- From 5.58, KOSRelease is available (not used yet, though)
2019-05-20 17:03:04 +02:00