using System;
using System.Drawing;
using System.Media;
using System.Threading;
using System.Windows.Forms;
using UAS_MES_NEW.PublicMethod;

namespace UAS_MES_NEW.CustomControl.RichText
{
    public partial class RichTextAutoBottom : RichTextBox
    {
        Thread thread;
        string FileName = "";
        public RichTextAutoBottom()
        {
            InitializeComponent();
            thread = new Thread(PlaySound);
            TextChanged += RichTextBox_TextChange;
        }

        private void RichTextBox_TextChange(object sender, EventArgs e)
        {
            SelectionStart = Text.Length;
            ScrollToCaret();
        }

        /// <summary>
        /// color设置AppendText的颜色
        /// </summary>
        /// <param name="str"></param>
        /// <param name="color"></param>
        public void AppendText(string str, Color color)
        {
            SelectionColor = color;
            base.AppendText(str);
            //如果颜色是红色则进行提示音
            if (color == Color.Red && Entity.SystemInf.CheckAudioEnable)
            {
                if(str.Contains("缺料"))
                FileName = Application.StartupPath + @"\Resources\Sound\缺料.wav";
                else
                FileName = Application.StartupPath + @"\Resources\Sound\5185.wav";
                thread.Start();
                thread = new Thread(PlaySound);

            }
            else if (color == Color.Green && Entity.SystemInf.CheckAudioEnable)
            {
                //颜色是绿色,进行正确提示音
                if (str.Contains("缺料"))
                    FileName = Application.StartupPath + @"\Resources\Sound\缺料.wav";
                else
                    FileName = Application.StartupPath + @"\Resources\Sound\8378.wav";
                thread.Start();
                thread = new Thread(PlaySound);
            }
            else if (color == Color.Blue && Entity.SystemInf.CheckAudioEnable)
            {
                //颜色是绿色,进行正确提示音
                FileName = Application.StartupPath + @"\Resources\Sound\4082.wav";
                thread.Start();
                thread = new Thread(PlaySound);
            }
            LogManager.DoLog(FindForm().Tag + str);
        }

        /// <summary>
        /// 提示错误信息清楚指定控件的值
        /// </summary>
        /// <param name="str"></param>
        /// <param name="color"></param>
        /// <param name="ctl"></param>
        public void AppendText(string str, Color color, Control ctl)
        {
            SelectionColor = color;
            base.AppendText(str);
            ctl.Text = "";
            //如果颜色是红色则进行提示音
            if (color == Color.Red && Entity.SystemInf.CheckAudioEnable)
            {
                if (str.Contains("缺料"))
                    FileName = Application.StartupPath + @"\Resources\Sound\缺料.wav";
                else
                    FileName = Application.StartupPath + @"\Resources\Sound\采集失败.wav";
                thread.Start();
                thread = new Thread(PlaySound);

            }
            else if (color == Color.Green && Entity.SystemInf.CheckAudioEnable)
            {
                //颜色是绿色,进行正确提示音
                if (str.Contains("缺料"))
                    FileName = Application.StartupPath + @"\Resources\Sound\缺料.wav";
                else
                    FileName = Application.StartupPath + @"\Resources\Sound\采集正确.wav";
                thread.Start();
                thread = new Thread(PlaySound);
            }
            else if (color == Color.Blue && Entity.SystemInf.CheckAudioEnable)
            {
                //颜色是绿色,进行正确提示音
                FileName = Application.StartupPath + @"\Resources\Sound\采集正确.wav";
                thread.Start();
                thread = new Thread(PlaySound);
            }
            LogManager.DoLog(FindForm().Tag + str);
        }

        private void PlaySound()
        {
            //要加载COM组件:Microsoft speech object Library    
            if (!System.IO.File.Exists(FileName))
            {
                return;
            }
            try
            {
                SoundPlayer player = new SoundPlayer();
                player.SoundLocation = FileName;
                player.Load();
                player.Play();
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
                Entity.SystemInf.CheckAudioEnable = false;
            }
        }
    }
}