using Common.system;

using System;
using System.Threading;
using System.Windows;
using System.Windows.Media.Imaging;
using System.Windows.Threading;

namespace XHWK.WKTool
{
    /// <summary>
    /// 录屏等待 CountdownWindow.xaml 的交互逻辑
    /// </summary>
    public partial class CountdownWindow : Window
    {
        public CountdownWindow()
        {
            InitializeComponent();
        }

        /// <summary>
        /// 计时器
        /// </summary>
        private int ImgNum = 22;
        public void Initialize(bool ShowlblShortcut = false, int changeTime = 2000)
        {
            if (ShowlblShortcut)
            {
                lblShortcut.Visibility = Visibility.Visible;
                borShortcut.Visibility = Visibility.Visible;
            }
            else
            {
                lblShortcut.Visibility = Visibility.Hidden;
                borShortcut.Visibility = Visibility.Hidden;
            }
            ImgNum = 22;
            bool IsStart = true;
            new Thread(new ThreadStart(new Action(() =>
            {
                while (IsStart)
                {
                    try
                    {
                        if (ImgNum >= 1)
                        {
                            loadingImg(ImgNum);
                            ImgNum--;
                            Thread.Sleep(changeTime / 22);
                        }
                        else
                        {
                            IsStart = false;
                            Dispatcher.Invoke(
                                      DispatcherPriority.Send,
                                      new Action(() =>
                                      {
                                          imgLoding.Source = new BitmapImage(new Uri("pack://application:,,/Images/countdown3_1.png"));
                                          Hide();
                                      }));
                        }
                    }
                    catch (Exception ex)
                    {
                        LogHelper.WriteErrLog("【录屏等待】(Initialize)" + ex.Message, ex);
                    }
                }
            }))).Start();
            //timer = new System.Timers.Timer(changeTime/21);//设置执行一次(false)还是一直执行(true)
            //timer.AutoReset = true;//设置是否执行System.Timers.Timer.Elapsed事件
            //timer.Elapsed +=new System.Timers.ElapsedEventHandler(Timer_Elapsed);
            ////timer.Interval = changeTime/21;
            //timer.Enabled = true; //启动计时器
            //ImgNum = 21;
        }

        private void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            if (ImgNum >= 1)
            {
                loadingImg(ImgNum);
                ImgNum--;
            }
            else
            {
                //timer.Enabled = false;
                Dispatcher.Invoke(
                  DispatcherPriority.Send,
                  new Action(() =>
                  {
                      imgLoding.Source = new BitmapImage(new Uri("pack://application:,,/Images/countdown3_1.png"));
                      Hide();
                  }));
            }
        }

        /// <summary>
        /// 加载图片
        /// </summary>
        /// <param name="num"></param>
        private void loadingImg(int num)
        {
            switch (num)
            {
                case 1:
                    Dispatcher.Invoke(
                      DispatcherPriority.Send,
                      new Action(() =>
                      {
                          imgLoding.Source = new BitmapImage(new Uri("pack://application:,,/Images/countdown1_7.png"));
                      }));
                    break;
                case 2:
                    Dispatcher.Invoke(
                      DispatcherPriority.Send,
                      new Action(() =>
                      {
                          imgLoding.Source = new BitmapImage(new Uri("pack://application:,,/Images/countdown1_6.png"));
                      }));
                    break;
                case 3:
                    Dispatcher.Invoke(
                      DispatcherPriority.Send,
                      new Action(() =>
                      {
                          imgLoding.Source = new BitmapImage(new Uri("pack://application:,,/Images/countdown1_5.png"));
                      }));
                    break;
                case 4:
                    Dispatcher.Invoke(
                      DispatcherPriority.Send,
                      new Action(() =>
                      {
                          imgLoding.Source = new BitmapImage(new Uri("pack://application:,,/Images/countdown1_4.png"));
                      }));
                    break;
                case 5:
                    Dispatcher.Invoke(
                      DispatcherPriority.Send,
                      new Action(() =>
                      {
                          imgLoding.Source = new BitmapImage(new Uri("pack://application:,,/Images/countdown1_3.png"));
                      }));
                    break;
                case 6:
                    Dispatcher.Invoke(
                      DispatcherPriority.Send,
                      new Action(() =>
                      {
                          imgLoding.Source = new BitmapImage(new Uri("pack://application:,,/Images/countdown1_2.png"));
                      }));
                    break;
                case 7:
                    Dispatcher.Invoke(
                      DispatcherPriority.Send,
                      new Action(() =>
                      {
                          imgLoding.Source = new BitmapImage(new Uri("pack://application:,,/Images/countdown1_1.png"));
                      }));
                    break;
                case 8:
                    Dispatcher.Invoke(
                      DispatcherPriority.Send,
                      new Action(() =>
                      {
                          imgLoding.Source = new BitmapImage(new Uri("pack://application:,,/Images/countdown2_7.png"));
                      }));
                    break;
                case 9:
                    Dispatcher.Invoke(
                      DispatcherPriority.Send,
                      new Action(() =>
                      {
                          imgLoding.Source = new BitmapImage(new Uri("pack://application:,,/Images/countdown2_6.png"));
                      }));
                    break;
                case 10:
                    Dispatcher.Invoke(
                      DispatcherPriority.Send,
                      new Action(() =>
                      {
                          imgLoding.Source = new BitmapImage(new Uri("pack://application:,,/Images/countdown2_5.png"));
                      }));
                    break;
                case 11:
                    Dispatcher.Invoke(
                      DispatcherPriority.Send,
                      new Action(() =>
                      {
                          imgLoding.Source = new BitmapImage(new Uri("pack://application:,,/Images/countdown2_4.png"));
                      }));
                    break;
                case 12:
                    Dispatcher.Invoke(
                      DispatcherPriority.Send,
                      new Action(() =>
                      {
                          imgLoding.Source = new BitmapImage(new Uri("pack://application:,,/Images/countdown2_3.png"));
                      }));
                    break;
                case 13:
                    Dispatcher.Invoke(
                      DispatcherPriority.Send,
                      new Action(() =>
                      {
                          imgLoding.Source = new BitmapImage(new Uri("pack://application:,,/Images/countdown2_2.png"));
                      }));
                    break;
                case 14:
                    Dispatcher.Invoke(
                      DispatcherPriority.Send,
                      new Action(() =>
                      {
                          imgLoding.Source = new BitmapImage(new Uri("pack://application:,,/Images/countdown2_1.png"));
                      }));
                    break;
                case 15:
                    Dispatcher.Invoke(
                      DispatcherPriority.Send,
                      new Action(() =>
                      {
                          imgLoding.Source = new BitmapImage(new Uri("pack://application:,,/Images/countdown3_8.png"));
                      }));
                    break;
                case 16:
                    Dispatcher.Invoke(
                      DispatcherPriority.Send,
                      new Action(() =>
                      {
                          imgLoding.Source = new BitmapImage(new Uri("pack://application:,,/Images/countdown3_7.png"));
                      }));
                    break;
                case 17:
                    Dispatcher.Invoke(
                      DispatcherPriority.Send,
                      new Action(() =>
                      {
                          imgLoding.Source = new BitmapImage(new Uri("pack://application:,,/Images/countdown3_6.png"));
                      }));
                    break;
                case 18:
                    Dispatcher.Invoke(
                      DispatcherPriority.Send,
                      new Action(() =>
                      {
                          imgLoding.Source = new BitmapImage(new Uri("pack://application:,,/Images/countdown3_5.png"));
                      }));
                    break;
                case 19:
                    Dispatcher.Invoke(
                      DispatcherPriority.Send,
                      new Action(() =>
                      {
                          imgLoding.Source = new BitmapImage(new Uri("pack://application:,,/Images/countdown3_4.png"));
                      }));
                    break;
                case 20:
                    Dispatcher.Invoke(
                      DispatcherPriority.Send,
                      new Action(() =>
                      {
                          imgLoding.Source = new BitmapImage(new Uri("pack://application:,,/Images/countdown3_3.png"));
                      }));
                    break;
                case 21:
                    Dispatcher.Invoke(
                      DispatcherPriority.Send,
                      new Action(() =>
                      {
                          imgLoding.Source = new BitmapImage(new Uri("pack://application:,,/Images/countdown3_2.png"));
                      }));
                    break;
                case 22:
                    Dispatcher.Invoke(
                      DispatcherPriority.Send,
                      new Action(() =>
                      {
                          imgLoding.Source = new BitmapImage(new Uri("pack://application:,,/Images/countdown3_1.png"));
                      }));
                    break;
                default:
                    break;
            }
        }

        private void Window_ContentRendered(object sender, EventArgs e)
        {

        }

    }
}