Updated UI/App Settings
Changed interval check from a Numeric spin box, to a pre-defined option selector. Now have 1/2 minute, 1 Minute, 30 Minutes, 1 hour, 6 hours, 12 hours and 24 hour intervals.
This commit is contained in:
parent
7dbb71d921
commit
4f93a21098
3 changed files with 35 additions and 2 deletions
|
|
@ -125,6 +125,7 @@ public partial class App : Application
|
|||
_settings.SyncSearchHistory = @new.SyncSearchHistory;
|
||||
_settings.SyncSettings = @new.SyncSettings;
|
||||
_settings.SettingsDirty = false;
|
||||
_settings.UpdateInterval();
|
||||
}
|
||||
|
||||
public void SaveSettings()
|
||||
|
|
@ -146,11 +147,13 @@ public partial class App : Application
|
|||
if (!File.Exists(path))
|
||||
{
|
||||
_settings = new AppSettings();
|
||||
_settings.UpdateInterval();
|
||||
return;
|
||||
}
|
||||
|
||||
var data = File.ReadAllText(path);
|
||||
_settings = JsonSerializer.Deserialize<AppSettings>(data);
|
||||
_settings!.UpdateInterval();
|
||||
}
|
||||
|
||||
private string GetAppFolder() => Path.Join(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "FreeTubeSyncer");
|
||||
|
|
|
|||
|
|
@ -24,7 +24,13 @@
|
|||
<TextBlock Grid.Row="0" Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Right" Text="REST API Backend Server: " FontWeight="Bold"/>
|
||||
<TextBox Grid.Row="0" Grid.Column="1" Watermark="http://localhost:8080" Text="{Binding RestBaseUrl, Mode=TwoWay}"/>
|
||||
<TextBlock Grid.Row="1" Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Right" Text="Refresh Interval: " FontWeight="Bold"/>
|
||||
<NumericUpDown Grid.Row="1" Grid.Column="1" Watermark="30" suki:NumericUpDownExtensions.Unit="seconds" FormatString="N0" Value="{Binding CheckInterval, Mode=TwoWay}"/>
|
||||
<ComboBox Grid.Row="1" Grid.Column="1" SelectedValue="{Binding SelectedOption}" ItemsSource="{Binding CheckIntervalOptions}">
|
||||
<ComboBox.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock Text="{Binding Label}"/>
|
||||
</DataTemplate>
|
||||
</ComboBox.ItemTemplate>
|
||||
</ComboBox>
|
||||
</Grid>
|
||||
<Grid
|
||||
ColumnDefinitions="170,*"
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Text.Json.Serialization;
|
||||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
using DynamicData;
|
||||
|
||||
namespace FreeTubeSyncer.Models;
|
||||
|
||||
|
|
@ -13,6 +15,16 @@ public partial class AppSettings : ObservableObject
|
|||
[ObservableProperty] [property: JsonInclude] private bool _syncSearchHistory = true;
|
||||
[ObservableProperty] [property: JsonInclude] private bool _syncSettings = true;
|
||||
[ObservableProperty] [property: JsonIgnore] private bool _settingsDirty = false;
|
||||
[ObservableProperty] [property: JsonIgnore] private CheckIntervalOption? _selectedOption = null;
|
||||
[ObservableProperty] [property: JsonIgnore] private List<CheckIntervalOption> _checkIntervalOptions = [
|
||||
new CheckIntervalOption("1/2 Minute", 30),
|
||||
new CheckIntervalOption("1 Minute", 60),
|
||||
new CheckIntervalOption("30 Minutes", 1800),
|
||||
new CheckIntervalOption("1 Hour", 3600),
|
||||
new CheckIntervalOption("6 Hours", 21600),
|
||||
new CheckIntervalOption("12 Hours", 43200),
|
||||
new CheckIntervalOption("24 Hours", 86400),
|
||||
];
|
||||
|
||||
public AppSettings()
|
||||
{
|
||||
|
|
@ -21,7 +33,19 @@ public partial class AppSettings : ObservableObject
|
|||
if (args.PropertyName == nameof(SettingsDirty))
|
||||
return;
|
||||
|
||||
if (args.PropertyName == nameof(SelectedOption))
|
||||
_checkInterval = SelectedOption?.Interval ?? 30;
|
||||
|
||||
SettingsDirty = true;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public void UpdateInterval()
|
||||
{
|
||||
int[] intervals = [30, 60, 1800, 3600, 21600, 43200, 86400];
|
||||
var i = intervals.IndexOf(CheckInterval);
|
||||
SelectedOption = CheckIntervalOptions[i];
|
||||
}
|
||||
}
|
||||
|
||||
public record CheckIntervalOption(string Label, int Interval);
|
||||
Loading…
Add table
Add a link
Reference in a new issue