Esempio n. 1
0
        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());
        }
Esempio n. 2
0
        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>();
        }
Esempio n. 3
0
        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();
            });
        }