Exemple #1
0
  std::string CPVRGUIActions::GetResumeLabel(const CFileItem &item) const
  {
    std::string resumeString;

    const CPVRRecordingPtr recording(CPVRItem(CFileItemPtr(new CFileItem(item))).GetRecording());
    if (recording && !recording->IsDeleted())
    {
      // First try to find the resume position on the back-end, if that fails use video database
      int positionInSeconds = recording->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(recording->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, TIME_FORMAT_HH_MM_SS).c_str());
    }
    return resumeString;
  }