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 PanelSignIn : UserControl, IPanel
{
TagSet mTagSet = null;
public TagSet TagSet
{
get { return mTagSet; }
set
{
mTagSet = value;
ucKeypadPara.TagSet = value;
ucResponsePara.TagSet = value;//杨斌 2015-04-10
}
}
public PanelSignIn()
{
InitializeComponent();
FrmSystemSet.LanguageSetEvent += new FrmSystemSet.LanguageSetEventHander(FrmSystemSet_LanguageSetEvent);
FrmVoteBar.PanelEnabledEvent += new FrmVoteBar.PanelEnabledEventHander(FrmVoteBar_PanelEnabledEvent);
//设置控件大小
//杨斌 2015-04-10
ucResponsePara.ShowSet(false, false);
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 = gbxSignIn.Bottom;
break;
case OEMLogos.SunVote:
default:
break;
}
}
private void ResizePanel()
{
ucKeypadPara.Height = 0;
ucKeypadPara.Visible = false;
//ucKeypadPara.cboOptionMode.SelectedIndex = -1;
//ucKeypadPara.cboOptionMode.Enabled = false;
//ucKeypadPara.cboOptionMode.Visible = false;
//ucKeypadPara.lblOptionMode.Visible = false;
//ucKeypadPara.gbxKeypadSet.Height = ucKeypadPara.cboModifyMode.Height + 30;
//this.Height = ucKeypadPara.Bottom;
//杨斌 2017-03-30
lblFieldSignInCode.Visible = false;
if (cboSignInMode.SelectedIndex == 1)
{
pnlM30.Visible = false;
cboFieldSignInCode.Visible = true;
btnClearSignInData.Visible = true;
gbxSignIn.Height = btnClearSignInData.Bottom + 12;
}
else if (cboSignInMode.SelectedIndex == 2)
{
pnlM30.Visible = true;
cboFieldSignInCode.Visible = false;
btnClearSignInData.Visible = false;
pnlM30.Top = cboFieldSignInCode.Top;
gbxSignIn.Height = pnlM30.Bottom + 3;
}
else
{
pnlM30.Visible = false;
cboFieldSignInCode.Visible = false;
btnClearSignInData.Visible = false;
gbxSignIn.Height = cboSignInMode.Bottom + 12;
}
this.Height = gbxSignIn.Bottom;
Globals.SunVoteARSAddIn.PPTEdit.Panel.SetUcChartPos();//杨斌 2017-03-30
}
void FrmVoteBar_PanelEnabledEvent(bool enabled)
{
this.Enabled = enabled;
}
void FrmSystemSet_LanguageSetEvent()
{
GlobalInfo.SysLanguage.SetLanguage(this.Name, this);
//杨斌 2012-10-09
lblSignInOk.Text = GlobalInfo.SysLanguage.LPT.ReadString("PPTOper", "SignIn", "已签到");
lblSignInNot.Text = GlobalInfo.SysLanguage.LPT.ReadString("PPTOper", "UnSignIn", "未签到");
}
bool IsLoad = false;
///
/// 加载参数面板数据
///
public void LoadData()
{
IsLoad = true;
//杨斌 2014-10-27
cboFieldSignInCode.Items.Clear();
RosterList rost = new RosterList();
//杨斌 2015-01-15
if (rost.RosterEnabled)
cboFieldSignInCode.Items.Add(GlobalInfo.SysLanguage.LPT.ReadString("PanelSignIn", "SetSignInCode", "请选择UID有效字段"));
else
cboFieldSignInCode.Items.Add(GlobalInfo.SysLanguage.LPT.ReadString("PanelSignIn", "SetRoster", "未设定名单"));
if (rost.RosterEnabled)
{
rost.LoadCloumn(GlobalInfo.DBOperation);
for (int i = 1; i < rost.Columns.Count; i++)
{
cboFieldSignInCode.Items.Add(rost.Columns[i].ColumnName);
}
}
ComboBoxOper.SetComboText(cboFieldSignInCode, TagSet.GetValue(TagKey.SignIn_CodeField).Value);
if (cboFieldSignInCode.SelectedIndex < 0)//杨斌 2015-01-15
cboFieldSignInCode.SelectedIndex = 0;
ucResponsePara.LoadData();//杨斌 2015-04-10
ucKeypadPara.LoadData();
//杨斌 2017-03-30
cboSignInMode.Items.Clear();
cboSignInMode.Items.Add(GlobalInfo.SysLanguage.LPT.ReadString("PanelSignIn", "rbtSignInModePress", "按键签到"));
cboSignInMode.Items.Add(GlobalInfo.SysLanguage.LPT.ReadString("PanelSignIn", "rbtSignInModeCode", "签到码签到"));
//if (GlobalInfo.OEMLogo == OEMLogos.SunVote)//杨斌 2017-06-06
cboSignInMode.Items.Add(GlobalInfo.SysLanguage.LPT.ReadString("PanelSignIn", "rbtSignInModeRandom", "随机码签到"));
int signMode = TagSet.LoadValue(TagKey.SignIn_Mode, 0).ToInt;
if ((signMode >= 0) && (signMode < cboSignInMode.Items.Count))
cboSignInMode.SelectedIndex = signMode;
else
cboSignInMode.SelectedIndex = 0;
SetSignInCodeEnabled();//杨斌 2014-10-27
//杨斌 2012-10-09
txtSignInOk.Text = TagSet.LoadValue(TagKey.SingIn_TextOK, "").Value;
txtSignInNot.Text = TagSet.LoadValue(TagKey.SingIn_TextNot, "").Value;
//杨斌 2017-02-17
cboNumOnePage.SelectedIndex = TagSet.GetValue(TagKey.SignIn_NumOnePage).ToInt;
numAutoPageTime.Value = TagSet.GetValue(TagKey.SignIn_AutoPageTime).ToInt;
ResizePanel();
IsLoad = false;
}
///
/// 设置签到码签到是否启用
/// 杨斌 2017-03-30
///
private void SetSignInCodeEnabled()
{
bool enabled = cboSignInMode.SelectedIndex > 0;
lblFieldSignInCode.Enabled = enabled;
//杨斌 2017-03-31
cboFieldSignInCode.Enabled = enabled && (SystemConfig.KeypadType != "M30");
btnClearSignInData.Enabled = (cboFieldSignInCode.SelectedIndex > 0) && (SystemConfig.KeypadType != "M30");
//杨斌 2017-03-31
pnlM30.Enabled = (SystemConfig.KeypadType == "M30");
}
private void PanelSignIn_Load(object sender, EventArgs e)
{
//杨斌 2012-10-09
FrmSystemSet_LanguageSetEvent();
}
///
/// 创建:杨斌 2012-10-09
///
private void txtSignInOk_TextChanged(object sender, EventArgs e)
{
TagSet.SetValue(TagKey.SingIn_TextOK, txtSignInOk.Text);
if (!Globals.SunVoteARSAddIn.PPTEdit.TagSet.ReadOnlyPPT)
{
Globals.SunVoteARSAddIn.PPTEdit.InitChart(true, Globals.SunVoteARSAddIn.PPTEdit.SlideEdit);
}
}
///
/// 创建:杨斌 2012-10-09
///
private void txtSignInNot_TextChanged(object sender, EventArgs e)
{
TagSet.SetValue(TagKey.SingIn_TextNot, txtSignInNot.Text);
if (!Globals.SunVoteARSAddIn.PPTEdit.TagSet.ReadOnlyPPT)
{
Globals.SunVoteARSAddIn.PPTEdit.InitChart(true, Globals.SunVoteARSAddIn.PPTEdit.SlideEdit);
}
}
///
/// 签到码字段。杨斌 2014-10-27
///
///
///
private void cboFieldSignInCode_SelectedIndexChanged(object sender, EventArgs e)
{
//杨斌 2015-01-15
if (cboFieldSignInCode.SelectedIndex > 0)
TagSet.SetValue(TagKey.SignIn_CodeField, cboFieldSignInCode.Text);
else
TagSet.SetValue(TagKey.SignIn_CodeField, "");
btnClearSignInData.Enabled = cboFieldSignInCode.SelectedIndex > 0;
//pnlM30.Enabled = (chkUID.Checked && (cboFieldSignInCode.SelectedIndex > 0));//杨斌 2017-02-17
}
//杨斌 2017-03-30
private void cboSignInMode_SelectedIndexChanged(object sender, EventArgs e)
{
ResizePanel();
if (IsLoad) return;
TagSet.SetValue(TagKey.SignIn_Mode, cboSignInMode.SelectedIndex >= 0 ? cboSignInMode.SelectedIndex : 0);
SetSignInCodeEnabled();
}
private void btnClearSignInData_Click(object sender, EventArgs e)
{
string msg = GlobalInfo.SysLanguage.LPT.ReadString("PanelSignIn", "ClearSignInCode", "此操作会清空现有名单中与反馈人员信息已绑定的键盘ID或SN,请确认是否要继续?");
if (MessageBox.Show(msg, btnClearSignInData.Text, MessageBoxButtons.YesNo,
MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2) != DialogResult.Yes)
return;
ClearSignInCodeData();//杨斌 2017-03-30
}
public static void ClearSignInCodeData()
{
RosterList rost = new RosterList();
rost.LoadCloumn(GlobalInfo.DBOperation);
if (rost.Columns.Count > 0)
{
int colID = rost.Columns[0].ColumnID;
string sql = "Update ST_RosterValue Set RV_Text='' Where RC_ID=" + colID;
GlobalInfo.DBOperation.ExecuteNonQuery(sql);
RosterList.RosterLoad.LoadRoster();//杨斌 2017-03-02
}
}
private void pnlM30_Resize(object sender, EventArgs e)
{
int pos0 = 3;
int pos = gbxSignIn.ClientSize.Width / 2;
int w = pos - 5;
lblNumOnePage.Left = pos0;
lblAutoPageTime.Left = pos0;
cboNumOnePage.Left = pos;
cboNumOnePage.Width = w;
numAutoPageTime.Left = pos;
numAutoPageTime.Width = w;
}
//杨斌 2017-02-17
private void cboNumOnePage_SelectedIndexChanged(object sender, EventArgs e)
{
TagSet.SetValue(TagKey.SignIn_NumOnePage, cboNumOnePage.SelectedIndex > 0 ? cboNumOnePage.SelectedIndex : 0);
}
//杨斌 2017-02-17
private void numAutoPageTime_ValueChanged(object sender, EventArgs e)
{
TagSet.SetValue(TagKey.SignIn_AutoPageTime, (int)numAutoPageTime.Value);
}
private void CreateUID(bool isRnd)
{
try
{
if (RosterList.RosterLoad == null)
{
RosterList.RosterLoad = new RosterList();
RosterList.RosterLoad.LoadRoster();
}
if (RosterList.RosterLoad.Rows.Count < 1)
return;
int rowCount = RosterList.RosterLoad.Rows.Count;
if (rowCount > 125)
rowCount = 125;
List lsUID = new List();
string[] a = new string[3];
for (int i = 1; i <= 5; i++)
{
a[0] = i + "";
for (int j = 1; j <= 5; j++)
{
a[1] = j + "";
for (int k = 1; k <= 5; k++)
{
a[2] = (char)(k + 64) + "";
lsUID.Add(string.Join("", a));
}
}
}
string[] aryUID = new string[rowCount];
string[] aryUIDR = new string[rowCount];
lsUID.CopyTo(0, aryUID, 0, rowCount);
if (isRnd)
{
List ls = aryUID.ToList();
for (int i = 0; i < rowCount; i++)
{
Random r = new Random();
int n = r.Next(0, ls.Count);
aryUIDR[i] = ls[n];
ls.RemoveAt(n);
System.Windows.Forms.Application.DoEvents();
}
aryUID = aryUIDR;
}
//不采用设置列方法,保存关联数据到ppt,在名单中追加到最后显示。杨斌 2017-03-30
bool beSetRosterCol = false;
if (beSetRosterCol)
{
string[,] ary = new string[RosterList.RosterLoad.Rows.Count + 1, RosterList.RosterLoad.Columns.Count];
string uid = TagSet.GetValue(TagKey.SignIn_CodeField).Value;
int col = 0;
for (int c = 1; c < RosterList.RosterLoad.Columns.Count; c++)
{
if (RosterList.RosterLoad.Columns[c].ColumnName == uid)
{
col = c;
break;
}
}
if (col < 1)
return;
for (int c = 0; c < RosterList.RosterLoad.Columns.Count; c++)
{
ary[0, c] = RosterList.RosterLoad.Columns[c].ColumnName;
}
for (int r = 1; r <= RosterList.RosterLoad.Rows.Count; r++)
{
for (int c = 0; c < RosterList.RosterLoad.Columns.Count; c++)
{
int n = r - 1;
if ((c == col) && (n < aryUID.Length))
ary[r, c] = aryUID[n];
else
ary[r, c] = RosterList.RosterLoad.Rows[n].Cells[c];
}
//RosterList.RosterLoad.Rows[i].Cells[]
}
RosterList.RosterLoad.SaveRoster(ary);
}
else
{
List ls = new List();
for (int i = 0; i < rowCount; i++)
{
ls.Add(aryUID[i] + "=" + RosterList.RosterLoad.Rows[i].RowIndex);
}
string uidRandom = string.Join("|", ls);
TagSet tagSet = new TagSet(Globals.SunVoteARSAddIn.Application.ActivePresentation.Tags);
tagSet.SetValue(TagKey.SignInUIDRandom, uidRandom);
}
//清空键盘编号。杨斌 2017-03-30
RosterList rost = RosterList.RosterLoad;
rost.LoadCloumn(GlobalInfo.DBOperation);
if (rost.Columns.Count > 0)
{
int colID = rost.Columns[0].ColumnID;
string sql = "Update ST_RosterValue Set RV_Text='' Where RC_ID=" + colID;
GlobalInfo.DBOperation.ExecuteNonQuery(sql);
}
RosterList.RosterLoad.LoadRoster();
}
catch (Exception ex)
{
SystemLog.WriterLog(ex);
}
}
private void btnCreateUIDAsc_Click(object sender, EventArgs e)
{
CreateUID(false);
}
private void btnCreateUIDRnd_Click(object sender, EventArgs e)
{
CreateUID(true);
}
}
}