[mythtv] [PATCH/APP] Program rankings
Jason Rosson
etiam at pacbell.net
Tue Jul 1 05:26:00 EDT 2003
Isaac Richards wrote:
>
> Yeah, just something to grab and store the type rankings, maybe just right
> after it sees a scheduling change so it's not looking up those same 4/5
> numbers all the time.
>
> Isaac
> _______________________________________________
> mythtv-dev mailing list
> mythtv-dev at snowman.net
> http://lists.snowman.net/cgi-bin/mailman/listinfo/mythtv-dev
>
how this?
- jason
-------------- next part --------------
Index: mythtv/programs/mythbackend/scheduler.cpp
===================================================================
RCS file: /var/lib/mythcvs/mythtv/programs/mythbackend/scheduler.cpp,v
retrieving revision 1.32
diff -u -r1.32 scheduler.cpp
--- mythtv/programs/mythbackend/scheduler.cpp 30 Jun 2003 16:40:12 -0000 1.32
+++ mythtv/programs/mythbackend/scheduler.cpp 1 Jul 2003 11:17:36 -0000
@@ -507,24 +507,53 @@
list<ProgramInfo *> *conflictList)
{
int rank, srank, resolved = 0;
+ QString chanid;
+ ScheduledRecording::RecordingType rectype;
- rank = info->rank.toInt();
- rank += info->GetChannelRank(info->chanid, db);
- rank += info->GetRecordingTypeRank(info->GetProgramRecordingStatus(db));
+ if (!channelRankMap.contains(info->chanid))
+ channelRankMap[info->chanid] = info->GetChannelRank(info->chanid, db);
+
+ rectype = info->GetProgramRecordingStatus(db);
+ if (!recTypeRankMap.contains(rectype))
+ recTypeRankMap[rectype] = info->GetRecordingTypeRank(rectype);
+
+ if (!rankMap.contains(info->schedulerid))
+ {
+ rank = info->rank.toInt();
+ rank += channelRankMap[info->chanid];
+ rank += recTypeRankMap[rectype];
+ rankMap[info->schedulerid] = rank;
+ }
+ else
+ rank = rankMap[info->schedulerid];
list<ProgramInfo *>::iterator i = conflictList->begin();
for (; i != conflictList->end(); i++)
{
ProgramInfo *second = (*i);
- srank = second->rank.toInt();
- srank += info->GetChannelRank(second->chanid, db);
- srank += info->GetRecordingTypeRank(second->GetProgramRecordingStatus(db));
+ if (!channelRankMap.contains(second->chanid))
+ channelRankMap[second->chanid] =
+ second->GetChannelRank(second->chanid, db);
+
+ rectype = second->GetProgramRecordingStatus(db);
+ if (!recTypeRankMap.contains(rectype))
+ recTypeRankMap[rectype] = second->GetRecordingTypeRank(rectype);
+
+ if (!rankMap.contains(second->schedulerid))
+ {
+ srank = second->rank.toInt();
+ srank += channelRankMap[second->chanid];
+ srank += recTypeRankMap[rectype];
+ rankMap[second->schedulerid] = srank;
+ }
+ else
+ srank = rankMap[second->schedulerid];
if (rank == srank)
continue;
- if(rank > srank)
+ if (rank > srank)
{
second->recording = false;
resolved++;
@@ -1089,7 +1118,15 @@
if (CheckForChanges() ||
(lastupdate.date().day() != curtime.date().day()))
{
+ if (rankMap.size() > 0)
+ rankMap.clear();
+ if (channelRankMap.size() > 0)
+ channelRankMap.clear();
+ if (recTypeRankMap.size() > 0)
+ recTypeRankMap.clear();
+
FillRecordLists();
+
lastupdate = curtime;
VERBOSE("Found changes in the todo list.");
Index: mythtv/programs/mythbackend/scheduler.h
===================================================================
RCS file: /var/lib/mythcvs/mythtv/programs/mythbackend/scheduler.h,v
retrieving revision 1.10
diff -u -r1.10 scheduler.h
--- mythtv/programs/mythbackend/scheduler.h 28 Jun 2003 23:09:20 -0000 1.10
+++ mythtv/programs/mythbackend/scheduler.h 1 Jul 2003 11:17:36 -0000
@@ -9,6 +9,7 @@
#include <list>
#include <vector>
#include <qobject.h>
+#include "scheduledrecording.h"
using namespace std;
@@ -69,6 +70,9 @@
list<ProgramInfo *> recordingList;
list<ProgramInfo *> scheduledList;
+ QMap<QString, int> rankMap;
+ QMap<QString, int> channelRankMap;
+ QMap<ScheduledRecording::RecordingType, int> recTypeRankMap;
bool hasconflicts;
Index: mythtv/programs/mythfrontend/globalsettings.cpp
===================================================================
RCS file: /var/lib/mythcvs/mythtv/programs/mythfrontend/globalsettings.cpp,v
retrieving revision 1.77
diff -u -r1.77 globalsettings.cpp
--- mythtv/programs/mythfrontend/globalsettings.cpp 30 Jun 2003 23:54:36 -0000 1.77
+++ mythtv/programs/mythfrontend/globalsettings.cpp 1 Jul 2003 11:17:36 -0000
@@ -1,6 +1,8 @@
#include "mythcontext.h"
#include "globalsettings.h"
+#include "scheduledrecording.h"
+#include <qsqldatabase.h>
#include <qfile.h>
#include <qdialog.h>
#include <qcursor.h>
@@ -820,7 +822,7 @@
class GRSingleRecordRank: public SpinBoxSetting, public BackendSetting {
public:
GRSingleRecordRank():
- SpinBoxSetting(-1000, 1000, 1), BackendSetting("SingleRecordRank") {
+ SpinBoxSetting(-99, 99, 1), BackendSetting("SingleRecordRank") {
setLabel("Single Recordings Rank");
setHelpText("Single Recordings will receive this additional "
"ranking value.");
@@ -831,7 +833,7 @@
class GRWeekslotRecordRank: public SpinBoxSetting, public BackendSetting {
public:
GRWeekslotRecordRank():
- SpinBoxSetting(-1000, 1000, 1), BackendSetting("WeekslotRecordRank") {
+ SpinBoxSetting(-99, 99, 1), BackendSetting("WeekslotRecordRank") {
setLabel("Weekslot Recordings Rank");
setHelpText("Weekslot Recordings will receive this additional "
"ranking value.");
@@ -842,7 +844,7 @@
class GRTimeslotRecordRank: public SpinBoxSetting, public BackendSetting {
public:
GRTimeslotRecordRank():
- SpinBoxSetting(-1000, 1000, 1), BackendSetting("TimeslotRecordRank") {
+ SpinBoxSetting(-99, 99, 1), BackendSetting("TimeslotRecordRank") {
setLabel("Timeslot Recordings Rank");
setHelpText("Timeslot Recordings will receive this additional "
"ranking value.");
Index: mythtv/programs/mythfrontend/main.cpp
===================================================================
RCS file: /var/lib/mythcvs/mythtv/programs/mythfrontend/main.cpp,v
retrieving revision 1.92
diff -u -r1.92 main.cpp
--- mythtv/programs/mythfrontend/main.cpp 28 Jun 2003 23:09:20 -0000 1.92
+++ mythtv/programs/mythfrontend/main.cpp 1 Jul 2003 11:17:37 -0000
@@ -219,6 +219,7 @@
{
GeneralRankingSettings settings;
settings.exec(QSqlDatabase::database());
+ ScheduledRecording::signalChange(QSqlDatabase::database());
}
else if (sel == "settings channelranking")
{
Index: mythtv/programs/mythfrontend/rankchannels.cpp
===================================================================
RCS file: /var/lib/mythcvs/mythtv/programs/mythfrontend/rankchannels.cpp,v
retrieving revision 1.3
diff -u -r1.3 rankchannels.cpp
--- mythtv/programs/mythfrontend/rankchannels.cpp 30 Jun 2003 16:40:12 -0000 1.3
+++ mythtv/programs/mythfrontend/rankchannels.cpp 1 Jul 2003 11:17:37 -0000
@@ -386,6 +386,7 @@
applyChannelRankChange(db, QString::number(chanInfo->chanid),
chanInfo->rank);
}
+ ScheduledRecording::signalChange(db);
}
void RankChannels::FillList(void)
More information about the mythtv-dev
mailing list