/* * ThemeModel * Copyright (C) 2002 Karol Szwed * Copyright (C) 2002 Daniel Molkentin * Copyright (C) 2007 Urs Wolfer * Copyright (C) 2009 by Davide Bettio * Portions Copyright (C) 2007 Paolo Capriotti * Portions Copyright (C) 2007 Ivan Cukic * Portions Copyright (C) 2008 by Petri Damsten * Portions Copyright (C) 2000 TrollTech AS. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public * License version 2 as published by the Free Software Foundation. * * 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; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef THEMEMODEL_H #define THEMEMODEL_H #include namespace Plasma { class FrameSvg; } //Theme selector code by Andre Duffeck (modified to add package description) class ThemeInfo { public: QString package; Plasma::FrameSvg *svg; QString description; QString author; QString version; QString themeRoot; }; class ThemeModel : public QAbstractListModel { public: enum { PackageNameRole = Qt::UserRole, SvgRole = Qt::UserRole + 1, PackageDescriptionRole = Qt::UserRole + 2, PackageAuthorRole = Qt::UserRole + 3, PackageVersionRole = Qt::UserRole + 4 }; ThemeModel(QObject *parent = 0); virtual ~ThemeModel(); virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; QModelIndex indexOf(const QString &path) const; void reload(); void clearThemeList(); private: QMap m_themes; }; class ThemeDelegate : public QAbstractItemDelegate { public: ThemeDelegate(QObject *parent = nullptr); virtual void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const; virtual QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const; private: static const int MARGIN = 10; }; #endif