CStdString CGUIWindowPVRRecordings::GetResumeString(const CFileItem& item) { CStdString resumeString; if (item.IsPVRRecording()) { // First try to find the resume position on the back-end, if that fails use video database int positionInSeconds = item.GetPVRRecordingInfoTag()->GetLastPlayedPosition(); // If the back-end does report a saved position it will be picked up by FileItem if (positionInSeconds < 0) { CVideoDatabase db; if (db.Open()) { CBookmark bookmark; CStdString itemPath(item.GetPVRRecordingInfoTag()->m_strFileNameAndPath); if (db.GetResumeBookMark(itemPath, bookmark) ) positionInSeconds = lrint(bookmark.timeInSeconds); db.Close(); } } // Suppress resume from 0 if (positionInSeconds > 0) resumeString = StringUtils::Format(g_localizeStrings.Get(12022).c_str(), StringUtils::SecondsToTimeString(positionInSeconds).c_str()); } return resumeString; }
bool CGUIWindowPVRSearch::OnContextButton(const CFileItem &item, CONTEXT_BUTTON button) { bool bReturn = false; switch(button) { case CONTEXT_BUTTON_FIND: { m_searchfilter.Reset(); // construct the search term if (item.IsEPG()) m_searchfilter.m_strSearchTerm = "\"" + item.GetEPGInfoTag()->Title() + "\""; else if (item.IsPVRChannel()) { CEpgInfoTagPtr tag(item.GetPVRChannelInfoTag()->GetEPGNow()); if (tag) m_searchfilter.m_strSearchTerm = "\"" + tag->Title() + "\""; } else if (item.IsUsablePVRRecording()) m_searchfilter.m_strSearchTerm = "\"" + item.GetPVRRecordingInfoTag()->m_strTitle + "\""; else if (item.IsPVRTimer()) m_searchfilter.m_strSearchTerm = "\"" + item.GetPVRTimerInfoTag()->m_strTitle + "\""; m_bSearchConfirmed = true; Refresh(true); bReturn = true; break; } default: bReturn = false; } return bReturn; }
CPVRClientPtr CPVRManager::GetClient(const CFileItem &item) const { int iClientID = PVR_INVALID_CLIENT_ID; if (item.HasPVRChannelInfoTag()) iClientID = item.GetPVRChannelInfoTag()->ClientID(); else if (item.HasPVRRecordingInfoTag()) iClientID = item.GetPVRRecordingInfoTag()->m_iClientId; else if (item.HasPVRTimerInfoTag()) iClientID = item.GetPVRTimerInfoTag()->m_iClientId; else if (item.HasEPGInfoTag()) iClientID = item.GetEPGInfoTag()->ClientID(); else if (URIUtils::IsPVRChannel(item.GetPath())) { const std::shared_ptr<CFileItem> channelItem = m_channelGroups->GetByPath(item.GetPath()); if (channelItem) iClientID = channelItem->GetPVRChannelInfoTag()->ClientID(); } else if (URIUtils::IsPVRRecording(item.GetPath())) { const std::shared_ptr<CFileItem> recordingItem = m_recordings->GetByPath(item.GetPath()); if (recordingItem) iClientID = recordingItem->GetPVRRecordingInfoTag()->ClientID(); } return GetClient(iClientID); }
bool CPVRRecordings::DeleteRecording(const CFileItem &item) { if (!item.IsPVRRecording()) { CLog::Log(LOGERROR, "CPVRRecordings - %s - cannot delete file: no valid recording tag", __FUNCTION__); return false; } CPVRRecording *tag = (CPVRRecording *)item.GetPVRRecordingInfoTag(); return tag->Delete(); }
bool CPVRRecordings::RenameRecording(CFileItem &item, std::string &strNewName) { if (!item.IsUsablePVRRecording()) { CLog::Log(LOGERROR, "CPVRRecordings - %s - cannot rename file: no valid recording tag", __FUNCTION__); return false; } CPVRRecordingPtr tag = item.GetPVRRecordingInfoTag(); return tag->Rename(strNewName); }
bool CPVRRecordings::Undelete(const CFileItem &item) { if (!item.IsDeletedPVRRecording()) { CLog::Log(LOGERROR, "CPVRRecordings - %s - cannot undelete file: no valid recording tag", __FUNCTION__); return false; } CPVRRecordingPtr tag = item.GetPVRRecordingInfoTag(); return tag->Undelete(); }
CStdString CGUIWindowPVRRecordings::GetResumeString(const CFileItem& item) { CStdString resumeString; if (item.IsPVRRecording()) { // First try to find the resume position on the back-end, if that fails use video database int positionInSeconds = item.GetPVRRecordingInfoTag()->GetLastPlayedPosition(); // If the back-end does report a saved position then make sure there is a corresponding resume bookmark if (positionInSeconds > 0) { CBookmark bookmark; bookmark.timeInSeconds = positionInSeconds; bookmark.totalTimeInSeconds = (double)item.GetPVRRecordingInfoTag()->GetDuration(); CVideoDatabase db; if (db.Open()) { CStdString itemPath(item.GetPVRRecordingInfoTag()->m_strFileNameAndPath); db.AddBookMarkToFile(itemPath, bookmark, CBookmark::RESUME); db.Close(); } } else if (positionInSeconds < 0) { CVideoDatabase db; if (db.Open()) { CBookmark bookmark; CStdString itemPath(item.GetPVRRecordingInfoTag()->m_strFileNameAndPath); if (db.GetResumeBookMark(itemPath, bookmark) ) positionInSeconds = lrint(bookmark.timeInSeconds); db.Close(); } } // Suppress resume from 0 if (positionInSeconds > 0) resumeString.Format(g_localizeStrings.Get(12022).c_str(), StringUtils::SecondsToTimeString(positionInSeconds).c_str()); } return resumeString; }
bool CPVRRecordings::RenameRecording(CFileItem &item, CStdString &strNewName) { bool bReturn = false; if (!item.IsPVRRecording()) { CLog::Log(LOGERROR, "CPVRRecordings - %s - cannot rename file: no valid recording tag", __FUNCTION__); return bReturn; } CPVRRecording* tag = item.GetPVRRecordingInfoTag(); return tag->Rename(strNewName); }
CPVRClientPtr CPVRManager::GetClient(const CFileItem &item) const { int iClientID = PVR_INVALID_CLIENT_ID; if (item.HasPVRChannelInfoTag()) iClientID = item.GetPVRChannelInfoTag()->ClientID(); else if (item.HasPVRRecordingInfoTag()) iClientID = item.GetPVRRecordingInfoTag()->m_iClientId; else if (item.HasPVRTimerInfoTag()) iClientID = item.GetPVRTimerInfoTag()->m_iClientId; else if (item.HasEPGInfoTag()) iClientID = item.GetEPGInfoTag()->ClientID(); return GetClient(iClientID); }
void CPVRRecordings::SetPlayCount(const CFileItem &item, int iPlayCount) { if (!item.HasPVRRecordingInfoTag()) return; const CPVRRecording *recording = item.GetPVRRecordingInfoTag(); CSingleLock lock(m_critSection); for (unsigned int iRecordingPtr = 0; iRecordingPtr < m_recordings.size(); iRecordingPtr++) { CPVRRecording *current = m_recordings.at(iRecordingPtr); if (*current == *recording) { current->SetPlayCount(iPlayCount); break; } } }
CStdString CGUIWindowPVRRecordings::GetResumeString(CFileItem item) { CStdString resumeString; if (item.IsPVRRecording()) { CVideoDatabase db; if (db.Open()) { CBookmark bookmark; CStdString itemPath(item.GetPVRRecordingInfoTag()->m_strFileNameAndPath); if (db.GetResumeBookMark(itemPath, bookmark) ) resumeString.Format(g_localizeStrings.Get(12022).c_str(), StringUtils::SecondsToTimeString(lrint(bookmark.timeInSeconds)).c_str()); db.Close(); } } return resumeString; }