From db8cf38b5b39a611ca35bebb8d657167a4573b20 Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Mon, 4 Mar 2013 14:11:47 +0100 Subject: Implemented the setup option "OSD/Always sort folders first" --- recording.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) (limited to 'recording.c') diff --git a/recording.c b/recording.c index ede7c1b9..032175dd 100644 --- a/recording.c +++ b/recording.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: recording.c 2.89 2013/03/03 10:54:05 kls Exp $ + * $Id: recording.c 2.90 2013/03/04 14:02:40 kls Exp $ */ #include "recording.h" @@ -943,7 +943,9 @@ char *cRecording::SortName(void) const { char **sb = (RecordingsSortMode == rsmName) ? &sortBufferName : &sortBufferTime; if (!*sb) { - char *s = StripEpisodeName(strdup(FileName() + strlen(VideoDirectory)), RecordingsSortMode != rsmName); + char *s = strdup(FileName() + strlen(VideoDirectory)); + if (RecordingsSortMode != rsmName || Setup.AlwaysSortFoldersFirst) + s = StripEpisodeName(s, RecordingsSortMode != rsmName); strreplace(s, '/', '0'); // some locales ignore '/' when sorting int l = strxfrm(NULL, s, 0) + 1; *sb = MALLOC(char, l); @@ -953,6 +955,12 @@ char *cRecording::SortName(void) const return *sb; } +void cRecording::ClearSortName(void) +{ + DELETENULL(sortBufferName); + DELETENULL(sortBufferTime); +} + int cRecording::GetResume(void) const { if (resume == RESUME_NOT_INITIALIZED) { @@ -1422,6 +1430,13 @@ void cRecordings::ResetResume(const char *ResumeFileName) ChangeState(); } +void cRecordings::ClearSortNames(void) +{ + LOCK_THREAD; + for (cRecording *recording = First(); recording; recording = Next(recording)) + recording->ClearSortName(); +} + // --- cMark ----------------------------------------------------------------- double MarkFramesPerSecond = DEFAULTFRAMESPERSECOND; -- cgit v1.2.3