Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_bookmarked_configurations_model.cc
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2007 Cyrille Berger <cberger@cberger.net>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
8#include <QList>
9
10#include <kis_debug.h>
11#include <klocalizedstring.h>
12
13#include <KoID.h>
14
16
21
22
29
34
39
40int KisBookmarkedConfigurationsModel::rowCount(const QModelIndex &parent) const
41{
42 Q_UNUSED(parent);
43 return 2 + d->configsKey.size();
44}
45
46QVariant KisBookmarkedConfigurationsModel::data(const QModelIndex &index, int role) const
47{
48 if (!index.isValid()) {
49 return QVariant();
50 }
51 if (role == Qt::DisplayRole || role == Qt::EditRole) {
52 switch (index.row()) {
53 case 0:
54 return i18n("Default");
55 case 1:
56 return i18n("Last Used");
57 default:
58 return d->configsKey[ index.row() - 2 ];
59 }
60 }
61 return QVariant();
62}
63
64bool KisBookmarkedConfigurationsModel::setData(const QModelIndex & index, const QVariant & value, int role)
65{
66 if (role == Qt::EditRole && index.row() >= 2) {
67 QString name = value.toString();
68 int idx = index.row() - 2;
71 d->bookmarkManager->save(name, config);
72 d->configsKey[idx] = name;
73
74 emit(dataChanged(index, index));
75 return true;
76 }
77 return false;
78}
79
81{
82 if (!index.isValid()) return 0;
83 switch (index.row()) {
84 case 0:
85 dbgKrita << "loading default" << Qt::endl;
87 break;
88 case 1:
90 break;
91 default:
92 return d->bookmarkManager->load(d->configsKey[ index.row() - 2 ]);
93 }
94}
95
96QModelIndex KisBookmarkedConfigurationsModel::indexFor(const QString& name) const
97{
98 int idx = d->configsKey.indexOf(name);
99 if (idx == -1) return QModelIndex();
100 return createIndex(idx + 2, 0);
101}
102
103bool KisBookmarkedConfigurationsModel::isIndexDeletable(const QModelIndex &index) const
104{
105 if (!index.isValid() || index.row() < 2) return false;
106 return true;
107}
108
110{
111 saveConfiguration(d->bookmarkManager->uniqueName(baseName), config);
112}
113
115{
116 d->bookmarkManager->save(name, config);
117 if (!d->configsKey.contains(name)) {
118 beginInsertRows(QModelIndex(), d->configsKey.count() + 2, d->configsKey.count() + 2);
119 d->configsKey << name;
120 endInsertRows();
121 }
122}
123
125{
126 if (!index.isValid() || index.row() < 2) return ;
127 int idx = index.row() - 2;
129 beginRemoveRows(QModelIndex(), idx + 2, idx + 2);
130 d->configsKey.removeAt(idx);
131 endRemoveRows();
132}
133
134Qt::ItemFlags KisBookmarkedConfigurationsModel::flags(const QModelIndex & index) const
135{
136 if (!index.isValid()) return QFlags<Qt::ItemFlag>();
137
138 switch (index.row()) {
139 case 0:
140 return Qt::ItemIsSelectable | Qt::ItemIsEnabled;
141 case 1:
143 return Qt::ItemIsSelectable | Qt::ItemIsEnabled;
144 } else {
145 return QFlags<Qt::ItemFlag>();
146 }
147 default:
148 return Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsEnabled;
149 }
150}
float value(const T *src, size_t ch)
int rowCount(const QModelIndex &parent=QModelIndex()) const override
virtual void newConfiguration(KLocalizedString baseName, const KisSerializableConfigurationSP config)
virtual void deleteIndex(const QModelIndex &index)
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const override
virtual bool isIndexDeletable(const QModelIndex &index) const
Qt::ItemFlags flags(const QModelIndex &index) const override
virtual void saveConfiguration(const QString &name, const KisSerializableConfigurationSP config)
KisBookmarkedConfigurationManager * bookmarkedConfigurationManager()
bool setData(const QModelIndex &index, const QVariant &value, int role=Qt::EditRole) override
KisSerializableConfigurationSP configuration(const QModelIndex &index) const
KisBookmarkedConfigurationsModel(KisBookmarkedConfigurationManager *)
QModelIndex indexFor(const QString &name) const
#define dbgKrita
Definition kis_debug.h:45
KisSerializableConfigurationSP load(const QString &configname) const
QString uniqueName(const KLocalizedString &base)
void save(const QString &configname, const KisSerializableConfigurationSP)