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