commit 225fd592ed6d91658ce7eaff4552c20a9f72ef18
Author: Mark Spieth <mspieth@digivation.com.au>
Date:   Tue Dec 29 12:44:33 2009 +1100

    input pref recording attribute will test by input group if available

diff --git a/mythplugins/mythweb/modules/tv/includes/schedule_utils.php b/mythplugins/mythweb/modules/tv/includes/schedule_utils.php
index dca9ea2..dc3becb 100644
--- a/mythplugins/mythweb/modules/tv/includes/schedule_utils.php
+++ b/mythplugins/mythweb/modules/tv/includes/schedule_utils.php
@@ -22,6 +22,16 @@
     // Gather the data
         if (empty($inputs)) {
             global $db;
+            $sh = $db->query('SELECT DISTINCT (inputgroupid + 1000),
+                                     IF(LENGTH(IFNULL(inputgroupname,"")) > 0,
+                                        inputgroupname,
+                                        CONCAT("Group ", inputgroupid)
+                                       ) AS name
+                                FROM inputgroup
+                            ORDER BY inputgroupid');
+            while (list($id, $name) = $sh->fetch_row()) {
+                $inputs[$id] = $name;
+            }
             $sh = $db->query('SELECT cardinputid,
                                      IF(LENGTH(IFNULL(displayname,"")) > 0,
                                         displayname,
diff --git a/mythtv/programs/mythbackend/scheduler.cpp b/mythtv/programs/mythbackend/scheduler.cpp
index 7a998cd..f44fb23 100644
--- a/mythtv/programs/mythbackend/scheduler.cpp
+++ b/mythtv/programs/mythbackend/scheduler.cpp
@@ -2933,7 +2933,7 @@ void Scheduler::AddNewRecords(void)
 
     if (prefinputpri)
         pwrpri += QString(" + "
-        "(cardinput.cardinputid = RECTABLE.prefinput) * %1").arg(prefinputpri);
+        "(cardinput.cardinputid = RECTABLE.prefinput OR (inputgroup.inputgroupid + 1000) = RECTABLE.prefinput) * %1").arg(prefinputpri);
 
     if (hdtvpriority)
         pwrpri += QString(" + (program.hdtv > 0 OR "
@@ -3163,6 +3163,7 @@ void Scheduler::AddNewRecords(void)
 "program.previouslyshown, RECTABLE.recgroup, RECTABLE.dupmethod, "
 "channel.commmethod, capturecard.cardid, "
 "cardinput.cardinputid, UPPER(cardinput.shareable) = 'Y' AS shareable, "
+"inputgroup.inputgroupid, "
 "program.seriesid, program.programid, program.category_type, "
 "program.airdate, program.stars, program.originalairdate, RECTABLE.inactive, "
 "RECTABLE.parentid, ") + progfindid + ", RECTABLE.playgroup, "
@@ -3177,6 +3178,7 @@ void Scheduler::AddNewRecords(void)
 "                        recordmatch.manualid = program.manualid) "
 " INNER JOIN channel ON (channel.chanid = program.chanid) "
 " INNER JOIN cardinput ON (channel.sourceid = cardinput.sourceid) "
+" INNER JOIN inputgroup ON (channel.sourceid = cardinput.sourceid) "
 " INNER JOIN capturecard ON (capturecard.cardid = cardinput.cardid) "
 " LEFT JOIN oldrecorded as oldrecstatus ON "
 "  ( oldrecstatus.station = channel.callsign AND "
diff --git a/mythtv/programs/mythfrontend/scheduleeditor.cpp b/mythtv/programs/mythfrontend/scheduleeditor.cpp
index 3d6ed1b..c11388a 100644
--- a/mythtv/programs/mythfrontend/scheduleeditor.cpp
+++ b/mythtv/programs/mythfrontend/scheduleeditor.cpp
@@ -515,6 +515,21 @@ void SchedOptEditor::Load()
     new MythUIButtonListItem(m_inputList, tr("Use any available input"),
                              qVariantFromValue(0));
 
+    query.prepare("SELECT DISTINCT inputgroupid, inputgroupname FROM inputgroup ORDER BY inputgroupid");
+
+    if (query.exec())
+    {
+        while (query.next())
+        {
+            QString group_name = query.value(1).toString();
+            if (group_name.isEmpty())
+                group_name = QString("%1").arg(query.value(0).toInt());
+            new MythUIButtonListItem(m_inputList, tr("Prefer group %1")
+                                        .arg(group_name), query.value(0).toInt() + 1000);
+        }
+    }
+
+
     query.prepare("SELECT cardinputid, cardid, inputname, displayname "
                   "FROM cardinput ORDER BY cardinputid");
 
