summaryrefslogtreecommitdiff
path: root/mymenurecordings.c
diff options
context:
space:
mode:
authorMartin Prochnow <nordlicht@martins-kabuff.de>2006-03-13 13:43:16 +0100
committerAndreas Mair <andreas@vdr-developer.org>2006-03-13 13:43:16 +0100
commit69ab28fe3563ca25153a7bc5bfab003f6c23d9aa (patch)
tree7c0194a56f46a7bd06fd56437daffd1bff647dbe /mymenurecordings.c
parent17f89bafd559b28b5a175aa82730226dfe9f7d69 (diff)
downloadvdr-plugin-extrecmenu-69ab28fe3563ca25153a7bc5bfab003f6c23d9aa.tar.gz
vdr-plugin-extrecmenu-69ab28fe3563ca25153a7bc5bfab003f6c23d9aa.tar.bz2
Version 0.4v0.4
- add option to hide main menu entry - set tabs depending on the shown recordings details - looks more fancy and there is more space for the recording names - fixed a possible memory leak
Diffstat (limited to 'mymenurecordings.c')
-rw-r--r--mymenurecordings.c107
1 files changed, 78 insertions, 29 deletions
diff --git a/mymenurecordings.c b/mymenurecordings.c
index b29242e..573d1c9 100644
--- a/mymenurecordings.c
+++ b/mymenurecordings.c
@@ -1,3 +1,4 @@
+#include <vdr/interface.h>
#include "mymenurecordings.h"
#include "mymenusetup.h"
@@ -108,8 +109,20 @@ void myMenuRecordingsItem::IncrementCounter(bool IsNew)
}
// --- myMenuRecordings -------------------------------------------------------
-myMenuRecordings::myMenuRecordings(const char *Base,int Level):cOsdMenu(Base?Base:tr(DESCRIPTION),8,6,4)
+myMenuRecordings::myMenuRecordings(const char *Base,int Level):cOsdMenu(Base?Base:tr("Extended recordings menu"))
{
+ // set tabs
+ if(mysetup.ShowRecDate&&mysetup.ShowRecTime&&mysetup.ShowRecLength) // all details are shown
+ SetCols(8,6,4);
+ else
+ if(mysetup.ShowRecDate&&!mysetup.ShowRecTime&&mysetup.ShowRecLength) // recording time is not shown
+ SetCols(8,4);
+ else
+ if(!mysetup.ShowRecDate&&mysetup.ShowRecTime&&mysetup.ShowRecLength) // recording date is not shown
+ SetCols(6,4);
+ else // recording date and time are not shown; even if recording length should be not shown we must set two tabs because the details of the directories
+ SetCols(4,4);
+
edit=false;
level=Level;
helpkeys=-1;
@@ -117,7 +130,15 @@ myMenuRecordings::myMenuRecordings(const char *Base,int Level):cOsdMenu(Base?Bas
Recordings.StateChanged(recordingsstate);
+ Display();
Set();
+ /*
+ if(Current()<0)
+ SetCurrent(First());
+ else
+ if(myReplayControl::LastReplayed&&Open())
+ return;
+ */
Display();
SetHelpKeys();
}
@@ -127,14 +148,46 @@ myMenuRecordings::~myMenuRecordings()
free(base);
}
+void myMenuRecordings::SetHelpKeys()
+{
+ if(!HasSubMenu())
+ {
+ myMenuRecordingsItem *item=(myMenuRecordingsItem*)Get(Current());
+ int newhelpkeys=0;
+ if(item)
+ {
+ if(item->IsDirectory())
+ newhelpkeys=1;
+ else
+ {
+ newhelpkeys=2;
+ }
+ 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$Edit"),tr("Button$Info"));break;
+ }
+ }
+ helpkeys=newhelpkeys;
+ }
+ }
+}
+
void myMenuRecordings::Set(bool Refresh)
{
+// const char *currentrecording=myReplayControl::LastReplayed();
+
cThreadLock RecordingsLock(&Recordings);
Clear();
Recordings.Sort();
char *lastitemtext=NULL;
myMenuRecordingsItem *lastitem=NULL;
+ bool inlist=false;
// add first the directories
for(cRecording *recording=Recordings.First();recording;recording=Recordings.Next(recording))
{
@@ -144,7 +197,10 @@ void myMenuRecordings::Set(bool Refresh)
if(*item->Text()&&(!lastitem||strcmp(item->Text(),lastitemtext)))
{
if(item->IsDirectory())
+ {
Add(item);
+ inlist=true;
+ }
lastitem=item;
free(lastitemtext);
@@ -157,9 +213,17 @@ void myMenuRecordings::Set(bool Refresh)
{
if(lastitem->IsDirectory())
lastitem->IncrementCounter(recording->IsNew()); // counts the number of entries in a directory
+ // delete items that are not in the list
+ if(!inlist)
+ {
+ delete lastitem;
+ lastitem=NULL;
+ inlist=false;
+ }
}
}
}
+ inlist=false;
lastitem=NULL;
// and now the recordings
for(cRecording *recording=Recordings.First();recording;recording=Recordings.Next(recording))
@@ -170,47 +234,32 @@ void myMenuRecordings::Set(bool Refresh)
if(*item->Text()&&(!lastitem||strcmp(lastitemtext,item->Text())))
{
if(!item->IsDirectory())
+ {
Add(item);
+ inlist=true;
+ }
lastitem=item;
free(lastitemtext);
lastitemtext=strdup(lastitem->Text());
}
else
delete item;
- }
- }
- free(lastitemtext);
- if(Refresh)
- Display();
-}
-
-void myMenuRecordings::SetHelpKeys()
-{
- if(!HasSubMenu())
- {
- myMenuRecordingsItem *item=(myMenuRecordingsItem*)Get(Current());
- int newhelpkeys=0;
- if(item)
- {
- if(item->IsDirectory())
- newhelpkeys=1;
- else
- {
- newhelpkeys=2;
- }
- if(newhelpkeys!=helpkeys)
+
+ if(lastitem)
{
- switch(newhelpkeys)
+ // delete items that are not in the list
+ if(!inlist)
{
- 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$Edit"),tr("Button$Info"));break;
+ delete lastitem;
+ lastitem=NULL;
+ inlist=false;
}
}
- helpkeys=newhelpkeys;
}
}
+ free(lastitemtext);
+ if(Refresh)
+ Display();
}
// returns the corresponding recording to an item