forked from sim0n00ps/OF-DL
76 lines
2.7 KiB
C#
76 lines
2.7 KiB
C#
using System.Collections.ObjectModel;
|
|
using OF_DL.Models.Config;
|
|
|
|
namespace OF_DL.Gui.ViewModels;
|
|
|
|
public sealed class ConfigCategoryViewModel : ViewModelBase
|
|
{
|
|
public ConfigCategoryViewModel(string categoryName, IEnumerable<ConfigFieldViewModel> fields)
|
|
{
|
|
CategoryName = categoryName;
|
|
List<ConfigFieldViewModel> fieldList = fields.ToList();
|
|
|
|
DownloadOnlySpecificDatesField = fieldList.FirstOrDefault(field =>
|
|
string.Equals(field.PropertyName, nameof(Config.DownloadOnlySpecificDates), StringComparison.Ordinal));
|
|
DownloadDateSelectionField = fieldList.FirstOrDefault(field =>
|
|
string.Equals(field.PropertyName, nameof(Config.DownloadDateSelection), StringComparison.Ordinal));
|
|
CustomDateField = fieldList.FirstOrDefault(field =>
|
|
string.Equals(field.PropertyName, nameof(Config.CustomDate), StringComparison.Ordinal));
|
|
|
|
IEnumerable<ConfigFieldViewModel> visibleFields = IsDownloadBehavior
|
|
? fieldList.Where(field => field.PropertyName is not nameof(Config.DownloadOnlySpecificDates)
|
|
and not nameof(Config.DownloadDateSelection)
|
|
and not nameof(Config.CustomDate))
|
|
: fieldList;
|
|
|
|
foreach (ConfigFieldViewModel field in visibleFields)
|
|
{
|
|
Fields.Add(field);
|
|
}
|
|
}
|
|
|
|
public string CategoryName { get; }
|
|
|
|
public bool IsDownloadBehavior =>
|
|
string.Equals(CategoryName, "Download Behavior", StringComparison.Ordinal);
|
|
|
|
public ConfigFieldViewModel? DownloadOnlySpecificDatesField { get; }
|
|
|
|
public ConfigFieldViewModel? DownloadDateSelectionField { get; }
|
|
|
|
public ConfigFieldViewModel? CustomDateField { get; }
|
|
|
|
public bool HasSpecificDateFilterFields =>
|
|
DownloadOnlySpecificDatesField != null &&
|
|
DownloadDateSelectionField != null &&
|
|
CustomDateField != null;
|
|
|
|
public string SpecificDateFilterHelpText
|
|
{
|
|
get
|
|
{
|
|
List<string> parts = [];
|
|
if (!string.IsNullOrWhiteSpace(DownloadOnlySpecificDatesField?.HelpText))
|
|
{
|
|
parts.Add(DownloadOnlySpecificDatesField.HelpText);
|
|
}
|
|
|
|
if (!string.IsNullOrWhiteSpace(DownloadDateSelectionField?.HelpText))
|
|
{
|
|
parts.Add(DownloadDateSelectionField.HelpText);
|
|
}
|
|
|
|
if (!string.IsNullOrWhiteSpace(CustomDateField?.HelpText))
|
|
{
|
|
parts.Add(CustomDateField.HelpText);
|
|
}
|
|
|
|
return string.Join(" ", parts.Distinct(StringComparer.Ordinal));
|
|
}
|
|
}
|
|
|
|
public bool HasSpecificDateFilterHelpText => !string.IsNullOrWhiteSpace(SpecificDateFilterHelpText);
|
|
|
|
public ObservableCollection<ConfigFieldViewModel> Fields { get; } = [];
|
|
}
|