diff options
| author | lvw <lvw@e10066b5-e1e2-0310-b819-94efdf66514b> | 2004-10-11 22:02:14 +0000 |
|---|---|---|
| committer | lvw <lvw@e10066b5-e1e2-0310-b819-94efdf66514b> | 2004-10-11 22:02:14 +0000 |
| commit | 1761a1a8961e2ec1f6338c42af5c9e0aa56822b4 (patch) | |
| tree | b94e689f818b298e7ba1c629a8394776d0e6a9da | |
| parent | c3138201aa15b89d76ef7b8f6cd68496a98c312c (diff) | |
| download | vdr-plugin-muggle-1761a1a8961e2ec1f6338c42af5c9e0aa56822b4.tar.gz vdr-plugin-muggle-1761a1a8961e2ec1f6338c42af5c9e0aa56822b4.tar.bz2 | |
Corrected position of code to confirm loop/shuffle modes
git-svn-id: https://vdr-muggle.svn.sourceforge.net/svnroot/vdr-muggle/trunk/muggle-plugin@228 e10066b5-e1e2-0310-b819-94efdf66514b
| -rw-r--r-- | TODO | 6 | ||||
| -rw-r--r-- | mg_playlist.h | 5 | ||||
| -rw-r--r-- | vdr_menu.c | 4 | ||||
| -rw-r--r-- | vdr_player.c | 217 | ||||
| -rw-r--r-- | vdr_player.h | 4 | ||||
| -rw-r--r-- | vdr_setup.c | 6 |
6 files changed, 141 insertions, 101 deletions
@@ -17,7 +17,6 @@ \subsection urgentosd OSD-related Issues - - Red key does not work in Browser submenu - Possible to resume play instead of restarting list from the beginning? - Save on exit - Rename playlist @@ -69,6 +68,8 @@ \subsection urgentplayer Player extensions + - Display covers + - Add FLAC decoder - Determine max. framecount (needed for rewinding)? - Init scale/level/normalize? - The max. level should be recognized during play @@ -157,8 +158,6 @@ \subsection midplayer Player issues - - Display covers - - Add FLAC decoder - Use single CD files with cuesheets in metadata for FLAC - Handle recoding samplerate, limiter etc correctly @@ -241,5 +240,6 @@ - Toggle detail/progress view (green) - Track view: all metadata - Playlist view: all tracks (past three, upcoming ones) + - BUG: Red key does not work in Browser submenu */
\ No newline at end of file diff --git a/mg_playlist.h b/mg_playlist.h index c5dd5fc..0c32297 100644 --- a/mg_playlist.h +++ b/mg_playlist.h @@ -76,6 +76,11 @@ public: //! \brief toggle the shuffle mode. ShuffleMode toggleShuffleMode( ); + //! \brief report the loop mode. + LoopMode getLoopMode( ) const { return m_loop_mode; } + + //! \brief report the shuffle mode. + ShuffleMode getShuffleMode( ) const { return m_shuffle_mode; } //@} //! \brief modify playlist items @@ -248,6 +248,10 @@ eOSState mgMainMenu::ProcessKey(eKeys key) state = osContinue; } break; + case kRed: + { + state = TreeSubmenuAction( 0 ); + } break; case kBlue: { m_state = TREE; diff --git a/vdr_player.c b/vdr_player.c index ba87ecd..4f16d66 100644 --- a/vdr_player.c +++ b/vdr_player.c @@ -200,7 +200,7 @@ public: void ToggleShuffle(void); void ToggleLoop(void); - virtual bool getIndex(int &Current, int &Total, bool SnapToIFrame=false); + virtual bool GetIndex(int &Current, int &Total, bool SnapToIFrame=false); // bool GetPlayInfo(cMP3PlayInfo *rm); // LVW void NewPlaylist( mgPlaylist *plist, int first ); @@ -869,7 +869,7 @@ void mgPCMPlayer::SkipSeconds(int secs) } } -bool mgPCMPlayer::getIndex( int ¤t, int &total, bool snaptoiframe ) +bool mgPCMPlayer::GetIndex( int ¤t, int &total, bool snaptoiframe ) { if( m_current ) { @@ -1106,7 +1106,7 @@ void mgPCMPlayer::send_pes_packet(unsigned char *data, int len, int timestamp) // --- mgPlayerControl ------------------------------------------------------- mgPlayerControl::mgPlayerControl( mgPlaylist *plist, int start ) - : cControl( m_player = new mgPCMPlayer( plist, start ) ) + : cControl( player = new mgPCMPlayer( plist, start ) ) { MGLOG( "mgPlayerControl::mgPlayerControl" ); @@ -1141,87 +1141,87 @@ mgPlayerControl::~mgPlayerControl() bool mgPlayerControl::Active(void) { - return m_player && m_player->Active(); + return player && player->Active(); } void mgPlayerControl::Stop(void) { - if( m_player ) + if( player ) { - delete m_player; - m_player = 0; + delete player; + player = 0; } } void mgPlayerControl::Pause(void) { - if( m_player ) + if( player ) { - m_player->Pause(); + player->Pause(); } } void mgPlayerControl::Play(void) { - if( m_player ) + if( player ) { - m_player->Play(); + player->Play(); } } void mgPlayerControl::Forward(void) { - if( m_player ) + if( player ) { - m_player->Forward(); + player->Forward(); } } void mgPlayerControl::Backward(void) { - if( m_player ) + if( player ) { - m_player->Backward(); + player->Backward(); } } void mgPlayerControl::SkipSeconds(int Seconds) { - if( m_player ) + if( player ) { - m_player->SkipSeconds(Seconds); + player->SkipSeconds(Seconds); } } void mgPlayerControl::Goto(int Position, bool Still) { - if( m_player ) + if( player ) { - m_player->Goto(Position, Still); + player->Goto(Position, Still); } } void mgPlayerControl::ToggleShuffle(void) { - if( m_player ) + if( player ) { - m_player->ToggleShuffle(); + player->ToggleShuffle(); } } void mgPlayerControl::ToggleLoop(void) { - if( m_player ) + if( player ) { - m_player->ToggleLoop(); + player->ToggleLoop(); } } void mgPlayerControl::NewPlaylist(mgPlaylist *plist, int start) { - if( m_player ) + if( player ) { - m_player->NewPlaylist(plist, start); + player->NewPlaylist(plist, start); } } @@ -1233,7 +1233,7 @@ void mgPlayerControl::ShowContents() m_menu = Skins.Current()->DisplayMenu(); } - if( m_player && m_menu ) + if( player && m_menu ) { int num_items = m_menu->MaxItems(); @@ -1247,44 +1247,44 @@ void mgPlayerControl::ShowContents() char *buf; if( num_items > 0 ) { - asprintf( &buf, "Title:\t%s", m_player->getCurrent()->getLabel(0).c_str() ); + asprintf( &buf, "Title:\t%s", player->getCurrent()->getLabel(0).c_str() ); m_menu->SetItem( buf, 0, false, false ); free( buf ); } if( num_items > 1 ) { - asprintf( &buf, "Artist:\t%s", m_player->getCurrent()->getLabel(1).c_str() ); + asprintf( &buf, "Artist:\t%s", player->getCurrent()->getLabel(1).c_str() ); m_menu->SetItem( buf, 1, false, false ); free( buf ); } if( num_items > 2 ) { - asprintf( &buf, "Album:\t%s", m_player->getCurrent()->getLabel(2).c_str() ); + asprintf( &buf, "Album:\t%s", player->getCurrent()->getLabel(2).c_str() ); m_menu->SetItem( buf, 2, false, false ); free( buf ); } if( num_items > 3 ) { - asprintf( &buf, "Genre:\t%s", m_player->getCurrent()->getLabel(3).c_str() ); + asprintf( &buf, "Genre:\t%s", player->getCurrent()->getLabel(3).c_str() ); m_menu->SetItem( buf, 3, false, false ); free( buf ); } if( num_items > 4 ) { - int len = m_player->getCurrent()->getLength(); + int len = player->getCurrent()->getLength(); asprintf( &buf, "Length:\t%s", IndexToHMSF( SecondsToFrames( len ) ) ); m_menu->SetItem( buf, 4, false, false ); free( buf ); } if( num_items > 5 ) { - asprintf( &buf, "Bit rate:\t%s", m_player->getCurrent()->getBitrate().c_str() ); + asprintf( &buf, "Bit rate:\t%s", player->getCurrent()->getBitrate().c_str() ); m_menu->SetItem( buf, 5, false, false ); free( buf ); } if( num_items > 6 ) { - int sr = m_player->getCurrent()->getSampleRate(); + int sr = player->getCurrent()->getSampleRate(); asprintf( &buf, "Sampling rate:\t%d", sr ); m_menu->SetItem( buf, 6, false, false ); @@ -1293,7 +1293,7 @@ void mgPlayerControl::ShowContents() } else { - mgPlaylist *list = m_player->getPlaylist(); + mgPlaylist *list = player->getPlaylist(); if( list ) { // use items for playlist tag display @@ -1332,18 +1332,18 @@ void mgPlayerControl::ShowContents() void mgPlayerControl::ShowProgress() { - if( m_player ) + if( player ) { char *buf; bool play = true, forward = true; int speed = -1; int current_frame, total_frames; - m_player->getIndex( current_frame, total_frames ); + player->GetIndex( current_frame, total_frames ); if( !m_track_view ) { // playlist stuff - mgPlaylist *list = m_player->getPlaylist(); + mgPlaylist *list = player->getPlaylist(); if( list ) { total_frames = SecondsToFrames( list->getLength() ); @@ -1353,7 +1353,7 @@ void mgPlayerControl::ShowProgress() } else { // track view - asprintf( &buf, "%s: %s", m_player->getCurrent()->getLabel(1).c_str(), m_player->getCurrent()->getTitle().c_str() ); + asprintf( &buf, "%s: %s", player->getCurrent()->getLabel(1).c_str(), player->getCurrent()->getTitle().c_str() ); } #if VDRVERSNUM >= 10307 @@ -1383,8 +1383,6 @@ void mgPlayerControl::ShowProgress() void mgPlayerControl::Display() { - StatusMsgReplaying(); - if( m_visible ) { if( !m_has_osd ) @@ -1464,6 +1462,8 @@ eOSState mgPlayerControl::ProcessKey(eKeys key) return osEnd; } + StatusMsgReplaying(); + Display(); eOSState state = cControl::ProcessKey(key); @@ -1482,9 +1482,9 @@ eOSState mgPlayerControl::ProcessKey(eKeys key) } break; case kRed: { - if( !m_visible && m_player ) + if( !m_visible && player ) { - mgPlaylist *pl = m_player->getPlaylist(); + mgPlaylist *pl = player->getPlaylist(); std::string s; switch( pl->toggleLoopMode() ) @@ -1505,14 +1505,14 @@ eOSState mgPlayerControl::ProcessKey(eKeys key) { s = tr( "Unknown loop mode" ); } + } #if VDRVERSNUM >= 10307 - Skins.Message(mtInfo, s.c_str() ); - Skins.Flush(); + Skins.Message(mtInfo, s.c_str() ); + Skins.Flush(); #else - Interface->Status( s.c_str() ); - Interface->Flush(); + Interface->Status( s.c_str() ); + Interface->Flush(); #endif - } } else { @@ -1523,9 +1523,9 @@ eOSState mgPlayerControl::ProcessKey(eKeys key) } break; case kGreen: { - if( !m_visible && m_player ) + if( !m_visible && player ) { - mgPlaylist *pl = m_player->getPlaylist(); + mgPlaylist *pl = player->getPlaylist(); std::string s; switch( pl->toggleShuffleMode() ) @@ -1546,14 +1546,14 @@ eOSState mgPlayerControl::ProcessKey(eKeys key) { s = tr( "Unknown shuffle mode" ); } + } #if VDRVERSNUM >= 10307 - Skins.Message(mtInfo, s.c_str() ); - Skins.Flush(); + Skins.Message(mtInfo, s.c_str() ); + Skins.Flush(); #else - Interface->Status( s.c_str() ); - Interface->Flush(); + Interface->Status( s.c_str() ); + Interface->Flush(); #endif - } } else { @@ -1601,50 +1601,81 @@ eOSState mgPlayerControl::ProcessKey(eKeys key) void mgPlayerControl::StatusMsgReplaying() { char *szBuf=NULL; - if(m_player - && m_player->getCurrent() - && m_player->getCurrent()->isValid() - && m_player->getCurrent()->getContentType() == mgContentItem::GD_AUDIO - && m_player->getPlaylist()) + if(player + && player->getCurrent() + && player->getPlaylist()) { - /* - if(m_player->getCurrent()->getAlbum().length() > 0) - { - asprintf(&szBuf,"[%c%c] (%d/%d) %s - %s", - m_player->getPlaylist()->isLoop()?'L':'.', - m_player->getPlaylist()->isShuffle()'S':'.', - m_player->getPlaylist()->getIndex() + 1,m_player->getPlaylist()->getCount(), - m_player->getCurrent()->getTitle().c_str(), - m_player->getCurrent()->getAlbum().c_str()); - } - else */ - { - asprintf(&szBuf,"[%c%c] (%d/%d) %s", - /* TODO m_player->GetPlaylist()->isLoop()?'L':*/'.', - /* TODO m_player->GetPlaylist()->isShuffle()'S':*/'.', - m_player->getPlaylist()->getIndex() + 1,m_player->getPlaylist()->getNumItems(), - m_player->getCurrent()->getTitle().c_str()); - } - } - else - { - asprintf(&szBuf,"[muggle]"); - } - - if(szBuf - && ( m_szLastShowStatusMsg == NULL - || 0 != strcmp(szBuf,m_szLastShowStatusMsg) ) ) - { - cStatus::MsgReplaying(this,szBuf); - - if(m_szLastShowStatusMsg) + char cLoopMode; + char cShuffle; + + switch( player->getPlaylist()->getLoopMode() ) + { + default: + case mgPlaylist::LM_NONE: + cLoopMode = '.'; // Loop mode off + break; + case mgPlaylist::LM_SINGLE: + cLoopMode = 'S'; // Loop mode single + break; + case mgPlaylist::LM_FULL: + cLoopMode = 'P'; // Loop mode fuel + break; + } + + switch( player->getPlaylist()->getShuffleMode() ) { - free(m_szLastShowStatusMsg); + default: + case mgPlaylist::SM_NONE: + cShuffle = '.'; // Shuffle mode off + break; + case mgPlaylist::SM_NORMAL: + cShuffle = 'S'; // Shuffle mode normal + break; + case mgPlaylist::SM_PARTY: + cShuffle = 'P'; // Shuffle mode party + break; + } + + if(player->getCurrent()->getLabel(1).length() > 0) + { + asprintf(&szBuf,"[%c%c] (%d/%d) %s - %s", + cLoopMode, + cShuffle, + player->getPlaylist()->getIndex() + 1,player->getPlaylist()->getNumItems(), + player->getCurrent()->getLabel(1).c_str(), + player->getCurrent()->getTitle().c_str()); + } + else + { + asprintf(&szBuf,"[%c%c] (%d/%d) %s", + cLoopMode, + cShuffle, + player->getPlaylist()->getIndex() + 1,player->getPlaylist()->getNumItems(), + player->getCurrent()->getTitle().c_str()); } - m_szLastShowStatusMsg = szBuf; } else { - free(szBuf); + asprintf(&szBuf,"[muggle]"); + } + + //fprintf(stderr,"StatusMsgReplaying(%s)\n",szBuf); + if( szBuf ) + { + if( m_szLastShowStatusMsg == NULL + || 0 != strcmp(szBuf,m_szLastShowStatusMsg) ) + { + if(m_szLastShowStatusMsg) + { + free(m_szLastShowStatusMsg); + } + m_szLastShowStatusMsg = szBuf; + cStatus::MsgReplaying(this,m_szLastShowStatusMsg); + } + else + { + free(szBuf); + } } } + diff --git a/vdr_player.h b/vdr_player.h index d39d9d8..2c73771 100644 --- a/vdr_player.h +++ b/vdr_player.h @@ -40,8 +40,8 @@ class mgPlayerControl : public cControl { private: - //! \brief the reference to the player , don't rename it see cControl - mgPCMPlayer *m_player; + //! \brief the reference to the player + mgPCMPlayer *player; //! \brief indicates, whether the osd should be visible bool m_visible; diff --git a/vdr_setup.c b/vdr_setup.c index 13f44ac..afa7b85 100644 --- a/vdr_setup.c +++ b/vdr_setup.c @@ -3,11 +3,11 @@ * \brief A setup class for a VDR media plugin (muggle) * * \version $Revision: 1.3 $ - * \date $Date: 2004/07/25 21:33:35 $ + * \date $Date$ * \author Ralf Klueber, Lars von Wedel, Andreas Kellner - * \author Responsible author: $Author: lvw $ + * \author Responsible author: $Author$ * - * $Id: vdr_setup.c,v 1.3 2004/07/25 21:33:35 lvw Exp $ + * $Id$ * * Partially adapted from * MP3/MPlayer plugin to VDR (C++) |
