summaryrefslogtreecommitdiff
path: root/plex.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plex.cpp')
-rw-r--r--plex.cpp75
1 files changed, 41 insertions, 34 deletions
diff --git a/plex.cpp b/plex.cpp
index f424d18..a5287ae 100644
--- a/plex.cpp
+++ b/plex.cpp
@@ -573,6 +573,7 @@ static void PlayFile(const char *filename)
static char ShowBrowser; ///< flag show browser
+static plexclient::PlexServer* pPlexServer;
/*
static const char *BrowserStartDir; ///< browser start directory
static const NameFilter *BrowserFilters; ///< browser name filters
@@ -583,14 +584,19 @@ static char **DirStack; ///< current path directory stack
*/
-cPlexBrowser::cPlexBrowser(const char *title, plexclient::Plexservice* pServ) :cOsdMenu(title) {
+cPlexBrowser::cPlexBrowser(const char *title, plexclient::PlexServer* pServ) :cOsdMenu(title) {
dsyslog("[plex]%s:\n", __FUNCTION__);
- pService = pServ;
+ pService = new plexclient::Plexservice(pServ);
+ pService->Authenticate();
pCont = pService->GetAllSections();
CreateMenu();
}
+cPlexBrowser::~cPlexBrowser() {
+ delete pService;
+}
+
void cPlexBrowser::CreateMenu() {
// Clear Menu
Clear();
@@ -678,14 +684,12 @@ eOSState cPlexBrowser::LevelUp() {
}
eOSState cPlexBrowser::ProcessSelected() {
- int current;
- cPlexOsdItem *item;
std::string fullUri;
//char *filename;
//char *tmp;
- current = Current(); // get current menu item index
- item = static_cast<cPlexOsdItem*>(Get(current));
+ int current = Current(); // get current menu item index
+ cPlexOsdItem *item = static_cast<cPlexOsdItem*>(Get(current));
if(item->IsVideo()) {
@@ -731,19 +735,18 @@ eOSState cPlexBrowser::ProcessSelected() {
/**
** Play menu constructor.
*/
-cPlayMenu::cPlayMenu(const char *title, plexclient::plexgdm* gdm, int c0, int c1, int c2, int c3, int c4)
+cPlayMenu::cPlayMenu(const char *title, int c0, int c1, int c2, int c3, int c4)
:cOsdMenu(title, c0, c1, c2, c3, c4)
{
SetHasHotkeys();
- plexclient::PlexServer *server = gdm->GetPServer();
-
- if(server) {
- std::string serverName = server->GetServerName();
- Add(new cOsdItem(hk(serverName.c_str()), osUser1));
+ for(std::vector<plexclient::PlexServer>::iterator it = plexclient::plexgdm::GetInstance().GetPlexservers().begin(); it != plexclient::plexgdm::GetInstance().GetPlexservers().end(); ++it) {
+ plexclient::PlexServer *pServer = &(*it);
+ Add(new cPlexOsdItem(pServer->GetServerName().c_str(), pServer));
}
- else {
- Add(new cOsdItem("No Plex Media Server found."));
+
+ if(Count() < 1) {
+ Add(new cPlexOsdItem("No Plex Media Server found."), false);
}
}
@@ -768,13 +771,22 @@ eOSState cPlayMenu::ProcessKey(eKeys 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 osUser1:
- ShowBrowser = 1;
- return osPlugin; // restart with OSD browser
- default:
- break;
+ case osUnknown:
+ switch (key) {
+ case kOk:
+ pPlexServer = item->GetAttachedServer();
+ ShowBrowser = 1;
+ return osPlugin; // restart with OSD browser
+ default:
+ break;
+ }
+ default:
+ break;
}
return state;
}
@@ -1082,10 +1094,8 @@ cMyPlugin::cMyPlugin(void)
cMyPlugin::~cMyPlugin(void)
{
dsyslog("[plex]%s:\n", __FUNCTION__);
- pPlexgdm->stopRegistration();
+ plexclient::plexgdm::GetInstance().stopRegistration();
plexclient::ControlServer::GetInstance().Stop();
- delete(pPlexgdm);
- delete(pService);
}
/**
@@ -1140,20 +1150,17 @@ bool cMyPlugin::Initialize(void)
// First Startup? Save UUID
SetupStore("UUID", Config::GetInstance().GetUUID().c_str());
- pPlexgdm = new plexclient::plexgdm();
- pPlexgdm->discover();
- plexclient::PlexServer *pServer = pPlexgdm->GetPServer();
- if (pServer != 0) {
- pPlexgdm->clientDetails(Config::GetInstance().GetUUID(), DESCRIPTION, "3200", "VDR", VERSION);
- pPlexgdm->Start();
-
- pService = new plexclient::Plexservice(pServer);
- pService->Authenticate();
+ plexclient::plexgdm::GetInstance().discover();
+
+ if (plexclient::plexgdm::GetInstance().GetPlexservers().size() > 0) {
+ plexclient::plexgdm::GetInstance().clientDetails(Config::GetInstance().GetUUID(), DESCRIPTION, "3200", "VDR", VERSION);
+ plexclient::plexgdm::GetInstance().Start();
plexclient::ControlServer::GetInstance().Start();
} else {
perror("No Plexserver found");
+ std::cout << "No Plexmediaserver found" << std::endl;
}
MyDevice = new cMyDevice;
@@ -1177,9 +1184,9 @@ cOsdObject *cMyPlugin::MainMenuAction(void)
//dsyslog("[plex]%s:\n", __FUNCTION__);
if (ShowBrowser) {
- return new cPlexBrowser("Newest", this->pService);
+ return new cPlexBrowser("Newest", pPlexServer);
}
- return new cPlayMenu("Plex", pPlexgdm);
+ return new cPlayMenu("Plex");
}
/**