#pragma once
#include "configobject.hpp"
#include <qqmlintegration.h>

namespace ZShell::config {

class Presets : public ConfigObject {
	Q_OBJECT
	QML_ANONYMOUS

	CFG_PROPERTY(QString, accent, QString())
	CFG_PROPERTY(QString, name, QStringLiteral("Catppuccin"))
	CFG_PROPERTY(QString, variant, QStringLiteral("latte"))

	public:
	explicit Presets(QObject* parent = nullptr) : ConfigObject(parent) {}
};

class Colors : public ConfigObject {
	Q_OBJECT
	QML_ANONYMOUS

	CONFIG_SUBOBJECT(Presets, presets)
	CFG_PROPERTY(QString, schemeType, QStringLiteral("fidelity"))
	CFG_PROPERTY(bool, scheduleDark, false)
	CFG_PROPERTY(int, scheduleDarkEnd, 600)
	CFG_PROPERTY(int, scheduleDarkStart, 1140)
	CFG_PROPERTY(bool, schemeGen, true)
	CFG_PROPERTY(bool, neovimColors, false)
	CFG_PROPERTY(QString, mode, QStringLiteral("dark"))
	CFG_PROPERTY(bool, smart, false)

	public:
	explicit Colors(QObject* parent = nullptr)
		: ConfigObject(parent), m_presets(new Presets(this)) {}
};

} // namespace ZShell::config
