File indexing completed on 2024-05-12 15:59:15
0001 /* 0002 * SPDX-FileCopyrightText: 2008 Cyrille Berger <cberger@cberger.net> 0003 * 0004 * SPDX-License-Identifier: LGPL-2.1-or-later 0005 */ 0006 0007 #include "kis_meta_data_filter_registry_model.h" 0008 #include "kis_debug.h" 0009 #include <QStringList> 0010 0011 using namespace KisMetaData; 0012 0013 struct Q_DECL_HIDDEN FilterRegistryModel::Private { 0014 QList<bool> enabled; 0015 }; 0016 0017 FilterRegistryModel::FilterRegistryModel() 0018 : KoGenericRegistryModel<const Filter*>(FilterRegistry::instance()), d(new Private) 0019 { 0020 QList<QString> keys = FilterRegistry::instance()->keys(); 0021 for (int i = 0; i < keys.size(); i++) { 0022 d->enabled.append(FilterRegistry::instance()->get(keys[i])->defaultEnabled()); 0023 } 0024 } 0025 0026 FilterRegistryModel::~FilterRegistryModel() 0027 { 0028 delete d; 0029 } 0030 0031 QVariant FilterRegistryModel::data(const QModelIndex &index, int role) const 0032 { 0033 if (index.isValid()) { 0034 if (role == Qt::CheckStateRole) { 0035 if (d->enabled[index.row()]) return Qt::Checked; 0036 else return Qt::Unchecked; 0037 } else if (role == Qt::ToolTipRole) { 0038 return get(index)->description(); 0039 } 0040 } 0041 return KoGenericRegistryModel<const Filter*>::data(index, role); 0042 } 0043 0044 bool FilterRegistryModel::setData(const QModelIndex & index, const QVariant & value, int role) 0045 { 0046 if (index.isValid()) { 0047 if (role == Qt::CheckStateRole) { 0048 d->enabled[index.row()] = value.toBool(); 0049 } 0050 } 0051 return KoGenericRegistryModel<const Filter*>::setData(index, value, role); 0052 } 0053 0054 Qt::ItemFlags FilterRegistryModel::flags(const QModelIndex &) const 0055 { 0056 return Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsUserCheckable; 0057 } 0058 0059 QList<const Filter*> FilterRegistryModel::enabledFilters() const 0060 { 0061 QList<const Filter*> enabledFilters; 0062 QList<QString> keys = FilterRegistry::instance()->keys(); 0063 for (int i = 0; i < keys.size(); i++) { 0064 if (d->enabled[i]) { 0065 enabledFilters.append(FilterRegistry::instance()->get(keys[i])); 0066 } 0067 } 0068 return enabledFilters; 0069 } 0070 0071 void FilterRegistryModel::setEnabledFilters(const QStringList &enabledFilters) 0072 { 0073 d->enabled.clear(); 0074 QList<QString> keys = FilterRegistry::instance()->keys(); 0075 Q_FOREACH (const QString &key, keys) { 0076 d->enabled.append(enabledFilters.contains(key)); 0077 } 0078 0079 }