示例#1
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="windowManager">WindowManager used to display dialogs.</param>
 public CacheScrobblerViewModel(IExtendedWindowManager windowManager)
     : base(windowManager, "Cache Scrobbler")
 {
     Scrobbles = new ObservableCollection <Scrobble>();
     GetCachedScrobblesCommand = new DelegateCommand((o) => GetCachedScrobbles().Forget());
     StartupHandling();
 }
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="windowManager">WindowManager used to display dialogs.</param>
 /// <param name="localFileFactory">Factory used to create <see cref="ILocalFile"/>s.</param>
 /// <param name="fileOperator">FileOperator used to write to disk.</param>
 public FileScrobbleViewModel(IExtendedWindowManager windowManager, ILocalFileFactory localFileFactory, IFileOperator fileOperator)
     : base(windowManager, "File Scrobbler")
 {
     Scrobbles         = new ObservableCollection <LoadedFileViewModel>();
     _localFileFactory = localFileFactory;
     _fileOperator     = fileOperator;
 }
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="windowManager">WindowManager used to display dialogs.</param>
 /// <param name="userAPI">Last.fm user api used to fetch top artists and albums.</param>
 /// <param name="fileOperator">FileOperator used to write to disk.</param>
 public CSVDownloaderViewModel(IExtendedWindowManager windowManager, IUserApi userAPI, IFileOperator fileOperator)
     : base("CSV Downloader")
 {
     _windowManager = windowManager;
     _userAPI       = userAPI;
     _fileOperator  = fileOperator;
 }
示例#4
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="windowManager">WindowManager used to display dialogs.</param>
 public CSVDownloaderViewModel(IExtendedWindowManager windowManager)
     : base("CSV Downloader")
 {
     _windowManager = windowManager;
     Username       = string.Empty;
     FilePath       = string.Empty;
 }
示例#5
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="windowManager">WindowManager used to display dialogs.</param>
 /// <param name="displayName">Display name.</param>
 public ScrobbleTimeViewModelBase(IExtendedWindowManager windowManager, string displayName)
     : base(windowManager, displayName)
 {
     _currentTimeTimer          = new Timer(1000);
     _currentTimeTimer.Elapsed += _currentTimeTimer_Elapsed;
     UseCurrentTime             = true;
 }
示例#6
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="windowManager">WindowManager used to display dialogs.</param>
 /// <param name="userApi">The last.fm api object to get the scrobbles of an user.</param>
 public FriendScrobbleViewModel(IExtendedWindowManager windowManager, IUserApi userApi)
     : base(windowManager, "Friend Scrobbler")
 {
     _userApi  = userApi;
     Scrobbles = new ObservableCollection <FetchedFriendTrackViewModel>();
     Amount    = 20;
 }
示例#7
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="windowManager">WindowManager used to display dialogs.</param>
 /// <param name="displayName">Display name.</param>
 protected ScrobbleViewModelBase(IExtendedWindowManager windowManager, string displayName)
     : base(displayName)
 {
     WindowManager   = windowManager ?? throw new ArgumentNullException(nameof(windowManager));
     ScrobbleCommand = new DelegateCommand((o) => Scrobble().Forget());
     PreviewCommand  = new DelegateCommand((o) => Preview());
 }
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="windowManager">WindowManager used to display dialogs.</param>
 /// <param name="displayName">Display name.</param>
 /// <param name="trackAPI">Last.fm API object for getting track information.</param>
 /// <param name="albumAPI">Last.fm API object for getting album information.</param>
 /// <param name="lastAuth">Last.fm authentication object.</param>
 public MediaPlayerScrobbleViewModelBase(IExtendedWindowManager windowManager, string displayName, ITrackApi trackAPI, IAlbumApi albumAPI, ILastAuth lastAuth)
     : base(windowManager, displayName)
 {
     _trackAPI = trackAPI;
     _albumAPI = albumAPI;
     _lastAuth = lastAuth;
 }
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="windowManager">WindowManager used to display dialogs.</param>
 /// <param name="parserFactory">The factory used to create <see cref="ITextFieldParser"/>.</param>
 public CSVScrobbleViewModel(IExtendedWindowManager windowManager, ITextFieldParserFactory parserFactory)
     : base(windowManager, "CSV Scrobbler")
 {
     _parserFactory = parserFactory;
     Scrobbles      = new ObservableCollection <ParsedCSVScrobbleViewModel>();
     Duration       = 1;
     ScrobbleMode   = CSVScrobbleMode.ImportMode;
 }
示例#10
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="windowManager">WindowManager used to display dialogs.</param>
 /// <param name="userApi">The last.fm api object to get the scrobbles of an user.</param>
 public FriendScrobbleViewModel(IExtendedWindowManager windowManager, IUserApi userApi)
     : base(windowManager, "Friend Scrobbler")
 {
     _userApi     = userApi;
     Scrobbles    = new ObservableCollection <FetchedFriendTrackViewModel>();
     Amount       = 20;
     FetchCommand = new DelegateCommand((o) => FetchScrobbles().Forget());
 }
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="windowManager">WindowManager used to display dialogs.</param>
 /// <param name="localFileFactory">Factory used to create <see cref="ILocalFile"/>s.</param>
 /// <param name="fileOperator">FileOperator used to write to disk.</param>
 public FileScrobbleViewModel(IExtendedWindowManager windowManager, ILocalFileFactory localFileFactory, IFileOperator fileOperator)
     : base(windowManager, "File Scrobbler")
 {
     Scrobbles         = new ObservableCollection <LoadedFileViewModel>();
     _localFileFactory = localFileFactory ?? throw new ArgumentNullException(nameof(localFileFactory));
     _fileOperator     = fileOperator ?? throw new ArgumentNullException(nameof(fileOperator));
     AddFilesCommand   = new DelegateCommand((o) => AddFiles().Forget());
 }
示例#12
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="windowManager">WindowManager used to display dialogs.</param>
 /// <param name="userAPI">Last.fm user api used to fetch top artists and albums.</param>
 /// <param name="fileOperator">FileOperator used to write to disk.</param>
 public CSVDownloaderViewModel(IExtendedWindowManager windowManager, IUserApi userAPI, IFileOperator fileOperator)
     : base("CSV Downloader")
 {
     _windowManager  = windowManager ?? throw new ArgumentNullException(nameof(windowManager));
     _userAPI        = userAPI ?? throw new ArgumentNullException(nameof(userAPI));
     _fileOperator   = fileOperator ?? throw new ArgumentNullException(nameof(fileOperator));
     DownloadCommand = new DelegateCommand((o) => Download().Forget());
 }
示例#13
0
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="windowManager">WindowManager used to display dialogs.</param>
        /// <param name="trackAPI">Last.fm API object for getting track information.</param>
        /// <param name="albumAPI">Last.fm API object for getting album information.</param>
        /// <param name="lastAuth">Last.fm authentication object.</param>
        public ITunesScrobbleViewModel(IExtendedWindowManager windowManager, ITrackApi trackAPI, IAlbumApi albumAPI, ILastAuth lastAuth)
            : base(windowManager, "ITunes Scrobbler", trackAPI, albumAPI, lastAuth)
        {
            PercentageToScrobble = 0.5;

            if (AutoConnect)
            {
                Connect();
            }
        }
示例#14
0
 /// <summary>
 /// Constructor.
 /// </summary>
 public MainViewModel(IExtendedWindowManager windowManager, ILastFMClientFactory clientFactory, IScrobblerFactory scrobblerFactory, ILocalFileFactory localFileFactory)
 {
     _windowManager       = windowManager;
     _lastFMClientFactory = clientFactory;
     _scrobblerFactory    = scrobblerFactory;
     TitleString          = "Last.fm Scrubbler WPF " + Assembly.GetExecutingAssembly().GetName().Version;
     CreateNewClient();
     SetupViewModels(localFileFactory);
     CurrentStatus = "Waiting to scrobble...";
 }
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="windowManager">WindowManager used to display dialogs.</param>
        public ITunesScrobbleViewModel(IExtendedWindowManager windowManager)
            : base(windowManager, "ITunes Scrobbler")
        {
            PercentageToScrobble = 0.5;

            if (AutoConnect)
            {
                Connect();
            }
        }
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="windowManager">WindowManager used to display dialogs.</param>
 /// <param name="userAPI">Last.fm user api used to fetch top artists and albums.</param>
 public CollageCreatorViewModel(IExtendedWindowManager windowManager, IUserApi userAPI)
     : base("Collage Creator")
 {
     _windowManager      = windowManager;
     _userAPI            = userAPI;
     TimeSpan            = LastStatsTimeSpan.Overall;
     SelectedCollageSize = CollageSize.ThreeByThree;
     CustomCollageSize   = 10;
     ShowNames           = true;
     ShowPlaycounts      = true;
     UploadToWeb         = true;
 }
 /// <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...";
 }
示例#18
0
        /// <summary>
        /// Constructor.
        /// </summary>
        public GeneralSettingsViewModel(IExtendedWindowManager windowManager)
        {
            _windowManager     = windowManager;
            MinimizeToTray     = Settings.Default.MinimizeToTray;
            StartMinimized     = Settings.Default.StartMinimized;
            StartupUpdateCheck = Settings.Default.StartupUpdateCheck;

            if (Settings.Default.StartupUpdateCheck)
            {
                CheckForUpdates(false).Forget();
            }
        }
 /// <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...";
 }
示例#20
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="windowManager">WindowManager used to display dialogs.</param>
 /// <param name="userAPI">Last.fm user api used to fetch top artists and albums.</param>
 public CollageCreatorViewModel(IExtendedWindowManager windowManager, IUserApi userAPI)
     : base("Collage Creator")
 {
     _windowManager       = windowManager ?? throw new ArgumentNullException(nameof(windowManager));
     _userAPI             = userAPI ?? throw new ArgumentNullException(nameof(userAPI));
     TimeSpan             = LastStatsTimeSpan.Overall;
     SelectedCollageSize  = CollageSize.ThreeByThree;
     CustomCollageSize    = 10;
     ShowNames            = true;
     ShowPlaycounts       = true;
     UploadToWeb          = true;
     CreateCollageCommand = new DelegateCommand((o) => CreateCollage().Forget());
 }
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="windowManager">WindowManager used to display dialogs.</param>
        /// <param name="trackAPI">Last.fm API object for getting track information.</param>
        /// <param name="albumAPI">Last.fm API object for getting album information.</param>
        /// <param name="artistAPI">Last.fm API object for getting artist information.</param>
        public SpotifyScrobbleViewModel(IExtendedWindowManager windowManager, ITrackApi trackAPI, IAlbumApi albumAPI, IArtistApi artistAPI)
            : base(windowManager, "Spotify Scrobbler", trackAPI, albumAPI, artistAPI)
        {
            PercentageToScrobble   = 0.5;
            _counterTimer          = new Timer(1000);
            _counterTimer.Elapsed += CounterTimer_Elapsed;
            _refreshTimer          = new Timer(1000);
            _refreshTimer.Elapsed += RefreshTimer_Elapsed;

            if (AutoConnect)
            {
                Connect();
            }
        }
示例#22
0
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="windowManager">WindowManager used to display dialogs.</param>
        /// <param name="gitHubClient">GitHub client to check for updates.</param>
        /// <param name="processManager">ProcessManager for working with processor functions.</param>
        public GeneralSettingsViewModel(IExtendedWindowManager windowManager, IGitHubClient gitHubClient, IProcessManager processManager)
        {
            _windowManager     = windowManager ?? throw new ArgumentNullException(nameof(windowManager));
            _gitHubClient      = gitHubClient ?? throw new ArgumentNullException(nameof(windowManager));
            _processManager    = processManager ?? throw new ArgumentNullException(nameof(windowManager));
            MinimizeToTray     = Settings.Default.MinimizeToTray;
            StartMinimized     = Settings.Default.StartMinimized;
            StartupUpdateCheck = Settings.Default.StartupUpdateCheck;

            if (Settings.Default.StartupUpdateCheck)
            {
                CheckForUpdates(false).Forget();
            }
        }
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="windowManager">WindowManager used to display dialogs.</param>
        public SpotifyScrobbleViewModel(IExtendedWindowManager windowManager)
            : base(windowManager, "Spotify Scrobbler")
        {
            PercentageToScrobble   = 0.5;
            _spotify               = new SpotifyLocalAPI();
            _counterTimer          = new Timer(1000);
            _counterTimer.Elapsed += _counterTimer_Elapsed;
            _refreshTimer          = new Timer(1000);
            _refreshTimer.Elapsed += _refreshTimer_Elapsed;

            if (AutoConnect)
            {
                Connect();
            }
        }
示例#24
0
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="windowManager">WindowManager used to display dialogs.</param>
        /// <param name="trackAPI">Last.fm API object for getting track information.</param>
        /// <param name="albumAPI">Last.fm API object for getting album information.</param>
        /// <param name="lastAuth">Last.fm authentication object.</param>
        public SpotifyScrobbleViewModel(IExtendedWindowManager windowManager, ITrackApi trackAPI, IAlbumApi albumAPI, ILastAuth lastAuth)
            : base(windowManager, "Spotify Scrobbler", trackAPI, albumAPI, lastAuth)
        {
            PercentageToScrobble   = 0.5;
            _spotify               = new SpotifyLocalAPI();
            _counterTimer          = new Timer(1000);
            _counterTimer.Elapsed += _counterTimer_Elapsed;
            _refreshTimer          = new Timer(1000);
            _refreshTimer.Elapsed += _refreshTimer_Elapsed;

            if (AutoConnect)
            {
                Connect();
            }
        }
        /// <summary>
        /// Creates the ViewModels.
        /// </summary>
        /// <param name="windowManager">WindowManager used to display dialogs.</param>
        /// <param name="localFileFactory">Factory used to create <see cref="Data.ILocalFile"/>s.</param>
        /// <param name="fileOperator">FileOperator used to interface with files.</param>
        /// <param name="lastFMClient">Last.fm client.</param>
        /// <param name="discogsClient">Client used to interact with Discogs.com</param>
        /// <param name="fileParserFactory">Factory for creating <see cref="IFileParser"/></param>
        private void CreateViewModels(IExtendedWindowManager windowManager, ILocalFileFactory localFileFactory, IFileOperator fileOperator, ILastFMClient lastFMClient,
                                      IDiscogsDataBaseClient discogsClient, IFileParserFactory fileParserFactory)
        {
            var manualScrobbleViewModel = new ManualScrobbleViewModel(windowManager);

            manualScrobbleViewModel.StatusUpdated += Scrobbler_StatusUpdated;
            var friendScrobbleViewModel = new FriendScrobbleViewModel(windowManager, lastFMClient.User);

            friendScrobbleViewModel.StatusUpdated += Scrobbler_StatusUpdated;
            var databaseScrobbleViewModel = new DatabaseScrobbleViewModel(windowManager, lastFMClient.Artist, lastFMClient.Album, discogsClient);

            databaseScrobbleViewModel.StatusUpdated += Scrobbler_StatusUpdated;
            var csvScrobbleViewModel = new FileParseScrobbleViewModel(windowManager, fileParserFactory, fileOperator);

            csvScrobbleViewModel.StatusUpdated += Scrobbler_StatusUpdated;
            var fileScrobbleViewModel = new FileScrobbleViewModel(windowManager, localFileFactory, fileOperator);

            fileScrobbleViewModel.StatusUpdated += Scrobbler_StatusUpdated;
            var mediaPlayerDatabaseScrobbleViewModel = new MediaPlayerDatabaseScrobbleViewModel(windowManager);

            mediaPlayerDatabaseScrobbleViewModel.StatusUpdated += Scrobbler_StatusUpdated;
            var iTunesScrobbleVM = new ITunesScrobbleViewModel(windowManager, lastFMClient.Track, lastFMClient.Album, lastFMClient.Artist);

            iTunesScrobbleVM.StatusUpdated += Scrobbler_StatusUpdated;
            // todo: put back in once local api is working again
            //var spotifyScrobbleVM = new SpotifyScrobbleViewModel(windowManager, lastFMClient.Track, lastFMClient.Album, lastFMClient.Auth);
            //spotifyScrobbleVM.StatusUpdated += Scrobbler_StatusUpdated;
            var setlistFMScrobbleVM = new SetlistFMScrobbleViewModel(windowManager, lastFMClient.Artist);

            setlistFMScrobbleVM.StatusUpdated += Scrobbler_StatusUpdated;
            var cacheScrobblerVM = new CacheScrobblerViewModel(windowManager);

            cacheScrobblerVM.StatusUpdated += Scrobbler_StatusUpdated;

            ActivateItem(manualScrobbleViewModel);
            ActivateItem(friendScrobbleViewModel);
            ActivateItem(databaseScrobbleViewModel);
            ActivateItem(csvScrobbleViewModel);
            ActivateItem(fileScrobbleViewModel);
            ActivateItem(mediaPlayerDatabaseScrobbleViewModel);
            ActivateItem(iTunesScrobbleVM);
            //ActivateItem(spotifyScrobbleVM);
            ActivateItem(setlistFMScrobbleVM);
            ActivateItem(cacheScrobblerVM);

            // this one should be selected
            ActivateItem(manualScrobbleViewModel);
        }
        /// <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();
        }
示例#27
0
        /// <summary>
        /// Creates the ViewModels.
        /// </summary>
        /// <param name="windowManager">WindowManager used to display dialogs.</param>
        /// <param name="localFileFactory">Factory used to create <see cref="ILocalFile"/>s.</param>
        private void CreateViewModels(IExtendedWindowManager windowManager, ILocalFileFactory localFileFactory)
        {
            var manualScrobbleViewModel = new ManualScrobbleViewModel(windowManager);

            manualScrobbleViewModel.StatusUpdated += Scrobbler_StatusUpdated;
            var friendScrobbleViewModel = new FriendScrobbleViewModel(windowManager, MainViewModel.Client.User);

            friendScrobbleViewModel.StatusUpdated += Scrobbler_StatusUpdated;
            var databaseScrobbleViewModel = new DatabaseScrobbleViewModel(windowManager, MainViewModel.Client.Artist, MainViewModel.Client.Album);

            databaseScrobbleViewModel.StatusUpdated += Scrobbler_StatusUpdated;
            var csvScrobbleViewModel = new CSVScrobbleViewModel(windowManager, new CSVTextFieldParserFactory());

            csvScrobbleViewModel.StatusUpdated += Scrobbler_StatusUpdated;
            var fileScrobbleViewModel = new FileScrobbleViewModel(windowManager, localFileFactory);

            fileScrobbleViewModel.StatusUpdated += Scrobbler_StatusUpdated;
            var mediaPlayerDatabaseScrobbleViewModel = new MediaPlayerDatabaseScrobbleViewModel(windowManager);

            mediaPlayerDatabaseScrobbleViewModel.StatusUpdated += Scrobbler_StatusUpdated;
            var iTunesScrobbleVM = new ITunesScrobbleViewModel(windowManager);

            iTunesScrobbleVM.StatusUpdated += Scrobbler_StatusUpdated;
            var spotifyScrobbleVM = new SpotifyScrobbleViewModel(windowManager);

            spotifyScrobbleVM.StatusUpdated += Scrobbler_StatusUpdated;
            var setlistFMScrobbleVM = new SetlistFMScrobbleViewModel(windowManager);

            setlistFMScrobbleVM.StatusUpdated += Scrobbler_StatusUpdated;
            var cacheScrobblerVM = new CacheScrobblerViewModel(windowManager);

            cacheScrobblerVM.StatusUpdated += Scrobbler_StatusUpdated;

            ActivateItem(manualScrobbleViewModel);
            ActivateItem(friendScrobbleViewModel);
            ActivateItem(databaseScrobbleViewModel);
            ActivateItem(csvScrobbleViewModel);
            ActivateItem(fileScrobbleViewModel);
            ActivateItem(mediaPlayerDatabaseScrobbleViewModel);
            ActivateItem(iTunesScrobbleVM);
            ActivateItem(spotifyScrobbleVM);
            ActivateItem(setlistFMScrobbleVM);
            ActivateItem(cacheScrobblerVM);

            // this one should be selected
            ActivateItem(manualScrobbleViewModel);
        }
示例#28
0
        /// <summary>
        /// Creates the ViewModels.
        /// </summary>
        /// <param name="windowManager">WindowManager used to display dialogs.</param>
        /// <param name="userAPI">Last.fm user API.</param>
        /// <param name="fileOperator">FileOperator used to interface with files.</param>
        private TabViewModel[] CreateViewModels(IExtendedWindowManager windowManager, IUserApi userAPI, IFileOperator fileOperator)
        {
            var pasteYourTasteVM = new PasteYourTasteViewModel(userAPI);

            pasteYourTasteVM.StatusUpdated += VM_StatusUpdated;;
            var csvDownloaderVM = new CSVDownloaderViewModel(windowManager, userAPI, fileOperator);

            csvDownloaderVM.StatusUpdated += VM_StatusUpdated;
            var collageCreatorVM = new CollageCreatorViewModel(windowManager, userAPI);

            collageCreatorVM.StatusUpdated += VM_StatusUpdated;
            var milestoneCheckerVM = new MilestoneCheckerViewModel(userAPI);

            milestoneCheckerVM.StatusUpdated += VM_StatusUpdated;

            return(new TabViewModel[] { pasteYourTasteVM, csvDownloaderVM, collageCreatorVM, milestoneCheckerVM });
        }
示例#29
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();
        }
示例#30
0
        /// <summary>
        /// Creates the ViewModels.
        /// </summary>
        /// <param name="windowManager">WindowManager used to display dialogs.</param>
        /// <param name="userAPI">Last.fm user API.</param>
        private void CreateViewModels(IExtendedWindowManager windowManager, IUserApi userAPI)
        {
            var pasteYourTasteVM = new PasteYourTasteViewModel();

            pasteYourTasteVM.StatusUpdated += VM_StatusUpdated;;
            var csvDownloaderVM = new CSVDownloaderViewModel(windowManager);

            csvDownloaderVM.StatusUpdated += VM_StatusUpdated;
            var collageCreatorVM = new CollageCreatorViewModel(windowManager, userAPI);

            collageCreatorVM.StatusUpdated += VM_StatusUpdated;

            ActivateItem(pasteYourTasteVM);
            ActivateItem(csvDownloaderVM);
            ActivateItem(collageCreatorVM);

            // should be selected
            ActivateItem(pasteYourTasteVM);
        }