Source

ggap / ggap / prefs.h

#ifndef GGAP_PREFS_H
#define GGAP_PREFS_H

#include <moo/prefs.h>
#include <QVariant>
#include <QFont>
#include <QStringList>

namespace ggap {

struct Prefs : public moo::Prefs
{
    Prefs(moo::SettingsType type) : moo::Prefs(type) {}

    enum BoolKey {
        SaveWorkspace       = 0x101,
        UseDefaultGap       = 0x102,
        EnableTerminalMode  = 0x103,
        Gap44               = 0x104
    };

    enum StringKey {
        GapRootDir          = 0x111,
        GapExe              = 0x112,
        GapArgs             = 0x113,
        HelpHomePage        = 0x114,
        DefaultFileFormat   = 0x115
    };

    enum StringListKey {
        HelpBookmarks       = 0x121,
        ExtraGapRoots       = 0x122,
        WatchGapFiles       = 0x123
    };

    enum FontKey {
        WorksheetFont       = 0x131,
        HelpFont            = 0x132
    };

    enum IntKey {
        CompressionLevel    = 0x141
    };
};

namespace impl {

QVariant prefsValue(moo::SettingsType type, int key);
void setPrefsValue(moo::SettingsType type, int key, const QVariant &value);

}

inline bool prefsValue(Prefs::BoolKey k)
{
    return impl::prefsValue(moo::SettingsPrefs, k).toBool();
}

inline QString prefsValue(Prefs::StringKey k)
{
    return impl::prefsValue(moo::SettingsPrefs, k).toString();
}

inline QStringList prefsValue(Prefs::StringListKey k)
{
    return impl::prefsValue(moo::SettingsPrefs, k).toStringList();
}

inline int prefsValue(Prefs::IntKey k)
{
    return impl::prefsValue(moo::SettingsPrefs, k).toInt();
}

inline QByteArray prefsValue(Prefs::ByteArrayKey k)
{
    return impl::prefsValue(moo::SettingsPrefs, k).toByteArray();
}

inline QFont prefsValue(Prefs::FontKey k)
{
    QFont font;
    font.fromString(impl::prefsValue(moo::SettingsPrefs, k).toString());
    return font;
}

inline QVariant prefsValue(const QString &key, const QVariant &dflt = QVariant())
{
    return Prefs(moo::SettingsPrefs).value(key, dflt);
}

inline QVariant stateValue(const QString &key, const QVariant &dflt = QVariant())
{
    return Prefs(moo::SettingsState).value(key, dflt);
}

template<typename K, typename V>
inline void setPrefsValue(const K &key, const V &value)
{
    impl::setPrefsValue(moo::SettingsPrefs, key, value);
}

template<typename K, typename V>
inline void setStateValue(const K &key, const V &value)
{
    Prefs(moo::SettingsState).setValue(key, value);
}

template<typename K>
inline void unsetPrefsValue(const K &key)
{
    Prefs(moo::SettingsPrefs).unsetValue(key);
}

template<typename K>
inline void unsetStateValue(const K &key)
{
    Prefs(moo::SettingsState).unsetValue(key);
}

}

#endif