You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

120 lines
3.5 KiB

using ScadaTool.Helper;
using static ScadaTool.Helper.GoCSharpHelper;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Input;
namespace ScadaTool.ViewModel
{
public class MainViewModel : BaseViewModel
{
public MainViewModel()
{
#region 图标闪烁
bool tmp = false;
var timer = new System.Timers.Timer(1000);
timer.Elapsed += new System.Timers.ElapsedEventHandler((obj, args) =>
{
icoPath = tmp == true ? "Resources/icon_red.ico" : "Resources/none.ico";
tmp = tmp == true ? false : true;
});
timer.Start();
#endregion
#region Command
ExitApplicationCommand = new RelayCommand((_) =>
{
return true;
}, (_) =>
{
ViewModelHelper.Instance().UpdateUI(() =>
{
Application.Current.Shutdown();
});
});
ShowWindowCommand = new RelayCommand((_) =>
{
return true;
}, (_) =>
{
ViewModelHelper.Instance().UpdateUI(() =>
{
Application.Current.MainWindow.Show();
Application.Current.MainWindow.Activate();
});
});
HidenApplicationCommand = new RelayCommand((_) =>
{
return true;
}, (_) =>
{
ViewModelHelper.Instance().UpdateUI(() =>
{
Application.Current.MainWindow.Hide();
});
});
// 服务
var isTrue = true;
StartServiceCommand = new RelayCommand((_) =>
{
return isTrue;
}, (_) =>
{
string result = GoCSharpHelper.Instance().GoStringToCSharpString(run());
if (result.Equals("success"))
{
MessageBox.Show("服务启动\n" + result);
icoPath = "Resources/icon.ico";
isTrue = false;
timer.Dispose();
}
else
{
MessageBox.Show("服务启动失败\n" + result);
}
});
#endregion
}
#region Go
/// <summary>
/// 引入Go项目库
/// </summary>
/// <returns></returns>
[DllImport("scadatool_go.dll", EntryPoint = "run")]
extern static GoString run();
#endregion
#region 属性
private string mToolTip = "服务未启动";
public string toolTip
{
get => mToolTip;
set { mToolTip = value; NotifyChanged("toolTip"); }
}
private string mIcoPath = "Resources/icon_red.ico";
public string icoPath
{
get => mIcoPath;
set { mIcoPath = value; NotifyChanged("icoPath"); }
}
public ICommand ExitApplicationCommand { get; private set; }
public ICommand ShowWindowCommand { get; private set; }
public ICommand HidenApplicationCommand { get; private set; }
public ICommand StartServiceCommand { get; private set; }
#endregion
}
}