/// <summary> 新しいオーバーレイカスタムウィンドウを作成し、表示します。 /// </summary> /// <param name="pOverlayViewComponent"> カスタム対象のオーバーレイコンポーネント </param> public void NewOverlayCustomWindowOpen(CommonDataModel pCommonDM, OverlayViewComponent pOverlayViewComponent) { pOverlayViewComponent.OverlayDataModel.OverlayViewData.OverlayCustomClosed = false; OverlayCustomWindow window = new OverlayCustomWindow(); ElementHost.EnableModelessKeyboardInterop(window); var vm = window.DataContext as OverlayCustomWindowViewModel; if (vm == null) { return; } vm.OverlayViewComponent = pOverlayViewComponent; if (pOverlayViewComponent.CommonDataModel.AppStatusData.AppMode != AppMode.Desing) { window.Show(); } // ViewのIntPtrを採取 IntPtr intPtr = new WindowInteropHelper(window).Handle; if (!pCommonDM.AppCommonData.ViewIntPtrList.Contains(intPtr)) { pCommonDM.AppCommonData.ViewIntPtrList.Add(intPtr); } }
/*--- Method: public ------------------------------------------------------------------------------------------------------------------------------------------*/ /*--- Method: private -----------------------------------------------------------------------------------------------------------------------------------------*/ /// <summary> デザイン用データの生成(パターン1) /// </summary> private void createDesingData_P001() { for (int i = 0; i < 30; i++) { OverlayViewComponent component = new OverlayViewComponent(model); component.OverlayDataModel.OverlayWindowData.OverlayName = "デザイン用オーバーレイ" + i.ToString(); component.OverlayDataModel.OverlayWindowData.OverlayType = OverlayType.StandardTimeline; base.OverlayManageComponent.OverlayManageDataModel.OverlayViewComponentCollection.Add(component); } }
/*--- 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="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> /// <param name="pOverlayViewC"> 削除するオーバーレイデータ </param> /// <param name="pCommonDM"> 値参照用の共通データモデル </param> /// <param name="pOverlayManageDM"> 削除データのコレクションを持つオーバーレイ管理モデル </param> public void DeleteOverlay(OverlayViewComponent pOverlayViewC, CommonDataModel pCommonDM, OverlayManageDataModel pOverlayManageDM) { if (pCommonDM == null || pCommonDM.ApplicationData == null) { return; } string fileName = pCommonDM.ApplicationData.OverlayDataPartName + String.Format("{0:0000}", pOverlayViewC.OverlayDataModel.OverlayWindowData.ID) + ".xml"; string path = Path.Combine(pCommonDM.ApplicationData.RoamingDirectoryPath, "OverlayData", fileName); pOverlayManageDM.OverlayViewComponentCollection.Remove(pOverlayViewC); pCommonDM.ViewCollection.Remove(pOverlayViewC); WindowsServices.WindowCloseSendMessage(pOverlayViewC.OverlayDataModel.OverlayWindowData.WindowIntPtr); pOverlayViewC.OverlayDataModel.OverlayWindowData.WindowIntPtr = IntPtr.Zero; pOverlayViewC = null; if (File.Exists(path)) { File.Delete(path); } }
/// <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); }
/// <summary> オーバーレイカスタムを表示します。 /// </summary> /// <param name="pOverlayViewComponent"> カスタム対象のオーバーレイコンポーネント </param> public void ShowCustomWindow(CommonDataModel pCommonDM, OverlayViewComponent pOverlayViewComponent) { this.overlayViewOpenProcess.NewOverlayCustomWindowOpen(pCommonDM, pOverlayViewComponent); }
/// <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); }
/*--- 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="pTimelineC"> タイムラインコンポーネント </param> /// <param name="pOverlayViewC"> オーバーレイ表示コンポーネント </param> private void openOverlayControlView(CommonDataModel pCommonDM, TimelineComponent pTimelineC, OverlayViewComponent pOverlayViewC) { OverlayWindow window = new OverlayWindow(); window.Topmost = true; window.ResizeMode = System.Windows.ResizeMode.NoResize; pOverlayViewC.OverlayDataModel.OverlayWindowData.WindowHeight = 30; pOverlayViewC.OverlayDataModel.OverlayWindowData.WindowWidth = 170; 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); } }