diff options
Diffstat (limited to 'mymenurecordinginfo.c')
-rw-r--r-- | mymenurecordinginfo.c | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/mymenurecordinginfo.c b/mymenurecordinginfo.c new file mode 100644 index 0000000..298a943 --- /dev/null +++ b/mymenurecordinginfo.c @@ -0,0 +1,72 @@ +#include "myreplaycontrol.h" + +myMenuRecordingInfo::myMenuRecordingInfo(const cRecording *Recording,bool WithButtons):cOsdMenu(tr("Recording info")) +{ + recording=Recording; + withButtons=WithButtons; + if(withButtons) + SetHelp(tr("Button$Play"),tr("Button$Rewind")); +} + +void myMenuRecordingInfo::Display(void) +{ + cOsdMenu::Display(); + DisplayMenu()->SetRecording(recording); + cStatus::MsgOsdTextItem(recording->Info()->Description()); +} + +eOSState myMenuRecordingInfo::Play() +{ + if(recording) + { + myReplayControl::SetRecording(recording->FileName(),recording->Title()); + cControl::Shutdown(); // stop running playbacks + cControl::Launch(new myReplayControl); // start playback + return osEnd; // close plugin + } + return osContinue; +} + +eOSState myMenuRecordingInfo::Rewind() +{ + if(recording) + { + cDevice::PrimaryDevice()->StopReplay(); + cResumeFile ResumeFile(recording->FileName()); + ResumeFile.Delete(); + return Play(); + } + return osContinue; +} + +eOSState myMenuRecordingInfo::ProcessKey(eKeys Key) +{ + switch (Key) + { + case kUp|k_Repeat: + case kUp: + case kDown|k_Repeat: + case kDown: + case kLeft|k_Repeat: + case kLeft: + case kRight|k_Repeat: + case kRight: DisplayMenu()->Scroll(NORMALKEY(Key)==kUp||NORMALKEY(Key)==kLeft,NORMALKEY(Key)==kLeft||NORMALKEY(Key)==kRight); + cStatus::MsgOsdTextItem(NULL,NORMALKEY(Key)==kUp); + return osContinue; + default: break; + } + + eOSState state=cOsdMenu::ProcessKey(Key); + + if(state==osUnknown) + { + switch (Key) + { + case kRed: return Play(); + case kGreen: return Rewind(); + case kOk: return osBack; + default: break; + } + } + return state; +} |