diff options
| author | louis <louis.braun@gmx.de> | 2015-04-05 16:56:15 +0200 |
|---|---|---|
| committer | louis <louis.braun@gmx.de> | 2015-04-05 16:56:15 +0200 |
| commit | 3a53ab95b6abd1458c6bd8ebf53c3a868a6f2fcb (patch) | |
| tree | aa1ad8d4ca1d994755f3ea49b4d47cfd25657c2c /views | |
| parent | 7bc7304d8400c419783f613febe4179ee8bd9366 (diff) | |
| download | vdr-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.c | 39 | ||||
| -rw-r--r-- | views/displaymenuitemview.h | 6 | ||||
| -rw-r--r-- | views/displaymenulistview.c | 31 | ||||
| -rw-r--r-- | views/displaymenulistview.h | 7 | ||||
| -rw-r--r-- | views/displaymenurootview.c | 3 | ||||
| -rw-r--r-- | views/displaymenurootview.h | 2 |
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); |
