[mythtv-commits] Ticket #9737: Editing channel number in frontend brings to lose channels

MythTV noreply at mythtv.org
Mon Apr 18 13:00:10 UTC 2011

#9737: Editing channel number in frontend brings to lose channels
 Reporter:  luigi.zanderighi@…       |           Type:  Patch - Feature
   Status:  new                      |       Priority:  minor
Milestone:  unknown                  |      Component:  MythTV - General
  Version:  Unspecified              |       Severity:  medium
 Keywords:  channel editor live_tv   |  Ticket locked:  0
 During a channel renumbering in the frontend channels can get unreachable.

 I have two channels with numbering 10 and 20, i would like to renumber
 channel 20 to channel 10. Using the frontend in live-tv mode i renumber
 the channel, but now I have two channles with numbers 10.
 One is available the second one not.
 To manage the a correct channel renumbering I should put channel 10 in an
 unused channel number, and than put channel 20 in channel 10.

 To solve this issue, the channels could be automatically swapped. So if i
 put channel 20->10 automatically channel 10->20.

 In attachment the patch for file tv_rec.cpp

 bool TVRec::SetChannelInfo(uint chanid, uint sourceid,
                            QString oldchannum,
                            QString callsign, QString channum,
                            QString channame, QString xmltvid)
     if (!chanid || !sourceid || channum.isEmpty())
         return false;
 //LZ: 'swap' channels not only update
     MSqlQuery swapquery(MSqlQuery::InitCon());
         "UPDATE channel "
         "SET channum  = :OLDCHANNUM,  "
         "WHERE channum   = :CHANNUM AND "
         "      sourceid = :SOURCEID");
     swapquery.bindValue(":CHANNUM",  channum);
     swapquery.bindValue(":SOURCEID", channame);
     swapquery.bindValue(":OLDCHANNUM",  xmltvid);

     MSqlQuery query(MSqlQuery::InitCon());
         "UPDATE channel "
         "SET callsign = :CALLSIGN, "
         "    channum  = :CHANNUM,  "
         "    name     = :CHANNAME, "
         "    xmltvid  = :XMLTVID   "
         "WHERE chanid   = :CHANID AND "
         "      sourceid = :SOURCEID");
     query.bindValue(":CALLSIGN", callsign);
     query.bindValue(":CHANNUM",  channum);
     query.bindValue(":CHANNAME", channame);
     query.bindValue(":XMLTVID",  xmltvid);
     query.bindValue(":CHANID",   chanid);
     query.bindValue(":SOURCEID", sourceid);

     if (!query.exec() || !swapquery.exec())
         MythDB::DBError("SetChannelInfo", query);
         return false;

     if (channel)
         channel->Renumber(sourceid, oldchannum, channum);

     return true;

Ticket URL: <http://code.mythtv.org/trac/ticket/9737>
MythTV <http://code.mythtv.org/trac>
MythTV Media Center

More information about the mythtv-commits mailing list