#include "about_window.hpp"
#include "core/version.hpp"
#include "imgui.h"

about_window::about_window()
{
}

void about_window::render()
{
    if (!m_visible)
        return;

    ImGui::SetNextWindowSize(ImVec2(500, 400), ImGuiCond_FirstUseEver);
    
    if (ImGui::Begin("About clrsync", &m_visible, ImGuiWindowFlags_NoResize))
    {
        const float window_width = ImGui::GetContentRegionAvail().x;
        
        ImGui::PushFont(ImGui::GetFont());
        const char* title = "clrsync";
        const float title_size = ImGui::CalcTextSize(title).x;
        ImGui::SetCursorPosX((window_width - title_size) * 0.5f);
        ImGui::TextColored(ImVec4(0.4f, 0.8f, 1.0f, 1.0f), "%s", title);
        ImGui::PopFont();
        
        std::string version = "Version " + clrsync::core::version_string();
        const float version_size = ImGui::CalcTextSize(version.c_str()).x;
        ImGui::SetCursorPosX((window_width - version_size) * 0.5f);
        ImGui::TextColored(ImVec4(0.7f, 0.7f, 0.7f, 1.0f), "%s", version.c_str());
        
        ImGui::Spacing();
        ImGui::Separator();
        ImGui::Spacing();
        
        ImGui::TextWrapped(
            "A color scheme management tool."
        );
        
        ImGui::Spacing();
        ImGui::Spacing();
        
        ImGui::Separator();
        ImGui::Spacing();
        
        ImGui::Text("Links:");
        
        if (ImGui::Button("GitHub Repository", ImVec2(200, 0)))
        {
            #ifdef _WIN32
                system("start https://github.com/obsqrbtz/clrsync");
            #elif __APPLE__
                system("open https://github.com/obsqrbtz/clrsync");
            #else
                system("xdg-open https://github.com/obsqrbtz/clrsync");
            #endif
        }
        ImGui::SameLine();
        
        ImGui::Spacing();
        ImGui::Spacing();
        ImGui::Separator();
        ImGui::Spacing();
        
        ImGui::TextColored(ImVec4(0.6f, 0.6f, 0.6f, 1.0f), "MIT License");
        ImGui::TextWrapped(
            "Copyright (c) 2025 Daniel Dada\n\n"
            "Permission is hereby granted, free of charge, to any person obtaining a copy "
            "of this software and associated documentation files (the \"Software\"), to deal "
            "in the Software without restriction, including without limitation the rights "
            "to use, copy, modify, merge, publish, distribute, sublicense, and/or sell "
            "copies of the Software, and to permit persons to whom the Software is "
            "furnished to do so, subject to the following conditions:\n\n"
            "The above copyright notice and this permission notice shall be included in all "
            "copies or substantial portions of the Software."
        );
        
        ImGui::Spacing();
        ImGui::Spacing();
        
        const float button_width = 120.0f;
        ImGui::SetCursorPosX((window_width - button_width) * 0.5f);
        if (ImGui::Button("Close", ImVec2(button_width, 0)))
        {
            m_visible = false;
        }
    }
    ImGui::End();
}