File indexing completed on 2024-05-12 16:01:39
0001 /* This file is part of the KDE project 0002 * SPDX-FileCopyrightText: 2010 Cyrille Berger <cberger@cberger.net> 0003 * SPDX-FileCopyrightText: 2011 Silvio Heinrich <plassyqweb.de> 0004 * 0005 * SPDX-License-Identifier: LGPL-2.0-or-later 0006 */ 0007 0008 #ifndef _KIS_PAINTOP_OPTION_LIST_MODEL_H_ 0009 #define _KIS_PAINTOP_OPTION_LIST_MODEL_H_ 0010 0011 #include <kis_categorized_list_model.h> 0012 #include <kis_paintop_option.h> 0013 #include <kritaui_export.h> 0014 0015 #include <QString> 0016 0017 struct KRITAUI_EXPORT KisOptionInfo 0018 { 0019 KisOptionInfo() = default; 0020 0021 KisOptionInfo(KisPaintOpOption* o, int i, const QString &label) 0022 : label(label) 0023 , option(o) 0024 , index(i) 0025 {} 0026 0027 KisOptionInfo(const KisOptionInfo &) = default; 0028 0029 QString label; 0030 KisPaintOpOption *option {nullptr}; 0031 int index; 0032 }; 0033 0034 KRITAUI_EXPORT bool operator==(const KisOptionInfo& a, const KisOptionInfo& b); 0035 0036 struct KRITAUI_EXPORT OptionInfoToQStringConverter { 0037 QString operator() (const KisOptionInfo &info) { 0038 return info.label; 0039 } 0040 }; 0041 0042 typedef KisCategorizedListModel<KisOptionInfo, OptionInfoToQStringConverter> BaseOptionCategorizedListModel; 0043 0044 /** 0045 * This model can be use to show a list of visible composite op in a list view. 0046 */ 0047 class KRITAUI_EXPORT KisPaintOpOptionListModel : public BaseOptionCategorizedListModel 0048 { 0049 public: 0050 KisPaintOpOptionListModel(QObject *parent); 0051 void addPaintOpOption(KisPaintOpOption* option, int widgetIndex, const QString &label, KisPaintOpOption::PaintopCategory categoryType); 0052 void addPaintOpOption(KisPaintOpOption *option, int widgetIndex, const QString &label, const QString &category); 0053 QVariant data(const QModelIndex& idx, int role = Qt::DisplayRole) const override; 0054 bool setData(const QModelIndex& idx, const QVariant& value, int role=Qt::EditRole) override; 0055 void signalDataChanged(const QModelIndex& index); 0056 }; 0057 0058 #endif // _KIS_PAINTOP_OPTION_LIST_MODEL_H_