KCM KWin VirtualDesktop add KCModuleData to show default indicator at module level
This commit is contained in:
parent
16ae008104
commit
2870fb7484
5 changed files with 118 additions and 25 deletions
|
@ -8,6 +8,7 @@ set(kcm_kwin_virtualdesktops_PART_SRCS
|
|||
animationsmodel.cpp
|
||||
desktopsmodel.cpp
|
||||
virtualdesktops.cpp
|
||||
virtualdesktopsdata.cpp
|
||||
)
|
||||
|
||||
kconfig_add_kcfg_files(kcm_kwin_virtualdesktops_PART_SRCS virtualdesktopssettings.kcfgc GENERATE_MOC)
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
#include "animationsmodel.h"
|
||||
#include "desktopsmodel.h"
|
||||
#include "virtualdesktopssettings.h"
|
||||
#include "virtualdesktopsdata.h"
|
||||
|
||||
#include <KAboutApplicationDialog>
|
||||
#include <KAboutData>
|
||||
|
@ -16,16 +17,17 @@
|
|||
#include <KLocalizedString>
|
||||
#include <KPluginFactory>
|
||||
|
||||
K_PLUGIN_FACTORY_WITH_JSON(VirtualDesktopsFactory, "kcm_kwin_virtualdesktops.json", registerPlugin<KWin::VirtualDesktops>();)
|
||||
K_PLUGIN_FACTORY_WITH_JSON(VirtualDesktopsFactory,
|
||||
"kcm_kwin_virtualdesktops.json",
|
||||
registerPlugin<KWin::VirtualDesktops>();
|
||||
registerPlugin<KWin::VirtualDesktopsData>();)
|
||||
|
||||
namespace KWin
|
||||
{
|
||||
|
||||
VirtualDesktops::VirtualDesktops(QObject *parent, const QVariantList &args)
|
||||
: KQuickAddons::ManagedConfigModule(parent, args)
|
||||
, m_settings(new VirtualDesktopsSettings(this))
|
||||
, m_desktopsModel(new KWin::DesktopsModel(this))
|
||||
, m_animationsModel(new AnimationsModel(this))
|
||||
, m_data(new VirtualDesktopsData(this))
|
||||
{
|
||||
KAboutData *about = new KAboutData(QStringLiteral("kcm_kwin_virtualdesktops"),
|
||||
i18n("Virtual Desktops"),
|
||||
|
@ -36,11 +38,11 @@ VirtualDesktops::VirtualDesktops(QObject *parent, const QVariantList &args)
|
|||
|
||||
setButtons(Apply | Default);
|
||||
|
||||
QObject::connect(m_desktopsModel, &KWin::DesktopsModel::userModifiedChanged,
|
||||
QObject::connect(m_data->desktopsModel(), &KWin::DesktopsModel::userModifiedChanged,
|
||||
this, &VirtualDesktops::settingsChanged);
|
||||
connect(m_animationsModel, &AnimationsModel::animationEnabledChanged,
|
||||
connect(m_data->animationsModel(), &AnimationsModel::animationEnabledChanged,
|
||||
this, &VirtualDesktops::settingsChanged);
|
||||
connect(m_animationsModel, &AnimationsModel::animationIndexChanged,
|
||||
connect(m_data->animationsModel(), &AnimationsModel::animationIndexChanged,
|
||||
this, &VirtualDesktops::settingsChanged);
|
||||
}
|
||||
|
||||
|
@ -50,33 +52,33 @@ VirtualDesktops::~VirtualDesktops()
|
|||
|
||||
QAbstractItemModel *VirtualDesktops::desktopsModel() const
|
||||
{
|
||||
return m_desktopsModel;
|
||||
return m_data->desktopsModel();
|
||||
}
|
||||
|
||||
QAbstractItemModel *VirtualDesktops::animationsModel() const
|
||||
{
|
||||
return m_animationsModel;
|
||||
return m_data->animationsModel();
|
||||
}
|
||||
|
||||
VirtualDesktopsSettings *VirtualDesktops::virtualDesktopsSettings() const
|
||||
{
|
||||
return m_settings;
|
||||
return m_data->settings();
|
||||
}
|
||||
|
||||
void VirtualDesktops::load()
|
||||
{
|
||||
ManagedConfigModule::load();
|
||||
|
||||
m_desktopsModel->load();
|
||||
m_animationsModel->load();
|
||||
m_data->desktopsModel()->load();
|
||||
m_data->animationsModel()->load();
|
||||
}
|
||||
|
||||
void VirtualDesktops::save()
|
||||
{
|
||||
ManagedConfigModule::save();
|
||||
|
||||
m_desktopsModel->syncWithServer();
|
||||
m_animationsModel->save();
|
||||
m_data->desktopsModel()->syncWithServer();
|
||||
m_data->animationsModel()->save();
|
||||
|
||||
QDBusMessage message = QDBusMessage::createSignal(QStringLiteral("/KWin"),
|
||||
QStringLiteral("org.kde.KWin"), QStringLiteral("reloadConfig"));
|
||||
|
@ -87,28 +89,28 @@ void VirtualDesktops::defaults()
|
|||
{
|
||||
ManagedConfigModule::defaults();
|
||||
|
||||
m_desktopsModel->defaults();
|
||||
m_animationsModel->defaults();
|
||||
m_data->desktopsModel()->defaults();
|
||||
m_data->animationsModel()->defaults();
|
||||
}
|
||||
|
||||
bool VirtualDesktops::isDefaults() const
|
||||
{
|
||||
return m_animationsModel->isDefaults() && m_desktopsModel->isDefaults();
|
||||
return m_data->isDefaults();
|
||||
}
|
||||
|
||||
void VirtualDesktops::configureAnimation()
|
||||
{
|
||||
const QModelIndex index = m_animationsModel->index(m_animationsModel->animationIndex(), 0);
|
||||
const QModelIndex index = m_data->animationsModel()->index(m_data->animationsModel()->animationIndex(), 0);
|
||||
if (!index.isValid()) {
|
||||
return;
|
||||
}
|
||||
|
||||
m_animationsModel->requestConfigure(index, nullptr);
|
||||
m_data->animationsModel()->requestConfigure(index, nullptr);
|
||||
}
|
||||
|
||||
void VirtualDesktops::showAboutAnimation()
|
||||
{
|
||||
const QModelIndex index = m_animationsModel->index(m_animationsModel->animationIndex(), 0);
|
||||
const QModelIndex index = m_data->animationsModel()->index(m_data->animationsModel()->animationIndex(), 0);
|
||||
if (!index.isValid()) {
|
||||
return;
|
||||
}
|
||||
|
@ -157,7 +159,7 @@ void VirtualDesktops::showAboutAnimation()
|
|||
|
||||
bool VirtualDesktops::isSaveNeeded() const
|
||||
{
|
||||
return m_animationsModel->needsSave() || m_desktopsModel->needsSave();
|
||||
return m_data->animationsModel()->needsSave() || m_data->desktopsModel()->needsSave();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@ class VirtualDesktopsSettings;
|
|||
|
||||
namespace KWin
|
||||
{
|
||||
|
||||
class VirtualDesktopsData;
|
||||
class AnimationsModel;
|
||||
class DesktopsModel;
|
||||
|
||||
|
@ -49,9 +49,7 @@ public Q_SLOTS:
|
|||
void showAboutAnimation();
|
||||
|
||||
private:
|
||||
VirtualDesktopsSettings *m_settings;
|
||||
DesktopsModel *m_desktopsModel;
|
||||
AnimationsModel *m_animationsModel;
|
||||
VirtualDesktopsData *m_data;
|
||||
};
|
||||
|
||||
}
|
||||
|
|
52
src/kcmkwin/kwindesktop/virtualdesktopsdata.cpp
Normal file
52
src/kcmkwin/kwindesktop/virtualdesktopsdata.cpp
Normal file
|
@ -0,0 +1,52 @@
|
|||
/*
|
||||
SPDX-FileCopyrightText: 2021 Cyril Rossi <cyril.rossi@enioka.com>
|
||||
|
||||
SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#include "virtualdesktopsdata.h"
|
||||
|
||||
#include "desktopsmodel.h"
|
||||
#include "animationsmodel.h"
|
||||
#include "virtualdesktopssettings.h"
|
||||
|
||||
namespace KWin
|
||||
{
|
||||
|
||||
VirtualDesktopsData::VirtualDesktopsData(QObject *parent, const QVariantList &args)
|
||||
: KCModuleData(parent, args)
|
||||
, m_settings(new VirtualDesktopsSettings(this))
|
||||
, m_desktopsModel(new DesktopsModel(this))
|
||||
, m_animationsModel(new AnimationsModel(this))
|
||||
{
|
||||
// Default behavior of KCModuleData is to emit loaded signal after being initialized.
|
||||
// To handle asynchronous load of EffectsModel we disable default behavior and
|
||||
// emit loaded signal when EffectsModel is actually loaded.
|
||||
disconnect(this, &KCModuleData::aboutToLoad, nullptr, nullptr);
|
||||
connect(m_animationsModel, &EffectsModel::loaded, this, &KCModuleData::loaded);
|
||||
|
||||
m_desktopsModel->load();
|
||||
m_animationsModel->load();
|
||||
}
|
||||
|
||||
bool VirtualDesktopsData::isDefaults() const
|
||||
{
|
||||
return m_animationsModel->isDefaults() && m_desktopsModel->isDefaults() && m_settings->isDefaults();
|
||||
}
|
||||
|
||||
VirtualDesktopsSettings *VirtualDesktopsData::settings() const
|
||||
{
|
||||
return m_settings;
|
||||
}
|
||||
|
||||
DesktopsModel *VirtualDesktopsData::desktopsModel() const
|
||||
{
|
||||
return m_desktopsModel;
|
||||
}
|
||||
|
||||
AnimationsModel *VirtualDesktopsData::animationsModel() const
|
||||
{
|
||||
return m_animationsModel;
|
||||
}
|
||||
|
||||
}
|
40
src/kcmkwin/kwindesktop/virtualdesktopsdata.h
Normal file
40
src/kcmkwin/kwindesktop/virtualdesktopsdata.h
Normal file
|
@ -0,0 +1,40 @@
|
|||
/*
|
||||
SPDX-FileCopyrightText: 2021 Cyril Rossi <cyril.rossi@enioka.com>
|
||||
|
||||
SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <QObject>
|
||||
|
||||
#include <KCModuleData>
|
||||
|
||||
class VirtualDesktopsSettings;
|
||||
|
||||
namespace KWin
|
||||
{
|
||||
|
||||
class AnimationsModel;
|
||||
class DesktopsModel;
|
||||
|
||||
class VirtualDesktopsData : public KCModuleData
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit VirtualDesktopsData(QObject *parent = nullptr, const QVariantList &args = QVariantList());
|
||||
|
||||
bool isDefaults() const override;
|
||||
|
||||
VirtualDesktopsSettings *settings() const;
|
||||
DesktopsModel *desktopsModel() const;
|
||||
AnimationsModel *animationsModel() const;
|
||||
|
||||
private:
|
||||
VirtualDesktopsSettings *m_settings;
|
||||
DesktopsModel *m_desktopsModel;
|
||||
AnimationsModel *m_animationsModel;
|
||||
};
|
||||
|
||||
}
|
Loading…
Reference in a new issue