[mythtv] [PATCH] Updated version of presetpatch

Bjorn Hijmans bjorn at hijmans.nl
Fri Apr 25 22:30:05 EDT 2003


Hi,

This version is updated with two ideas from Isaac. First, the
functionality is enabled if you choose to sort your channels by
chanid (so the query from my previous post isn't neccesary anymore).

Second, the chanid offset is determined automaticaly when starting
the frontend (and stored in the settings table to avoid having to execute
the query everytime the OSD is displayed).

Bjorn
-------------- next part --------------
diff -ru 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	Thu Apr 24 21:29:38 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 -ru 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	Thu Apr 24 21:29:40 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 -ru MC/libs/libmythtv/tv_play.cpp MC.clean.patched/libs/libmythtv/tv_play.cpp
--- MC/libs/libmythtv/tv_play.cpp	Thu Apr 24 06:10:29 2003
+++ MC.clean.patched/libs/libmythtv/tv_play.cpp	Fri Apr 25 21:22:54 2003
@@ -1470,6 +1470,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];
@@ -1510,6 +1517,17 @@
     }
 
     QString chan = QString(channelKeys).stripWhiteSpace();
+
+    // Translate to channum
+    if(chanidqueued)
+    {
+        QString chanidStart = gContext->GetSetting("ChanidStart");       
+        
+        chan = QString::number(chan.toInt() + chanidStart.toInt() - 1);
+        chan = ProgramInfo::GetChanNumFromChanid(chan);
+        chanidqueued = false;
+    }
+
     ChangeChannelByString(chan);
 
     channelqueued = false;
@@ -1657,8 +1675,17 @@
 
     GetChannelInfo(activerecorder, regexpMap);
 
-    osd->SetTextByRegexp("program_info", regexpMap, osd_display_time);
+    QString channelSorting = gContext->GetSetting("ChannelSorting");
+    QString chanidStart = gContext->GetSetting("ChanidStart");
+
+    if(channelSorting == "chanid")
+    {   regexpMap["channum"] = QString::number(regexpMap["chanid"].toInt() - chanidStart.toInt() + 1);
+    }    
+    
     osd->SetTextByRegexp("channel_number", regexpMap, osd_display_time);
+
+    osd->SetTextByRegexp("program_info", regexpMap, osd_display_time);
+
 }
 
 void TV::UpdateOSDInput(void)
diff -ru 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	Fri Apr 25 21:22:56 2003
@@ -142,6 +142,7 @@
     int osd_display_time;
 
     bool channelqueued;
+    bool chanidqueued;
     char channelKeys[5];
     int channelkeysstored;
 
diff -ru 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	Fri Apr 25 21:23:21 2003
@@ -349,6 +349,33 @@
         gContext->LCDconnectToHost(lcd_host, lcd_port);
     }
 
+    QString thequery = QString("SELECT MIN(chanid) FROM channel;");
+    QSqlQuery query = db->exec(thequery);
+    
+    if(query.isActive() && query.numRowsAffected() > 0)
+    {
+        query.next();
+        
+        QString chanidStart = query.value(0).toString();
+        QString hostname = gContext->GetHostName();
+        
+        thequery = QString("SELECT * FROM settings WHERE value='ChanidStart' AND hostname=%1;") . arg(hostname);
+        query.exec(thequery);
+        
+        if(query.isActive() && query.numRowsAffected() > 0)
+        {
+            thequery = QString("UPDATE settings SET data=%1 WHERE value='ChanidStart' AND hostname=%2;") 
+            			. arg(chanidStart) . arg(hostname);
+            query.exec(thequery);
+        }
+        else
+        {
+            thequery = QString("INSERT INTO settings (value, data, hostname) VALUES ('ChanidStart', %1, %2);") 
+            		. arg(chanidStart) . arg(hostname);
+            query.exec(thequery);
+        }
+    }
+
     qApp->unlock();
 
     int exitstatus = RunMenu(themedir);


More information about the mythtv-dev mailing list