diff options
author | lvw <lvw@e10066b5-e1e2-0310-b819-94efdf66514b> | 2004-10-08 06:41:32 +0000 |
---|---|---|
committer | lvw <lvw@e10066b5-e1e2-0310-b819-94efdf66514b> | 2004-10-08 06:41:32 +0000 |
commit | 58177a6fe280784452dee940bb93f17bb6329a9a (patch) | |
tree | 58f727a5c030d5ea25ce8e125e1ca08c050de331 | |
parent | d3f5764bd8de119437dbc1a44ac8a29006f82b5b (diff) | |
download | vdr-plugin-muggle-58177a6fe280784452dee940bb93f17bb6329a9a.tar.gz vdr-plugin-muggle-58177a6fe280784452dee940bb93f17bb6329a9a.tar.bz2 |
Added starting playlist at a certain index
git-svn-id: https://vdr-muggle.svn.sourceforge.net/svnroot/vdr-muggle/trunk/muggle-plugin@209 e10066b5-e1e2-0310-b819-94efdf66514b
-rw-r--r-- | TODO | 22 | ||||
-rwxr-xr-x | mugglei.c | 10 | ||||
-rw-r--r-- | vdr_menu.c | 10 | ||||
-rw-r--r-- | vdr_menu.h | 3 | ||||
-rw-r--r-- | vdr_player.c | 43 | ||||
-rw-r--r-- | vdr_player.h | 6 |
6 files changed, 59 insertions, 35 deletions
@@ -12,17 +12,16 @@ \subsection bugs Bugs and testing needed - Test execution of playlist commands - - Attach to graphlcd plugin via replay string - - Possible to resume play instead of restarting list from the beginning? - - Keep this? Test mgPCMPlayer::getSourceFile() for GD case (find) + - Playlist view: start at selected on Ok + - Crashes in filter selections? - - Save on exit + - Keep this? Test mgPCMPlayer::getSourceFile() for GD case (find) \subsection urgentosd OSD-related Issues - - Test Instant play from browser view - - Playlist view: start at selected on Ok - + - Possible to resume play instead of restarting list from the beginning? + - Save on exit + \subsection urgentcode Code polishing - Clean up coding style and documentation in general @@ -70,10 +69,10 @@ \subsection urgentplayer Player extensions - - Toggle Track view/Playlist view (red) + - Toggle Track view/playlist view (red) - For playlist view show playlist name, total time - For track view show name, artist, time - - Toggle Detail/progress view (green) + - Toggle detail/progress view (green) - Track view: all metadata - Playlist view: all tracks, skip/jump - Determine max. framecount (needed for rewinding)? @@ -256,4 +255,9 @@ - Escape query strings correctly - should go into gd_content_interface.c (row[] in lines 1175,1179,1882)? - Simple progress indicator for 1.3.12 + - Attach to graphlcd plugin via replay string + - Test Instant play from browser view + - Menu while progress display is active + - Check int/unsigned stuff in mg_playlist + */
\ No newline at end of file @@ -21,7 +21,7 @@ MYSQL *db; -std::string host, user, pass, dbname, socket; +std::string host, user, pass, dbname, sock; bool import_assorted; int init_database() @@ -35,10 +35,10 @@ int init_database() } // check for use of sockets - if( socket != "" ) + if( sock != "" ) { if( mysql_real_connect( db, NULL, user.c_str(), pass.c_str(), dbname.c_str(), - 0, socket.c_str(), 0 ) == NULL ) + 0, sock.c_str(), 0 ) == NULL ) { std::cout << "mysql_real_connect using sockets failed." << std::endl; @@ -316,7 +316,7 @@ int main( int argc, char *argv[] ) dbname = "GiantDisc"; user = ""; pass = ""; - socket = ""; + sock = ""; import_assorted = false; // parse command line options @@ -359,7 +359,7 @@ int main( int argc, char *argv[] ) } break; case 's': { - socket = optarg; + sock = optarg; } break; } } @@ -287,7 +287,9 @@ eOSState mgMainMenu::ProcessKey(eKeys key) { case kOk: { - // show some more information? + // start replay at selected index + int idx = Current(); + Play( m_current_playlist, idx ); state = osContinue; } break; case kRed: @@ -948,17 +950,17 @@ void mgMainMenu::DisplayFilterSelector() // show available filters, load on OK? } -void mgMainMenu::Play(mgPlaylist *plist) +void mgMainMenu::Play( mgPlaylist *plist, int first ) { MGLOG( "mgMainMenu::Play" ); cControl *control = cControl::Control(); if( control && typeid(*control) == typeid(mgPlayerControl) ) { // is there a running MP3 player? - static_cast<mgPlayerControl*>(control)->NewPlaylist(plist); // signal the running player to load the new playlist + static_cast<mgPlayerControl*>(control)->NewPlaylist(plist, first); // signal the running player to load the new playlist } else { - cControl::Launch( new mgPlayerControl(plist) ); + cControl::Launch( new mgPlayerControl(plist, first) ); } } @@ -98,7 +98,8 @@ class mgMainMenu : public cOsdMenu void DisplayFilterSelector(); private: - void Play(mgPlaylist *plist); + //! \brief launch the actual player + void Play( mgPlaylist *plist, int first = -1 ); // content stuff mgMedia *m_media; diff --git a/vdr_player.c b/vdr_player.c index 39410a8..e06f6bf 100644 --- a/vdr_player.c +++ b/vdr_player.c @@ -142,6 +142,9 @@ private: //! \brief the decoder responsible for the currently playing item mgDecoder *m_decoder; + //! \brief the index where to start the playlist at + int m_first; + cFrame *m_rframe, *m_pframe; enum ePlayMode @@ -181,7 +184,7 @@ protected: virtual void Action(void); public: - mgPCMPlayer(mgPlaylist *plist); + mgPCMPlayer(mgPlaylist *plist, int first); virtual ~mgPCMPlayer(); bool Active() { return m_active; } @@ -199,13 +202,14 @@ public: virtual bool GetIndex(int &Current, int &Total, bool SnapToIFrame=false); // bool GetPlayInfo(cMP3PlayInfo *rm); // LVW - void NewPlaylist(mgPlaylist *plist); + void NewPlaylist( mgPlaylist *plist, int first ); mgContentItem *GetCurrent () { return m_current; } mgPlaylist *GetPlaylist () { return m_playlist; } }; -mgPCMPlayer::mgPCMPlayer(mgPlaylist *plist) - : cPlayer( the_setup.BackgrMode? pmAudioOnly: pmAudioOnlyBlack ) +mgPCMPlayer::mgPCMPlayer(mgPlaylist *plist, int first) + : cPlayer( the_setup.BackgrMode? pmAudioOnly: pmAudioOnlyBlack ), + m_first( first ) { m_playlist = plist; @@ -221,7 +225,7 @@ mgPCMPlayer::mgPCMPlayer(mgPlaylist *plist) m_playmode = pmStartup; m_state = msStop; - m_index = 0; + m_index = 0; m_playing = 0; m_current = 0; } @@ -252,7 +256,11 @@ void mgPCMPlayer::Activate(bool on) Lock(); - m_playlist->initialize(); + m_playlist->initialize( ); + if( m_first > 0 ) + { + m_playlist->gotoPosition( m_first ); + } m_current = m_playlist->getCurrent(); Play(); @@ -272,7 +280,7 @@ void mgPCMPlayer::Activate(bool on) } } -void mgPCMPlayer::NewPlaylist( mgPlaylist *plist ) +void mgPCMPlayer::NewPlaylist( mgPlaylist *plist, int start ) { MGLOG( "mgPCMPlayer::NewPlaylist" ); @@ -283,8 +291,14 @@ void mgPCMPlayer::NewPlaylist( mgPlaylist *plist ) // memory management of playlists should happen elsewhere (menu, content) m_playlist = plist; m_current = 0; - - if( NextFile() ) + + if( start > 0 ) + { + m_playlist->gotoPosition( (unsigned) start ); + m_current = m_playlist->getCurrent(); + Play(); + } + else if( NextFile() ) { Play(); } @@ -866,8 +880,8 @@ bool mgPCMPlayer::GetIndex( int ¤t, int &total, bool snaptoiframe ) // --- mgPlayerControl ------------------------------------------------------- -mgPlayerControl::mgPlayerControl( mgPlaylist *plist ) - : cControl( m_player = new mgPCMPlayer(plist) ) +mgPlayerControl::mgPlayerControl( mgPlaylist *plist, int start ) + : cControl( m_player = new mgPCMPlayer( plist, start ) ) { MGLOG( "mgPlayerControl::mgPlayerControl" ); @@ -878,7 +892,8 @@ mgPlayerControl::mgPlayerControl( mgPlaylist *plist ) m_has_osd = false; m_szLastShowStatusMsg = NULL; - // Notity all cStatusMonitor + + // Notify all cStatusMonitor StatusMsgReplaying(); } @@ -976,11 +991,11 @@ void mgPlayerControl::ToggleLoop(void) } } -void mgPlayerControl::NewPlaylist(mgPlaylist *plist) +void mgPlayerControl::NewPlaylist(mgPlaylist *plist, int start) { if( m_player ) { - m_player->NewPlaylist(plist); + m_player->NewPlaylist(plist, start); } } diff --git a/vdr_player.h b/vdr_player.h index c70c4e1..3731b9d 100644 --- a/vdr_player.h +++ b/vdr_player.h @@ -64,8 +64,9 @@ public: /*! \brief construct a control with a playlist * * \param plist - the playlist to be played + * \param first - the index where to start the playlist */ - mgPlayerControl(mgPlaylist *plist); + mgPlayerControl(mgPlaylist *plist, int first); /*! \brief destructor */ @@ -113,8 +114,9 @@ public: * The caller has to take care of deallocating the previous list * * \param plist - the new playlist to be played + * \param first - the index where to start the playlist */ - void NewPlaylist( mgPlaylist *plist ); + void NewPlaylist( mgPlaylist *plist, int start ); //! \brief a progress display void ShowProgress(); |