using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using MPF.Core.Data; using MPF.Core.UI.ComboBoxItems; using SabreTools.RedumpLib.Web; namespace MPF.Core.UI.ViewModels { public class OptionsViewModel { #region Fields /// /// Current set of options /// public Options Options { get; } /// /// Flag for if settings were saved or not /// public bool SavedSettings { get; set; } #endregion #region Lists /// /// List of available internal programs /// public List> InternalPrograms => PopulateInternalPrograms(); /// /// Current list of supported system profiles /// public List Systems => RedumpSystemComboBoxItem.GenerateElements().ToList(); #endregion /// /// Constructor /// public OptionsViewModel(Options baseOptions) { Options = new Options(baseOptions); } #region Population /// /// Get a complete list of supported internal programs /// private static List> PopulateInternalPrograms() { var internalPrograms = new List { InternalProgram.DiscImageCreator, InternalProgram.Aaru, InternalProgram.Redumper }; return internalPrograms.Select(ip => new Element(ip)).ToList(); } #endregion #region UI Commands /// /// Test Redump login credentials /// #if NET48 public (bool?, string) TestRedumpLogin(string username, string password) #else public async Task<(bool?, string?)> TestRedumpLogin(string username, string password) #endif { #if NET48 return RedumpWebClient.ValidateCredentials(username, password); #else return await RedumpHttpClient.ValidateCredentials(username, password); #endif } #endregion } }