std::string CGUIWindowPVRRecordings::GetResumeString(const CFileItem& item) { std::string resumeString; if (item.IsUsablePVRRecording()) { // 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; std::string 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; }
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); }