Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_paintop_options_model.cpp
Go to the documentation of this file.
1/* This file is part of the KDE project
2 * SPDX-FileCopyrightText: 2010 Cyrille Berger <cberger@cberger.net>
3 * SPDX-FileCopyrightText: 2011 Silvio Heinrich <plassyqweb.de>
4 *
5 * SPDX-License-Identifier: LGPL-2.0-or-later
6 */
7
9
10#include <klocalizedstring.h>
11
12
19
21{
22 QString category;
23 switch(categoryType) {
25 category = i18nc("option category", "General");
26 break;
28 category = i18nc("option category", "Color");
29 break;
31 category = i18nc("option category", "Texture");
32 break;
34 category = i18nc("option category", "Filter");
35 break;
37 category = i18nc("option category", "Masked Brush");
38 break;
39 };
40 return category;
41}
42
43void KisPaintOpOptionListModel::addPaintOpOption(KisPaintOpOption *option, int widgetIndex, const QString &label, const QString &category) {
44
45 DataItem *item = categoriesMapper()->addEntry(category, KisOptionInfo(option, widgetIndex, label));
46
47 if (option->isCheckable()) {
48 item->setCheckable(true);
49 item->setChecked(option->isChecked());
51 &m_stateSignalsMapper, qOverload<>(&QSignalMapper::map));
52 }
53
54 item->setEnabled(option->isEnabled());
56 &m_stateSignalsMapper, qOverload<>(&QSignalMapper::map));
57 m_stateSignalsMapper.setMapping(option, categoriesMapper()->rowFromItem(item));
58
60}
61
62QVariant KisPaintOpOptionListModel::data(const QModelIndex& idx, int role) const
63{
65}
66
67bool KisPaintOpOptionListModel::setData(const QModelIndex& idx, const QVariant& value, int role)
68{
69 if (!idx.isValid()) return false;
70
71 DataItem *item = categoriesMapper()->itemFromRow(idx.row());
72 Q_ASSERT(item);
73
74 if (role == Qt::CheckStateRole && item->isCheckable()) {
75 item->data()->option->setChecked(value.toInt() == Qt::Checked);
76 }
77
79}
80
81bool operator==(const KisOptionInfo& a, const KisOptionInfo& b)
82{
83 if (a.index != b.index) return false;
84 if (a.option->objectName() == b.option->objectName())
85 if (a.option->category() != b.option->category()) return false;
86 if (a.option->isCheckable() != b.option->isCheckable()) return false;
87 if (a.option->isChecked() != b.option->isChecked()) return false;
88 return true;
89}
91{
92 Q_EMIT dataChanged(index,index);
93}
94
96{
97 QModelIndex idx(index(row));
98
101
102 if (item->data()->option->isEnabled() != item->isEnabled()) {
103 item->setEnabled(item->data()->option->isEnabled());
104 }
105
106 if (item->data()->option->isChecked() != item->isChecked()) {
107 item->setChecked(item->data()->option->isChecked());
108 }
109
110 Q_EMIT dataChanged(idx, idx);
111}
float value(const T *src, size_t ch)
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
DataItem * addEntry(const QString &category, const TEntry &entry)
DataItem * itemFromRow(int row) const
QVariant data(const QModelIndex &idx, int role=Qt::DisplayRole) const override
bool setData(const QModelIndex &idx, const QVariant &value, int role=Qt::EditRole) override
SpecificCategoriesMapper * categoriesMapper()
void addPaintOpOption(KisPaintOpOption *option, int widgetIndex, const QString &label, const QString &category)
void signalDataChanged(const QModelIndex &index)
bool setData(const QModelIndex &idx, const QVariant &value, int role=Qt::EditRole) override
static QString categoryName(KisPaintOpOption::PaintopCategory category)
QVariant data(const QModelIndex &idx, int role=Qt::DisplayRole) const override
void sigEnabledChanged(bool value)
KisPaintOpOption::PaintopCategory category() const
virtual bool isCheckable() const
void sigCheckedChanged(bool value)
virtual bool isChecked() const
#define KIS_SAFE_ASSERT_RECOVER_RETURN(cond)
Definition kis_assert.h:128
bool operator==(const KisOptionInfo &a, const KisOptionInfo &b)
KisPaintOpOption * option