summaryrefslogtreecommitdiff
path: root/views
diff options
context:
space:
mode:
authorlouis <louis.braun@gmx.de>2015-04-05 16:56:15 +0200
committerlouis <louis.braun@gmx.de>2015-04-05 16:56:15 +0200
commit3a53ab95b6abd1458c6bd8ebf53c3a868a6f2fcb (patch)
treeaa1ad8d4ca1d994755f3ea49b4d47cfd25657c2c /views
parent7bc7304d8400c419783f613febe4179ee8bd9366 (diff)
downloadvdr-plugin-skindesigner-3a53ab95b6abd1458c6bd8ebf53c3a868a6f2fcb.tar.gz
vdr-plugin-skindesigner-3a53ab95b6abd1458c6bd8ebf53c3a868a6f2fcb.tar.bz2
added category indicator token to default menus
Diffstat (limited to 'views')
-rw-r--r--views/displaymenuitemview.c39
-rw-r--r--views/displaymenuitemview.h6
-rw-r--r--views/displaymenulistview.c31
-rw-r--r--views/displaymenulistview.h7
-rw-r--r--views/displaymenurootview.c3
-rw-r--r--views/displaymenurootview.h2
6 files changed, 76 insertions, 12 deletions
diff --git a/views/displaymenuitemview.c b/views/displaymenuitemview.c
index c0d3b42..1ce4066 100644
--- a/views/displaymenuitemview.c
+++ b/views/displaymenuitemview.c
@@ -106,6 +106,7 @@ cDisplayMenuItemDefaultView::cDisplayMenuItemDefaultView(cTemplateViewList *tmpl
this->tabs = tabs;
this->tabWidths = tabWidths;
maxTabs = cSkinDisplayMenu::MaxTabs;
+ menuCategory = "";
}
cDisplayMenuItemDefaultView::~cDisplayMenuItemDefaultView() {
@@ -138,6 +139,9 @@ void cDisplayMenuItemDefaultView::SetTokens(void) {
intTokens.insert(pair<string,int>("current", current));
intTokens.insert(pair<string,int>("separator", !selectable));
intTokens.insert(pair<string,int>("nummenuitem", num+1));
+ if (menuCategory.size() > 0) {
+ intTokens.insert(pair<string,int>(menuCategory, 1));
+ }
}
void cDisplayMenuItemDefaultView::Prepare(void) {
@@ -173,6 +177,10 @@ cDisplayMenuItemMainView::cDisplayMenuItemMainView(cTemplateViewList *tmplList,
number = "";
label = "";
icon = "";
+ isPlugin = false;
+ plugName = "";
+ SplitMenuText();
+ CheckPlugins();
}
cDisplayMenuItemMainView::~cDisplayMenuItemMainView() {
@@ -193,8 +201,11 @@ void cDisplayMenuItemMainView::SetTokens(void) {
void cDisplayMenuItemMainView::Prepare(void) {
ArrangeContainer();
- SplitMenuText();
- icon = imgCache->GetIconName(label);
+ if (isPlugin) {
+ icon = imgCache->GetIconName(label, mcUnknown, plugName);
+ } else {
+ icon = imgCache->GetIconName(label);
+ }
}
@@ -214,6 +225,12 @@ void cDisplayMenuItemMainView::Render(void) {
dirty = false;
}
+string cDisplayMenuItemMainView::GetPluginName(void) {
+ if (!isPlugin)
+ return "";
+ return plugName;
+}
+
void cDisplayMenuItemMainView::Debug(void) {
esyslog("skindesigner: Main Menu Item ---------------");
cDisplayMenuItemView::Debug();
@@ -266,6 +283,24 @@ void cDisplayMenuItemMainView::SplitMenuText(void) {
}
}
+void cDisplayMenuItemMainView::CheckPlugins(void) {
+ for (int i = 0; ; i++) {
+ cPlugin *p = cPluginManager::GetPlugin(i);
+ if (p) {
+ const char *mainMenuEntry = p->MainMenuEntry();
+ if (mainMenuEntry) {
+ string plugMainEntry = mainMenuEntry;
+ if (label.substr(0, plugMainEntry.size()) == plugMainEntry) {
+ isPlugin = true;
+ plugName = p->Name() ? p->Name() : "";
+ return;
+ }
+ }
+ } else
+ break;
+ }
+}
+
/*************************************************************
* cDisplayMenuItemSchedulesView
*************************************************************/
diff --git a/views/displaymenuitemview.h b/views/displaymenuitemview.h
index e9cfd5f..1108571 100644
--- a/views/displaymenuitemview.h
+++ b/views/displaymenuitemview.h
@@ -42,11 +42,13 @@ private:
int *tabWidths;
string *tabTexts;
int maxTabs;
+ string menuCategory;
public:
cDisplayMenuItemDefaultView(cTemplateViewList *tmplList, string *tabTexts, int *tabs, int *tabWidths, bool current, bool selectable);
virtual ~cDisplayMenuItemDefaultView();
void SetTabTexts(string *tabTexts);
void SetTokens(void);
+ void SetMenuCategory(string cat) { menuCategory = cat; };
void Prepare(void);
void Render(void);
void Debug(void);
@@ -54,17 +56,21 @@ public:
class cDisplayMenuItemMainView: public cDisplayMenuItemView {
private:
+ bool isPlugin;
+ string plugName;
string text;
string number;
string label;
string icon;
void SplitMenuText(void);
+ void CheckPlugins(void);
public:
cDisplayMenuItemMainView(cTemplateViewList *tmplList, string itemText, bool current, bool selectable);
virtual ~cDisplayMenuItemMainView();
void SetTokens(void);
void Prepare(void);
void Render(void);
+ string GetPluginName(void);
void Debug(void);
};
diff --git a/views/displaymenulistview.c b/views/displaymenulistview.c
index 3a51b82..87845d7 100644
--- a/views/displaymenulistview.c
+++ b/views/displaymenulistview.c
@@ -2,7 +2,7 @@
#include "displaymenulistview.h"
-cDisplayMenuListView::cDisplayMenuListView(cTemplateViewList *tmplList, int count) {
+cDisplayMenuListView::cDisplayMenuListView(cTemplateViewList *tmplList, int count, eMenuCategory cat, string currentPlug) {
oneColumn = true;
this->tmplList = tmplList;
if (count < 0) {
@@ -15,6 +15,8 @@ cDisplayMenuListView::cDisplayMenuListView(cTemplateViewList *tmplList, int coun
intTokens.insert(pair<string,int>("numelements", count));
tmplList->CalculateListParameters(&intTokens);
}
+ this->cat = cat;
+ this->currentPlug = currentPlug;
menuItems = new cDisplayMenuItemView*[itemCount];
for (int i=0; i<itemCount; i++)
menuItems[i] = NULL;
@@ -111,19 +113,24 @@ void cDisplayMenuListView::AddDefaultMenuItem(int index, string *tabTexts, bool
break;
}
}
- cDisplayMenuItemView *item = new cDisplayMenuItemDefaultView(tmplList, tabTexts, tabs, tabWidths, current, selectable);
+ cDisplayMenuItemDefaultView *item = new cDisplayMenuItemDefaultView(tmplList, tabTexts, tabs, tabWidths, current, selectable);
+ item->SetMenuCategory(GetDefaultMenuCategory());
menuItems[index] = item;
}
-void cDisplayMenuListView::AddMainMenuItem(int index, const char *itemText, bool current, bool selectable) {
+string cDisplayMenuListView::AddMainMenuItem(int index, const char *itemText, bool current, bool selectable) {
if (index >= itemCount)
- return;
+ return "";
if (menuItems[index]) {
- menuItems[index]->SetCurrent(current);
- return;
+ cDisplayMenuItemMainView *menuItem = dynamic_cast<cDisplayMenuItemMainView*>(menuItems[index]);
+ if (!menuItem)
+ return "";
+ menuItem->SetCurrent(current);
+ return menuItem->GetPluginName();
}
- cDisplayMenuItemView *item = new cDisplayMenuItemMainView(tmplList, itemText, current, selectable);
+ cDisplayMenuItemMainView *item = new cDisplayMenuItemMainView(tmplList, itemText, current, selectable);
menuItems[index] = item;
+ return item->GetPluginName();
}
void cDisplayMenuListView::AddSetupMenuItem(int index, const char *itemText, bool current, bool selectable) {
@@ -241,3 +248,13 @@ void cDisplayMenuListView::Debug(void) {
}
}
}
+
+string cDisplayMenuListView::GetDefaultMenuCategory(void) {
+ if (cat == mcSchedule || cat == mcScheduleNow || cat == mcScheduleNext)
+ return "schedule";
+ else if (cat >= mcPluginSetup && cat <= mcSetupPlugins)
+ return "setup";
+ else if (cat == mcCommand)
+ return "commands";
+ return currentPlug;
+}
diff --git a/views/displaymenulistview.h b/views/displaymenulistview.h
index a407020..60758cf 100644
--- a/views/displaymenulistview.h
+++ b/views/displaymenulistview.h
@@ -8,20 +8,23 @@
class cDisplayMenuListView {
private:
cTemplateViewList *tmplList;
+ eMenuCategory cat;
+ string currentPlug;
int itemCount;
cDisplayMenuItemView **menuItems;
int *tabs;
int *tabWidths;
bool oneColumn;
+ string GetDefaultMenuCategory(void);
public:
- cDisplayMenuListView(cTemplateViewList *tmplList, int count = -1);
+ cDisplayMenuListView(cTemplateViewList *tmplList, int count, eMenuCategory cat = mcUnknown, string currentPlug = "");
virtual ~cDisplayMenuListView();
void Clear(void);
void SetTabs(int tab1, int tab2, int tab3, int tab4, int tab5);
int GetMaxItems(void) { return itemCount; };
int GetListWidth(void);
void AddDefaultMenuItem(int index, string *tabTexts, bool current, bool selectable);
- void AddMainMenuItem(int index, const char *itemText, bool current, bool selectable);
+ string AddMainMenuItem(int index, const char *itemText, bool current, bool selectable);
void AddSetupMenuItem(int index, const char *itemText, bool current, bool selectable);
void AddSchedulesMenuItem(int index, const cEvent *event, const cChannel *channel, eTimerMatch timerMatch, eMenuCategory cat, bool isEpgSearchFav, bool current, bool selectable);
void AddChannelsMenuItem(int index, const cChannel *channel, bool withProvider, bool current, bool selectable);
diff --git a/views/displaymenurootview.c b/views/displaymenurootview.c
index 5d429cd..c101d38 100644
--- a/views/displaymenurootview.c
+++ b/views/displaymenurootview.c
@@ -7,6 +7,7 @@
cDisplayMenuRootView::cDisplayMenuRootView(cTemplateView *rootView) : cView(rootView) {
cat = mcUndefined;
+ selectedPluginMainMenu = "";
sortMode = msmUnknown;
sortModeLast = msmUnknown;
menuTitle = "";
@@ -208,7 +209,7 @@ void cDisplayMenuRootView::SetMenu(eMenuCategory menuCat, bool menuInit) {
cTemplateViewList *tmplMenuItems = subView->GetViewList(vlMenuItem);
if (!tmplMenuItems)
return;
- listView = new cDisplayMenuListView(tmplMenuItems);
+ listView = new cDisplayMenuListView(tmplMenuItems, -1, menuCat, selectedPluginMainMenu);
} else {
//Create detailed view
detailView = new cDisplayMenuDetailView(subView);
diff --git a/views/displaymenurootview.h b/views/displaymenurootview.h
index 4a250bc..79b4b56 100644
--- a/views/displaymenurootview.h
+++ b/views/displaymenurootview.h
@@ -15,6 +15,7 @@ enum ePluginMenuType {
class cDisplayMenuRootView : public cView, public cViewHelpers {
private:
eMenuCategory cat;
+ string selectedPluginMainMenu;
eMenuSortMode sortMode;
eMenuSortMode sortModeLast;
eSubView viewType;
@@ -51,6 +52,7 @@ public:
virtual ~cDisplayMenuRootView();
bool createOsd(void);
void SetMenu(eMenuCategory menuCat, bool menuInit);
+ void SetSelectedPluginMainMenu(string name) { selectedPluginMainMenu = name; };
void SetSortMode(eMenuSortMode sortMode);
void SetCurrentRecording(string rec) { currentRecording = rec; };
void CorrectDefaultMenu(void);