53 vector<uint> chanList;
63 nStartIndex = min( nStartIndex, (
int)chanList.size() );
64 nCount = (nCount > 0) ? min( nCount, (
int)chanList.size() ) : chanList.size();
65 int nEndIndex = min((nStartIndex + nCount), (
int)chanList.size() );
67 for(
int n = nStartIndex;
n < nEndIndex;
n++)
71 int chanid = chanList.at(
n);
73 QString
format, modulation, freqtable, freqid, dtv_si_std,
74 xmltvid, default_authority, icon;
75 int finetune, program_number;
77 uint atscmajor, atscminor, transportid, networkid, mplexid;
78 bool commfree =
false;
83 freqtable, freqid, finetune, frequency,
84 dtv_si_std, program_number, atscmajor,
85 atscminor, transportid, networkid, mplexid,
86 commfree, eit, visible, xmltvid, default_authority, icon ))
88 pChannelInfo->setChanId(chanid);
89 pChannelInfo->setChanNum(channum);
91 pChannelInfo->setIconURL(icon);
93 pChannelInfo->setMplexId(mplexid);
94 pChannelInfo->setServiceId(program_number);
95 pChannelInfo->setATSCMajorChan(atscmajor);
96 pChannelInfo->setATSCMinorChan(atscminor);
97 pChannelInfo->setFormat(format);
98 pChannelInfo->setModulation(modulation);
99 pChannelInfo->setFrequencyTable(freqtable);
100 pChannelInfo->setFineTune(finetune);
101 pChannelInfo->setFrequency((
long)frequency);
102 pChannelInfo->setFrequencyId(freqid);
103 pChannelInfo->setSIStandard(dtv_si_std);
104 pChannelInfo->setTransportId(transportid);
105 pChannelInfo->setNetworkId(networkid);
107 pChannelInfo->setSourceId(nSourceID);
108 pChannelInfo->setCommFree(commfree);
109 pChannelInfo->setUseEIT(eit);
110 pChannelInfo->setVisible(visible);
111 pChannelInfo->setXMLTVID(xmltvid);
112 pChannelInfo->setDefaultAuth(default_authority);
116 int curPage = 0, totalPages = 0;
120 totalPages = (
int)ceil((
float)chanList.size() / nCount);
126 curPage = (
int)ceil((
float)nStartIndex / nCount) + 1;
129 pChannelInfos->setStartIndex ( nStartIndex );
130 pChannelInfos->setCount ( nCount );
131 pChannelInfos->setCurrentPage ( curPage );
132 pChannelInfos->setTotalPages ( totalPages );
133 pChannelInfos->setTotalAvailable( chanList.size() );
135 pChannelInfos->setVersion ( MYTH_BINARY_VERSION );
136 pChannelInfos->setProtoVer ( MYTH_PROTO_VERSION );
138 return pChannelInfos;
148 throw( QString(
"Channel ID appears invalid."));
154 QString
format, modulation, freqtable, freqid, dtv_si_std,
155 xmltvid, default_authority, icon;
156 int finetune, program_number;
158 uint atscmajor, atscminor, transportid, networkid, mplexid;
159 bool commfree =
false;
164 freqtable, freqid, finetune, frequency,
165 dtv_si_std, program_number, atscmajor,
166 atscminor, transportid, networkid, mplexid,
167 commfree, eit, visible, xmltvid, default_authority, icon ))
169 pChannelInfo->setChanId(nChanID);
170 pChannelInfo->setChanNum(channum);
172 pChannelInfo->setIconURL(icon);
174 pChannelInfo->setMplexId(mplexid);
175 pChannelInfo->setServiceId(program_number);
176 pChannelInfo->setATSCMajorChan(atscmajor);
177 pChannelInfo->setATSCMinorChan(atscminor);
178 pChannelInfo->setFormat(format);
179 pChannelInfo->setModulation(modulation);
180 pChannelInfo->setFrequencyTable(freqtable);
181 pChannelInfo->setFineTune(finetune);
182 pChannelInfo->setFrequency((
long)frequency);
183 pChannelInfo->setFrequencyId(freqid);
184 pChannelInfo->setSIStandard(dtv_si_std);
185 pChannelInfo->setTransportId(transportid);
186 pChannelInfo->setNetworkId(networkid);
188 pChannelInfo->setSourceId(sourceid);
189 pChannelInfo->setCommFree(commfree);
190 pChannelInfo->setUseEIT(eit);
191 pChannelInfo->setVisible(visible);
192 pChannelInfo->setXMLTVID(xmltvid);
193 pChannelInfo->setDefaultAuth(default_authority);
196 throw( QString(
"Channel ID appears invalid."));
204 const QString &CallSign,
205 const QString &ChannelName,
206 const QString &ChannelNumber,
208 uint ATSCMajorChannel,
209 uint ATSCMinorChannel,
212 const QString &FrequencyID,
215 const QString &XMLTVID,
216 const QString &DefaultAuthority )
218 bool bResult =
false;
221 CallSign, ChannelName, ChannelNumber,
222 ServiceID, ATSCMajorChannel, ATSCMinorChannel,
223 UseEIT, !visible,
false, FrequencyID,
224 Icon, Format, XMLTVID, DefaultAuthority );
232 const QString &CallSign,
233 const QString &ChannelName,
234 const QString &ChannelNumber,
236 uint ATSCMajorChannel,
237 uint ATSCMinorChannel,
240 const QString &FrequencyID,
243 const QString &XMLTVID,
244 const QString &DefaultAuthority )
246 bool bResult =
false;
249 CallSign, ChannelName, ChannelNumber,
250 ServiceID, ATSCMajorChannel, ATSCMinorChannel,
251 UseEIT, !visible,
false, FrequencyID,
252 Icon, Format, XMLTVID, DefaultAuthority );
259 bool bResult =
false;
275 throw( QString(
"Database not open while trying to list "
278 query.
prepare(
"SELECT sourceid, name, xmltvgrabber, userid, "
279 "freqtable, lineupid, password, useeit, configpath, "
280 "dvb_nit_id FROM videosource "
281 "ORDER BY sourceid" );
287 throw( QString(
"Database Error executing query." ));
301 pVideoSource->setId ( query.
value(0).toInt() );
302 pVideoSource->setSourceName ( query.
value(1).toString() );
303 pVideoSource->setGrabber ( query.
value(2).toString() );
304 pVideoSource->setUserId ( query.
value(3).toString() );
305 pVideoSource->setFreqTable ( query.
value(4).toString() );
306 pVideoSource->setLineupId ( query.
value(5).toString() );
307 pVideoSource->setPassword ( query.
value(6).toString() );
308 pVideoSource->setUseEIT ( query.
value(7).toBool() );
309 pVideoSource->setConfigPath ( query.
value(8).toString() );
310 pVideoSource->setNITId ( query.
value(9).toInt() );
314 pList->setVersion ( MYTH_BINARY_VERSION );
315 pList->setProtoVer ( MYTH_PROTO_VERSION );
329 throw( QString(
"Database not open while trying to list "
332 query.
prepare(
"SELECT name, xmltvgrabber, userid, "
333 "freqtable, lineupid, password, useeit, configpath, "
334 "dvb_nit_id FROM videosource WHERE sourceid = :SOURCEID "
335 "ORDER BY sourceid" );
342 throw( QString(
"Database Error executing query." ));
353 pVideoSource->setId ( nSourceID );
354 pVideoSource->setSourceName ( query.
value(0).toString() );
355 pVideoSource->setGrabber ( query.
value(1).toString() );
356 pVideoSource->setUserId ( query.
value(2).toString() );
357 pVideoSource->setFreqTable ( query.
value(3).toString() );
358 pVideoSource->setLineupId ( query.
value(4).toString() );
359 pVideoSource->setPassword ( query.
value(5).toString() );
360 pVideoSource->setUseEIT ( query.
value(6).toBool() );
361 pVideoSource->setConfigPath ( query.
value(7).toString() );
362 pVideoSource->setNITId ( query.
value(8).toInt() );
373 const QString &sSourceName,
374 const QString &sGrabber,
375 const QString &sUserId,
376 const QString &sFreqTable,
377 const QString &sLineupId,
378 const QString &sPassword,
380 const QString &sConfigPath,
383 bool bResult =
false;
386 sLineupId, sPassword, bUseEIT, sConfigPath,
397 const QString &sGrabber,
398 const QString &sUserId,
399 const QString &sFreqTable,
400 const QString &sLineupId,
401 const QString &sPassword,
403 const QString &sConfigPath,
407 sLineupId, sPassword, bUseEIT, sConfigPath,
419 bool bResult =
false;
431 const QString &sUserId,
432 const QString &sPassword )
438 if (sSource.toLower() ==
"schedulesdirect1" ||
439 sSource.toLower() ==
"schedulesdirect" ||
446 throw( QString(
"Unable to grab lineups. Check info."));
450 DDLineupList::const_iterator it;
451 for (it = lineups.begin(); it != lineups.end(); ++it)
455 pLineup->setLineupId((*it).lineupid);
456 pLineup->setName((*it).name);
457 pLineup->setDisplayName((*it).displayname);
458 pLineup->setType((*it).type);
459 pLineup->setPostal((*it).postal);
460 pLineup->setDevice((*it).device);
473 bool bWaitForFinish )
475 if ( nSourceId < 1 || nCardId < 1)
476 throw( QString(
"A source ID and card ID are both required."));
485 throw( QString(
"This device is incompatible with channel fetching.") );
507 throw( QString(
"Database not open while trying to list "
510 query.
prepare(
"SELECT mplexid, sourceid, transportid, networkid, "
511 "frequency, inversion, symbolrate, fec, polarity, "
512 "modulation, bandwidth, lp_code_rate, transmission_mode, "
513 "guard_interval, visible, constellation, hierarchy, hp_code_rate, "
514 "mod_sys, rolloff, sistandard, serviceversion, updatetimestamp, "
515 "default_authority FROM dtv_multiplex WHERE sourceid = :SOURCEID "
516 "ORDER BY mplexid" );
523 throw( QString(
"Database Error executing query." ));
526 int muxCount = query.
size();
534 nStartIndex = min( nStartIndex, muxCount );
535 nCount = (nCount > 0) ? min( nCount, muxCount ) : muxCount;
536 int nEndIndex = min((nStartIndex + nCount), muxCount );
538 for(
int n = nStartIndex;
n < nEndIndex;
n++)
544 pVideoMultiplex->setMplexId( query.
value(0).toInt() );
545 pVideoMultiplex->setSourceId( query.
value(1).toInt() );
546 pVideoMultiplex->setTransportId( query.
value(2).toInt() );
547 pVideoMultiplex->setNetworkId( query.
value(3).toInt() );
548 pVideoMultiplex->setFrequency( query.
value(4).toLongLong() );
549 pVideoMultiplex->setInversion( query.
value(5).toString() );
550 pVideoMultiplex->setSymbolRate( query.
value(6).toLongLong() );
551 pVideoMultiplex->setFEC( query.
value(7).toString() );
552 pVideoMultiplex->setPolarity( query.
value(8).toString() );
553 pVideoMultiplex->setModulation( query.
value(9).toString() );
554 pVideoMultiplex->setBandwidth( query.
value(10).toString() );
555 pVideoMultiplex->setLPCodeRate( query.
value(11).toString() );
556 pVideoMultiplex->setTransmissionMode( query.
value(12).toString() );
557 pVideoMultiplex->setGuardInterval( query.
value(13).toString() );
558 pVideoMultiplex->setVisible( query.
value(14).toBool() );
559 pVideoMultiplex->setConstellation( query.
value(15).toString() );
560 pVideoMultiplex->setHierarchy( query.
value(16).toString() );
561 pVideoMultiplex->setHPCodeRate( query.
value(17).toString() );
562 pVideoMultiplex->setModulationSystem( query.
value(18).toString() );
563 pVideoMultiplex->setRollOff( query.
value(19).toString() );
564 pVideoMultiplex->setSIStandard( query.
value(20).toString() );
565 pVideoMultiplex->setServiceVersion( query.
value(21).toInt() );
566 pVideoMultiplex->setUpdateTimeStamp(
568 pVideoMultiplex->setDefaultAuthority( query.
value(23).toString() );
572 int curPage = 0, totalPages = 0;
576 totalPages = (
int)ceil((
float)muxCount / nCount);
582 curPage = (
int)ceil((
float)nStartIndex / nCount) + 1;
585 pVideoMultiplexes->setStartIndex ( nStartIndex );
586 pVideoMultiplexes->setCount ( nCount );
587 pVideoMultiplexes->setCurrentPage ( curPage );
588 pVideoMultiplexes->setTotalPages ( totalPages );
589 pVideoMultiplexes->setTotalAvailable( muxCount );
591 pVideoMultiplexes->setVersion ( MYTH_BINARY_VERSION );
592 pVideoMultiplexes->setProtoVer ( MYTH_PROTO_VERSION );
594 return pVideoMultiplexes;
602 throw( QString(
"Database not open while trying to list "
603 "Video Multiplex."));
605 query.
prepare(
"SELECT sourceid, transportid, networkid, "
606 "frequency, inversion, symbolrate, fec, polarity, "
607 "modulation, bandwidth, lp_code_rate, transmission_mode, "
608 "guard_interval, visible, constellation, hierarchy, hp_code_rate, "
609 "mod_sys, rolloff, sistandard, serviceversion, updatetimestamp, "
610 "default_authority FROM dtv_multiplex WHERE mplexid = :MPLEXID "
611 "ORDER BY mplexid" );
618 throw( QString(
"Database Error executing query." ));
625 pVideoMultiplex->setMplexId( nMplexID );
626 pVideoMultiplex->setSourceId( query.
value(0).toInt() );
627 pVideoMultiplex->setTransportId( query.
value(1).toInt() );
628 pVideoMultiplex->setNetworkId( query.
value(2).toInt() );
629 pVideoMultiplex->setFrequency( query.
value(3).toLongLong() );
630 pVideoMultiplex->setInversion( query.
value(4).toString() );
631 pVideoMultiplex->setSymbolRate( query.
value(5).toLongLong() );
632 pVideoMultiplex->setFEC( query.
value(6).toString() );
633 pVideoMultiplex->setPolarity( query.
value(7).toString() );
634 pVideoMultiplex->setModulation( query.
value(8).toString() );
635 pVideoMultiplex->setBandwidth( query.
value(9).toString() );
636 pVideoMultiplex->setLPCodeRate( query.
value(10).toString() );
637 pVideoMultiplex->setTransmissionMode( query.
value(11).toString() );
638 pVideoMultiplex->setGuardInterval( query.
value(12).toString() );
639 pVideoMultiplex->setVisible( query.
value(13).toBool() );
640 pVideoMultiplex->setConstellation( query.
value(14).toString() );
641 pVideoMultiplex->setHierarchy( query.
value(15).toString() );
642 pVideoMultiplex->setHPCodeRate( query.
value(16).toString() );
643 pVideoMultiplex->setModulationSystem( query.
value(17).toString() );
644 pVideoMultiplex->setRollOff( query.
value(18).toString() );
645 pVideoMultiplex->setSIStandard( query.
value(19).toString() );
646 pVideoMultiplex->setServiceVersion( query.
value(20).toInt() );
647 pVideoMultiplex->setUpdateTimeStamp(
649 pVideoMultiplex->setDefaultAuthority( query.
value(22).toString() );
652 return pVideoMultiplex;
664 throw( QString(
"Database not open while trying to get source name."));
666 query.
prepare(
"SELECT name FROM videosource WHERE sourceid = :SOURCEID ");
673 throw( QString(
"Database Error executing query." ));
680 QString sourceName = query.
value(0).toString();
682 QString xmltvFile =
GetConfDir() +
'/' + sourceName +
".xmltv";
686 QFile file(xmltvFile);
687 if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
690 while (!file.atEnd())
692 QByteArray line = file.readLine();
694 if (line.startsWith(
"channel="))
696 QString
id = line.mid(8, -1).trimmed();
705 throw(QString(
"SourceID (%1) not found").arg(SourceID));