| | 131 | |
| | 132 | |
| | 133 | |
| | 134 | QString ChannelData::normalizeChannelKey(QString chanName) |
| | 135 | { |
| | 136 | QString result; |
| | 137 | for (int i=0;i<chanName.length();i++) |
| | 138 | { |
| | 139 | if (chanName[i]!=32) |
| | 140 | result+= chanName[i].toLower(); |
| | 141 | } |
| | 142 | return result; |
| | 143 | } |
| | 144 | |
| | 145 | QHash<QString, QString> ChannelData::channelList(int sourceId) |
| | 146 | { |
| | 147 | QHash<QString, QString> chanList; |
| | 148 | MSqlQuery query(MSqlQuery::InitCon()); |
| | 149 | |
| | 150 | |
| | 151 | query.prepare( |
| | 152 | "SELECT name, callsign " |
| | 153 | "FROM channel " |
| | 154 | "WHERE sourceid = :SOURCEID"); |
| | 155 | |
| | 156 | query.bindValue(":SOURCEID", sourceId); |
| | 157 | |
| | 158 | if (!query.exec()) |
| | 159 | { |
| | 160 | MythDB::DBError("handleChannels", query); |
| | 161 | return chanList; |
| | 162 | } |
| | 163 | else |
| | 164 | { |
| | 165 | while (query.next()) |
| | 166 | { |
| | 167 | QString chanName = query.value(0).toString(); |
| | 168 | QString callSign = query.value(1).toString(); |
| | 169 | QString key = normalizeChannelKey(chanName); |
| | 170 | chanList[key] = chanName; |
| | 171 | } |
| | 172 | } |
| | 173 | |
| | 174 | return chanList; |
| | 175 | } |
| | 176 | |
| | 177 | bool ChannelData::findExistingChannel(int sourceId, ChanInfo chanInfo, MSqlQuery &query, QHash<QString, QString> existingChan) |
| | 178 | { |
| | 179 | query.prepare( |
| | 180 | "SELECT chanid, name, callsign, channum, " |
| | 181 | " finetune, icon, freqid, tvformat " |
| | 182 | "FROM channel " |
| | 183 | "WHERE xmltvid = :XMLTVID AND " |
| | 184 | " sourceid = :SOURCEID"); |
| | 185 | query.bindValue(":XMLTVID", chanInfo.xmltvid); |
| | 186 | query.bindValue(":SOURCEID", sourceId); |
| | 187 | |
| | 188 | if (!query.exec()) |
| | 189 | { |
| | 190 | MythDB::DBError("handleChannels", query); |
| | 191 | return false; |
| | 192 | } |
| | 193 | else if (query.next()) |
| | 194 | { |
| | 195 | return true; |
| | 196 | } |
| | 197 | |
| | 198 | QString searchKey = normalizeChannelKey(chanInfo.name); |
| | 199 | QString chanName = existingChan[searchKey]; |
| | 200 | |
| | 201 | query.prepare( |
| | 202 | "SELECT chanid, name, callsign, channum, " |
| | 203 | " finetune, icon, freqid, tvformat " |
| | 204 | "FROM channel " |
| | 205 | "WHERE (name = :NAME OR" |
| | 206 | " callsign = :CALLSIGN) AND " |
| | 207 | " sourceid = :SOURCEID"); |
| | 208 | query.bindValue(":NAME", chanName); |
| | 209 | query.bindValue(":CALLSIGN", chanName); |
| | 210 | query.bindValue(":SOURCEID", sourceId); |
| | 211 | |
| | 212 | if (!query.exec()) |
| | 213 | { |
| | 214 | MythDB::DBError("handleChannels", query); |
| | 215 | return false; |
| | 216 | } |
| | 217 | else if (query.next()) |
| | 218 | { |
| | 219 | return true; |
| | 220 | } |
| | 221 | |
| | 222 | return false; |
| | 223 | } |
| | 224 | |
| | 225 | |
| 192 | | query.prepare( |
| 193 | | "SELECT chanid, name, callsign, channum, " |
| 194 | | " finetune, icon, freqid, tvformat " |
| 195 | | "FROM channel " |
| 196 | | "WHERE xmltvid = :XMLTVID AND " |
| 197 | | " sourceid = :SOURCEID"); |
| 198 | | query.bindValue(":XMLTVID", (*i).xmltvid); |
| 199 | | query.bindValue(":SOURCEID", id); |
| | 403 | else |
| | 404 | { |
| | 405 | if (localfile.isEmpty()) |
| | 406 | localfile = query.value(5).toString(); |
| | 407 | MSqlQuery subquery(MSqlQuery::InitCon()); |
| | 408 | |
| | 409 | subquery.prepare("UPDATE channel SET icon = :ICON " |
| | 410 | ", xmltvid:= :XMLTVID WHERE " |
| | 411 | "chanid = :CHANID;"); |
| | 412 | subquery.bindValue(":ICON", localfile); |
| | 413 | subquery.bindValue(":XMLTVID", (*i).xmltvid); |
| | 414 | subquery.bindValue(":CHANID", chanid); |
| | 415 | |
| | 416 | if (!subquery.exec()) |
| | 417 | MythDB::DBError("Channel icon change", subquery); |
| | 418 | } |