Introduces partially checked checkboxes for Effects. If an Effect
has an enabled by default function and doesn't have an explicit
value in the config file the checkbox is set to partially. If there
is a value in the config, this will be used.
Clicking on Default will return to the partially checked state.
So far only the built-in effects support the partially checked state
and also the mutual exclusive groups do not support the partial checked
(main reason: RadioButton doesn't support it)
BUG: 336045
REVIEW: 118658
Spacing needs to be specified on the ListView instead in the delegate.
This fixes incorrect vertical alignment of the buttons in each row.
In addition a proper background is set on the ScrollView.
CCBUG: 334372
REVIEW: 118260
We check whether the effect is scripted and provides a config. If that
is the case our normal approach for getting the config plugin fails and
we use this case to try to load it again through the generic scripted
config plugin.
REVIEW: 116863
BUG: 332186
The model data contains a new role ConfigurableRole. This is used to
decide whether the configure button is available.
The value for the role is set by searching for a KPlugin which has the
effect's service name as X-KDE-ParentComponents. All available configs
are expected to be in kf5/kwin/effects/configs/ and are located through
the KPluginTrader thus binary effect configs need to provide json meta
data.
REVIEW: 116855
The new X-KWin-Exclusive-Category property is read from the service
and provided to QML through the ExclusiveRole. If an effect has such
a role the CheckBox is replaced by a RadioButton. The radio buttons of
an exclusive group take care that only one effect of the group can be
enabled. In addition the radio button acts like a check box. If one
clicks the checked radio button it gets unchecked.
At the same time this change removes the hard coded functionality for
the exclusive group of desktop switching effects. It's all handled
dynamically by creating the ExclusiveGroup when needed. For each
category there can be one ExclusiveGroup.
REVIEW: 116711
* use frame in the scroll area
* remove needless anchoring for an Effect
* use one RowLayout for one Effect row
* add a left and right padding using the normal spacing
* Use a ColumnLayout for the center element consisting of
** name
** description
** (info)
** (video)
* Video moved into an own component
* Animations removed
REVIEW: 116693
A video button is shown if the model provides an url for a video.
If the button is pressed the video element is added in a similar way
to the aboutInfo and starts the video directly. Once the playback
stopped a play again button is shown.
If one clicks the video button again, the video gets hidden.
Room for improvement:
* add a button to open in external player
* ensure video is centered correctly in the list view
We have an Apply and OK button in the KCModule, so we don't need one
in the view. A change signal is introduced and passed from the individual
items upwards, so that we can connect to it from the C++ side.
When we click into the CheckBox the following effects are being enabled:
*kwin4_effect_desktopgrid
*kwin4_effect_presntwindows
*kwin4_effect_dialogparent
If one of the above effects gets disabled, then the checkbox is unchecked.
Our CheckBox can detect if our effects are enable at the start time.
Only ONE of the following effects can be active at the same
time.
*kwin4_effect_slideEnabled
*kwin4_effect_cubeslideEnabled
*kwin4_effect_fadedesktopEnabled