Warning, file /office/calligra/gemini/TemplateVariantsModel.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 /* This file is part of the KDE project
0002  * SPDX-FileCopyrightText: 2014 Dan Leinir Turthra Jensen <admin@leinir.dk>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #include "TemplateVariantsModel.h"
0008 #include <QColor>
0009 #include <QDebug>
0010 #include <KIconLoader>
0011 #include <kicontheme.h>
0012 struct TemplateVariant {
0013     TemplateVariant()
0014     {}
0015 
0016     QString name;
0017     QColor color;
0018     QString thumbnail;
0019     QString swatch;
0020     QString url;
0021 };
0022 
0023 class TemplateVariantsModel::Private
0024 {
0025 public:
0026     Private() {}
0027     ~Private()
0028     {
0029         qDeleteAll(entries);
0030     }
0031 
0032     QList<TemplateVariant*> entries;
0033 };
0034 
0035 TemplateVariantsModel::TemplateVariantsModel(QObject* parent)
0036     : QAbstractListModel(parent)
0037     , d(new Private())
0038 {
0039 }
0040 
0041 TemplateVariantsModel::~TemplateVariantsModel()
0042 {
0043     delete d;
0044 }
0045 
0046 QHash<int, QByteArray> TemplateVariantsModel::roleNames() const
0047 {
0048     QHash<int, QByteArray> roles;
0049     roles[NameRole] = "text";
0050     roles[ColorRole] = "color";
0051     roles[ThumbnailRole] = "thumbnail";
0052     roles[SwatchRole] = "swatch";
0053     roles[UrlRole] = "url";
0054     return roles;
0055 }
0056 
0057 QVariant TemplateVariantsModel::data(const QModelIndex& index, int role) const
0058 {
0059     QVariant result;
0060 
0061     if(index.isValid() && index.row() > -1 && index.row() < d->entries.count())
0062     {
0063         TemplateVariant* entry = d->entries.at(index.row());
0064         switch(role)
0065         {
0066             case NameRole:
0067                 result = entry->name;
0068                 break;
0069             case ColorRole:
0070                 result = entry->color;
0071                 break;
0072             case ThumbnailRole:
0073                 result = entry->thumbnail;
0074                 break;
0075             case SwatchRole:
0076                 result = entry->swatch;
0077                 break;
0078             case UrlRole:
0079                 result = entry->url;
0080                 break;
0081             default:
0082                 break;
0083         }
0084     }
0085 
0086     return result;
0087 }
0088 
0089 int TemplateVariantsModel::rowCount(const QModelIndex& parent) const
0090 {
0091     if(parent.isValid() || d->entries.count() == 1)
0092         return 0;
0093     return d->entries.count();
0094 }
0095 
0096 void TemplateVariantsModel::addVariant(QString name, QString color, QString swatch, QString picture, QString file)
0097 {
0098     TemplateVariant* entry = new TemplateVariant();
0099     d->entries.append(entry);
0100 
0101     entry->name = name;
0102     entry->color = QColor(color);
0103     entry->swatch = swatch;
0104     entry->url = file;
0105 
0106     if(picture.at(0) == QChar('/') || picture.at(1) == QChar(':')) {
0107         entry->thumbnail = picture;
0108     }
0109     else {
0110         entry->thumbnail = KIconLoader::global()->iconPath(picture, KIconLoader::Desktop, true);
0111     }
0112 }
0113 
0114 QModelIndex TemplateVariantsModel::firstIndex()
0115 {
0116     return createIndex(0, 0);
0117 }