Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Nexus][video] Fix default select action #23598

Merged
merged 2 commits into from
Aug 8, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
3 changes: 3 additions & 0 deletions addons/resource.language.en_gb/resources/strings.po
Original file line number Diff line number Diff line change
Expand Up @@ -9777,6 +9777,7 @@ msgstr ""
#: xbmc/FileItem.cpp
#: xbmc/GUIInfoManager.cpp
#: xbmc/pvr/PVRManager.cpp
#: xbmc/video/windows/GUIWindowVideoBase.cpp
#: xbmc/utils/SystemInfo.cpp
msgctxt "#19055"
msgid "No information available"
Expand Down Expand Up @@ -12934,6 +12935,8 @@ msgctxt "#20175"
msgid "UPnP server"
msgstr ""

#. Label used for a video info message box
#: xbmc/video/windows/GUIWindowVideoBase.cpp
msgctxt "#20176"
msgid "Show video information"
msgstr ""
Expand Down
2 changes: 1 addition & 1 deletion xbmc/video/VideoInfoScanner.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -658,7 +658,7 @@ namespace VIDEO
if (ProgressCancelled(pDlgProgress, 198, pItem->GetLabel()))
return INFO_CANCELLED;

if (m_database.HasMovieInfo(pItem->GetPath()))
if (m_database.HasMovieInfo(pItem->GetDynPath()))
return INFO_HAVE_ALREADY;

if (m_handle)
Expand Down
27 changes: 11 additions & 16 deletions xbmc/video/windows/GUIWindowVideoBase.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -206,11 +206,11 @@ bool CGUIWindowVideoBase::OnMessage(CGUIMessage& message)
return CGUIMediaWindow::OnMessage(message);
}

void CGUIWindowVideoBase::OnItemInfo(const CFileItem& fileItem, ADDON::ScraperPtr& scraper)
bool CGUIWindowVideoBase::OnItemInfo(const CFileItem& fileItem, ADDON::ScraperPtr& scraper)
{
if (fileItem.IsParentFolder() || fileItem.m_bIsShareOrDrive || fileItem.IsPath("add") ||
(fileItem.IsPlayList() && !URIUtils::HasExtension(fileItem.GetDynPath(), ".strm")))
return;
(fileItem.IsPlayList() && !URIUtils::HasExtension(fileItem.GetDynPath(), ".strm")))
return false;

CFileItem item(fileItem);
bool fromDB = false;
Expand Down Expand Up @@ -265,7 +265,7 @@ void CGUIWindowVideoBase::OnItemInfo(const CFileItem& fileItem, ADDON::ScraperPt
if (!bFoundFile)
{
HELPERS::ShowOKDialogText(CVariant{13346}, CVariant{20349});
return;
return false;
}
}
}
Expand All @@ -282,6 +282,7 @@ void CGUIWindowVideoBase::OnItemInfo(const CFileItem& fileItem, ADDON::ScraperPt
Refresh();
m_viewControl.SetSelectedItem(itemNumber);
}
return true;
}

// ShowIMDB is called as follows:
Expand Down Expand Up @@ -533,9 +534,7 @@ bool CGUIWindowVideoBase::OnFileAction(int iItem, int action, const std::string&
case SELECT_ACTION_PLAY_OR_RESUME:
return OnResumeItem(iItem, player);
case SELECT_ACTION_INFO:
if (OnItemInfo(iItem))
return true;
break;
return OnItemInfo(iItem);
case SELECT_ACTION_MORE:
OnPopupMenu(iItem);
return true;
Expand Down Expand Up @@ -612,23 +611,19 @@ bool CGUIWindowVideoBase::OnItemInfo(int iItem)
scraper = m_database.GetScraperForPath(strDir, settings, foundDirectly);

if (!scraper &&
!(m_database.HasMovieInfo(item->GetPath()) ||
m_database.HasTvShowInfo(strDir) ||
m_database.HasEpisodeInfo(item->GetPath())))
!(m_database.HasMovieInfo(item->GetDynPath()) || m_database.HasTvShowInfo(strDir) ||
m_database.HasEpisodeInfo(item->GetDynPath())))
{
HELPERS::ShowOKDialogText(CVariant{20176}, // Show video information
CVariant{19055}); // no information available
return false;
}

if (scraper && scraper->Content() == CONTENT_TVSHOWS && foundDirectly && !settings.parent_name_root) // dont lookup on root tvshow folder
return true;
}

OnItemInfo(*item, scraper);

// Return whether or not we have information to display.
// Note: This will cause the default select action to start
// playback in case it's set to "Show information".
return item->HasVideoInfoTag();
return OnItemInfo(*item, scraper);
}

void CGUIWindowVideoBase::OnRestartItem(int iItem, const std::string &player)
Expand Down
11 changes: 9 additions & 2 deletions xbmc/video/windows/GUIWindowVideoBase.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,15 @@ class CGUIWindowVideoBase : public CGUIMediaWindow, public IBackgroundLoaderObse

void PlayMovie(const CFileItem* item, const std::string& player = "");

virtual void OnItemInfo(const CFileItem& fileItem, ADDON::ScraperPtr& scraper);

/*! \brief Gets called to process the "info" action for the given file item
Default implementation shows a dialog containing information for the movie/episode/...
represented by the file item.
\param fileItem the item for which information is to be presented.
\param scraper a scraper addon instance that can be used to obtain additional information for
the given item
\return true if information was presented, false otherwise.
*/
virtual bool OnItemInfo(const CFileItem& fileItem, ADDON::ScraperPtr& scraper);

/*! \brief Show the resume menu for this item (if it has a resume bookmark)
If a resume bookmark is found, we set the item's m_lStartOffset to STARTOFFSET_RESUME.
Expand Down
4 changes: 2 additions & 2 deletions xbmc/video/windows/GUIWindowVideoNav.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -652,7 +652,7 @@ void CGUIWindowVideoNav::PlayItem(int iItem)
CGUIWindowVideoBase::PlayItem(iItem);
}

void CGUIWindowVideoNav::OnItemInfo(const CFileItem& fileItem, ADDON::ScraperPtr& scraper)
bool CGUIWindowVideoNav::OnItemInfo(const CFileItem& fileItem, ADDON::ScraperPtr& scraper)
{
if (!scraper || scraper->Content() == CONTENT_NONE)
{
Expand All @@ -667,7 +667,7 @@ void CGUIWindowVideoNav::OnItemInfo(const CFileItem& fileItem, ADDON::ScraperPtr
}
m_database.Close();
}
CGUIWindowVideoBase::OnItemInfo(fileItem, scraper);
return CGUIWindowVideoBase::OnItemInfo(fileItem, scraper);
}

void CGUIWindowVideoNav::OnDeleteItem(const CFileItemPtr& pItem)
Expand Down
2 changes: 1 addition & 1 deletion xbmc/video/windows/GUIWindowVideoNav.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ class CGUIWindowVideoNav : public CGUIWindowVideoBase
bool OnAction(const CAction &action) override;
bool OnMessage(CGUIMessage& message) override;

void OnItemInfo(const CFileItem& fileItem, ADDON::ScraperPtr &info) override;
bool OnItemInfo(const CFileItem& fileItem, ADDON::ScraperPtr& info) override;

protected:
bool ApplyWatchedFilter(CFileItemList &items);
Expand Down