[mythtv] [PATCH] Pause a recording schedule

Kevin Kuphal kuphal at dls.net
Sun Dec 5 18:53:04 UTC 2004


Joseph A. Caputo wrote:

>Nice!  I like this feature.  One tiny suggestion, though... perhaps 
>"pause" is not the best description for what this does... maybe 
>"suspend" or "disable" ?
>  
>
Well, I ended up not liking the [PAUSED] indicator either way so the 
attached update to this patch turns the color of the schedule to the 
inactive font for the theme instead which I think is a better and more 
consistent way of representing the action.  Now there's also no concern 
for what description is used.

Kevin
-------------- next part --------------
Index: mythtv/libs/libmythtv/dbcheck.cpp
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libmythtv/dbcheck.cpp,v
retrieving revision 1.67
diff -n -u -r1.67 dbcheck.cpp
--- mythtv/libs/libmythtv/dbcheck.cpp	13 Oct 2004 01:49:55 -0000	1.67
+++ mythtv/libs/libmythtv/dbcheck.cpp	3 Dec 2004 05:36:56 -0000
@@ -8,7 +8,7 @@
 
 #include "mythcontext.h"
 
-const QString currentDatabaseVersion = "1059";
+const QString currentDatabaseVersion = "1060";
 
 void UpdateDBVersionNumber(const QString &newnumber)
 {
@@ -1051,6 +1051,22 @@
 };
         performActualUpdate(updates, "1058", dbver);
     }
     if (dbver == "1058")
     {
         const QString updates[] = {
 "ALTER TABLE recorded ADD COLUMN preserve TINYINT(1) NOT NULL DEFAULT 0;",
 ""
 };
         performActualUpdate(updates, "1059", dbver);
     }
+    if (dbver == "1059")
+    {
+        const QString updates[] = {
+"ALTER TABLE record ADD COLUMN paused TINYINT(1) NOT NULL DEFAULT 0;",
+""
+};
+        performActualUpdate(updates, "1060", dbver);
+    }
 }
 
 void InitializeDatabase(void)
Index: mythtv/libs/libmythtv/programinfo.cpp
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libmythtv/programinfo.cpp,v
retrieving revision 1.165
diff -n -u -r1.165 programinfo.cpp
--- mythtv/libs/libmythtv/programinfo.cpp	20 Oct 2004 07:25:37 -0000	1.165
+++ mythtv/libs/libmythtv/programinfo.cpp	3 Dec 2004 05:36:57 -0000
@@ -63,9 +63,11 @@
 
     hasAirDate = false;
     repeat = false;
+    paused = false;
 
@@ -135,15 +137,17 @@
 
     hasAirDate = other.hasAirDate;
     repeat = other.repeat;
+    paused = other.paused;
 
@@ -1837,6 +1903,8 @@
         return QObject::tr("K", "RecStatusChar");
     case rsTunerBusy:
         return QObject::tr("B", "RecStatusChar");
+    case rsPaused:
+        return QObject::tr("p", "RecStatusChar");
     default:
         return "-";
     }
@@ -1882,6 +1950,8 @@
             return QObject::tr("Tuner Busy");
         case rsRepeat:
             return QObject::tr("Repeat");            
+        case rsPaused:
+            return QObject::tr("Paused");
         default:
             return QObject::tr("Unknown");
         }
@@ -1950,6 +2020,9 @@
         case rsRepeat:
             message += QObject::tr("this episode is a repeat.");
             break;            
+        case rsPaused:
+            message += QObject::tr("this recording schedule is paused.");
+            break;
         case rsTooManyRecordings:
             message += QObject::tr("too many recordings of this program have "
                                    "already been recorded.");
@@ -2527,6 +2600,7 @@
              recstatus == rsCurrentRecording ||
              recstatus == rsEarlierShowing ||
              recstatus == rsRepeat ||
+             recstatus == rsPaused ||
              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.89
diff -n -u -r1.89 programinfo.h
--- mythtv/libs/libmythtv/programinfo.h	8 Oct 2004 04:23:36 -0000	1.89
+++ mythtv/libs/libmythtv/programinfo.h	3 Dec 2004 05:36:57 -0000
@@ -72,7 +72,7 @@
     rsConflict = 7,
     rsLaterShowing = 8,
     rsRepeat = 9,
-    //rsUnused = 10,
+    rsPaused = 10,
     rsLowDiskSpace = 11,
     rsTunerBusy = 12
 };
@@ -267,6 +272,7 @@
     int cardid;
     bool shareable;
     bool conflictfixed;
+    bool paused;
 
     QString schedulerid;
 
Index: mythtv/programs/mythbackend/scheduler.cpp
===================================================================
RCS file: /var/lib/mythcvs/mythtv/programs/mythbackend/scheduler.cpp,v
retrieving revision 1.119
diff -n -u -r1.119 scheduler.cpp
--- mythtv/programs/mythbackend/scheduler.cpp	19 Oct 2004 07:37:31 -0000	1.119
+++ mythtv/programs/mythbackend/scheduler.cpp	3 Dec 2004 05:36:57 -0000
@@ -1329,7 +1329,7 @@
 "channel.commfree, capturecard.cardid, "
 "cardinput.cardinputid, UPPER(cardinput.shareable) = 'Y' AS shareable, "
 "program.seriesid, program.programid, "
-"program.stars, program.originalairdate "
+"program.stars, program.originalairdate, record.paused "
 
 "FROM record, program ") + fromclauses[clause] + QString(
 
@@ -1472,6 +1472,7 @@
         else
             p->originalAirDate = QDate::fromString(result.value(30).toString(), Qt::ISODate);
 
+        p->paused = result.value(31).toInt();
 
         if (!recTypeRecPriorityMap.contains(p->rectype))
             recTypeRecPriorityMap[p->rectype] = 
@@ -1535,7 +1536,7 @@
         {
             if (p->dupin == kDupsNewEpi && p->repeat)
                 p->recstatus = rsRepeat;
-        
+
             if (((p->dupin & kDupsInOldRecorded) || (p->dupin == kDupsNewEpi)) &&
                 result.value(10).toInt())
                 p->recstatus = rsPreviousRecording;
@@ -1545,6 +1546,9 @@
                 p->recstatus = rsCurrentRecording;
         }
 
+        if (p->paused)
+            p->recstatus = rsPaused;
+
         tmpList.push_back(p);
     }
 
Index: mythtv/programs/mythfrontend/programrecpriority.cpp
===================================================================
RCS file: /var/lib/mythcvs/mythtv/programs/mythfrontend/programrecpriority.cpp,v
retrieving revision 1.35
diff -n -u -r1.35 programrecpriority.cpp
--- mythtv/programs/mythfrontend/programrecpriority.cpp	12 Sep 2004 23:21:14 -0000	1.35
+++ mythtv/programs/mythfrontend/programrecpriority.cpp	3 Dec 2004 05:36:57 -0000
@@ -186,6 +186,8 @@
                 changeRecPriority(1);
             else if (action == "LEFT")
                 changeRecPriority(-1);
+            else if ((action == "PAUSE") || (action == "PLAYBACK"))
+                pause();
             else if (action == "ESCAPE")
             {
                 saveRecPriority();
@@ -427,6 +429,65 @@
          inList = 0;
 }
 
+void ProgramRecPriority::pause(void)
+{
+    if (!curitem)
+        return;
+
+    ProgramRecPriorityInfo *rec = curitem;
+
+    MythContext::KickDatabase(db);
+
+    if (rec)
+    {
+        QString thequery;
+
+        thequery = QString("SELECT paused FROM record WHERE recordid = %1")
+                           .arg(rec->recordid);        
+
+        QSqlQuery query = db->exec(thequery);
+
+        int paused = 0;
+        if (query.isActive())
+            if (query.numRowsAffected() > 0)
+            {
+                query.next(); 
+                paused = query.value(0).toInt();
+                if (paused)
+                    paused = 0;
+                else 
+                    paused = 1;
+
+                QString theupdatequery;
+                theupdatequery = QString("UPDATE record SET paused = %1 WHERE recordid = %2")
+                                         .arg(paused).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->paused = paused;
+                } else
+                    MythContext::DBError("Update recording schedule paused query", uquery);
+               
+            }
+
+        QPainter p(this);
+        updateInfo(&p);
+        update(fullRect);
+    }
+}
+
 void ProgramRecPriority::edit(void)
 {
     if (!curitem)
@@ -629,7 +690,8 @@
     // it all at once than once per program)
     QString query = QString("SELECT record.title, record.chanid, "
                             "record.starttime, record.startdate, "
-                            "record.type, channel.recpriority "
+                            "record.type, channel.recpriority, "
+                            "record.paused "
                             "FROM record "
                             "LEFT JOIN channel ON "
                             "(record.chanid = channel.chanid);");
@@ -651,6 +713,7 @@
             RecordingType recType = (RecordingType)result.value(4).toInt();
             int channelRecPriority = result.value(5).toInt();
             int recTypeRecPriority = rtRecPriors[recType-1];
+            int paused = result.value(6).toInt();
               
             // this is so kludgy
             // since we key off of title+chanid+startts we have
@@ -684,6 +747,7 @@
                     progInfo->channelRecPriority = channelRecPriority;
                     progInfo->recTypeRecPriority = recTypeRecPriority;
                     progInfo->recType = recType;
+                    progInfo->paused = paused;
                     matches++;
                     break;
                 }
@@ -882,6 +946,9 @@
                             ltype->SetItemCurrent(cnt);
                         }
 
+                        if (progInfo->paused)
+                            ltype->EnableForcedFont(cnt, "inactive"); 
+
                         ltype->SetItemText(cnt, 1, tempSubTitle);
 
                         if (progRecPriority >= 0)
Index: mythtv/programs/mythfrontend/programrecpriority.h
===================================================================
RCS file: /var/lib/mythcvs/mythtv/programs/mythfrontend/programrecpriority.h,v
retrieving revision 1.10
diff -n -u -r1.10 programrecpriority.h
--- mythtv/programs/mythfrontend/programrecpriority.h	12 Sep 2004 23:21:14 -0000	1.10
+++ mythtv/programs/mythfrontend/programrecpriority.h	3 Dec 2004 05:36:57 -0000
@@ -47,6 +47,7 @@
     void changeRecPriority(int howMuch);
     void saveRecPriority(void);
     void edit();
+    void pause();
     void upcoming();
 
   protected:


More information about the mythtv-dev mailing list