diff options
author | louis <louis.braun@gmx.de> | 2015-04-18 18:11:44 +0200 |
---|---|---|
committer | louis <louis.braun@gmx.de> | 2015-04-18 18:11:44 +0200 |
commit | eb3f8f074d4130fa8ea156baa881b2d905421fe1 (patch) | |
tree | e6f2305209c60b462327eae32d163234a7d78642 | |
parent | abbdea4b76c9edcdcefe99e9868cb67fd4a30778 (diff) | |
download | vdr-plugin-skindesigner-eb3f8f074d4130fa8ea156baa881b2d905421fe1.tar.gz vdr-plugin-skindesigner-eb3f8f074d4130fa8ea156baa881b2d905421fe1.tar.bz2 |
fixed sort order in lastrecordings viewelement
-rw-r--r-- | HISTORY | 1 | ||||
-rw-r--r-- | views/viewhelpers.c | 28 |
2 files changed, 26 insertions, 3 deletions
@@ -298,4 +298,5 @@ Version 0.4.3 - added strequal, strnotequal, strcontains, strnotcontains functions to compare strings in conditions +- fixed sort order in lastrecordings viewelement diff --git a/views/viewhelpers.c b/views/viewhelpers.c index 67216ad..294ac22 100644 --- a/views/viewhelpers.c +++ b/views/viewhelpers.c @@ -1,5 +1,6 @@ #include <fstream> #include <iostream> +#include <list> #include <vdr/menu.h> #include <vdr/videodir.h> #include <sys/sysinfo.h> @@ -624,10 +625,31 @@ void cViewHelpers::SetTimers(map<string,int> *intTokens, map<string,string> *str } void cViewHelpers::SetLastRecordings(map<string,int> *intTokens, map<string,string> *stringTokens, vector<map<string,string> > *lastRecordings) { - RecordingsSortMode = rsmTime; - Recordings.Sort(); + + list<cRecording*> orderedRecs; + + for (cRecording *recording = Recordings.First(); recording; recording = Recordings.Next(recording)) { + if (orderedRecs.size() == 0) { + orderedRecs.push_back(recording); + continue; + } + bool inserted = false; + for (list<cRecording*>::iterator it = orderedRecs.begin(); it != orderedRecs.end(); it++) { + const cRecording *orderedRec = *it; + if (recording->Start() >= orderedRec->Start()) { + orderedRecs.insert(it, recording); + inserted = true; + break; + } + } + if (!inserted) { + orderedRecs.push_back(recording); + } + } + int found = 0; - for (cRecording *recording = Recordings.Last(); recording; recording = Recordings.Prev(recording)) { + for (list<cRecording*>::iterator it = orderedRecs.begin(); it != orderedRecs.end(); it++) { + const cRecording *recording = *it; #if APIVERSNUM >= 20101 if (recording->IsInUse()) { continue; |