File indexing completed on 2024-04-21 04:48:15

0001 /* AUDEX CDDA EXTRACTOR
0002  * SPDX-FileCopyrightText: Copyright (C) 2007 Marco Nelles
0003  * <https://userbase.kde.org/Audex>
0004  *
0005  * SPDX-License-Identifier: GPL-3.0-or-later
0006  */
0007 
0008 #ifndef PARAMETERS_HEADER
0009 #define PARAMETERS_HEADER
0010 
0011 #include <QList>
0012 #include <QMap>
0013 #include <QMapIterator>
0014 #include <QObject>
0015 #include <QString>
0016 #include <QVariant>
0017 #include <QDebug>
0018 
0019 #include <KLocalizedString>
0020 
0021 typedef QList<QString> KeyList;
0022 
0023 class Parameters
0024 {
0025 public:
0026     Parameters();
0027     Parameters(const Parameters &other);
0028     Parameters(const QString &string, const QChar &sep = ',');
0029     Parameters &operator=(const Parameters &other);
0030     ~Parameters();
0031 
0032     void fromString(const QString &string, const QChar &sep = ',');
0033     const QString toString(const QChar &sep = ',');
0034 
0035     void fromBase64(const QByteArray &bytearray);
0036     const QByteArray toBase64();
0037 
0038     inline void setValue(const QString &key, const QVariant &value)
0039     {
0040         p_parameters.insert(key.toLower(), value);
0041     }
0042 
0043     inline const QVariant value(const QString &key, const QVariant &def = QVariant()) const
0044     {
0045         return p_parameters.value(key.toLower(), def);
0046     }
0047 
0048     bool contains(const QString &key) const;
0049     const KeyList keys() const;
0050     bool isEmpty() const;
0051 
0052     inline bool error() const {
0053         return !p_error_string.isEmpty();
0054     }
0055 
0056     inline const QString errorString() const {
0057         return p_error_string;
0058     }
0059 
0060 private:
0061     QMap<QString, QVariant> p_parameters;
0062     QString p_error_string;
0063 
0064     void p_insert_value(const QString& key, const QString& value, const bool is_quoted);
0065 
0066 };
0067 
0068 #endif