diff options
Diffstat (limited to 'media_player.c')
-rw-r--r-- | media_player.c | 120 |
1 files changed, 116 insertions, 4 deletions
diff --git a/media_player.c b/media_player.c index ec3cd75a..3658a8a6 100644 --- a/media_player.c +++ b/media_player.c @@ -4,7 +4,7 @@ * See the main source file '.c' for copyright information and * how to reach the author. * - * $Id: media_player.c,v 1.2 2006-06-04 05:45:37 phintuka Exp $ + * $Id: media_player.c,v 1.3 2006-07-21 22:49:34 phintuka Exp $ * */ @@ -133,6 +133,8 @@ cXinelibPlayerControl::cXinelibPlayerControl(const char *File) : if(NULL != (pt=strrchr(m_File,'.'))) *pt = 0; + /*#warning If File is directory, play all files ! (album of mp3s etc.)*/ + #if VDRVERSNUM < 10338 cStatus::MsgReplaying(this, m_File); #else @@ -232,8 +234,6 @@ eOSState cXinelibPlayerControl::ProcessKey(eKeys Key) case kRed: r = cXinelibDevice::Instance().PlayFileCtrl("SEEK 0"); break; case kGreen: r = cXinelibDevice::Instance().PlayFileCtrl("SEEK -60"); break; case kYellow: r = cXinelibDevice::Instance().PlayFileCtrl("SEEK +60"); break; - //case k1: r = cXinelibDevice::Instance().PlayFileCtrl("SEEK -600"); break; - //case k4: r = cXinelibDevice::Instance().PlayFileCtrl("SEEK +600"); break; case k1: case kUser8: r = cXinelibDevice::Instance().PlayFileCtrl("SEEK -20"); break; case k3: @@ -254,7 +254,6 @@ eOSState cXinelibPlayerControl::ProcessKey(eKeys Key) break; } // fall thru - /*case kUp:*/ case kPlay: r = cXinelibDevice::Instance().PlayFileCtrl("TRICKSPEED 1"); m_Speed = 1; if(m_ShowModeOnly && m_DisplayReplay) @@ -287,6 +286,119 @@ eOSState cXinelibPlayerControl::ProcessKey(eKeys Key) } // +// cXinelibDvdPlayerControl +// + +class cDvdMenu : public cOsdMenu { + public: + cDvdMenu(void) : cOsdMenu("DVD Menu") + { + Add(new cOsdItem("Exit DVD menu", osUser1)); + Add(new cOsdItem("DVD Root menu", osUser2)); + Add(new cOsdItem("DVD Title menu", osUser3)); + Add(new cOsdItem("DVD SPU menu", osUser4)); + Add(new cOsdItem("DVD Audio menu", osUser5)); + Add(new cOsdItem("Close menu", osEnd)); + Display(); + } +}; + +cXinelibDvdPlayerControl::~cXinelibDvdPlayerControl() +{ + if(Menu) { + delete Menu; + Menu = NULL; + } +} + +void cXinelibDvdPlayerControl::Hide(void) +{ + if(Menu) { + delete Menu; + Menu = NULL; + } + cXinelibPlayerControl::Hide(); +} + +void cXinelibDvdPlayerControl::Show(void) +{ + if(!Menu) + cXinelibPlayerControl::Show(); + else + cXinelibPlayerControl::Hide(); +} + +eOSState cXinelibDvdPlayerControl::ProcessKey(eKeys Key) +{ + if (cXinelibDevice::Instance().EndOfStreamReached()) { + Hide(); + return osEnd; + } + + if(Menu) { + switch(Menu->ProcessKey(Key)) { + case osUser1: Hide(); cXinelibDevice::Instance().PlayFileCtrl("EVENT XINE_EVENT_INPUT_MENU1"); break; + case osUser2: Hide(); cXinelibDevice::Instance().PlayFileCtrl("EVENT XINE_EVENT_INPUT_MENU2"); break; + case osUser3: Hide(); cXinelibDevice::Instance().PlayFileCtrl("EVENT XINE_EVENT_INPUT_MENU3"); break; + case osUser4: Hide(); cXinelibDevice::Instance().PlayFileCtrl("EVENT XINE_EVENT_INPUT_MENU4"); break; + case osUser5: Hide(); cXinelibDevice::Instance().PlayFileCtrl("EVENT XINE_EVENT_INPUT_MENU5"); break; + case osBack: + case osEnd: Hide(); break; + default: break; + } + return osContinue; + } + + if (m_DisplayReplay) + Show(); + + int r; + switch(Key) { + // DVD navigation + case kUp: r = cXinelibDevice::Instance().PlayFileCtrl("EVENT XINE_EVENT_INPUT_UP"); break; + case kDown: r = cXinelibDevice::Instance().PlayFileCtrl("EVENT XINE_EVENT_INPUT_DOWN"); break; + case kLeft: r = cXinelibDevice::Instance().PlayFileCtrl("EVENT XINE_EVENT_INPUT_LEFT"); break; + case kRight: r = cXinelibDevice::Instance().PlayFileCtrl("EVENT XINE_EVENT_INPUT_RIGHT"); break; + case kOk: r = cXinelibDevice::Instance().PlayFileCtrl("EVENT XINE_EVENT_INPUT_SELECT"); break; + case kBack: r = cXinelibDevice::Instance().PlayFileCtrl("EVENT XINE_EVENT_INPUT_MENU1"); break; + case kRed: Hide(); + Menu = new cDvdMenu(); + break; + // Playback control + case kGreen: r = cXinelibDevice::Instance().PlayFileCtrl("SEEK -60"); break; + case kYellow: r = cXinelibDevice::Instance().PlayFileCtrl("SEEK +60"); break; + case kStop: + case kBlue: Hide(); + Close(); + return osEnd; + case kNext: cXinelibDevice::Instance().PlayFileCtrl("EVENT XINE_EVENT_INPUT_NEXT"); break; + case kPrev: cXinelibDevice::Instance().PlayFileCtrl("EVENT XINE_EVENT_INPUT_PREVIOUS"); break; + case kInfo: if(m_DisplayReplay) { + Hide(); + } else { + m_ShowModeOnly = false; + Show(); + } + break; + case kPause: if(m_Speed != 0) { + r = cXinelibDevice::Instance().PlayFileCtrl("TRICKSPEED 0"); + m_ShowModeOnly = false; + m_Speed = 0; + Show(); + break; + } + // fall thru + case kPlay: r = cXinelibDevice::Instance().PlayFileCtrl("TRICKSPEED 1"); + m_Speed = 1; + Hide(); + break; + default: break; + } + + return osContinue; +} + +// // cXinelibImagePlayer // |