void CGUIWindowVideoNav::OnDeleteItem(CFileItemPtr pItem) { if (m_vecItems->IsParentFolder()) return; if (!m_vecItems->IsVideoDb() && !pItem->IsVideoDb()) { if (!pItem->IsPath("newsmartplaylist://video") && !pItem->IsPath("special://videoplaylists/") && !pItem->IsPath("sources://video/") && !URIUtils::IsProtocol(pItem->GetPath(), "newtag")) CGUIWindowVideoBase::OnDeleteItem(pItem); } else if (StringUtils::StartsWithNoCase(pItem->GetPath(), "videodb://movies/sets/") && pItem->GetPath().size() > 22 && pItem->m_bIsFolder) { CGUIDialogYesNo* pDialog = (CGUIDialogYesNo*)g_windowManager.GetWindow(WINDOW_DIALOG_YES_NO); pDialog->SetHeading(CVariant{432}); std::string strLabel = StringUtils::Format(g_localizeStrings.Get(433).c_str(),pItem->GetLabel().c_str()); pDialog->SetLine(1, CVariant{std::move(strLabel)}); pDialog->SetLine(2, CVariant{""}); pDialog->Open(); if (pDialog->IsConfirmed()) { CFileItemList items; CDirectory::GetDirectory(pItem->GetPath(),items,"",DIR_FLAG_NO_FILE_DIRS); for (int i=0;i<items.Size();++i) OnDeleteItem(items[i]); CVideoDatabaseDirectory dir; CQueryParams params; dir.GetQueryParams(pItem->GetPath(),params); m_database.DeleteSet(params.GetSetId()); } } else if (m_vecItems->GetContent() == "tags" && pItem->m_bIsFolder) { CGUIDialogYesNo* pDialog = (CGUIDialogYesNo*)g_windowManager.GetWindow(WINDOW_DIALOG_YES_NO); pDialog->SetHeading(CVariant{432}); pDialog->SetLine(1, CVariant{ StringUtils::Format(g_localizeStrings.Get(433).c_str(), pItem->GetLabel().c_str()) }); pDialog->SetLine(2, CVariant{""}); pDialog->Open(); if (pDialog->IsConfirmed()) { CVideoDatabaseDirectory dir; CQueryParams params; dir.GetQueryParams(pItem->GetPath(), params); m_database.DeleteTag(params.GetTagId(), (VIDEODB_CONTENT_TYPE)params.GetContentType()); } } else if (m_vecItems->IsPath(CUtil::VideoPlaylistsLocation()) || m_vecItems->IsPath("special://videoplaylists/")) { pItem->m_bIsFolder = false; CFileUtils::DeleteItem(pItem); } else { if (!CGUIDialogVideoInfo::DeleteVideoItem(pItem)) return; } int itemNumber = m_viewControl.GetSelectedItem(); int select = itemNumber >= m_vecItems->Size()-1 ? itemNumber-1 : itemNumber; m_viewControl.SetSelectedItem(select); CUtil::DeleteVideoDatabaseDirectoryCache(); }
bool CDirectoryNodeTitleMusicVideos::GetContent(CFileItemList& items) const { CVideoDatabase videodatabase; if (!videodatabase.Open()) return false; CQueryParams params; CollectQueryParams(params); bool bSuccess=videodatabase.GetMusicVideosNav(BuildPath(), items, params.GetGenreId(), params.GetYear(), params.GetActorId(), params.GetDirectorId(), params.GetStudioId(), params.GetAlbumId(), params.GetTagId()); videodatabase.Close(); return bSuccess; }
bool CVideoDatabaseDirectory::GetLabel(const std::string& strDirectory, std::string& strLabel) { strLabel = ""; std::string path = CLegacyPathTranslation::TranslateVideoDbPath(strDirectory); auto_ptr<CDirectoryNode> pNode(CDirectoryNode::ParseURL(path)); if (!pNode.get() || path.empty()) return false; // first see if there's any filter criteria CQueryParams params; CDirectoryNode::GetDatabaseInfo(path, params); CVideoDatabase videodatabase; if (!videodatabase.Open()) return false; // get genre if (params.GetGenreId() != -1) strLabel += videodatabase.GetGenreById(params.GetGenreId()); // get country if (params.GetCountryId() != -1) strLabel += videodatabase.GetCountryById(params.GetCountryId()); // get set if (params.GetSetId() != -1) strLabel += videodatabase.GetSetById(params.GetSetId()); // get tag if (params.GetTagId() != -1) strLabel += videodatabase.GetTagById(params.GetTagId()); // get year if (params.GetYear() != -1) { std::string strTemp = StringUtils::Format("%i",params.GetYear()); if (!strLabel.empty()) strLabel += " / "; strLabel += strTemp; } if (strLabel.empty()) { switch (pNode->GetChildType()) { case NODE_TYPE_TITLE_MOVIES: case NODE_TYPE_TITLE_TVSHOWS: case NODE_TYPE_TITLE_MUSICVIDEOS: strLabel = g_localizeStrings.Get(369); break; case NODE_TYPE_ACTOR: // Actor strLabel = g_localizeStrings.Get(344); break; case NODE_TYPE_GENRE: // Genres strLabel = g_localizeStrings.Get(135); break; case NODE_TYPE_COUNTRY: // Countries strLabel = g_localizeStrings.Get(20451); break; case NODE_TYPE_YEAR: // Year strLabel = g_localizeStrings.Get(562); break; case NODE_TYPE_DIRECTOR: // Director strLabel = g_localizeStrings.Get(20348); break; case NODE_TYPE_SETS: // Sets strLabel = g_localizeStrings.Get(20434); break; case NODE_TYPE_TAGS: // Tags strLabel = g_localizeStrings.Get(20459); break; case NODE_TYPE_MOVIES_OVERVIEW: // Movies strLabel = g_localizeStrings.Get(342); break; case NODE_TYPE_TVSHOWS_OVERVIEW: // TV Shows strLabel = g_localizeStrings.Get(20343); break; case NODE_TYPE_RECENTLY_ADDED_MOVIES: // Recently Added Movies strLabel = g_localizeStrings.Get(20386); break; case NODE_TYPE_RECENTLY_ADDED_EPISODES: // Recently Added Episodes strLabel = g_localizeStrings.Get(20387); break; case NODE_TYPE_STUDIO: // Studios strLabel = g_localizeStrings.Get(20388); break; case NODE_TYPE_MUSICVIDEOS_OVERVIEW: // Music Videos strLabel = g_localizeStrings.Get(20389); break; case NODE_TYPE_RECENTLY_ADDED_MUSICVIDEOS: // Recently Added Music Videos strLabel = g_localizeStrings.Get(20390); break; case NODE_TYPE_SEASONS: // Seasons strLabel = g_localizeStrings.Get(33054); break; case NODE_TYPE_EPISODES: // Episodes strLabel = g_localizeStrings.Get(20360); break; default: return false; } } return true; }
bool CDirectoryNodeTitleMovies::GetContent(CFileItemList& items) const { CVideoDatabase videodatabase; if (!videodatabase.Open()) return false; CQueryParams params; CollectQueryParams(params); CStdString strBaseDir=BuildPath(); bool bSuccess=videodatabase.GetMoviesNav(strBaseDir, items, params.GetGenreId(), params.GetYear(), params.GetActorId(), params.GetDirectorId(), params.GetStudioId(), params.GetCountryId(), params.GetSetId(), params.GetTagId()); videodatabase.Close(); return bSuccess; }