[mythtv] [PATCH] Updated version of presetpatch

Bjorn Hijmans bjorn at hijmans.nl
Sun Apr 27 14:11:56 EDT 2003


On Sun, 27 Apr 2003, Isaac Richards wrote:

> Probably should be basing it off the lowest chanid that's valid for the
> current input, not globally.

You are right. New patch is attached.

Bjorn

-------------- next part --------------
diff -ur MC/libs/libmythtv/programinfo.cpp MC.clean.patched/libs/libmythtv/programinfo.cpp
--- MC/libs/libmythtv/programinfo.cpp	Wed Apr 23 23:15:18 2003
+++ MC.clean.patched/libs/libmythtv/programinfo.cpp	Sun Apr 27 12:44:05 2003
@@ -349,6 +349,25 @@
     return GetProgramAtDateTime(channel, sqltime);
 }
 
+QString ProgramInfo::GetChanNumFromChanid(QString channel)
+{
+    QSqlQuery query;
+    QString thequery;
+    QString channum;
+    
+    thequery = QString("SELECT channum FROM channel WHERE chanid=%1;") . arg(channel);
+    query.exec(thequery);
+    
+    if(query.isActive() && query.numRowsAffected() > 0)
+    {
+        query.next();
+        
+        channum = query.value(0).toString();
+    }
+    
+    return channum;
+}
+
 ProgramInfo *ProgramInfo::GetProgramFromRecorded(QString channel, QString starttime)
 {
     QSqlQuery query;
diff -ur MC/libs/libmythtv/programinfo.h MC.clean.patched/libs/libmythtv/programinfo.h
--- MC/libs/libmythtv/programinfo.h	Wed Apr 23 23:15:18 2003
+++ MC.clean.patched/libs/libmythtv/programinfo.h	Sun Apr 27 12:44:09 2003
@@ -66,6 +66,8 @@
     static ProgramInfo *GetProgramAtDateTime(QString channel, QDateTime &dtime);
     static ProgramInfo *GetProgramFromRecorded(QString channel, QString starttime);
 
+    static QString GetChanNumFromChanid(QString channel);
+
     QString title;
     QString subtitle;
     QString description;
diff -ur MC/libs/libmythtv/tv_play.cpp MC.clean.patched/libs/libmythtv/tv_play.cpp
--- MC/libs/libmythtv/tv_play.cpp	Fri Apr 25 07:45:25 2003
+++ MC.clean.patched/libs/libmythtv/tv_play.cpp	Sun Apr 27 12:43:54 2003
@@ -1471,6 +1471,13 @@
     if (key > 256)
         thekey = key - 256 - 0xb0 + '0';
 
+    QString channelSorting = gContext->GetSetting("ChannelSorting");
+    
+    if(channelSorting == "chanid")
+    {
+        chanidqueued = true;
+    }   
+
     if (channelkeysstored == 4)
     {
         channelKeys[0] = channelKeys[1];
@@ -1512,6 +1519,18 @@
     }
 
     QString chan = QString(channelKeys).stripWhiteSpace();
+
+    // Translate to channum
+    if(chanidqueued)
+    {
+        QString recorderNum = QString::number(activerecorder->GetRecorderNumber());
+        QString chanidStart = gContext->GetSetting("ChanidStart" + recorderNum);       
+        
+        chan = QString::number(chan.toInt() + chanidStart.toInt() - 1);
+        chan = ProgramInfo::GetChanNumFromChanid(chan);
+        chanidqueued = false;
+    }
+
     ChangeChannelByString(chan);
 
     channelqueued = false;
@@ -1659,6 +1678,15 @@
     QMap<QString, QString> regexpMap;
 
     GetChannelInfo(activerecorder, regexpMap);
+
+    QString channelSorting = gContext->GetSetting("ChannelSorting");
+
+    QString recorderNum = QString::number(activerecorder->GetRecorderNumber());
+    QString chanidStart = gContext->GetSetting("ChanidStart" + recorderNum);
+            
+    if(channelSorting == "chanid")
+    {   regexpMap["channum"] = QString::number(regexpMap["chanid"].toInt() - chanidStart.toInt() + 1);
+    }    
 
     osd->ClearAllText("program_info");
     osd->SetTextByRegexp("program_info", regexpMap, osd_display_time);
diff -ur MC/libs/libmythtv/tv_play.h MC.clean.patched/libs/libmythtv/tv_play.h
--- MC/libs/libmythtv/tv_play.h	Wed Apr 23 23:15:18 2003
+++ MC.clean.patched/libs/libmythtv/tv_play.h	Sun Apr 27 12:43:57 2003
@@ -142,6 +142,7 @@
     int osd_display_time;
 
     bool channelqueued;
+    bool chanidqueued;
     char channelKeys[5];
     int channelkeysstored;
 
diff -ur MC/programs/mythfrontend/main.cpp MC.clean.patched/programs/mythfrontend/main.cpp
--- MC/programs/mythfrontend/main.cpp	Fri Apr 18 05:25:32 2003
+++ MC.clean.patched/programs/mythfrontend/main.cpp	Sun Apr 27 12:44:29 2003
@@ -349,6 +349,26 @@
         gContext->LCDconnectToHost(lcd_host, lcd_port);
     }
 
+    QString thequery = QString("SELECT   c.cardid, MIN(ch.chanid) 
+    				FROM     capturecard as c, cardinput as i, channel ch 
+    				WHERE    c.cardid = i.cardid 
+    				AND      ch.sourceid = i.sourceid 
+    				GROUP BY c.cardid;");
+    
+    QSqlQuery query = db->exec(thequery);
+    
+    if(query.isActive() && query.numRowsAffected() > 0)
+    {
+        while(query.next())
+        {
+             QString cardid = query.value(0).toString();
+             QString value = query.value(1).toString();
+             QString key = QString("ChanidStart") + cardid;
+ 
+             gContext->SaveSetting(key, value);
+        }
+    }
+
     qApp->unlock();
 
     int exitstatus = RunMenu(themedir);


More information about the mythtv-dev mailing list