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 PanelPoll : UserControl, IPanel { TagSet mTagSet = null; public TagSet TagSet { get { return mTagSet; } set { mTagSet = value; ucResponsePara.TagSet = value; ucKeypadPara.TagSet = value; } } public PanelPoll() { InitializeComponent(); FrmSystemSet.LanguageSetEvent += new FrmSystemSet.LanguageSetEventHander(FrmSystemSet_LanguageSetEvent); FrmVoteBar.PanelEnabledEvent += new FrmVoteBar.PanelEnabledEventHander(FrmVoteBar_PanelEnabledEvent); gbxChoise.Resize += gbxChoise_Resize; //设置控件大小 //杨斌 2015-04-10 //ucResponsePara.HideVoteRate(); ucResponsePara.ShowSet(true, true);//杨斌 2018-01-30 //ucResponsePara.ShowSet(true, true);//杨斌 2018-01-04 ucKeypadPara.Top = ucResponsePara.Bottom + 6; this.Height = ucKeypadPara.Bottom; GlobalInfo.SysLanguage.SetLanguage(this.Name, this); lblChoiseLimit.Visible = false;//杨斌 2018-09-21 chkChoiseLimit.Text = lblChoiseLimit.Text;//杨斌 2018-09-21 //杨斌 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; } //杨斌 2012-06-25 ucKeypadPara.cboOptionMode.SelectedIndex = -1; ucKeypadPara.cboOptionMode.Enabled = false; } void gbxChoise_Resize(object sender, EventArgs e) { int pos = gbxChoise.ClientSize.Width / 2; int w = pos - 3; lblOptionCount.Left = pos; //lblOptionCount.Width = w; //杨斌 2018-09-21 nudOptionLimit.Left = pos; numChoiseLimitMin.Left = pos; panRange.Left = pos; } void FrmVoteBar_PanelEnabledEvent(bool enabled) { //杨斌 2018-05-22 this.Enabled = enabled;//杨斌 2020-06-17 foreach (Control v in gbxChoise.Controls) { if (v.Name == btnPollList.Name) { btnPollList.Tag = enabled ? "1" : "0"; } else if (v.Name == chkUseModeLimitNumber.Name) { List lstKeypadType = new List() { "M52Li", "G1" };//杨斌 2020-06-17 //if (SystemConfig.KeypadType == "M52Li")//杨斌 2018-12-27 if (lstKeypadType.Contains(SystemConfig.KeypadType))//杨斌 2020-06-17 { v.Enabled = false; chkUseModeLimitNumber.Checked = true; } else { v.Enabled = enabled; } } else { v.Enabled = enabled; } } ucResponsePara.Enabled = ucKeypadPara.Enabled = enabled; } void FrmSystemSet_LanguageSetEvent() { GlobalInfo.SysLanguage.SetLanguage(this.Name, this); chkChoiseLimit.Text = lblChoiseLimit.Text;//杨斌 2018-09-21 } private void btnChartSet_Click(object sender, EventArgs e) { new FrmChartSet().ShowDialog(); } private void btnPollList_Click(object sender, EventArgs e) { new FrmPollList(TagSet, ucResponsePara.Enabled).ShowDialog();//杨斌 2018-05-22 if (!ucResponsePara.Enabled) return; ControlOper.TrySetNumericUpDownValue(nudOptionCount, TagSet.LoadValue(TagKey.Poll_CandidatesCount, nudOptionCount.Value).ToInt); lblOptionCount.Text = TagSet.LoadValue(TagKey.Poll_CandidatesCount, 0).ToInt.ToString();//杨斌 2012-11-07 //屏蔽下面代码。杨斌 2014-10-22 //PPTOper.AddRankTable(Globals.SunVoteARSAddIn.PPTEdit.SlideEdit, Convert.ToInt32(nudOptionCount.Value)); //AddPollRankList(Convert.ToInt32(nudOptionCount.Value)); ResponseDB.ShowTablePollList(Globals.SunVoteARSAddIn.PPTEdit.SlideEdit);//杨斌 2014-11-11 FrmVoteBar.ActivateSlideShowWindow(); } /// /// 刷新选举排行 /// public static void AddPollRankList(int iCount) { if (iCount == 0) return; TagSet tagSet = new TagSet(); tagSet.Tags = Globals.SunVoteARSAddIn.PPTEdit.SlideEdit.Tags; ResponseType responseType = EnumName.GetEnum(tagSet.GetValue(TagKey.ResponseType).Value.ToString()); if (responseType != ResponseType.Poll) return; Dictionary pollRankList = new Dictionary(); if (iCount > 50) iCount = 50; int tableCount = Convert.ToInt32(iCount / 10) + ((iCount % 10) > 0 ? 1 : 0); try { foreach (Shape s in Globals.SunVoteARSAddIn.PPTEdit.SlideEdit.Shapes) { string tableName = ""; try { tableName = s.Name.Substring(0, 8); } catch { continue; } if (s.Name.Substring(0, 8) == "PollRank") { try { int tableNum = Convert.ToInt32(s.Name.Substring(8, s.Name.Length - 8)); int pos = 10; if ((tableNum + 1) == tableCount) pos = iCount - (tableNum) * 10; for (int i = 1; i <= pos; i++) { s.Table.Cell(i + 1, 1).Shape.TextFrame.TextRange.Text = tagSet.LoadValue(TagKey.Poll_CandidatesID_, tableNum * 10 + (i - 1), "").Value.ToString(); s.Table.Cell(i + 1, 2).Shape.TextFrame.TextRange.Text = tagSet.LoadValue(TagKey.Poll_CandidatesName_, tableNum * 10 + (i - 1), "").Value.ToString(); } } catch { } } } } catch (Exception ex) { SystemLog.WriterLog(ex); } } /// /// 是否支持多选选举的键盘型号。杨斌 2017-05-11 /// public static bool IsMultiPollKeypad() { //杨斌 2020-07-27。EasyTest的键盘型号:ET50,M52。问了张珍珠对应关系:ET50=M50,M52=S53。 //杨斌 2020-07-28。日本Votingeyes的SHV52plus=S53。但是暂未确认要添加到多选支持列表,因为键盘型号是老版本的 //杨斌 2018-12-26。增加M52Li。i-Pericles的"Interact+"=="S52Plus","Interact++"=="M5",杨斌 2019-05-27。SHV52plus=S52Plus,增加S53,2019-12-04,2020-04-13增加G1 List lsMultiPoll = new List() { "M52Li", "M52Plus", "Interact+", "Interact++", "S52Plus", "SHV52plus", "Smart Plus", "S53", "M52", "G1", "M5" };//杨斌 2020-06-22。2020-07-27。添加EasyTest的M52 return lsMultiPoll.Contains(SystemConfig.KeypadType); } /// /// 加载参数面板数据 /// public void LoadData() { //杨斌 2016-04-26 //if ((GlobalInfo.OEMLogo2 == OEMLogos2.oemSunVoteMultiPoll) && PanelPoll.IsMultiPollKeypad()) nudOptionLimit.Minimum = 1; nudOptionLimit.Maximum = GlobalInfo.maxNumberPollSelect; chkChoiseLimit.Visible = lblChoiseLimit.Visible = nudOptionLimit.Visible = IsMultiPollKeypad();//杨斌 2017-05-11 ucResponsePara.LoadData(); ucKeypadPara.LoadData(); //ControlOper.TrySetNumericUpDownValue(nudOptionCount, TagSet.LoadValue(TagKey.Poll_CandidatesCount, nudOptionCount.Value).ToInt); //候选人数应默认为0,杨斌 2012-03-06 ControlOper.TrySetNumericUpDownValue(nudOptionCount, TagSet.LoadValue(TagKey.Poll_CandidatesCount, 0).ToInt); lblOptionCount.Text = TagSet.LoadValue(TagKey.Poll_CandidatesCount, 0).ToInt.ToString();//杨斌 2012-11-07 //杨斌 2016-04-26 ControlOper.TrySetNumericUpDownValue(nudOptionLimit, TagSet.LoadValue(TagKey.Poll_EffectiveVotes, 1).ToInt); //杨斌 2017-02-13 chkChoiseLimit.Checked = (TagSet.GetValue(TagKey.Poll_Multi).ToInt == 1); nudOptionLimit.Enabled = chkChoiseLimit.Checked; nudOptionCount_ValueChanged(null, null);//杨斌 2017-03-23 //加载分段式选举参数。杨斌 2018-09-29 chkUseModeLimitNumber.Checked = (TagSet.GetValue(TagKey.Poll_UseModeLimitNumber).ToInt == 1); //杨斌 2020-06-19 bool tempa = TagSet.ReadOnlyPPT; TagSet.ReadOnlyPPT = false; numRange1_ValueChanged(null, null); TagSet.ReadOnlyPPT = tempa;//杨斌 2020-06-19 ControlOper.TrySetNumericUpDownValue(numChoiseLimitMin, TagSet.LoadValue(TagKey.Poll_MinSelects, 1).ToInt); chkCanRepeat.Checked = (TagSet.LoadValue(TagKey.Poll_CanRepeat, 1).ToInt == 0);//杨斌 2020-08-14。默认值为1不允许重复 chkRange2.Checked = (TagSet.GetValue(TagKey.Poll_LimitRange2Enabled).ToInt == 1); chkRange3.Checked = (TagSet.GetValue(TagKey.Poll_LimitRange3Enabled).ToInt == 1); GetRangeNum(TagSet.GetValue(TagKey.Poll_LimitRange1).Value, numRangeStart1, numRangeEnd1); GetRangeNum(TagSet.GetValue(TagKey.Poll_LimitRange2).Value, numRangeStart2, numRangeEnd2); GetRangeNum(TagSet.GetValue(TagKey.Poll_LimitRange3).Value, numRangeStart3, numRangeEnd3); numChoiseLimitMin.Maximum = nudOptionLimit.Value; panLimitNumber.Enabled = chkUseModeLimitNumber.Checked; numRangeStart2.Enabled = numRangeEnd2.Enabled = chkRange2.Checked; numRangeStart3.Enabled = numRangeEnd3.Enabled = chkRange3.Checked; //刘红英说:以后M52Li和其他键盘不再支持数字选举模式。杨斌 2018-12-27 List lstKeypadType = new List() { "M52Li", "G1" };//杨斌 2020-06-17 //if (SystemConfig.KeypadType == "M52Li") if (lstKeypadType.Contains(SystemConfig.KeypadType))//杨斌 2020-06-17 { chkUseModeLimitNumber.Enabled = false; if (!chkUseModeLimitNumber.Checked) { bool temp = TagSet.ReadOnlyPPT; TagSet.ReadOnlyPPT = false; chkUseModeLimitNumber.Checked = true; chkUseModeLimitNumber_CheckedChanged(null, null); TagSet.ReadOnlyPPT = temp; } } } private void GetRangeNum(string range, NumericUpDown numStart, NumericUpDown numEnd) { try { var ary = range.Split('-'); if (ary.Length >= 2) { numStart.Value = ConvertOper.Convert(ary[0]).ToInt; numEnd.Value = ConvertOper.Convert(ary[1]).ToInt; } else { numStart.Value = numEnd.Minimum; numEnd.Value = numEnd.Maximum; } } catch (Exception ex) { SystemLog.WriterLog(ex); } } private void PanelPoll_Load(object sender, EventArgs e) { GlobalInfo.SysLanguage.SetLanguage(this.Name, this); chkChoiseLimit.Text = lblChoiseLimit.Text;//杨斌 2018-09-21 } //杨斌 2016-04-26 private void nudOptionLimit_ValueChanged(object sender, EventArgs e) { TagSet.SetValue(TagKey.Poll_EffectiveVotes, (int)nudOptionLimit.Value); numChoiseLimitMin.Maximum = nudOptionLimit.Value; } //杨斌 2017-02-13 private void chkChoiseLimit_CheckedChanged(object sender, EventArgs e) { TagSet.SetValue(TagKey.Poll_Multi, chkChoiseLimit.Checked ? 1 : 0); nudOptionLimit.Enabled = chkChoiseLimit.Checked; if (!nudOptionLimit.Enabled)//杨斌 2017-03-23 nudOptionLimit.Value = 1; } //杨斌 2017-02-13 private void lblChoiseLimit_Click(object sender, EventArgs e) { chkChoiseLimit.Checked = !chkChoiseLimit.Checked; } /// /// 是否使用多选选举模式。杨斌 2017-02-13 /// public static bool IsUseMultiPoll(Slide sld) { bool res = false; try { TagSet tagSet = new TagSet(sld.Tags); res = (tagSet.GetValue(TagKey.Poll_Multi).ToInt == 1); } catch (Exception ex) { SystemLog.WriterLog(ex); } return res; } private void nudOptionCount_ValueChanged(object sender, EventArgs e) { //杨斌 2017-03-23 decimal max = nudOptionCount.Value; if (max < 1) max = 1; if (max > GlobalInfo.maxNumberPollSelect)//杨斌 2020-04-10 max = GlobalInfo.maxNumberPollSelect; nudOptionLimit.Minimum = 1; nudOptionLimit.Maximum = max; } //启用分段式选举。杨斌 2018-09-29,以下所有行皆为新增代码 private void chkUseModeLimitNumber_CheckedChanged(object sender, EventArgs e) { TagSet.SetValue(TagKey.Poll_UseModeLimitNumber, chkUseModeLimitNumber.Checked ? 1 : 0); panLimitNumber.Enabled = chkUseModeLimitNumber.Checked; if (chkUseModeLimitNumber.Checked && !chkChoiseLimit.Checked) { chkChoiseLimit.Checked = true; chkChoiseLimit_CheckedChanged(null, null); } } private void numChoiseLimitMin_ValueChanged(object sender, EventArgs e) { TagSet.SetValue(TagKey.Poll_MinSelects, (int)numChoiseLimitMin.Value); } private void chkCanRepeat_CheckedChanged(object sender, EventArgs e) { TagSet.SetValue(TagKey.Poll_CanRepeat, chkCanRepeat.Checked ? 0 : 1);//注意0是启用默认 } private void chkRange2_CheckedChanged(object sender, EventArgs e) { TagSet.SetValue(TagKey.Poll_LimitRange2Enabled, chkRange2.Checked ? 1 : 0); numRangeStart2.Enabled = numRangeEnd2.Enabled = chkRange2.Checked; numRange2_ValueChanged(null, null);//杨斌 2020-06-19 } private void chkRange3_CheckedChanged(object sender, EventArgs e) { TagSet.SetValue(TagKey.Poll_LimitRange3Enabled, chkRange3.Checked ? 1 : 0); numRangeStart3.Enabled = numRangeEnd3.Enabled = chkRange3.Checked; numRange3_ValueChanged(null, null);//杨斌 2020-06-19 } private void numRange1_ValueChanged(object sender, EventArgs e) { TagSet.SetValue(TagKey.Poll_LimitRange1, numRangeStart1.Value + "-" + numRangeEnd1.Value); } private void numRange2_ValueChanged(object sender, EventArgs e) { TagSet.SetValue(TagKey.Poll_LimitRange2, numRangeStart2.Value + "-" + numRangeEnd2.Value); } private void numRange3_ValueChanged(object sender, EventArgs e) { TagSet.SetValue(TagKey.Poll_LimitRange3, numRangeStart3.Value + "-" + numRangeEnd3.Value); } } }