File indexing completed on 2024-12-01 11:19:37

0001 // clang-format off
0002 /*
0003  * KDiff3 - Text Diff And Merge Tool
0004  *
0005  * SPDX-FileCopyrightText: 2002-2011 Joachim Eibl, joachim.eibl at gmx.de
0006  * SPDX-FileCopyrightText: 2018-2020 Michael Reeves reeves.87@gmail.com
0007  * SPDX-License-Identifier: GPL-2.0-or-later
0008  */
0009 // clang-format on
0010 
0011 #ifndef COMMON_H
0012 #define COMMON_H
0013 
0014 #include <algorithm>
0015 #include <map>
0016 
0017 #include <QAtomicInt>
0018 #include <QString>
0019 #include <QStringList>
0020 
0021 class QFont;
0022 class QColor;
0023 class QSize;
0024 class QPoint;
0025 class QTextStream;
0026 
0027 class ValueMap
0028 {
0029   private:
0030     std::map<QString, QString> m_map;
0031 
0032   public:
0033     ValueMap();
0034     virtual ~ValueMap();
0035 
0036     void save(QTextStream& ts);
0037     void load(QTextStream& ts);
0038     QString getAsString();
0039 
0040     virtual void writeEntry(const QString&, const QFont&);
0041     virtual void writeEntry(const QString&, const QColor&);
0042     virtual void writeEntry(const QString&, const QSize&);
0043     virtual void writeEntry(const QString&, const QPoint&);
0044     virtual void writeEntry(const QString&, qint32);
0045     virtual void writeEntry(const QString&, bool);
0046     virtual void writeEntry(const QString&, const QStringList&);
0047     virtual void writeEntry(const QString&, const QString&);
0048     virtual void writeEntry(const QString&, const char*);
0049 
0050     QString     readEntry(const QString& s, const QString& defaultVal);
0051     QString     readEntry(const QString& s, const char* defaultVal);
0052     QFont       readEntry(const QString& s, const QFont& defaultVal);
0053     QColor      readEntry(const QString& s, const QColor defaultVal);
0054     QSize       readEntry(const QString& s, const QSize defaultVal);
0055     QPoint      readEntry(const QString& s, const QPoint defaultVal);
0056     bool        readEntry(const QString& s, bool bDefault);
0057     qint32         readEntry(const QString& s, qint32 iDefault);
0058     QStringList readEntry(const QString& s, const QStringList& defaultVal);
0059 
0060   private:
0061     virtual QFont       readFontEntry(const QString&, const QFont* defaultVal);
0062     virtual QColor      readColorEntry(const QString&, const QColor* defaultVal);
0063     virtual QSize       readSizeEntry(const QString&, const QSize* defaultVal);
0064     virtual QPoint      readPointEntry(const QString&, const QPoint* defaultVal);
0065     virtual bool        readBoolEntry(const QString&, bool bDefault);
0066     virtual qint32         readNumEntry(const QString&, qint32 iDefault);
0067     virtual QStringList readListEntry(const QString&, const QStringList& defaultVal);
0068     virtual QString     readStringEntry(const QString&, const QString&);
0069 };
0070 
0071 QStringList safeStringSplit(const QString& s, char sepChar=';', char metaChar='\\' );
0072 QString safeStringJoin(const QStringList& sl, char sepChar=';', char metaChar='\\' );
0073 
0074 #endif