DTC::ChannelInfoList* Channel::GetChannelInfoList( uint nSourceID, uint nStartIndex, uint nCount, bool bOnlyVisible, bool bDetails ) { ChannelInfoList chanList; uint nTotalAvailable = 0; chanList = ChannelUtil::LoadChannels( 0, 0, nTotalAvailable, bOnlyVisible, ChannelUtil::kChanOrderByChanNum, ChannelUtil::kChanGroupByChanid, nSourceID ); //, nChanGroupID // ---------------------------------------------------------------------- // Build Response // ---------------------------------------------------------------------- DTC::ChannelInfoList *pChannelInfos = new DTC::ChannelInfoList(); //uint nTotalAvailable = static_cast<uint>(chanList.size()); nStartIndex = (nStartIndex > 0) ? min( nStartIndex, nTotalAvailable ) : 0; nCount = (nCount > 0) ? min( nCount, nTotalAvailable ) : nTotalAvailable; int nEndIndex = min((nStartIndex + nCount), nTotalAvailable ); ChannelInfoList::iterator chanIt; for( chanIt = chanList.begin(); chanIt != chanList.end(); ++chanIt) { DTC::ChannelInfo *pChannelInfo = pChannelInfos->AddNewChannelInfo(); ChannelInfo channelInfo = (*chanIt); if (!FillChannelInfo(pChannelInfo, channelInfo, bDetails)) throw( QString("Channel ID appears invalid.")); } int nCurPage = 0, nTotalPages = 0; if (nCount == 0) nTotalPages = 1; else nTotalPages = (int)ceil((float)nTotalAvailable / nCount); if (nTotalPages == 1) nCurPage = 1; else { nCurPage = (int)ceil((float)nStartIndex / nCount) + 1; } pChannelInfos->setStartIndex ( nStartIndex ); pChannelInfos->setCount ( nCount ); pChannelInfos->setCurrentPage ( nCurPage ); pChannelInfos->setTotalPages ( nTotalPages ); pChannelInfos->setTotalAvailable( nTotalAvailable ); pChannelInfos->setAsOf ( MythDate::current() ); pChannelInfos->setVersion ( MYTH_BINARY_VERSION ); pChannelInfos->setProtoVer ( MYTH_PROTO_VERSION ); return pChannelInfos; }
DTC::ChannelInfoList* Channel::GetChannelInfoList( uint nSourceID, uint nStartIndex, uint nCount ) { vector<uint> chanList; chanList = ChannelUtil::GetChanIDs(nSourceID); // ---------------------------------------------------------------------- // Build Response // ---------------------------------------------------------------------- DTC::ChannelInfoList *pChannelInfos = new DTC::ChannelInfoList(); nStartIndex = min( nStartIndex, (uint)chanList.size() ); nCount = (nCount > 0) ? min( nCount, (uint)chanList.size() ) : chanList.size(); int nEndIndex = min((nStartIndex + nCount), (uint)chanList.size() ); for( int n = nStartIndex; n < nEndIndex; n++) { DTC::ChannelInfo *pChannelInfo = pChannelInfos->AddNewChannelInfo(); uint chanid = chanList.at(n); if (!FillChannelInfo(pChannelInfo, chanid, true)) throw( QString("Channel ID appears invalid.")); } int curPage = 0, totalPages = 0; if (nCount == 0) totalPages = 1; else totalPages = (int)ceil((float)chanList.size() / nCount); if (totalPages == 1) curPage = 1; else { curPage = (int)ceil((float)nStartIndex / nCount) + 1; } pChannelInfos->setStartIndex ( nStartIndex ); pChannelInfos->setCount ( nCount ); pChannelInfos->setCurrentPage ( curPage ); pChannelInfos->setTotalPages ( totalPages ); pChannelInfos->setTotalAvailable( chanList.size() ); pChannelInfos->setAsOf ( MythDate::current() ); pChannelInfos->setVersion ( MYTH_BINARY_VERSION ); pChannelInfos->setProtoVer ( MYTH_PROTO_VERSION ); return pChannelInfos; }
DTC::ChannelInfoList* Channel::GetChannelInfoList( int nSourceID, int nStartIndex, int nCount ) { vector<uint> chanList; chanList = ChannelUtil::GetChanIDs(nSourceID); // ---------------------------------------------------------------------- // Build Response // ---------------------------------------------------------------------- DTC::ChannelInfoList *pChannelInfos = new DTC::ChannelInfoList(); nStartIndex = min( nStartIndex, (int)chanList.size() ); nCount = (nCount > 0) ? min( nCount, (int)chanList.size() ) : chanList.size(); int nEndIndex = min((nStartIndex + nCount), (int)chanList.size() ); for( int n = nStartIndex; n < nEndIndex; n++) { DTC::ChannelInfo *pChannelInfo = pChannelInfos->AddNewChannelInfo(); int chanid = chanList.at(n); QString channum = ChannelUtil::GetChanNum(chanid); QString format, modulation, freqtable, freqid, dtv_si_std, xmltvid, default_authority, icon; int finetune, program_number; uint64_t frequency; uint atscmajor, atscminor, transportid, networkid, mplexid; bool commfree = false; bool eit = false; bool visible = true; if (ChannelUtil::GetExtendedChannelData( nSourceID, channum, format, modulation, freqtable, freqid, finetune, frequency, dtv_si_std, program_number, atscmajor, atscminor, transportid, networkid, mplexid, commfree, eit, visible, xmltvid, default_authority, icon )) { pChannelInfo->setChanId(chanid); pChannelInfo->setChanNum(channum); pChannelInfo->setCallSign(ChannelUtil::GetCallsign(chanid)); pChannelInfo->setIconURL(icon); pChannelInfo->setChannelName(ChannelUtil::GetServiceName(chanid)); pChannelInfo->setMplexId(mplexid); pChannelInfo->setServiceId(program_number); pChannelInfo->setATSCMajorChan(atscmajor); pChannelInfo->setATSCMinorChan(atscminor); pChannelInfo->setFormat(format); pChannelInfo->setModulation(modulation); pChannelInfo->setFrequencyTable(freqtable); pChannelInfo->setFineTune(finetune); pChannelInfo->setFrequency((long)frequency); pChannelInfo->setFrequencyId(freqid); pChannelInfo->setSIStandard(dtv_si_std); pChannelInfo->setTransportId(transportid); pChannelInfo->setNetworkId(networkid); pChannelInfo->setChanFilters(ChannelUtil::GetVideoFilters(nSourceID, channum)); pChannelInfo->setSourceId(nSourceID); pChannelInfo->setCommFree(commfree); pChannelInfo->setUseEIT(eit); pChannelInfo->setVisible(visible); pChannelInfo->setXMLTVID(xmltvid); pChannelInfo->setDefaultAuth(default_authority); } } int curPage = 0, totalPages = 0; if (nCount == 0) totalPages = 1; else totalPages = (int)ceil((float)chanList.size() / nCount); if (totalPages == 1) curPage = 1; else { curPage = (int)ceil((float)nStartIndex / nCount) + 1; } pChannelInfos->setStartIndex ( nStartIndex ); pChannelInfos->setCount ( nCount ); pChannelInfos->setCurrentPage ( curPage ); pChannelInfos->setTotalPages ( totalPages ); pChannelInfos->setTotalAvailable( chanList.size() ); pChannelInfos->setAsOf ( QDateTime::currentDateTime() ); pChannelInfos->setVersion ( MYTH_BINARY_VERSION ); pChannelInfos->setProtoVer ( MYTH_PROTO_VERSION ); return pChannelInfos; }