1
0
Fork 0
x64dbg/x64_dbg_gui/Project/Src/Utils/Configuration.h

100 lines
3.1 KiB
C++

#ifndef CONFIGURATION_H
#define CONFIGURATION_H
#include <QFile>
#include <QString>
#include <QColor>
#include <QMap>
#include <QObject>
#include <QKeySequence>
#include "Bridge.h"
#define Config() (Configuration::instance())
#define ConfigColor(x) (Config()->getColor(x))
#define ConfigBool(x,y) (Config()->getBool(x,y))
#define ConfigUint(x,y) (Config()->getUint(x,y))
#define ConfigFont(x) (Config()->getFont(x))
#define ConfigShortcut(x) (Config()->getShortcut(x).Hotkey)
class Configuration : public QObject
{
Q_OBJECT
public:
//Structures
struct Shortcut
{
QString Name;
QKeySequence Hotkey;
bool GlobalShortcut;
Shortcut(QString n = QString(), QString h = QString(), bool g = false)
{
Name = n;
Hotkey = QKeySequence(h);
GlobalShortcut = g;
}
};
//Functions
Configuration();
static Configuration* instance();
void load();
void save();
void readColors();
void writeColors();
void emitColorsUpdated();
void readBools();
void writeBools();
void readUints();
void writeUints();
void readFonts();
void writeFonts();
void emitFontsUpdated();
void readShortcuts();
void writeShortcuts();
const QColor getColor(const QString id) const;
const bool getBool(const QString category, const QString id) const;
void setBool(const QString category, const QString id, const bool b);
const uint_t getUint(const QString category, const QString id) const;
void setUint(const QString category, const QString id, const uint_t i);
const QFont getFont(const QString id) const;
const Shortcut getShortcut(const QString key_id) const;
void setShortcut(const QString key_id, const QKeySequence key_sequence);
//default setting maps
QMap<QString, QColor> defaultColors;
QMap<QString, QMap<QString, bool>> defaultBools;
QMap<QString, QMap<QString, uint_t>> defaultUints;
QMap<QString, QFont> defaultFonts;
QMap<QString, Shortcut> defaultShortcuts;
//public variables
QMap<QString, QColor> Colors;
QMap<QString, QMap<QString, bool>> Bools;
QMap<QString, QMap<QString, uint_t>> Uints;
QMap<QString, QFont> Fonts;
QMap<QString, Shortcut> Shortcuts;
static Configuration* mPtr;
signals:
void colorsUpdated();
void fontsUpdated();
void shortcutsUpdated();
private:
QColor colorFromConfig(const QString id);
bool colorToConfig(const QString id, const QColor color);
bool boolFromConfig(const QString category, const QString id);
bool boolToConfig(const QString category, const QString id, bool bBool);
uint_t uintFromConfig(const QString category, const QString id);
bool uintToConfig(const QString category, const QString id, uint_t i);
QFont fontFromConfig(const QString id);
bool fontToConfig(const QString id, const QFont font);
QString shortcutFromConfig(const QString id);
bool shortcutToConfig(const QString id, const QKeySequence shortcut);
};
#endif // CONFIGURATION_H