PanelVote.cs 12.5 KB
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.Office.Interop.PowerPoint;
using GeneralLib;

namespace SunVoteARSPPT
{
    public partial class PanelVote : UserControl, IPanel, IPanelChange
    {
        TagSet mTagSet = null;
        public TagSet TagSet
        {
            get { return mTagSet; }
            set
            {
                mTagSet = value;
                ucResponsePara.TagSet = value;
                ucKeypadPara.TagSet = value;
            }
        }

        public PanelVote()
        {
            InitializeComponent();
            FrmSystemSet.LanguageSetEvent += new FrmSystemSet.LanguageSetEventHander(FrmSystemSet_LanguageSetEvent);
            FrmVoteBar.PanelEnabledEvent += new FrmVoteBar.PanelEnabledEventHander(FrmVoteBar_PanelEnabledEvent);
            //设置控件大小。杨斌 2018-07-27
            if ((GlobalInfo.OEMLogo == OEMLogos.oemPowerVote) || (GlobalInfo.OEMLogo == OEMLogos.oemAngage)
                || (GlobalInfo.OEMLogo == OEMLogos.SunVote))//杨斌 2020-05-11
            {
                gbxVote.Height = numPassByCount.Bottom + 20;
            }
            else
            {
                gbxVote.Height = cboNoPress.Top;
            }
            ucResponsePara.Top = gbxVote.Bottom + 6;//杨斌 2018-07-24

            //杨斌 2015-04-10
            ucResponsePara.ShowSet(true, true);
            ucKeypadPara.Top = ucResponsePara.Bottom + 6;

            this.Height = ucKeypadPara.Bottom;
            //GlobalInfo.SysLanguage.SetLanguage(this.Name, this);

            //杨斌 2012-06-11
            switch (GlobalInfo.OEMLogo)
            {
                case OEMLogos.oem3eAnalyzer:
                    //ucKeypadPara.Visible = false;
                    //if (ucKeypadPara.cboSubmitMode.SelectedIndex != 0)
                    //    ucKeypadPara.cboSubmitMode.SelectedIndex = 0;
                    //this.Height = ucResponsePara.Bottom;
                    break;
                case OEMLogos.SunVote:
                default:
                    break;
            }
        }

        void FrmVoteBar_PanelEnabledEvent(bool enabled)
        {
            this.Enabled = enabled;
        }

        void FrmSystemSet_LanguageSetEvent()
        {
            GlobalInfo.SysLanguage.SetLanguage(this.Name, this);
        }

        public Color PanelColor
        {
            get
            {
                return this.BackColor;
            }
            set
            {
                this.BackColor = value;
                gbxVote.BackColor = value;
                ucResponsePara.BackColor = value;
                ucKeypadPara.BackColor = value;
            }
        }

        /// <summary>
        /// 加载参数面板数据
        /// </summary>
        public void LoadData()
        {
            try
            {
                ucResponsePara.LoadData();
                ucKeypadPara.LoadData();

                if (TagSet.LoadValue(TagKey.Vote_OptionCount, rbtItem2.Checked ? 2 : 3).ToInt == 2)
                    rbtItem2.Checked = true;
                else
                    rbtItem3.Checked = true;

                //加载表决判断参数。杨斌 2018-07-24
                int noPress = TagSet.LoadValue(TagKey.Vote_NoPress, 0).ToInt;
                if (noPress < 0) noPress = 0;
                if (noPress > 3) noPress = 3;
                cboNoPress.SelectedIndex = noPress;

                if (TagSet.LoadValue(TagKey.Vote_PassMode, rbtPassMode2.Checked ? 1 : 0).ToInt == 1)
                    rbtPassMode2.Checked = true;
                else
                    rbtPassMode1.Checked = true;

                if (TagSet.LoadValue(TagKey.Vote_PassBy, rbtPassByCount.Checked ? 1 : 0).ToInt == 1)
                    rbtPassByCount.Checked = true;
                else
                    rbtPassByRate.Checked = true;

                txtPassByRate.Text = TagSet.LoadValue(TagKey.Vote_PassByRateValue, "1/2").Value;

                int passRateMode = TagSet.LoadValue(TagKey.Vote_PassRateMode, 0).ToInt;
                if (passRateMode < 0) passRateMode = 0;
                if (passRateMode > 2) passRateMode = 2;//杨斌 2019-05-22。增加按Yes+No
                cboPassRateMode.SelectedIndex = passRateMode;

                numPassByCount.Value = TagSet.LoadValue(TagKey.Vote_PassByCountValue, 0).ToInt;

                SetPassByEnabled();

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }

        public void ChangeData(TagKey tagKey, object value)
        {
            if (tagKey == TagKey.Vote_OptionCount)
            {
                if (ConvertOper.Convert(value.ToString()).ToInt <= 2)
                {
                    rbtItem2.Checked = true;
                }
                else
                {
                    rbtItem3.Checked = true;
                }
            }
        }

        private void PanelVote_Load(object sender, EventArgs e)
        {
            GlobalInfo.SysLanguage.SetLanguage(this.Name, this);


        }

        private void rbtItem3_CheckedChanged(object sender, EventArgs e)
        {
            if (TagSet == null)
                return;//杨斌 2018-07-19
            //2012-07-03 选项个数改变时需要重新设置图表高度
            Globals.SunVoteARSAddIn.PPTEdit.CountChange = true;
            TagSet.SetValue(TagKey.Vote_OptionCount, 3);

            //日本的版本表决不要选项文本。杨斌 2012-11-08
            //if (!Globals.SunVoteARSAddIn.PPTEdit.LockOptionTextChange)//判断是否选项文本在修改,杨斌 2012-03-05
            //{
            //    Globals.SunVoteARSAddIn.PPTEdit.ModifyOptionText(3);
            //}
            bool bAddOption = true;
            switch (GlobalInfo.OEMLogo)
            {
                case OEMLogos.oem3eAnalyzer:
                    bAddOption = false;
                    break;
                default:
                    break;
            }
            if (bAddOption)
            {
                if (!Globals.SunVoteARSAddIn.PPTEdit.LockOptionTextChange)//判断是否选项文本在修改,杨斌 2012-03-05
                {
                    Globals.SunVoteARSAddIn.PPTEdit.ModifyOptionText(3);
                }
            }
            //杨斌 2015-06-18
            Globals.SunVoteARSAddIn.PPTEdit.Panel.ucChartPara.InitChartRateVote(Globals.SunVoteARSAddIn.PPTEdit.ResponseTypeSlideEdit);

            //修改标志 2012-07-3 赵丽 保存当前图表的位置
            PPTOper.SaveChartPosition(Globals.SunVoteARSAddIn.PPTEdit.SlideEdit, TagSet);
            Globals.SunVoteARSAddIn.PPTEdit.InitChart(true, Globals.SunVoteARSAddIn.PPTEdit.SlideEdit, autoFit: true);
        }

        private void rbtItem2_CheckedChanged(object sender, EventArgs e)
        {
            //2012-07-03 选项个数改变时需要重新设置图表高度
            Globals.SunVoteARSAddIn.PPTEdit.CountChange = true;
            TagSet.SetValue(TagKey.Vote_OptionCount, 2);

            //日本的版本表决不要选项文本。杨斌 2012-11-08
            //if (!Globals.SunVoteARSAddIn.PPTEdit.LockOptionTextChange)//判断是否选项文本在修改,杨斌 2012-03-05
            //{
            //    Globals.SunVoteARSAddIn.PPTEdit.ModifyOptionText(2);
            //}
            bool bAddOption = true;
            switch (GlobalInfo.OEMLogo)
            {
                case OEMLogos.oem3eAnalyzer:
                    bAddOption = false;
                    break;
                default:
                    break;
            }
            if (bAddOption)
            {
                if (!Globals.SunVoteARSAddIn.PPTEdit.LockOptionTextChange)//判断是否选项文本在修改,杨斌 2012-03-05
                {
                    Globals.SunVoteARSAddIn.PPTEdit.ModifyOptionText(2);
                }
            }
            //杨斌 2015-06-18
            Globals.SunVoteARSAddIn.PPTEdit.Panel.ucChartPara.InitChartRateVote(Globals.SunVoteARSAddIn.PPTEdit.ResponseTypeSlideEdit);

            //修改标志 2012-07-3 赵丽 保存当前图表的位置
            PPTOper.SaveChartPosition(Globals.SunVoteARSAddIn.PPTEdit.SlideEdit, TagSet);
            Globals.SunVoteARSAddIn.PPTEdit.InitChart(true, Globals.SunVoteARSAddIn.PPTEdit.SlideEdit, autoFit: true);
        }

        private void gbxVote_Resize(object sender, EventArgs e)
        {
            int pos = gbxVote.ClientSize.Width / 2;
            int w = pos - 3;
            cboNoPress.Left = pos;
            cboNoPress.Width = w;

            pnlPassMode.Left = pos;
            pnlPassMode.Width = w;

            txtPassByRate.Left = pos;
            txtPassByRate.Width = w;

            txtPassByRate.Left = pos;
            txtPassByRate.Width = w;

            cboPassRateMode.Left = pos;
            cboPassRateMode.Width = w;

            numPassByCount.Left = pos;
            numPassByCount.Width = w;
        }
        private void SetPassByEnabled()
        {
            txtPassByRate.Enabled = cboPassRateMode.Enabled = lblPassRate.Enabled = rbtPassByRate.Checked;
            numPassByCount.Enabled = rbtPassByCount.Checked;
        }
        private void rbtPassByRate_CheckedChanged(object sender, EventArgs e)
        {
            SetPassByEnabled();

            if (TagSet == null)
                return;//杨斌 2018-07-19
            //保存修改
            TagSet.SetValue(TagKey.Vote_PassBy, 0);

            ShowVotePassResult(Globals.SunVoteARSAddIn.PPTEdit.SlideEdit);
        }

        private void rbtPassByCount_CheckedChanged(object sender, EventArgs e)
        {
            rbtPassByRate_CheckedChanged(null, null);

            if (TagSet == null)
                return;//杨斌 2018-07-19
            //保存修改
            TagSet.SetValue(TagKey.Vote_PassBy, 1);

            ShowVotePassResult(Globals.SunVoteARSAddIn.PPTEdit.SlideEdit);
        }

        private void cboNoPress_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (TagSet == null)
                return;//杨斌 2018-07-19
            //保存修改
            TagSet.SetValue(TagKey.Vote_NoPress, cboNoPress.SelectedIndex);
        }

        private void rbtPassMode1_CheckedChanged(object sender, EventArgs e)
        {
            if (TagSet == null)
                return;//杨斌 2018-07-19
            //保存修改
            TagSet.SetValue(TagKey.Vote_PassMode, 0);

            ShowVotePassResult(Globals.SunVoteARSAddIn.PPTEdit.SlideEdit);
        }

        private void rbtPassMode2_CheckedChanged(object sender, EventArgs e)
        {
            if (TagSet == null)
                return;//杨斌 2018-07-19
            //保存修改
            TagSet.SetValue(TagKey.Vote_PassMode, 1);

            ShowVotePassResult(Globals.SunVoteARSAddIn.PPTEdit.SlideEdit);
        }

        private void txtPassByRate_TextChanged(object sender, EventArgs e)
        {
            if (TagSet == null)
                return;//杨斌 2018-07-19
            //保存修改
            TagSet.SetValue(TagKey.Vote_PassByRateValue, txtPassByRate.Text);

            ShowVotePassResult(Globals.SunVoteARSAddIn.PPTEdit.SlideEdit);
        }

        private void cboPassRateMode_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (TagSet == null)
                return;//杨斌 2018-07-19
            //保存修改
            TagSet.SetValue(TagKey.Vote_PassRateMode, cboPassRateMode.SelectedIndex);

            ShowVotePassResult(Globals.SunVoteARSAddIn.PPTEdit.SlideEdit);
        }

        private void numPassByCount_ValueChanged(object sender, EventArgs e)
        {
            if (TagSet == null)
                return;//杨斌 2018-07-19
            //保存修改
            TagSet.SetValue(TagKey.Vote_PassByCountValue, numPassByCount.Value);

            ShowVotePassResult(Globals.SunVoteARSAddIn.PPTEdit.SlideEdit);
        }

        /// <summary>
        /// 根据规则计算表决通过结果
        /// </summary>
        public static void ShowVotePassResult(Slide sld)
        {
            Shape sha = null;
            var lstSha = PPTOper.GetDataLabelShape(Globals.SunVoteARSAddIn.PPTEdit.SlideEdit, DataLabelType.VotePassResult);
            if (lstSha.Count > 0)
                sha = lstSha[0];
            if (sha == null)
                return;
            if (sha != null)
            {
                Globals.SunVoteARSAddIn.PPTEdit.RefreshLabelEdit(DataLabelType.VotePassResult);
            }
        }
    }
}