m_strTitle == right.m_strTitle &&
m_strIconPath == right.m_strIconPath &&
m_strThumbnailPath == right.m_strThumbnailPath &&
- m_strFanartPath == right.m_strFanartPath);
+ m_strFanartPath == right.m_strFanartPath &&
+ m_iRecordingId == right.m_iRecordingId);
}
bool CPVRRecording::operator !=(const CPVRRecording& right) const
m_strThumbnailPath = StringUtils::EmptyString;
m_strFanartPath = StringUtils::EmptyString;
m_bGotMetaData = false;
+ m_iRecordingId = 0;
m_recordingTime.Reset();
CVideoInfoTag::Reset();
CStdString m_strIconPath; /*!< icon path */
CStdString m_strThumbnailPath; /*!< thumbnail path */
CStdString m_strFanartPath; /*!< fanart path */
+ unsigned m_iRecordingId; /*!< id that won't change while xbmc is running */
CPVRRecording(void);
CPVRRecording(const PVR_RECORDING &recording, unsigned int iClientId);
using namespace PVR;
CPVRRecordings::CPVRRecordings(void) :
- m_bIsUpdating(false)
+ m_bIsUpdating(false),
+ m_iLastId(0)
{
}
}
}
+CFileItemPtr CPVRRecordings::GetById(unsigned int iId) const
+{
+ CFileItemPtr item;
+ CSingleLock lock(m_critSection);
+ for (std::vector<CPVRRecording *>::const_iterator it = m_recordings.begin(); !item && it != m_recordings.end(); ++it)
+ {
+ if (iId == (*it)->m_iRecordingId)
+ item = CFileItemPtr(new CFileItem(**it));
+ }
+
+ return item;
+}
+
CFileItemPtr CPVRRecordings::GetByPath(const CStdString &path)
{
CURL url(path);
{
CPVRRecording *newTag = new CPVRRecording();
newTag->Update(tag);
+ newTag->m_iRecordingId = ++m_iLastId;
m_recordings.push_back(newTag);
}
}
CCriticalSection m_critSection;
bool m_bIsUpdating;
std::vector<CPVRRecording *> m_recordings;
+ unsigned int m_iLastId;
virtual void UpdateFromClients(void);
virtual CStdString TrimSlashes(const CStdString &strOrig) const;
CFileItemPtr GetByPath(const CStdString &path);
void SetPlayCount(const CFileItem &item, int iPlayCount);
void GetAll(CFileItemList &items);
+ CFileItemPtr GetById(unsigned int iId) const;
bool HasAllRecordingsPathExtension(const CStdString &strDirectory);
};