summaryrefslogtreecommitdiff
path: root/tools.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools.c')
-rw-r--r--tools.c65
1 files changed, 65 insertions, 0 deletions
diff --git a/tools.c b/tools.c
index d685571..6c52a63 100644
--- a/tools.c
+++ b/tools.c
@@ -1,6 +1,14 @@
+/*
+ * See the README file for copyright information and how to reach the author.
+ *
+ * The code for sort recordings as adopted from the SortRecordings-patch
+ * copyright by FrankJepsen and FRank99 from vdr-portal.de
+ */
+
#include <vdr/videodir.h>
#include <vdr/recording.h>
#include "tools.h"
+#include "mymenusetup.h"
bool MoveVideoFile(cRecording *Recording,char *NewName)
{
@@ -23,3 +31,60 @@ bool MoveVideoFile(cRecording *Recording,char *NewName)
isyslog("[extrecmenu] moving failed");
return false;
}
+
+// --- myRecListItem ----------------------------------------------------------
+myRecListItem::myRecListItem(cRecording *Recording)
+{
+ recording=Recording;
+ filename=recording->FileName();
+ sortbuffer=NULL;
+}
+
+myRecListItem::~myRecListItem()
+{
+ free(sortbuffer);
+}
+
+char *myRecListItem::StripEpisodeName(char *s)
+{
+ char *t=s,*s1=NULL,*s2=NULL;
+ while(*t)
+ {
+ if(*t=='/')
+ {
+ if(s1)
+ {
+ if(s2)
+ s1=s2;
+ s2=t;
+ }
+ else
+ s1=t;
+ }
+ t++;
+ }
+ *s1=255;
+ if(s1&&s2&&(s1==s&&(mysetup.SortRecords&1)||s1!=s&&(mysetup.SortRecords==3||mysetup.SortRecords!=2&&!strchr(".-$ª·",*(s1-1)))))
+ memmove(s1+1,s2,t-s2+1);
+ return s;
+}
+
+char *myRecListItem::SortName()const
+{
+ if(!sortbuffer)
+ {
+ char *s=StripEpisodeName(strdup(filename+strlen(VideoDirectory)));
+ strreplace(s,'/','a');
+ int l=strxfrm(NULL,s,0)+1;
+ sortbuffer=MALLOC(char,l);
+ strxfrm(sortbuffer,s,l);
+ free(s);
+ }
+ return sortbuffer;
+}
+
+int myRecListItem::Compare(const cListObject &ListObject)const
+{
+ myRecListItem *item=(myRecListItem*)&ListObject;
+ return strcasecmp(SortName(),item->SortName());
+}