Skip to content

Commit

Permalink
Merge pull request xbmc#24509 from CrystalP/fix-watched-versionsfolder
Browse files Browse the repository at this point in the history
[video] Fix watched overlay image of parent movie item
  • Loading branch information
CrystalP authored Jan 16, 2024
2 parents 6e2851d + 1bf1c36 commit 78a2ef1
Show file tree
Hide file tree
Showing 9 changed files with 37 additions and 23 deletions.
6 changes: 4 additions & 2 deletions xbmc/FileItem.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1754,7 +1754,8 @@ void CFileItem::UpdateInfo(const CFileItem &item, bool replaceLabels /*=true*/)

m_pvrRecordingInfoTag = item.m_pvrRecordingInfoTag;

SetOverlayImage(ICON_OVERLAY_UNWATCHED, GetVideoInfoTag()->GetPlayCount() > 0);
SetOverlayImage(GetVideoInfoTag()->GetPlayCount() > 0 ? CGUIListItem::ICON_OVERLAY_WATCHED
: CGUIListItem::ICON_OVERLAY_UNWATCHED);
SetInvalid();
}
if (item.HasMusicInfoTag())
Expand Down Expand Up @@ -1818,7 +1819,8 @@ void CFileItem::MergeInfo(const CFileItem& item)

m_pvrRecordingInfoTag = item.m_pvrRecordingInfoTag;

SetOverlayImage(ICON_OVERLAY_UNWATCHED, GetVideoInfoTag()->GetPlayCount() > 0);
SetOverlayImage(GetVideoInfoTag()->GetPlayCount() > 0 ? CGUIListItem::ICON_OVERLAY_WATCHED
: CGUIListItem::ICON_OVERLAY_UNWATCHED);
SetInvalid();
}
if (item.HasMusicInfoTag())
Expand Down
7 changes: 3 additions & 4 deletions xbmc/guilib/GUIListItem.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -154,12 +154,11 @@ bool CGUIListItem::HasArt(const std::string &type) const
return !GetArt(type).empty();
}

void CGUIListItem::SetOverlayImage(GUIIconOverlay icon, bool bOnOff)
void CGUIListItem::SetOverlayImage(GUIIconOverlay icon)
{
GUIIconOverlay newIcon = (bOnOff) ? GUIIconOverlay((int)(icon)+1) : icon;
if (m_overlayIcon == newIcon)
if (m_overlayIcon == icon)
return;
m_overlayIcon = newIcon;
m_overlayIcon = icon;
SetInvalid();
}

Expand Down
2 changes: 1 addition & 1 deletion xbmc/guilib/GUIListItem.h
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ class CGUIListItem
void SetLabel2(const std::string& strLabel);
const std::string& GetLabel2() const;

void SetOverlayImage(GUIIconOverlay icon, bool bOnOff=false);
void SetOverlayImage(GUIIconOverlay icon);
std::string GetOverlayImage() const;

/*! \brief Set a particular art type for an item
Expand Down
3 changes: 2 additions & 1 deletion xbmc/network/upnp/UPnPInternal.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1269,7 +1269,8 @@ std::shared_ptr<CFileItem> BuildObject(PLT_MediaObject* entry,
}
else if (type == MediaTypeEpisode || type == MediaTypeMovie)
watched = (played > 0);
pItem->SetOverlayImage(CGUIListItem::ICON_OVERLAY_UNWATCHED, watched);
pItem->SetOverlayImage(watched ? CGUIListItem::ICON_OVERLAY_WATCHED
: CGUIListItem::ICON_OVERLAY_UNWATCHED);
}
return pItem;
}
Expand Down
7 changes: 4 additions & 3 deletions xbmc/pvr/filesystem/PVRGUIDirectory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -321,7 +321,7 @@ void GetSubDirectories(const CPVRRecordingsPath& recParentPath,
item->SetProperty("sizeinbytes", UINT64_C(0));

// Assume all folders are watched, we'll change the overlay later
item->SetOverlayImage(CGUIListItem::ICON_OVERLAY_WATCHED, false);
item->SetOverlayImage(CGUIListItem::ICON_OVERLAY_WATCHED);
results.Add(item);
}
else
Expand Down Expand Up @@ -360,7 +360,7 @@ void GetSubDirectories(const CPVRRecordingsPath& recParentPath,

// Change the watched overlay to unwatched for folders containing unwatched entries
for (auto& item : unwatchedFolders)
item->SetOverlayImage(CGUIListItem::ICON_OVERLAY_UNWATCHED, false);
item->SetOverlayImage(CGUIListItem::ICON_OVERLAY_UNWATCHED);
}

} // unnamed namespace
Expand Down Expand Up @@ -412,7 +412,8 @@ bool CPVRGUIDirectory::GetRecordingsDirectory(CFileItemList& results) const
continue;

item = std::make_shared<CFileItem>(recording);
item->SetOverlayImage(CGUIListItem::ICON_OVERLAY_UNWATCHED, recording->GetPlayCount() > 0);
item->SetOverlayImage(recording->GetPlayCount() > 0 ? CGUIListItem::ICON_OVERLAY_WATCHED
: CGUIListItem::ICON_OVERLAY_UNWATCHED);
results.Add(item);
}
}
Expand Down
3 changes: 2 additions & 1 deletion xbmc/utils/GroupUtils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,8 @@ bool GroupUtils::Group(GroupBy groupBy, const std::string &baseDir, const CFileI
pItem->SetProperty("watched", iWatched);
pItem->SetProperty("unwatched", (int)set->second.size() - iWatched);
pItem->SetProperty("inprogress", inProgress);
pItem->SetOverlayImage(CGUIListItem::ICON_OVERLAY_UNWATCHED, setInfo->GetPlayCount() > 0);
pItem->SetOverlayImage(setInfo->GetPlayCount() > 0 ? CGUIListItem::ICON_OVERLAY_WATCHED
: CGUIListItem::ICON_OVERLAY_UNWATCHED);

groupedItems.Add(pItem);
}
Expand Down
2 changes: 1 addition & 1 deletion xbmc/utils/SaveFileStateJob.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ void CSaveFileState::DoWork(CFileItem& item,
// consider this item as played
const CDateTime newLastPlayed = videodatabase.IncrementPlayCount(item);

item.SetOverlayImage(CGUIListItem::ICON_OVERLAY_UNWATCHED, true);
item.SetOverlayImage(CGUIListItem::ICON_OVERLAY_WATCHED);
updateListing = true;

if (item.HasVideoInfoTag())
Expand Down
22 changes: 16 additions & 6 deletions xbmc/video/VideoDatabase.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7884,7 +7884,10 @@ bool CVideoDatabase::GetSeasonsByWhere(const std::string& strBaseDir, const Filt
if (iSeason == 0)
pItem->SetProperty("isspecial", true);
pItem->GetVideoInfoTag()->SetPlayCount((totalEpisodes == watchedEpisodes) ? 1 : 0);
pItem->SetOverlayImage(CGUIListItem::ICON_OVERLAY_UNWATCHED, (pItem->GetVideoInfoTag()->GetPlayCount() > 0) && (pItem->GetVideoInfoTag()->m_iEpisode > 0));
pItem->SetOverlayImage((pItem->GetVideoInfoTag()->GetPlayCount() > 0) &&
(pItem->GetVideoInfoTag()->m_iEpisode > 0)
? CGUIListItem::ICON_OVERLAY_WATCHED
: CGUIListItem::ICON_OVERLAY_UNWATCHED);

items.Add(pItem);
}
Expand Down Expand Up @@ -8188,7 +8191,8 @@ bool CVideoDatabase::GetMoviesByWhere(const std::string& strBaseDir, const Filte
pItem->SetPath(path);
pItem->SetDynPath(movie.m_strFileNameAndPath);

pItem->SetOverlayImage(CGUIListItem::ICON_OVERLAY_UNWATCHED,movie.GetPlayCount() > 0);
pItem->SetOverlayImage(movie.GetPlayCount() > 0 ? CGUIListItem::ICON_OVERLAY_WATCHED
: CGUIListItem::ICON_OVERLAY_UNWATCHED);
items.Add(pItem);
}
}
Expand Down Expand Up @@ -8297,7 +8301,10 @@ bool CVideoDatabase::GetTvShowsByWhere(const std::string& strBaseDir, const Filt
itemUrl.AppendPath(path);
pItem->SetPath(itemUrl.ToString());

pItem->SetOverlayImage(CGUIListItem::ICON_OVERLAY_UNWATCHED, (pItem->GetVideoInfoTag()->GetPlayCount() > 0) && (pItem->GetVideoInfoTag()->m_iEpisode > 0));
pItem->SetOverlayImage((pItem->GetVideoInfoTag()->GetPlayCount() > 0) &&
(pItem->GetVideoInfoTag()->m_iEpisode > 0)
? CGUIListItem::ICON_OVERLAY_WATCHED
: CGUIListItem::ICON_OVERLAY_UNWATCHED);
items.Add(pItem);
}
}
Expand Down Expand Up @@ -8433,7 +8440,8 @@ bool CVideoDatabase::GetEpisodesByWhere(const std::string& strBaseDir, const Fil
pItem->SetPath(itemUrl.ToString());
pItem->SetDynPath(episode.m_strFileNameAndPath);

pItem->SetOverlayImage(CGUIListItem::ICON_OVERLAY_UNWATCHED, episode.GetPlayCount() > 0);
pItem->SetOverlayImage(episode.GetPlayCount() > 0 ? CGUIListItem::ICON_OVERLAY_WATCHED
: CGUIListItem::ICON_OVERLAY_UNWATCHED);
pItem->m_dateTime = episode.m_firstAired;
items.Add(pItem);
}
Expand Down Expand Up @@ -9339,7 +9347,8 @@ bool CVideoDatabase::GetMusicVideosByWhere(const std::string &baseDir, const Fil
item->SetPath(itemUrl.ToString());
item->SetDynPath(musicvideo.m_strFileNameAndPath);

item->SetOverlayImage(CGUIListItem::ICON_OVERLAY_UNWATCHED, musicvideo.GetPlayCount() > 0);
item->SetOverlayImage(musicvideo.GetPlayCount() > 0 ? CGUIListItem::ICON_OVERLAY_WATCHED
: CGUIListItem::ICON_OVERLAY_UNWATCHED);
items.Add(item);
}
}
Expand Down Expand Up @@ -12033,7 +12042,8 @@ void CVideoDatabase::GetVideoVersions(VideoDbContentType itemType,

item->SetDynPath(infoTag.m_strFileNameAndPath);

item->SetOverlayImage(CGUIListItem::ICON_OVERLAY_UNWATCHED, GetPlayCount(idFile) > 0);
item->SetOverlayImage(GetPlayCount(idFile) > 0 ? CGUIListItem::ICON_OVERLAY_WATCHED
: CGUIListItem::ICON_OVERLAY_UNWATCHED);

items.Add(item);
}
Expand Down
8 changes: 4 additions & 4 deletions xbmc/video/windows/GUIWindowVideoBase.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -727,9 +727,10 @@ void CGUIWindowVideoBase::LoadVideoInfo(CFileItemList& items,

// set the watched overlay
if (pItem->IsVideo())
pItem->SetOverlayImage(CGUIListItem::ICON_OVERLAY_UNWATCHED,
pItem->HasVideoInfoTag() &&
pItem->GetVideoInfoTag()->GetPlayCount() > 0);
pItem->SetOverlayImage(pItem->HasVideoInfoTag() &&
pItem->GetVideoInfoTag()->GetPlayCount() > 0
? CGUIListItem::ICON_OVERLAY_WATCHED
: CGUIListItem::ICON_OVERLAY_UNWATCHED);
}
}
}
Expand Down Expand Up @@ -1480,7 +1481,6 @@ void CGUIWindowVideoBase::UpdateVideoVersionItems()
videoVersionId = VIDEO_VERSION_ID_ALL;
item->GetVideoInfoTag()->GetAssetInfo().SetId(videoVersionId);
item->m_bIsFolder = true;
item->SetOverlayImage(CGUIListItem::ICON_OVERLAY_UNWATCHED, true);
}

CVideoDbUrl itemUrl;
Expand Down

0 comments on commit 78a2ef1

Please sign in to comment.