//! Slayt gösterisini test etmek için bağımsız GUI binary'si.
//!
//! Gerçek kurulum ekranındaki slideshow boyutlarında ve konumda görüntüler.
//!
//! Kullanım:
//!   cargo run --bin slides_test [desktop] [lang]
//!
//! desktop: "default" (varsayılan), "kde", "gnome", "xfce", "mate" vb.
//! lang:    "tr", "en" (varsayılan), "de" vb. — branding_{lang}.toml yüklenir

use eframe::egui;

fn main() -> eframe::Result<()> {
    let args: Vec<String> = std::env::args().collect();
    let desktop = args.get(1).cloned().unwrap_or_else(|| "default".to_string());
    let lang = args.get(2).cloned().unwrap_or_else(|| "tr".to_string());

    let options = eframe::NativeOptions {
        viewport: egui::ViewportBuilder::default()
            .with_inner_size([1200.0, 900.0])
            .with_min_inner_size([1080.0, 720.0])
            .with_title(format!("Slides Test - {} ({})", desktop, lang)),
        ..Default::default()
    };

    eframe::run_native(
        "Slideshow Test",
        options,
        Box::new(move |cc| {
            egui_extras::install_image_loaders(&cc.egui_ctx);

            let branding = yali_rs::branding::BrandingConfig::load_for_lang(&lang);
            let icons: std::collections::HashMap<String, String> = branding.slides.icons
                .iter()
                .map(|(k, v)| (k.clone(), yali_rs::branding::path_to_file_uri(v)))
                .collect();

            Box::new(SlidesApp {
                slideshow: yali_rs::ui::slideshow::Slideshow::new(
                    &desktop,
                    icons,
                    branding.slides.items.clone(),
                ),
            })
        }),
    )
}

struct SlidesApp {
    slideshow: yali_rs::ui::slideshow::Slideshow,
}

impl eframe::App for SlidesApp {
    fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) {
        egui::CentralPanel::default()
            .frame(egui::Frame::none().fill(yali_rs::ui::theme::c_bg_dark()))
            .show(ctx, |ui| {
                let available_w = ui.available_width();
                let available_h = ui.available_height();
                let slide_h = (available_h * 0.45).max(280.0);

                ui.allocate_ui(egui::vec2(available_w, slide_h), |ui| {
                    ui.vertical(|ui| {
                        ui.add_space(8.0);
                        yali_rs::ui::theme::section_heading(ui, "Slideshow Test");
                        ui.label(
                            egui::RichText::new("Gerçek kurulum boyutlarında slayt gösterisi")
                                .color(yali_rs::ui::theme::c_text_dim())
                                .size(13.0),
                        );
                        ui.add_space(16.0);

                        self.slideshow.show(ui);
                        ui.add_space(10.0);
                        ui.horizontal(|ui| {
                            if ui.small_button("‹").clicked() { self.slideshow.previous(); }
                            if ui.small_button("›").clicked() { self.slideshow.advance(); }
                        });
                    });
                });
            });
    }
}