Ejemplo n.º 1
0
        public SettingsViewModel(IScreen screen, AppSettingsService?settingsService = null) : base(screen, "settings")
        {
            this.settingsService = settingsService ?? Locator.Current.GetService <AppSettingsService>();

            SavedSettings = this.settingsService.GetSettings();

            SelectDirectory = ReactiveCommand.CreateFromObservable(() => GetDirectory.Handle(SoulstormDirectory));

            SelectDirectory.Where(dir => dir != null)
            .ToPropertyEx(this, x => x.SoulstormDirectory, initialValue: SavedSettings.InstallLocation);

            IObservable <bool> canSave = this.WhenAnyValue(x => x.SoulstormDirectory, x => x.SavedSettings,
                                                           (dir, settings) => !string.Equals(settings.InstallLocation, dir, StringComparison.OrdinalIgnoreCase))
                                         .DistinctUntilChanged();

            SaveSettings = ReactiveCommand.Create(() =>
            {
                SavedSettings = new AppSettings()
                {
                    InstallLocation = SoulstormDirectory
                };
                this.settingsService.SaveSettings(SavedSettings);
            }, canSave);
        }