/** Switches the current PlayList while playing the current one, return nonzero on error */ int MUSImporter::SwitchPlayList(const char* name, bool Hard) { if (Playing) { //don't do anything if the requested song is already playing //this fixed PST's infinite song start int len = ( int ) strlen( PLName ); if (strnicmp( name, PLName, len ) == 0) return 0; if (Hard) { HardEnd(); } else { End(); } //if still playing, then don't insist on trying to open it now //either HardEnd stopped it for us, or End marked it for early ending if (Playing) { strncpy(PLNameNew, name, sizeof(PLNameNew) ); return 0; } } if (OpenPlaylist( name )) { Start(); return 0; } return -1; }
void wxPlaylist::QueueURL(wxString filename) { char *ext = (char*)strrchr(filename.mb_str(wxConvUTF8), '.'); if (ext && (!stricmp(ext, ".m3u") || !stricmp(ext, ".pls")) ) { OpenPlaylist(filename); } else { PLEntry *ple = new PLEntry(filename); gf_list_add(m_entries, ple); } }
void wxPlaylist::OnOpen(wxCommandEvent & WXUNUSED(event)) { wxFileDialog dlg(this, wxT("Select file(s)"), wxT(""), wxT(""), wxT("M3U & PLS Playlists|*.m3u;*.pls|M3U Playlists|*.m3u|ShoutCast Playlists|*.pls|"), wxOPEN | wxCHANGE_DIR/* | wxHIDE_READONLY*/); if (dlg.ShowModal() != wxID_OK) return; Clear(); OpenPlaylist(dlg.GetPath()); m_cur_entry = 0; Play(); }
/** Plays the Next Entry */ void MUSImporter::PlayNext() { if (!Playing) { return; } if (PLnext != -1) { PlayMusic( PLnext ); PLpos = PLnext; if (playlist[PLpos].PLLoop[0] != 0) { for (unsigned int i = 0; i < playlist.size(); i++) { if (stricmp( playlist[i].PLFile, playlist[PLpos].PLLoop ) == 0) { PLnext = i; break; } } } else { if (stricmp( playlist[PLnext].PLEnd, "end" ) == 0) PLnext = -1; else PLnext = PLpos + 1; if ((unsigned int) PLnext >= playlist.size() ) { PLnext = 0; } } } else { Playing = false; core->GetAudioDrv()->Stop(); //start new music after the old faded out if (PLNameNew[0]) { if (OpenPlaylist(PLNameNew)) { Start(); } PLNameNew[0]='\0'; } } }
void IncomingDataParser::Parse(const pb::remote::Message& msg) { close_connection_ = false; RemoteClient* client = qobject_cast<RemoteClient*>(sender()); // Now check what's to do switch (msg.type()) { case pb::remote::CONNECT: ClientConnect(msg); break; case pb::remote::DISCONNECT: close_connection_ = true; break; case pb::remote::REQUEST_PLAYLISTS: SendPlaylists(msg); break; case pb::remote::REQUEST_PLAYLIST_SONGS: GetPlaylistSongs(msg); break; case pb::remote::SET_VOLUME: emit SetVolume(msg.request_set_volume().volume()); break; case pb::remote::PLAY: emit Play(); break; case pb::remote::PLAYPAUSE: emit PlayPause(); break; case pb::remote::PAUSE: emit Pause(); break; case pb::remote::STOP: emit Stop(); break; case pb::remote::STOP_AFTER: emit StopAfterCurrent(); break; case pb::remote::NEXT: emit Next(); break; case pb::remote::PREVIOUS: emit Previous(); break; case pb::remote::CHANGE_SONG: ChangeSong(msg); break; case pb::remote::SHUFFLE_PLAYLIST: emit ShuffleCurrent(); break; case pb::remote::REPEAT: SetRepeatMode(msg.repeat()); break; case pb::remote::SHUFFLE: SetShuffleMode(msg.shuffle()); break; case pb::remote::SET_TRACK_POSITION: emit SeekTo(msg.request_set_track_position().position()); break; case pb::remote::INSERT_URLS: InsertUrls(msg); break; case pb::remote::REMOVE_SONGS: RemoveSongs(msg); break; case pb::remote::OPEN_PLAYLIST: OpenPlaylist(msg); break; case pb::remote::CLOSE_PLAYLIST: ClosePlaylist(msg); break; case pb::remote::LOVE: emit Love(); break; case pb::remote::BAN: emit Ban(); break; case pb::remote::GET_LYRICS: emit GetLyrics(); break; case pb::remote::DOWNLOAD_SONGS: emit SendSongs(msg.request_download_songs(), client); break; case pb::remote::SONG_OFFER_RESPONSE: emit ResponseSongOffer(client, msg.response_song_offer().accepted()); break; case pb::remote::GET_LIBRARY: emit SendLibrary(client); break; case pb::remote::RATE_SONG: RateSong(msg); break; default: break; } }