/* cmd_demo: 命令行参数解析演示（窗口版） */
#include "eduwin.h"

#define WIN_W 500
#define WIN_H 360
#define LABEL_X 20
#define LABEL_W 460
#define LABEL_H 24
#define ROW_GAP 28

/* 窗口关闭回调 */
static int on_close(void *d)
{
    (void)d;
    return 1; /* 返回非零值 = 允许关闭 */
}

int main(void)
{
    /* ── 1. 解析命令行参数 ── */
    cmd_init();

    /* ── 2. 初始化 eduwin ── */
    init_app();

    /* ── 3. 创建窗口 ── */
    HWND win = create_window(L"cmd_demo — 命令行参数", WIN_W, WIN_H);
    on_window_close(win, on_close, NULL);

    /* ── 4. 逐行展示参数 ── */
    WCHAR buf[512];
    int y = 10;

    /* 应用程序路径 */
    str_format(buf, 512, L"程序: %s", GetCommandLineW());
    create_label(win, buf, LABEL_X, y, LABEL_W, LABEL_H);
    y += ROW_GAP;

    /* 分隔线 */
    create_label(win, L"──────────────────────────", LABEL_X, y, LABEL_W, LABEL_H);
    y += ROW_GAP;

    /* 逐个检测参数 */
    struct { const WCHAR *name; const WCHAR *label; const WCHAR *def; } params[] = {
        { L"--url",      L"起始 URL",      L"about:blank" },
        { L"--port",     L"WS 端口",       L"9099" },
        { L"--title",    L"窗口标题",      L"AI Browser" },
        { L"--name",     L"应用名称",      L"(未设置)" },
        { L"--visible",  L"显示模式",      L"(未设置)" },
        { L"--headless", L"隐身模式",      L"(未设置)" },
    };
    int n = sizeof(params) / sizeof(params[0]);

    for (int i = 0; i < n; i++) {
        if (cmd_has(params[i].name)) {
            const WCHAR *val = cmd_get(params[i].name);
            if (wcscmp(val, L"1") == 0) {
                str_format(buf, 512, L"✔  %s: 已启用", params[i].label);
            } else {
                str_format(buf, 512, L"✔  %s: %s", params[i].label, val);
            }
        } else {
            str_format(buf, 512, L"    %s: %s (默认)", params[i].label, params[i].def);
        }
        create_label(win, buf, LABEL_X, y, LABEL_W, LABEL_H);
        y += ROW_GAP;
    }

    /* 分隔线 + 说明 */
    y += 8;
    create_label(win, L"──────────────────────────", LABEL_X, y, LABEL_W, LABEL_H);
    y += ROW_GAP;
    create_label(win, L"用法: cmd_demo --visible --url https://www.bing.com", LABEL_X, y, LABEL_W, LABEL_H);
    y += ROW_GAP;
    create_label(win, L"        cmd_demo --name MyApp --port 8080", LABEL_X, y, LABEL_W, LABEL_H);

    /* ── 5. 显示窗口并运行 ── */
    show_window(win);
    run_app();

    cmd_cleanup();
    return 0;
}
