This commit changes what counts as the default settings to take into account the default
settings of the current Global Theme.
e.g. if you change the Global Theme to Breeze Dark, when you go to the color KCM, clicking
the "Defaults" button will revert to the Breeze Dark color scheme (because it is the default
color scheme of the active Global Theme), rather than Breeze Light.
Since these KCMs can display user and distro provided content, we can't
ensure that everything will begin with a capital letter. Accordingly, we
should sort the grid case-insensitively to prevent the entries starting
with lowercase letters from being shunted to the end.
CCBUG: 404608
Add explicit find_package() and #include's that are required and were
pulled in by KDELibs4Support.
krdb: remove one redundant #include, KColorUtils
kcm_fonts: send dbus message directly to org.kde.KDEPlatformTheme to
'refreshFonts'
kcm_style:
- use KToolBar::emitToolbarStyleChanged() to notify of toolbar style changes
For the rest use the notifyKcmChange() private method to send the dbus
signal.
[1] https://invent.kde.org/frameworks/kdelibs4support/-/blob/master/src/kdeui/kglobalsettings.cpp#L860
This matches the install location scheme QT_PLUGIN_DIR/kcms/, which makes
it slightly easier to test stuff right from the builddir, without
installation, by exporting QT_PLUGIN_DIR=builddir/bin/.
Also install kcm_fontinst in QT_PLUGIN_DIR/kcms/, like the other KCMs.
Making it a library instead of including the source from multiple places
has several advantages. We get proper dependency and include path
propagation. We can specify the krdb dependencies once instead of
repeating them for each kcm. This allows for a better separation between
the KCM's actual dependencies and krdb's dependencies.
After getting the Icons KCM set up using an ActionToolbar for the row of
buttons at the bottom of the KCM, it seemed like a good idea to adapt
that method for more of the KCMs. This is the first of those patches,
and it adapts the Colors, Cursor Theme, Desktop Theme, Global Theme, and
Style KCMs to using an ActionToolbar (and consequently allowing them to
scale their UI more correctly).
This adds a small cli helper tool which allows you to list what Plasma
themes are available on the system (and which is the current one), as
well as letting you set a theme as the current. It handles being passed
a full path to the theme, though when that happens it just uses the last
bit of the path as the name of the theme.
The latter part allows it to be used by KNewStuff as an adoption
command, and the changes to the knsrc file makes that happen. There is
also a small change which fixes a discrepancy in the naming of the
Plasma Themes dialog, making it consistent with everywhere else that
references Plasma Themes (not sure why they were called styles here,
guessing a really old copy/paste thing).
Additionally, a similar tool for the color and cursor KCMs are also added by
this patch, and the lookandfeeltool binary built by the global themes kcm is
also modified slightly to accept a full path to a package, and added as
an adoption command for those.
The patch also adds a tool which sets wallpapers, which replaces the
failure-prone dbus command previously used as the kns adoption command.
The warning that appears when you check the "Use desktop layout from
theme" checkbox is scary, but not actually scary enough. It doesn't make
clear what exactly will be reset. As a result, the user may
underestimate its destructiveness and mistakenly destroy personal
data--for example, text in a sticky note applet.
Accordingly, let's make the text more explicit so people realize it's
scary.
In the long term, I would like for applying a Global Theme to display a
sheet that tells you what it will do, providing the opportunity to tell
it not to do any of those things that you don't want it to do.
But until we have something like that, let's just make this warning
message more explicit:
BUG: 431691
FIXED-IN: 5.22
We do this sometimes, but not consistenly.
The benefit is twofold.
First it improves the diff when adding new values since no existing line needs to be touched.
Second it prevents clang-format from collapsing the definition into a single line, which is undesired for large enums.
This button is left over from an earlier version of the new design and
is redundant with the sidebar list of child KCMs. It also doesn't work
properly (the menu doesn't stay open after the first click and the menu
items don't do anything)