/// <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();
        }
Пример #5
0
        /// <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();
        }
Пример #6
0
        /// <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 });
        }