File indexing completed on 2024-05-12 16:01:28
0001 /* 0002 * SPDX-FileCopyrightText: 2009 Cyrille Berger <cberger@cberger.net> 0003 * SPDX-FileCopyrightText: 2011 Silvio Heinrich <plassy@web.de> 0004 * 0005 * SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #ifndef _KIS_COMPOSITE_OPS_MODEL_H_ 0009 #define _KIS_COMPOSITE_OPS_MODEL_H_ 0010 0011 #include <KoID.h> 0012 #include "kis_categorized_list_model.h" 0013 0014 class KoColorSpace; 0015 0016 struct KoIDToQStringConverter { 0017 QString operator() (const KoID &id) { 0018 return id.name(); 0019 } 0020 }; 0021 0022 typedef KisCategorizedListModel<KoID,KoIDToQStringConverter> BaseKoIDCategorizedListModel; 0023 0024 class KRITAUI_EXPORT KisCompositeOpListModel: public BaseKoIDCategorizedListModel 0025 { 0026 public: 0027 static KisCompositeOpListModel* sharedInstance(); 0028 0029 virtual QString categoryToString(const KoID& val) const { return val.name(); } 0030 virtual QString entryToString (const KoID& val) const { return val.name(); } 0031 bool setData (const QModelIndex& idx, const QVariant& value, int role=Qt::EditRole) override; 0032 QVariant data (const QModelIndex& idx, int role=Qt::DisplayRole) const override; 0033 0034 void validate(const KoColorSpace *cs); 0035 void readFavoriteCompositeOpsFromConfig(); 0036 void writeFavoriteCompositeOpsToConfig() const; 0037 0038 static KoID favoriteCategory(); 0039 0040 void initialize(); 0041 void initializeForLayerStyles(); 0042 0043 private: 0044 void addFavoriteEntry(const KoID &entry); 0045 void removeFavoriteEntry(const KoID &entry); 0046 }; 0047 0048 /** 0049 * @brief The KisSortedCompositeOpListModel class provides a model for the composite op combobox. 0050 * 0051 * It intentionally does NOT use the shared instance of KisCompositeOpListModel because it is 0052 * perfect valid for two composite comboboboxes to show a different set of valid composite ops. 0053 */ 0054 class KRITAUI_EXPORT KisSortedCompositeOpListModel : public KisSortedCategorizedListModel<KisCompositeOpListModel> 0055 { 0056 public: 0057 KisSortedCompositeOpListModel(bool limitToLayerStyles, QObject *parent) 0058 : KisSortedCategorizedListModel<KisCompositeOpListModel>(parent) 0059 { 0060 if (limitToLayerStyles) { 0061 m_model.initializeForLayerStyles(); 0062 } else { 0063 m_model.initialize(); 0064 } 0065 0066 initializeModel(&m_model); 0067 } 0068 0069 void validate(const KoColorSpace *cs) { 0070 m_model.validate(cs); 0071 } 0072 0073 protected: 0074 bool lessThan(const QModelIndex &left, const QModelIndex &right) const override { 0075 return lessThanPriority(left, right, KisCompositeOpListModel::favoriteCategory().name()); 0076 } 0077 private: 0078 KisCompositeOpListModel m_model; 0079 }; 0080 0081 #endif