File indexing completed on 2024-06-23 05:48:49

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_OPERANDBYTEARRAYFILTERPARAMETERSET_HPP
0010 #define KASTEN_OPERANDBYTEARRAYFILTERPARAMETERSET_HPP
0011 
0012 // lib
0013 #include "abstractbytearrayfilterparameterset.hpp"
0014 // Qt
0015 #include <QByteArray>
0016 
0017 class KConfigGroup;
0018 
0019 class OperandByteArrayFilterParameterSet : public AbstractByteArrayFilterParameterSet
0020 {
0021 public:
0022     // matching Okteta::ByteArrayComboBox
0023     enum Coding
0024     {
0025         InvalidCoding = -1,
0026         HexadecimalCoding = 0,
0027         DecimalCoding = 1,
0028         OctalCoding = 2,
0029         BinaryCoding = 3,
0030         CharCoding = 4,
0031         Utf8Coding = 5,
0032         _CodingCount
0033     };
0034 
0035 private:
0036     static inline constexpr OperandByteArrayFilterParameterSet::Coding DefaultOperandFormat = OperandByteArrayFilterParameterSet::HexadecimalCoding;
0037     static inline constexpr bool DefaultAlignAtEnd = false;
0038 
0039     static const QByteArray DefaultOperand;
0040 
0041     static inline constexpr char OperandConfigKey[] = "Operand";
0042     static inline constexpr char ByteOrderConfigKey[] = "OperandFormat";
0043     static inline constexpr char AlignAtEndConfigKey[] = "AlignAtEnd";
0044 
0045 public:
0046     OperandByteArrayFilterParameterSet();
0047     ~OperandByteArrayFilterParameterSet() override;
0048 
0049 public: // AbstractByteArrayFilterParameterSet API
0050     const char* id() const override;
0051 
0052 public:
0053     void setOperand(const QByteArray& operand);
0054     void setOperandFormat(Coding operandFormat);
0055     void setAlignAtEnd(bool alignAtEnd);
0056 
0057 public:
0058     QByteArray operand() const;
0059     Coding operandFormat() const;
0060     bool alignAtEnd() const;
0061 
0062 public:
0063     void loadConfig(const KConfigGroup& configGroup);
0064     void saveConfig(KConfigGroup& configGroup) const;
0065 
0066 private:
0067     QByteArray mOperand;
0068     Coding mOperandFormat = HexadecimalCoding;
0069     bool mAlignAtEnd = false;
0070 };
0071 
0072 #endif