package main
import (
	"github.com/lxn/walk"
	"io/ioutil"
	"AD-Control/public"
	"strings"
	"os/exec"
)

//---------------------------------------------------------
//
//    Power
//
//---------------------------------------------------------

func menuInitPower(ni * walk.NotifyIcon){
	fa := "电源"
	sub := [...]string{"下班咯","关闭系统","用户注销","重启系统"}
	
	// 建立空菜单
	nm,err := walk.NewMenu()
	if err != nil {
		public.PrintLog(err)
	}

	for i,buttonText := range sub{
		// 建立 子按钮
		na := walk.NewAction()
		if err := na.SetText(buttonText); err != nil {
			public.PrintLog(err)
		}

		// 为子按钮 添加事件
		switch i{
		case 0:
			na.Triggered().Attach(pWorkOff)
		case 1:
			na.Triggered().Attach(pCloseWindows)
		case 3:
			na.Triggered().Attach(pLogOffUser)
		case 4:
			na.Triggered().Attach(pRebootComputer)
		
		}

		// 将 子按钮 添加到 菜单
		nm.Actions().Add(na)
	}
	//将菜单添加到托盘
	sysmenu,err := ni.ContextMenu().Actions().AddMenu(nm)
	if err != nil {
		public.PrintLog(err)
	}

	// 主菜单 属性
	sysmenu.SetText(fa)
	sysmenu.SetVisible(true)
	sysmenu.SetEnabled(true)
}
func pWorkOff(){
	public.SendServerReport(public.Msg_Report_Offwork)
}
func pCloseWindows(){
	//public.SendServerReport(public.Msg_Report_Offwork)

	public.PrintLog("关闭系统")
}
func pLogOffUser(){
	public.PrintLog("注销用户")
}

func pRebootComputer(){
	public.PrintLog("重启主机")
}


//--------------------------------------------------------------------
//
//    Software Install
//
//--------------------------------------------------------------------
func menuInitSoftwareInstall(ni * walk.NotifyIcon){
	fa := "软件安装"
	// 建立空菜单
	nm,err := walk.NewMenu()
	if err != nil {
		public.PrintLog(err)
	}
	list,err := ioutil.ReadDir(public.Env_ADSfoftlike)
	if err != nil {
		public.PrintLog(err)
	}
	for _,ueach := range list{
		each := ueach.Name()
		if each == ".DS_Store"{
			continue
		}
		each_noext := strings.TrimSuffix(strings.TrimSuffix(ueach.Name(),".exe"),".msi")

		// 建立 子按钮
		na := walk.NewAction()
		if err := na.SetText(each_noext); err != nil {
			public.PrintLog(err)
		}

		// 为子按钮 添加事件
		na.Triggered().Attach(func() {
			siEnter_admin(each)
		})

		// 将 子按钮 添加到 菜单
		nm.Actions().Add(na)
	}
	//将菜单添加到托盘
	sysmenu,err := ni.ContextMenu().Actions().AddMenu(nm)
	if err != nil {
		public.PrintLog(err)
	}

	// 主菜单 属性
	sysmenu.SetText(fa)
	sysmenu.SetVisible(true)
	sysmenu.SetEnabled(true)
}
func siEnter_admin(soft string){
	cmd := exec.Command(public.Env_ADSfoftlike + `\` + soft)
	cmd.Start()
}


//---------------------------------------------------------------
//
//     User Tools
//
//---------------------------------------------------------------
func menuInitUserTools(ni * walk.NotifyIcon){
	fa := "用户工具"
	sub := [...]string{"部门共享连接微盘","桌面文件连接微盘","隐藏桌面图标","恢复桌面图标"}
	// 建立空菜单
	nm,err := walk.NewMenu()
	if err != nil {
		public.PrintLog(err)
	}

	for i,buttonText := range sub{
		// 建立 子按钮
		na := walk.NewAction()
		if err := na.SetText(buttonText); err != nil {
			public.PrintLog(err)
		}

		// 为子按钮 添加事件
		switch i{
		case 0:
			na.Triggered().Attach(func(){utDeptLinkWxPan();return})
		case 1:
			na.Triggered().Attach(utDesktopLinkWxPan)
		case 2:
			na.Triggered().Attach(utHideIcon)
		case 3:
			na.Triggered().Attach(utShowIcon)
		
		}

		// 将 子按钮 添加到 菜单
		nm.Actions().Add(na)
	}

	//将菜单添加到托盘
	sysmenu,err := ni.ContextMenu().Actions().AddMenu(nm)
	if err != nil {
		public.PrintLog(err)
	}

	// 主菜单 属性
	sysmenu.SetText(fa)
	sysmenu.SetVisible(true)
	sysmenu.SetEnabled(true)
}
func utDeptLinkWxPan(){
	public.PrintLog("部门共享连接微盘")
}
func utDesktopLinkWxPan(){
	public.PrintLog("桌面文件连接微盘")
}
func utHideIcon(){
	public.PrintLog("隐藏图标")
}
func utShowIcon(){
	public.PrintLog("显示图标")
}


//---------------------------------------------------------------
//
//     file share
//
//---------------------------------------------------------------

func menuInitFileShares(ni * walk.NotifyIcon){
	// envhs := os.Getenv("HOMESHARE")
	// public.PrintLog(envhs)

	fa := "文件共享"
	// sub := [...]string{"部门共享连接微盘","隐藏桌面图标","恢复桌面图标"}
	// // 建立空菜单
	mfs,err := walk.NewMenu()
	if err != nil {
		public.PrintLog(err)
	}

	deptList,err := ioutil.ReadDir(public.Env_ADMain)
	if err !=nil {
		public.PrintLog(err)
	}
	for _,memberList := range deptList {
		nm,err := walk.NewMenu()
		if err != nil {
			public.PrintLog(err)
		}
		deptshare := memberList.Name()

		member,err := ioutil.ReadDir(public.Env_ADMain + `\` + deptshare)
		if err != nil {
			public.PrintLog(err)
		}
		for _,mem := range member{
			wokrer := mem.Name()
			// 建立 子按钮
			na := walk.NewAction()
			if err := na.SetText(strings.TrimSuffix(wokrer,".lnk")); err != nil {
				public.PrintLog(err)
			}

			// 为子按钮 添加事件
			na.Triggered().Attach(func(){fsOpenWindow(public.Env_ADMain + `\` + deptshare + `\` + wokrer);return})
				
			// 将 子按钮 添加到 菜单 
			nm.Actions().Add(na)
	
		}
		
		if m,err := mfs.Actions().AddMenu(nm);err != nil{
			public.PrintLog(err)
		}else{
			m.SetText(deptshare)
			m.SetVisible(true)
			m.SetEnabled(true)

		}
	}

	//将菜单添加到托盘
	sysmenu,err := ni.ContextMenu().Actions().AddMenu(mfs)
	if err != nil {
		public.PrintLog(err)
	}

	// 主菜单 属性
	sysmenu.SetText(fa)
	sysmenu.SetVisible(true)
	sysmenu.SetEnabled(true)
}

func fsOpenWindow(s string){
	public.PrintLog(s)
	exec.Command("explorer",s).Start()
}