mirror of
https://bitbucket.org/smil3y/kde-workspace.git
synced 2025-02-23 10:22:49 +00:00
88 lines
2.6 KiB
C++
88 lines
2.6 KiB
C++
/*
|
|
* ThemeModel
|
|
* Copyright (C) 2002 Karol Szwed <gallium@kde.org>
|
|
* Copyright (C) 2002 Daniel Molkentin <molkentin@kde.org>
|
|
* Copyright (C) 2007 Urs Wolfer <uwolfer @ kde.org>
|
|
* Copyright (C) 2009 by Davide Bettio <davide.bettio@kdemail.net>
|
|
|
|
* Portions Copyright (C) 2007 Paolo Capriotti <p.capriotti@gmail.com>
|
|
* Portions Copyright (C) 2007 Ivan Cukic <ivan.cukic+kde@gmail.com>
|
|
* Portions Copyright (C) 2008 by Petri Damsten <damu@iki.fi>
|
|
* 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 <QtGui/QAbstractItemView>
|
|
|
|
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<QString, ThemeInfo> 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
|