diff options
author | Martin Prochnow <nordlicht@martins-kabuff.de> | 2006-03-09 15:01:38 +0100 |
---|---|---|
committer | Andreas Mair <andreas@vdr-developer.org> | 2006-03-09 15:01:38 +0100 |
commit | 93372f4ecc69a079c0e5c5af9169f39222983667 (patch) | |
tree | f341ea604e6fd1a8e175ee78a70cab88a6006623 /mymenurenamerecording.c | |
download | vdr-plugin-extrecmenu-93372f4ecc69a079c0e5c5af9169f39222983667.tar.gz vdr-plugin-extrecmenu-93372f4ecc69a079c0e5c5af9169f39222983667.tar.bz2 |
Version 0.1 (Initial revision).v0.1
Diffstat (limited to 'mymenurenamerecording.c')
-rw-r--r-- | mymenurenamerecording.c | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/mymenurenamerecording.c b/mymenurenamerecording.c new file mode 100644 index 0000000..492a3c6 --- /dev/null +++ b/mymenurenamerecording.c @@ -0,0 +1,72 @@ +#include "extrecmenu.h" + +myMenuRenameRecording::myMenuRenameRecording(cRecording *Recording,myMenuRecordings *MenuRecordings):cOsdMenu(tr("Rename recording"),12) +{ + recording=Recording; + menurecordings=MenuRecordings; + + char *p=strrchr(recording->Name(),'~'); + if(p) + { + strn0cpy(name,++p,sizeof(name)); + strn0cpy(path,recording->Name(),sizeof(path)); + + p=strrchr(path,'~'); + if(p) + *p=0; + } + else + { + strn0cpy(name,recording->Name(),sizeof(name)); + strn0cpy(path,"",sizeof(path)); + } + Add(new cMenuEditStrItem(tr("Name"),name,sizeof(name),tr(FileNameChars))); +} + +eOSState myMenuRenameRecording::ProcessKey(eKeys Key) +{ + eOSState state=cOsdMenu::ProcessKey(Key); + if(state==osUnknown) + { + if(Key==kOk) + { + int result; + char *buffer; + char *newFileName; + + if(strlen(path)) + asprintf(&buffer,"%s~%s",path,name); + else + asprintf(&buffer,"%s",name); + + asprintf(&newFileName,"%s/%s/%s",VideoDirectory,ExchangeChars(buffer,true),strrchr(recording->FileName(),'/')+1); + + result=MakeDirs(newFileName,true); + if(result) + { + result=RenameVideoFile(recording->FileName(),newFileName); + if(result) + { + // update recordings list + Recordings.Update(true); + // update menu + menurecordings->Set(); + return osBack; + } + else + { + Skins.Message(mtError,tr("Error while accessing recording!")); + state=osContinue; + } + } + else + { + Skins.Message(mtError,tr("Error while accessing recording!")); + state=osContinue; + } + free(buffer); + free(newFileName); + } + } + return state; +} |