Commit Graph

74 Commits

Author SHA1 Message Date
Arjen Hiemstra
54e12fcda0 Deprecate a lastModified timestamp of 0 in Theme::findInCache
lastModified is used to track whether a file is outdated. Having a 0
here means we (in the old code) use the cached version. This causes
problems when the on-disk file has changed, as we have no way of
informing callers that they should regenerate the cache entry. To avoid
this, using a lastModified of 0 now warns and will always return false
(to indicate it is not cached). Unfortunately we can't simply drop the
default parameter of 0 since there is no source-compatible way of doing
that.

CCBUG: 426674
2020-09-23 14:08:52 +00:00
Andreas Cord-Landwehr
d10afb5d2a plasma-framework: Convert copyright statements to SPDX expressions 2020-08-13 19:08:54 +00:00
Laurent Montel
e45a66139a Use camelcase include. (scripted) 2020-07-08 07:44:43 +02:00
Friedrich W. H. Kossebau
d6f15e9f2b Port away from deprecated QList<>::toSet
GIT_SILENT
2020-06-26 06:03:03 +02:00
David Redondo
b7fa6e0e91 Try to apply the colorscheme of the current theme to QIcons
Summary:
Before icons loaded internally with QIcon::fromTheme were being colored with the
colors from the current global color scheme instead of the ones from the current
Plasma Theme. Leading to visual bugs when the two differ. This happened because
KIconLoader uses the global color scheme by default.
A prominent case is the notification send by the network plasmoid when one
successfully connected to a wireless network. It sets the icon
"network-wireless-on" which is not included in Breeze icons (but is included in
Breeze Plasma Theme). If the current icon theme is indeed Breeze, IconItem
resorts to using QIcon::fromTheme and we end up with a wrong colored
"network-wireless" icon.

BUG: 417780

Test Plan:
{F8125752}

{F8125753}

Reviewers: #plasma, cblack, ngraham, mart

Reviewed By: #plasma, cblack, ngraham, mart

Subscribers: mart, wbauer, cblack, kde-frameworks-devel

Tags: #frameworks

Differential Revision: https://phabricator.kde.org/D27589
2020-03-02 11:55:35 +01:00
Aleix Pol
591aceb3f9 Make use of KPluginMetaData where we can
Summary: Instead of relying on the older KPluginInfo which is slower (parses de metadata twice) and comes from a much higher tier.

Test Plan: Running plasmashell with it

Reviewers: #plasma, mart

Reviewed By: #plasma, mart

Subscribers: kossebau, broulik, kde-frameworks-devel

Tags: #frameworks

Differential Revision: https://phabricator.kde.org/D23682
2020-01-12 02:38:56 +01:00
Laurent Montel
d345bdd87f Port deprecated QSet::toList method 2019-12-19 13:55:07 +01:00
Laurent Montel
f53365633c GIT_SILENT: Use QLatin1String in QString::contains etc. Fix replace
usage
2019-08-29 07:25:48 +02:00
Aleix Pol
6c692309ed Better use of Qt APIs in Plasma::Theme
Summary:
Try not to access hashes repeatedly.
QRegExp -> QRegularExpression.

Reviewers: #plasma, #frameworks, fvogt, mart

Reviewed By: #plasma, mart

Subscribers: bruns, tcanabrava, fvogt, broulik, kde-frameworks-devel

Tags: #frameworks

Differential Revision: https://phabricator.kde.org/D22147
2019-07-02 16:46:53 +02:00
Friedrich W. H. Kossebau
fb1a332948 Add Theme::blurBehindEnabled()
Summary:
Allows themes to disable the blurring of what is behind panels,
if they either do not need it (being fully opaque) or by design want
non-blurry transparency.

Reviewers: #plasma, davidedmundson

Reviewed By: #plasma, davidedmundson

Subscribers: kde-frameworks-devel

Tags: #frameworks

Differential Revision: https://phabricator.kde.org/D19907
2019-03-21 19:33:41 +01:00
Laurent Montel
9fc663d9f0 Make it compiles without deprecated method
Summary: compile without deprecated method

Test Plan: all autotest ok

Reviewers: dfaure, apol

Reviewed By: apol

Subscribers: kde-frameworks-devel

Tags: #frameworks

Differential Revision: https://phabricator.kde.org/D19418
2019-02-28 23:01:43 +01:00
Kai Uwe Broulik
7ca1f01ea9 Do background contrast fallback at runtime
When a theme doesn't supply background contrast values, we take an educated guess based on whether it's a dark or light theme.
We didn't update the values when switching only color schemes at runtime (when theme follows it).
This lead to washed out Plasma popup and panel backgrounds. Instead, compute the fallback value at runtime.
Also, while at it, update complimentary colorscheme as well, which was forgotten here.

BUG: 401142

Differential Revision: https://phabricator.kde.org/D18487
2019-02-07 16:37:55 +01:00
Kai Uwe Broulik
8c50991407 [Plasma Theme] Use new connect syntax
Saves some cycles

Differential Revision: https://phabricator.kde.org/D18356
2019-01-18 12:34:06 +01:00
Yuri Chornoivan
72ca2f79e0 Fix minor EBN issues and typos 2018-10-22 21:05:29 +03:00
Friedrich W. H. Kossebau
30cbc2dc33 Use more nullptr 2018-07-02 00:16:21 +02:00
Laurent Montel
e690c4726e Warning-- 2018-04-13 13:58:44 +02:00
Aleix Pol
b8b8a69fd1 Remove implicit string casting
Summary: Follow the KF5 guidelines

Test Plan: Plasma shell starts

Reviewers: #plasma, #frameworks, sebas

Reviewed By: #plasma, sebas

Subscribers: plasma-devel

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D9108
2017-12-02 15:44:14 +01:00
Aleix Pol
ceca6ffa01 Don't rely in includes of includes
QFontMetrics is used by theme.cpp
2017-11-07 21:16:08 +01:00
Aleix Pol
67d882037c Define Plasma PackageStructure as regular KPackage PackageStructure plugins
This way we can use kpackagetool5 against them (see RR 128590).

REVIEW: 128596
2016-08-04 19:23:59 +02:00
Marco Martin
4de0dd2e90 rename state property in status
emergency change: in Qml the name "state" for a property
is reserved for the internal state machine, so any object that
exposes a "state" property on its own would automatically
break the state machine
2016-06-01 14:47:56 +02:00
Marco Martin
f3c05034d9 Selected state for Plasma::Svg and IconItem
Like KIconloader, support a Selected state, in IconItem,
as in all generic svgs/framesvg
it replaces the text color with HighlightedText and the
background color with HighlightColor

Change-Id: Id97a527405d2c3feed75a172f05547defdbf440c
REVIEW:127975
2016-05-31 11:10:47 +02:00
Aleix Pol
9f62532674 Fix most of Clazy warnings in plasma-framework
REVIEW: 126672
2016-02-29 00:13:41 +01:00
Martin Klapetek
76186339f6 [libplasma] Add categorized debug output 2015-12-15 16:56:40 -05:00
Nick Shaforostoff
c7c2980f14 qstring optimizations
REVIEW: 126148
2015-11-27 20:03:48 +00:00
Marco Martin
80d5a6fdda start timer with invokeMethod
rectSaveTimer is used to event compress the save and sync of the
configuration file that is used as a cache of the rectangles of
svg items (in order to avoid svg renderers creation when possible)
there is exactly one situation where it seems to not work: during
creation of svgitems/framesvgitems, insertintorectcache ends up
being called by another thread than the Theme's qobject thread,
and that is not allowed.

with invokeMethod the timer will be started by the correct thread
REVIEW:122915

Change-Id: I3ff4a4ebd1dfdba4b9b830fe6c08feece19b903e
2015-03-12 15:15:45 +01:00
David Edmundson
f6aa18c884 Save SVGs only when a theme is unloaded, not on each theme proxy
A single Plasma theme will be represented by one ThemePrivate object,
which is exported in multiple Theme objects.

We want to save the cache when that theme stops being used, not each
time an item stops using the theme.

saveSvgElementsCache calls sync() which involves a lot of parsing and
IO. This makes everything a lot faster at no cost.

Change-Id: Ica6ba0273bc99fb8ad8733a1c90db8f1e87c49ea
2014-12-11 01:56:55 +01:00
Marco Martin
6c54fb596d Don't expose color properties in c++ api
the color properties are remotely useful only when used from QML
and risk to explode in number in the future,
it's not a good thing for a public c++ api.

Also, they will become kinda deprecated as in largely replaced by
the ColorRole api. Too late to remove those properties completely,
but still last days to move them at least out of c++ api.
(and in qml they could be removed in the future in a 2.1 version
of the import while still being present in 2.0 if needed)

This moves the color properties is a theme subclass available only from QML

REVIEW:118972
2014-06-27 15:06:52 +02:00
Marco Martin
17741fbfae prune ColorRole enum
all the former combinations are now obtained with
ColorRole + ColorGroup
2014-06-19 18:18:50 +02:00
Marco Martin
8eb1bc10f5 Introduce the ColorScope class
it's an import in core, and advertises itself as an "attached property"
with this we can:
say that all its chidren are of a certain context, like "button" or
"complementary"

then anywhere there will be available an attached property, as ColorScope,
so like:

PlasmaCore.ColorScope {
 group: PlasmaCore.Theme.Complementary

 PlasmaComponents.Label {
   text: "foo"
   color: ColorScope.textColor
 }
}
2014-06-19 17:40:14 +02:00
Marco Martin
4ad2cc5196 new color group of "complementary" colors
for areas intended to have independent background and text color than
all the rest, like the Logout dialog

if Colors:Complementary is not present in the theme, it falls back to
normal colors
2014-06-18 19:02:08 +02:00
Marco Martin
0596cf176f schedule a rect cache sync when stuff gets in
do a disc sync with a 2 minutes delay
2014-05-26 20:32:22 +02:00
Marco Martin
0b10a16113 try harder to avoid creating svg renderers
now is actually possible to obtain a startup with zero svg renderers
    * svg::isValid will create a renderer only if really nevessary
    * the rects cache is ensured to be written on disk
    * fixed the check on the theme metadata age
    * rect cache is shared between all applications
2014-05-26 20:14:57 +02:00
Aleix Pol
9d9c72630c Simplify plasma theme startup
Don't emit themeChanged when constructing Plasma::Theme instances

Reviewed by David Edmundson
2014-05-26 19:03:46 +02:00
Marco Martin
409d340fba if a name is passed in the ctor, never change
BUG:335005
2014-05-20 18:26:03 +02:00
Marco Martin
f7e25fe696 don't link to xml and iconthemes 2014-05-19 19:09:09 +02:00
Marco Martin
924818a0ca don't link agains KConfigWidgets
not needed anymore
2014-05-19 16:58:37 +02:00
Marco Martin
72239e7f3c apps can use more than one theme.
add the name in s_sharedFrames
CCBUG:335003
CCBUG:335004
2014-05-19 15:24:36 +02:00
Patrick Spendrin
c68db518c8 remove unneeded header
REVIEW:118119
2014-05-15 16:54:31 +02:00
Marco Martin
842d8a7ad5 don't onAppExitCleanup on theme destroy
Theme is not a singleton anymore
2014-05-07 13:58:09 +02:00
Aleix Pol
e6f1fec0c7 Install all plasma files in a prefix/share/plasma directory
At the moment, we could say that plasma is co-installable by chance,
it's only working because KF5 dropped the apps relative directory.
This change introduces a PLASMA_RELATIVE_DATA_INSTALL_DIR that will
be available to know where in share the components are and
PLASMA_DATA_INSTALL_DIR to know where data has to be installed to.

Reviewed by David Edmundson

CCMAIL: plasma-devel@kde.org
2014-04-27 17:14:22 +02:00
Kevin Ottens
72ba7b4146 Apply the astyle-kdelibs script 2014-04-26 01:48:37 +02:00
Sebastian Kügler
5dd4b51151 Plasma::Theme gets API for KWS' background contrast effect
From its api docs:

This method allows Plasma to enable and disable the background
contrast effect for a given theme, improving readability. The
value is read from the "enabled" key in the "ContrastEffect"
group in the Theme's metadata file.
The configuration in the metadata.desktop file of the theme
could look like this (for a lighter background):

[ContrastEffect]
enabled=true
contrast=0.45
intensity=0.45
saturation=1.7
2014-02-06 00:56:50 +01:00
Marco Martin
517403096d port improve cache file dropping to plasma-framework
this ports revision c03052935b082 on kdelibs

improve cache file dropping

* fix regression: version the image cache file name
* version the svg elements
* drop old svg elements files
* respond to changes at runtime by watching the theme's metadata.desktop for changes
* move creation of the svg elements file into ThemePrivate::useCache()

REVIEW:115397
2014-02-04 12:06:09 +01:00
Sebastian Kügler
91a861e3ef noise-- 2014-01-31 03:39:10 +01:00
Sebastian Kügler
ffeb585003 Rough version in which theme switching works
This aligns the config files and groups, and adds a KDirWatch in the
shared Plasma::Theme private object in order to nofity when the
configured theme changes.

It's a bit rough, doesn't cover all corner cases and needs polishing.
2014-01-31 01:06:43 +01:00
Sebastian Kügler
a70dd8c299 theme.defaultIconSize moves to units.iconSizes.default 2014-01-23 01:47:42 +01:00
Sebastian Kügler
4da01ebce0 spacing hints move from theme to units 2014-01-23 01:26:19 +01:00
Sebastian Kügler
d4902e2df2 Remove icon sizes from Plasma::Theme
They've moved into Units
2014-01-23 00:43:21 +01:00
Sebastian Kügler
374d230932 wallpaperForSize moves to Plasma::Theme 2014-01-13 02:11:37 +01:00
Sebastian Kügler
ea2a4db7ab Move spacing, stylesheet and mSize into Plasma::Theme 2014-01-13 01:31:46 +01:00