DTC::ProgramList* Dvr::GetUpcomingList( int nStartIndex, int nCount, bool bShowAll ) { RecordingList recordingList; RecordingList tmpList; bool hasConflicts; LoadFromScheduler(tmpList, hasConflicts); // Sort the upcoming into only those which will record RecordingList::iterator it = tmpList.begin(); for(; it < tmpList.end(); ++it) { if (!bShowAll && ((*it)->GetRecordingStatus() <= rsWillRecord) && ((*it)->GetRecordingStartTime() >= QDateTime::currentDateTime())) { recordingList.push_back(new RecordingInfo(**it)); } else if (bShowAll && ((*it)->GetRecordingStartTime() >= QDateTime::currentDateTime())) { recordingList.push_back(new RecordingInfo(**it)); } } // ---------------------------------------------------------------------- // Build Response // ---------------------------------------------------------------------- DTC::ProgramList *pPrograms = new DTC::ProgramList(); nStartIndex = min( nStartIndex, (int)recordingList.size() ); nCount = (nCount > 0) ? min( nCount, (int)recordingList.size() ) : recordingList.size(); int nEndIndex = min((nStartIndex + nCount), (int)recordingList.size() ); for( int n = nStartIndex; n < nEndIndex; n++) { ProgramInfo *pInfo = recordingList[ n ]; DTC::Program *pProgram = pPrograms->AddNewProgram(); FillProgramInfo( pProgram, pInfo, true ); } // ---------------------------------------------------------------------- pPrograms->setStartIndex ( nStartIndex ); pPrograms->setCount ( nCount ); pPrograms->setTotalAvailable( recordingList.size() ); pPrograms->setAsOf ( QDateTime::currentDateTime() ); pPrograms->setVersion ( MYTH_BINARY_VERSION ); pPrograms->setProtoVer ( MYTH_PROTO_VERSION ); return pPrograms; }
DTC::ProgramList* Dvr::GetConflictList( int nStartIndex, int nCount, int nRecordId ) { RecordingList recordingList; // Auto-delete deque RecList tmpList; // Standard deque, objects must be deleted if (nRecordId <= 0) nRecordId = -1; // NOTE: Fetching this information directly from the schedule is // significantly faster than using ProgramInfo::LoadFromScheduler() Scheduler *scheduler = dynamic_cast<Scheduler*>(gCoreContext->GetScheduler()); if (scheduler) scheduler->GetAllPending(tmpList, nRecordId); // Sort the upcoming into only those which are conflicts RecList::iterator it = tmpList.begin(); for(; it < tmpList.end(); ++it) { if (((*it)->GetRecordingStatus() == RecStatus::Conflict) && ((*it)->GetRecordingStartTime() >= MythDate::current())) { recordingList.push_back(new RecordingInfo(**it)); } delete *it; *it = NULL; } // ---------------------------------------------------------------------- // Build Response // ---------------------------------------------------------------------- DTC::ProgramList *pPrograms = new DTC::ProgramList(); nStartIndex = min( nStartIndex, (int)recordingList.size() ); nCount = (nCount > 0) ? min( nCount, (int)recordingList.size() ) : recordingList.size(); int nEndIndex = min((nStartIndex + nCount), (int)recordingList.size() ); for( int n = nStartIndex; n < nEndIndex; n++) { ProgramInfo *pInfo = recordingList[ n ]; DTC::Program *pProgram = pPrograms->AddNewProgram(); FillProgramInfo( pProgram, pInfo, true ); } // ---------------------------------------------------------------------- pPrograms->setStartIndex ( nStartIndex ); pPrograms->setCount ( nCount ); pPrograms->setTotalAvailable( recordingList.size() ); pPrograms->setAsOf ( MythDate::current() ); pPrograms->setVersion ( MYTH_BINARY_VERSION ); pPrograms->setProtoVer ( MYTH_PROTO_VERSION ); return pPrograms; }
DTC::ProgramList* Dvr::GetConflictList( int nStartIndex, int nCount, int nRecordId ) { RecordingList recordingList; RecordingList tmpList; bool hasConflicts; if (nRecordId <= 0) nRecordId = -1; LoadFromScheduler(tmpList, hasConflicts, "", nRecordId); // Sort the upcoming into only those which are conflicts RecordingList::iterator it = tmpList.begin(); for(; it < tmpList.end(); ++it) { if (nRecordId > 0 && (*it)->GetRecordingRuleID() != static_cast<uint>(nRecordId)) continue; if (((*it)->GetRecordingStatus() == RecStatus::Conflict) && ((*it)->GetRecordingStartTime() >= MythDate::current())) { recordingList.push_back(new RecordingInfo(**it)); } } // ---------------------------------------------------------------------- // Build Response // ---------------------------------------------------------------------- DTC::ProgramList *pPrograms = new DTC::ProgramList(); nStartIndex = min( nStartIndex, (int)recordingList.size() ); nCount = (nCount > 0) ? min( nCount, (int)recordingList.size() ) : recordingList.size(); int nEndIndex = min((nStartIndex + nCount), (int)recordingList.size() ); for( int n = nStartIndex; n < nEndIndex; n++) { ProgramInfo *pInfo = recordingList[ n ]; DTC::Program *pProgram = pPrograms->AddNewProgram(); FillProgramInfo( pProgram, pInfo, true ); } // ---------------------------------------------------------------------- pPrograms->setStartIndex ( nStartIndex ); pPrograms->setCount ( nCount ); pPrograms->setTotalAvailable( recordingList.size() ); pPrograms->setAsOf ( MythDate::current() ); pPrograms->setVersion ( MYTH_BINARY_VERSION ); pPrograms->setProtoVer ( MYTH_PROTO_VERSION ); return pPrograms; }