return details;
}
-CVideoInfoTag CVideoDatabase::GetDetailsForTvShow(auto_ptr<Dataset> &pDS, bool getDetails /* = false */)
+CVideoInfoTag CVideoDatabase::GetDetailsForTvShow(auto_ptr<Dataset> &pDS, bool getDetails /* = false */, CFileItem* item /* = NULL */)
{
- return GetDetailsForTvShow(pDS->get_sql_record(), getDetails);
+ return GetDetailsForTvShow(pDS->get_sql_record(), getDetails, item);
}
-CVideoInfoTag CVideoDatabase::GetDetailsForTvShow(const dbiplus::sql_record* const record, bool getDetails /* = false */)
+CVideoInfoTag CVideoDatabase::GetDetailsForTvShow(const dbiplus::sql_record* const record, bool getDetails /* = false */, CFileItem* item /* = NULL */)
{
CVideoInfoTag details;
details.m_playCount = record->at(VIDEODB_DETAILS_TVSHOW_NUM_WATCHED).get_asInt();
details.m_strShowPath = details.m_strPath;
details.m_strShowTitle = details.m_strTitle;
+ if (details.m_premiered.IsValid())
+ details.m_iYear = details.m_premiered.GetYear();
movieTime += XbmcThreads::SystemClockMillis() - time; time = XbmcThreads::SystemClockMillis();
castTime += XbmcThreads::SystemClockMillis() - time; time = XbmcThreads::SystemClockMillis();
details.m_strPictureURL.Parse();
}
+
+ if (item != NULL)
+ {
+ item->m_dateTime = details.m_premiered;
+ item->SetProperty("totalseasons", record->at(VIDEODB_DETAILS_TVSHOW_NUM_SEASONS).get_asInt());
+ item->SetProperty("totalepisodes", details.m_iEpisode);
+ item->SetProperty("numepisodes", details.m_iEpisode); // will be changed later to reflect watchmode setting
+ item->SetProperty("watchedepisodes", details.m_playCount);
+ item->SetProperty("unwatchedepisodes", details.m_iEpisode - details.m_playCount);
+ }
+ details.m_playCount = (details.m_iEpisode <= details.m_playCount) ? 1 : 0;
+
return details;
}
unsigned int targetRow = (unsigned int)it->at(FieldRow).asInteger();
const dbiplus::sql_record* const record = data.at(targetRow);
- CVideoInfoTag movie = GetDetailsForTvShow(record, false);
+ CFileItemPtr pItem(new CFileItem());
+ CVideoInfoTag movie = GetDetailsForTvShow(record, false, pItem.get());
if ((CProfilesManager::Get().GetMasterProfile().getLockMode() == LOCK_MODE_EVERYONE ||
g_passwordManager.bMasterUser ||
g_passwordManager.IsDatabasePathUnlocked(movie.m_strPath, *CMediaSourceSettings::Get().GetSources("video"))) &&
(!g_advancedSettings.m_bVideoLibraryHideEmptySeries || movie.m_iEpisode > 0))
{
- CFileItemPtr pItem(new CFileItem(movie));
+ pItem->SetFromVideoInfoTag(movie);
CVideoDbUrl itemUrl = videoUrl;
CStdString path = StringUtils::Format("%ld/", record->at(0).get_asInt());
itemUrl.AppendPath(path);
pItem->SetPath(itemUrl.ToString());
- pItem->m_dateTime = movie.m_premiered;
- pItem->GetVideoInfoTag()->m_iYear = pItem->m_dateTime.GetYear();
- pItem->SetProperty("totalseasons", record->at(VIDEODB_DETAILS_TVSHOW_NUM_SEASONS).get_asInt());
- pItem->SetProperty("totalepisodes", movie.m_iEpisode);
- pItem->SetProperty("numepisodes", movie.m_iEpisode); // will be changed later to reflect watchmode setting
- pItem->SetProperty("watchedepisodes", movie.m_playCount);
- pItem->SetProperty("unwatchedepisodes", movie.m_iEpisode - movie.m_playCount);
- pItem->GetVideoInfoTag()->m_playCount = (movie.m_iEpisode == movie.m_playCount) ? 1 : 0;
pItem->SetOverlayImage(CGUIListItem::ICON_OVERLAY_UNWATCHED, (pItem->GetVideoInfoTag()->m_playCount > 0) && (pItem->GetVideoInfoTag()->m_iEpisode > 0));
items.Add(pItem);
}
CVideoInfoTag GetDetailsByTypeAndId(VIDEODB_CONTENT_TYPE type, int id);
CVideoInfoTag GetDetailsForMovie(std::auto_ptr<dbiplus::Dataset> &pDS, bool getDetails = false);
CVideoInfoTag GetDetailsForMovie(const dbiplus::sql_record* const record, bool getDetails = false);
- CVideoInfoTag GetDetailsForTvShow(std::auto_ptr<dbiplus::Dataset> &pDS, bool getDetails = false);
- CVideoInfoTag GetDetailsForTvShow(const dbiplus::sql_record* const record, bool getDetails = false);
+ CVideoInfoTag GetDetailsForTvShow(std::auto_ptr<dbiplus::Dataset> &pDS, bool getDetails = false, CFileItem* item = NULL);
+ CVideoInfoTag GetDetailsForTvShow(const dbiplus::sql_record* const record, bool getDetails = false, CFileItem* item = NULL);
CVideoInfoTag GetDetailsForEpisode(std::auto_ptr<dbiplus::Dataset> &pDS, bool getDetails = false);
CVideoInfoTag GetDetailsForEpisode(const dbiplus::sql_record* const record, bool getDetails = false);
CVideoInfoTag GetDetailsForMusicVideo(std::auto_ptr<dbiplus::Dataset> &pDS, bool getDetails = false);