/// <summary> オーバーレイを全て表示します。 /// </summary> /// <param name="pTimelineComponent"> オーバーレイに搭載するタイムラインコンポーネント </param> /// <param name="pOverlayViewList"> 表示するオーバーレイのリスト(IF) </param> public void ShowOverlay(CommonDataModel pCommonDM, TimelineComponent pTimelineComponent, IList <OverlayViewComponent> pOverlayViewList) { foreach (var overlay in pOverlayViewList) { this.ShowOverlay(pCommonDM, pTimelineComponent, overlay); } }
/*--- Method: private -----------------------------------------------------------------------------------------------------------------------------------------*/ /// <summary> 標準型タイムラインビューを開きます。 /// </summary> /// <param name="pTimelineC"> タイムラインコンポーネント </param> /// <param name="pOverlayViewC"> オーバーレイ表示コンポーネント </param> private void openStandardTimelineView(CommonDataModel pCommonDM, TimelineComponent pTimelineC, OverlayViewComponent pOverlayViewC) { OverlayWindow window = new OverlayWindow(); window.Topmost = true; var vm = window.DataContext as OverlayWindowViewModel; if (vm != null) { vm.TimelineComponent = pTimelineC; vm.OverlayViewComponent = pOverlayViewC; } if (pOverlayViewC.CommonDataModel.AppStatusData.AppMode != AppMode.Desing) { window.Show(); } // ViewのIntPtrを採取 IntPtr intPtr = new WindowInteropHelper(window).Handle; pOverlayViewC.OverlayDataModel.OverlayWindowData.WindowIntPtr = intPtr; if (!pCommonDM.AppCommonData.ViewIntPtrList.Contains(intPtr)) { pCommonDM.AppCommonData.ViewIntPtrList.Add(intPtr); } if (pOverlayViewC.OverlayDataModel.OverlayWindowData.WindowLock) { WindowsServices.SetWindowExTransparent(pOverlayViewC.OverlayDataModel.OverlayWindowData.WindowIntPtr); } }
/// <summary> オーバーレイを表示します。 /// </summary> /// <param name="pTimelineComponent"> タイムラインコンポーネント </param> /// <param name="pOverlayViewComponent"> </param> public void ShowOverlay(CommonDataModel pCommonDM, TimelineComponent pTimelineComponent, OverlayViewComponent pOverlayViewComponent) { if (!pOverlayViewComponent.OverlayDataModel.OverlayWindowData.WindowVisibility) { return; } this.overlayViewOpenProcess.NewOverlayOpen(pCommonDM, pTimelineComponent, pOverlayViewComponent); }
/// <summary> ファイル選択ダイアログを表示後、オーバーレイをインポートします。 /// </summary> public bool ImportOverlay(CommonDataModel pCommonDataModel, TimelineComponent pTimelineComponent, OverlayManageDataModel pOverlayManageDataModel) { OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.FilterIndex = 1; openFileDialog.Filter = "Overlay Xml|*.xml|All Files (*.*)|*.*"; openFileDialog.InitialDirectory = pCommonDataModel.ApplicationData.PluginDllDirectory; openFileDialog.Title = "Import Overlay Data"; bool?result = openFileDialog.ShowDialog(); if (result == true) { return(this.ImportOverlay(pCommonDataModel, pTimelineComponent, pOverlayManageDataModel, openFileDialog.FileName, string.Empty)); } return(false); }
/*--- Method: public ------------------------------------------------------------------------------------------------------------------------------------------*/ /// <summary> 新しいオーバーレイを作成し、表示します。 /// </summary> /// <param name="pTimelineComponent"></param> /// <param name="pViewControlComponent"></param> public void NewOverlayOpen(CommonDataModel pCommonDM, TimelineComponent pTimelineComponent, OverlayViewComponent pOverlayViewComponent) { switch (pOverlayViewComponent.OverlayDataModel.OverlayWindowData.OverlayType) { case OverlayType.StandardTimeline: this.openStandardTimelineView(pCommonDM, pTimelineComponent, pOverlayViewComponent); break; case OverlayType.TimelineControl: this.openOverlayControlView(pCommonDM, pTimelineComponent, pOverlayViewComponent); break; default: return; } return; }
/// <summary> 保存されているオーバーレイを全てロードします。 /// </summary> /// <param name="pCommonDataModel"> 共通データモデル </param> /// <param name="pTimelineComponent"> タイムラインコンポーネント </param> /// <param name="pOverlayManageDataModel"> 読込データを追加する管理データモデル </param> public void OverlayDataModelLoad(CommonDataModel pCommonDataModel, TimelineComponent pTimelineComponent, OverlayManageDataModel pOverlayManageDataModel) { if (pCommonDataModel == null || pCommonDataModel.ApplicationData == null) { return; } if (pCommonDataModel.ApplicationData.OverlayDataFilePathList.Count == 0) { return; } var dataList = this.OverlayDataModelLoad(pCommonDataModel.ApplicationData.OverlayDataFilePathList, true); if (dataList.Count == 0) { return; } foreach (var data in dataList) { OverlayViewComponent component = new OverlayViewComponent(pCommonDataModel); this.overlayDataRevisionProcess.DataRevisionExecute(data); // バージョン設定 data.DataVersion = pCommonDataModel.ApplicationData.ApplicationVersion; component.OverlayDataModel = data; component.OverlayDataModel.OverlayViewData.TimelineViewSource = new CollectionViewSource() { Source = pTimelineComponent.TimelineObjectModel.ActivityCollection }; this.setFilterProcess.SetResetFilter(component.OverlayDataModel.OverlayViewData.TimelineViewSource, false); pOverlayManageDataModel.OverlayViewComponentCollection.Add(component); pCommonDataModel.ViewCollection.Add(component); } }
/// <summary> オーバーレイをインポートします。 /// </summary> public bool ImportOverlay(CommonDataModel pCommonDataModel, TimelineComponent pTimelineComponent, OverlayManageDataModel pOverlayManageDataModel, string pOverlayFullPath, string pImportOverlayName) { var data = this.OverlayDataModelLoad(pOverlayFullPath, false); if (data != null) { this.overlayDataRevisionProcess.DataRevisionExecute(data); if (!string.IsNullOrWhiteSpace(pImportOverlayName)) { data.OverlayWindowData.OverlayName = pImportOverlayName; } this.AddNewOverlay(pCommonDataModel, data, pTimelineComponent, pOverlayManageDataModel, true); } else { throw new FileLoadException(); } return(true); }
/*--- Method: public ------------------------------------------------------------------------------------------------------------------------------------------*/ /// <summary> 新しいオーバーレイを作成します。 /// </summary> public void AddNewOverlay(CommonDataModel pCommonDM, OverlayDataModel pAddOverlayDM, TimelineComponent pTimelineC, OverlayManageDataModel pOverlayManageM, bool IsImport) { // ID設定 if (pOverlayManageM.OverlayViewComponentCollection.Count > 0) { pAddOverlayDM.OverlayWindowData.ID = pOverlayManageM.OverlayViewComponentCollection.Max(m => m.OverlayDataModel.OverlayWindowData.ID) + 1; } else { pAddOverlayDM.OverlayWindowData.ID = 1; } OverlayViewComponent component = new OverlayViewComponent(pCommonDM); component.OverlayDataModel = pAddOverlayDM; if (IsImport) { pAddOverlayDM.OverlayWindowData.WindowTop = 10; pAddOverlayDM.OverlayWindowData.WindowLeft = 10; pAddOverlayDM.OverlayWindowData.WindowVisibility = false; pAddOverlayDM.OverlayWindowData.WindowLock = false; } else { this.SetDefaultOverlayWindowData(component.OverlayDataModel.OverlayWindowData); this.SetDefaultOverlaySettingData(component.OverlayDataModel.OverlayOptionData); } component.OverlayDataModel.OverlayViewData.TimelineViewSource = new CollectionViewSource() { Source = pTimelineC.TimelineObjectModel.ActivityCollection }; this.setFilterProcess.SetResetFilter(component.OverlayDataModel.OverlayViewData.TimelineViewSource, false); // バージョン設定 component.OverlayDataModel.DataVersion = pCommonDM.ApplicationData.ApplicationVersion; pOverlayManageM.OverlayViewComponentCollection.Add(component); pCommonDM.ViewCollection.Add(component); }
/// <summary> オーバーレイのコピー作成を実行します。 /// </summary> /// <param name="pOverlayVC"> コピーするオーバーレイコンポーネント </param> /// <param name="pTimelineC"> コピーしたオーバーレイに搭載するタイムラインコンポーネント </param> /// <param name="pOverlayManageDM"> オーバーレイ管理データモデル </param> /// <param name="pNewOverlayName"> コピー後に設定するオーバーレイの名前 </param> public void CopyOverlay(OverlayViewComponent pOverlayVC, TimelineComponent pTimelineC, OverlayManageDataModel pOverlayManageDM, string pNewOverlayName) { this.OverlayDataModelSave(pOverlayVC.CommonDataModel.ApplicationData.GetTempOverlayFullPath, pOverlayVC.OverlayDataModel, false); this.ImportOverlay(pOverlayVC.CommonDataModel, pTimelineC, pOverlayManageDM, pOverlayVC.CommonDataModel.ApplicationData.GetTempOverlayFullPath, pNewOverlayName); }