summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Maass <mase@mase1.setho.org>2013-10-27 11:39:43 +0100
committerThomas Maass <mase@mase1.setho.org>2013-10-27 11:39:43 +0100
commit694b75b5d9e6c8b910d219a9de110885e8f7e3e1 (patch)
tree3bdab82ace12daca6a78da79d57b98eccc5bb7c3
parentc231c8176e65a9ac13b7205779b95db5f465721e (diff)
downloadvdr-plugin-hddarchive-694b75b5d9e6c8b910d219a9de110885e8f7e3e1.tar.gz
vdr-plugin-hddarchive-694b75b5d9e6c8b910d219a9de110885e8f7e3e1.tar.bz2
Replaced helper key play with commands.
Replaced helper key rewind with delete. Updated README.
-rw-r--r--README2
-rw-r--r--mymenu.c102
-rw-r--r--mymenu.h3
3 files changed, 82 insertions, 25 deletions
diff --git a/README b/README
index 80b7abf..eb4c5d8 100644
--- a/README
+++ b/README
@@ -15,7 +15,7 @@ See the file COPYING for more information.
Requirements
-- VDR version >= 2.1.2
+- VDR version >= 2.0.0
- Optional patch to integrate into VDRs original recmenu
diff --git a/mymenu.c b/mymenu.c
index 4e4bc0f..1309ba3 100644
--- a/mymenu.c
+++ b/mymenu.c
@@ -43,20 +43,14 @@ void cMyMenuRecordings::SetHelpKeys(void)
if (ri) {
if (ri->IsDirectory())
NewHelpKeys = 1;
- else {
+ else
NewHelpKeys = 2;
- if (ri->Recording()->Info()->Title())
- NewHelpKeys = 3;
- }
}
if (NewHelpKeys != helpKeys) {
switch (NewHelpKeys) {
- case 0: SetHelp(NULL);
- break;
- case 1: SetHelp(tr("Button$Open"));
- break;
- case 2:
- case 3: SetHelp(tr("Button$Play"), tr("Button$Rewind"), tr("Button$Archive"), NewHelpKeys == 3 ? tr("Button$Info") : NULL);
+ case 0: SetHelp(NULL); break;
+ case 1: SetHelp(tr("Button$Open"), NULL, NULL, tr("Button$Edit")); break;
+ case 2: SetHelp(RecordingCommands.Count() ? tr("Commands") : tr("Button$Play"), tr("Button$Archive"), tr("Button$Delete"), tr("Button$Info"));
default: ;
}
helpKeys = NewHelpKeys;
@@ -186,25 +180,71 @@ eOSState cMyMenuRecordings::Play(const cRecording *Recording, bool IsPluginRepla
return osContinue;
}
-eOSState cMyMenuRecordings::Rewind(void)
+eOSState cMyMenuRecordings::Archive(void)
+{
+ return osContinue;
+}
+
+eOSState cMyMenuRecordings::Delete(void)
{
if (HasSubMenu() || Count() == 0)
return osContinue;
cMyMenuRecordingItem *ri = (cMyMenuRecordingItem *)Get(Current());
+ const char *archiveId = cArchive::GetArchiveId(ri->Recording());
+ if (strcmp(archiveId, "")) {
+ Skins.Message(mtError, tr("Cannot delete archived recording!"));
+ return osContinue;
+ }
if (ri && !ri->IsDirectory()) {
- cDevice::PrimaryDevice()->StopReplay(); // must do this first to be able to rewind the currently replayed recording
- cResumeFile ResumeFile(ri->Recording()->FileName(), ri->Recording()->IsPesRecording());
- ResumeFile.Delete();
- return Play();
+ if (Interface->Confirm(tr("Delete recording?"))) {
+ cRecordControl *rc = cRecordControls::GetRecordControl(ri->Recording()->FileName());
+ if (rc) {
+ if (Interface->Confirm(tr("Timer still recording - really delete?"))) {
+ cTimer *timer = rc->Timer();
+ if (timer) {
+ timer->Skip();
+ cRecordControls::Process(time(NULL));
+ if (timer->IsSingleEvent()) {
+ isyslog("deleting timer %s", *timer->ToDescr());
+ Timers.Del(timer);
+ }
+ Timers.SetModified();
+ }
+ }
+ else
+ return osContinue;
+ }
+ cRecording *recording = ri->Recording();
+ cString FileName = recording->FileName();
+ if (RecordingsHandler.GetUsage(FileName)) {
+ if (Interface->Confirm(tr("Recording is being edited - really delete?"))) {
+ RecordingsHandler.Del(FileName);
+ recording = Recordings.GetByName(FileName); // RecordingsHandler.Del() might have deleted it if it was the edited version
+ // we continue with the code below even if recording is NULL,
+ // in order to have the menu updated etc.
+ }
+ else
+ return osContinue;
+ }
+ if (cReplayControl::NowReplaying() && strcmp(cReplayControl::NowReplaying(), FileName) == 0)
+ cControl::Shutdown();
+ if (!recording || recording->Delete()) {
+ cReplayControl::ClearLastReplayed(FileName);
+ Recordings.DelByName(FileName);
+ cOsdMenu::Del(Current());
+ SetHelpKeys();
+ cVideoDiskUsage::ForceCheck();
+ Display();
+ if (!Count())
+ return osBack;
+ }
+ else
+ Skins.Message(mtError, tr("Error while deleting recording!"));
+ }
}
return osContinue;
}
-eOSState cMyMenuRecordings::Archive(void)
-{
- return osContinue;
-}
-
eOSState cMyMenuRecordings::Info(void)
{
if (HasSubMenu() || Count() == 0)
@@ -218,6 +258,21 @@ eOSState cMyMenuRecordings::Info(void)
return osContinue;
}
+eOSState cMyMenuRecordings::Commands(eKeys Key)
+{
+ if (HasSubMenu() || Count() == 0)
+ return osContinue;
+ cMyMenuRecordingItem *ri = (cMyMenuRecordingItem *)Get(Current());
+ if (ri && !ri->IsDirectory()) {
+ cMenuCommands *menu;
+ eOSState state = AddSubMenu(menu = new cMenuCommands(tr("Recording commands"), &RecordingCommands, cString::sprintf("\"%s\"", *strescape(ri->Recording()->FileName(), "\\\"$"))));
+ if (Key != kNone)
+ state = menu->ProcessKey(Key);
+ return state;
+ }
+ return osContinue;
+}
+
eOSState cMyMenuRecordings::Sort(void)
{
if (HasSubMenu())
@@ -236,12 +291,13 @@ eOSState cMyMenuRecordings::ProcessKey(eKeys Key)
case kPlayPause:
case kPlay:
case kOk:
+ return Play();
case kRed:
- return Play();
+ return (helpKeys > 1 && RecordingCommands.Count()) ? Commands() : Play();
case kGreen:
- return Rewind();
- case kYellow:
return Archive();
+ case kYellow:
+ return Delete();
case kInfo:
case kBlue:
return Info();
diff --git a/mymenu.h b/mymenu.h
index 8fc67a5..a58d07a 100644
--- a/mymenu.h
+++ b/mymenu.h
@@ -34,9 +34,10 @@ class cMyMenuRecordings : public cOsdMenu {
bool Open(bool OpenSubMenus = false);
bool Prepare(const cRecording *Recording);
eOSState Play(void);
- eOSState Rewind(void);
eOSState Archive(void);
+ eOSState Delete(void);
eOSState Info(void);
+ eOSState Commands(eKeys Key = kNone);
eOSState Sort(void);
public:
cMyMenuRecordings(const char *Base = NULL, int Level = 0, bool OpenSubMenus = false, bool Show = true);