FrmRushAnswer.cs 7.25 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 SunVoteARSPPT.Properties;
using GeneralLib;
using System.Threading;
//using SunVoteARSPPT.Common;

namespace SunVoteARSPPT
{
    public partial class FrmRushAnswer : Form
    {
        private int count = 3;//倒计时次数

        private bool canPressQD = false;
        /// <summary>
        /// 是否可开始抢答,用作外部判断屏蔽按键,解决和防止时间未到就收到键盘按键提前抢答。
        /// 创建:杨斌 2011-08-18
        /// </summary>
        public bool CanPressQD
        {
            get { return canPressQD; }
            private set { canPressQD = value; }
        }

        public FrmRushAnswer()
        {
            InitializeComponent();
        }

        private bool isRunForm = false;
        /// <summary>
        /// 判断抢答窗体是否在运行。杨斌 2015-04-29
        /// </summary>
        public bool IsRun
        {
            get
            {
                return isRunForm;
            }
        }

        private void FrmRushAnswer_Load(object sender, EventArgs e)
        {
            ControlOper.CenterForm(this, true);//杨斌 2014-09-16

            //多语言初始化控件文本
            //GlobalInfo.SysLanguage.SetLanguage(this.Name, this);
            this.Text = GlobalInfo.SysLanguage.LPT.ReadString(this.Name, "FrmRushAnswer", "抢答");
            lblTitle.Text = GlobalInfo.SysLanguage.LPT.ReadString(this.Name, "lblTitle", "请准备抢答");
            lblMsg.Text = GlobalInfo.SysLanguage.LPT.ReadString(this.Name, "lblMsg", "抢答中…");

            //杨斌 2014-05-20
            lblMsg.Visible = false;
            picNum.Visible = true;

            //count = 0;//杨斌 2013-12-19 
            if (count > 3)//最多支持3秒(只有3个图片)
                count = 3;
            canPressQD = false;//杨斌 2011-08-18

            trm.Interval = 1;
            if (count > 0)
            {
                picNum.Visible = true;
                trm.Start();
            }
            else
            {
                picNum.Visible = false;
                canPressQD = true;

                StartRushAnswer();//杨斌 2014-05-20
            }

            lblMsg.Text = "";

            //StartRushAnswer();

            //if (Screen.AllScreens.Count() == 1)
            //    this.Opacity = 0.9;
            //else
            //    this.Opacity = 1;
        }

        /// <summary>
        /// 计时器事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void trm_Tick(object sender, EventArgs e)
        {
            trm.Interval = 1000;

            if (count == 0)
            {
                trm.Stop();

                //开始抢答
                StartRushAnswer();

                canPressQD = true;//杨斌 2011-08-18
            }
            else if (count > 0)
            {
                switch (count)
                {
                    case 3:
                        picNum.BackgroundImage = Resources._3;
                        break;
                    case 2:
                        picNum.BackgroundImage = Resources._2;
                        break;
                    case 1:
                        picNum.BackgroundImage = Resources._1;
                        break;
                }
            }

            count = count - 1;
        }

        /// <summary>
        /// 退出抢答
        /// 创建:杨斌 2010-11-15
        /// </summary>
        public void ExitRushAnswer()
        {
            StopRushAnswer();            
            this.Close();
        }

        private void picClose_Click(object sender, EventArgs e)
        {
            ExitRushAnswer();
        }

        /// <summary>
        /// 开始抢答
        /// </summary>
        public void StartRushAnswer()
        {
            isRunForm = true;//杨斌 2015-04-29

            FrmVoteBar frmVoteBar = Globals.SunVoteARSAddIn.frmVoteBar;

            lblMsg.Visible = true;//杨斌 2014-05-20

            //GlobalInfo.response.RushAnswerStart();
            //VotingService.Start(null);
            lblMsg.Text = GlobalInfo.SysLanguage.LPT.ReadString(this.Name, "lblMsg1", "抢答中…");//2013-12-23
            lblTitle.Text = "";
            frmVoteBar.isRushAnswer = true;
            picNum.Visible = false;

            GlobalInfo.response.RushAnswerStart();            
        }

        /// <summary>
        /// 停止抢答
        /// </summary>
        public void StopRushAnswer()
        {
            FrmVoteBar frmVoteBar = Globals.SunVoteARSAddIn.frmVoteBar;

            canPressQD = false;//杨斌 2011-08-18 防止两个键盘都同时按了,在基站停止前,后面收到的键盘也能提交,如:先显示3,再显示5
            //VotingService.Stop(null);
            GlobalInfo.response.RushAnswerStop();

            if (frmVoteBar.IsVoteStart)
            {
                Globals.SunVoteARSAddIn.PPTShow.IsAutoShowNext = !frmVoteBar.IsVoteStart;
                frmVoteBar.VoteStart(!frmVoteBar.IsVoteStart);
            }

            frmVoteBar.isRushAnswer = false;
            trm.Stop();//停止抢答时停止计时器 杨斌 2011-08-18
            trm.Enabled = false;//停止抢答时停止计时器
        }

        /// <summary>
        /// 显示抢答结果
        /// </summary>
        /// <param name="ObjResponsePar"></param>
        public void ShowRushAnswer(ResponsePar ObjResponsePar)
        {
            if (!canPressQD) return;
            
            StopRushAnswer();

            string nameCol = GlobalInfo.response.ShowNameCol;

            string keyIdOrName = "";
            if (!string.IsNullOrEmpty(nameCol))
            {
                keyIdOrName = RosterList.GetRushAnswerShow(nameCol, ObjResponsePar.KeyID.ToString());
            }
            if (string.IsNullOrEmpty(keyIdOrName))
            {
                keyIdOrName = ObjResponsePar.KeyID.ToString();
                string temp = GlobalInfo.SysLanguage.LPT.ReadString("FrmRushAnswer", "lblMsg2", "请-号键盘作答!");
                temp = temp.Replace("-", keyIdOrName);
                lblMsg.Text = temp;
            }
            else
            {
                string temp = GlobalInfo.SysLanguage.LPT.ReadString("FrmRushAnswer", "lblMsg3", "请-作答!");
                temp = temp.Replace("-", keyIdOrName);
                lblMsg.Text = temp;
            }

            //if (ObjResponsePar.KeyID > 0)            
            GlobalInfo.response.KeyIDQDOK = ObjResponsePar.KeyID;
        }

        private void FrmRushAnswer_KeyDown(object sender, KeyEventArgs e)
        {
            //屏蔽,在快捷键处理。杨斌 2015-05-26
            //if (e.KeyCode == Keys.Escape)
            //{
            //    ExitRushAnswer();
            //}
        }

        private void tmrSelect_Tick(object sender, EventArgs e)
        {
            this.Select();//杨斌 2014-09-24
        }

        private void FrmRushAnswer_FormClosing(object sender, FormClosingEventArgs e)
        {
            tmrSelect.Enabled = false;//杨斌 2014-09-24
            isRunForm = false;//杨斌 2015-04-29
        }
    }
}