diff --git a/CONTRIBUTORS b/CONTRIBUTORS index c2733fca..2fb49f6e 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -2412,6 +2412,8 @@ Christoph Haubrich for suggesting to replace "Schnitt" with "Bearbeitung" in the German OSD texts for reporting a superfluous call to the skin's SetRecording() function after renaming a recording + for suggesting to add a function to remove the name of a recording and replace it + with the last element of the recording's folder path name Pekka Mauno for fixing cSchedule::GetFollowingEvent() in case there is currently no present diff --git a/HISTORY b/HISTORY index 03373e67..4647a618 100644 --- a/HISTORY +++ b/HISTORY @@ -8487,3 +8487,7 @@ Video Disk Recorder Revision History - Added "NORDIG" to the list of "DVB/Standard compliance" options and using it to restrict the LCN (Logical Channel Numbers) parsing to networks that actually use this non-standard feature (thanks to Rolf Ahrenberg). +- In the "Edit recording" menu the '0' key can now be used on the "Name:" field to + remove the name of the recording and replace it with the last element of the + recording's folder path name (suggested by Christoph Haubrich). See MANUAL, section + "Managing folders" for details. diff --git a/MANUAL b/MANUAL index b2c0f1eb..a229fee2 100644 --- a/MANUAL +++ b/MANUAL @@ -540,8 +540,16 @@ Version 2.0 the selected recording (if there are any and the recording is not currently being cut). To directly edit the folder or name of the recording, position the cursor to the respective line and press the Right key to start editing (press - Ok to confirm the edit, or Back to return to the previous value). Once you are - finished with editing the recording properties, press Ok to confirm the changes. + Ok to confirm the edit, or Back to return to the previous value). If you want + to remove the name of the recording and make the folder name the actual + recording's name, you can position the cursor to the "Name:" field and press + the '0' key. This will take the last element of the recording's folder path + and make it the actual name of the recording. You can do this in turn until + the recording is moved all the way up to the root of the video directory. + Note that, in case you inadvertently pressed the '0' key, you can leave the + "Edit recording" menu with the "Back" key and any changes you have made so far + will not be applied. Once you are finished with editing the recording + properties, press Ok to confirm the changes. * Parameters in the "Setup" menu diff --git a/menu.c b/menu.c index 9c94152c..dd95ae61 100644 --- a/menu.c +++ b/menu.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: menu.c 3.39 2015/02/04 09:13:54 kls Exp $ + * $Id: menu.c 3.40 2015/02/04 09:21:55 kls Exp $ */ #include "menu.h" @@ -2260,6 +2260,7 @@ private: int priority; int lifetime; cMenuEditStrItem *folderItem; + cMenuEditStrItem *nameItem; const char *buttonFolder; const char *buttonAction; const char *buttonDeleteMarks; @@ -2272,6 +2273,7 @@ private: eOSState SetFolder(void); eOSState Folder(void); eOSState Action(void); + eOSState RemoveName(void); eOSState DeleteMarks(void); eOSState ApplyChanges(void); public: @@ -2291,6 +2293,7 @@ cMenuRecordingEdit::cMenuRecordingEdit(cRecording *Recording) priority = recording->Priority(); lifetime = recording->Lifetime(); folderItem = NULL; + nameItem = NULL; buttonFolder = NULL; buttonAction = NULL; buttonDeleteMarks = NULL; @@ -2308,7 +2311,7 @@ void cMenuRecordingEdit::Set(void) cOsdItem *p; Add(p = folderItem = new cMenuEditStrItem(tr("Folder"), folder, sizeof(folder))); p->SetSelectable(!recordingIsInUse); - Add(p = new cMenuEditStrItem(tr("Name"), name, sizeof(name))); + Add(p = nameItem = new cMenuEditStrItem(tr("Name"), name, sizeof(name))); p->SetSelectable(!recordingIsInUse); Add(p = new cMenuEditIntItem(tr("Priority"), &priority, 0, MAXPRIORITY)); p->SetSelectable(!recordingIsInUse); @@ -2387,6 +2390,22 @@ eOSState cMenuRecordingEdit::Action(void) return osContinue; } +eOSState cMenuRecordingEdit::RemoveName(void) +{ + if (Get(Current()) == nameItem) { + char *s = strrchr(folder, FOLDERDELIMCHAR); + if (s) + *s++ = 0; + else + s = folder; + strn0cpy(name, s, sizeof(name)); + if (s == folder) + *s = 0; + Set(); + } + return osContinue; +} + eOSState cMenuRecordingEdit::DeleteMarks(void) { if (buttonDeleteMarks && Interface->Confirm(tr("Delete editing marks for this recording?"))) { @@ -2435,6 +2454,7 @@ eOSState cMenuRecordingEdit::ProcessKey(eKeys Key) eOSState state = cOsdMenu::ProcessKey(Key); if (state == osUnknown) { switch (Key) { + case k0: return RemoveName(); case kRed: return buttonFolder ? Folder() : osContinue; case kGreen: return buttonAction ? Action() : osContinue; case kYellow: return buttonDeleteMarks ? DeleteMarks() : osContinue;