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 }