Index: programs/mythfrontend/playbackbox.cpp
===================================================================
--- programs/mythfrontend/playbackbox.cpp	(revision 13077)
+++ programs/mythfrontend/playbackbox.cpp	(working copy)
@@ -227,6 +227,7 @@
       recGroup("All Programs"),
       recGroupPassword(""),             curGroupPassword(""),
       watchGroup(" " + tr("Watch List")),
+      livetvGroup(" " + tr("Live TV")),
       viewMask(VIEW_TITLES),
       // Theme parsing
       theme(new XMLParse()),
@@ -1586,97 +1587,105 @@
             progsInDB++;
             p = *i;
             if ((((p->recgroup == recGroup) ||
-                  ((recGroup == "All Programs") &&
-                   (p->recgroup != "LiveTV" || LiveTVInAllPrograms))) &&
+                  (recGroup == "All Programs")) &&
                  (recGroupPassword == curGroupPassword)) ||
                 ((recGroupType[recGroup] == "category") &&
                  (p->category == recGroup ) &&
                  ( !recGroupPwCache.contains(p->recgroup))))
             {
-                if (viewMask != VIEW_NONE)
-                    progLists[""].prepend(p);
-
-                asKey = p->MakeUniqueKey();
-                if (asCache.contains(asKey))
-                    p->availableStatus = asCache[asKey];
-                else
-                    p->availableStatus = asAvailable;
-
-                if ((viewMask & VIEW_TITLES)) // Show titles
+                if (p->recgroup != "LiveTV" || LiveTVInAllPrograms)
                 {
-                    sTitle = sortTitle(p->title, viewMask, titleSort,
-                            p->recpriority);
-                    sTitle = sTitle.lower();
+                    if (viewMask != VIEW_NONE)
+                        progLists[""].prepend(p);
 
-                    if (!sortedList.contains(sTitle))
-                        sortedList[sTitle] = p->title;
-                    progLists[sortedList[sTitle]].prepend(p);
-                    progLists[sortedList[sTitle]].setAutoDelete(false);
-                } 
+                    asKey = p->MakeUniqueKey();
+                    if (asCache.contains(asKey))
+                        p->availableStatus = asCache[asKey];
+                    else
+                        p->availableStatus = asAvailable;
 
-                if ((viewMask & VIEW_RECGROUPS) &&
-                    p->recgroup != "") // Show recording groups
-                {
-                    sortedList[p->recgroup.lower()] = p->recgroup;
-                    progLists[p->recgroup].prepend(p);
-                    progLists[p->recgroup].setAutoDelete(false);
-                }
+                    if ((viewMask & VIEW_TITLES)) // Show titles
+                    {
+                        sTitle = sortTitle(p->title, viewMask, titleSort,
+                                p->recpriority);
+                        sTitle = sTitle.lower();
 
-                if ((viewMask & VIEW_CATEGORIES) &&
-                    p->category != "") // Show categories
-                {
-                    sortedList[p->category.lower()] = p->category;
-                    progLists[p->category].prepend(p);
-                    progLists[p->category].setAutoDelete(false);
-                }
+                        if (!sortedList.contains(sTitle))
+                            sortedList[sTitle] = p->title;
+                        progLists[sortedList[sTitle]].prepend(p);
+                        progLists[sortedList[sTitle]].setAutoDelete(false);
+                    }
 
-                if ((viewMask & VIEW_SEARCHES) &&
-                    searchRule[p->recordid] != "" &&
-                    p->title != searchRule[p->recordid]) // Show search rules
-                {
-                    QString tmpTitle = QString("(%1)")
-                                               .arg(searchRule[p->recordid]);
-                    sortedList[tmpTitle] = tmpTitle;
-                    progLists[tmpTitle].prepend(p);
-                    progLists[tmpTitle].setAutoDelete(false);
-                }
+                    if ((viewMask & VIEW_RECGROUPS) &&
+                        p->recgroup != "") // Show recording groups
+                    {
+                        sortedList[p->recgroup.lower()] = p->recgroup;
+                        progLists[p->recgroup].prepend(p);
+                        progLists[p->recgroup].setAutoDelete(false);
+                    }
 
-                if ((viewMask & VIEW_WATCHLIST))
-                {
-                    if (watchListAutoExpire && !p->GetAutoExpireFromRecorded())
+                    if ((viewMask & VIEW_CATEGORIES) &&
+                        p->category != "") // Show categories
                     {
-                        p->recpriority2 = wlExpireOff;
-                        VERBOSE(VB_FILE, QString("Auto-expire off:  %1")
-                                                 .arg(p->title));
+                        sortedList[p->category.lower()] = p->category;
+                        progLists[p->category].prepend(p);
+                        progLists[p->category].setAutoDelete(false);
                     }
-                    else if (p->programflags & FL_WATCHED)
+
+                    if ((viewMask & VIEW_SEARCHES) &&
+                        searchRule[p->recordid] != "" &&
+                        p->title != searchRule[p->recordid]) // Show search rules
                     {
-                        p->recpriority2 = wlWatched;
-                        VERBOSE(VB_FILE, QString("Marked as 'watched':  %1")
-                                                 .arg(p->title));
+                        QString tmpTitle = QString("(%1)")
+                                                .arg(searchRule[p->recordid]);
+                        sortedList[tmpTitle] = tmpTitle;
+                        progLists[tmpTitle].prepend(p);
+                        progLists[tmpTitle].setAutoDelete(false);
                     }
-                    else
+
+                    if ((viewMask & VIEW_WATCHLIST))
                     {
-                        if (p->recordid > 0)
-                            recidEpisodes[p->recordid] += 1;
-                        if (recidEpisodes[p->recordid] == 1 ||
-                            p->recordid == 0 )
+                        if (watchListAutoExpire && !p->GetAutoExpireFromRecorded())
                         {
-                            sortedList[watchGroup] = watchGroup;
-                            progLists[watchGroup].prepend(p);
-                            progLists[watchGroup].setAutoDelete(false);
+                            p->recpriority2 = wlExpireOff;
+                            VERBOSE(VB_FILE, QString("Auto-expire off:  %1")
+                                                    .arg(p->title));
                         }
+                        else if (p->programflags & FL_WATCHED)
+                        {
+                            p->recpriority2 = wlWatched;
+                            VERBOSE(VB_FILE, QString("Marked as 'watched':  %1")
+                                                    .arg(p->title));
+                        }
                         else
                         {
-                            p->recpriority2 = wlEarlier;
-                            VERBOSE(VB_FILE, QString("Not the earliest:  %1")
-                                                     .arg(p->title));
+                            if (p->recordid > 0)
+                                recidEpisodes[p->recordid] += 1;
+                            if (recidEpisodes[p->recordid] == 1 ||
+                                p->recordid == 0 )
+                            {
+                                sortedList[watchGroup] = watchGroup;
+                                progLists[watchGroup].prepend(p);
+                                progLists[watchGroup].setAutoDelete(false);
+                            }
+                            else
+                            {
+                                p->recpriority2 = wlEarlier;
+                                VERBOSE(VB_FILE, QString("Not the earliest:  %1")
+                                                        .arg(p->title));
+                            }
                         }
                     }
+                    else
+                    {
+                        watchListStart = 0;
+                    }
                 }
-                else
+                if ((viewMask & VIEW_LIVETV) && p->recgroup == "LiveTV") // Show LiveTV group
                 {
-                    watchListStart = 0;
+                    sortedList[livetvGroup] = livetvGroup;
+                    progLists[livetvGroup].prepend(p);
+                    progLists[livetvGroup].setAutoDelete(false);
                 }
             }
         }
@@ -4422,6 +4431,12 @@
             SLOT(toggleSearchView(bool)));
     recGroupPopup->addWidget(checkBox, false);
 
+    checkBox = new MythCheckBox(tr("Show Live TV Group"), recGroupPopup);
+    checkBox->setChecked(viewMask & VIEW_LIVETV);
+    connect(checkBox, SIGNAL(toggled(bool)), this,
+            SLOT(toggleLiveTVView(bool)));
+    recGroupPopup->addWidget(checkBox, false);
+
     MythPushButton *okbutton = new MythPushButton(recGroupPopup);
     okbutton->setText(tr("Save Current View"));
     recGroupPopup->addWidget(okbutton);
Index: programs/mythfrontend/playbackbox.h
===================================================================
--- programs/mythfrontend/playbackbox.h	(revision 13077)
+++ programs/mythfrontend/playbackbox.h	(working copy)
@@ -70,6 +70,7 @@
         VIEW_RECGROUPS  =  0x04,
         VIEW_WATCHLIST  =  0x08,
         VIEW_SEARCHES   =  0x10,
+        VIEW_LIVETV     =  0x20,
     } ViewMask;
 
     typedef enum
@@ -177,6 +178,7 @@
     void toggleRecGroupView(bool setOn)  { toggleView(VIEW_RECGROUPS, setOn); }
     void toggleWatchListView(bool setOn) { toggleView(VIEW_WATCHLIST, setOn); }
     void toggleSearchView(bool setOn)    { toggleView(VIEW_SEARCHES, setOn); }
+    void toggleLiveTVView(bool setOn)    { toggleView(VIEW_LIVETV, setOn); }
 
     void exitWin();
 
@@ -343,6 +345,7 @@
     QString             recGroupPassword;
     QString             curGroupPassword;
     QString             watchGroup;
+    QString             livetvGroup;
     ViewMask            viewMask;
 
     // Theme parsing variables
