//go:build !windows
// +build !windows

package tray

import (
	"fmt"
	"os"
	"os/signal"
	"syscall"

	"go.uber.org/zap"
)

// TrayManager 托盘管理器（非Windows平台实现）
type TrayManager struct {
	logger  *zap.Logger
	webPort int
	onExit  func()
}

// NewTrayManager 创建托盘管理器
func NewTrayManager(logger *zap.Logger, webPort int, onExit func()) *TrayManager {
	return &TrayManager{
		logger:  logger,
		webPort: webPort,
		onExit:  onExit,
	}
}

// Run 运行托盘（非Windows平台显示提示信息并阻塞）
func (t *TrayManager) Run() {
	t.logger.Info("非Windows系统，跳过托盘初始化")

	// 显示启动信息
	fmt.Println("")
	fmt.Println("========================================")
	fmt.Println("🌐 MeshRay 服务已启动")
	fmt.Println("========================================")
	fmt.Printf("📍 Web 管理界面: http://localhost:%d\n", t.webPort)
	fmt.Println("💡 提示: 使用 Ctrl+C 停止服务")
	fmt.Println("========================================")
	fmt.Println("")

	// 等待退出信号
	sigChan := make(chan os.Signal, 1)
	signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)

	<-sigChan

	t.logger.Info("收到退出信号，正在关闭...")
	if t.onExit != nil {
		t.onExit()
	}
}
