using System;
using System.Drawing;
using System.Windows.Forms;
using ProjectBase.Controls;
using DevExpress.XtraTabbedMdi;
using ProjectBase.Data.Logs;
using SIMDP.Util;
using System.Net;
using System.Management;
using SIMDP.BLL;
using ProjectBase.Data.Redis;
using StackExchange.Redis;
using SIMDP.Model;
using ProjectBase.Data.BaseDAL;
using SIMDP.Project;
namespace SIMDP
{
public partial class MainForm : DevExpress.XtraBars.Ribbon.RibbonForm
{
//用来第一次创建动态菜单
private SIMDP.RibbonPageHelper.RibbonPageHelper ribbonHelper = null;
private delegate void messageDelegate();
private NotifyWindow notifyWindow = null;
Scheduler task = new Scheduler();
private RedisHelper redis = new RedisHelper(0);
public MainForm()
{
InitializeComponent();
}
private void MainForm_Load(object sender, EventArgs e)
{
//ToDo:最小化托盘显示
this.notifyIcon1.Visible = true;
this.ribbonControl.Minimized = false;//菜单展开
task.Schedule();
GetIpMac();
this.label_Version.Caption = "当前版本号:" + System.Configuration.ConfigurationManager.AppSettings["Version"];
string defaultUser = System.Configuration.ConfigurationManager.AppSettings["DefaultUser"];
if (defaultUser != null && defaultUser != "")
{
SysEnvironment.CurrentLoginID = defaultUser; ///默认登录用户
//开启规则窗口
//FormLogIn form = new FormLogIn();
//form.MdiParent = this;
//form.Show();
//开启XX窗口
//FormMonitorNode form = new FormMonitorNode();
//form.MdiParent = this;
//form.Show();
LogIn();
SysSubscribeEvent();
barButtonItemReset_ItemClick(this, null);
}
else
{
LogIn();
SysSubscribeEvent();
barButtonItemReset_ItemClick(this, null);
}
//FormSwipeToLogin form = new FormSwipeToLogin();
//form.Show();
}
private void GetIpMac()
{
//获取本机的IP地址和MAC地址
IPAddress[] ipadrlist = Dns.GetHostAddresses(Dns.GetHostName());
string ip = null;
foreach (IPAddress item in ipadrlist)
{
if (item.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
{
ip = SysEnvironment.Ip = item.ToString();
}
}
string mac = null;
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
if ((bool)mo["IPEnabled"] == true)
{
mac = SysEnvironment.Mac = mo["MacAddress"].ToString();
break;
}
}
}
///
/// 动态创建界面菜单对象
///
private void InitRibbonPage()
{
try
{
//BlAuthoryUser blUser = new BlAuthoryUser();
//BlRoleRight blRoleRight = new BlRoleRight();
//MoAuthoryUser user = BLLFactory.Instance.FindByID(SysEnvironment.CurrentLoginID);
this.barStaticItem_User.Caption = string.Format("{0},欢迎登录", SysEnvironment.CurrentLoginName);
//动态创建界面菜单对象(防止重复构建)
if (ribbonHelper == null)
{
ribbonHelper = new SIMDP.RibbonPageHelper.RibbonPageHelper(this, ref this.ribbonControl);
ribbonHelper.AddPages();
}
}
catch (Exception ex)
{
DevExpress.XtraEditors.XtraMessageBox.Show("获取该用户权限失败。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
LogHelper.log.Error(string.Format("初始化界面菜单出现错误:{0}", ex.ToString()));
}
}
private void xtraTabbedMdiManager1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button != MouseButtons.Right)
return;
DevExpress.XtraTab.ViewInfo.BaseTabHitInfo hi = xtraTabbedMdiManager1.CalcHitInfo(new Point(e.X, e.Y));
if (hi.HitTest == DevExpress.XtraTab.ViewInfo.XtraTabHitTest.PageHeader)
{
popupMenu1.ShowPopup(Cursor.Position);
}
}
private void pop_CloseCurrent_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
XtraMdiTabPage page = xtraTabbedMdiManager1.SelectedPage;
if (page != null && page.MdiChild != null)
{
page.MdiChild.Close();
}
}
private void pop_CloseAll_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
foreach (Form form in this.MdiChildren)
{
form.Close();
if (form != null && !form.IsDisposed)
{
form.Dispose();
}
}
}
private void pop_CloseOther_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
XtraMdiTabPage selectedPage = xtraTabbedMdiManager1.SelectedPage;
Type currentType = selectedPage.MdiChild.GetType();
for (int i = xtraTabbedMdiManager1.Pages.Count - 1; i >= 0; i--)
{
XtraMdiTabPage page = xtraTabbedMdiManager1.Pages[i];
if (page != null && page.MdiChild != null)
{
Form form = page.MdiChild;
if (form.GetType() != currentType)
{
form.Close();
if (form != null && !form.IsDisposed)
{
form.Dispose();
}
}
}
}
}
///
/// 登录验证
///
private void LogIn()
{
Type type = Type.GetType("SIMDP.FormLogIn");
FormLogIn logIn = ChildWinManagement.LoadMdiForm(this, type) as FormLogIn;
this.xtraTabbedMdiManager1.Pages[0].ShowCloseButton = DevExpress.Utils.DefaultBoolean.False;
logIn.myRefresh += new FormLogIn.refresh(InitRibbonPage);
}
///
/// 退出系统
///
///
///
private void barBtnItem_Quit_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.Close();
}
///
/// 重新登录
///
///
///
private void barBtnItem_ReLogIn_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
SysEnvironment.CurrentLoginID = null;
SysEnvironment.passWordMD5 = null;
this.barStaticItem_User.Caption = "欢迎登录";
pop_CloseAll_ItemClick(sender, e);
this.ribbonControl.Pages.Clear();
ribbonHelper = null;
LogIn();
}
///
/// 修改密码
///
///
///
private void barBtnItem_EditPassWord_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
FormChangePassWord passWord = new FormChangePassWord();
passWord.ShowDialog();
if (passWord.DialogResult == DialogResult.OK)
{
barBtnItem_ReLogIn_ItemClick(sender,e);
}
}
///
/// OPC重新连接
///
///
///
private void barButtonItemReset_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
try
{
PlcHelper.Instance.Connect();
//Thread.Sleep(5000);
if (e != null)
DevExpress.XtraEditors.XtraMessageBox.Show("OPC连接成功");
}
catch (Exception ex)
{
DevExpress.XtraEditors.XtraMessageBox.Show("OPC连接失败\n" + ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
LogHelper.log.Error(string.Format("OPC线程重启失败:{0}", ex.ToString()));
}
}
///
/// OPC 断开
///
///
///
private void barButtonItemCancle_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
try
{
PlcHelper.Instance.Close();
DevExpress.XtraEditors.XtraMessageBox.Show("OPC连接已断开");
}
catch (Exception ex)
{
DevExpress.XtraEditors.XtraMessageBox.Show("OPC断开失败", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
LogHelper.log.Error(string.Format("OPC线程断开失败:{0}", ex.ToString()));
}
}
///
/// 最小化托盘退出
///
/// param >
/// < param name="e">
private void menu_Exit_Click(object sender, EventArgs e)
{
this.Close();
}
///
/// 窗口大小发生变化时发生
///
/// param >
/// < param name="e">
private void MainForm_Resize(object sender, EventArgs e)
{
//ToDo:窗口最小化到托盘
//if (this.WindowState == FormWindowState.Minimized)
//{
// this.Visible = false;
// this.notifyIcon1.Visible = true;
//}
}
///
/// 托盘鼠标双击事件
///
/// param >
/// < param name="e">
private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
{
this.Visible = true;
this.WindowState = FormWindowState.Maximized;
this.Show();
this.Activate();
}
private void menu_Hide_Click(object sender, EventArgs e)
{
this.Hide();
}
private void menu_Open_Click(object sender, EventArgs e)
{
notifyIcon1_MouseDoubleClick(sender, null);
}
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
if (DevExpress.XtraEditors.XtraMessageBox.Show("您确定要退出吗?", "新松智能制造数据平台", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
{
//FormUserVerification form = new FormUserVerification();
//form.ShowDialog();
//if (form.DialogResult != DialogResult.OK)
//{
// DevExpress.XtraEditors.XtraMessageBox.Show("用户验证失败。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
// e.Cancel = true;
//}
//e.Cancel = true;
task.Stop();
//this.notifyIcon1.Visible = false;
//this.Close();
}
else
{
e.Cancel = true;
}
}
///
/// 订阅系统提示消息
///
private void SysSubscribeEvent()
{
string channel = SysEnvironment.SystemMessage;
redis.Subscribe(channel, new Action(InsertSysMessage));
}
///
/// 发布时插入数据库
///
///
///
private void InsertSysMessage(RedisChannel channel, RedisValue message)
{
try
{
string[] arr = message.ToString().Split('|');
MoSystemNotice mo = new MoSystemNotice();
mo.NoticeTitle = arr[0];
mo.NoticeType = Convert.ToInt32(arr[1]);
mo.NoticeContent = arr[2];
mo.NoticeTime = Convert.ToDateTime(arr[3]);
mo.NoticeSign = Convert.ToBoolean(arr[4]);
BLLFactory.Instance.Insert(mo);
if (this.InvokeRequired)
{
messageDelegate mes = new messageDelegate(ShowSysMessage);
this.Invoke(mes, null);
}
else
{
ShowSysMessage();
}
}
catch (Exception ex)
{
LogHelper.log.Error("显示订阅系统提示信息 出现错误" + ex);
}
}
//显示系统消息提示框
private void ShowSysMessage()
{
if (notifyWindow == null || notifyWindow.IsDisposed)
{
notifyWindow = new NotifyWindow("系统提示信息", "");
notifyWindow.SetDimensions(600, 200);
notifyWindow.WaitTime = 50;
notifyWindow.Notify();
}
else
{
notifyWindow.Activate();
notifyWindow.RefreshWindow();
return;
}
}
}
}