ldj/winform/main.cs

642 lines
23 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraNavBar;
using DevExpress.XtraBars.Ribbon;
using DevExpress.XtraTabbedMdi;
using System.Reflection;
//using DeiNiu.wms.Logical;
using DeiNiu.wms.Data;
using DeiNiu.wms.Data.Model;
using DevExpress.LookAndFeel;
using System.Xml;
using System.Runtime.InteropServices;
using DeiNiu.Utils;
using DeiNiu.wms.win.portalService;
using System.Deployment.Application;
using System.Threading;
namespace DeiNiu.wms.win
{
public partial class main : BasicRibbonForm
{
[DllImport("kernel32.dll")]
public static extern Boolean AllocConsole();
[DllImport("kernel32.dll")]
public static extern Boolean FreeConsole();
private int lastWareHouse = 0;
private string lastSvrUrl = "",lastMgrUrl="";
public main()
{
// initialConsole();
InitializeComponent();
// InitSkinGallery();
// UserLookAndFeel.Default.SetSkinStyle(defaultSkinName);
initialControles();
showLogin();
if (LoginInfo.UserId <= 0)
{
System.Environment.Exit(0);
}
}
private void initialConsole(){
#if DEBUG
AllocConsole();
Shell.WriteLine("注意:启动程序...");
Shell.WriteLine("");
#endif
}
private void initialControles()
{
this.ribbonControl1.ShowToolbarCustomizeItem = false; // hide top left menu
this.ribbonControl1.Minimized = true;
showRibbonEditPage();
dockPanel1.Options.ShowCloseButton = false;
// dockPanel1.Visibility = DevExpress.XtraBars.Docking.DockVisibility.AutoHide;
xtraTabbedMdiManager1.CloseTabOnMiddleClick = CloseTabOnMiddleClick.OnMouseUp;
this.WindowState = FormWindowState.Maximized;
// lbVersion.Text = "wms v1223";// System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString() +"--" +System.Deployment.Application.ApplicationDeployment.CurrentDeployment.CurrentVersion.ToString();
// lbVersion.Text = "DNWMS v" + Assembly.GetExecutingAssembly().GetName().Version.ToString();
lbVersion.Text = "DNWMS v" + getVersiion();
}
private void showRibbonEditPage()
{
int cnt = xtraTabbedMdiManager1.Pages.Count;
ribbonPageEdit.Visible = xtraTabbedMdiManager1.Pages.Count > 0; //hide editPage when no subform exist.
ribbonControl1.SelectedPage = ribbonControl1.Pages[0];
}
private void ribbonControl1_Merge(object sender, DevExpress.XtraBars.Ribbon.RibbonMergeEventArgs e)
{
//RibbonControl parentRRibbon = sender as RibbonControl;
//RibbonControl childRibbon = e.MergedChild;
//parentRRibbon.StatusBar.MergeStatusBar(childRibbon.StatusBar);
}
private void ribbonControl1_UnMerge(object sender, DevExpress.XtraBars.Ribbon.RibbonMergeEventArgs e)
{
//RibbonControl parentRRibbon = sender as RibbonControl;
//parentRRibbon.StatusBar.UnMergeStatusBar();
}
public Form getOpenedForm(string itemHeader)
{
int itemCount = xtraTabbedMdiManager1.Pages.Count;
foreach (XtraMdiTabPage itemPage in xtraTabbedMdiManager1.Pages)
{
if (itemHeader == itemPage.Text)
{
//MessageBox.Show("the page has been openned");
//设置活动Tab Page
xtraTabbedMdiManager1.SelectedPage = itemPage;
return itemPage.MdiChild;
}
}
return null;
}
public void OpenLink( Form itemForm, string itemHeader)
{
//遍历已打开的TabPage,若发现已打开过则不再重复打开并设置为Active
int itemCount = xtraTabbedMdiManager1.Pages.Count;
foreach (XtraMdiTabPage itemPage in xtraTabbedMdiManager1.Pages)
{
if (itemHeader == itemPage.Text)
{
//MessageBox.Show("the page has been openned");
//设置活动Tab Page
xtraTabbedMdiManager1.SelectedPage = itemPage;
return;
}
}
itemForm.MdiParent = this;
itemForm.Text = itemHeader;
itemForm.Show();
//设置为Active
xtraTabbedMdiManager1.SelectedPage = xtraTabbedMdiManager1.Pages[itemCount];
}
private void navBarControl1_LinkClicked(object sender, NavBarLinkEventArgs e)
{
if (LoginInfo.UserId <= 0)
{
showLogin();
return;
}
String itemHeader = e.Link.Caption;
//遍历已打开的TabPage,若发现已打开过则不再重复打开并设置为Active
int itemCount = xtraTabbedMdiManager1.Pages.Count;
foreach (XtraMdiTabPage itemPage in xtraTabbedMdiManager1.Pages)
{
if (itemHeader == itemPage.Text)
{
//MessageBox.Show("the page has been openned");
//设置活动Tab Page
xtraTabbedMdiManager1.SelectedPage = itemPage;
return;
}
}
String formName = e.Link.Item.Tag == null ? null : e.Link.Item.Tag.ToString();
if (string.IsNullOrEmpty(formName))
{
return;
}
showWaitForm();
String fullName = GetType().Namespace + "." + formName;
Assembly assembly = GetType().Assembly;
Type type = assembly.GetType(fullName);//AuthorityForm
if (type == null)
{
closeWaitForm();
showErrorMsg( e.Link.Item.Name + "窗体打开失败");
return;
}
Form itemForm = (Form)Activator.CreateInstance(type);
itemForm.MdiParent = this;
itemForm.Text = itemHeader;
closeWaitForm();
itemForm.Show();
//设置为Active
xtraTabbedMdiManager1.SelectedPage = xtraTabbedMdiManager1.Pages[itemCount];
showRibbonEditPage();
dockPanel1.Visibility = DevExpress.XtraBars.Docking.DockVisibility.AutoHide;
//AddPageMdi(e.Link.Item);
}
private new void showLogin()
{
// showErrorMsg(DateTime.Now.ToShortDateString());
int uid = LoginInfo.UserId;
Login lg = new Login();
lg.ShowDialog();
showWaitForm();
createMenus();
closeWaitForm();
}
private void createMenus(){
if (lastMgrUrl != Park.svrMgrUrl || lastWareHouse != Park.wareHouseId
|| lastSvrUrl != Park.svrUrl || LoginInfo.UserId <= 0)
{
// System.Environment.Exit(0);
this.navBarControl1.BeginUpdate();
this.navBarControl1.Groups.Clear();
this.navBarControl1.EndUpdate();
doClear();
if(LoginInfo.UserId <= 0)
return;
}
lastWareHouse = Park.wareHouseId;
lastSvrUrl = Park.svrUrl;
lastMgrUrl =Park.svrMgrUrl;
Park.loadConfig();
//if (Park.currentUser == null)
// {
// return;
// }
//string title = "";//得牛仓储
//this.Text = string.Format("{0}@{1}.{2}", LoginInfo.Account, Park.wareHouse,Park.svrMgrUrl/*"高达医药"*/);// string.Format("{0} {1}", title, LoginInfo.Account);
lbAccount.Text = string.Format("{0}@{1}.{2}", LoginInfo.Account, Park.wareHouse, Park.svrMgrUrl/*"高达医药"*/);// string.Format("{0} {1}", title, LoginInfo.Account);
this.InitSkinGallery();
// initailErpData();
this.navBarControl1.BeginUpdate();
this.navBarControl1.Groups.Clear();
// LAuthority la = new LAuthority();
// Dictionary<String, List<Authority>> auths = la.getCatedAuthorities(Park.currentUser.GetEmployee.ID);
Dictionary<String, string[]> result = null;
try
{
result = pclient.getCatedAuths(LoginInfo.UserId, Park.wareHouseId);
closeClient();
WmsConstants.SPECIAL_AUTHS = pclient.getSpecialAuths(LoginInfo.UserId, Park.wareHouseId);
closeClient();
}
catch (Exception er)
{
// showErrorMsg(er.Message);
return;
}
foreach (String cate in result.Keys)
{
NavBarGroup group1 = new NavBarGroup(cate);
foreach (string link in result[cate])
{
string[] rs = link.Split(':');
if (string.IsNullOrEmpty(rs[0]))
{
continue;
}
NavBarItem nbi = new NavBarItem(rs[0]);
nbi.Tag = rs[1];
nbi.Appearance.ForeColor= Color.White;
nbi.AppearanceHotTracked.ForeColor= Color.White;
group1.ItemLinks.Add(nbi);
}
if (group1.ItemLinks.Count > 0)
{
this.navBarControl1.Groups.Add(group1);
group1.Expanded = group1.ItemLinks.Count > 0;
group1.Expanded = group1.Expanded && WmsConstants.IS_MENU_EXPANDED;
}
if (group1.ItemLinks.Count == 0)
{
group1.Appearance.ForeColor = Color.LightGray;
group1.Hint = "无权访问";
}
}
this.navBarControl1.EndUpdate();
this.navBarControl1.LinkClicked += new NavBarLinkEventHandler(navBarControl1_LinkClicked);
showRibbonEditPage();
/*
List<Authority> auths = la.getAuthorities(Park.currentUser.GetEmployee.ID);
foreach (Authority auth in auths)
{
if (auth.auth_uplevel == 0) //category
{
NavBarGroup group1 = new NavBarGroup(auth.auth_name);
this.navBarControl1.Groups.Add(group1);
group1.Expanded = true;
foreach (Authority link in auths)
{
if (link.auth_uplevel == auth.ID)
{
NavBarItem nbi = new NavBarItem(link.auth_name);
nbi.Tag = link.auth_class;
group1.ItemLinks.Add(nbi);
}
}
}
}
*/
}
/**
* clear mdi,close forms
*
*/
private void doClear()
{
xtraTabbedMdiManager1.Pages.Clear();
// string title = "";//得牛仓储
// this.Text = string.Format("{0} {1}", title, "未登录");
}
private void barButtonItem1_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
if (LoginInfo.UserId <= 0)
{
doClear();
}
showLogin();
}
private void xtraTabbedMdiManager1_PageRemoved(object sender, MdiTabPageEventArgs e)
{
showRibbonEditPage();
}
private void dockPanel1_ClosingPanel(object sender, DevExpress.XtraBars.Docking.DockPanelCancelEventArgs e)
{
dockPanel1.Visibility = DevExpress.XtraBars.Docking.DockVisibility.AutoHide;
}
private void dockPanel1_Collapsed(object sender, DevExpress.XtraBars.Docking.DockPanelEventArgs e)
{
dockPanel1.Visibility = DevExpress.XtraBars.Docking.DockVisibility.AutoHide;
}
private void dockPanel1_VisibilityChanged(object sender, DevExpress.XtraBars.Docking.VisibilityChangedEventArgs e)
{
if (dockPanel1.Visibility == DevExpress.XtraBars.Docking.DockVisibility.Hidden)
{
dockPanel1.Visibility = DevExpress.XtraBars.Docking.DockVisibility.AutoHide;
}
}
/// <summary>
/// 与控制台交互
/// </summary>
static class Shell
{
/// <summary>
/// 输出信息
/// </summary>
/// <param name="format"></param>
/// <param name="args"></param>
public static void WriteLine(string format, params object[] args)
{
WriteLine(string.Format(format, args));
}
/// <summary>
/// 输出信息
/// </summary>
/// <param name="output"></param>
public static void WriteLine(string output)
{
Console.ForegroundColor = GetConsoleColor(output);
Console.WriteLine(@"[{0}]{1}", DateTimeOffset.Now, output);
}
/// <summary>
/// 根据输出文本选择控制台文字颜色
/// </summary>
/// <param name="output"></param>
/// <returns></returns>
private static ConsoleColor GetConsoleColor(string output)
{
if (output.StartsWith("警告")) return ConsoleColor.Yellow;
if (output.StartsWith("错误")) return ConsoleColor.Red;
if (output.StartsWith("注意")) return ConsoleColor.Green;
return ConsoleColor.Gray;
}
}
//private void xtraTabbedMdiManager1_FloatMDIChildActivated(object sender, EventArgs e)
//{
//}
//private void xtraTabbedMdiManager1_SelectedPageChanged(object sender, EventArgs e)
//{
// //RibbonControl subRibbon = ((basicRibbonForm)xtraTabbedMdiManager1.SelectedPage.MdiChild).getRibbon();
// //this.ribbonControl1.MergeRibbon(subRibbon);
//}
#region
//初始化皮肤
string defaultSkinName = "VS2010";
void InitSkinGallery()
{
DevExpress.XtraEditors.WindowsFormsSettings.DefaultFont = new Font("黑体 常规", 12);
// gallerySkins.Manager = barManager1;
// DevExpress.XtraBars.Helpers.SkinHelper.InitSkinGalleryDropDown(gallerySkins, true);
// CheckFile();//检查文件
// GetXmlSkin();//获取xml主题
// UserLookAndFeel.Default.SetSkinStyle("DevExpress Style");
if (!string.IsNullOrEmpty(LoginInfo.Theme))
{
defaultSkinName = LoginInfo.Theme;
// defaultSkinName = "Summer 2008";
}
DevExpress.UserSkins.BonusSkins.Register();
DevExpress.Skins.SkinManager.EnableFormSkins();
//This set the style to use skin technology
DevExpress.LookAndFeel.UserLookAndFeel.Default.Style = DevExpress.LookAndFeel.LookAndFeelStyle.Skin;
if (!string.IsNullOrEmpty(defaultSkinName))
{
UserLookAndFeel.Default.SetSkinStyle(defaultSkinName);//设置主题样式
}
}
/*
//检查是否有皮肤名称的xml配置文件
public void CheckFile()
{
try
{
if (System.IO.File.Exists("SkinInfo.xml") == false)
{
CreateXml();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
// 创建XML文件
public void CreateXml()
{
XmlDocument doc = new XmlDocument(); //建立xml定义声明
XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "utf-8", null);
doc.AppendChild(dec);
XmlElement root = doc.CreateElement("SetSkin"); //创建根节点
XmlElement rootone = doc.CreateElement("Skinstring");//皮肤
doc.AppendChild(root);//将onetwo插入到root节点下
root.AppendChild(rootone);
doc.Save("SkinInfo.xml");//保存皮肤名称文件为xml格式
}
//读取Xml节点内容
public void GetXmlSkin()
{
try
{
XmlDocument mydoc = new XmlDocument();
mydoc.Load("SkinInfo.xml");//从xml文件中提取皮肤名称
XmlNode ressNode = mydoc.SelectSingleNode("SetSkin");//头和尾
defaultSkinName = ressNode.SelectSingleNode("Skinstring").InnerText;//把提取出来的皮肤名称存到defaultSkinName中
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
*/
private void skinRibbonGalleryBarItem1_Gallery_ItemClick(object sender, GalleryItemClickEventArgs e)
{
if (skinRibbonGalleryBarItem1.Gallery == null)
{
return;
}
try
{
showWaitForm();
/*
XmlDocument doc = new XmlDocument();
doc.Load("SkinInfo.xml");
XmlNodeList nodelist = doc.SelectSingleNode("SetSkin").ChildNodes;
foreach (XmlNode node in nodelist)
{
XmlElement xe = (XmlElement)node;//将子节点类型转换为XmlElement类型
if (xe.Name == "Skinstring")
{
xe.InnerText = skinRibbonGalleryBarItem1.Gallery.GetCheckedItems()[0].Caption;//主题的描述,保存所选的主题名称,参见GetCheckedItems()[0]函数的解释,主要用这个函数提取皮肤名称
}
}
doc.Save("SkinInfo.xml");
*/
if (LoginInfo.UserId >0)
{
string tag = skinRibbonGalleryBarItem1.Gallery.GetCheckedItems()[0].Tag.ToString();//caption;
string caption = skinRibbonGalleryBarItem1.Gallery.GetCheckedItems()[0].Caption;
try
{
pclient.updateUserTheme(LoginInfo.UserId,skinRibbonGalleryBarItem1.Gallery.GetCheckedItems()[0].Tag.ToString());
closeClient();
}
catch
{
return;
}
//Park.currentUser.GetEmployee.em_profile = skinRibbonGalleryBarItem1.Gallery.GetCheckedItems()[0].Tag.ToString();//caption;
//Park.currentUser.GetEmployee.Update();
}
// System.Threading.Thread.CurrentThread.Join(10);
}
catch (Exception er)
{
DeiNiu.Utils.LogHelper.WriteLog(typeof(main), er);
}
finally
{
closeWaitForm();
}
}
#endregion
private void main_FormClosing(object sender, FormClosingEventArgs e)
{
if (MessageBox.Show("真的要退出程序吗?", "退出程序", MessageBoxButtons.OKCancel) == DialogResult.Cancel)
{
e.Cancel = true;
}
// LogHelper.debug(this.GetType(), "is closing....");
}
private void main_FormClosed(object sender, FormClosedEventArgs e)
{
// showWaitForm();
try
{
Thread stockCheckThread = new Thread(closeapp);
stockCheckThread.IsBackground = true;
stockCheckThread.Start();
}
catch { }
// LogHelper.debug(this.GetType(), " closed....");
}
private void closeapp()
{
System.Environment.Exit(0);
}
private void barButtonItem2_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
if (MessageBox.Show("真的要退出程序吗?", "退出程序", MessageBoxButtons.OKCancel) == DialogResult.Cancel)
{
return;
}
// showWaitForm();
try
{
System.Environment.Exit(0);
}
catch { }
}
private void bbiAbout_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
DeiNiu.wms.win.utils.frmAbout Ab = new DeiNiu.wms.win.utils.frmAbout();
Ab.ShowDialog();
}
private void barButtonItem3_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
ConfigPrint cp = new ConfigPrint();
OpenLink(cp,cp.Text);
}
/// <summary>
/// 获取客户端发布版本号
/// </summary>
/// <returns>当前版本号</returns>
private static string getVersiion()
{
var version = "";
if (ApplicationDeployment.IsNetworkDeployed)//是否已连接
{
ApplicationDeployment currDeployment = ApplicationDeployment.CurrentDeployment;
DateTime lastCheck = currDeployment.TimeOfLastUpdateCheck.ToLocalTime();
var lastDay = lastCheck.Date.ToShortDateString();
var lastTime = lastCheck.TimeOfDay.ToString();
var majorVersion = currDeployment.CurrentVersion.Major.ToString();//主版本
var minorVersion = currDeployment.CurrentVersion.Minor.ToString(); //次版本
var revisionVersion = currDeployment.CurrentVersion.Revision.ToString();//内部版本号
var blildVersion = currDeployment.CurrentVersion.Build.ToString();//修订号
version = majorVersion + "." + minorVersion + "." + blildVersion + "." + revisionVersion;
}
return version;
}
}
}