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)
{
return params.GetMovieId() != -1 ||
params.GetEpisodeId() != -1 ||
params.GetMVideoId() != -1 ||
+ params.GetSetId() != -1 ||
(params.GetTvShowId() != -1 && params.GetSeason() <= -1 &&
!CVideoDatabaseDirectory::IsAllItem(item->GetPath()));
}
case VIDEODB_CONTENT_MUSICVIDEOS:
heading = 20392;
break;
+ case VIDEODB_CONTENT_MOVIE_SETS:
+ heading = 646;
+ break;
default:
return false;
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;
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() ||
// 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)
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);
}
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);
iSelectedLabel = pDialog->GetSelectedLabel();
}
- if (iSelectedLabel > -1)
+ if (iSelectedLabel > -1 && iSelectedLabel < list.Size())
return database.LinkMovieToTvshow(dbId, list[iSelectedLabel]->GetVideoInfoTag()->m_iDbId, bRemove);
return false;