kwin/kcmkwin/kwincompositing/main.cpp

115 lines
4 KiB
C++
Raw Normal View History

2013-06-25 14:07:48 +00:00
/**************************************************************************
* KWin - the KDE window manager *
* This file is part of the KDE project. *
* *
* Copyright (C) 2013 Antonis Tsiapaliokas <kok3rs@gmail.com> *
* Copyright (C) 2013 Martin Gräßlin <mgraesslin@kde.org> *
2013-06-25 14:07:48 +00:00
* *
* 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) any later version. *
* *
* 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/>. *
**************************************************************************/
#include "model.h"
#include <QApplication>
#include <QLayout>
2013-06-25 14:07:48 +00:00
#include <kcmodule.h>
#include <kservice.h>
2013-09-10 08:41:42 +00:00
#include <kdeclarative/kdeclarative.h>
class KWinCompositingKCM : public KCModule
2013-06-25 14:07:48 +00:00
{
Q_OBJECT
public:
virtual ~KWinCompositingKCM();
public Q_SLOTS:
void save() override;
2013-12-02 14:40:16 +00:00
void load() override;
2013-12-02 14:59:31 +00:00
void defaults() override;
protected:
explicit KWinCompositingKCM(QWidget* parent, const QVariantList& args,
KWin::Compositing::EffectView::ViewType viewType);
private:
QScopedPointer<KWin::Compositing::EffectView> m_view;
};
2013-06-25 14:07:48 +00:00
class KWinDesktopEffects : public KWinCompositingKCM
{
Q_OBJECT
public:
explicit KWinDesktopEffects(QWidget* parent = 0, const QVariantList& args = QVariantList())
: KWinCompositingKCM(parent, args, KWin::Compositing::EffectView::DesktopEffectsView) {}
};
class KWinCompositingSettings : public KWinCompositingKCM
{
Q_OBJECT
public:
explicit KWinCompositingSettings(QWidget* parent = 0, const QVariantList& args = QVariantList())
: KWinCompositingKCM(parent, args, KWin::Compositing::EffectView::CompositingSettingsView) {}
};
KWinCompositingKCM::KWinCompositingKCM(QWidget* parent, const QVariantList& args, KWin::Compositing::EffectView::ViewType viewType)
: KCModule(parent, args)
, m_view(new KWin::Compositing::EffectView(viewType))
{
2014-02-03 10:52:55 +00:00
KDeclarative::KDeclarative kdeclarative;
kdeclarative.setDeclarativeEngine(m_view->engine());
2013-09-10 08:41:42 +00:00
kdeclarative.setupBindings();
QVBoxLayout *vl = new QVBoxLayout(this);
2013-06-25 14:07:48 +00:00
QWidget *w = QWidget::createWindowContainer(m_view.data(), this);
connect(m_view.data(), &QWindow::minimumWidthChanged, w, &QWidget::setMinimumWidth);
connect(m_view.data(), &QWindow::minimumHeightChanged, w, &QWidget::setMinimumHeight);
w->setMinimumSize(m_view->initialSize());
vl->addWidget(w);
setLayout(vl);
connect(m_view.data(), &KWin::Compositing::EffectView::changed, [this]{
emit changed(true);
});
2013-06-25 14:07:48 +00:00
}
KWinCompositingKCM::~KWinCompositingKCM()
{
}
void KWinCompositingKCM::save()
{
m_view->save();
KCModule::save();
}
2013-12-02 14:40:16 +00:00
void KWinCompositingKCM::load()
{
m_view->load();
KCModule::load();
}
2013-12-02 14:59:31 +00:00
void KWinCompositingKCM::defaults()
{
m_view->defaults();
KCModule::defaults();
}
K_PLUGIN_FACTORY(KWinCompositingConfigFactory,
registerPlugin<KWinDesktopEffects>("effects");
registerPlugin<KWinCompositingSettings>("compositing");
)
#include "main.moc"