From 294f38d18ac39463137b60a5d272105f8da4fb21 Mon Sep 17 00:00:00 2001 From: chriszero Date: Sun, 12 Apr 2015 20:22:34 +0200 Subject: More tokens --- Config.cpp | 2 +- Directory.cpp | 8 ++- MediaContainer.cpp | 3 +- MediaContainer.h | 2 +- PVideo.cpp | 23 ++++--- XmlObject.h | 2 +- browserGrid.cpp | 3 +- plexSdOsd.cpp | 8 +++ skins/blackhole/xmlfiles/plug-plex-root.xml | 103 +++++++++++----------------- 9 files changed, 76 insertions(+), 78 deletions(-) diff --git a/Config.cpp b/Config.cpp index 6b37efb..392b895 100644 --- a/Config.cpp +++ b/Config.cpp @@ -4,7 +4,7 @@ Config::Config() { s_username = "username"; s_password = "password"; - GridColumns = 5; + GridColumns = 7; GridRows = 2; } diff --git a/Directory.cpp b/Directory.cpp index 57853a4..e09e86d 100644 --- a/Directory.cpp +++ b/Directory.cpp @@ -53,6 +53,7 @@ void Directory::AddTokens(std::shared_ptr grid, bo { if(clear) grid->ClearTokens(); grid->AddStringToken("title", m_sTitle); + grid->AddIntToken("viewgroup", m_pParent->m_eViewGroup); // Thumb, Cover, Episodepicture bool cached = false; @@ -70,6 +71,10 @@ void Directory::AddTokens(std::shared_ptr grid, bo } grid->AddIntToken("hasart", cached); + if(m_eType == MediaType::UNDEF || m_eType == MediaType::MOVIE || m_eType == MediaType::PHOTO) { + grid->AddIntToken("isdirectory", true); + } + if(m_eType == MediaType::SHOW) { grid->AddIntToken("isshow", true); grid->AddStringToken("summary", m_sSummary); @@ -78,6 +83,7 @@ void Directory::AddTokens(std::shared_ptr grid, bo if(m_eType == MediaType::SEASON) { grid->AddIntToken("isseason", true); if(m_pParent) grid->AddStringToken("summary", m_pParent->m_sSummary); + grid->AddIntToken("season", m_iIndex); } // Banner, Seriesbanner @@ -85,7 +91,7 @@ void Directory::AddTokens(std::shared_ptr grid, bo cached = false; std::string banner = cPictureCache::GetInstance().GetPath(m_pServer->GetUri() + m_pParent->m_sBanner, Config::GetInstance().BannerWidth(), Config::GetInstance().BannerHeight(), cached, OnCached, this); if(cached) { - grid->AddIntToken("hasbanner", true); + grid->AddIntToken("hasbanner", cached); grid->AddStringToken("banner", banner); } } diff --git a/MediaContainer.cpp b/MediaContainer.cpp index 8f68300..e676c8d 100644 --- a/MediaContainer.cpp +++ b/MediaContainer.cpp @@ -6,6 +6,7 @@ namespace plexclient MediaContainer::MediaContainer(std::istream* response, PlexServer* Server) { m_pServer = Server; + m_eViewGroup = MediaType::UNDEF; try { InputSource src(*response); DOMParser parser; @@ -24,7 +25,7 @@ MediaContainer::MediaContainer(std::istream* response, PlexServer* Server) m_iParentIndex = GetNodeValueAsInt(pAttribs->getNamedItem("parentIndex")); m_sThumb = GetNodeValue(pAttribs->getNamedItem("thumb")); m_sBanner = GetNodeValue(pAttribs->getNamedItem("banner")); - m_sViewGroup = GetNodeValue(pAttribs->getNamedItem("viewGroup")); + m_eViewGroup = GetNodeValueAsMediaType(pAttribs->getNamedItem("viewGroup")); m_sLibrarySectionTitle = GetNodeValue(pAttribs->getNamedItem("librarySectionTitle")); m_sLibrarySectionUUID = GetNodeValue(pAttribs->getNamedItem("librarySectionUUID")); m_iLibrarySectionID = GetNodeValueAsInt(pAttribs->getNamedItem("librarySectionID")); diff --git a/MediaContainer.h b/MediaContainer.h index 14fb29e..947a647 100644 --- a/MediaContainer.h +++ b/MediaContainer.h @@ -54,7 +54,7 @@ public: std::string m_sTitle1; std::string m_sTitle2; std::string m_sGrandparentTitle; - std::string m_sViewGroup; + MediaType m_eViewGroup; int m_iLibrarySectionID; std::string m_sLibrarySectionTitle; std::string m_sLibrarySectionUUID; diff --git a/PVideo.cpp b/PVideo.cpp index 1c1e28f..aaf0547 100644 --- a/PVideo.cpp +++ b/PVideo.cpp @@ -217,16 +217,17 @@ void Video::AddTokens(std::shared_ptr grid, bool c grid->AddStringToken("summary", m_sSummary); grid->AddStringToken("contentrating", m_sContentRating); grid->AddStringToken("studio", m_sStudio); - grid->AddIntToken("viewoffset", m_lViewoffset/1000); - grid->AddIntToken("duration", m_iDuration); + grid->AddIntToken("viewoffset", m_lViewoffset/1000/60); + grid->AddIntToken("duration", m_iDuration/1000/60); grid->AddIntToken("year", m_iYear); - + grid->AddIntToken("viewgroup", m_pParent->m_eViewGroup); + // Thumb, Cover, Episodepicture bool cached = false; std::string thumb = cPictureCache::GetInstance().GetPath(ThumbUri(), Config::GetInstance().ThumbWidth(), Config::GetInstance().ThumbHeight(), cached, OnCached, this); grid->AddIntToken("hasthumb", cached); if (cached) grid->AddStringToken("thumb", thumb); - + // Fanart cached = false; std::string art = cPictureCache::GetInstance().GetPath(ArtUri(), Config::GetInstance().ArtWidth(), Config::GetInstance().ArtHeight(), cached); @@ -244,19 +245,25 @@ void Video::AddTokens(std::shared_ptr grid, bool c grid->AddStringToken("seriestitle", seriesTitle); grid->AddIntToken("season", m_iParentIndex); grid->AddIntToken("episode", m_iIndex); - + // Seriescover, Seasoncover cached = false; - std::string grandparentThumb = cPictureCache::GetInstance().GetPath(m_pServer->GetUri() + m_sGrandparentThumb, Config::GetInstance().ThumbWidth(), Config::GetInstance().ThumbHeight(), cached, OnCached, this); + std::string grandparentthumbUri = m_sGrandparentThumb; + if(grandparentthumbUri.empty() && m_pParent) { + grandparentthumbUri = m_sThumb; + } + if(!grandparentthumbUri.empty()) { + std::string grandparentThumb = cPictureCache::GetInstance().GetPath(m_pServer->GetUri() + grandparentthumbUri, Config::GetInstance().ThumbWidth(), Config::GetInstance().ThumbHeight(), cached, OnCached, this); + if (cached) grid->AddStringToken("seriesthumb", grandparentThumb); + } grid->AddIntToken("hasseriesthumb", cached); - if (cached) grid->AddStringToken("seriesthumb", grandparentThumb); // Banner, Seriesbanner if(m_pParent && !m_pParent->m_sBanner.empty()) { cached = false; std::string banner = cPictureCache::GetInstance().GetPath(m_pServer->GetUri() + m_pParent->m_sBanner, Config::GetInstance().BannerWidth(), Config::GetInstance().BannerHeight(), cached, OnCached, this); if(cached) { - grid->AddIntToken("hasbanner", true); + grid->AddIntToken("hasbanner", cached); grid->AddStringToken("banner", banner); } } diff --git a/XmlObject.h b/XmlObject.h index 22626b4..a3fee9a 100644 --- a/XmlObject.h +++ b/XmlObject.h @@ -11,7 +11,7 @@ namespace plexclient { -enum MediaType {UNDEF = 0, PHOTO, MOVIE, MUSIC, SHOW, SEASON, EPISODE}; +enum MediaType {UNDEF = 0, MOVIE, SHOW, SEASON, EPISODE, MUSIC, PHOTO}; enum StreamType {sUNDEF = 0, sVIDEO = 1, sAUDIO = 2, sSUBTITLE = 3}; class XmlObject diff --git a/browserGrid.cpp b/browserGrid.cpp index 18fcf9f..81451f7 100644 --- a/browserGrid.cpp +++ b/browserGrid.cpp @@ -124,8 +124,7 @@ eOSState cBrowserGrid::NavigateSelect() ProcessData(); return eOSState::osContinue; } else if(plexclient::Video* vid = dynamic_cast(SelectedObject())) { - cMyPlugin::PlayFile(*vid); - return eOSState::osEnd; + return eOSState::osUser1; } else return eOSState::osEnd; } diff --git a/plexSdOsd.cpp b/plexSdOsd.cpp index 799c311..cfa6a7e 100644 --- a/plexSdOsd.cpp +++ b/plexSdOsd.cpp @@ -2,6 +2,8 @@ #include "viewGridNavigator.h" #include "pictureCache.h" #include +#include "SubscriptionManager.h" +#include "plex.h" cMutex cPlexSdOsd::RedrawMutex; @@ -101,5 +103,11 @@ eOSState cPlexSdOsd::ProcessKey(eKeys Key) default: break; } + + if(state == eOSState::osUser1) { + //plexclient::ActionManager::GetInstance().AddAction(*vid); + cMyPlugin::PlayFile(*vid); + state = eOSState::osEnd; + } return state; } diff --git a/skins/blackhole/xmlfiles/plug-plex-root.xml b/skins/blackhole/xmlfiles/plug-plex-root.xml index d474681..37ff442 100644 --- a/skins/blackhole/xmlfiles/plug-plex-root.xml +++ b/skins/blackhole/xmlfiles/plug-plex-root.xml @@ -12,35 +12,10 @@ - - - - - - - @@ -48,20 +23,23 @@ + - - + + + - + + + - - - - - + + + + + + - - + + + + + + - - + + + - - + + + - - + + + - - + + + + + + + -- cgit v1.2.3