void list_LongClick(object sender, CFControlsExtender.Listview.ItemArgs e) { if (CurrentTab == Tabs.NowPlaying) { if (e.ItemId < NowPlayingTable.Rows.Count) { var currentTrack = NowPlayingTable.Rows[e.ItemId]["TrackObject"] as ITrack; if (currentTrack != null) { var choices = new string[] { "Album", "Artist" }; var choiceDialog = new MultipleChoiceDialog(this.CF_displayHooks.displayNumber, this.CF_displayHooks.rearScreen, "Search for:", choices); choiceDialog.MainForm = base.MainForm; choiceDialog.CF_pluginInit(); if (choiceDialog.ShowDialog(this) == DialogResult.OK) { int choice = choiceDialog.Choice; switch (choice) { case 0: using (var albumBrowser = currentTrack.Album.Browse()) { if (!albumBrowser.IsComplete) { CF_systemCommand(CF_Actions.SHOWINFO, "Please wait..."); albumBrowser.WaitForCompletion(); CF_systemCommand(CF_Actions.HIDEINFO); } List<ITrack> tracks = new List<ITrack>(); foreach (var track in albumBrowser.Tracks) { if (track.IsAvailable) { tracks.Add(track); } } var resultTable = LoadTracksIntoTable(tracks); SwitchToTab(Tabs.Search, GroupingType.Songs, resultTable, currentTrack.Album.Name, currentTrack.Album.CoverId, true); } break; case 1: if (currentTrack.Artists.Count > 1) { choices = currentTrack.Artists.Select(a => a.Name).Take(5).ToArray(); choiceDialog = new MultipleChoiceDialog(this.CF_displayHooks.displayNumber, this.CF_displayHooks.rearScreen, "Search for:", choices); choiceDialog.MainForm = base.MainForm; choiceDialog.CF_pluginInit(); if (choiceDialog.ShowDialog(this) == DialogResult.OK) { choice = choiceDialog.Choice; } else return; } else { choice = 0; } var artist = currentTrack.Artists.ElementAt(choice); using (var artistBrowser = artist.Browse(sp_artistbrowse_type.NO_TRACKS)) { if (!artistBrowser.IsComplete) { CF_systemCommand(CF_Actions.SHOWINFO, "Please wait..."); artistBrowser.WaitForCompletion(); CF_systemCommand(CF_Actions.HIDEINFO); } var albums = GetAlbumsIncludingTopHits(artistBrowser); var resultTable = LoadAlbumsIntoTable(albums, false); SwitchToTab(Tabs.Search, GroupingType.Albums, resultTable, artist.Name, artistBrowser.PortraitIds.FirstOrDefault(), true); } break; } } } } } }
public override bool CF_pluginCMLCommand(string command, string[] strparams, CF_ButtonState state, int zone) { if (!_hasControl) return false; _zone = zone; switch (command) { case "Spotify.NowPlaying": if (state >= CF_ButtonState.Click) { LoadNowPlaying(); } return true; case "Spotify.Search": if (state == CF_ButtonState.Click) { LoadTrackSearch(); } return true; case "Spotify.SearchHold": if (state == CF_ButtonState.HoldClick) { var choices = new string[] { "Songs", "Albums", "Artists", "Playlists" }; var choiceDialog = new MultipleChoiceDialog(this.CF_displayHooks.displayNumber, this.CF_displayHooks.rearScreen, "Search for:", choices); choiceDialog.MainForm = base.MainForm; choiceDialog.CF_pluginInit(); if (choiceDialog.ShowDialog(this) == DialogResult.OK) { int choice = choiceDialog.Choice; switch (choice) { case 0: LoadTrackSearch(); break; case 1: LoadAlbumSearch(); break; case 2: LoadArtistSearch(); break; case 3: LoadPlaylistSearch(); break; } } } return true; case "Spotify.Inbox": if (state >= CF_ButtonState.Click) { var choices = new string[] { "Songs", "Albums", "Playlists"}; var choiceDialog = new MultipleChoiceDialog(this.CF_displayHooks.displayNumber, this.CF_displayHooks.rearScreen, "Retrieve Inbox of:", choices); choiceDialog.MainForm = base.MainForm; choiceDialog.CF_pluginInit(); if (choiceDialog.ShowDialog(this) == DialogResult.OK) { int choice = choiceDialog.Choice; switch (choice) { case 0: LoadInboxTracks(); break; case 1: LoadInboxAlbums(); break; case 2: LoadInboxPlaylists(); break; } } } return true; case "Spotify.Playlists": if (state >= CF_ButtonState.Click) { LoadPlaylists(); } return true; case "Spotify.Popular": if (state >= CF_ButtonState.Click) { var choices = new string[] { "Songs", "Albums", "Artists", "Your starred songs" }; var choiceDialog = new MultipleChoiceDialog(this.CF_displayHooks.displayNumber, this.CF_displayHooks.rearScreen, "Retrieve Top List Of:", choices); choiceDialog.MainForm = base.MainForm; choiceDialog.CF_pluginInit(); if (choiceDialog.ShowDialog(this) == DialogResult.OK) { int choice = choiceDialog.Choice; switch (choice) { case 0: LoadPopularTracks(); break; case 1: LoadPopularAlbums(); break; case 2: LoadPopularArtists(); break; case 3: LoadStarredTracks(); break; } } } return true; case "Spotify.ScrollUp": if (state >= CF_ButtonState.Click) { var list = advancedlistArray[CF_getAdvancedListID("mainList")]; list.PageUp(); } return true; case "Spotify.ScrollDown": if (state >= CF_ButtonState.Click) { var list = advancedlistArray[CF_getAdvancedListID("mainList")]; list.PageDown(); } return true; case "Spotify.DynamicButton1": if (state == CF_ButtonState.Click) { OnDynamic1Clicked(); } return true; case "Spotify.DynamicButton2": if (state == CF_ButtonState.Click) { OnDynamic2Clicked(); } return true; case "Spotify.DynamicButton1Hold": if (state == CF_ButtonState.HoldClick) { OnDynamic1Hold(); } return true; case "Spotify.DynamicButton2Hold": if (state >= CF_ButtonState.HoldClick) { OnDynamic2Hold(); } return true; case "Spotify.Back": { if (state >= CF_ButtonState.Click) { OnBackClicked(); } } return true; case "Spotify.DynamicButton3": { if (state >= CF_ButtonState.Click) { OnDynamic3Clicked(); } } return true; case "Centrafuse.Main.PlayPause": if (state >= CF_ButtonState.Click) { PlayPause(); } return true; case "Centrafuse.Main.Rewind": if (state >= CF_ButtonState.Click) { PlayPreviousTrack(true); } return true; case "Centrafuse.Main.FastForward": if (state >= CF_ButtonState.Click) { PlayNextTrack(true); } return true; default: return base.CF_pluginCMLCommand(command, strparams, state, zone); } }