protected override void OnKeyDown(KeyEventArgs e) { normal.RemoveFilterIndex(); if (Locked && e.KeyCode != KeyDefs.AdvanceScreen) { base.OnKeyDown(e); return; } if (e.Alt) { if (e.KeyCode == KeyDefs.Enter) { if (Lib.FullScreen) { controller.RequestAction(QActionType.ReleaseFullScreen); } else { controller.RequestAction(QActionType.SetFullScreen); } e.Handled = true; } } else { e.Handled = true; switch (e.KeyCode) { case KeyDefs.Enter: if (e.Shift) { if (controller.AllowTagEditing) { controller.RequestAction(QActionType.EditTags); } } else { controller.RequestAction(QActionType.PlaySelectedTracks); } break; case KeyDefs.Play: case KeyDefs.Play2: controller.RequestAction(QActionType.Play); break; case KeyDefs.Pause: controller.RequestAction(QActionType.Pause); break; case KeyDefs.PlayPause: controller.RequestAction(QActionType.TogglePlayPause); break; case KeyDefs.Stop: case KeyDefs.Stop2: if (e.Shift) { controller.RequestAction(QActionType.StopAfterThisTrack); } else { controller.RequestAction(QActionType.Stop); } break; case KeyDefs.Next: case KeyDefs.Next2: controller.RequestAction(QActionType.Next); break; case KeyDefs.Previous: case KeyDefs.Previous2: controller.RequestAction(QActionType.Previous); break; case KeyDefs.ScanFwd: controller.RequestAction(QActionType.ScanFwd); break; case KeyDefs.ScanBack: controller.RequestAction(QActionType.ScanBack); break; case KeyDefs.PlayThisAlbum: if (e.Shift) { controller.RequestAction(QActionType.AddAlbumToNowPlaying); } else { controller.RequestAction(QActionType.PlayThisAlbum); } break; case KeyDefs.FocusSearchBox: controller.RequestAction(QActionType.FocusSearchBox); break; case KeyDefs.ShowPlayingTrack: controller.RequestAction(QActionType.FindPlayingTrack); break; case KeyDefs.Podcasts: controller.RequestAction(QActionType.TogglePodcastView); break; case KeyDefs.Delete: controller.RequestAction(QActionType.Delete); break; case KeyDefs.SelectAllOrNone: if (e.Control) { if (e.Shift) { controller.RequestAction(QActionType.SelectNone); } else { controller.RequestAction(QActionType.SelectAll); } } else { e.Handled = false; } break; case KeyDefs.Shuffle: if (e.Shift) { Lib.DoEvents(); controller.RequestAction(QActionType.PlayRandomAlbum); } else { controller.RequestAction(QActionType.Shuffle); } break; case KeyDefs.AutoPlaylistAction: if (e.Shift) { controller.RequestAction(QActionType.ConvertToStandardPlaylist); } else { controller.RequestAction(QActionType.EditAutoPlaylist); } break; case KeyDefs.ClearAllFilters: controller.RequestAction(QActionType.ReleaseAllFilters); break; case KeyDefs.FilterSelected: if (e.Shift) { controller.RequestAction(QActionType.FilterSelectedAlbum); } else if (e.Control) { controller.RequestAction(QActionType.FilterSelectedGenre); } else { controller.RequestAction(QActionType.FilterSelectedArtist); } break; case KeyDefs.ShowInfoFromInternet: if (e.Control) { controller.RequestAction(QActionType.LastFMShowAlbum); } else if (e.Shift) { controller.RequestAction(QActionType.LastFMShowArtist); } else { controller.RequestAction(QActionType.ShowTrackAndAlbumDetails); } break; case KeyDefs.PlaySelectedNext: controller.RequestAction(QActionType.PlaySelectedTrackNext); break; case KeyDefs.PlaylistAction: if (e.Shift) { controller.RequestAction(QActionType.ViewNowPlaying); } else if (e.Control) { if (controller.PlaylistExists(controller.TargetPlaylistName) && normal.HasSelectedTracks) { if (normal.SelectedTracks.Count == 1) { controller.RequestAction(QActionType.AddToTargetPlaylistAndAdvance); } else { controller.RequestAction(QActionType.AddToTargetPlaylist); } } } else { controller.RequestAction(QActionType.AddToNowPlayingAndAdvance); } break; case KeyDefs.FileInfo: if (e.Shift) { controller.RequestAction(QActionType.RefreshSelectedTracks); } else { controller.RequestAction(QActionType.ShowFileDetails); } break; case KeyDefs.ShowEqualizer: if (e.Control) { controller.RequestAction(QActionType.ShowEqualizer); } else if (e.Shift) { controller.RequestAction(QActionType.SelectNextEqualizer); } else { controller.RequestAction(QActionType.ToggleEqualizer); } break; case KeyDefs.MiniPlayer: controller.RequestAction(QActionType.ShowMiniPlayer); break; case KeyDefs.HTPCMode: if (e.Shift) { controller.RequestAction(QActionType.ShowTagCloud); } else { controller.RequestAction(QActionType.HTPCMode); } break; case KeyDefs.AdvanceScreen: controller.RequestAction(QActionType.AdvanceScreenWithoutMouse); break; case KeyDefs.GainUp: controller.RequestAction(QActionType.SpectrumViewGainUp); break; case KeyDefs.GainDown: controller.RequestAction(QActionType.SpectrumViewGainDown); break; case KeyDefs.VolUp: case KeyDefs.VolUp2: controller.RequestAction(QActionType.VolumeUp); break; case KeyDefs.VolDown: case KeyDefs.VolDown2: controller.RequestAction(QActionType.VolumeDown); break; case KeyDefs.Mute: controller.RequestAction(QActionType.Mute); break; case KeyDefs.Radio: if (e.Shift) { controller.RequestAction(QActionType.RepeatToggle); } else { controller.RequestAction(QActionType.ToggleRadioMode); } break; case KeyDefs.Gain: if (e.Shift) { controller.RequestAction(QActionType.ReplayGainAnalyzeSelectedTracks); } break; case KeyDefs.Exit: if (e.Shift) { Controller.ShowMessage(Localization.Get(UI_Key.General_Exit)); controller.RequestAction(QActionType.Exit); } break; case KeyDefs.Cancel: controller.RequestAction(QActionType.Cancel); break; case KeyDefs.PreviousFilter: controller.RequestAction(QActionType.PreviousFilter); break; case KeyDefs.NextFilter: controller.RequestAction(QActionType.NextFilter); break; case KeyDefs.ReleaseCurrentFilter: controller.RequestAction(QActionType.ReleaseCurrentFilter); break; case KeyDefs.ReleaseAllFilters: controller.RequestAction(QActionType.ReleaseAllFilters); break; case KeyDefs.ShowFilterIndex: controller.RequestAction(QActionType.ShowFilterIndex); break; case KeyDefs.PageUp: controller.RequestAction(QActionType.PageUp); break; case KeyDefs.PageDown: controller.RequestAction(QActionType.PageDown); break; case KeyDefs.Home: controller.RequestAction(QActionType.Home); break; case KeyDefs.End: controller.RequestAction(QActionType.End); break; case KeyDefs.Playlists: if (e.Shift) { System.Diagnostics.Debug.Assert(e.KeyCode == KeyDefs.One); controller.SetRatingOfSelectedTracks(1); } else { normal.CurrentFilterType = FilterType.Playlist; } break; case KeyDefs.Genres: if (e.Shift) { System.Diagnostics.Debug.Assert(e.KeyCode == KeyDefs.Two); controller.SetRatingOfSelectedTracks(2); } else { normal.CurrentFilterType = FilterType.Genre; } break; case KeyDefs.Artists: if (e.Shift) { System.Diagnostics.Debug.Assert(e.KeyCode == KeyDefs.Three); controller.SetRatingOfSelectedTracks(3); } else { normal.CurrentFilterType = FilterType.Artist; } break; case KeyDefs.Albums: if (e.Shift) { System.Diagnostics.Debug.Assert(e.KeyCode == KeyDefs.Four); controller.SetRatingOfSelectedTracks(4); } else { normal.CurrentFilterType = FilterType.Album; } break; case KeyDefs.Years: if (e.Shift) { System.Diagnostics.Debug.Assert(e.KeyCode == KeyDefs.Five); controller.SetRatingOfSelectedTracks(5); } else { normal.CurrentFilterType = FilterType.Year; } break; case KeyDefs.Zero: if (e.Shift) { controller.SetRatingOfSelectedTracks(0); } break; case KeyDefs.Groupings: normal.CurrentFilterType = FilterType.Grouping; break; default: e.Handled = false; break; } } base.OnKeyDown(e); }