X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_xbmc;a=blobdiff_plain;f=xbmc%2Fvideo%2Fdialogs%2FGUIDialogVideoInfo.cpp;h=78a0515dd2fd50567e96eb7a5d19b5b75c48952f;hp=cbcec74214cf65e0e3bc3b6babada41dffea7849;hb=c4ef10a6b2516f235aa9818487667f716305d5bb;hpb=51c7d69d52be9a6e978847004e1725ecefddcb16 diff --git a/xbmc/video/dialogs/GUIDialogVideoInfo.cpp b/xbmc/video/dialogs/GUIDialogVideoInfo.cpp index cbcec74..78a0515 100644 --- a/xbmc/video/dialogs/GUIDialogVideoInfo.cpp +++ b/xbmc/video/dialogs/GUIDialogVideoInfo.cpp @@ -305,11 +305,14 @@ void CGUIDialogVideoInfo::SetMovie(const CFileItem *item) m_movieItem->m_dateTime = m_movieItem->GetVideoInfoTag()->m_premiered; if(m_movieItem->GetVideoInfoTag()->m_iYear == 0 && m_movieItem->m_dateTime.IsValid()) m_movieItem->GetVideoInfoTag()->m_iYear = m_movieItem->m_dateTime.GetYear(); - m_movieItem->SetProperty("totalepisodes", m_movieItem->GetVideoInfoTag()->m_iEpisode); - m_movieItem->SetProperty("numepisodes", m_movieItem->GetVideoInfoTag()->m_iEpisode); // info view has no concept of current watched/unwatched filter as we could come here from files view, but set for consistency - m_movieItem->SetProperty("watchedepisodes", m_movieItem->GetVideoInfoTag()->m_playCount); - m_movieItem->SetProperty("unwatchedepisodes", m_movieItem->GetVideoInfoTag()->m_iEpisode - m_movieItem->GetVideoInfoTag()->m_playCount); - m_movieItem->GetVideoInfoTag()->m_playCount = (m_movieItem->GetVideoInfoTag()->m_iEpisode == m_movieItem->GetVideoInfoTag()->m_playCount) ? 1 : 0; + if (!m_movieItem->HasProperty("totalepisodes")) + { + m_movieItem->SetProperty("totalepisodes", m_movieItem->GetVideoInfoTag()->m_iEpisode); + m_movieItem->SetProperty("numepisodes", m_movieItem->GetVideoInfoTag()->m_iEpisode); // info view has no concept of current watched/unwatched filter as we could come here from files view, but set for consistency + m_movieItem->SetProperty("watchedepisodes", m_movieItem->GetVideoInfoTag()->m_playCount); + m_movieItem->SetProperty("unwatchedepisodes", m_movieItem->GetVideoInfoTag()->m_iEpisode - m_movieItem->GetVideoInfoTag()->m_playCount); + m_movieItem->GetVideoInfoTag()->m_playCount = (m_movieItem->GetVideoInfoTag()->m_iEpisode == m_movieItem->GetVideoInfoTag()->m_playCount) ? 1 : 0; + } } else if (type == VIDEODB_CONTENT_EPISODES) { @@ -1199,6 +1202,7 @@ bool CGUIDialogVideoInfo::CanDeleteVideoItem(const CFileItemPtr &item) return params.GetMovieId() != -1 || params.GetEpisodeId() != -1 || params.GetMVideoId() != -1 || + params.GetSetId() != -1 || (params.GetTvShowId() != -1 && params.GetSeason() <= -1 && !CVideoDatabaseDirectory::IsAllItem(item->GetPath())); } @@ -1236,6 +1240,9 @@ bool CGUIDialogVideoInfo::DeleteVideoItemFromDatabase(const CFileItemPtr &item, case VIDEODB_CONTENT_MUSICVIDEOS: heading = 20392; break; + case VIDEODB_CONTENT_MOVIE_SETS: + heading = 646; + break; default: return false; @@ -1259,10 +1266,16 @@ bool CGUIDialogVideoInfo::DeleteVideoItemFromDatabase(const CFileItemPtr &item, if (!pDialog->IsConfirmed()) return false; - CStdString path; CVideoDatabase database; database.Open(); + if (type == VIDEODB_CONTENT_MOVIE_SETS) + { + database.DeleteSet(item->GetVideoInfoTag()->m_iDbId); + return true; + } + + CStdString path; database.GetFilePathById(item->GetVideoInfoTag()->m_iDbId, path, type); if (path.empty()) return false; @@ -1303,7 +1316,6 @@ bool CGUIDialogVideoInfo::DeleteVideoItem(const CFileItemPtr &item, bool unavail if (!DeleteVideoItemFromDatabase(item, unavailable)) return false; - bool result = true; // check if the user is allowed to delete the actual file as well if ((CProfilesManager::Get().GetCurrentProfile().getLockMode() == LOCK_MODE_EVERYONE || !CProfilesManager::Get().GetCurrentProfile().filesLocked() || @@ -1332,13 +1344,13 @@ bool CGUIDialogVideoInfo::DeleteVideoItem(const CFileItemPtr &item, bool unavail // HACK: stacked files need to be treated as folders in order to be deleted if (item->IsStack()) item->m_bIsFolder = true; - result = CFileUtils::DeleteItem(item); + CFileUtils::DeleteItem(item); } } CUtil::DeleteVideoDatabaseDirectoryCache(); - return result; + return true; } bool CGUIDialogVideoInfo::ManageMovieSets(const CFileItemPtr &item) @@ -1438,8 +1450,7 @@ bool CGUIDialogVideoInfo::GetMoviesForSet(const CFileItem *setItem, CFileItemLis bool CGUIDialogVideoInfo::GetSetForMovie(const CFileItem *movieItem, CFileItemPtr &selectedSet) { - if (movieItem == NULL || !movieItem->HasVideoInfoTag() || - selectedSet == NULL) + if (movieItem == NULL || !movieItem->HasVideoInfoTag()) return false; CVideoDatabase videodb; @@ -1448,7 +1459,7 @@ bool CGUIDialogVideoInfo::GetSetForMovie(const CFileItem *movieItem, CFileItemPt CFileItemList listItems; CStdString baseDir = "videodb://movies/sets/"; - if (!CDirectory::GetDirectory(baseDir, listItems) || listItems.Size() <= 0) + if (!CDirectory::GetDirectory(baseDir, listItems)) return false; listItems.Sort(SortByLabel, SortOrderAscending, SortAttributeIgnoreArticle); @@ -1917,7 +1928,7 @@ bool CGUIDialogVideoInfo::LinkMovieToTvShow(const CFileItemPtr &item, bool bRemo } int iSelectedLabel = 0; - if (list.Size() > 1) + if (list.Size() > 1 || (!bRemove && !list.IsEmpty())) { list.Sort(SortByLabel, SortOrderAscending, CSettings::Get().GetBool("filelists.ignorethewhensorting") ? SortAttributeIgnoreArticle : SortAttributeNone); CGUIDialogSelect* pDialog = (CGUIDialogSelect*)g_windowManager.GetWindow(WINDOW_DIALOG_SELECT); @@ -1928,7 +1939,7 @@ bool CGUIDialogVideoInfo::LinkMovieToTvShow(const CFileItemPtr &item, bool bRemo iSelectedLabel = pDialog->GetSelectedLabel(); } - if (iSelectedLabel > -1) + if (iSelectedLabel > -1 && iSelectedLabel < list.Size()) return database.LinkMovieToTvshow(dbId, list[iSelectedLabel]->GetVideoInfoTag()->m_iDbId, bRemove); return false;