File indexing completed on 2024-05-05 05:00:08
0001 /* 0002 SPDX-FileCopyrightText: 2005 Ivor Hewitt <ivor@ivor.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 #ifndef FILTEROPTS_H 0007 #define FILTEROPTS_H 0008 0009 #include <QAbstractItemModel> 0010 #include <QTabWidget> 0011 0012 #include <kcmodule.h> 0013 #include <ksharedconfig.h> 0014 0015 class QListWidget; 0016 class QPushButton; 0017 class QLineEdit; 0018 class QCheckBox; 0019 class QTreeView; 0020 class KListWidgetSearchLine; 0021 class KPluralHandlingSpinBox; 0022 0023 class AutomaticFilterModel : public QAbstractItemModel 0024 { 0025 Q_OBJECT 0026 public: 0027 AutomaticFilterModel(QObject *parent = nullptr); 0028 0029 void load(KConfigGroup &cg); 0030 void save(KConfigGroup &cg); 0031 void defaults(); 0032 0033 QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override; 0034 QModelIndex parent(const QModelIndex &index) const override; 0035 bool hasChildren(const QModelIndex &parent = QModelIndex()) const override; 0036 int rowCount(const QModelIndex &parent = QModelIndex()) const override; 0037 int columnCount(const QModelIndex &parent = QModelIndex()) const override; 0038 QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; 0039 bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override; 0040 QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override; 0041 Qt::ItemFlags flags(const QModelIndex &index) const override; 0042 0043 signals: 0044 void changed(bool); 0045 0046 private: 0047 struct FilterConfig { 0048 bool enableFilter; 0049 QString filterName; 0050 QString filterURL; 0051 QString filterLocalFilename; 0052 }; 0053 QList<struct FilterConfig> mFilters; 0054 0055 KSharedConfig::Ptr mConfig; 0056 QString mGroupname; 0057 }; 0058 0059 class KCMFilter : public KCModule 0060 { 0061 Q_OBJECT 0062 public: 0063 //TODO KF6: when dropping compatibility with KF5, remove QVariantList argument 0064 KCMFilter(QObject *parent, const KPluginMetaData &md={}, const QVariantList &args={}); 0065 ~KCMFilter() override; 0066 0067 void load() override; 0068 void save() override; 0069 void defaults() override; 0070 0071 protected Q_SLOTS: 0072 void insertFilter(); 0073 void updateFilter(); 0074 void removeFilter(); 0075 void slotItemSelected(); 0076 void slotEnableChecked(); 0077 void slotKillChecked(); 0078 void slotInfoLinkActivated(const QString &url); 0079 0080 void exportFilters(); 0081 void importFilters(); 0082 void updateButton(); 0083 0084 void spinBoxChanged(int); 0085 0086 #if QT_VERSION_MAJOR < 6 0087 void setNeedsSave(bool needs) {emit changed(needs);} 0088 #endif 0089 0090 private: 0091 QListWidget *mListBox; 0092 KListWidgetSearchLine *mSearchLine; 0093 QLineEdit *mString; 0094 QCheckBox *mEnableCheck; 0095 QCheckBox *mKillCheck; 0096 QPushButton *mInsertButton; 0097 QPushButton *mUpdateButton; 0098 QPushButton *mRemoveButton; 0099 QPushButton *mImportButton; 0100 QPushButton *mExportButton; 0101 QTabWidget *mFilterWidget; 0102 QTreeView *mAutomaticFilterList; 0103 KPluralHandlingSpinBox *mRefreshFreqSpinBox; 0104 0105 KSharedConfig::Ptr mConfig; 0106 QString mGroupname; 0107 int mSelCount; 0108 QString mOriginalString; 0109 0110 AutomaticFilterModel mAutomaticFilterModel; 0111 }; 0112 0113 #endif