summaryrefslogtreecommitdiff
path: root/plexSdOsd.cpp
blob: e6dc1f99909cc9ca396df8750df6cca3c56e58d2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#include "plexSdOsd.h"

cPlexSdOsd::cPlexSdOsd()
{
}

void cPlexSdOsd::Show(void)
{
	bool skinDesignerAvailable = InitSkindesignerInterface("plex");
	if (!skinDesignerAvailable) {
		return;
	}

	m_pRootView = GetOsdView(eViews::viRootView);
	if (!m_pRootView) {
		esyslog("[plex]: used skindesigner skin does not support plex");
		return;
	}

	m_pViewHeader = std::shared_ptr<cViewHeader>(
	                    new cViewHeader(m_pRootView->GetViewElement(eViewElementsRoot::verHeader))
	                );
	m_pBrowserGrid = std::shared_ptr<cBrowserGrid>(
	                     new cBrowserGrid( m_pRootView->GetViewGrid(eViewGrids::vgBrowser))
	                 );

	Flush();
}

void cPlexSdOsd::Flush()
{
	m_pBrowserGrid->Flush();
	
	m_pViewHeader->Draw();
	
	m_pRootView->Display();
}

eOSState cPlexSdOsd::ProcessKey(eKeys Key)
{
	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
		m_pBrowserGrid->NavigateSelect();
		Flush();
		break;
	case kBack:
		m_pBrowserGrid->NavigateBack();
		Flush();
		break;
	case kRed:
		// Prev Tab
		SwitchGrid(m_pViewHeader->NextTab());
		Flush();
		break;
	case kGreen:
		// Next Tab
		SwitchGrid(m_pViewHeader->PrevTab());
		Flush();
		break;
	default:
		break;
	}
	return eOSState::osContinue;
}

void cPlexSdOsd::SwitchGrid(ePlexMenuTab currentTab)
{
	if(currentTab == ePlexMenuTab::pmtOnDeck) {
		
		auto service = std::shared_ptr<plexclient::Plexservice>(new plexclient::Plexservice( new plexclient::PlexServer("192.168.1.175", 32400), "/hubs/home/onDeck" ) );
		m_pBrowserGrid = std::shared_ptr<cBrowserGrid>(
		                     new cBrowserGrid( m_pRootView->GetViewGrid(eViewGrids::vgBrowser), service)
		                 );
						 
	} else if(currentTab == ePlexMenuTab::pmtRecentlyAdded) {
		auto service = std::shared_ptr<plexclient::Plexservice>(new plexclient::Plexservice( new plexclient::PlexServer("192.168.1.175", 32400), "/library/sections" ) );
		m_pBrowserGrid = std::shared_ptr<cBrowserGrid>(
		                     new cBrowserGrid( m_pRootView->GetViewGrid(eViewGrids::vgBrowser), service)
		                 );
						 
	} else if(currentTab == ePlexMenuTab::pmtLibrary) {
		
		m_pBrowserGrid = std::shared_ptr<cBrowserGrid>(
		                     new cBrowserGrid( m_pRootView->GetViewGrid(eViewGrids::vgBrowser))
		                 );
	}
}