Go to the documentation of this file.
16 bool processed, QDateTime scandate) :
17 m_scanid(scanid), m_cardid(cardid), m_sourceid(sourceid),
18 m_processed(processed), m_scandate(std::move(scandate))
24 LOG(VB_CHANSCAN, LOG_INFO, QString(
"SaveScan() scan.size(): %1")
28 if (
scan.empty() ||
scan[0].m_channels.empty())
31 uint sourceid =
scan[0].m_channels[0].m_sourceId;
35 const std::vector<ScanInfo> list =
LoadScanList(sourceid);
36 for (
uint i = 0; i < list.size(); i++)
38 if (((i + 10) < (list.size())) ||
41 LOG(VB_CHANSCAN, LOG_INFO,
"SaveScan() " +
42 QString(
"Delete saved scan id:%1 date:%2")
43 .arg(list[i].m_scanid).arg(list[i].m_scandate.toString()));
50 "INSERT INTO channelscan ( cardid, sourceid, scandate) "
51 "VALUES (:CARDID, :SOURCEID, :SCANDATE) ");
62 query.
prepare(
"SELECT MAX(scanid) FROM channelscan");
65 else if (query.
next())
66 scanid = query.
value(0).toUInt();
71 for (
const auto & si :
scan)
83 "SELECT frequency, inversion, symbolrate, "
85 " hp_code_rate, lp_code_rate, modulation, "
86 " transmission_mode, guard_interval, hierarchy, "
87 " modulation, bandwidth, sistandard, "
88 " tuner_type, transportid, mod_sys, "
89 " rolloff, signal_strength "
90 "FROM channelscan_dtv_multiplex "
91 "WHERE scanid = :SCANID");
104 query.
value(0).toString(), query.
value(1).toString(),
105 query.
value(2).toString(), query.
value(3).toString(),
106 query.
value(4).toString(), query.
value(5).toString(),
107 query.
value(6).toString(), query.
value(7).toString(),
108 query.
value(8).toString(), query.
value(9).toString(),
109 query.
value(10).toString(), query.
value(11).toString(),
110 query.
value(12).toString(), query.
value(16).toString(),
111 query.
value(17).toString(), query.
value(18).toString());
117 " mplex_id, source_id, channel_id, "
118 " callsign, service_name, chan_num, "
119 " service_id, atsc_major_channel, atsc_minor_channel, "
120 " use_on_air_guide, hidden, hidden_in_guide, "
121 " freqid, icon, tvformat, "
122 " xmltvid, pat_tsid, vct_tsid, "
123 " vct_chan_tsid, sdt_tsid, orig_netid, "
124 " netid, si_standard, in_channels_conf, "
125 " in_pat, in_pmt, in_vct, "
126 " in_nit, in_sdt, is_encrypted, "
127 " is_data_service, is_audio_service, is_opencable, "
128 " could_be_opencable, decryption_status, default_authority, "
129 " service_type, logical_channel, simulcast_channel "
130 "FROM channelscan_channel "
131 "WHERE transportid = :TRANSPORTID");
140 while (query2.
next())
142 QString si_standard = query2.
value(22).toString();
143 si_standard = (si_standard.isEmpty()) ?
144 query.
value(13).toString() : si_standard;
147 query2.
value(0).toUInt(),
148 query2.
value(1).toUInt(),
149 query2.
value(2).toUInt(),
150 query2.
value(3).toString(),
151 query2.
value(4).toString(),
152 query2.
value(5).toString(),
153 query2.
value(6).toUInt(),
155 query2.
value(7).toUInt(),
156 query2.
value(8).toUInt(),
157 query2.
value(9).toBool(),
158 query2.
value(10).toBool(),
159 query2.
value(11).toBool(),
161 query2.
value(12).toString(),
162 query2.
value(13).toString(),
163 query2.
value(14).toString(),
164 query2.
value(15).toString(),
166 query2.
value(16).toUInt(),
167 query2.
value(17).toUInt(),
168 query2.
value(18).toUInt(),
169 query2.
value(19).toUInt(),
171 query2.
value(20).toUInt(),
172 query2.
value(21).toUInt(),
176 query2.
value(23).toBool(),
177 query2.
value(24).toBool(),
178 query2.
value(25).toBool(),
179 query2.
value(26).toBool(),
180 query2.
value(27).toBool(),
181 query2.
value(28).toBool(),
183 query2.
value(29).toBool(),
184 query2.
value(30).toBool(),
185 query2.
value(31).toBool(),
186 query2.
value(32).toBool(),
187 query2.
value(33).toBool(),
188 query2.
value(34).toInt(),
189 query2.
value(35).toString(),
190 query2.
value(36).toUInt(),
191 query2.
value(37).toUInt(),
192 query2.
value(38).toUInt());
206 "UPDATE channelscan "
208 "WHERE scanid = :SCANID");
224 "DELETE FROM channelscan_channel "
225 "WHERE scanid = :SCANID");
235 "DELETE FROM channelscan_dtv_multiplex "
236 "WHERE scanid = :SCANID");
246 "DELETE FROM channelscan "
247 "WHERE scanid = :SCANID");
262 for (
auto &
scan : scans)
270 std::vector<ScanInfo> list;
274 "SELECT scanid, cardid, sourceid, processed, scandate "
276 "ORDER BY scanid, sourceid, cardid, scandate");
286 list.emplace_back(query.
value(0).toUInt(),
287 query.
value(1).toUInt(),
288 query.
value(2).toUInt(),
289 (
bool) query.
value(3).toUInt(),
298 std::vector<ScanInfo> list;
302 "SELECT scanid, cardid, sourceid, processed, scandate "
304 "WHERE sourceid = :SOURCEID "
305 "ORDER BY scanid, sourceid, cardid, scandate");
316 list.emplace_back(query.
value(0).toUInt(),
317 query.
value(1).toUInt(),
318 query.
value(2).toUInt(),
319 (
bool) query.
value(3).toUInt(),
bool next(void)
Wrap QSqlQuery::next() so we can display the query results.
QSqlQuery wrapper that fetches a DB connection from the connection pool.
uint SaveScan(const ScanDTVTransportList &scan)
std::vector< ScanInfo > LoadScanList(void)
QDateTime as_utc(const QDateTime &old_dt)
Returns copy of QDateTime with TimeSpec set to UTC.
QVariant value(int i) const
bool exec(void)
Wrap QSqlQuery::exec() so we can display SQL.
#define LOG(_MASK_, _LEVEL_, _QSTRING_)
bool ParseTuningParams(DTVTunerType type, const QString &frequency, const QString &inversion, const QString &symbolrate, const QString &fec, const QString &polarity, const QString &hp_code_rate, const QString &lp_code_rate, const QString &ofdm_modulation, const QString &trans_mode, const QString &guard_interval, const QString &hierarchy, const QString &modulation, const QString &bandwidth, const QString &mod_sys, const QString &rolloff, const QString &signal_strength)
def scan(profile, smoonURL, gate)
QDateTime current(bool stripped)
Returns current Date and Time in UTC.
static MSqlQueryInfo InitCon(ConnectionReuse _reuse=kNormalConnection)
Only use this in combination with MSqlQuery constructor.
static void DBError(const QString &where, const MSqlQuery &query)
static bool MarkProcessed(uint scanid)
std::vector< ScanDTVTransport > ScanDTVTransportList
static void DeleteScansFromSource(uint sourceid)
void bindValue(const QString &placeholder, const QVariant &val)
Add a single binding.
ScanDTVTransportList LoadScan(uint scanid)
ChannelInsertInfoList m_channels
bool prepare(const QString &query)
QSqlQuery::prepare() is not thread safe in Qt <= 3.3.2.
static bool DeleteScan(uint scanid)