/// <summary>コンストラクタ。</summary> /// <param name="regMan">Prismのリージョンマネージャを表すIRegionManager。</param> public MainWindowViewModel(IRegionManager regMan, IImaZipCoreProto01Settings imaZipSettings) : base(regMan) { this.appSettings = imaZipSettings; this.Title = new ReactivePropertySlim <string>(this.getApplicationTitle()) .AddTo(this.disposable); this.MenuSelectButtonEnabled = new ReactivePropertySlim <bool>(true) .AddTo(this.disposable); this.LoadSettingViews = this.MenuSelectButtonEnabled .ToReactiveCommand <string>() .WithSubscribe(p => this.onLoadSettingViews(p)) .AddTo(this.disposable); }
/// <summary> /// zipファイルの作成を開始します。 /// </summary> /// <param name="settings">zipファイル設定を表すZipFileSettings。</param> /// <param name="appSettings">アプリの設定を表すIImaZipCoreProto01Settings。</param> /// <returns>zipファイルの作成開始Task。</returns> public Task StartCreateZipAsync(ZipFileSettings settings, IImaZipCoreProto01Settings appSettings) { var zipId = this.saveZipSettings(settings); if (!zipId.HasValue) { return(Task.CompletedTask); } // ZipBookCreator起動 Process.Start(new ProcessStartInfo() { UseShellExecute = true, FileName = Path.Combine(AssemblyUtility.GetExecutingPath(), appSettings.CreatorExeFileName), Arguments = zipId.Value.ToString() }); return(Task.CompletedTask); }
/// <summary>コンストラクタ。</summary> /// <param name="comDlgService">コモンダイアログサービスを表すICommonDialogService。</param> /// <param name="imaZipSettings">アプリケーション設定を表すIImaZipCoreProto01Settings。</param> public ZipFileListPanelViewModel(ICommonDialogService comDlgService, IImaZipCoreProto01Settings imaZipSettings, IDialogService dlgService) { this.commonDialogService = comDlgService; this.appSettings = imaZipSettings; this.dialogService = dlgService; this.ImageSources = this.zipSettings.ImageSources .ToReadOnlyReactiveCollection(i => new ImageSourceViewModel(i)) .AddTo(this.disposable); this.ImageFilesExtractedFolderPath = this.zipSettings.ImageFilesExtractedFolder .AddTo(this.disposable); this.deleteEnabled = new ReactivePropertySlim <bool>(false) .AddTo(this.disposable); this.moveUpEnabled = new ReactivePropertySlim <bool>(false) .AddTo(this.disposable); this.moveDownEnabled = new ReactivePropertySlim <bool>(false) .AddTo(this.disposable); this.SelectionChanged = new ReactiveCommand <SelectionChangedEventArgs>() .WithSubscribe(e => this.onSelectionChanged(e)) .AddTo(this.disposable); this.AddImageSource = new ReactiveCommand <string>() .WithSubscribe(p => this.onAddImageSource(p)) .AddTo(this.disposable); this.DeleteSource = this.deleteEnabled .ToReactiveCommand() .WithSubscribe(() => this.onDeleteSource()) .AddTo(this.disposable); this.MoveUp = this.moveUpEnabled .ToReactiveCommand() .WithSubscribe(() => this.onMoveUp()) .AddTo(this.disposable); this.MoveDown = this.moveDownEnabled .ToReactiveCommand() .WithSubscribe(() => this.onMoveDown()) .AddTo(this.disposable); this.SelectExtractFolder = new ReactiveCommand() .WithSubscribe(() => this.onSelectExtractFolder()) .AddTo(this.disposable); this.CreateZip = this.zipSettings.IsComplete .ToAsyncReactiveCommand() .WithSubscribe(() => this.onCreateZip()) .AddTo(this.disposable); var folderSequences = new ObservableCollection <int>(Enumerable.Range(1, 4)); this.FolderNameSequenceDigits = folderSequences .ToReadOnlyReactiveCollection(i => i) .AddTo(this.disposable); this.FolderNameSequenceDigit = this.zipSettings.FolderNameSequenceDigit .ToReactiveProperty() .AddTo(this.disposable); this.FolderNameTemplate = this.zipSettings.FolderNameTemplate .ToReactiveProperty() .AddTo(this.disposable); this.FileNameTemplate = this.zipSettings.FileNameTemplate .ToReactiveProperty() .AddTo(this.disposable); }