diff --git a/configview.cpp b/configview.cpp deleted file mode 100644 index fea5a7350..000000000 --- a/configview.cpp +++ /dev/null @@ -1,340 +0,0 @@ -/* - * Copyright 2013 Marco Martin - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Library General Public License as - * published by the Free Software Foundation; either version 2, 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 Library General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#include "configview.h" -#include "Plasma/Applet" -#include "Plasma/Containment" -//#include "plasmoid/wallpaperinterface.h" -#include "kdeclarative/configpropertymap.h" - -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include - -///////////////////////ConfigCategory - -ConfigCategory::ConfigCategory(QObject *parent) - : QObject(parent) -{ -} - -ConfigCategory::~ConfigCategory() -{} - -QString ConfigCategory::name() const -{ - return m_name; -} - -void ConfigCategory::setName(const QString &name) -{ - if (m_name == name) { - return; - } - - m_name = name; - emit nameChanged(); -} - - -QString ConfigCategory::icon() const -{ - return m_icon; -} - -void ConfigCategory::setIcon(const QString &icon) -{ - if (m_icon == icon) { - return; - } - - m_icon = icon; - emit iconChanged(); -} - - -QString ConfigCategory::source() const -{ - return m_source; -} - -void ConfigCategory::setSource(const QString &source) -{ - if (m_source == source) { - return; - } - - m_source = source; - emit sourceChanged(); -} - -QString ConfigCategory::pluginName() const -{ - return m_pluginName; -} - -void ConfigCategory::setPluginName(const QString &name) -{ - if (m_pluginName == name) { - return; - } - - m_pluginName = name; - emit pluginNameChanged(); -} - - - -//////////////////////////////ConfigModel -ConfigModel::ConfigModel(QObject *parent) - : QAbstractListModel(parent) -{ - QHash roleNames; - roleNames[NameRole] = "name"; - roleNames[IconRole] = "icon"; - roleNames[SourceRole] = "source"; - roleNames[PluginNameRole] = "pluginName"; - - setRoleNames(roleNames); - qDebug() << " XXX loaded QALM"; -} - -ConfigModel::~ConfigModel() -{} - -int ConfigModel::rowCount(const QModelIndex &index) const -{ - if (index.column() > 0) { - return 0; - } - return m_categories.count(); -} - -QVariant ConfigModel::data(const QModelIndex& index, int role) const -{ - if (index.row() < 0 || index.row() >= m_categories.count()) { - return QVariant(); - } - switch (role) { - case NameRole: - return m_categories.at(index.row())->name(); - case IconRole: - return m_categories.at(index.row())->icon(); - case SourceRole: - if (m_appletInterface) { - return QUrl::fromLocalFile(m_appletInterface.data()->package().filePath("ui", m_categories.at(index.row())->source())); - } else { - return m_categories.at(index.row())->source(); - } - case PluginNameRole: - return m_categories.at(index.row())->pluginName(); - default: - return QVariant(); - } -} - -QVariant ConfigModel::get(int row) const -{ - QVariantMap value; - if (row < 0 || row >= m_categories.count()) { - return value; - } - - value["name"] = m_categories.at(row)->name(); - value["icon"] = m_categories.at(row)->icon(); - value["pluginName"] = m_categories.at(row)->pluginName(); - if (m_appletInterface) { - value["source"] = QUrl::fromLocalFile(m_appletInterface.data()->package().filePath("ui", m_categories.at(row)->source())); - } else { - value["source"] = m_categories.at(row)->source(); - } - return value; -} - -void ConfigModel::appendCategory(ConfigCategory *c) -{ - beginInsertRows(QModelIndex(), m_categories.size(), m_categories.size()); - m_categories.append(c); - endInsertRows(); - emit countChanged(); -} - -void ConfigModel::clear() -{ - beginResetModel(); - while (!m_categories.isEmpty()) { - m_categories.first()->setParent(0); - m_categories.pop_front(); - } - endResetModel(); - emit countChanged(); -} - -void ConfigModel::setApplet(Plasma::Applet *interface) -{ - m_appletInterface = interface; -} - -Plasma::Applet *ConfigModel::applet() const -{ - return m_appletInterface.data(); -} - -QQmlListProperty ConfigModel::categories() -{ - return QQmlListProperty(this, 0, ConfigModel::categories_append, - ConfigModel::categories_count, - ConfigModel::categories_at, - ConfigModel::categories_clear); - -} - -ConfigCategory *ConfigModel::categories_at(QQmlListProperty *prop, int index) -{ - ConfigModel *model = qobject_cast(prop->object); - if (!model || index >= model->m_categories.count() || index < 0) - return 0; - else - return model->m_categories.at(index); -} - -void ConfigModel::categories_append(QQmlListProperty *prop, ConfigCategory *o) -{ - ConfigModel *model = qobject_cast(prop->object); - if (!o || !model) { - return; - } - - if (o->parent() == prop->object) { - o->setParent(0); - } - - o->setParent(prop->object); - model->appendCategory(o); -} - -int ConfigModel::categories_count(QQmlListProperty *prop) -{ - ConfigModel *model = qobject_cast(prop->object); - if (model) { - return model->m_categories.count(); - } else { - return 0; - } -} - -void ConfigModel::categories_clear(QQmlListProperty *prop) -{ - ConfigModel *model = qobject_cast(prop->object); - if (!model) { - return; - } - - model->clear(); -} - - - -//////////////////////////////ConfigView -ConfigView::ConfigView(Plasma::Applet *applet, QWindow *parent) - : QQuickView(parent), - m_applet(applet) -{ - applet->setUserConfiguring(true); - KDeclarative kdeclarative; - kdeclarative.setDeclarativeEngine(engine()); - kdeclarative.setupBindings(); - qmlRegisterType("org.kde.plasma.configuration", 2, 0, "ConfigModel"); - qmlRegisterType("org.kde.plasma.configuration", 2, 0, "ConfigCategory"); - - //FIXME: problem on nvidia, all windows should be transparent or won't show - setColor(Qt::transparent); - setTitle(i18n("%1 Settings", m_applet->title())); - - - if (!m_applet->containment()->corona()->package().isValid()) { - qWarning() << "Invalid home screen package"; - } - - setResizeMode(QQuickView::SizeViewToRootObject); - - - //config model local of the applet - QQmlComponent *component = new QQmlComponent(engine(), QUrl::fromLocalFile(m_applet->package().filePath("configmodel")), this); - QObject *object = component->beginCreate(engine()->rootContext()); - m_configModel = qobject_cast(object); - if (m_configModel) { - m_configModel->setApplet(m_applet); - } else { - delete object; - } - - Plasma::Containment *cont = qobject_cast(m_applet); - - engine()->rootContext()->setContextProperty("plasmoid", applet->property("graphicObject").value()); - engine()->rootContext()->setContextProperty("configDialog", this); - component->completeCreate(); - delete component; -} - -ConfigView::~ConfigView() -{ - m_applet->setUserConfiguring(false); -} - -void ConfigView::init() -{ - setSource(QUrl::fromLocalFile(m_applet->containment()->corona()->package().filePath("appletconfigurationui"))); -} - -ConfigModel *ConfigView::configModel() const -{ - return m_configModel; -} - - -//To emulate Qt::WA_DeleteOnClose that QWindow doesn't have -void ConfigView::hideEvent(QHideEvent *ev) -{ - QQuickWindow::hideEvent(ev); - deleteLater(); -} - -void ConfigView::resizeEvent(QResizeEvent *re) -{ - if (!rootObject()) { - return; - } - rootObject()->setWidth(re->size().width()); - rootObject()->setHeight(re->size().height()); - QQuickWindow::resizeEvent(re); -} - - -#include "moc_configview.cpp" diff --git a/configview.h b/configview.h deleted file mode 100644 index 2e8f68ff8..000000000 --- a/configview.h +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Copyright 2013 Marco Martin - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Library General Public License as - * published by the Free Software Foundation; either version 2, 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 Library General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#ifndef CONFIGUILOADER_H -#define CONFIGUILOADER_H - - -#include -#include -#include -#include - -namespace Plasma { - class Applet; -} - -class ConfigPropertyMap; - - -class ConfigCategory : public QObject -{ - Q_OBJECT - Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) - Q_PROPERTY(QString icon READ icon WRITE setIcon NOTIFY iconChanged) - Q_PROPERTY(QString source READ source WRITE setSource NOTIFY sourceChanged) - Q_PROPERTY(QString pluginName READ pluginName WRITE setPluginName NOTIFY pluginNameChanged) - -public: - ConfigCategory(QObject *parent = 0); - ~ConfigCategory(); - - QString name() const; - void setName(const QString &name); - - QString icon() const; - void setIcon(const QString &icon); - - QString source() const; - void setSource(const QString &source); - - QString pluginName() const; - void setPluginName(const QString &pluginName); - -Q_SIGNALS: - void nameChanged(); - void iconChanged(); - void sourceChanged(); - void pluginNameChanged(); - -private: - QString m_name; - QString m_icon; - QString m_source; - QString m_pluginName; -}; - -class ConfigModel : public QAbstractListModel -{ - Q_OBJECT - Q_PROPERTY(QQmlListProperty categories READ categories CONSTANT) - Q_CLASSINFO("DefaultProperty", "categories") - Q_PROPERTY(int count READ count NOTIFY countChanged) - -public: - enum Roles { - NameRole = Qt::UserRole+1, - IconRole, - SourceRole, - PluginNameRole - }; - ConfigModel(QObject *parent = 0); - ~ConfigModel(); - - void appendCategory(ConfigCategory *c); - void clear(); - - void setApplet(Plasma::Applet *interface); - Plasma::Applet *applet() const; - - int count() {return rowCount();} - virtual int rowCount(const QModelIndex &index = QModelIndex()) const; - virtual QVariant data(const QModelIndex&, int) const; - Q_INVOKABLE QVariant get(int row) const; - - QQmlListProperty categories(); - - static ConfigCategory *categories_at(QQmlListProperty *prop, int index); - static void categories_append(QQmlListProperty *prop, ConfigCategory *o); - static int categories_count(QQmlListProperty *prop); - static void categories_clear(QQmlListProperty *prop); - -Q_SIGNALS: - void countChanged(); - -private: - QListm_categories; - QWeakPointer m_appletInterface; -}; - - -class ConfigView : public QQuickView -{ - Q_OBJECT - Q_PROPERTY(ConfigModel *configModel READ configModel CONSTANT) - -public: - ConfigView(Plasma::Applet *applet, QWindow *parent = 0); - virtual ~ConfigView(); - - virtual void init(); - - ConfigModel *configModel() const; - -protected: - void hideEvent(QHideEvent *ev); - void resizeEvent(QResizeEvent *re); - -private: - Plasma::Applet *m_applet; - ConfigModel *m_configModel; -}; - -#endif // multiple inclusion guard