55 lines
2.1 KiB
C++
55 lines
2.1 KiB
C++
#pragma once
|
|
|
|
#include <qloggingcategory.h>
|
|
#include <qstring.h>
|
|
|
|
#include "settings/macros.hpp"
|
|
#include "settings/objectnode.hpp"
|
|
|
|
#define CONFIG_NODE_NO_CTOR SETTINGS_NODE_NO_CTOR
|
|
#define CONFIG_NODE SETTINGS_NODE
|
|
#define CONFIG_PROPERTY SETTINGS_PROPERTY
|
|
#define CONFIG_GLOBAL_PROPERTY SETTINGS_GLOBAL_PROPERTY
|
|
|
|
#define CONFIG_ENUM_PROPERTY(Type, name, defaultVal) \
|
|
CONFIG_PROPERTY(ZShell::config::Type::Enum, name, defaultVal)
|
|
#define CONFIG_GLOBAL_ENUM_PROPERTY(Type, name, defaultVal) \
|
|
CONFIG_GLOBAL_PROPERTY(ZShell::config::Type::Enum, name, defaultVal)
|
|
|
|
#define CONFIG_SUBOBJECT(Type, name) \
|
|
SETTINGS_SUBOBJECT(ZShell::config::Type, name)
|
|
#define CONFIG_GLOBAL_SUBOBJECT(Type, name) \
|
|
SETTINGS_GLOBAL_SUBOBJECT(ZShell::config::Type, name)
|
|
|
|
#define CONFIG_LIST_TYPE SETTINGS_LIST_TYPE
|
|
#define CONFIG_LIST(Type, name, defaultVal, ...) \
|
|
SETTINGS_LIST( \
|
|
ZShell::config::Type, name, DEFAULT_ARG(defaultVal), __VA_ARGS__)
|
|
#define CONFIG_GLOBAL_LIST(Type, name, defaultVal, ...) \
|
|
SETTINGS_GLOBAL_LIST( \
|
|
ZShell::config::Type, name, DEFAULT_ARG(defaultVal), __VA_ARGS__)
|
|
|
|
namespace ZShell::config {
|
|
|
|
Q_DECLARE_LOGGING_CATEGORY(lcConfig)
|
|
|
|
QString configDir();
|
|
QString monitorConfigDir();
|
|
|
|
class ListEntry : public settings::ObjectNode {
|
|
CONFIG_NODE(ListEntry, settings::ObjectNode)
|
|
|
|
CONFIG_PROPERTY(QString, id, {})
|
|
CONFIG_PROPERTY(bool, enabled, true)
|
|
};
|
|
CONFIG_LIST_TYPE(ListEntry, EntryList)
|
|
|
|
} // namespace ZShell::config
|
|
|
|
// Shorthand for declaring an ID'd entry (bar entries/status icons, quick toggles, etc)
|
|
#define LIST_ENTRY(id, enabled) \
|
|
settings::vmap({ \
|
|
{QStringLiteral("id"), QStringLiteral(#id)}, \
|
|
{QStringLiteral("enabled"), enabled}, \
|
|
})
|