MetroSetting.cs 12.5 KB
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 Dal;
using Comm;
using MachineDll;

namespace App
{
    public partial class MetroSetting : FrmBase
    {
        private float beforeWidth;//宽
        private float beforeHeight;//长
        private bool flag = false;//用来标识界面是否已经加载完成
        private Dictionary<Control, Rectangle> controlsSize = new Dictionary<Control, Rectangle>();
        private LoginManager _loginManager;

        private readonly TheMachine theMachine;

        public MetroSetting(LoginManager loginManager)
        {
            theMachine = GetMachineFromMe.GetMachine;
            InitializeComponent();
            this.showDataPanel.Location = new Point((this.Width - this.showDataPanel.Width) / 2, 2);
            this.WindowState = FormWindowState.Maximized;
            this.SetLanguage(this);
            this._loginManager = loginManager;
            init();
            showSetting();
        }
        private void init()
        {
            this.Text = getMsg("systemSetting");
            this.groupBox1.Text = getMsg("FrmMDIcms_PortsSettings");
            this.lengthUnitPanel.Text = getMsg("FrmMDIrb_LengthUnit");
            this.resultUnitPanel.Text = getMsg("FrmMDIrb_TestResultUnit");
            this.tempatureUnitPanel.Text = getMsg("FrmMDIrb_TemplateUnit");
            this.timeUnitPanel.Text = getMsg("FrmMDIrb_TimeUnit");
            this.chooseLanguagePanel.Text = getMsg("FrmMDIrb_Language.InfoTitle");

            this.chooseLanguageComboBox.Items.Clear();
            this.chooseLanguageComboBox.Items.Add(getMsg("FrmMDItsmi_ch"));
            this.chooseLanguageComboBox.Items.Add(getMsg("FrmMDItsmi_en"));
            this.chooseLanguageComboBox.Items.Add(getMsg("FrmMDItsmi_jp"));

            this.portComboBox.Items.Clear();
            this.portComboBox.Items.Add(getMsg("FrmMDItsmi_Port1"));
            this.portComboBox.Items.Add(getMsg("FrmMDItsmi_Port2"));
            this.portComboBox.Items.Add(getMsg("FrmMDItsmi_Port3"));
            this.portComboBox.Items.Add(getMsg("FrmMDItsmi_Port4"));
            this.portComboBox.Items.Add(getMsg("FrmMDItsmi_Port5"));
            this.portComboBox.Items.Add(getMsg("FrmMDItsmi_Port6"));

            this.cmUint.Text = getMsg("FrmMDItsmi_cm");
            this.inUint.Text = getMsg("FrmMDItsmi_in");

            this.squareCnUnit.Text = getMsg("FrmMDItsmi_EqNaClcm");
            this.squareInUnit.Text = getMsg("FrmMDItsmi_EqNaClin");

            this.celsiusUnit.Text = getMsg("FrmMDItsmi_C");
            this.FahrenheitUnit.Text = getMsg("FrmMDItsmi_F");

            this.minUnit.Text = getMsg("FrmMDItmsi_min");
            this.secondUnit.Text = getMsg("FrmMDItsmi_s");

            this.saveButton.Text = getMsg("FrmMDIrb_Save");
            this.cancelButton.Text = getMsg("back");
            
        }
        private void MetroSetting_Load(object sender, EventArgs e)
        {
            //获取屏幕的长宽、得到一个比例,将里面控件的长宽乘以该比例
            //窗体原本大小为620,417

            float scaleHeight = (float)Screen.PrimaryScreen.WorkingArea.Height / 417;
            float scaleWidth = (float)Screen.PrimaryScreen.WorkingArea.Width / 620;
            foreach (Control ctl in settingPanel.Controls)
            {
                if (ctl is MetroFramework.Controls.MetroPanel)
                {
                    ctl.Top = (int)(ctl.Top * scaleWidth);
                    ctl.Left = (int)(ctl.Left * scaleHeight);
                    ctl.Width = (int)(ctl.Width * scaleHeight);
                    ctl.Height = (int)(ctl.Height * scaleWidth);
                }
            }
            
        }


        private void showSetting()
        {
            //判断它的语言
            switch(Fuction.m_Language)
            {
                case Const.LANGUAGE_CHINESE:
                    this.chooseLanguageComboBox.SelectedIndex = 0;break;
                case Const.LANGUAGE_ENGLISH:
                    this.chooseLanguageComboBox.SelectedIndex = 1;break;
                case Const.LANGUAGE_JAPANESE:
                    this.chooseLanguageComboBox.SelectedIndex = 2;break;
                default: break;
            }
            //显示长度设置
            if (Fuction.m_UserLengthUnit == Const.LENGTHUNIT_CM)
            {
                this.cmUint.Checked = true;
                this.inUint.Checked = false;
            }
            else
            {
                this.cmUint.Checked = false;
                this.inUint.Checked = true;
            }
            //显示结果设置
            if (Fuction.m_UserResult == Const.RESULT_CM)
            {
                this.squareCnUnit.Checked = true;
                this.squareInUnit.Checked = false;
            }
            else
            {
                this.squareCnUnit.Checked = false;
                this.squareInUnit.Checked = true;
            }
            //显示温度设置
            if (Fuction.m_UserTempUnit == Const.TEMPUNIT_C)
            {
                this.celsiusUnit.Checked = true;
                this.FahrenheitUnit.Checked = false;
            }
            else
            {
                this.celsiusUnit.Checked = false;
                this.FahrenheitUnit.Checked = true;
            }
            //显示时间设置
            if (Fuction.m_UserTimeUnit == Const.TIMEUNIT_MIN)
            {
                this.minUnit.Checked = true;
                this.secondUnit.Checked = false;
            }
            else
            {
                this.minUnit.Checked = false;
                this.secondUnit.Checked = true;
            }
            //显示端口
            switch (fuction.GetParameterByParaName(Const.PARA_PORT, "currency"))
            {
                case Const.PORT_1:
                    this.portComboBox.SelectedIndex = 0;
                    break;
                case Const.PORT_2:
                    this.portComboBox.SelectedIndex = 1;
                    break;
                case Const.PORT_3:
                    this.portComboBox.SelectedIndex = 2;
                    break;
                case Const.PORT_4:
                    this.portComboBox.SelectedIndex = 3;
                    break;
                case Const.PORT_5:
                    this.portComboBox.SelectedIndex = 4;
                    break;
                case Const.PORT_6:
                    this.portComboBox.SelectedIndex = 5;
                    break;
                default:
                    break;
            }
        }
        /**
         * 点击测试端口按钮
         */
        private void testPortButton_Click(object sender, EventArgs e)
        {
            
            this.testPortButton.Enabled = false;
            string port = theMachine.TestConnection();
            if (port != "")
            {
                MessageBox.Show(port + getMsg("PortIsAvailable"));
            }
            else
            {
                MessageBox.Show(getMsg("ConfirmPort"));
            }
            this.testPortButton.Enabled = true;
           
        }

        private void testPortButton_MouseHover(object sender, EventArgs e)
        {
            ToolTip tt = new ToolTip();
            tt.SetToolTip(this.testPortButton, getMsg("FrmMDIrb_TestPort"));
        }

        /**
         * 保存所有设置
         */
        private void saveButton_Click(object sender, EventArgs e)
        {
            //判断端口
            string m_port = "";
            switch (this.portComboBox.SelectedIndex)
            {
                case 0:
                    m_port = Const.PORT_1;
                    break;
                case 1:
                    m_port = Const.PORT_2;
                    break;
                case 2:
                    m_port = Const.PORT_3;
                    break;
                case 3:
                    m_port = Const.PORT_4;
                    break;
                case 4:
                    m_port = Const.PORT_5;
                    break;
                case 5:
                    m_port = Const.PORT_6;
                    break;
                default:
                    break;
            }
            //判断长度
            if (this.cmUint.Checked) 
            {
                Fuction.m_UserLengthUnit = Const.LENGTHUNIT_CM;
            }
            else
            {
                Fuction.m_UserLengthUnit = Const.LENGTHUNIT_IN;
            }
            //判断结果
            if(this.squareCnUnit.Checked)
            {
                Fuction.m_UserResult = Const.RESULT_CM;
            }
            else
            {
                Fuction.m_UserResult = Const.RESULT_IN;
            }
            //判断温度
            if(this.celsiusUnit.Checked)
            {
                Fuction.m_UserTempUnit = Const.TEMPUNIT_C;
            }
            else
            {
                Fuction.m_UserTempUnit = Const.TEMPUNIT_F;
            }
            //判断时间
            if(this.minUnit.Checked)
            {
                Fuction.m_UserTimeUnit = Const.TIMEUNIT_MIN;
            }
            else
            {
                Fuction.m_UserTimeUnit = Const.TIMEUNIT_S;
            }
            fuction.CreateParaConfig("", "currency", Const.USER_TIMEUNIT, Fuction.m_UserTimeUnit);
            //判断语言
            switch (this.chooseLanguageComboBox.SelectedIndex)
            {
                case 0: Fuction.m_Language = Const.LANGUAGE_CHINESE; break;
                case 1: Fuction.m_Language = Const.LANGUAGE_ENGLISH; break;
                case 2: Fuction.m_Language = Const.LANGUAGE_JAPANESE; break;
                default: break;
            }
            if (fuction.CreateParaConfig("", "currency", Const.PARA_PORT, m_port) &&
                fuction.CreateParaConfig("", "currency", Const.USER_LENGTHUNIT, Fuction.m_UserLengthUnit) &&
                fuction.CreateParaConfig("", "currency", Const.USER_RESULT, Fuction.m_UserResult) &&
                fuction.CreateParaConfig("", "currency", Const.USER_TEMPUNIT, Fuction.m_UserTempUnit) &&
                fuction.CreateParaConfig("", "currency", Const.USER_LANGUAGE, Fuction.m_Language))
            {
                ShowMessageBox.ShowInfo(Const.MESSAGEBOX_TITLE_NOTE, Const.SUCCESS_OPERATION);
            }
            else
            {
                ShowMessageBox.ShowError(Const.MESSAGEBOX_TITLE_NOTE, "", Const.ERROR_OPERATION);
            }
            this.Close();
        }
        /**
         * 取消更改设置
         */
        private void cancelButton_Click(object sender, EventArgs e)
        {
            this.Close();
            //MetroMDI mm = new MetroMDI(_loginManager);
            //mm.Show();
        }
        /**
         * 长度单位:厘米是否选中
         */
        private void cmUint_CheckedChanged(object sender, EventArgs e)
        {
            if (cmUint.Checked)
            {
                cmIsChecked();
            }
        }
        /**
         * 长度单位:英寸是否选中
         */
        private void inUint_CheckedChanged(object sender, EventArgs e)
        {
            if (this.inUint.Checked)
            {
                inIsChecked();
            }
        }
        /**
         * 结果单位:厘米是否选中
         */
        private void squareCnUnit_CheckedChanged(object sender, EventArgs e)
        {
            if (this.squareCnUnit.Checked)
            {
                cmIsChecked();
            }
        }
        /**
         * 结果单位:英寸是否选中
         */
        private void squareInUnit_CheckedChanged(object sender, EventArgs e)
        {
            if (this.squareInUnit.Checked)
            {
                inIsChecked();
            }
        }
        private void cmIsChecked()
        {
            this.cmUint.Checked = true;
            this.squareCnUnit.Checked = true;
            this.inUint.Checked = false;
            this.squareInUnit.Checked = false;
        }
        private void inIsChecked()
        {
            this.cmUint.Checked = false;
            this.squareCnUnit.Checked = false;
            this.inUint.Checked = true;
            this.squareInUnit.Checked = true;
        }

        private void MetroSetting_FormClosed(object sender, EventArgs e)
        {
            try
            {
                MetroMDI mm = new MetroMDI(_loginManager);
                mm.ShowInTaskbar = true;
                mm.Show();
            }
            catch (Exception ex)
            {
                LOGGER.Warn(ex.StackTrace);
            }
        }

        

    }
}