summaryrefslogtreecommitdiff
path: root/plexOsd.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plexOsd.cpp')
-rw-r--r--plexOsd.cpp398
1 files changed, 197 insertions, 201 deletions
diff --git a/plexOsd.cpp b/plexOsd.cpp
index 0d89041..13cb86e 100644
--- a/plexOsd.cpp
+++ b/plexOsd.cpp
@@ -9,158 +9,154 @@ static std::shared_ptr<plexclient::Plexservice> pPlexService;
std::shared_ptr<plexclient::Plexservice> cPlexBrowser::pLastService;
int cPlexBrowser::lastCurrentItem;
-cPlexBrowser::cPlexBrowser(const char *title, std::shared_ptr<plexclient::Plexservice> Service) :cOsdMenu(title)
-{
- dsyslog("[plex]%s:\n", __FUNCTION__);
- pService = Service;
- //pService->Authenticate();
- if(pService == pLastService) {
- pCont = pService->GetLastSection(true);
- } else {
- pCont = pService->GetSection(pService->StartUri);
- }
- SetMenuCategory(mcRecording);
- CreateMenu();
+cPlexBrowser::cPlexBrowser(const char *title, std::shared_ptr<plexclient::Plexservice> Service) : cOsdMenu(title) {
+ dsyslog("[plex]%s:\n", __FUNCTION__);
+ pService = Service;
+ //pService->Authenticate();
+ if (pService == pLastService) {
+ pCont = pService->GetLastSection(true);
+ } else {
+ pCont = pService->GetSection(pService->StartUri);
+ }
+ SetMenuCategory(mcRecording);
+ CreateMenu();
}
-cPlexBrowser* cPlexBrowser::RecoverLastState()
-{
- if (cPlexBrowser::pLastService != NULL) {
- cPlexBrowser* pBrowser = new cPlexBrowser("", cPlexBrowser::pLastService);
- return pBrowser;
- }
- return NULL;
+cPlexBrowser *cPlexBrowser::RecoverLastState() {
+ if (cPlexBrowser::pLastService != NULL) {
+ cPlexBrowser *pBrowser = new cPlexBrowser("", cPlexBrowser::pLastService);
+ return pBrowser;
+ }
+ return NULL;
}
-void cPlexBrowser::CreateMenu()
-{
- // Clear Menu
- Clear();
- // Directory or Video?
- if(pCont && pCont->m_vDirectories.size() > 0) {
-
- for(std::vector<plexclient::Directory>::iterator it = pCont->m_vDirectories.begin(); it != pCont->m_vDirectories.end(); ++it) {
- plexclient::Directory *pDir = &(*it);
- Add(new cPlexOsdItem( tr(pDir->GetTitle().c_str()), pDir) );
- }
- }
-
- if(pCont && pCont->m_vVideos.size() > 0) {
- for(std::vector<plexclient::cVideo>::iterator it = pCont->m_vVideos.begin(); it != pCont->m_vVideos.end(); ++it) {
- plexclient::cVideo *vid = &(*it); // cast raw pointer
- Add(new cPlexOsdItem( vid->GetTitle().c_str(), vid) );
- }
- }
-
- if(Count() < 1) {
- Add(new cPlexOsdItem("Empty"));
- } else if (pService == pLastService) {
- // recover last selected item
- cOsdItem* item = Get(lastCurrentItem);
- SetCurrent(item);
- pLastService = NULL;
- }
-
- Display();
+void cPlexBrowser::CreateMenu() {
+ // Clear Menu
+ Clear();
+ // Directory or Video?
+ if (pCont && pCont->m_vDirectories.size() > 0) {
+
+ for (std::vector<plexclient::Directory>::iterator it = pCont->m_vDirectories.begin();
+ it != pCont->m_vDirectories.end(); ++it) {
+ plexclient::Directory *pDir = &(*it);
+ Add(new cPlexOsdItem(tr(pDir->GetTitle().c_str()), pDir));
+ }
+ }
+
+ if (pCont && pCont->m_vVideos.size() > 0) {
+ for (std::vector<plexclient::cVideo>::iterator it = pCont->m_vVideos.begin();
+ it != pCont->m_vVideos.end(); ++it) {
+ plexclient::cVideo *vid = &(*it); // cast raw pointer
+ Add(new cPlexOsdItem(vid->GetTitle().c_str(), vid));
+ }
+ }
+
+ if (Count() < 1) {
+ Add(new cPlexOsdItem("Empty"));
+ } else if (pService == pLastService) {
+ // recover last selected item
+ cOsdItem *item = Get(lastCurrentItem);
+ SetCurrent(item);
+ pLastService = NULL;
+ }
+
+ Display();
}
-eOSState cPlexBrowser::ProcessKey(eKeys key)
-{
- eOSState state;
-
- // call standard function
- state = cOsdMenu::ProcessKey(key);
-
- int current = Current(); // get current menu item index
- cPlexOsdItem *item = static_cast<cPlexOsdItem*>(Get(current));
-
- if(item->IsVideo()) {
- if(item->GetAttachedVideo()->m_iViewCount > 0) SetHelp(tr("Info"), tr("Unscrobble"));
- else SetHelp(tr("Info"), tr("Scrobble"));
- } else {
- SetHelp(NULL);
- }
-
- switch (state) {
- case osUnknown:
- switch (key) {
- case kOk:
- return ProcessSelected();
- case kBack:
- return LevelUp();
- case kRed:
- if(item->IsVideo()) {
- std::cout << " Video Info";
- }
- std::cout << std::endl;
- break;
- case kGreen:
- if(item->IsVideo()) {
- if(item->GetAttachedVideo()->m_iViewCount > 0) {
- if(item->GetAttachedVideo()->SetUnwatched()) {
- item->GetAttachedVideo()->UpdateFromServer();
- }
- } else {
- if(item->GetAttachedVideo()->SetWatched()) {
- item->GetAttachedVideo()->UpdateFromServer();
- }
- }
- }
- if(item->GetAttachedVideo()->m_iViewCount > 0) SetHelp(tr("Info"), tr("Unscrobble"));
- else SetHelp(tr("Info"), tr("Scrobble"));
- break;
- default:
- break;
- }
- break;
- case osBack:
- state = LevelUp();
- if (state == osEnd) { // top level reached
- return osPlugin;
- }
- default:
- break;
- }
- return state;
+eOSState cPlexBrowser::ProcessKey(eKeys key) {
+ eOSState state;
+
+ // call standard function
+ state = cOsdMenu::ProcessKey(key);
+
+ int current = Current(); // get current menu item index
+ cPlexOsdItem *item = static_cast<cPlexOsdItem *>(Get(current));
+
+ if (item->IsVideo()) {
+ if (item->GetAttachedVideo()->m_iViewCount > 0) SetHelp(tr("Info"), tr("Unscrobble"));
+ else SetHelp(tr("Info"), tr("Scrobble"));
+ } else {
+ SetHelp(NULL);
+ }
+
+ switch (state) {
+ case osUnknown:
+ switch (key) {
+ case kOk:
+ return ProcessSelected();
+ case kBack:
+ return LevelUp();
+ case kRed:
+ if (item->IsVideo()) {
+ std::cout << " Video Info";
+ }
+ std::cout << std::endl;
+ break;
+ case kGreen:
+ if (item->IsVideo()) {
+ if (item->GetAttachedVideo()->m_iViewCount > 0) {
+ if (item->GetAttachedVideo()->SetUnwatched()) {
+ item->GetAttachedVideo()->UpdateFromServer();
+ }
+ } else {
+ if (item->GetAttachedVideo()->SetWatched()) {
+ item->GetAttachedVideo()->UpdateFromServer();
+ }
+ }
+ }
+ if (item->GetAttachedVideo()->m_iViewCount > 0) SetHelp(tr("Info"), tr("Unscrobble"));
+ else SetHelp(tr("Info"), tr("Scrobble"));
+ break;
+ default:
+ break;
+ }
+ break;
+ case osBack:
+ state = LevelUp();
+ if (state == osEnd) { // top level reached
+ return osPlugin;
+ }
+ default:
+ break;
+ }
+ return state;
}
-eOSState cPlexBrowser::LevelUp()
-{
- pCont = pService->GetLastSection();
- if(!pCont) {
- cPlexMenu::eShow = menuShow::MAIN;
- return osEnd;
- }
- cString title = cString::sprintf(tr("Browse Plex - %s"), tr(pCont->m_sTitle1.c_str()));
- SetTitle(title);
- CreateMenu();
- return osContinue;
+eOSState cPlexBrowser::LevelUp() {
+ pCont = pService->GetLastSection();
+ if (!pCont) {
+ cPlexMenu::eShow = menuShow::MAIN;
+ return osEnd;
+ }
+ cString title = cString::sprintf(tr("Browse Plex - %s"), tr(pCont->m_sTitle1.c_str()));
+ SetTitle(title);
+ CreateMenu();
+ return osContinue;
}
-eOSState cPlexBrowser::ProcessSelected()
-{
- int current = Current(); // get current menu item index
- cPlexOsdItem *item = static_cast<cPlexOsdItem*>(Get(current));
-
-
- if(item->IsVideo()) {
- pLastService = pService;
- lastCurrentItem = current;
- cMyPlugin::PlayFile(*item->GetAttachedVideo());
- return osEnd;
- }
-
- if(item->IsDir()) {
- plexclient::Directory* pDir = item->GetAttachedDirectory();
- pCont = pService->GetSection(pDir->m_sKey);
- cString title = cString::sprintf(tr("Browse Plex - %s"), tr(pDir->m_sTitle.c_str()));
- SetTitle(title);
- CreateMenu();
- return osContinue;
- }
-
- //return osEnd;
- return osContinue;
+eOSState cPlexBrowser::ProcessSelected() {
+ int current = Current(); // get current menu item index
+ cPlexOsdItem *item = static_cast<cPlexOsdItem *>(Get(current));
+
+
+ if (item->IsVideo()) {
+ pLastService = pService;
+ lastCurrentItem = current;
+ cMyPlugin::PlayFile(*item->GetAttachedVideo());
+ return osEnd;
+ }
+
+ if (item->IsDir()) {
+ plexclient::Directory *pDir = item->GetAttachedDirectory();
+ pCont = pService->GetSection(pDir->m_sKey);
+ cString title = cString::sprintf(tr("Browse Plex - %s"), tr(pDir->m_sTitle.c_str()));
+ SetTitle(title);
+ CreateMenu();
+ return osContinue;
+ }
+
+ //return osEnd;
+ return osContinue;
}
@@ -174,40 +170,41 @@ menuShow cPlexMenu::eShow = MAIN;
** Plex menu constructor.
*/
cPlexMenu::cPlexMenu(const char *title, int c0, int c1, int c2, int c3, int c4)
- :cOsdMenu(title)
-{
- SetHasHotkeys();
-
- for(std::vector<plexclient::PlexServer>::iterator it = plexclient::plexgdm::GetInstance().GetPlexservers().begin(); it != plexclient::plexgdm::GetInstance().GetPlexservers().end(); ++it) {
- for(std::vector<ViewEntry>::iterator vEntry = Config::GetInstance().m_serverViewentries.begin(); vEntry != Config::GetInstance().m_serverViewentries.end(); ++vEntry) {
- auto plexService = std::make_shared<plexclient::Plexservice>( &(*it) );
- plexService->StartUri = vEntry->PlexPath;
- Add(new cPlexOsdItem(Poco::format("%s - %s", it->GetServerName(), vEntry->Name ).c_str(), plexService ));
- }
- for(std::vector<ViewEntry>::iterator vEntry = Config::GetInstance().m_viewentries.begin(); vEntry != Config::GetInstance().m_viewentries.end(); ++vEntry) {
- auto plexService = std::make_shared<plexclient::Plexservice>( &(*it) );
- plexService->StartUri = vEntry->PlexPath;
- Add(new cPlexOsdItem(Poco::format("%s - %s", it->GetServerName(), vEntry->Name ).c_str(), plexService ));
- }
- }
-
-
- if(Count() < 1) {
- Add(new cPlexOsdItem(tr("No Plex Media Server found.")), false);
- }
+ : cOsdMenu(title) {
+ SetHasHotkeys();
+
+ for (std::vector<plexclient::PlexServer>::iterator it = plexclient::plexgdm::GetInstance().GetPlexservers().begin();
+ it != plexclient::plexgdm::GetInstance().GetPlexservers().end(); ++it) {
+ for (std::vector<ViewEntry>::iterator vEntry = Config::GetInstance().m_serverViewentries.begin();
+ vEntry != Config::GetInstance().m_serverViewentries.end(); ++vEntry) {
+ auto plexService = std::make_shared<plexclient::Plexservice>(&(*it));
+ plexService->StartUri = vEntry->PlexPath;
+ Add(new cPlexOsdItem(Poco::format("%s - %s", it->GetServerName(), vEntry->Name).c_str(), plexService));
+ }
+ for (std::vector<ViewEntry>::iterator vEntry = Config::GetInstance().m_viewentries.begin();
+ vEntry != Config::GetInstance().m_viewentries.end(); ++vEntry) {
+ auto plexService = std::make_shared<plexclient::Plexservice>(&(*it));
+ plexService->StartUri = vEntry->PlexPath;
+ Add(new cPlexOsdItem(Poco::format("%s - %s", it->GetServerName(), vEntry->Name).c_str(), plexService));
+ }
+ }
+
+
+ if (Count() < 1) {
+ Add(new cPlexOsdItem(tr("No Plex Media Server found.")), false);
+ }
}
-cOsdMenu* cPlexMenu::ProcessMenu()
-{
- if(cMyPlugin::CalledFromCode) {
- cMyPlugin::CalledFromCode = false;
- return cPlexBrowser::RecoverLastState();
- }
-
- if (cPlexMenu::eShow == menuShow::BROWSER) {
- return new cPlexBrowser(tr("Browse Plex"), pPlexService);
- }
- return new cPlexMenu("Plex");
+cOsdMenu *cPlexMenu::ProcessMenu() {
+ if (cMyPlugin::CalledFromCode) {
+ cMyPlugin::CalledFromCode = false;
+ return cPlexBrowser::RecoverLastState();
+ }
+
+ if (cPlexMenu::eShow == menuShow::BROWSER) {
+ return new cPlexBrowser(tr("Browse Plex"), pPlexService);
+ }
+ return new cPlexMenu("Plex");
}
@@ -216,33 +213,32 @@ cOsdMenu* cPlexMenu::ProcessMenu()
**
** @param key key event
*/
-eOSState cPlexMenu::ProcessKey(eKeys key)
-{
- eOSState state;
-
- //if (key != kNone) {
- // dsyslog("[plex]%s: key=%d\n", __FUNCTION__, key);
- //}
- // call standard function
- state = cOsdMenu::ProcessKey(key);
-
- int current = Current(); // get current menu item index
- cPlexOsdItem *item = static_cast<cPlexOsdItem*>(Get(current));
-
- switch (state) {
- case osUnknown:
- switch (key) {
- case kOk:
- pPlexService = item->GetAttachedService();
- cPlexMenu::eShow = menuShow::BROWSER;
- return osPlugin; // restart with OSD browser
- default:
- break;
- }
- default:
- break;
- }
- return state;
+eOSState cPlexMenu::ProcessKey(eKeys key) {
+ eOSState state;
+
+ //if (key != kNone) {
+ // dsyslog("[plex]%s: key=%d\n", __FUNCTION__, key);
+ //}
+ // call standard function
+ state = cOsdMenu::ProcessKey(key);
+
+ int current = Current(); // get current menu item index
+ cPlexOsdItem *item = static_cast<cPlexOsdItem *>(Get(current));
+
+ switch (state) {
+ case osUnknown:
+ switch (key) {
+ case kOk:
+ pPlexService = item->GetAttachedService();
+ cPlexMenu::eShow = menuShow::BROWSER;
+ return osPlugin; // restart with OSD browser
+ default:
+ break;
+ }
+ default:
+ break;
+ }
+ return state;
}