added category indicator token to default menus

This commit is contained in:
louis
2015-04-05 16:56:15 +02:00
parent 7bc7304d84
commit 3a53ab95b6
14 changed files with 139 additions and 21 deletions

View File

@@ -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
*************************************************************/

View File

@@ -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);
};

View File

@@ -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;
}

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);