diff options
author | Christian <zerov83@gmail.com> | 2016-06-26 16:04:53 +0200 |
---|---|---|
committer | Christian <zerov83@gmail.com> | 2016-06-26 16:04:53 +0200 |
commit | d00510109018d19f9aaabdac8aa115a513e6ef0c (patch) | |
tree | e019e665dafc47fc4dfac7a5b4e77199006ab7b6 /plexSdOsd.cpp | |
parent | d13d6f430cc29abf6920bef4ee9d3d3be11d52e6 (diff) | |
download | vdr-plugin-plex-0.4.0.tar.gz vdr-plugin-plex-0.4.0.tar.bz2 |
Fixes mirror mode.0.4.0
Diffstat (limited to 'plexSdOsd.cpp')
-rw-r--r-- | plexSdOsd.cpp | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/plexSdOsd.cpp b/plexSdOsd.cpp index e271eef..b56d1dc 100644 --- a/plexSdOsd.cpp +++ b/plexSdOsd.cpp @@ -7,8 +7,8 @@ cMutex cPlexSdOsd::RedrawMutex; -cPlexSdOsd::cPlexSdOsd(skindesignerapi::cPluginStructure *plugStruct, plexclient::cVideo* detailVideo) : cPlexSdOsd(plugStruct) { - m_pDetailVideo = detailVideo; +cPlexSdOsd::cPlexSdOsd(skindesignerapi::cPluginStructure *plugStruct, std::shared_ptr<plexclient::MediaContainer> detailContainer) : cPlexSdOsd(plugStruct) { + m_pDetailContainer = detailContainer; } cPlexSdOsd::cPlexSdOsd(skindesignerapi::cPluginStructure *plugStruct) : cSkindesignerOsdObject(plugStruct) { @@ -52,8 +52,8 @@ void cPlexSdOsd::Show(void) { m_pBrowserGrid = std::shared_ptr<cBrowserGrid>(new cBrowserGrid(m_pRootView)); m_pMessage = std::shared_ptr<skindesignerapi::cViewElement>( m_pRootView->GetViewElement((int) eViewElementsRoot::message)); - if(m_pDetailVideo) { - ShowDetails(m_pDetailVideo); + if(m_pDetailContainer) { + ShowDetails(m_pDetailContainer); } Flush(); } @@ -228,9 +228,7 @@ eOSState cPlexSdOsd::ProcessKeyBrowserView(eKeys Key) { return state; } -void cPlexSdOsd::ShowDetails(plexclient::cVideo *vid) { - if (m_detailsActive) return; - +void cPlexSdOsd::ShowDetails(plexclient::cVideo* vid) { m_pBrowserGrid->Deactivate(true); m_pDetailsView = std::shared_ptr<skindesignerapi::cOsdView>(GetOsdView((int) eViews::detailView)); m_pDetailGrid = std::make_shared<cDetailView>(m_pDetailsView, vid); @@ -241,6 +239,20 @@ void cPlexSdOsd::ShowDetails(plexclient::cVideo *vid) { m_detailsActive = true; } +void cPlexSdOsd::ShowDetails(std::shared_ptr<plexclient::MediaContainer> container) { + if (m_detailsActive) return; + + if (container->m_vDirectories.size() > 0 || container->m_vVideos.size() > 1) { + // show browser + m_pBrowserGrid->ShowDirectory(container); + m_pBrowserGrid->Activate(); + m_pBrowserGrid->Flush(); + } + else if (container->m_vVideos.size() > 0) { + ShowDetails(&container->m_vVideos[0]); + } +} + void cPlexSdOsd::DrawMessage(std::string message) { m_pMessage->ClearTokens(); m_pMessage->AddStringToken((int) eTokenMessageStr::message, message.c_str()); @@ -413,3 +425,4 @@ void cPlexSdOsd::DefineDetailsTokens(eViewElementsDetail ve, skindesignerapi::cT break; } } + |