// ============================================================
// 主进程 Logo 自适应工具
// 根据平台返回正确的图标路径，处理 .ico / .png / .icns 格式差异
// ============================================================

import path from 'node:path';
import { isMacOS, isWindows } from './platform';

// Logo 资源目录（相对于构建后的 dist-electron 目录或开发时的 electron/ 目录）
// 开发时 app.getAppPath() 指向项目根目录
// 生产时指向 app.asar 所在目录

/** Logo 目录在项目中的相对路径 */
const LOGO_DIR = 'src/assets/logo';

/**
 * 获取 Logo 资源目录的绝对路径
 * @param appPath - Electron app.getAppPath() 的返回值
 */
export function getLogoDir(appPath: string): string {
   return path.join(appPath, LOGO_DIR);
}

/**
 * 按平台获取窗口图标路径
 *
 * 平台格式要求：
 *   Windows → .ico（支持多尺寸）
 *   macOS   → .icns（首选）或 .png（回退）
 *   Linux   → .png
 *
 * @param appPath - Electron app.getAppPath()
 * @returns 图标文件的绝对路径
 */
export function getWindowIconPath(appPath: string): string {
   const logoDir = path.join(appPath, LOGO_DIR);

   if (isWindows()) {
      // Windows 首选 .ico
      return path.join(logoDir, 'heixiu.ico');
   }

   if (isMacOS()) {
      return path.join(logoDir, 'heixiu.icns');
   }

   // Linux 使用 .png
   return path.join(logoDir, 'HX.png');
}

/**
 * 按平台获取系统托盘图标路径
 * 托盘图标通常用 .png（跨平台通用），且尺寸较小
 *
 * @param appPath - Electron app.getAppPath()
 * @returns 托盘图标绝对路径
 */
export function getTrayIconPath(appPath: string): string {
   const logoDir = path.join(appPath, LOGO_DIR);

   if (isWindows()) {
      // Windows 托盘可用 .ico 或小尺寸 .png
      return path.join(logoDir, 'heixiu.ico');
   }

   // macOS / Linux 托盘用 .png
   return path.join(logoDir, 'HX.png');
}

/**
 * 按平台获取应用安装包图标路径
 * electron-builder 打包时使用，各平台格式不同：
 *   Windows → .ico
 *   macOS   → .icns
 *   Linux   → .png（通常 256x256 或 512x512）
 *
 * @param appPath - 应用根目录路径
 * @returns 安装包图标的绝对路径
 */
export function getInstallerIconPath(appPath: string): string {
   const logoDir = path.join(appPath, LOGO_DIR);

   if (isWindows()) {
      return path.join(logoDir, 'heixiu.ico');
   }

   if (isMacOS()) {
      return path.join(logoDir, 'heixiu.icns');
   }

   // Linux
   return path.join(logoDir, 'HX.png');
}

/**
 * 获取通用 PNG Logo（不区分平台，用于 About 对话框等）
 */
export function getPngLogoPath(appPath: string): string {
   return path.join(appPath, LOGO_DIR, 'HX.png');
}
