This patch updates my previous patch which allows, using either the PAUSE/PLAYBACK key on the Set Priorities screen or now in the Scheduling Options section of the Advanced Recording options screen, a recording schedule to be temporarily deactivated and removed from consideration for scheduling.

Deactivated schedules use the inactive font on the Set Priorities screen and have an "i" for Inactive as their status indicator on the Upcoming Recordings screen.

Kevin
Index: mythtv/libs/libmythtv/programinfo.cpp
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libmythtv/programinfo.cpp,v
retrieving revision 1.182
diff -n -u -r1.182 programinfo.cpp
--- mythtv/libs/libmythtv/programinfo.cpp       1 Jan 2005 19:07:12 -0000       
1.182
+++ mythtv/libs/libmythtv/programinfo.cpp       8 Jan 2005 23:34:59 -0000
@@ -64,6 +64,7 @@
 
     hasAirDate = false;
     repeat = false;
+    inactive = false;
 
     seriesid = "";
     programid = "";
@@ -140,6 +141,7 @@
 
     hasAirDate = other.hasAirDate;
     repeat = other.repeat;
+    inactive = other.inactive;
 
     seriesid = other.seriesid;
     programid = other.programid;
@@ -1877,6 +1879,8 @@
         return QObject::tr("K", "RecStatusChar");
     case rsTunerBusy:
         return QObject::tr("B", "RecStatusChar");
+    case rsInactive:
+        return QObject::tr("i", "RecStatusChar");
     default:
         return "-";
     }
@@ -1922,6 +1926,8 @@
             return QObject::tr("Tuner Busy");
         case rsRepeat:
             return QObject::tr("Repeat");            
+        case rsInactive:
+            return QObject::tr("Inactive");
         default:
             return QObject::tr("Unknown");
         }
@@ -1990,6 +1996,9 @@
         case rsRepeat:
             message += QObject::tr("this episode is a repeat.");
             break;            
+        case rsInactive:
+            message += QObject::tr("this recording schedule is inactive.");
+            break;
         case rsTooManyRecordings:
             message += QObject::tr("too many recordings of this program have "
                                    "already been recorded.");
@@ -2600,6 +2609,7 @@
              recstatus == rsCurrentRecording ||
              recstatus == rsEarlierShowing ||
              recstatus == rsRepeat ||
+             recstatus == rsInactive ||
              recstatus == rsLaterShowing))
         {
             diag.AddButton(QObject::tr("Record anyway"));
Index: mythtv/libs/libmythtv/programinfo.h
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libmythtv/programinfo.h,v
retrieving revision 1.94
diff -n -u -r1.94 programinfo.h
--- mythtv/libs/libmythtv/programinfo.h 24 Dec 2004 23:24:07 -0000      1.94
+++ mythtv/libs/libmythtv/programinfo.h 8 Jan 2005 23:34:59 -0000
@@ -72,7 +72,7 @@
     rsConflict = 7,
     rsLaterShowing = 8,
     rsRepeat = 9,
-    //rsUnused = 10,
+    rsInactive = 10,
     rsLowDiskSpace = 11,
     rsTunerBusy = 12
 };
@@ -252,6 +252,7 @@
     
     bool hasAirDate;
     bool repeat;
+    bool inactive;
 
     int spread;
     int startCol;
Index: mythtv/libs/libmythtv/scheduledrecording.cpp
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libmythtv/scheduledrecording.cpp,v
retrieving revision 1.124
diff -n -u -r1.124 scheduledrecording.cpp
--- mythtv/libs/libmythtv/scheduledrecording.cpp        25 Nov 2004 21:23:52 
-0000      1.124
+++ mythtv/libs/libmythtv/scheduledrecording.cpp        8 Jan 2005 23:35:00 
-0000
@@ -38,6 +38,7 @@
     m_dialog = NULL;
     recpriority = NULL;
     recgroup = NULL;
+    inactive = NULL;
     searchType = "";
     searchForWhat = "";
         
@@ -699,6 +700,8 @@
 
     recgroup->fillSelections(db);    
     recgroup->setValue("Default");
+
+    inactive->setValue(0);
 }
 
 void ScheduledRecording::setProgram(ProgramInfo *proginfo, QSqlDatabase* db)
@@ -753,6 +756,7 @@
     endoffset->setChanged();
     recpriority->setChanged();
     recgroup->setChanged();
+    inactive->setChanged();
 }
 
 
Index: mythtv/libs/libmythtv/scheduledrecording.h
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libmythtv/scheduledrecording.h,v
retrieving revision 1.46
diff -n -u -r1.46 scheduledrecording.h
--- mythtv/libs/libmythtv/scheduledrecording.h  22 Oct 2004 19:14:03 -0000      
1.46
+++ mythtv/libs/libmythtv/scheduledrecording.h  8 Jan 2005 23:35:00 -0000
@@ -15,7 +15,7 @@
 class RootSRGroup;
 class RecOptDialog;
 
-
+class SRInactive;
 class SRRecordingType;
 class SRRecSearchType;
 class SRProfileSelector;
@@ -114,6 +114,7 @@
 
     static void signalChange(QSqlDatabase* db);
     
+    void setInactiveObj(SRInactive* val) {inactive = val;}
     void setRecTypeObj(SRRecordingType* val) {type = val;}
     void setSearchTypeObj(SRRecSearchType* val) {search = val;}
     void setProfileObj( SRProfileSelector* val) {profile = val;}
@@ -173,6 +174,7 @@
     };
 
     ID* id;
+    class SRInactive* inactive;
     class SRRecordingType* type;
     class SRRecSearchType* search;
     class SRProfileSelector* profile;
Index: mythtv/libs/libmythtv/sr_items.cpp
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libmythtv/sr_items.cpp,v
retrieving revision 1.16
diff -n -u -r1.16 sr_items.cpp
--- mythtv/libs/libmythtv/sr_items.cpp  8 Dec 2004 17:41:45 -0000       1.16
+++ mythtv/libs/libmythtv/sr_items.cpp  8 Jan 2005 23:35:00 -0000
@@ -11,6 +11,9 @@
                                        _parent, "schedOpts"),
                      schedRec(_rec)
 {
+    inactive = new SRInactive(_rec, this, _parentList);
+    addItem(inactive->getItem(), -1);
+
     recPriority = new SRRecPriority(_rec, this, _parentList);
     addItem(recPriority->getItem(), -1);
 
Index: mythtv/libs/libmythtv/sr_items.h
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libmythtv/sr_items.h,v
retrieving revision 1.21
diff -n -u -r1.21 sr_items.h
--- mythtv/libs/libmythtv/sr_items.h    8 Dec 2004 17:41:45 -0000       1.21
+++ mythtv/libs/libmythtv/sr_items.h    8 Jan 2005 23:35:00 -0000
@@ -318,6 +318,7 @@
     protected:
 
         friend class SRRootGroup;
+        class SRInactive* inactive;
         class SRRecPriority* recPriority;
         class SRStartOffset* startOffset;
         class SREndOffset* endOffset;
@@ -591,7 +592,17 @@
         }
 };
 
-
+class SRInactive: public SRBoolSetting
+{
+    public:
+        SRInactive(ScheduledRecording& _parent, ManagedListGroup* _group, 
ManagedList* _list)
+                    : SRBoolSetting(_parent, QObject::tr("This recording 
schedule is inactive"), 
+                                     QObject::tr("This recording schedule is 
active"),
+                                    "inactiveItem", "inactive", _group, _list )
+        {
+            _parent.setInactiveObj(this);
+        }
+};
 
 class SRMaxNewest: public SRBoolSetting
 {
Index: mythtv/programs/mythbackend/scheduler.cpp
===================================================================
RCS file: /var/lib/mythcvs/mythtv/programs/mythbackend/scheduler.cpp,v
retrieving revision 1.124
diff -n -u -r1.124 scheduler.cpp
--- mythtv/programs/mythbackend/scheduler.cpp   29 Dec 2004 21:46:19 -0000      
1.124
+++ mythtv/programs/mythbackend/scheduler.cpp   8 Jan 2005 23:35:00 -0000
@@ -1385,7 +1385,7 @@
 "channel.commfree, capturecard.cardid, "
 "cardinput.cardinputid, UPPER(cardinput.shareable) = 'Y' AS shareable, "
 "program.seriesid, program.programid, program.category_type, "
-"program.airdate, program.stars, program.originalairdate "
+"program.airdate, program.stars, program.originalairdate, record.inactive "
 
 "FROM record, program ") + fromclauses[clause] + QString(
 
@@ -1538,6 +1538,7 @@
         else
             p->originalAirDate = 
QDate::fromString(result.value(30).toString(), Qt::ISODate);
 
+        p->inactive = result.value(33).toInt();
 
         if (!recTypeRecPriorityMap.contains(p->rectype))
             recTypeRecPriorityMap[p->rectype] = 
@@ -1605,6 +1606,10 @@
                 result.value(14).toInt())
                 p->recstatus = rsCurrentRecording;
         }
+
+        if (p->inactive)
+            p->recstatus = rsInactive;
+
         tmpList.push_back(p);
     }
 
Index: mythtv/programs/mythfrontend/programrecpriority.cpp
===================================================================
RCS file: /var/lib/mythcvs/mythtv/programs/mythfrontend/programrecpriority.cpp,v
retrieving revision 1.40
diff -n -u -r1.40 programrecpriority.cpp
--- mythtv/programs/mythfrontend/programrecpriority.cpp 25 Nov 2004 23:28:45 
-0000      1.40
+++ mythtv/programs/mythfrontend/programrecpriority.cpp 8 Jan 2005 23:35:00 
-0000
@@ -186,6 +186,8 @@
                 changeRecPriority(1);
             else if (action == "LEFT")
                 changeRecPriority(-1);
+            else if ((action == "PAUSED") || (action == "PLAYBACK"))
+                deactivate();
             else if (action == "ESCAPE")
             {
                 saveRecPriority();
@@ -470,7 +472,7 @@
             recid = rec->getRecordID(db);
 
         thequery = QString(
-                   "SELECT recpriority, type FROM record WHERE recordid = %1;")
+                   "SELECT recpriority, type, inactive FROM record WHERE 
recordid = %1;")
                            .arg(recid);
         QSqlQuery query = db->exec(thequery);
 
@@ -480,6 +482,7 @@
                 query.next();
                 int recPriority = query.value(0).toInt();
                 int rectype = query.value(1).toInt();
+                int inactive = query.value(2).toInt();
 
                 int cnt;
                 QMap<QString, ProgramRecPriorityInfo>::Iterator it;
@@ -511,6 +514,9 @@
                 QString key = progInfo->MakeUniqueKey(); 
                 origRecPriorityData[key] = progInfo->recpriority;
 
+                // also set the active/inactive state
+                progInfo->inactive = inactive;
+
                 SortList();
             }
             else
@@ -545,6 +551,64 @@
     }
 }
 
+void ProgramRecPriority::deactivate(void)
+{
+    if (!curitem)
+        return;
+
+    ProgramRecPriorityInfo *rec = curitem;
+
+    MythContext::KickDatabase(db);
+
+    if (rec)
+    {
+        QString thequery;
+
+        thequery = QString("SELECT inactive FROM record WHERE recordid = %1")
+                           .arg(rec->recordid);
+
+        QSqlQuery query = db->exec(thequery);
+
+        int inactive = 0;
+        if (query.isActive())
+            if (query.numRowsAffected() > 0)
+            {
+                query.next();
+                inactive = query.value(0).toInt();
+                if (inactive)
+                    inactive = 0;
+                else
+                    inactive = 1;
+
+                QString theupdatequery;
+                theupdatequery = QString("UPDATE record SET inactive = %1 
WHERE recordid = %2")
+                                         .arg(inactive).arg(rec->recordid);
+
+                QSqlQuery uquery = db->exec(theupdatequery);
+
+                if (uquery.isActive())
+                {
+                    ScheduledRecording::signalChange(db);
+                    int cnt;
+                    QMap<QString, ProgramRecPriorityInfo>::Iterator it;
+                    ProgramRecPriorityInfo *progInfo;
+
+                    // iterate through programData till we hit the line where
+                    // the cursor currently is
+                    for (cnt = 0, it = programData.begin(); cnt < 
inList+inData;
+                         cnt++, ++it);
+                    progInfo = &(it.data());
+                    progInfo->inactive = inactive;
+                } else
+                    MythContext::DBError("Update recording schedule inactive 
query", uquery);
+            }
+
+        QPainter p(this);
+        updateInfo(&p);
+        update(fullRect);
+    }
+}
+
 void ProgramRecPriority::upcoming(void)
 {
     if (!curitem)
@@ -642,7 +706,8 @@
     // it all at once than once per program)
     QString query = QString("SELECT recordid, record.title, record.chanid, "
                             "record.starttime, record.startdate, "
-                            "record.type, channel.recpriority "
+                            "record.type, channel.recpriority,  "
+                            "record.inactive "
                             "FROM record "
                             "LEFT JOIN channel ON "
                             "(record.chanid = channel.chanid);");
@@ -665,6 +730,7 @@
             RecordingType recType = (RecordingType)result.value(5).toInt();
             int channelRecPriority = result.value(6).toInt();
             int recTypeRecPriority = rtRecPriors[recType-1];
+            int inactive = result.value(7).toInt();
 
             if (recType == kAllRecord || recType == kFindOneRecord)
                 channelRecPriority = 0;
@@ -684,6 +750,7 @@
                     progInfo->channelRecPriority = channelRecPriority;
                     progInfo->recTypeRecPriority = recTypeRecPriority;
                     progInfo->recType = recType;
+                    progInfo->inactive = inactive;
                     matches++;
                     break;
                 }
@@ -925,6 +992,9 @@
                             ltype->SetItemCurrent(cnt);
                         }
 
+                        if (progInfo->inactive)
+                            ltype->EnableForcedFont(cnt, "inactive");
+
                         ltype->SetItemText(cnt, 1, progInfo->RecTypeChar());
                         ltype->SetItemText(cnt, 2, tempSubTitle);
 
Index: mythtv/programs/mythfrontend/programrecpriority.h
===================================================================
RCS file: /var/lib/mythcvs/mythtv/programs/mythfrontend/programrecpriority.h,v
retrieving revision 1.11
diff -n -u -r1.11 programrecpriority.h
--- mythtv/programs/mythfrontend/programrecpriority.h   17 Nov 2004 23:36:29 
-0000      1.11
+++ mythtv/programs/mythfrontend/programrecpriority.h   8 Jan 2005 23:35:00 
-0000
@@ -48,6 +48,7 @@
     void changeRecPriority(int howMuch);
     void saveRecPriority(void);
     void edit();
+    void deactivate();
     void upcoming();
 
   protected:
_______________________________________________
mythtv-dev mailing list
[email protected]
http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-dev

Reply via email to