File indexing completed on 2024-06-23 05:48:46
0001 /* 0002 This file is part of the Okteta Kasten module, made within the KDE community. 0003 0004 SPDX-FileCopyrightText: 2008 Friedrich W. H. Kossebau <kossebau@kde.org> 0005 0006 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0007 */ 0008 0009 #ifndef KASTEN_FILTERTOOL_HPP 0010 #define KASTEN_FILTERTOOL_HPP 0011 0012 // Kasten core 0013 #include <Kasten/AbstractTool> 0014 // Qt 0015 #include <QVector> 0016 0017 class AbstractByteArrayFilterParameterSet; 0018 class AbstractByteArrayFilter; 0019 0020 namespace Okteta { 0021 class AbstractByteArrayModel; 0022 } 0023 class QString; 0024 0025 namespace Kasten { 0026 0027 class ByteArrayView; 0028 0029 class FilterTool : public AbstractTool 0030 { 0031 Q_OBJECT 0032 0033 private: 0034 static inline constexpr char ConfigGroupId[] = "FilterTool"; 0035 static inline constexpr char OperationConfigKey[] = "Operation"; 0036 0037 public: 0038 FilterTool(); 0039 ~FilterTool() override; 0040 0041 public: // AbstractTool API 0042 // virtual AbstractModel* targetModel() const; 0043 QString title() const override; 0044 0045 void setTargetModel(AbstractModel* model) override; 0046 0047 public: 0048 int filterId() const; 0049 bool hasWriteable() const; 0050 QVector<AbstractByteArrayFilter*> filterList() const; 0051 0052 public: 0053 QString charCodecName() const; 0054 AbstractByteArrayFilterParameterSet* parameterSet(int filterId); 0055 void saveParameterSet(int filterId); 0056 0057 public Q_SLOTS: 0058 void filter() const; 0059 void setFilter(int filterId); 0060 0061 Q_SIGNALS: 0062 void filterChanged(int filterId); 0063 void hasWriteableChanged(bool hasWriteable); 0064 void charCodecChanged(const QString& charCodecName); 0065 0066 private Q_SLOTS: 0067 void onApplyableChanged(); 0068 0069 private: 0070 ByteArrayView* mByteArrayView = nullptr; 0071 Okteta::AbstractByteArrayModel* mByteArrayModel = nullptr; 0072 bool mHasWritable = false; 0073 0074 QVector<AbstractByteArrayFilter*> mFilterList; 0075 0076 int mFilterId = 0; 0077 }; 0078 0079 inline int FilterTool::filterId() const { return mFilterId; } 0080 0081 } 0082 0083 #endif