kde-workspace/kcontrol/desktoptheme/thememodel.h
Ivailo Monev 144299f453 kcontrol: format and indent
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2023-08-16 16:24:16 +03:00

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