[mythtv] [PATCH] Activate/Deactive recording schedule
Kevin Kuphal
kuphal at dls.net
Sat Jan 8 18:41:50 EST 2005
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
-------------- next part --------------
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:
More information about the mythtv-dev
mailing list