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 Microsoft.Office.Interop.PowerPoint;
using GeneralLib;
namespace SunVoteARSPPT
{
public partial class FrmCanVoteSlideResult : Form
{
private bool SaveOK = false;
private TagSet tagSet = null;
public FrmCanVoteSlideResult()
{
InitializeComponent();
}
//public FrmCanVoteSet(int type)
//{
// InitializeComponent();
// switch (type)
// {
// case 1:
// this.Text = "授权设置-指定名单分组";
// lvwItem.Items[0].Text = "1/A";
// btnSelectCorrect.Visible = false;
// break;
// default:
// this.Text = "授权设置-指定题目选项";
// break;
// }
//}
private void btnOK_Click(object sender, EventArgs e)
{
//2012-11-22 赵丽 没有勾选认为设置无效 日本要求
if (IsChecked())
SaveAuthorInfo();
this.Close();
}
private void btnCancel_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.Cancel;
SaveOK = true;
this.Close();
}
private void btnSelectCorrect_Click(object sender, EventArgs e)
{
for (int i = 0; i < lvwOption.Items.Count; i++)
{
if (lvwOption.Items[i].Tag != null)
{
if (lvwOption.Items[i].Tag.ToString() == "1")
lvwOption.Items[i].Checked = true;
else
lvwOption.Items[i].Checked = false;//杨斌 2012-03-23
}
else
{
lvwOption.Items[i].Checked = false;//杨斌 2012-03-23
}
}
rbtAnd.Checked = true;//杨斌 2012-03-23
SaveOK = false;
}
private void FrmCanVoteSet_Load(object sender, EventArgs e)
{
ResponseDB.UpdateSlideIndexToDB();
chkSelectAllSlide.Top = lvwOption.Top + 5;
chkSelectAllSlide.Left = lvwOption.Left + 3;
GlobalInfo.SysLanguage.SetLanguage(this.Name, this);
tagSet = new TagSet();
ControlOper.SetPosCheckBoxToListViewHead(lvwOption, chkSelectAllSlide);//杨斌 2012-11-16
LoadSlideInfo();
SaveOK = true;
lvwOption.Columns[0].Text = " " + lvwOption.Columns[0].Text;
}
private void btnSelectAll_Click(object sender, EventArgs e)
{
}
///
/// 加载授权信息
/// 修改:杨斌 2012-03-23
///
private void LoadSlideInfo()
{
try
{
Slide sld = null;
int curSlideIndex = Globals.SunVoteARSAddIn.PPTEdit.SlideEdit.SlideIndex;
int SlideCount = Globals.SunVoteARSAddIn.PPTEdit.PPT.ActivePresentation.Slides.Count;
int slideIndex = 0;
int slidePos = 0;
lvwSlide.Items.Clear();
for (int i = 1; i <= SlideCount; i++)
{
sld = Globals.SunVoteARSAddIn.PPTEdit.PPT.ActivePresentation.Slides[i];
tagSet.Tags = sld.Tags;
slideIndex = sld.SlideIndex;
ResponseType responseType = EnumName.GetEnum(tagSet.GetValue(TagKey.ResponseType).Value);
//当前幻灯片之外的,且在当前幻灯片之前的
if (slideIndex != curSlideIndex)
{
switch (responseType)
{
case ResponseType.SignIn:
case ResponseType.Group:
case ResponseType.Choice:
case ResponseType.Order:
case ResponseType.Judge:
case ResponseType.Vote:
case ResponseType.Grade:
case ResponseType.Number:
lvwSlide.Items.Add(slideIndex.ToString());
lvwSlide.Items[slidePos].SubItems.Add(PPTOper.GetSlideTitle(sld).ToString());
lvwSlide.Items[slidePos].SubItems.Add(sld.SlideID.ToString());
slidePos++;
break;
default:
break;
}
}
}
// slideIndex=tagSet.LoadValue(TagKey.ResponsePara_CanVoteSlideIndex,0).ToInt;
//当前幻灯片
tagSet.Tags = Globals.SunVoteARSAddIn.PPTEdit.SlideEdit.Tags;
//当前幻灯片ID
int SlideID = tagSet.GetValue(TagKey.ResponsePara_CanVoteSlideID).ToInt;
slideIndex = 0;
if (SlideID != 0)
{
try//杨斌 2012-06-29 FindBySlideID可能会报异常
{
slideIndex = Globals.SunVoteARSAddIn.PPTEdit.PPT.ActivePresentation.Slides.FindBySlideID(SlideID).SlideIndex;
}
catch { }
}
if (slidePos > 0)
{
if (slideIndex != 0)
{
for (int i = 0; i < lvwSlide.Items.Count; i++)
{
if (lvwSlide.Items[i].Text == slideIndex.ToString())
{
lvwSlide.Items[i].Selected = true;
break;
}
} //lvwSlide.Items[slidePos - 1].Selected = true;
LoadOptionList(slideIndex);
}
else
{
lvwSlide.Items[0].Selected = true;
//第一个幻灯片的SlideIndex
if (lvwSlide.Items[0].Text != "")
LoadOptionList(ConvertOper.Convert(lvwSlide.Items[0].Text).ToInt);
}
}
}
catch (Exception ex)
{
}
}
///
/// 加载选项列表
/// 修改:杨斌 2012-03-23
///
private void LoadOptionList(int SlideIndex)
{
try
{
lvwOption.Items.Clear();
string[] optionAry = null;
string CorrectAnwser = "";
string[] ChooseCurrectAnswer = null;
Slide sld = null;
sld = Globals.SunVoteARSAddIn.PPTEdit.PPT.ActivePresentation.Slides[SlideIndex];
tagSet.Tags = sld.Tags;
//string sOptions=tagSet.LoadValue(TagKey.Slide_OptionText, "").Value;
//optionAry = sOptions.Split(new string[] { "\r\n" },
// StringSplitOptions.RemoveEmptyEntries);
string sOptions = tagSet.GetValue(TagKey.Slide_OptionText).Value;
//if (sOptions.IndexOf("\r\n") != -1)
// optionAry = sOptions.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
//else
// optionAry = sOptions.Split(new string[] { "\n" }, StringSplitOptions.RemoveEmptyEntries);
//杨斌 2012-03-26 格式化\r\n
sOptions = sOptions.Replace("\r\n", "\r");
sOptions = sOptions.Replace("\n", "\r");
optionAry = sOptions.Split(new string[] { "\r" }, StringSplitOptions.RemoveEmptyEntries);
//2013-3-21 选项文本关联不对 赵丽
Shape s = PPTOper.GetOptionTextLinkShape(sld);
ResponseType responseType = EnumName.GetEnum(tagSet.GetValue(TagKey.ResponseType).Value);
btnSelectCorrect.Enabled = false;//杨斌 2012-03-01 设置选中正确答案按钮可用,并修改了按钮长度容纳英文
ListViewItem lvItem = null;
//string[] aryOptionText = PPTOper.GetOptionTextBySlide(sld);
switch (responseType)
{
case ResponseType.SignIn:
case ResponseType.Vote:
optionAry = sOptions.Split(new string[] { "\r" }, StringSplitOptions.RemoveEmptyEntries);
break;
default:
optionAry = PPTOper.GetShapeOptionText(s);
break;
}
switch (responseType)
{
case ResponseType.SignIn:
//for (int i = 0; i < optionAry.Length; i++)
for (int i = 0; i < 1; i++)
{
lvItem = lvwOption.Items.Add(optionAry[i]);
//lvItem = lvwOption.Items.Add(PPTOper.FormatNumABC(i + 1, true));
}
break;
case ResponseType.Group:
for (int i = 0; i < optionAry.Length; i++)
{
//lvItem = lvwOption.Items.Add(optionAry[i]);
lvItem = lvwOption.Items.Add(PPTOper.FormatNumABC(i + 1, true));
}
break;
case ResponseType.Choice:
case ResponseType.Judge:
TagKey tagKeyScoreMode = TagKey.UnknownKey;
TagKey tagKeyCorrectAnswer = TagKey.UnknownKey;
if (responseType == ResponseType.Choice)
{
tagKeyScoreMode = TagKey.Choice_ScoreMode;
tagKeyCorrectAnswer = TagKey.Choice_CorrectAnswer;
}
if (responseType == ResponseType.Judge)
{
tagKeyScoreMode = TagKey.Judge_ScoreMode;
tagKeyCorrectAnswer = TagKey.Judge_CorrectAnswer;
}
int scoreMode = tagSet.GetValue(tagKeyScoreMode).ToInt;
string CorrectAnswerStr = "";
CorrectAnswerStr = tagSet.GetValue(tagKeyCorrectAnswer).Value;
ChooseCurrectAnswer = CorrectAnswerStr.Split(',');
for (int i = 0; i < optionAry.Length; i++)
{
//ChooseCurrectAnswer = tagSet.GetValue(TagKey.Choice_CorrectAnswer).Value.Split(',');
//数字显示。
if (((scoreMode == 0) || (scoreMode == 2))//正确答案和剩余时间,杨斌 2018-05-08
&& (Array.IndexOf(ChooseCurrectAnswer, (i + 1).ToString()) != -1))
{
lvItem = lvwOption.Items.Add(PPTOper.FormatNumABC(i + 1, true) + " " + GlobalInfo.SysLanguage.LPT.ReadString(this.Name, "Correct", "正确"));
lvItem.Tag = "1";//标记正确选项
}
else
{
lvItem = lvwOption.Items.Add(PPTOper.FormatNumABC(i + 1, true));
}
}
btnSelectCorrect.Enabled = (((scoreMode == 0) || (scoreMode == 2))//正确答案和剩余时间,杨斌 2018-05-08
&& (CorrectAnswerStr != null) && (CorrectAnswerStr.Length > 0));//杨斌 2012-03-01
break;
case ResponseType.Vote:
case ResponseType.Grade:
for (int i = 0; i < optionAry.Length; i++)
{
lvItem = lvwOption.Items.Add(PPTOper.FormatNumABC(i + 1, true));
}
break;
case ResponseType.Order:
CorrectAnwser = PPTOper.GetOrderCorrectAnwser(tagSet);
lvItem = lvwOption.Items.Add(GlobalInfo.SysLanguage.LPT.ReadString(this.Name, " CorrectAnswer", "正确答案:") + CorrectAnwser);
if (CorrectAnwser.Length > 0)
{
btnSelectCorrect.Enabled = true;//杨斌 2012-03-01
lvItem.Tag = "1";//标记正确选项
}
break;
case ResponseType.Number:
CorrectAnwser = tagSet.GetValue(TagKey.Number_CorrectAnswer).Value;
lvItem = lvwOption.Items.Add(GlobalInfo.SysLanguage.LPT.ReadString(this.Name, " CorrectAnswer", "正确答案:") + CorrectAnwser);
if (CorrectAnwser.Length > 0)
{
btnSelectCorrect.Enabled = true;//杨斌 2012-03-01
lvItem.Tag = "1";//标记正确选项
}
break;
}
switch (responseType)
{
case ResponseType.Group://杨斌 2012-03-26
case ResponseType.Choice:
case ResponseType.Judge:
case ResponseType.Vote:
case ResponseType.Grade:
for (int i = 0; i < optionAry.Length; i++)
{
lvwOption.Items[i].SubItems.Add(optionAry[i]);
}
break;
}
//杨斌 2012-03-23
TagSet tagSetSlideEdit = new TagSet(Globals.SunVoteARSAddIn.PPTEdit.SlideEdit.Tags);//必须切换到当前幻灯片
int mode = tagSetSlideEdit.LoadValue(TagKey.ResponsePara_AuthorSlideOptionMode, 0).ToInt;
switch (responseType)
{
case ResponseType.SignIn:
case ResponseType.Group:
case ResponseType.Vote:
case ResponseType.Grade:
//无正确答案的单选必须是包含
rbtOr.Enabled = true;
rbtAnd.Enabled = false;
break;
case ResponseType.Choice:
case ResponseType.Judge:
int optionCount = tagSetSlideEdit.GetValue(TagKey.Choice_OptionLimit).ToInt;
rbtOr.Enabled = true;
rbtAnd.Enabled = true;// (optionCount > 1);
break;
case ResponseType.Order:
case ResponseType.Number:
//排序、数字必须是等于(正确答案)
rbtOr.Enabled = false;
rbtAnd.Enabled = true;
break;
default:
rbtOr.Enabled = true;
rbtAnd.Enabled = true;
break;
}
if ((!rbtAnd.Enabled) && (mode != 0))
{
mode = 0;
tagSetSlideEdit.SetValue(TagKey.ResponsePara_AuthorSlideOptionMode, mode);
}
if ((!rbtOr.Enabled) && (mode != 1))
{
mode = 1;
tagSetSlideEdit.SetValue(TagKey.ResponsePara_AuthorSlideOptionMode, mode);
}
if (mode == 1)
rbtAnd.Checked = true;
else
rbtOr.Checked = true;
LoadAuthorInfo(SlideIndex);
}
catch (Exception ex)
{
SystemLog.WriterLog(ex);
}
}
///
/// 加载授权明细
///
///
private void LoadAuthorInfo(int SlideIndex)
{
try
{
//幻灯片索引从1开始
if (SlideIndex == 0) { return; }
int SlideID = Globals.SunVoteARSAddIn.PPTEdit.PPT.ActivePresentation.Slides[SlideIndex].SlideID;
int CurrentID = Globals.SunVoteARSAddIn.PPTEdit.SlideEdit.SlideID;
tagSet.Tags = Globals.SunVoteARSAddIn.PPTEdit.SlideEdit.Tags;
if (CurrentID == tagSet.LoadValue(TagKey.ResponsePara_CanVoteCurrentID, 0).ToInt)
{
for (int i = 0; i < lvwOption.Items.Count; i++)
{
lvwOption.Items[i].Checked = tagSet.LoadValue(TagKey.ResponsePara_CanVoteOption_,
CurrentID.ToString() + "_" + SlideID.ToString() + "_" + (i + 1).ToString(), 0).ToInt == 1 ? true : false;
}
}
}
catch (Exception ex)
{
}
}
///
/// 是否有选择项
/// 2012-11-22 赵丽
///
///
private bool IsChecked()
{
if (GlobalInfo.OEMLogo != OEMLogos.oem3eAnalyzer) return true;
bool bResult = false;
for (int i = 0; i < lvwOption.Items.Count; i++)
{
if (lvwOption.Items[i].Checked == true)
{
bResult = true;
break;
}
}
return bResult;
}
///
/// 保存授权信息
///
private void SaveAuthorInfo()
{
//是否存在反馈记录
string topicID = Globals.SunVoteARSAddIn.PPTEdit.SlideEdit.SlideID.ToString();
string sSql = "select * from ST_Response where T_ID='" + topicID + "'";
if (GlobalInfo.DBOperation.RecordIsExist(sSql))
{
if (MessageBox.Show(GlobalInfo.SysLanguage.LPT.ReadString(this.Name, "UpdatePrompt",
"更改键盘授权信息,将清空该题目所有反馈信息,是否继续?"), GlobalInfo.GetAppName(), MessageBoxButtons.YesNo,
MessageBoxIcon.Question) == DialogResult.No)
{
this.DialogResult = DialogResult.No;
return;
}
else
{
GlobalInfo.response.ClearResponseDB(topicID);
}
}
try
{
//if (lvwSlide.FocusedItem == null) { return; }
//当前幻灯片ID_指定幻灯片ID_选项序号
string authorValue = "";
int SlideIndex = ConvertOper.Convert(lvwSlide.SelectedItems[0].Text).ToInt;
int SlideID = Globals.SunVoteARSAddIn.PPTEdit.PPT.ActivePresentation.Slides[SlideIndex].SlideID;
int CurrentID = Globals.SunVoteARSAddIn.PPTEdit.SlideEdit.SlideID;
//当前幻灯片
tagSet.Tags = Globals.SunVoteARSAddIn.PPTEdit.SlideEdit.Tags;
//删除之前的数据
PPTOper.RemoveTags(tagSet, "ResponsePara_CanVoteList_" + CurrentID.ToString());
PPTOper.RemoveTags(tagSet, "ResponsePara_CanVoteOption_" + CurrentID.ToString());
tagSet.SetValue(TagKey.ResponsePara_CanVoteCurrentID, CurrentID);
tagSet.SetValue(TagKey.ResponsePara_CanVoteSlideID, SlideID);
for (int i = 0; i < lvwOption.Items.Count; i++)
{
tagSet.SetValue(TagKey.ResponsePara_CanVoteOption_, CurrentID.ToString() + "_" + SlideID.ToString() + "_" + (i + 1).ToString(),
lvwOption.Items[i].Checked == true ? 1 : 0);
if (lvwOption.Items[i].Checked == true)
{
if (authorValue != "")
authorValue += ",";
authorValue += (i + 1).ToString();
}
}
tagSet.SetValue(TagKey.ResponsePara_AuthorValue, authorValue);
//tagSet.SetValue(TagKey.ResponsePara_CanVote, CanVoteIndex);
if (rbtAnd.Checked)
tagSet.SetValue(TagKey.ResponsePara_AuthorSlideOptionMode, 1);
else
tagSet.SetValue(TagKey.ResponsePara_AuthorSlideOptionMode, 0);
SaveOK = true;
this.DialogResult = DialogResult.OK;
}
catch (Exception ex)
{
}
}
private void lvwSlide_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
if (lvwSlide.FocusedItem == null) { return; }
int slideIndex = 0;
chkSelectAllSlide.Checked = false;
slideIndex = ConvertOper.Convert(lvwSlide.FocusedItem.Text).ToInt;
LoadOptionList(slideIndex);
SaveOK = true;
}
catch
{
//未选中列表
}
}
private void lvwOption_ItemCheck(object sender, ItemCheckEventArgs e)
{
SaveOK = false;
}
private void FrmCanVoteSlideResult_FormClosed(object sender, FormClosedEventArgs e)
{
if (!SaveOK)
{
SaveAuthorInfo();
SaveOK = true;
}
}
private void FrmCanVoteSlideResult_FormClosing(object sender, FormClosingEventArgs e)
{
if (SaveOK != true)
{
if (MessageBox.Show(GlobalInfo.SysLanguage.LPT.ReadString(this.Name, "UpdateSave",
"键盘授权已修改,是否保存?"), GlobalInfo.GetAppName(), MessageBoxButtons.YesNo,
MessageBoxIcon.Question) == DialogResult.Yes)
{
SaveOK = false;
}
else
SaveOK = true;
}
}
private void chkSelectAllSlide_Click(object sender, EventArgs e)
{
for (int i = 0; i < lvwOption.Items.Count; i++)
{
lvwOption.Items[i].Checked = chkSelectAllSlide.Checked;
}
SaveOK = false;
}
private void chkSelectAllSlide_CheckedChanged(object sender, EventArgs e)
{
}
}
}