/// <summary> /// Creates the ViewModels. /// </summary> /// <param name="localFileFactory">Factory for creating <see cref="Scrobbling.Data.ILocalFile"/>s.</param> /// <param name="directoryOperator">DirectoryOperator for operating with directories.</param> /// <param name="serializer">Serializer for <see cref="User"/>s.</param> /// <param name="gitHubClient">GitHub client to check for updates.</param> /// <param name="processManager">ProcessManager for working with processor functions.</param> private void SetupViewModels(ILocalFileFactory localFileFactory, IDirectoryOperator directoryOperator, ISerializer serializer, IGitHubClient gitHubClient, IProcessManager processManager) { UserViewModel = new UserViewModel(_windowManager, _client.Auth, _fileOperator, directoryOperator, serializer); _generalSettingsVM = new GeneralSettingsViewModel(_windowManager, gitHubClient, processManager); _scrobblerVM = new ScrobblerViewModel(_windowManager, localFileFactory, _fileOperator, _client); _scrobblerVM.StatusUpdated += StatusUpdated; ActivateItem(_scrobblerVM); _extraFunctionsVM = new ExtraFunctionsViewModel(_windowManager, _client.User, _fileOperator); _extraFunctionsVM.StatusUpdated += StatusUpdated; ActivateItem(_extraFunctionsVM); // we do this later to stop a NullReferenceException (we create scrobblers here anyways!) UserViewModel.ActiveUserChanged += UserViewModel_ActiveUserChanged; if (UserViewModel.ActiveUser != null) { CreateScrobblers(); } // should be active ActivateItem(_scrobblerVM); }
/// <summary> /// Constructor. /// </summary> /// <param name="windowManager">WindowManager used to display dialogs.</param> /// <param name="client">Factory for creating <see cref="ILastFMClient"/>s.</param> /// <param name="scrobblerFactory">Factory for creating <see cref="IAuthScrobbler"/>s.</param> /// <param name="localFileFactory">Factory for creating <see cref="Scrobbling.Data.ILocalFile"/>s.</param> /// <param name="fileOperator">FileOperator for interfacing with the hard disk.</param> /// <param name="directoryOperator">DirectoryOperator for operating with directories.</param> /// <param name="serializer">Serializer for <see cref="User"/>s.</param> /// <param name="logger">Logger used to log status messages.</param> /// <param name="gitHubClient">GitHub client to check for updates.</param> /// <param name="processManager">ProcessManager for working with processor functions.</param> public MainViewModel(IExtendedWindowManager windowManager, ILastFMClient client, IScrobblerFactory scrobblerFactory, ILocalFileFactory localFileFactory, IFileOperator fileOperator, IDirectoryOperator directoryOperator, ISerializer serializer, ILogger logger, IGitHubClient gitHubClient, IProcessManager processManager) { _windowManager = windowManager ?? throw new ArgumentNullException(nameof(windowManager)); _client = client ?? throw new ArgumentNullException(nameof(client)); _scrobblerFactory = scrobblerFactory ?? throw new ArgumentNullException(nameof(scrobblerFactory)); _fileOperator = fileOperator ?? throw new ArgumentNullException(nameof(fileOperator)); _logger = logger; SetupViewModels(localFileFactory, directoryOperator, serializer, gitHubClient, processManager); TitleString = "Last.fm Scrubbler WPF Beta " + Assembly.GetExecutingAssembly().GetName().Version; CurrentStatus = "Waiting to scrobble..."; }
/// <summary> /// Constructor. /// </summary> /// <param name="windowManager">WindowManager used to display dialogs.</param> /// <param name="clientFactory">Factory for creating <see cref="ILastFMClient"/>s.</param> /// <param name="scrobblerFactory">Factory for creating <see cref="IAuthScrobbler"/>s.</param> /// <param name="localFileFactory">Factory for creating <see cref="ILocalFile"/>s.</param> /// <param name="fileOperator">FileOperator for interfacing with the hard disk.</param> /// <param name="directoryOperator">DirectoryOperator for operating with directories.</param> /// <param name="userSerializer">Serializer for <see cref="User"/>s.</param> public MainViewModel(IExtendedWindowManager windowManager, ILastFMClientFactory clientFactory, IScrobblerFactory scrobblerFactory, ILocalFileFactory localFileFactory, IFileOperator fileOperator, IDirectoryOperator directoryOperator, ISerializer <User> userSerializer) { _windowManager = windowManager; _lastFMClientFactory = clientFactory; _scrobblerFactory = scrobblerFactory; _fileOperator = fileOperator; TitleString = "Last.fm Scrubbler WPF " + Assembly.GetExecutingAssembly().GetName().Version; _client = _lastFMClientFactory.CreateClient(APIKEY, APISECRET); SetupViewModels(localFileFactory, directoryOperator, userSerializer); CurrentStatus = "Waiting to scrobble..."; }
/// <summary> /// Constructor. /// Deserializes the users. /// </summary> /// <param name="windowManager">WindowManager used to display dialogs.</param> /// <param name="lastAuth">Last.fm authentication object.</param> /// <param name="fileOperator">FileOperator used to write to disk.</param> /// <param name="directoryOperator">DirectoryOperator used to check and create directories.</param> /// <param name="userSerializer">Serializer used to serialize <see cref="User"/>.</param> public UserViewModel(IExtendedWindowManager windowManager, ILastAuth lastAuth, IFileOperator fileOperator, IDirectoryOperator directoryOperator, ISerializer <User> userSerializer) { _windowManager = windowManager; _lastAuth = lastAuth; _fileOperator = fileOperator; _directoryOperator = directoryOperator; _userSerializer = userSerializer; AvailableUsers = new ObservableCollection <User>(); if (!_directoryOperator.Exists(USERSFOLDER)) { _directoryOperator.CreateDirectory(USERSFOLDER); } DeserializeUsers(); }
/// <summary> /// Constructor. /// Deserializes the users. /// </summary> /// <param name="windowManager">WindowManager used to display dialogs.</param> /// <param name="lastAuth">Last.fm authentication object.</param> /// <param name="userApi">Api to get recent scrobbles with.</param> /// <param name="fileOperator">FileOperator used to write to disk.</param> /// <param name="directoryOperator">DirectoryOperator used to check and create directories.</param> /// <param name="userSerializer">Serializer used to serialize <see cref="User"/>.</param> public UserViewModel(IExtendedWindowManager windowManager, ILastAuth lastAuth, IUserApi userApi, IFileOperator fileOperator, IDirectoryOperator directoryOperator, ISerializer userSerializer) { _windowManager = windowManager; _lastAuth = lastAuth; _userApi = userApi ?? throw new ArgumentNullException(nameof(userApi)); _fileOperator = fileOperator; _directoryOperator = directoryOperator; _userSerializer = userSerializer; AvailableUsers = new ObservableCollection <User>(); if (!_directoryOperator.Exists(USERSFOLDER)) { _directoryOperator.CreateDirectory(USERSFOLDER); } DeserializeUsers(); LoadLastUser(); }
/// <summary> /// Creates the ViewModels. /// </summary> /// <param name="localFileFactory">Factory for creating <see cref="ILocalFile"/>s.</param> /// <param name="directoryOperator">DirectoryOperator for operating with directories.</param> /// <param name="userSerializer">Serializer for <see cref="User"/>s.</param> private void SetupViewModels(ILocalFileFactory localFileFactory, IDirectoryOperator directoryOperator, ISerializer <User> userSerializer) { _scrobblerVM = new ScrobblerViewModel(_windowManager, localFileFactory, _fileOperator, _client); _scrobblerVM.StatusUpdated += StatusUpdated; CreateScrobblers(); ActivateItem(_scrobblerVM); _extraFunctionsVM = new ExtraFunctionsViewModel(_windowManager, _client.User, _fileOperator); _extraFunctionsVM.StatusUpdated += StatusUpdated; ActivateItem(_extraFunctionsVM); // should be active ActivateItem(_scrobblerVM); UserViewModel = new UserViewModel(_windowManager, _client.Auth, _fileOperator, directoryOperator, userSerializer); UserViewModel.ActiveUserChanged += UserViewModel_ActiveUserChanged; UserViewModel.LoadLastUser(); }
/// <summary> /// Creates the ViewModels. /// </summary> /// <param name="localFileFactory">Factory for creating <see cref="ILocalFile"/>s.</param> /// <param name="directoryOperator">DirectoryOperator for operating with directories.</param> /// <param name="userSerializer">Serializer for <see cref="User"/>s.</param> private void SetupViewModels(ILocalFileFactory localFileFactory, IDirectoryOperator directoryOperator, ISerializer <User> userSerializer) { UserViewModel = new UserViewModel(_windowManager, _client.Auth, _fileOperator, directoryOperator, userSerializer); UserViewModel.LoadLastUser(); _scrobblerVM = new ScrobblerViewModel(_windowManager, localFileFactory, _fileOperator, _client); _scrobblerVM.StatusUpdated += StatusUpdated; ActivateItem(_scrobblerVM); _extraFunctionsVM = new ExtraFunctionsViewModel(_windowManager, _client.User, _fileOperator); _extraFunctionsVM.StatusUpdated += StatusUpdated; ActivateItem(_extraFunctionsVM); // we do this later to stop a NullReferenceException (we create scrobblers here anyways!) UserViewModel.ActiveUserChanged += UserViewModel_ActiveUserChanged; // should be active ActivateItem(_scrobblerVM); }
/// <summary> /// Creates the ViewModels. /// </summary> /// <param name="localFileFactory">Factory for creating <see cref="Scrobbling.Data.ILocalFile"/>s.</param> /// <param name="directoryOperator">DirectoryOperator for operating with directories.</param> /// <param name="serializer">Serializer for <see cref="User"/>s.</param> /// <param name="gitHubClient">GitHub client to check for updates.</param> /// <param name="processManager">ProcessManager for working with processor functions.</param> /// <param name="discogsClient">Client used to interact with Discogs.com</param> /// <param name="fileParserFactory">Factory for creating <see cref="IFileParser"/></param> private TabViewModel[] SetupViewModels(ILocalFileFactory localFileFactory, IDirectoryOperator directoryOperator, ISerializer serializer, IGitHubClient gitHubClient, IProcessManager processManager, IDiscogsDataBaseClient discogsClient, IFileParserFactory fileParserFactory) { UserViewModel = new UserViewModel(_windowManager, _client.Auth, _client.User, _fileOperator, directoryOperator, serializer); _generalSettingsVM = new GeneralSettingsViewModel(_windowManager, gitHubClient, processManager); _scrobblerVM = new ScrobblerViewModel(_windowManager, localFileFactory, _fileOperator, _client, discogsClient, fileParserFactory); _scrobblerVM.StatusUpdated += MainStatusUpdated; _extraFunctionsVM = new ExtraFunctionsViewModel(_windowManager, _client.User, _fileOperator); _extraFunctionsVM.StatusUpdated += MainStatusUpdated; // we do this later to stop a NullReferenceException (we create scrobblers here anyways!) UserViewModel.ActiveUserChanged += UserViewModel_ActiveUserChanged; if (UserViewModel.ActiveUser != null) { CreateScrobblers(); } return(new TabViewModel[] { _scrobblerVM, _extraFunctionsVM }); }