diff --git a/HISTORY b/HISTORY index f5e74534..872e729b 100644 --- a/HISTORY +++ b/HISTORY @@ -8170,7 +8170,7 @@ Video Disk Recorder Revision History - Fixed a superfluous call to the skin's SetRecording() function after renaming a recording (reported by Christoph Haubrich). -2014-01-26: Version 2.1.5 +2014-01-29: Version 2.1.5 - Now checking whether the primary device actually has a decoder before retuning the current channel after a change in its parameters. This fixes broken recordings on @@ -8179,3 +8179,5 @@ Video Disk Recorder Revision History of actual video TS packets in cTsPayload in order to be able to record channels that sometimes need even more than 10 TS packets for detecting frame borders (reported by Oliver Endriss). +- Fixed sorting recordings by time in the Recordings menu if "Setup/OSD/Recording + directories" is set to "no". diff --git a/menu.c b/menu.c index 1001d29e..cc5279bd 100644 --- a/menu.c +++ b/menu.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: menu.c 3.16 2014/01/25 12:40:28 kls Exp $ + * $Id: menu.c 3.17 2014/01/29 10:41:10 kls Exp $ */ #include "menu.h" @@ -3024,7 +3024,7 @@ eOSState cMenuSetupOSD::ProcessKey(eKeys Key) ModifiedAppearance = true; if (strcmp(data.FontFix, Setup.FontFix) || !DoubleEqual(data.FontFixSizeP, Setup.FontFixSizeP)) ModifiedAppearance = true; - if (data.AlwaysSortFoldersFirst != Setup.AlwaysSortFoldersFirst) + if (data.AlwaysSortFoldersFirst != Setup.AlwaysSortFoldersFirst || data.RecordingDirs != Setup.RecordingDirs) Recordings.ClearSortNames(); } diff --git a/recording.c b/recording.c index 382a8ea2..92b2e416 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 3.13 2014/01/18 12:54:56 kls Exp $ + * $Id: recording.c 3.14 2014/01/29 10:38:46 kls Exp $ */ #include "recording.h" @@ -969,14 +969,22 @@ char *cRecording::SortName(void) const { char **sb = (RecordingsSortMode == rsmName) ? &sortBufferName : &sortBufferTime; if (!*sb) { - char *s = strdup(FileName() + strlen(cVideoDirectory::Name())); - 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); - strxfrm(*sb, s, l); - free(s); + if (RecordingsSortMode == rsmTime && !Setup.RecordingDirs) { + char buf[32]; + struct tm tm_r; + strftime(buf, sizeof(buf), "%Y%m%d%H%I", localtime_r(&start, &tm_r)); + *sb = strdup(buf); + } + else { + char *s = strdup(FileName() + strlen(cVideoDirectory::Name())); + 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); + strxfrm(*sb, s, l); + free(s); + } } return *sb; }