Index: i18n/mythfrontend_de.ts
===================================================================
--- i18n/mythfrontend_de.ts	(Revision 18950)
+++ i18n/mythfrontend_de.ts	(Arbeitskopie)
@@ -7370,6 +7370,19 @@
         <translation>es war markiert als &quot;Niemals aufnehmen&quot;.</translation>
     </message>
     <message>
+        <source>A</source>
+        <comment>RecStatusChar rsNotAllowed</comment>
+        <translation>A</translation>
+    </message>
+    <message>
+        <source>Not Allowed</source>
+        <translation>Nicht erlaubt</translation>
+    </message>
+    <message>
+        <source>this recording is not allowed on this channel.</source>
+        <translation>diese Aufnahme ist auf diesem Kanal nicht erlaubt.</translation>
+    </message>
+    <message>
         <source>Channel Separator</source>
         <translation type="obsolete">Trennzeichen für Sender (bei ATSC)</translation>
     </message>
Index: libs/libmythtv/programinfo.h
===================================================================
--- libs/libmythtv/programinfo.h	(Revision 18950)
+++ libs/libmythtv/programinfo.h	(Arbeitskopie)
@@ -129,7 +129,8 @@
     rsInactive = 10,
     rsNeverRecord = 11,
     rsOffLine = 12,
-    rsOtherShowing = 13
+    rsOtherShowing = 13,
+    rsNotAllowed = 14
 };
 
 enum AvailableStatusType {
Index: libs/libmythtv/programinfo.cpp
===================================================================
--- libs/libmythtv/programinfo.cpp	(Revision 18950)
+++ libs/libmythtv/programinfo.cpp	(Arbeitskopie)
@@ -3298,6 +3298,8 @@
         return QObject::tr("F", "RecStatusChar rsOffLine");
     case rsOtherShowing:
         return QObject::tr("O", "RecStatusChar rsOtherShowing");
+    case rsNotAllowed:
+        return QObject::tr("A", "RecStatusChar rsNotAllowed");
     default:
         return "-";
     }
@@ -3358,6 +3360,8 @@
             return QObject::tr("Recorder Off-Line");
         case rsOtherShowing:
             return QObject::tr("Other Showing");
+        case rsNotAllowed:
+            return QObject::tr("Not Allowed");
         default:
             return QObject::tr("Unknown");
         }
@@ -3471,6 +3475,9 @@
             message += QObject::tr("this episode will be recorded on a "
                                    "different channel in this time slot.");
             break;
+        case rsNotAllowed:
+            message += QObject::tr("this recording is not allowed on this channel.");
+            break;            
         default:
             message += QObject::tr("you should never see this.");
             break;
@@ -4591,6 +4598,7 @@
              recstatus == rsEarlierShowing ||
              recstatus == rsOtherShowing ||
              recstatus == rsNeverRecord ||
+             recstatus == rsNotAllowed ||
              recstatus == rsRepeat ||
              recstatus == rsInactive ||
              recstatus == rsLaterShowing))
@@ -4610,6 +4618,7 @@
                 recstatus != rsPreviousRecording &&
                 recstatus != rsCurrentRecording &&
                 recstatus != rsNeverRecord &&
+                recstatus != rsNotAllowed &&
                 recstatus != rsNotListed)
             {
                 if (recstartts > now)
Index: programs/mythbackend/scheduler.cpp
===================================================================
--- programs/mythbackend/scheduler.cpp	(Revision 18950)
+++ programs/mythbackend/scheduler.cpp	(Arbeitskopie)
@@ -2810,7 +2810,8 @@
 "oldrecstatus.recstatus, oldrecstatus.reactivate, "
 "program.videoprop+0, program.subtitletypes+0, program.audioprop+0, "
 "RECTABLE.storagegroup, capturecard.hostname, recordmatch.oldrecstatus, "
-"RECTABLE.avg_delay, " +  pwrpri + QString(
+"RECTABLE.avg_delay, " +  pwrpri + QString(", "
+"RECTABLE.search "
 "FROM recordmatch "
 " INNER JOIN RECTABLE ON (recordmatch.recordid = RECTABLE.recordid) "
 " INNER JOIN program ON (recordmatch.chanid = program.chanid AND "
@@ -2970,6 +2971,14 @@
         if ((threadrunning || specsched) && !cardMap.contains(p->cardid))
             p->recstatus = rsOffLine;
 
+        // Check for rsNotAllowed
+        if ((result.value(47).toInt() != kNoSearch ||
+             p->rectype == kAllRecord ||
+             p->rectype == kFindWeeklyRecord ||
+             p->rectype == kFindDailyRecord ||
+             p->rectype == kFindOneRecord) && p->recpriority <= -500)
+             p->recstatus = rsNotAllowed;
+
         // Check for rsTooManyRecordings
         if (checkTooMany && tooManyMap[p->recordid] && !p->reactivate)
             p->recstatus = rsTooManyRecordings;

