Index: mythgallery/glsingleview.cpp
===================================================================
--- mythgallery/glsingleview.cpp	(revision 10200)
+++ mythgallery/glsingleview.cpp	(working copy)
@@ -42,12 +42,13 @@
 #define LOC QString("GLXDialog: ")
 #define LOC_ERR QString("GLXDialog, Error: ")
 
-GLSDialog::GLSDialog(const ThumbList& itemList, int pos, int slideShow, 
+GLSDialog::GLSDialog(const ThumbList& itemList,
+                     int pos, int slideShow, int sortOrder,
                      MythMainWindow *parent, const char *name)
     : MythDialog(parent, name)
 {
     QBoxLayout *l = new QVBoxLayout(this);
-    m_view = new GLSingleView(itemList, pos, slideShow, this);
+    m_view = new GLSingleView(itemList, pos, slideShow, sortOrder, this);
     l->addWidget(m_view);
 
     setFocusProxy(m_view);
@@ -63,8 +64,8 @@
     e->accept();
 }
 
-GLSingleView::GLSingleView(ThumbList itemList, int pos, int slideShow, 
-                           QWidget *parent)
+GLSingleView::GLSingleView(ThumbList itemList, int pos, int slideShow,
+                           int sortorder, QWidget *parent)
     : QGLWidget(parent)
 {
     m_pos      = pos;
@@ -94,7 +95,7 @@
         {
             if (recurse)
             {
-                GalleryUtil::loadDirectory(m_itemList, item->path, 
+                GalleryUtil::loadDirectory(m_itemList, item->path, sortorder,
                                            recurse, NULL, NULL);
             }
             m_itemList.remove(item);
Index: mythgallery/galleryutil.h
===================================================================
--- mythgallery/galleryutil.h	(revision 10200)
+++ mythgallery/galleryutil.h	(working copy)
@@ -31,8 +31,8 @@
 
     static QString getCaption(const QString &filePath);
 
-    static bool loadDirectory(ThumbList& itemList,
-                              const QString& dir, bool recurse,
+    static bool loadDirectory(ThumbList& itemList, const QString& dir,
+                              int sortorder, bool recurse,
                               ThumbDict *itemDict, ThumbGenerator* thumbGen);
 
     static bool CopyMove(const QFileInfo &src, QFileInfo &dst, bool move)
Index: mythgallery/glsingleview.h
===================================================================
--- mythgallery/glsingleview.h	(revision 10200)
+++ mythgallery/glsingleview.h	(working copy)
@@ -37,7 +37,8 @@
 {
 public:
     
-    GLSDialog(const ThumbList& itemList, int pos, int slideShow, 
+    GLSDialog(const ThumbList& itemList,
+              int pos, int slideShow, int sortOrder,
               MythMainWindow *parent, const char *name=0);
 
 protected:
@@ -55,7 +56,8 @@
 
 public:
 
-    GLSingleView(ThumbList itemList, int pos, int slideShow, QWidget *parent);
+    GLSingleView(ThumbList itemList, int pos, int slideShow, int sordorder,
+                 QWidget *parent);
     ~GLSingleView();
 
     void cleanUp();
Index: mythgallery/singleview.cpp
===================================================================
--- mythgallery/singleview.cpp	(revision 10200)
+++ mythgallery/singleview.cpp	(working copy)
@@ -35,7 +35,7 @@
 #include "galleryutil.h"
 
 SingleView::SingleView(ThumbList itemList, int pos, int slideShow,
-                       MythMainWindow *parent, const char *name )
+                       int sortorder, MythMainWindow *parent, const char *name)
     : MythDialog(parent, name)
 {
     m_itemList  = itemList;
@@ -53,7 +53,8 @@
         ThumbItem* next = m_itemList.next();
         if (item->isDir) {
             if (recurse)
-                GalleryUtil::loadDirectory(m_itemList, item->path, recurse, NULL, NULL);
+                GalleryUtil::loadDirectory(m_itemList, item->path, sortorder,
+                                           recurse, NULL, NULL);
             m_itemList.remove(item);
         }
         item = next;
Index: mythgallery/gallerysettings.cpp
===================================================================
--- mythgallery/gallerysettings.cpp	(revision 10200)
+++ mythgallery/gallerysettings.cpp	(working copy)
@@ -30,6 +30,19 @@
     return gc;
 };
 
+static HostComboBox *MythGallerySortOrder()
+{
+    HostComboBox *gc = new HostComboBox("GallerySortOrder");
+    gc->setLabel(QObject::tr("Sort order when browsing"));
+    gc->addSelection("Name (A-Z alpha)", QString::number(QDir::Name | QDir::DirsFirst | QDir::IgnoreCase));
+    gc->addSelection("Reverse Name (Z-A alpha)", QString::number(QDir::Name | QDir::DirsFirst | QDir::IgnoreCase | QDir::Reversed));
+    gc->addSelection("Mod Time (earliest first)", QString::number(QDir::Time | QDir::DirsFirst | QDir::IgnoreCase | QDir::Reversed));
+    gc->addSelection("Reverse Mod Time (most recent first)", QString::number(QDir::Time | QDir::DirsFirst | QDir::IgnoreCase));
+    gc->setHelpText(QObject::tr("This is the sort order for the displayed "
+                    "picture thumbnails."));
+    return gc;
+};
+
 static HostLineEdit *MythGalleryMoviePlayerCmd()
 {
     HostLineEdit *gc = new HostLineEdit("GalleryMoviePlayerCmd");
@@ -161,6 +174,7 @@
 
         addChild(MythGalleryDir());
         addChild(MythGalleryThumbnailLocation());
+        addChild(MythGallerySortOrder());
         addChild(MythGalleryImportDirs());
         addChild(MythGalleryMoviePlayerCmd());
 
Index: mythgallery/singleview.h
===================================================================
--- mythgallery/singleview.h	(revision 10200)
+++ mythgallery/singleview.h	(working copy)
@@ -32,7 +32,7 @@
     
 public:
 
-    SingleView(ThumbList itemList, int pos, int slideShow, 
+    SingleView(ThumbList itemList, int pos, int slideShow, int sortorder,
                MythMainWindow *parent, const char *name=0);
     ~SingleView();
 
Index: mythgallery/iconview.cpp
===================================================================
--- mythgallery/iconview.cpp	(revision 10200)
+++ mythgallery/iconview.cpp	(working copy)
@@ -91,12 +91,12 @@
     return false;
 }
 
-IconView::IconView(const QString& galleryDir, MythMediaDevice *initialDevice,
-                   MythMainWindow* parent, const char* name )
-    : MythDialog(parent, name)
+IconView::IconView(const QString &galleryDir, MythMediaDevice *initialDevice,
+                   const int sortorder, MythMainWindow *parent,
+                   const char *name)
+    : MythDialog(parent, name),
+      m_galleryDir(galleryDir), m_sortorder(sortorder)
 {
-    m_galleryDir = galleryDir;    
-
     m_inMenu     = false;
     m_inSubMenu  = false;
     m_itemList.setAutoDelete(true);
@@ -531,7 +531,8 @@
 
                         if (QGLFormat::hasOpenGL())
                         {
-                            GLSDialog gv(m_itemList, pos, slideShow,
+                            GLSDialog gv(m_itemList, pos,
+                                         slideShow, m_sortorder,
                                          gContext->GetMainWindow());
                             gv.exec();
                         }
@@ -546,7 +547,7 @@
                     else 
 #endif
                     {
-                        SingleView sv(m_itemList, pos, slideShow,
+                        SingleView sv(m_itemList, pos, slideShow, m_sortorder,
                                       gContext->GetMainWindow());
                         sv.exec();
                     }                         
@@ -874,7 +875,8 @@
     m_lastRow = 0;
     m_lastCol = 0;
 
-    m_isGallery = GalleryUtil::loadDirectory(m_itemList, dir, false, &m_itemDict, m_thumbGen);;
+    m_isGallery = GalleryUtil::loadDirectory(m_itemList, dir, m_sortorder,
+                                             false, &m_itemDict, m_thumbGen);
     m_lastRow = QMAX((int)ceilf((float)m_itemList.count()/(float)m_nCols)-1,0);
     m_lastCol = QMAX(m_itemList.count()-m_lastRow*m_nCols-1,0);
 
@@ -1182,7 +1184,8 @@
     int useOpenGL = gContext->GetNumSetting("SlideshowUseOpenGL");
     if (useOpenGL) {
         if (QGLFormat::hasOpenGL()) {
-            GLSDialog gv(m_itemList, pos, 1, gContext->GetMainWindow());
+            GLSDialog gv(m_itemList, pos, 1, m_sortorder,
+                         gContext->GetMainWindow());
             gv.exec();
         }
         else {
@@ -1194,7 +1197,8 @@
     else 
 #endif
     {
-        SingleView sv(m_itemList, pos, 1, gContext->GetMainWindow());
+        SingleView sv(m_itemList, pos, 1, m_sortorder,
+                      gContext->GetMainWindow());
         sv.exec();
     }                         
 }
@@ -1213,7 +1217,8 @@
     int useOpenGL = gContext->GetNumSetting("SlideshowUseOpenGL");
     if (useOpenGL) {
         if (QGLFormat::hasOpenGL()) {
-            GLSDialog gv(m_itemList, pos, 2, gContext->GetMainWindow());
+            GLSDialog gv(m_itemList, pos, 2, m_sortorder,
+                         gContext->GetMainWindow());
             gv.exec();
         }
         else {
@@ -1225,7 +1230,8 @@
     else 
 #endif
     {
-        SingleView sv(m_itemList, pos, 2, gContext->GetMainWindow());
+        SingleView sv(m_itemList, pos, 2, m_sortorder,
+                      gContext->GetMainWindow());
         sv.exec();
     }                         
 }
@@ -1451,7 +1457,7 @@
         return;
 
     d.setNameFilter(MEDIA_FILENAMES);
-    d.setSorting(QDir::Name | QDir::DirsFirst | QDir::IgnoreCase);
+    d.setSorting(m_sortorder);
     d.setFilter(QDir::Files | QDir::Dirs | QDir::NoSymLinks  | QDir::Readable);
     d.setMatchAllDirs(true);
     const QFileInfoList *list = d.entryInfoList();
Index: mythgallery/main.cpp
===================================================================
--- mythgallery/main.cpp	(revision 10200)
+++ mythgallery/main.cpp	(working copy)
@@ -25,6 +25,7 @@
 void runGallery(void)
 {
     gContext->addCurrentLocation("mythgallery");
+    int sortorder = gContext->GetNumSetting("GallerySortOrder");
     QString startdir = gContext->GetSetting("GalleryDir");
     QDir dir(startdir);
     if (!dir.exists() || !dir.isReadable()) {
@@ -36,7 +37,8 @@
     }
     else
     {
-        IconView icv(startdir, NULL, gContext->GetMainWindow(), "IconView");
+        IconView icv(startdir, NULL, sortorder,
+                     gContext->GetMainWindow(), "IconView");
         icv.exec();
     }
     gContext->removeCurrentLocation();
@@ -44,6 +46,7 @@
 
 void handleMedia(MythMediaDevice *dev)
 {
+    int sortorder = gContext->GetNumSetting("GallerySortOrder");
     QString galleryDir = gContext->GetSetting("GalleryDir");
     QDir dir(galleryDir);
     if (!dir.exists() || !dir.isReadable())
@@ -56,7 +59,8 @@
     }
     else
     {
-        IconView icv(galleryDir, dev, gContext->GetMainWindow(), "IconView");
+        IconView icv(galleryDir, dev, sortorder,
+                     gContext->GetMainWindow(), "IconView");
         icv.exec();
     }
 }
Index: mythgallery/iconview.h
===================================================================
--- mythgallery/iconview.h	(revision 10200)
+++ mythgallery/iconview.h	(working copy)
@@ -65,8 +65,8 @@
 {
     Q_OBJECT
   public:
-    IconView(const QString& galleryDir, MythMediaDevice *initialDevice,
-             MythMainWindow* parent, const char* name = 0);
+    IconView(const QString &galleryDir, MythMediaDevice *initialDevice,
+             int sortorder, MythMainWindow *parent, const char *name = 0);
     ~IconView();
 
   protected:
@@ -122,6 +122,7 @@
     QDict<ThumbItem>    m_itemDict;
     QStringList         m_itemMarked;
     QString             m_galleryDir;
+    int                 m_sortorder;
 
     XMLParse           *m_theme;
     QRect               m_menuRect;
Index: mythgallery/galleryutil.cpp
===================================================================
--- mythgallery/galleryutil.cpp	(revision 10200)
+++ mythgallery/galleryutil.cpp	(working copy)
@@ -137,8 +137,8 @@
     return rotateAngle;
 }
 
-bool GalleryUtil::loadDirectory(ThumbList& itemList,
-                                const QString& dir, bool recurse,
+bool GalleryUtil::loadDirectory(ThumbList& itemList, const QString& dir,
+                                int sortorder, bool recurse,
                                 ThumbDict *itemDict, ThumbGenerator* thumbGen)
 {
     QString blah = dir;
@@ -157,7 +157,7 @@
         thumbGen->getThumbcacheDir(currDir);
 
     d.setNameFilter(MEDIA_FILENAMES);
-    d.setSorting(QDir::Name | QDir::DirsFirst | QDir::IgnoreCase);
+    d.setSorting(sortorder);
 
     d.setMatchAllDirs(true);
     const QFileInfoList *list = d.entryInfoList();
@@ -188,9 +188,9 @@
 
         if (fi->isDir() && recurse) 
         {
-            GalleryUtil::loadDirectory(itemList,
-                                       QDir::cleanDirPath(fi->absFilePath()), true,
-                                       itemDict, thumbGen);
+            GalleryUtil::loadDirectory(
+                itemList, QDir::cleanDirPath(fi->absFilePath()),
+                sortorder, true, itemDict, thumbGen);
         }
         else 
         {
