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 2:
			na.Triggered().Attach(pLogOffUser)
		case 3:
			na.Triggered().Attach(pRebootWindows)
		case 4:
			na.Triggered().Attach(pCancelCloseWindows)
		
		}

		// 将 子按钮 添加到 菜单
		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.SendServerExec(public.Msg_Exec_CloseWindows)
}
func pLogOffUser(){
	public.SendServerExec(public.Msg_Exec_LogOffUser)

}
func pRebootWindows(){
	public.SendServerExec(public.Msg_Exec_RebootWindows)

}
func pCancelCloseWindows(){
	public.SendServerExec(public.Msg_Exec_CancelCloseWindows)
}

//--------------------------------------------------------------------
//
//    Software Install
//
//--------------------------------------------------------------------
func menuInitSoftwareInstall(ni * walk.NotifyIcon){
	fa := "软件安装"
	// 建立空菜单
	nm,err := walk.NewMenu()
	if err != nil {
		public.PrintLog(err)
	}
	list,err := ioutil.ReadDir(public.Env_ADSoftlike)
	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){
	go public.Msg("等待弹出安装窗口，请稍等。。")
	public.SendDaemonExec(public.Env_ADSoftlike + `\` + soft)
}


//---------------------------------------------------------------
//
//     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.Msg("等等嘛，还没好呢！")
}
func utDesktopLinkWxPan(){
	public.Msg("别别别别急，缓一缓！")
}
func utHideIcon(){
	public.Msg("emmmmmmm,大概下周吧，这周无望哈")
}
func utShowIcon(){
	public.Msg("仅供参考！！")
}


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

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

	fa := "文件共享"

	// // 建立空菜单
	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()
}


//---------------------------------------------------------------
//
//     Other
//
//---------------------------------------------------------------

func menuInitOther(ni * walk.NotifyIcon){
	fa := "其他"

	sub := [...]string{"Excel关键词分割","移动硬盘","重新加载"}
	// 建立空菜单
	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(oMultiSplit)
		case 1:
			na.Triggered().Attach(o_JR_huyibo_movedisk)
		case 2:
			na.Triggered().Attach(o_RebootUser)
		
		}

		// 将 子按钮 添加到 菜单
		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 oMultiSplit(){
	public.Execcmd_nowait(public.Startk + public.Link_MultiSplit)
}
func o_JR_huyibo_movedisk(){
	public.SendDaemonExec(`F:\SamsungPortableSSD.exe`)
}
func o_RebootUser(){
	public.Execcmd_nowait(public.Env_ADSoftTool_RebootUser)
}
