#include "./theme.hpp"

// HACK: includes everything and sets theme defaults
#include "./contact_list.hpp"

//#include <iostream>

//enum class TestThemeSet {
	//Value1,
//};

//// specialization
////template<>
////std::string typeValueName(TestThemeSet v) {
	////switch (v) {
		////case TestThemeSet::Value1: return "Value1";
		////default: return "unk";
	////}
////}

Theme::Theme(void) {
	load();
}

void Theme::update(void) {
}

bool Theme::load(void) {
	name = "Default";

	//setColor<TestThemeSet::Value1>(ImVec4{});
	//std::cout << "test value name: " << getColorName<TestThemeSet::Value1>() << "\n";

	return true;
}

bool Theme::store(void) {
	return true;
}

Theme getDefaultThemeDark(void) {
	Theme t;

	t.setColor<ThemeCol_Contact::request_incoming		>({0.98f, 0.41f, 0.26f, 0.52f});
	t.setColor<ThemeCol_Contact::request_outgoing		>({0.98f, 0.26f, 0.41f, 0.52f});

	t.setColor<ThemeCol_Contact::avatar_online_direct	>({0.3f, 1.0f, 0.0f, 1.0f});
	t.setColor<ThemeCol_Contact::avatar_online_cloud	>({0.0f, 1.0f, 0.8f, 1.0f});
	t.setColor<ThemeCol_Contact::avatar_offline			>({0.4f, 0.4f, 0.4f, 1.0f});

	t.setColor<ThemeCol_Contact::unread					>(ImGui::GetStyleColorVec4(ImGuiCol_PlotHistogramHovered));
	t.setColor<ThemeCol_Contact::unread_muted			>({0.6f, 0.6f, 0.6f, 0.9f});

	t.setColor<ThemeCol_Contact::icon_backdrop			>({0.0f, 0.0f, 0.0f, 0.4f});

	// TODO: add base ft? -> PlotHistogram
	t.setColor<ThemeCol_Contact::ft_have_all			>({0.35f, 0.84f, 0.22f, 1.0f});

	return t;
}

Theme getDefaultThemeLight(void) {
	// HACK: inherit dark and only diff
	Theme t = getDefaultThemeDark();

	return t;
}