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_