File indexing completed on 2024-05-12 16:01:36
0001 /* 0002 * SPDX-FileCopyrightText: 2009 Cyrille Berger <cberger@cberger.net> 0003 * SPDX-FileCopyrightText: 2010 Lukáš Tvrdý <lukast.dev@gmail.com> 0004 * SPDX-FileCopyrightText: 2011 Silvio Heinrich <plassy@web.de> 0005 * 0006 * SPDX-License-Identifier: GPL-2.0-or-later 0007 */ 0008 0009 #ifndef _KIS_PAINTOP_LIST_MODEL_H_ 0010 #define _KIS_PAINTOP_LIST_MODEL_H_ 0011 0012 #include <QAbstractListModel> 0013 #include <QPixmap> 0014 #include <kritaui_export.h> 0015 #include "kis_categorized_list_model.h" 0016 #include <brushengine/kis_paintop_factory.h> 0017 0018 class KisPaintOpFactory; 0019 0020 struct KRITAUI_EXPORT KisPaintOpInfo 0021 { 0022 KisPaintOpInfo() { } 0023 KisPaintOpInfo(const QString& _id, const QString& _name, const QString& _category, const QIcon& _icon, qint32 _priority): 0024 id(_id), name(_name), category(_category), icon(_icon), priority(_priority) { } 0025 0026 KisPaintOpInfo(const QString& _id): 0027 id(_id) { } 0028 0029 bool operator==(const KisPaintOpInfo info) const{ 0030 return (info.id == id); 0031 } 0032 0033 QString id; 0034 QString name; 0035 QString category; 0036 QIcon icon; 0037 qint32 priority {0}; 0038 }; 0039 0040 struct PaintOpInfoToQStringConverter { 0041 QString operator() (const KisPaintOpInfo &info) { 0042 return info.name; 0043 } 0044 }; 0045 0046 typedef KisCategorizedListModel<KisPaintOpInfo, PaintOpInfoToQStringConverter> BasePaintOpCategorizedListModel; 0047 0048 class KRITAUI_EXPORT KisPaintOpListModel : public BasePaintOpCategorizedListModel 0049 { 0050 public: 0051 KisPaintOpListModel(QObject *parent); 0052 QVariant data(const QModelIndex& idx, int role = Qt::DisplayRole) const override; 0053 void fill(const QList<KisPaintOpFactory*>& list); 0054 }; 0055 0056 class KRITAUI_EXPORT KisSortedPaintOpListModel : public KisSortedCategorizedListModel<KisPaintOpListModel> 0057 { 0058 public: 0059 KisSortedPaintOpListModel(QObject *parent) 0060 : KisSortedCategorizedListModel<KisPaintOpListModel>(parent), 0061 m_model(new KisPaintOpListModel(this)) 0062 { 0063 initializeModel(m_model); 0064 } 0065 0066 void fill(const QList<KisPaintOpFactory*> &list) { 0067 m_model->fill(list); 0068 } 0069 0070 protected: 0071 bool lessThan(const QModelIndex &left, const QModelIndex &right) const override { 0072 return lessThanPriority(left, right, KisPaintOpFactory::categoryStable()); 0073 } 0074 0075 private: 0076 KisPaintOpListModel *m_model; 0077 }; 0078 0079 #endif //_KIS_PAINTOP_LIST_MODEL_H_