public Shelf(ISettings settings, CollectionManagerDbContext database) { this._settings = settings; this._database = database; var cols = new ReactiveCollection <Col>(); cols.AddRange(new[] { new Col(AvailableColumns.Title), new Col(AvailableColumns.Max), new Col(AvailableColumns.NextReleaseDate) }); this.Columns = cols.ToReadOnlyReactiveCollection(); this.FilterWord.Subscribe(_ => this.RefreshList()); }
protected override void RegisterTypes(IContainerRegistry containerRegistry) { this._settings = new Settings("./settings.conf"); this._settings.Load(); containerRegistry.RegisterInstance(this._settings); // DataBase var sb = new SqliteConnectionStringBuilder { DataSource = "./database.db" }; var dbContext = new CollectionManagerDbContext(new SqliteConnection(sb.ConnectionString)); dbContext.Database.EnsureCreated(); containerRegistry.RegisterInstance(dbContext); containerRegistry.RegisterDialog <SettingsWindow, SettingsWindowViewModel>(); }
public ItemSet(string directoryPath, CollectionManagerDbContext database, ISettings settings) { this.DirectoryPath = directoryPath; this._database = database; this._settings = settings; this.ItemList.CollectionChangedAsObservable().Subscribe(_ => this.CalculateMinMax()).AddTo(this.CompositeDisposable); this.Min.ToUnit() .Merge(this.Max.ToUnit()) .Merge(this.OrdinalRegex.ToUnit()) .Merge(this.Note.ToUnit()) .Merge(this.Title.ToUnit()) .Merge(this.Authors.ToUnit()) .Merge(this.Completed.ToUnit()) .Merge(this.NextReleaseDate.ToUnit()) .Merge(this.TitleYomi.ToUnit()) .Where(_ => this._itemSetId != default) .Throttle(TimeSpan.FromSeconds(1)) .Subscribe(_ => this.Update()) .AddTo(this.CompositeDisposable); this.OrdinalRegex.SetValidateNotifyError(x => { try { _ = new Regex(x); return(null); } catch { return("正規表現検証エラー"); } }); this.OrdinalRegex.Where(x => !this.OrdinalRegex.HasErrors && this._fileLoadedFlag).Subscribe(x => { var regex = new Regex(this.OrdinalRegex.Value); foreach (var item in this.ItemList) { var match = regex.Match(Path.GetFileName(item.FilePath.Value)); if (match.Success) { item.Ordinal.Value = new Ordinal { Number = int.Parse(match.Groups["number"].Value) }; } } this.CalculateMinMax(); }); }