summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlouis <louis.braun@gmx.de>2015-04-18 18:11:44 +0200
committerlouis <louis.braun@gmx.de>2015-04-18 18:11:44 +0200
commiteb3f8f074d4130fa8ea156baa881b2d905421fe1 (patch)
treee6f2305209c60b462327eae32d163234a7d78642
parentabbdea4b76c9edcdcefe99e9868cb67fd4a30778 (diff)
downloadvdr-plugin-skindesigner-eb3f8f074d4130fa8ea156baa881b2d905421fe1.tar.gz
vdr-plugin-skindesigner-eb3f8f074d4130fa8ea156baa881b2d905421fe1.tar.bz2
fixed sort order in lastrecordings viewelement
-rw-r--r--HISTORY1
-rw-r--r--views/viewhelpers.c28
2 files changed, 26 insertions, 3 deletions
diff --git a/HISTORY b/HISTORY
index 0baf45d..98e63f4 100644
--- a/HISTORY
+++ b/HISTORY
@@ -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;