summaryrefslogtreecommitdiff
path: root/plex.cpp
diff options
context:
space:
mode:
authorchriszero <zerov83@gmail.com>2015-03-05 20:12:32 +0100
committerchriszero <zerov83@gmail.com>2015-03-05 20:12:32 +0100
commit44a091857305a75dcaa16f80f480e3174373c377 (patch)
tree5ab6d90f991221809c4072f12c7e613e6d97c944 /plex.cpp
parenta37e5ffb71a36ed841ec7f53ae24cca5b441c6d2 (diff)
downloadvdr-plugin-plex-44a091857305a75dcaa16f80f480e3174373c377.tar.gz
vdr-plugin-plex-44a091857305a75dcaa16f80f480e3174373c377.tar.bz2
Scrobble / Unscrobble via PlexBrowser.
Diffstat (limited to 'plex.cpp')
-rw-r--r--plex.cpp47
1 files changed, 37 insertions, 10 deletions
diff --git a/plex.cpp b/plex.cpp
index da51bed..ecec6d3 100644
--- a/plex.cpp
+++ b/plex.cpp
@@ -2,13 +2,9 @@
#include "SubscriptionManager.h"
#include "plex.h"
-
//////////////////////////////////////////////////////////////////////////////
// cOsdMenu
//////////////////////////////////////////////////////////////////////////////
-
-
-static char ShowBrowser; ///< flag show browser
static std::shared_ptr<plexclient::Plexservice> pPlexService;
std::shared_ptr<plexclient::Plexservice> cPlexBrowser::pLastService;
@@ -75,9 +71,16 @@ eOSState cPlexBrowser::ProcessKey(eKeys key)
// call standard function
state = cOsdMenu::ProcessKey(key);
- //if (state || key != kNone) {
- // dsyslog("[plex]%s: state=%d key=%d\n", __FUNCTION__, state, 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:
@@ -86,6 +89,28 @@ eOSState cPlexBrowser::ProcessKey(eKeys key)
return ProcessSelected();
case kBack:
return LevelUp();
+ case kRed:
+ std::cout << "RED";
+ 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;
}
@@ -105,7 +130,7 @@ eOSState cPlexBrowser::LevelUp()
{
pCont = pService->GetLastSection();
if(!pCont) {
- ShowBrowser = 0;
+ cPlayMenu::eShow = menuShow::MAIN;
return osEnd;
}
cString title = cString::sprintf(tr("Browse Plex - %s"), tr(pCont->m_sTitle1.c_str()));
@@ -187,6 +212,8 @@ eOSState cPlexInfo::ProcessKey(eKeys Key)
// cOsdMenu
//////////////////////////////////////////////////////////////////////////////
+menuShow cPlayMenu::eShow = MAIN;
+
/**
** Play menu constructor.
*/
@@ -241,7 +268,7 @@ eOSState cPlayMenu::ProcessKey(eKeys key)
switch (key) {
case kOk:
pPlexService = item->GetAttachedService();
- ShowBrowser = 1;
+ cPlayMenu::eShow = menuShow::BROWSER;
return osPlugin; // restart with OSD browser
default:
break;
@@ -334,7 +361,7 @@ cOsdObject *cMyPlugin::MainMenuAction(void)
return cPlexBrowser::RecoverLastState();
}
- if (ShowBrowser) {
+ if (cPlayMenu::eShow == menuShow::BROWSER) {
return new cPlexBrowser(tr("Browse Plex"), pPlexService);
}
return new cPlayMenu("Plex");