diff -u ../vdr-1.3.37/menu.c ./menu.c
--- ../vdr-1.3.37/menu.c	2005-11-05 18:29:22.000000000 +0100
+++ ./menu.c	2005-12-26 00:32:16.000000000 +0100
@@ -1779,7 +1779,14 @@
        case kGreen:  return Rewind();
        case kYellow: return Delete();
        case kBlue:   return Info();
-       case k1...k9: return Commands(Key);
+       case k0:      DirOrderState = !DirOrderState ; //kw
+                     Set(true); // kw
+                     Skins.Message(mtStatus, //kw
+                        DirOrderState ? "alphabetisch sortiert" : "chronologisch" //kw
+                     );
+                     return osContinue;     //kw 
+                     
+       case k1...k9: return Commands(Key); //kw
        case kNone:   if (Recordings.StateChanged(recordingsState))
                         Set(true);
                      break;
diff -u ../vdr-1.3.37/recording.c ./recording.c
--- ../vdr-1.3.37/recording.c	2005-11-04 15:19:44.000000000 +0100
+++ ./recording.c	2005-12-26 00:34:50.000000000 +0100
@@ -59,6 +59,7 @@
 #define MAX_SUBTITLE_LENGTH  40
 
 bool VfatFileSystem = false;
+bool DirOrderState = false; //kw
 
 static cRecordings DeletedRecordings(true);
 
@@ -599,7 +600,10 @@
 int cRecording::Compare(const cListObject &ListObject) const
 {
   cRecording *r = (cRecording *)&ListObject;
-  return strcasecmp(SortName(), r->SortName());
+  if (!DirOrderState) //kw
+    return strcasecmp(SortName(), r->SortName());
+  return strcasecmp(FileName(), r->FileName()) ; //kw
+  
 }
 
 const char *cRecording::FileName(void) const
diff -u ../vdr-1.3.37/recording.h ./recording.h
--- ../vdr-1.3.37/recording.h	2005-10-31 13:27:12.000000000 +0100
+++ ./recording.h	2005-12-26 00:36:39.000000000 +0100
@@ -19,6 +19,7 @@
 #include "tools.h"
 
 extern bool VfatFileSystem;
+extern bool DirOrderState; //kw 
 
 void RemoveDeletedRecordings(void);
 void AssertFreeDiskSpace(int Priority = 0);
