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

namespace ZShell::config {

class NotifsSizes : public ConfigObject {
	Q_OBJECT
	QML_ANONYMOUS

	CFG_PROPERTY(int, badge, 20)
	CFG_PROPERTY(int, image, 41)
	CFG_PROPERTY(int, width, 400)

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

class Notifs : public ConfigObject {
	Q_OBJECT
	QML_ANONYMOUS

	CFG_PROPERTY(bool, actionOnClick, false)
	CFG_PROPERTY(int, appNotifCooldown, 0)
	CFG_PROPERTY(qreal, clearThreshold, 0.3)
	CFG_PROPERTY(int, defaultExpireTimeout, 5000)
	CFG_PROPERTY(int, expandThreshold, 20)
	CFG_PROPERTY(bool, expire, true)
	CFG_PROPERTY(int, groupPreviewNum, 5)
	CFG_PROPERTY(bool, openExpanded, false)
	CFG_PROPERTY(bool, showInFullscreen, false)
	CONFIG_SUBOBJECT(NotifsSizes, sizes)

	public:
	explicit Notifs(QObject* parent = nullptr)
		: ConfigObject(parent), m_sizes(new NotifsSizes(this)) {}
};

} // namespace ZShell::config
