summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlvw <lvw@e10066b5-e1e2-0310-b819-94efdf66514b>2004-10-08 06:41:32 +0000
committerlvw <lvw@e10066b5-e1e2-0310-b819-94efdf66514b>2004-10-08 06:41:32 +0000
commit58177a6fe280784452dee940bb93f17bb6329a9a (patch)
tree58f727a5c030d5ea25ce8e125e1ca08c050de331
parentd3f5764bd8de119437dbc1a44ac8a29006f82b5b (diff)
downloadvdr-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--TODO22
-rwxr-xr-xmugglei.c10
-rw-r--r--vdr_menu.c10
-rw-r--r--vdr_menu.h3
-rw-r--r--vdr_player.c43
-rw-r--r--vdr_player.h6
6 files changed, 59 insertions, 35 deletions
diff --git a/TODO b/TODO
index 6540f18..0c2ef61 100644
--- a/TODO
+++ b/TODO
@@ -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
diff --git a/mugglei.c b/mugglei.c
index 286ee89..33fa7bd 100755
--- a/mugglei.c
+++ b/mugglei.c
@@ -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;
}
}
diff --git a/vdr_menu.c b/vdr_menu.c
index 1b5c9f1..519c809 100644
--- a/vdr_menu.c
+++ b/vdr_menu.c
@@ -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) );
}
}
diff --git a/vdr_menu.h b/vdr_menu.h
index 14e16d8..41bba01 100644
--- a/vdr_menu.h
+++ b/vdr_menu.h
@@ -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 &current, 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();