2014-10-31 06:53:04 +00:00
|
|
|
/*
|
|
|
|
* Copyright 2014 Martin Gräßlin <mgraesslin@kde.org>
|
|
|
|
*
|
|
|
|
* This program is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU General Public License as
|
|
|
|
* published by the Free Software Foundation; either version 2 of
|
|
|
|
* the License or (at your option) version 3 or any later version
|
|
|
|
* accepted by the membership of KDE e.V. (or its successor approved
|
|
|
|
* by the membership of KDE e.V.), which shall act as a proxy
|
|
|
|
* defined in Section 14 of version 3 of the license.
|
|
|
|
*
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License
|
|
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
*/
|
2010-01-19 13:44:22 +00:00
|
|
|
#include "decorationmodel.h"
|
2014-10-31 06:53:04 +00:00
|
|
|
// KDecoration2
|
|
|
|
#include <KDecoration2/DecorationSettings>
|
|
|
|
#include <KDecoration2/Decoration>
|
2010-01-19 13:44:22 +00:00
|
|
|
// KDE
|
2012-07-27 08:10:28 +00:00
|
|
|
#include <KPluginInfo>
|
2014-10-31 06:53:04 +00:00
|
|
|
#include <KPluginLoader>
|
|
|
|
#include <KPluginFactory>
|
2014-03-12 13:53:43 +00:00
|
|
|
#include <KPluginTrader>
|
2014-10-31 06:53:04 +00:00
|
|
|
// Qt
|
|
|
|
#include <QDebug>
|
2014-03-12 13:53:43 +00:00
|
|
|
|
2014-10-31 06:53:04 +00:00
|
|
|
namespace KDecoration2
|
2010-01-19 13:44:22 +00:00
|
|
|
{
|
|
|
|
|
2014-10-31 06:53:04 +00:00
|
|
|
namespace Configuration
|
2011-01-30 14:34:42 +00:00
|
|
|
{
|
2014-10-31 06:53:04 +00:00
|
|
|
static const QString s_pluginName = QStringLiteral("org.kde.kdecoration2");
|
2010-01-19 13:44:22 +00:00
|
|
|
|
2014-10-31 06:53:04 +00:00
|
|
|
DecorationsModel::DecorationsModel(QObject *parent)
|
|
|
|
: QAbstractListModel(parent)
|
2011-01-30 14:34:42 +00:00
|
|
|
{
|
|
|
|
}
|
2010-01-19 13:44:22 +00:00
|
|
|
|
2014-10-31 06:53:04 +00:00
|
|
|
DecorationsModel::~DecorationsModel() = default;
|
2010-01-19 13:44:22 +00:00
|
|
|
|
2014-10-31 06:53:04 +00:00
|
|
|
int DecorationsModel::rowCount(const QModelIndex &parent) const
|
2011-01-30 14:34:42 +00:00
|
|
|
{
|
2014-10-31 06:53:04 +00:00
|
|
|
if (parent.isValid()) {
|
|
|
|
return 0;
|
2010-01-19 13:44:22 +00:00
|
|
|
}
|
2014-10-31 06:53:04 +00:00
|
|
|
return m_plugins.size();
|
2011-01-30 14:34:42 +00:00
|
|
|
}
|
2010-01-19 13:44:22 +00:00
|
|
|
|
2014-10-31 06:53:04 +00:00
|
|
|
QVariant DecorationsModel::data(const QModelIndex &index, int role) const
|
2011-01-30 14:34:42 +00:00
|
|
|
{
|
2014-10-31 06:53:04 +00:00
|
|
|
if (!index.isValid() || index.column() != 0 || index.row() < 0 || index.row() >= int(m_plugins.size())) {
|
|
|
|
return QVariant();
|
2013-10-01 10:28:34 +00:00
|
|
|
}
|
2014-10-31 06:53:04 +00:00
|
|
|
const Data &d = m_plugins.at(index.row());
|
|
|
|
switch (role) {
|
|
|
|
case Qt::DisplayRole:
|
|
|
|
return d.visibleName;
|
[kcmkwin/kwindecoration] Rewrite the KWin decorations settings as a ConfigModule
Summary:
* Wrote new KCM based on KQuickAddons::ConfigModule.
* Remade QMLs for Buttons and Themes tabs.
* Updated bridge model code for new plugin lookup API (fixes warnings).
* Fixed decoration shadow changing messing with the previews sizes.
* Fixed button drag and drop issues (see D18104).
* Fixed default settings button behavior and detection of settings changes.
* Updated Get Hot New Stuff.
* Removed apply button in previewbridge.cpp: After applying changes, a theme's KCModule is invalidated.
BUG: 389431
BUG: 350122
BUG: 346222
BUG: 342816
BUG: 397595
{F6574963} | {F6574962} | {F6574961} | {F6574960}
Test Plan:
* Verified saving and loading for every setting
* Checked shadows of Breeze and Oxygen
* Tested all possible drag&drop operations on both sides of the fake titlebar
* Changed color schemes (with `kcmshell5 colors`) while showing the Themes tab to see if all previews update correctly their palettes
* Tested on a fresh Neon-developer account, via kcmshell and systemsettings
Reviewers: #vdg, abetts, ngraham, #kwin, davidedmundson
Reviewed By: #vdg, #kwin, davidedmundson
Subscribers: zzag, GB_2, ngraham, broulik, kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D18458
2019-02-07 15:32:05 +00:00
|
|
|
case PluginNameRole:
|
2014-10-31 06:53:04 +00:00
|
|
|
return d.pluginName;
|
[kcmkwin/kwindecoration] Rewrite the KWin decorations settings as a ConfigModule
Summary:
* Wrote new KCM based on KQuickAddons::ConfigModule.
* Remade QMLs for Buttons and Themes tabs.
* Updated bridge model code for new plugin lookup API (fixes warnings).
* Fixed decoration shadow changing messing with the previews sizes.
* Fixed button drag and drop issues (see D18104).
* Fixed default settings button behavior and detection of settings changes.
* Updated Get Hot New Stuff.
* Removed apply button in previewbridge.cpp: After applying changes, a theme's KCModule is invalidated.
BUG: 389431
BUG: 350122
BUG: 346222
BUG: 342816
BUG: 397595
{F6574963} | {F6574962} | {F6574961} | {F6574960}
Test Plan:
* Verified saving and loading for every setting
* Checked shadows of Breeze and Oxygen
* Tested all possible drag&drop operations on both sides of the fake titlebar
* Changed color schemes (with `kcmshell5 colors`) while showing the Themes tab to see if all previews update correctly their palettes
* Tested on a fresh Neon-developer account, via kcmshell and systemsettings
Reviewers: #vdg, abetts, ngraham, #kwin, davidedmundson
Reviewed By: #vdg, #kwin, davidedmundson
Subscribers: zzag, GB_2, ngraham, broulik, kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D18458
2019-02-07 15:32:05 +00:00
|
|
|
case ThemeNameRole:
|
2014-10-31 06:53:04 +00:00
|
|
|
return d.themeName;
|
[kcmkwin/kwindecoration] Rewrite the KWin decorations settings as a ConfigModule
Summary:
* Wrote new KCM based on KQuickAddons::ConfigModule.
* Remade QMLs for Buttons and Themes tabs.
* Updated bridge model code for new plugin lookup API (fixes warnings).
* Fixed decoration shadow changing messing with the previews sizes.
* Fixed button drag and drop issues (see D18104).
* Fixed default settings button behavior and detection of settings changes.
* Updated Get Hot New Stuff.
* Removed apply button in previewbridge.cpp: After applying changes, a theme's KCModule is invalidated.
BUG: 389431
BUG: 350122
BUG: 346222
BUG: 342816
BUG: 397595
{F6574963} | {F6574962} | {F6574961} | {F6574960}
Test Plan:
* Verified saving and loading for every setting
* Checked shadows of Breeze and Oxygen
* Tested all possible drag&drop operations on both sides of the fake titlebar
* Changed color schemes (with `kcmshell5 colors`) while showing the Themes tab to see if all previews update correctly their palettes
* Tested on a fresh Neon-developer account, via kcmshell and systemsettings
Reviewers: #vdg, abetts, ngraham, #kwin, davidedmundson
Reviewed By: #vdg, #kwin, davidedmundson
Subscribers: zzag, GB_2, ngraham, broulik, kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D18458
2019-02-07 15:32:05 +00:00
|
|
|
case ConfigurationRole:
|
2014-12-05 12:44:16 +00:00
|
|
|
return d.configuration;
|
[decorations] Let KDecoration plugins recommend a border size per default
Summary:
This is an alternative solution to T8707 and in comparision to D13276 a less
drastic change to KWin's default behavior.
Instead of changing the border size default for all KDecoration plugins by
switching the default from border size Normal to None introduce new
functionality, which allows a KDecoration plugin to recommend a border size in
its metadata. By default KWin listens for these recommendations and sets the
border size accordingly.
If there is no metadata recommending a border size, KWin falls back to the
current setting of Normal sized borders.
A user is able to override the recommendations from the KCM, which has been
extended accordingly.
Test Plan: Manually with adjusted metadata of Breeze.
Reviewers: #kwin, #plasma, #vdg, ngraham
Reviewed By: #vdg, ngraham
Subscribers: hpereiradacosta, filipf, anemeth, davidedmundson, abetts, graesslin, ngraham, zzag, kwin
Tags: #kwin
Maniphest Tasks: T8707
Differential Revision: https://phabricator.kde.org/D13284
2019-05-04 14:48:44 +00:00
|
|
|
case RecommendedBorderSizeRole:
|
|
|
|
return Utils::borderSizeToString(d.recommendedBorderSize);
|
2013-08-03 20:34:58 +00:00
|
|
|
}
|
2014-10-31 06:53:04 +00:00
|
|
|
return QVariant();
|
2011-01-30 14:34:42 +00:00
|
|
|
}
|
2010-01-19 13:44:22 +00:00
|
|
|
|
2014-10-31 06:53:04 +00:00
|
|
|
QHash< int, QByteArray > DecorationsModel::roleNames() const
|
2011-01-30 14:34:42 +00:00
|
|
|
{
|
2014-10-31 06:53:04 +00:00
|
|
|
QHash<int, QByteArray> roles({
|
|
|
|
{Qt::DisplayRole, QByteArrayLiteral("display")},
|
[kcmkwin/kwindecoration] Rewrite the KWin decorations settings as a ConfigModule
Summary:
* Wrote new KCM based on KQuickAddons::ConfigModule.
* Remade QMLs for Buttons and Themes tabs.
* Updated bridge model code for new plugin lookup API (fixes warnings).
* Fixed decoration shadow changing messing with the previews sizes.
* Fixed button drag and drop issues (see D18104).
* Fixed default settings button behavior and detection of settings changes.
* Updated Get Hot New Stuff.
* Removed apply button in previewbridge.cpp: After applying changes, a theme's KCModule is invalidated.
BUG: 389431
BUG: 350122
BUG: 346222
BUG: 342816
BUG: 397595
{F6574963} | {F6574962} | {F6574961} | {F6574960}
Test Plan:
* Verified saving and loading for every setting
* Checked shadows of Breeze and Oxygen
* Tested all possible drag&drop operations on both sides of the fake titlebar
* Changed color schemes (with `kcmshell5 colors`) while showing the Themes tab to see if all previews update correctly their palettes
* Tested on a fresh Neon-developer account, via kcmshell and systemsettings
Reviewers: #vdg, abetts, ngraham, #kwin, davidedmundson
Reviewed By: #vdg, #kwin, davidedmundson
Subscribers: zzag, GB_2, ngraham, broulik, kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D18458
2019-02-07 15:32:05 +00:00
|
|
|
{PluginNameRole, QByteArrayLiteral("plugin")},
|
|
|
|
{ThemeNameRole, QByteArrayLiteral("theme")},
|
[decorations] Let KDecoration plugins recommend a border size per default
Summary:
This is an alternative solution to T8707 and in comparision to D13276 a less
drastic change to KWin's default behavior.
Instead of changing the border size default for all KDecoration plugins by
switching the default from border size Normal to None introduce new
functionality, which allows a KDecoration plugin to recommend a border size in
its metadata. By default KWin listens for these recommendations and sets the
border size accordingly.
If there is no metadata recommending a border size, KWin falls back to the
current setting of Normal sized borders.
A user is able to override the recommendations from the KCM, which has been
extended accordingly.
Test Plan: Manually with adjusted metadata of Breeze.
Reviewers: #kwin, #plasma, #vdg, ngraham
Reviewed By: #vdg, ngraham
Subscribers: hpereiradacosta, filipf, anemeth, davidedmundson, abetts, graesslin, ngraham, zzag, kwin
Tags: #kwin
Maniphest Tasks: T8707
Differential Revision: https://phabricator.kde.org/D13284
2019-05-04 14:48:44 +00:00
|
|
|
{ConfigurationRole, QByteArrayLiteral("configureable")},
|
|
|
|
{RecommendedBorderSizeRole, QByteArrayLiteral("recommendedbordersize")}
|
2014-10-31 06:53:04 +00:00
|
|
|
});
|
|
|
|
return roles;
|
2011-01-30 14:34:42 +00:00
|
|
|
}
|
|
|
|
|
2014-10-31 06:53:04 +00:00
|
|
|
static bool isThemeEngine(const QVariantMap &decoSettingsMap)
|
2011-01-30 14:34:42 +00:00
|
|
|
{
|
2014-10-31 06:53:04 +00:00
|
|
|
auto it = decoSettingsMap.find(QStringLiteral("themes"));
|
|
|
|
if (it == decoSettingsMap.end()) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
return it.value().toBool();
|
2011-01-30 14:34:42 +00:00
|
|
|
}
|
2010-01-19 13:44:22 +00:00
|
|
|
|
2014-12-05 12:44:16 +00:00
|
|
|
static bool isConfigureable(const QVariantMap &decoSettingsMap)
|
|
|
|
{
|
|
|
|
auto it = decoSettingsMap.find(QStringLiteral("kcmodule"));
|
|
|
|
if (it == decoSettingsMap.end()) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
return it.value().toBool();
|
|
|
|
}
|
|
|
|
|
[decorations] Let KDecoration plugins recommend a border size per default
Summary:
This is an alternative solution to T8707 and in comparision to D13276 a less
drastic change to KWin's default behavior.
Instead of changing the border size default for all KDecoration plugins by
switching the default from border size Normal to None introduce new
functionality, which allows a KDecoration plugin to recommend a border size in
its metadata. By default KWin listens for these recommendations and sets the
border size accordingly.
If there is no metadata recommending a border size, KWin falls back to the
current setting of Normal sized borders.
A user is able to override the recommendations from the KCM, which has been
extended accordingly.
Test Plan: Manually with adjusted metadata of Breeze.
Reviewers: #kwin, #plasma, #vdg, ngraham
Reviewed By: #vdg, ngraham
Subscribers: hpereiradacosta, filipf, anemeth, davidedmundson, abetts, graesslin, ngraham, zzag, kwin
Tags: #kwin
Maniphest Tasks: T8707
Differential Revision: https://phabricator.kde.org/D13284
2019-05-04 14:48:44 +00:00
|
|
|
static KDecoration2::BorderSize recommendedBorderSize(const QVariantMap &decoSettingsMap)
|
|
|
|
{
|
|
|
|
auto it = decoSettingsMap.find(QStringLiteral("recommendedBorderSize"));
|
|
|
|
if (it == decoSettingsMap.end()) {
|
|
|
|
return KDecoration2::BorderSize::Normal;
|
|
|
|
}
|
|
|
|
return Utils::stringToBorderSize(it.value().toString());
|
|
|
|
}
|
|
|
|
|
2014-10-31 06:53:04 +00:00
|
|
|
static QString themeListKeyword(const QVariantMap &decoSettingsMap)
|
2011-01-30 14:34:42 +00:00
|
|
|
{
|
2014-10-31 06:53:04 +00:00
|
|
|
auto it = decoSettingsMap.find(QStringLiteral("themeListKeyword"));
|
|
|
|
if (it == decoSettingsMap.end()) {
|
|
|
|
return QString();
|
2011-01-30 14:34:42 +00:00
|
|
|
}
|
2014-10-31 06:53:04 +00:00
|
|
|
return it.value().toString();
|
2011-01-30 14:34:42 +00:00
|
|
|
}
|
2010-01-19 13:44:22 +00:00
|
|
|
|
2014-12-05 09:15:41 +00:00
|
|
|
static QString findKNewStuff(const QVariantMap &decoSettingsMap)
|
|
|
|
{
|
|
|
|
auto it = decoSettingsMap.find(QStringLiteral("KNewStuff"));
|
|
|
|
if (it == decoSettingsMap.end()) {
|
|
|
|
return QString();
|
|
|
|
}
|
|
|
|
return it.value().toString();
|
|
|
|
}
|
|
|
|
|
2014-10-31 06:53:04 +00:00
|
|
|
void DecorationsModel::init()
|
2011-01-30 14:34:42 +00:00
|
|
|
{
|
2014-10-31 06:53:04 +00:00
|
|
|
beginResetModel();
|
2014-12-05 09:15:41 +00:00
|
|
|
m_plugins.clear();
|
2014-10-31 06:53:04 +00:00
|
|
|
const auto plugins = KPluginTrader::self()->query(s_pluginName, s_pluginName);
|
|
|
|
for (const auto &info : plugins) {
|
|
|
|
KPluginLoader loader(info.libraryPath());
|
|
|
|
KPluginFactory *factory = loader.factory();
|
|
|
|
if (!factory) {
|
|
|
|
continue;
|
2010-04-21 18:18:45 +00:00
|
|
|
}
|
2014-10-31 06:53:04 +00:00
|
|
|
auto metadata = loader.metaData().value(QStringLiteral("MetaData")).toObject().value(s_pluginName);
|
[decorations] Let KDecoration plugins recommend a border size per default
Summary:
This is an alternative solution to T8707 and in comparision to D13276 a less
drastic change to KWin's default behavior.
Instead of changing the border size default for all KDecoration plugins by
switching the default from border size Normal to None introduce new
functionality, which allows a KDecoration plugin to recommend a border size in
its metadata. By default KWin listens for these recommendations and sets the
border size accordingly.
If there is no metadata recommending a border size, KWin falls back to the
current setting of Normal sized borders.
A user is able to override the recommendations from the KCM, which has been
extended accordingly.
Test Plan: Manually with adjusted metadata of Breeze.
Reviewers: #kwin, #plasma, #vdg, ngraham
Reviewed By: #vdg, ngraham
Subscribers: hpereiradacosta, filipf, anemeth, davidedmundson, abetts, graesslin, ngraham, zzag, kwin
Tags: #kwin
Maniphest Tasks: T8707
Differential Revision: https://phabricator.kde.org/D13284
2019-05-04 14:48:44 +00:00
|
|
|
Data data;
|
2014-10-31 06:53:04 +00:00
|
|
|
if (!metadata.isUndefined()) {
|
|
|
|
const auto decoSettingsMap = metadata.toObject().toVariantMap();
|
2014-12-05 09:15:41 +00:00
|
|
|
const QString &kns = findKNewStuff(decoSettingsMap);
|
[kcmkwin/kwindecoration] Rewrite the KWin decorations settings as a ConfigModule
Summary:
* Wrote new KCM based on KQuickAddons::ConfigModule.
* Remade QMLs for Buttons and Themes tabs.
* Updated bridge model code for new plugin lookup API (fixes warnings).
* Fixed decoration shadow changing messing with the previews sizes.
* Fixed button drag and drop issues (see D18104).
* Fixed default settings button behavior and detection of settings changes.
* Updated Get Hot New Stuff.
* Removed apply button in previewbridge.cpp: After applying changes, a theme's KCModule is invalidated.
BUG: 389431
BUG: 350122
BUG: 346222
BUG: 342816
BUG: 397595
{F6574963} | {F6574962} | {F6574961} | {F6574960}
Test Plan:
* Verified saving and loading for every setting
* Checked shadows of Breeze and Oxygen
* Tested all possible drag&drop operations on both sides of the fake titlebar
* Changed color schemes (with `kcmshell5 colors`) while showing the Themes tab to see if all previews update correctly their palettes
* Tested on a fresh Neon-developer account, via kcmshell and systemsettings
Reviewers: #vdg, abetts, ngraham, #kwin, davidedmundson
Reviewed By: #vdg, #kwin, davidedmundson
Subscribers: zzag, GB_2, ngraham, broulik, kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D18458
2019-02-07 15:32:05 +00:00
|
|
|
if (!kns.isEmpty() && !m_knsProviders.contains(kns)) {
|
|
|
|
m_knsProviders.append(kns);
|
2014-12-05 09:15:41 +00:00
|
|
|
}
|
2014-10-31 06:53:04 +00:00
|
|
|
if (isThemeEngine(decoSettingsMap)) {
|
|
|
|
const QString keyword = themeListKeyword(decoSettingsMap);
|
|
|
|
if (keyword.isNull()) {
|
|
|
|
// We cannot list the themes
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
QScopedPointer<QObject> themeFinder(factory->create<QObject>(keyword));
|
|
|
|
if (themeFinder.isNull()) {
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
QVariant themes = themeFinder->property("themes");
|
|
|
|
if (!themes.isValid()) {
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
const auto themesMap = themes.toMap();
|
|
|
|
for (auto it = themesMap.begin(); it != themesMap.end(); ++it) {
|
|
|
|
Data d;
|
|
|
|
d.pluginName = info.pluginName();
|
|
|
|
d.themeName = it.value().toString();
|
|
|
|
d.visibleName = it.key();
|
2014-12-05 12:44:16 +00:00
|
|
|
QMetaObject::invokeMethod(themeFinder.data(), "hasConfiguration",
|
|
|
|
Q_RETURN_ARG(bool, d.configuration),
|
|
|
|
Q_ARG(QString, d.themeName));
|
2014-10-31 06:53:04 +00:00
|
|
|
m_plugins.emplace_back(std::move(d));
|
|
|
|
}
|
|
|
|
|
|
|
|
// it's a theme engine, we don't want to show this entry
|
|
|
|
continue;
|
|
|
|
}
|
[decorations] Let KDecoration plugins recommend a border size per default
Summary:
This is an alternative solution to T8707 and in comparision to D13276 a less
drastic change to KWin's default behavior.
Instead of changing the border size default for all KDecoration plugins by
switching the default from border size Normal to None introduce new
functionality, which allows a KDecoration plugin to recommend a border size in
its metadata. By default KWin listens for these recommendations and sets the
border size accordingly.
If there is no metadata recommending a border size, KWin falls back to the
current setting of Normal sized borders.
A user is able to override the recommendations from the KCM, which has been
extended accordingly.
Test Plan: Manually with adjusted metadata of Breeze.
Reviewers: #kwin, #plasma, #vdg, ngraham
Reviewed By: #vdg, ngraham
Subscribers: hpereiradacosta, filipf, anemeth, davidedmundson, abetts, graesslin, ngraham, zzag, kwin
Tags: #kwin
Maniphest Tasks: T8707
Differential Revision: https://phabricator.kde.org/D13284
2019-05-04 14:48:44 +00:00
|
|
|
data.configuration = isConfigureable(decoSettingsMap);
|
|
|
|
data.recommendedBorderSize = recommendedBorderSize(decoSettingsMap);
|
2012-08-24 13:16:30 +00:00
|
|
|
}
|
2014-10-31 06:53:04 +00:00
|
|
|
data.pluginName = info.pluginName();
|
|
|
|
data.visibleName = info.name().isEmpty() ? info.pluginName() : info.name();
|
[kcmkwin/kwindecoration] Rewrite the KWin decorations settings as a ConfigModule
Summary:
* Wrote new KCM based on KQuickAddons::ConfigModule.
* Remade QMLs for Buttons and Themes tabs.
* Updated bridge model code for new plugin lookup API (fixes warnings).
* Fixed decoration shadow changing messing with the previews sizes.
* Fixed button drag and drop issues (see D18104).
* Fixed default settings button behavior and detection of settings changes.
* Updated Get Hot New Stuff.
* Removed apply button in previewbridge.cpp: After applying changes, a theme's KCModule is invalidated.
BUG: 389431
BUG: 350122
BUG: 346222
BUG: 342816
BUG: 397595
{F6574963} | {F6574962} | {F6574961} | {F6574960}
Test Plan:
* Verified saving and loading for every setting
* Checked shadows of Breeze and Oxygen
* Tested all possible drag&drop operations on both sides of the fake titlebar
* Changed color schemes (with `kcmshell5 colors`) while showing the Themes tab to see if all previews update correctly their palettes
* Tested on a fresh Neon-developer account, via kcmshell and systemsettings
Reviewers: #vdg, abetts, ngraham, #kwin, davidedmundson
Reviewed By: #vdg, #kwin, davidedmundson
Subscribers: zzag, GB_2, ngraham, broulik, kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D18458
2019-02-07 15:32:05 +00:00
|
|
|
data.themeName = data.visibleName;
|
2010-01-19 13:44:22 +00:00
|
|
|
|
2014-10-31 06:53:04 +00:00
|
|
|
m_plugins.emplace_back(std::move(data));
|
2011-01-30 14:34:42 +00:00
|
|
|
}
|
2014-10-31 06:53:04 +00:00
|
|
|
endResetModel();
|
2011-01-30 14:34:42 +00:00
|
|
|
}
|
|
|
|
|
2014-10-31 06:53:04 +00:00
|
|
|
QModelIndex DecorationsModel::findDecoration(const QString &pluginName, const QString &themeName) const
|
2011-01-30 14:34:42 +00:00
|
|
|
{
|
2014-10-31 06:53:04 +00:00
|
|
|
auto it = std::find_if(m_plugins.cbegin(), m_plugins.cend(),
|
|
|
|
[pluginName, themeName](const Data &d) {
|
|
|
|
return d.pluginName == pluginName && d.themeName == themeName;
|
|
|
|
}
|
|
|
|
);
|
|
|
|
if (it == m_plugins.cend()) {
|
|
|
|
return QModelIndex();
|
2010-01-19 13:44:22 +00:00
|
|
|
}
|
2014-10-31 06:53:04 +00:00
|
|
|
const auto distance = std::distance(m_plugins.cbegin(), it);
|
|
|
|
return createIndex(distance, 0);
|
2011-01-30 14:34:42 +00:00
|
|
|
}
|
2010-01-19 13:44:22 +00:00
|
|
|
|
2012-07-29 09:20:48 +00:00
|
|
|
}
|
2012-08-25 07:54:20 +00:00
|
|
|
}
|