]> git.vomp.tv Git - vompclient-marten.git/commitdiff
Sort recordings from VDR 1.3, patch from Dave
authorChris Tallon <chris@vomp.tv>
Sat, 21 Jan 2006 14:33:37 +0000 (14:33 +0000)
committerChris Tallon <chris@vomp.tv>
Sat, 21 Jan 2006 14:33:37 +0000 (14:33 +0000)
recording.cc
recording.h
vdr.cc
vdr.h

index 016ef5acc68fbc9243a173f4f3585603c592a627..2b28d543fc62dfe7848c567f3ef403e26d38720a 100644 (file)
@@ -58,7 +58,7 @@ char* Recording::getDirName()
   return dirName;
 }
 
-char* Recording::getProgName()
+char* Recording::getProgName() const
 {
   return progName;
 }
index 57e0701e7233dfd6afc85d4ea5d837e8ca36b50d..0d65eda37e2f51ae9d9018b6eb9ba84e9ecb79d1 100644 (file)
@@ -34,7 +34,7 @@ class Recording
 
     int isInDir();
     char* getDirName();
-    char* getProgName();
+    char* getProgName() const;
 
     unsigned long start;
     char* fileName;
diff --git a/vdr.cc b/vdr.cc
index f5bd94830ae7e657d6ab2cb57c813668d67cb7bb..7d7a550572078b16e92764a193cc41eb2c33d16b 100644 (file)
--- a/vdr.cc
+++ b/vdr.cc
@@ -359,6 +359,8 @@ Directory* VDR::getRecordingsList()
   freePacket();
   pthread_mutex_unlock(&mutex);
 
+  sort(recDir->recList.begin(), recDir->recList.end(), RecordingSorter());
+
   return recDir;
 }
 
diff --git a/vdr.h b/vdr.h
index 9111d2c2cdd5ce15c33f99540500793bc8abcfa9..22ae2c16c7570a78482305de1040474b3058fd6b 100644 (file)
--- a/vdr.h
+++ b/vdr.h
@@ -45,6 +45,12 @@ typedef vector<Event*> EventList;
 typedef vector<Channel*> ChannelList;
 typedef vector<RecTimer*> RecTimerList;
 
+struct VDRServer
+{
+  char* ip;
+  char* name;
+};
+
 struct RecTimerSorter     // : public binary_function<double, double, bool>
 {
   bool operator() (const RecTimer* a, const RecTimer* b)
@@ -53,21 +59,27 @@ struct RecTimerSorter     // : public binary_function<double, double, bool>
   }
 };
 
-struct VDRServer
-{
-  char* ip;
-  char* name;
-};
-
 struct ServerSorter
 {
-  bool operator() (const VDRServer a, const VDRServer b)
+  bool operator() (const VDRServer& a, const VDRServer& b)
   {
     if (strcmp(b.name, a.name) > 0) return true;
     return false;
   }
 };
 
+struct RecordingSorter
+{
+  bool operator() (const Recording* a, const Recording* b)
+  {
+    int c = strcmp(b->getProgName(), a->getProgName());
+    if (c > 0) return true;
+    if (c < 0) return false;
+
+    return a->start < b->start;
+  }
+};
+
 class VDR
 {