Exemple #1
0
 private void UninstallSubEvent(SplitScreenInfo info)
 {
     if (info != null)
     {
         info.DataChanged -= Info_DataChanged;
     }
 }
Exemple #2
0
        /// <summary>
        /// 重新加载界面
        /// </summary>
        private async Task reloadUI()
        {
            while (_onLoading)
            {
                await Task.Delay(10);
            }
            _onLoading = true;
            ClearUI();
            if (ViewModel == null)
            {
                _onLoading = false;
                return;
            }
            SplitScreenInfo data = ViewModel.SplitScreenData;

            if (data != null && data.Nodes != null)
            {
                for (int i = 0; i < data.Split; i++)
                {
                    gridMain.RowDefinitions.Add(new RowDefinition());
                    gridMain.ColumnDefinitions.Add(new ColumnDefinition());
                }
                VideoPanelItem[] items = await GetVideoPanels(data);

                bool editting = ViewModel.IsOnEditting;
                foreach (VideoPanelItem panel in items)
                {
                    panel.ViewModel.IsInEditStatus = !editting;
                    gridMain.Children.Add(panel);
                }
            }
            _onLoading = false;
        }
 private void InvokePrepare(SplitScreenInfo info)
 {
     if (SplitScreenData != info)
     {
         OnDataPrepare(new PrepareEventArgs(info));
     }
 }
 private void InvokeSwitch(SplitScreenInfo info)
 {
     if (SplitScreenData != info)
     {
         SplitScreenData = info;
     }
 }
Exemple #5
0
        private void playMultiVideos(SplitScreenPanel panel, int split, IEnumerable <dynamic> videos)
        {
            List <SplitScreenNode> nodes = new List <SplitScreenNode>();

            foreach (var one in videos)
            {
                SplitScreenNode node = new SplitScreenNode()
                {
                    VideoId    = one.VideoId,
                    Row        = one.Row,
                    Column     = one.Column,
                    RowSpan    = one.RowSpan,
                    ColumnSpan = one.ColumnSpan
                };
                nodes.Add(node);
            }

            if (nodes.Count > 0)
            {
                SplitScreenInfo ssi = new SplitScreenInfo()
                {
                    Split = split,
                    Nodes = nodes.ToArray()
                };
                panel.ViewModel.SplitScreenData = ssi;
            }
        }
Exemple #6
0
        private async Task <VideoPanelItem[]> GetVideoPanels(SplitScreenInfo data)
        {
            while (_onPreparing)
            {
                await Task.Delay(50);
            }

            if (data == _prepareData)
            {
                VideoPanelItem[] items = _prepareItems;
                _prepareItems = null;
                _prepareData  = null;
                return(items);
            }
            else
            {
                if (_prepareItems != null)
                {
                    foreach (VideoPanelItem vpi in _prepareItems)
                    {
                        destoryVideoPanel(vpi);
                    }
                }
                _prepareItems = null;
                _prepareData  = null;
                return(await CreateVideoPanels(data));
            }
        }
        public static SplitScreenInfo LoadData()
        {
            SplitScreenInfo info = null;
            //info = JsonParser.DeserializeFromFile<SplitScreenInfo>(DirectoryHelper.GetConfigFilePath(LayoutFile));
            var file = new AggregateCustomSettingFile <string, SplitScreenInfo>(LayoutFile);

            info = file[ProcessHelper.Instance.FormatKey(KeyString)];
            return(info);
        }
        private void importLayout()
        {
            SplitScreenInfo data = JsonParserExpand.DeserializeFromFile <SplitScreenInfo>(DirectoryHelper.LayoutSchemeName, DirectoryHelper.LayoutFileExt);

            if (data != null)
            {
                SplitScreenModel.SplitScreenData = data;
            }
        }
 public void StopTimingSwitch()
 {
     StopSwitchThread();
     if (OnSwitching)
     {
         OnSwitching     = false;
         SwitchPaused    = false;
         SplitScreenData = _oldInfo;
     }
 }
 private static void DoSave()
 {
     try
     {
         Thread.Sleep(50); //延时50ms执行。
         SaveData(_infoData);
         _infoData = null;
     }
     catch (ThreadAbortException) { }
 }
Exemple #11
0
        private async void Model_DataPrepare(object sender, SplitScreenModel.PrepareEventArgs e)
        {
            if (!_onPreparing)
            {
                _onPreparing  = true;
                _prepareData  = e.PrepareData;
                _prepareItems = await CreateVideoPanels(e.PrepareData);

                _onPreparing = false;
            }
        }
 public static void SaveData(SplitScreenInfo info)
 {
     try
     {
         //JsonParser.SerializeToFile(info, DirectoryHelper.GetConfigFilePath(LayoutFile), true);
         var file = new AggregateCustomSettingFile <string, SplitScreenInfo>(LayoutFile);
         file[ProcessHelper.Instance.FormatKey(KeyString)] = info;
     }
     catch (Exception e)
     {
         Console.WriteLine("保存布局方案失败:" + e.Message);
     }
 }
 public void StartTimingSwitch()
 {
     TimeSwitchInfo[] scheme = TimeSwitchScheme.Instance.Scheme;
     if (scheme != null && scheme.Length > 0)
     {
         StopSwitchThread();
         _oldInfo      = SplitScreenData;
         OnSwitching   = true;
         _switchThread = new Thread(StartSwitch);
         _switchThread.IsBackground = true;
         _switchThread.Start(scheme);
     }
 }
Exemple #14
0
        private async Task <VideoPanelItem[]> CreateVideoPanels(SplitScreenInfo data)
        {
            DateTime timeStart = DateTime.Now;

            VideoPanelItem[] vpis = new VideoPanelItem[data.Nodes.Length];
            for (int i = 0; i < data.Nodes.Length; i++)
            {
                var            node  = data.Nodes[i];
                VideoPanelItem panel = findAVideoPanel(node);
                vpis[i] = panel;
                await Task.Delay(10);
            }
            Console.WriteLine("Load Count:{0} UsedTime:{1}", gridMain.Children.Count, DateTime.Now - timeStart);
            return(vpis);
        }
Exemple #15
0
 private void doShortcut(object obj)
 {
     if (splitPanel.ViewModel != null && !(splitPanel.ViewModel.OnSwitching || splitPanel.ViewModel.IsOnEditting))
     {
         ShortcutItem si = obj as ShortcutItem;
         if (si != null && si.FileName != null)
         {
             if (!File.Exists(si.FileName))
             {
                 DialogWin.Show("未找到布局文件:" + si.FileName, DialogWinImage.Warning);
                 return;
             }
             SplitScreenInfo data = JsonParser.DeserializeFromFile <SplitScreenInfo>(si.FileName);
             if (data != null)
             {
                 LayoutScheme.Instance.Scheme.SplitScreenData = data;
             }
         }
     }
 }
 public static void LazySaveData(SplitScreenInfo info)
 {
     _infoData = info;
     LazySave();
 }
 public PrepareEventArgs(SplitScreenInfo info)
 {
     PrepareData = info;
 }