summaryrefslogtreecommitdiff
path: root/plexSdOsd.cpp
diff options
context:
space:
mode:
authorchriszero <zerov83@gmail.com>2015-05-03 17:20:03 +0200
committerchriszero <zerov83@gmail.com>2015-05-03 17:20:03 +0200
commitf7196f23bc0ed500dcf1f60b794caa9a9f76a751 (patch)
tree7fcab9a27a06ca43818e9cdd63977769753fb92f /plexSdOsd.cpp
parent6708c32ab31bb90781bb5e3743cb81ae72748edd (diff)
downloadvdr-plugin-plex-f7196f23bc0ed500dcf1f60b794caa9a9f76a751.tar.gz
vdr-plugin-plex-f7196f23bc0ed500dcf1f60b794caa9a9f76a751.tar.bz2
- Playmarks for skindesigner
- More tokens (mediainfo, codes, etc) - Updated translation
Diffstat (limited to 'plexSdOsd.cpp')
-rw-r--r--plexSdOsd.cpp135
1 files changed, 86 insertions, 49 deletions
diff --git a/plexSdOsd.cpp b/plexSdOsd.cpp
index 949eb81..27f8157 100644
--- a/plexSdOsd.cpp
+++ b/plexSdOsd.cpp
@@ -9,11 +9,15 @@ cMutex cPlexSdOsd::RedrawMutex;
cPlexSdOsd::cPlexSdOsd()
{
+ m_pRootView = NULL;
}
cPlexSdOsd::~cPlexSdOsd()
{
- m_pBrowserGrid->Clear();
+ if(m_pBrowserGrid)
+ m_pBrowserGrid->Clear();
+ if(m_pMessage)
+ m_pMessage->Clear();
cPictureCache::GetInstance().RemoveAll();
delete m_pRootView;
}
@@ -46,6 +50,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(eViewElementsRoot::verMessage));
+ m_messageDisplayed = false;
Flush();
}
@@ -59,60 +65,91 @@ eOSState cPlexSdOsd::ProcessKey(eKeys Key)
{
eOSState state = eOSState::osContinue;
plexclient::Video* vid = dynamic_cast<plexclient::Video*>(m_pBrowserGrid->SelectedObject());
-
+
if (m_pBrowserGrid->DrawTime())
- m_pBrowserGrid->Flush();
-
- switch (Key & ~k_Repeat) {
- case kUp:
- m_pBrowserGrid->NavigateUp();
- Flush();
- break;
- case kDown:
- m_pBrowserGrid->NavigateDown();
- Flush();
- break;
- case kLeft:
- m_pBrowserGrid->NavigateLeft();
- Flush();
- break;
- case kRight:
- m_pBrowserGrid->NavigateRight();
- Flush();
- break;
- case kOk:
- // Play movie or change dir
- state = m_pBrowserGrid->NavigateSelect();
- Flush();
- break;
- case kBack:
- state = m_pBrowserGrid->NavigateBack();
- Flush();
- break;
- case kRed:
- if(vid) {
- if(vid->m_iViewCount > 0) vid->SetUnwatched();
- else vid->SetWatched();
- vid->UpdateFromServer();
+ m_pBrowserGrid->Flush();
+
+ if(m_messageDisplayed) {
+ switch (Key & ~k_Repeat) {
+ case kOk:
+ vid->m_iMyPlayOffset = vid->m_lViewoffset/1000;
+ m_messageDisplayed = false;
+ state = eOSState::osUser1;
+ break;
+ case kBack:
+ vid->m_lViewoffset = 0;
+ state = eOSState::osUser1;
+ default:
+ break;
+ }
+ } else {
+
+ switch (Key & ~k_Repeat) {
+ case kUp:
+ m_pBrowserGrid->NavigateUp();
+ Flush();
+ break;
+ case kDown:
+ m_pBrowserGrid->NavigateDown();
+ Flush();
+ break;
+ case kLeft:
+ m_pBrowserGrid->NavigateLeft();
+ Flush();
+ break;
+ case kRight:
+ m_pBrowserGrid->NavigateRight();
+ Flush();
+ break;
+ case kOk:
+ // Play movie or change dir
+ state = m_pBrowserGrid->NavigateSelect();
Flush();
+ break;
+ case kBack:
+ state = m_pBrowserGrid->NavigateBack();
+ Flush();
+ break;
+ case kRed:
+ if(vid) {
+ if(vid->m_iViewCount > 0) vid->SetUnwatched();
+ else vid->SetWatched();
+ vid->UpdateFromServer();
+ Flush();
+ }
+ break;
+ case kGreen:
+ m_pBrowserGrid->PrevTab();
+ Flush();
+ break;
+ case kYellow:
+ m_pBrowserGrid->NextTab();
+ Flush();
+ break;
+ default:
+ break;
}
- break;
- case kGreen:
- m_pBrowserGrid->PrevTab();
- Flush();
- break;
- case kYellow:
- m_pBrowserGrid->NextTab();
- Flush();
- break;
- default:
- break;
+
}
if(state == eOSState::osUser1) {
- //plexclient::ActionManager::GetInstance().AddAction(*vid);
- cMyPlugin::PlayFile(*vid);
- state = eOSState::osEnd;
+ if(vid->m_iMyPlayOffset == 0 && vid->m_lViewoffset > 0 ) {
+ cString message = cString::sprintf(tr("'Ok' to start from %ld minutes, 'Back' to start from beginning."), vid->m_lViewoffset / 60000);
+ DrawMessage(std::string(message));
+ m_messageDisplayed = true;
+ } else {
+ cMyPlugin::PlayFile(*vid);
+ state = eOSState::osEnd;
+ }
}
return state;
}
+
+void cPlexSdOsd::DrawMessage(std::string message)
+{
+ m_pMessage->ClearTokens();
+ m_pMessage->AddStringToken("message", message);
+ m_pMessage->AddIntToken("displaymessage", true);
+ m_pMessage->Display();
+ m_pRootView->Display();
+}