private void UninstallSubEvent(SplitScreenInfo info) { if (info != null) { info.DataChanged -= Info_DataChanged; } }
/// <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; } }
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; } }
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) { } }
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); } }
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); }
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; }