DTC::RecRuleList* Dvr::GetRecordScheduleList( int nStartIndex, int nCount, const QString &Sort, bool Descending ) { Scheduler::SchedSortColumn sortingColumn; if (Sort.toLower() == "lastrecorded") sortingColumn = Scheduler::kSortLastRecorded; else if (Sort.toLower() == "title") sortingColumn = Scheduler::kSortTitle; else if (Sort.toLower() == "priority") sortingColumn = Scheduler::kSortPriority; else if (Sort.toLower() == "type") sortingColumn = Scheduler::kSortType; RecList recList; Scheduler::GetAllScheduled(recList, sortingColumn, !Descending); // ---------------------------------------------------------------------- // Build Response // ---------------------------------------------------------------------- DTC::RecRuleList *pRecRules = new DTC::RecRuleList(); nStartIndex = min( nStartIndex, (int)recList.size() ); nCount = (nCount > 0) ? min( nCount, (int)recList.size() ) : recList.size(); int nEndIndex = min((nStartIndex + nCount), (int)recList.size() ); for( int n = nStartIndex; n < nEndIndex; n++) { RecordingInfo *info = recList[n]; if (info != NULL) { DTC::RecRule *pRecRule = pRecRules->AddNewRecRule(); FillRecRuleInfo( pRecRule, info->GetRecordingRule() ); } } // ---------------------------------------------------------------------- pRecRules->setStartIndex ( nStartIndex ); pRecRules->setCount ( nCount ); pRecRules->setTotalAvailable( recList.size() ); pRecRules->setAsOf ( MythDate::current() ); pRecRules->setVersion ( MYTH_BINARY_VERSION ); pRecRules->setProtoVer ( MYTH_PROTO_VERSION ); while (!recList.empty()) { delete recList.back(); recList.pop_back(); } return pRecRules; }
DTC::RecRuleList* Dvr::GetRecordScheduleList( int nStartIndex, int nCount ) { RecList recList; Scheduler::GetAllScheduled(recList); // ---------------------------------------------------------------------- // Build Response // ---------------------------------------------------------------------- DTC::RecRuleList *pRecRules = new DTC::RecRuleList(); nStartIndex = min( nStartIndex, (int)recList.size() ); nCount = (nCount > 0) ? min( nCount, (int)recList.size() ) : recList.size(); int nEndIndex = min((nStartIndex + nCount), (int)recList.size() ); for( int n = nStartIndex; n < nEndIndex; n++) { RecordingInfo *info = recList[n]; if (info != NULL) { DTC::RecRule *pRecRule = pRecRules->AddNewRecRule(); FillRecRuleInfo( pRecRule, info->GetRecordingRule() ); } } // ---------------------------------------------------------------------- pRecRules->setStartIndex ( nStartIndex ); pRecRules->setCount ( nCount ); pRecRules->setTotalAvailable( recList.size() ); pRecRules->setAsOf ( MythDate::current() ); pRecRules->setVersion ( MYTH_BINARY_VERSION ); pRecRules->setProtoVer ( MYTH_PROTO_VERSION ); while (!recList.empty()) { delete recList.back(); recList.pop_back(); } return pRecRules; }
void ScheduleCommon::customEvent(QEvent *event) { if (event->type() == DialogCompletionEvent::kEventType) { DialogCompletionEvent *dce = (DialogCompletionEvent*)(event); QString resultid = dce->GetId(); QString resulttext = dce->GetResultText(); if (resultid == "editrecording") { if (!dce->GetData().canConvert<RecordingInfo>()) return; RecordingInfo recInfo = dce->GetData().value<RecordingInfo>(); if (resulttext == tr("Record this showing")) { if (recInfo.GetRecordingRuleType() == kNotRecording) recInfo.ApplyRecordStateChange(kSingleRecord); else { recInfo.ApplyRecordStateChange(kOverrideRecord); if (recInfo.GetRecordingStartTime() < MythDate::current()) recInfo.ReactivateRecording(); } } else if (resulttext == tr("Record all showings")) recInfo.ApplyRecordStateChange(kAllRecord); else if (resulttext == tr("Record one showing (this episode)") || resulttext == tr("Record one showing")) { recInfo.ApplyRecordStateChange(kOneRecord, false); recInfo.GetRecordingRule()->m_filter |= 64; // This episode recInfo.GetRecordingRule()->Save(); } else if (resulttext == tr("Record all showings (this channel)")) { recInfo.ApplyRecordStateChange(kAllRecord, false); recInfo.GetRecordingRule()->m_filter |= 1024; // This channel recInfo.GetRecordingRule()->Save(); } else if (resulttext == tr("Stop this recording")) { RemoteStopRecording(&recInfo); } else if (resulttext == tr("Modify recording options") || resulttext == tr("Add override rule")) { if (recInfo.GetRecordingRuleType() == kSingleRecord || recInfo.GetRecordingRuleType() == kOverrideRecord || recInfo.GetRecordingRuleType() == kOneRecord) EditScheduled(&recInfo); else MakeOverride(&recInfo); } else if (resulttext == tr("Restart this recording")) recInfo.ReactivateRecording(); else if (resulttext == tr("Forget previous recording")) recInfo.ForgetHistory(); else if (resulttext == tr("Don't record this showing")) recInfo.ApplyRecordStateChange(kDontRecord); else if (resulttext == tr("Never record this episode")) { recInfo.ApplyNeverRecord(); } else if (resulttext == tr("Edit recording rule") || resulttext == tr("Edit override rule")) EditScheduled(&recInfo); else if (resulttext == tr("Delete recording rule") || resulttext == tr("Delete override rule")) recInfo.ApplyRecordStateChange(kNotRecording); } } }
void ScheduleCommon::customEvent(QEvent *event) { if (event->type() == DialogCompletionEvent::kEventType) { DialogCompletionEvent *dce = (DialogCompletionEvent*)(event); QString resultid = dce->GetId(); QString resulttext = dce->GetResultText(); if (resultid == "schedulenotscheduled") { if (!qVariantCanConvert<RecordingInfo>(dce->GetData())) return; RecordingInfo recInfo = qVariantValue<RecordingInfo> (dce->GetData()); if (resulttext == tr("Record only this showing")) recInfo.ApplyRecordStateChange(kSingleRecord); else if (resulttext == tr("Record all showings")) recInfo.ApplyRecordStateChange(kAllRecord); else if (resulttext == tr("Record one showing of this episode")) { recInfo.ApplyRecordStateChange(kOneRecord, false); recInfo.GetRecordingRule()->m_filter |= 64; // This episode recInfo.GetRecordingRule()->Save(); } else if (resulttext == tr("Record all showings on this channel")) { recInfo.ApplyRecordStateChange(kAllRecord, false); recInfo.GetRecordingRule()->m_filter |= 1024; // This channel recInfo.GetRecordingRule()->Save(); } else if (resulttext == tr("Record with more options")) { EditScheduled(&recInfo); } } else if (resultid == "schedulenotrecording") { if (!qVariantCanConvert<RecordingInfo>(dce->GetData())) return; RecordingInfo recInfo = qVariantValue<RecordingInfo> (dce->GetData()); if (resulttext == tr("Restart recording this showing")) recInfo.ReactivateRecording(); else if (resulttext == tr("Record this showing anyway")) { recInfo.ApplyRecordStateChange(kOverrideRecord); if (recInfo.GetRecordingStartTime() < MythDate::current()) recInfo.ReactivateRecording(); } else if (resulttext == tr("Forget previous recording")) recInfo.ForgetHistory(); else if (resulttext == tr("Don't record this showing")) recInfo.ApplyRecordStateChange(kDontRecord); else if (resulttext == tr("Never record this episode")) { recInfo.SetRecordingStatus(rsNeverRecord); recInfo.SetScheduledStartTime(MythDate::current()); recInfo.SetScheduledEndTime(recInfo.GetRecordingStartTime()); recInfo.AddHistory(true, true); } else if (resulttext == tr("Delete override rule") || resulttext == tr("Delete recording rule")) recInfo.ApplyRecordStateChange(kNotRecording); else if (resulttext == tr("Edit override options") || resulttext == tr("Edit recording options")) { EditScheduled(&recInfo); } else if (resulttext == tr("Override this showing with options")) { MakeOverride(&recInfo); } } else if (resultid == "schedulerecording") { if (!qVariantCanConvert<RecordingInfo>(dce->GetData())) return; RecordingInfo recInfo = qVariantValue<RecordingInfo> (dce->GetData()); if (resulttext == tr("Restart recording this showing")) recInfo.ReactivateRecording(); else if (resulttext == tr("Stop recording this showing")) { ProgramInfo pginfo( recInfo.GetChanID(), recInfo.GetRecordingStartTime()); if (pginfo.GetChanID()) RemoteStopRecording(&pginfo); } else if (resulttext == tr("Don't record this showing")) recInfo.ApplyRecordStateChange(kDontRecord); else if (resulttext == tr("Never record this episode")) { recInfo.SetRecordingStatus(rsNeverRecord); recInfo.SetScheduledStartTime(MythDate::current()); recInfo.SetScheduledEndTime(recInfo.GetRecordingStartTime()); recInfo.AddHistory(true, true); } else if (resulttext == tr("Delete override rule") || resulttext == tr("Delete recording rule")) recInfo.ApplyRecordStateChange(kNotRecording); else if (resulttext == tr("Edit options for this showing")) { if (recInfo.GetRecordingRuleType() == kSingleRecord || recInfo.GetRecordingRuleType() == kOverrideRecord || recInfo.GetRecordingRuleType() == kOneRecord) EditScheduled(&recInfo); else MakeOverride(&recInfo, true); } else if (resulttext == tr("Edit override options") || resulttext == tr("Edit recording options")) { EditScheduled(&recInfo); } else if (resulttext == tr("Override this showing with options")) { MakeOverride(&recInfo); } } } }
int Dvr::AddRecordSchedule ( int nChanId, QDateTime dStartTime, int nParentId, bool bInactive, uint nSeason, uint nEpisode, QString sInetref, int nFindId, QString sType, QString sSearchType, int nRecPriority, uint nPreferredInput, int nStartOffset, int nEndOffset, QString sDupMethod, QString sDupIn, uint nFilter, QString sRecProfile, QString sRecGroup, QString sStorageGroup, QString sPlayGroup, bool bAutoExpire, int nMaxEpisodes, bool bMaxNewest, bool bAutoCommflag, bool bAutoTranscode, bool bAutoMetaLookup, bool bAutoUserJob1, bool bAutoUserJob2, bool bAutoUserJob3, bool bAutoUserJob4, int nTranscoder) { RecordingInfo *info = new RecordingInfo(nChanId, dStartTime, false); RecordingRule *rule = info->GetRecordingRule(); delete info; info = NULL; if (sType.isEmpty()) sType = "single"; if (sSearchType.isEmpty()) sSearchType = "none"; if (sDupMethod.isEmpty()) sDupMethod = "subtitleanddescription"; if (sDupIn.isEmpty()) sDupIn = "all"; rule->m_type = recTypeFromString(sType); rule->m_searchType = searchTypeFromString(sSearchType); rule->m_dupMethod = dupMethodFromString(sDupMethod); rule->m_dupIn = dupInFromString(sDupIn); if (sRecProfile.isEmpty()) sRecProfile = "Default"; if (sRecGroup.isEmpty()) sRecGroup = "Default"; if (sStorageGroup.isEmpty()) sStorageGroup = "Default"; if (sPlayGroup.isEmpty()) sPlayGroup = "Default"; rule->m_recProfile = sRecProfile; rule->m_recGroup = sRecGroup; rule->m_storageGroup = sStorageGroup; rule->m_playGroup = sPlayGroup; rule->m_parentRecID = nParentId; rule->m_isInactive = bInactive; rule->m_season = nSeason; rule->m_episode = nEpisode; rule->m_inetref = sInetref; rule->m_findid = nFindId; rule->m_recPriority = nRecPriority; rule->m_prefInput = nPreferredInput; rule->m_startOffset = nStartOffset; rule->m_endOffset = nEndOffset; rule->m_filter = nFilter; rule->m_autoExpire = bAutoExpire; rule->m_maxEpisodes = nMaxEpisodes; rule->m_maxNewest = bMaxNewest; rule->m_autoCommFlag = bAutoCommflag; rule->m_autoTranscode = bAutoTranscode; rule->m_autoMetadataLookup = bAutoMetaLookup; rule->m_autoUserJob1 = bAutoUserJob1; rule->m_autoUserJob2 = bAutoUserJob2; rule->m_autoUserJob3 = bAutoUserJob3; rule->m_autoUserJob4 = bAutoUserJob4; rule->m_transcoder = nTranscoder; rule->Save(); int recid = rule->m_recordID; delete rule; rule = NULL; return recid; }