// 以下为主页面代码
        /// <summary>
        /// VCL相机初始化
        /// </summary>
        private void VclCamInit()
        {
            LogHelper.WriteLog("vcl cam init start");
            foreach (var c in AIThermometerAPP.Instance().cameras_config.Cameras)
            {
                // 如果不是自动启动,所有相机的状态设为离线
                if (!AIThermometerAPP.Instance().AutoStartCam())
                {
                    c.state = CamContectingState.OFFLINE;
                }

                if (c.state == CamContectingState.ONLINE &&
                    AIThermometerAPP.Instance().AutoStartCam())
                {
                    // 如果摄像头Online 开始画面
                    if (CameraFactory.Instance().CreateCameraStream(c.Name, c.IP, c.StreamType) == null)
                    {
                        c.state = CamContectingState.OFFLINE;
                    }

                    // TODO 画面左侧的摄像头列表改变状态 在线 不在线 错误  需要完善
                    // TODO 状态从c。state获取, 名称也在c.name里。
                }
                CameraController cameraController = new CameraController(c);
                cameraController.SetConnectHandler(this.ConnectHandler, this.DisconnectHandler);
                listView.Items.Add(cameraController);
                ViewButtonStateChanged(c.state);
            }
            LogHelper.WriteLog("vcl cam init end : " + CameraFactory.Instance().cl.Count + " cameras ready!");
        }
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            if (AIThermometerAPP.Instance().AutoStartCam())
            {
                if (CameraFactory.Instance().cl.Count > 0)
                {
                    foreach (var ci in CameraFactory.Instance().cl)
                    {
                        this.vlcWindow.SetCamStream(ci);
                    }
                }
            }

            //mc)

            this.vlcWindow.ChangeLeft();
            // 设置全屏
            this.WindowState = System.Windows.WindowState.Normal;
            this.WindowStyle = System.Windows.WindowStyle.None;
            this.ResizeMode  = System.Windows.ResizeMode.NoResize;
            // this.Topmost = true;

            this.Left = 0.0;
            this.Top  = 0.0;

            this.Width  = System.Windows.SystemParameters.PrimaryScreenWidth;
            this.Height = System.Windows.SystemParameters.PrimaryScreenHeight;
        }
 public void DisconnectHandler(string ip)
 {
     this.vlcWindow.DelCamStream();
     CameraFactory.Instance().DelCamStream(ip);
     foreach (var c in AIThermometerAPP.Instance().cameras_config.Cameras)
     {
         c.state = CamContectingState.OFFLINE;
         ViewButtonStateChanged(c.state);
     }
 }
 public void ConnectHandler(string ip)
 {
     foreach (var c in AIThermometerAPP.Instance().cameras_config.Cameras)
     {
         if (c.IP == ip)
         {
             var mc = CameraFactory.Instance().CreateCameraStream(c.Name, c.IP, c.StreamType);
             if (mc != null)
             {
                 c.state = CamContectingState.ONLINE;
                 this.vlcWindow.SetCamStream(mc);
                 LogHelper.WriteLog("Connect handler cl count :" + CameraFactory.Instance().cl.Count);
             }
         }
         ViewButtonStateChanged(c.state);
     }
     this.vlcWindow.ChangeLeft();
 }
        private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
        {
            foreach (var a in CameraFactory.Instance().cl)
            {
                foreach (var b in a)
                {
                    b.Value.Stop();
                    //(b.Value as VlcCamera).vlcPlayer.Dispose();
                }
            }
            CameraFactory.Instance().cl.Clear();
            this.vlcWindow.Shutdown();

            ServerHelper.Instance().Dispose();
            //TempWarning.Instance().addedWarningInfo = null;
            //;aTimer.Close();
            LogHelper.WriteLog("Closing APP");
            Environment.Exit(0);
            //base.OnClosing();
        }