Index: programs/mythfrontend/playbackbox.cpp
===================================================================
--- programs/mythfrontend/playbackbox.cpp.orig
+++ programs/mythfrontend/playbackbox.cpp
@@ -434,10 +434,11 @@ PlaybackBox::~PlaybackBox(void)
 bool PlaybackBox::Create()
 {
     if (!LoadWindowFromXML("recordings-ui.xml", "watchrecordings", this))
         return false;
 
+    m_recgroupList  = dynamic_cast<MythUIButtonList *> (GetChild("recgroups"));
     m_groupList     = dynamic_cast<MythUIButtonList *> (GetChild("groups"));
     m_recordingList = dynamic_cast<MythUIButtonList *> (GetChild("recordings"));
 
     m_noRecordingsText = dynamic_cast<MythUIText *> (GetChild("norecordings"));
 
@@ -450,10 +451,13 @@ bool PlaybackBox::Create()
     {
         VERBOSE(VB_IMPORTANT, "Theme is missing critical theme elements.");
         return false;
     }
 
+    if (m_recgroupList)
+        m_recgroupList->SetCanTakeFocus(false);
+
     connect(m_groupList, SIGNAL(itemSelected(MythUIButtonListItem*)),
             SLOT(updateRecList(MythUIButtonListItem*)));
     connect(m_groupList, SIGNAL(itemClicked(MythUIButtonListItem*)),
             SLOT(SwitchList()));
     connect(m_recordingList, SIGNAL(itemSelected(MythUIButtonListItem*)),
@@ -897,10 +901,44 @@ void PlaybackBox::updateUsage()
         usedProgress->SetTotal(m_freeSpaceTotal);
         usedProgress->SetUsed(m_freeSpaceUsed);
     }
 }
 
+/*
+ * \fn PlaybackBox::updateRecGroupList(void)
+ * \brief called when the list of recording groups may have changed
+ */
+void PlaybackBox::updateRecGroupList(void)
+{
+    if (m_recGroupIdx < 0 || !m_recgroupList)
+        return;
+
+    m_recgroupList->Reset();
+
+    QStringList::iterator it;
+    int idx;
+    MythUIButtonListItem *item = NULL;
+    QString name;
+    QString state;
+
+    for (it = m_recGroups.begin(), idx = 0;
+         it != m_recGroups.end(); ++it, ++idx)
+    {
+        name = (*it).simplified();
+        if (name == "All Programs")
+            name = "All";
+
+        item = new MythUIButtonListItem(m_recgroupList, "",
+                                        qVariantFromValue(name.toLower()));
+
+        if (idx == m_recGroupIdx)
+            m_recgroupList->SetItemCurrent(item);
+
+        item->SetText(name);
+    }
+}
+
 void PlaybackBox::updateGroupList()
 {
     m_groupList->Reset();
 
     if (!m_titleList.isEmpty())
@@ -1165,10 +1203,12 @@ bool PlaybackBox::FillList(bool useCache
     m_progsInDB = 0;
     m_titleList.clear();
     m_progLists.clear();
     m_recordingList->Reset();
     m_groupList->Reset();
+    if (m_recgroupList)
+        m_recgroupList->Reset();
     // Clear autoDelete for the "all" list since it will share the
     // objects with the title lists.
     m_progLists[""] = ProgramList(false);
     m_progLists[""].setAutoDelete(false);
 
@@ -1627,10 +1667,11 @@ bool PlaybackBox::FillList(bool useCache
             if (m_recGroupIdx < 0)
                 m_recGroupIdx = 0;
         }
     }
 
+    updateRecGroupList();
     updateGroupList();
     updateUsage();
 
     if (m_currentItem)
     {
Index: programs/mythfrontend/playbackbox.h
===================================================================
--- programs/mythfrontend/playbackbox.h.orig
+++ programs/mythfrontend/playbackbox.h
@@ -312,10 +312,11 @@ class PlaybackBox : public ScheduleCommo
     bool loadArtwork(QString artworkFile, MythUIImage *image, QTimer *timer,
                      int delay = 500, bool resetImage = false);
     QString findArtworkFile(QString &seriesID, QString &titleIn,
                             QString imagetype, QString host);
 
+    void updateRecGroupList();
     void updateGroupList();
     void updateIcons(const ProgramInfo *pginfo = NULL);
     void updateUsage();
     void updateGroupInfo(const QString &groupname, const QString &grouplabel);
     void UpdateProgramInfo(MythUIButtonListItem *item, bool is_sel,
@@ -325,10 +326,11 @@ class PlaybackBox : public ScheduleCommo
 
     void HandlePreviewEvent(const ProgramInfo &evinfo);
 
     void ShowMenu(void);
 
+    MythUIButtonList *m_recgroupList;
     MythUIButtonList *m_groupList;
     MythUIButtonList *m_recordingList;
 
     MythUIText *m_noRecordingsText;
 
