public PlayViewModel(IMessenger messenger) : base(messenger) { ////if (IsInDesignMode) ////{ //// // Code runs in Blend --> create design time data. ////} ////else ////{ //// // Code runs "for real" ////} MessengerInstance.Register<SongGroupMessage>( this, m => { songs = m.Songs; DispatcherHelper.CheckBeginInvokeOnUI(() => { SongsAnalyzed = true; }); LoadSongs(false); }); MessengerInstance.Register<SongGroupMessage>( this, m => { }); MessengerInstance.Register<MediaPlayerStopMessage>( this, m => { if (Player != null) { Player.Stop(); } }); PlayCommand = new RelayCommand( () => { if (Player.State == MediaState.Paused) { ThreadPool.QueueUserWorkItem(new WaitCallback(o => { Player.Resume(); })); } else if (Player.State == MediaState.Stopped) { bool canPlay = true; if (!MediaPlayer.GameHasControl) { canPlay = GetControl(); } if (canPlay) { ThreadPool.QueueUserWorkItem(new WaitCallback(o => { Player.Play(); })); } } else { ThreadPool.QueueUserWorkItem(new WaitCallback(o => { Player.Pause(); })); } }); PrevCommand = new RelayCommand(() => { ThreadPool.QueueUserWorkItem(new WaitCallback(o => { Player.MovePrev(); })); }); NextCommand = new RelayCommand(() => { ThreadPool.QueueUserWorkItem(new WaitCallback(o => { Player.MoveNext(); })); }); SafeIsolatedStorageSettings settings = new SafeIsolatedStorageSettings(); BPMChangedCommand = new RelayCommand<ManipulationCompletedEventArgs>((e) => { settings[BPMPropertyName] = BPM; settings.Save(); if (Player != null && Player.State == MediaState.Playing) { Player.Stop(); LoadSongs(true); } else { LoadSongs(false); } }); int bpm; if (settings.TryGetValue<int>(BPMPropertyName, out bpm)) { BPM = bpm; } else { BPM = 120; } }
void LoadCatalogIdNeedsToCreateCatalog_CatalogCreateCompleted( object sender, EchoNestApiEventArgs e) { if (e.Error == null) { Catalog cat = (Catalog)e.GetResultData(); // TODO If isolated storage fails here, then the next time they // run the app, we will create another catalog. We need to handle // this somehow - perhaps use the unique device ID (which is bad // practice apparently) as the catalog name to make sure there is // only one catalog created per device ever. logger.Debug("Creating remote CatalogID completed successfully"); SafeIsolatedStorageSettings settings = new SafeIsolatedStorageSettings(); settings[CatalogIdPropertyName] = cat.Id; settings.Save(); CatalogId = cat.Id; logger.Info("Completed LoadCatalogId"); } else { logger.Error("Creating remote CatalogID failed, retrying"); LoadCatalogIdNeedsToRunAgain(); } }
private bool GetControl() { bool haveControl = false; SafeIsolatedStorageSettings settings = new SafeIsolatedStorageSettings(); string key = "MediaPlayerPermission"; settings.TryGetValue<bool>(key, out haveControl); if (!haveControl) { MessageBoxResult result = MessageBox.Show( "It looks like you are already listening to something. We need to stop it so we can play some awesome workout tunes.", "Stop currently playing music?", MessageBoxButton.OKCancel); if (result == MessageBoxResult.OK) { haveControl = true; settings[key] = true; settings.Save(); } } return haveControl; }