diff -Naur ../mythplugins.orig/mythvideo/mythvideo/theme-wide/video-ui.xml mythvideo/mythvideo/theme-wide/video-ui.xml
--- ../mythplugins.orig/mythvideo/mythvideo/theme-wide/video-ui.xml	2007-06-03 01:01:56.000000000 +0200
+++ mythvideo/mythvideo/theme-wide/video-ui.xml	2007-06-03 14:05:37.000000000 +0200
@@ -81,7 +81,7 @@
     </font>
 
     <container name="info">
-      <area>64,36,1152,280</area>
+      <area>264,36,1152,280</area>
       <textarea name="title" draworder="4" align="center">
         <area>0,0,1152,80</area>
         <font>leadfnt</font>
@@ -92,7 +92,7 @@
         <value>Director:</value>
       </textarea>
       <textarea name="director" draworder="4">
-        <area>170,75,647,35</area>
+        <area>140,75,647,35</area>
         <font>moviedata</font>
       </textarea>
       <textarea name="yrlbl" draworder="4" align="right">
@@ -185,8 +185,39 @@
       </image>
     </container>
 
+    <font name="dirsel_font" face="Arial">
+      <color>#33ffff</color>
+      <size>16</size>
+      <bold>yes</bold>
+    </font>
+
+    <container name="dirselector">
+      <area>0,285,190,348</area>
+      <textarea name="curdir" draworder="4">
+        <area>20,12,190,35</area>
+        <font>dirsel_font</font>
+      </textarea>
+      <listarea name="directories" draworder="4">
+        <area>20,37,190,212</area>
+        <fcnfont name="active_font" function="active"></fcnfont>
+        <fcnfont name="inactive_font" function="inactive"></fcnfont>
+        <fcnfont name="active_font" function="selected"></fcnfont>
+        <columnpadding>10</columnpadding>
+        <column number="1" width="190" context="-1"></column>
+        <items>8</items>
+        <image function="selectionbar" filename="cr-selectbar.png" location="-12,-5"></image>
+        <image function="uparrow" filename="uparrow.png" location="750,22"></image>
+        <image function="downarrow" filename="downarrow.png" location="750,195"></image>
+      </listarea>
+      <image name="dirshowinglines" draworder="5" fleximage="no">
+        <filename>cr-lines.png</filename>
+        <position>0,0</position>
+        <staticsize>190,290</staticsize>
+      </image>
+    </container>
+
     <container name="selector">
-      <area>0,336,1280,348</area>
+      <area>200,336,1280,348</area>
       <image name="showinglines" draworder="5" fleximage="no">
         <filename>cr-lines.png</filename>
         <position>0,0</position>
diff -Naur ../mythplugins.orig/mythvideo/mythvideo/videomanager.cpp mythvideo/mythvideo/videomanager.cpp
--- ../mythplugins.orig/mythvideo/mythvideo/videomanager.cpp	2007-06-03 01:01:57.000000000 +0200
+++ mythvideo/mythvideo/videomanager.cpp	2007-06-03 13:44:09.000000000 +0200
@@ -263,15 +263,24 @@
     isbusy(false)
 {
     videoDir = gContext->GetSetting("VideoStartupDir");
+    m_currentDirectory = videoDir;
+    m_currentDirname = ".";
+    m_activeList = MOVIE_LIST;
+
     artDir = gContext->GetSetting("VideoArtworkDir");
 
     VideoFilterSettings video_filter(true, "VideoManager");
+
     m_video_list->setCurrentVideoFilter(video_filter);
 
     m_list_behave.reset(new ListBehaviorManager(0,
                     ListBehaviorManager::lbScrollCenter |
                     ListBehaviorManager::lbWrapList));
     m_movie_list_behave.reset(new ListBehaviorManager);
+    
+    m_directories_list_behave.reset(new ListBehaviorManager(0,
+                    ListBehaviorManager::lbScrollCenter |
+                    ListBehaviorManager::lbWrapList));
 
     backup.reset(new QPainter);
     RefreshMovieList(false);
@@ -311,6 +320,18 @@
         }
     }
 
+    container = m_theme->GetSet("dirselector");
+    if (container)
+    {
+        UIListType *ltype = (UIListType *)container->GetType("directories");
+        if (ltype)
+        {
+            m_directories_list_behave->setWindowSize(ltype->GetItems());
+        }
+    }
+    makeDirectoriesList();
+
+
     bgTransBackup.reset(gContext->LoadScalePixmap("trans-backup.png"));
     if (!bgTransBackup.get())
         bgTransBackup.reset(new QPixmap());
@@ -344,8 +365,20 @@
             else if (m_state == SHOWING_IMDBMANUAL)
                 handleIMDBManual();
             else
-               slotEditMeta();
-            return;
+                switch (m_activeList)
+                {
+                    case MOVIE_LIST:
+                    {
+                        slotEditMeta();
+                        break;
+                    }
+                    case MOVIE_DIRLIST:
+                    {
+                        makeDirectoriesList();
+                        break;
+                    }
+                }
+                return;
         }
         else if ((action == "0" || action == "1" || action == "2" ||
                  action == "3" || action == "4" || action == "5" ||
@@ -410,7 +443,8 @@
     else
     {
         m_video_list->refreshList(false, 0, true);
-        m_list_behave->setItemCount(m_video_list->count());
+        makeVideoSublist ();
+        m_list_behave->setItemCount(m_videoIndexesList.count());
     }
     curitem = m_video_list->getVideoListMetadata(m_list_behave->getIndex());
     updateML = false;
@@ -864,6 +898,7 @@
        if (r.intersects(listRect) && noUpdate == false)
        {
            updateList(&p);
+           updateDirectoriesList (&p);
        }
        if (r.intersects(infoRect) && noUpdate == false)
        {
@@ -885,6 +920,58 @@
     }
 }
 
+void VideoManager::makeDirectoriesList()
+{
+    LayerSet *container = m_theme->GetSet("dirselector");
+    if (container)
+    {
+
+        UIListType *ltype = (UIListType *)container->GetType("directories");
+        if (ltype) {
+            QDir dir(m_currentDirectory);
+
+            if (ltype->GetCurrentItem() != -1) {
+                QString dirSelected = ltype->GetItemText(ltype->GetCurrentItem());
+                dir.cd(dirSelected);
+            }
+
+            m_currentDirectory = dir.path();
+            m_currentDirname = dir.dirName();
+
+            m_directoriesList = dir.entryList (QDir::Dirs);
+            m_directoriesList.pop_front();  // Get rid of directory  "."
+
+            if (m_currentDirectory == gContext->GetSetting("VideoStartupDir"))
+            {
+                m_currentDirname = "Videothéque";
+                m_directoriesList.pop_front(); // Get rid of directory ".."
+            }
+
+            m_directories_list_behave->setItemCount(m_directoriesList.count());
+
+            makeVideoSublist();
+            update(fullRect);
+        }
+    }
+}
+
+void VideoManager::makeVideoSublist()
+{
+    m_videoIndexesList.clear();
+    for (unsigned int i = 0; i < m_video_list->count(); i++)
+    {
+        Metadata *meta = m_video_list->getVideoListMetadata(i);
+        QString filename = meta->Filename();
+
+        QString videoname = filename.section ('/',-1);
+        QString path = filename.section ('/', 0, -2);
+        if ( path == m_currentDirectory ) {
+            m_videoIndexesList.append (i);
+        }
+    }
+    m_list_behave->setItemCount(m_videoIndexesList.count());
+}
+    
 void VideoManager::updateList(QPainter *p)
 {
     QRect pr = listRect;
@@ -901,10 +988,11 @@
             ltype->ResetList();
             ltype->SetActive(true);
 
+//tata
             const ListBehaviorManager::lb_data &lbd = m_list_behave->getData();
             for (unsigned int i = lbd.begin; i < lbd.end; ++i)
             {
-                Metadata *meta = m_video_list->getVideoListMetadata(i);
+                Metadata *meta = m_video_list->getVideoListMetadata(m_videoIndexesList[i]);
 
                 QString title = meta->Title();
                 QString filename = meta->Filename();
@@ -931,7 +1019,6 @@
             ltype->SetDownArrow(lbd.data_below_window);
             ltype->SetUpArrow(lbd.data_above_window);
         }
-
         for (int i = 0; i < 9; ++i)
         {
             container->Draw(&tmp, i, 0);
@@ -1014,6 +1101,48 @@
     p->drawPixmap(pr.topLeft(), pix);
 }
 
+void VideoManager::updateDirectoriesList (QPainter *p)
+{
+    QRect pr = dirListRect;
+    QPixmap pix(pr.size());
+    pix.fill(this, pr.topLeft());
+    QPainter tmp(&pix);
+
+    LayerSet *container = m_theme->GetSet("dirselector");
+    if (container)
+    {
+        UITextType *ttype = (UITextType *)container->GetType("curdir");
+    	UIListType *ltype = (UIListType *)container->GetType("directories");
+
+        if (ttype) checkedSetText(ttype, m_currentDirname);        
+// toto
+
+    	if (ltype) {
+            ltype->ResetList();
+            ltype->SetActive(true);
+
+            const ListBehaviorManager::lb_data &lbd = m_directories_list_behave->getData();
+            for (unsigned int i = lbd.begin; i < lbd.end; ++i)
+            {
+                    ltype->SetItemText(i - lbd.begin, 1, m_directoriesList[i]);
+            }
+            ltype->SetItemCurrent(lbd.index);
+
+            ltype->SetDownArrow(lbd.data_below_window);
+            ltype->SetUpArrow(lbd.data_above_window);
+	    }
+		
+        for (int i = 0; i < 9; ++i)
+            {
+                container->Draw(&tmp, i, 0);
+            }
+    }
+
+    tmp.end();
+
+    p->drawPixmap(pr.topLeft(), pix);
+}
+
 void VideoManager::updateInfo(QPainter *p)
 {
     QRect pr = infoRect;
@@ -1130,6 +1259,8 @@
         movieListRect = area;
     if (container_name == "enterimdb")
         imdbEnterRect = area;
+    if (container_name == "dirselector")
+        dirListRect = area;
 }
 
 void VideoManager::exitWin()
@@ -1167,15 +1298,25 @@
 
 void VideoManager::cursorLeft()
 {
+
+    /*
     if (expectingPopup)
         cancelPopup();
     else
         exitWin();
+    */
+
+    if (m_activeList == MOVIE_LIST) m_activeList = MOVIE_DIRLIST;
+
 }
 
 void VideoManager::cursorRight()
 {
+/*
     videoMenu();
+*/
+    
+    if (m_activeList == MOVIE_DIRLIST) m_activeList = MOVIE_LIST;
 }
 
 void VideoManager::cursorDown()
@@ -1184,7 +1325,15 @@
     {
         case SHOWING_MAINWINDOW:
         {
-            m_list_behave->move_down();
+            switch (m_activeList)
+            {
+                case MOVIE_LIST:
+                    m_list_behave->move_down();
+                    break;
+                case MOVIE_DIRLIST:
+                    m_directories_list_behave->move_down();
+                    break;
+            }
             break;
         }
         case SHOWING_IMDBLIST:
@@ -1207,7 +1356,7 @@
     {
         case SHOWING_MAINWINDOW:
         {
-            m_list_behave->page_down();
+            if (m_activeList == MOVIE_LIST) m_list_behave->page_down();
             break;
         }
         case SHOWING_IMDBLIST:
@@ -1230,7 +1379,19 @@
     {
         case SHOWING_MAINWINDOW:
         {
-            m_list_behave->move_up();
+            switch (m_activeList)
+            {
+                case MOVIE_LIST:
+                {
+                    m_list_behave->move_up();
+                    break;
+                }
+                case MOVIE_DIRLIST:
+                {
+                    m_directories_list_behave->move_up();
+                    break;
+                }
+            }
             update(fullRect);
             break;
         }
@@ -1254,8 +1415,10 @@
     {
         case SHOWING_MAINWINDOW:
         {
-            m_list_behave->page_up();
-            update(fullRect);
+            if (m_activeList == MOVIE_LIST) {
+                m_list_behave->page_up();
+                update(fullRect);
+            }
             break;
         }
         case SHOWING_IMDBLIST:
diff -Naur ../mythplugins.orig/mythvideo/mythvideo/videomanager.h mythvideo/mythvideo/videomanager.h
--- ../mythplugins.orig/mythvideo/mythvideo/videomanager.h	2007-06-03 01:01:57.000000000 +0200
+++ mythvideo/mythvideo/videomanager.h	2007-06-03 12:26:02.000000000 +0200
@@ -16,6 +16,11 @@
         SHOWING_IMDBLIST,
         SHOWING_IMDBMANUAL
     };
+    enum ActiveList
+    {
+        MOVIE_LIST = 0,
+        MOVIE_DIRLIST
+    };
 }
 
 class QPainter;
@@ -85,13 +90,15 @@
     void updateMovieList(QPainter *);
     void updateInfo(QPainter *);
     void updateIMDBEnter(QPainter *);
+    void updateDirectoriesList (QPainter *);
 
     void grayOut(QPainter *);
+    void makeDirectoriesList();
+    void makeVideoSublist();
 
   private:
     bool updateML;
     bool noUpdate;
-
     VideoList *m_video_list;
 
     std::auto_ptr<XMLParse> m_theme;
@@ -113,6 +120,7 @@
     QRect infoRect;
     QRect fullRect;
     QRect imdbEnterRect;
+    QRect dirListRect;
 
     QString movieNumber;
 
@@ -126,8 +134,15 @@
     bool iscopycomplete;
     bool iscopysuccess;
 
+    unsigned int m_activeList; // are selecting Video or directory
+    QString m_currentDirectory;      // Path of the current directory
+    QString m_currentDirname;  // Name of the current directory
+    QStringList m_directoriesList;  // List of directories in current directory;
+    QValueList<int> m_videoIndexesList; // List of m_video_list indexes present in current directory
+
     std::auto_ptr<ListBehaviorManager> m_list_behave;
     std::auto_ptr<ListBehaviorManager> m_movie_list_behave;
+    std::auto_ptr<ListBehaviorManager> m_directories_list_behave;
 };
 
 #endif
diff -Naur ../mythplugins.orig/mythvideo/mythvideo/video-ui.xml mythvideo/mythvideo/video-ui.xml
--- ../mythplugins.orig/mythvideo/mythvideo/video-ui.xml	2007-06-03 01:01:57.000000000 +0200
+++ mythvideo/mythvideo/video-ui.xml	2007-06-03 14:04:00.000000000 +0200
@@ -83,7 +83,7 @@
     <container name="background">
       <image name="filler" draworder="0" fleximage="yes">
         <filename>cr-background.png</filename>
-        <position>0,285</position>
+        <position>200,285</position>
         <staticsize>800,290</staticsize>
       </image>
     </container>
@@ -185,18 +185,49 @@
         <font>moviedata</font>
       </textarea>
     </container>
+
+    <font name="dirsel_font" face="Arial">
+      <color>#33ffff</color>
+      <size>16</size>
+      <bold>yes</bold>
+    </font>
+
+    <container name="dirselector">
+      <area>0,285,190,320</area>
+      <textarea name="curdir" draworder="4">
+        <area>20,12,190,35</area>
+        <font>dirsel_font</font>
+      </textarea>
+      <listarea name="directories" draworder="4">
+        <area>20,37,190,212</area>
+        <fcnfont name="active_font" function="active"></fcnfont>
+        <fcnfont name="inactive_font" function="inactive"></fcnfont>
+        <fcnfont name="active_font" function="selected"></fcnfont>
+        <columnpadding>10</columnpadding>
+        <column number="1" width="190" context="-1"></column>
+        <items>8</items>
+        <image function="selectionbar" filename="cr-selectbar.png" location="-12,-5"></image>
+        <image function="uparrow" filename="uparrow.png" location="750,22"></image>
+        <image function="downarrow" filename="downarrow.png" location="750,195"></image>
+      </listarea>
+      <image name="dirshowinglines" draworder="5" fleximage="no">
+        <filename>cr-lines.png</filename>
+        <position>0,0</position>
+        <staticsize>190,290</staticsize>
+      </image>
+    </container>
  
     <container name="selector">
-      <area>0,285,800,320</area>
+      <area>200,285,800,320</area>
       <listarea name="listing" draworder="4">
-        <area>20,12,760,242</area>
+        <area>20,12,560,242</area>
         <fcnfont name="active_font" function="active"></fcnfont>
         <fcnfont name="inactive_font" function="inactive"></fcnfont>
         <fcnfont name="active_font" function="selected"></fcnfont>
         <columnpadding>10</columnpadding>
-        <column number="1" width="400" context="-1"></column>
-        <column number="2" width="200" context="-1"></column>
-        <column number="3" width="100" context="-1"></column>
+        <column number="1" width="300" context="-1"></column>
+        <column number="2" width="150" context="-1"></column>
+        <column number="3" width="75" context="-1"></column>
         <items>8</items>
         <image function="selectionbar" filename="cr-selectbar.png" location="-12,-5"></image>
         <image function="uparrow" filename="uparrow.png" location="750,22"></image>
@@ -205,7 +236,7 @@
       <image name="showinglines" draworder="5" fleximage="no">
         <filename>cr-lines.png</filename>
         <position>0,0</position>
-        <staticsize>800,290</staticsize>
+        <staticsize>600,290</staticsize>
       </image>
       <textarea name="keyslbl_one" draworder="4" align="left">
         <area>15,275,200,30</area>
@@ -218,7 +249,7 @@
         <value></value>
       </textarea>
       <textarea name="keyslbl_three" draworder="4" align="right">
-        <area>580,275,200,30</area>
+        <area>350,275,200,30</area>
         <font>keysfont</font>
         <value>INFO - Action Menu</value>        
       </textarea>
