added viewelement <sortmode> in displaymenu to display the sort mode of the currently displayed menu

This commit is contained in:
louis
2015-03-31 16:08:42 +02:00
parent 43422fac91
commit 203754e204
13 changed files with 175 additions and 19 deletions

View File

@@ -7,6 +7,8 @@
cDisplayMenuRootView::cDisplayMenuRootView(cTemplateView *rootView) : cView(rootView) {
cat = mcUndefined;
sortMode = msmUnknown;
sortModeLast = msmUnknown;
menuTitle = "";
viewType = svUndefined;
subView = NULL;
@@ -27,6 +29,7 @@ cDisplayMenuRootView::cDisplayMenuRootView(cTemplateView *rootView) : cView(root
defaultButtonsDrawn = false;
defaultDateTimeDrawn = false;
defaultMessageDrawn = false;
defaultSortmodeDrawn = false;
DeleteOsdOnExit();
SetFadeTime(tmplView->GetNumericParameter(ptFadeTime));
}
@@ -212,6 +215,13 @@ void cDisplayMenuRootView::SetMenu(eMenuCategory menuCat, bool menuInit) {
}
}
void cDisplayMenuRootView::SetSortMode(eMenuSortMode sortMode) {
this->sortMode = sortMode;
if (!view)
return;
view->SetSortMode(sortMode);
}
void cDisplayMenuRootView::CorrectDefaultMenu(void) {
if (viewType > svMenuDefault && viewType != svMenuPlugin) {
SetMenu(mcUnknown, true);
@@ -355,6 +365,8 @@ void cDisplayMenuRootView::ClearRootView(void) {
ClearViewElement(veDateTime);
if (defaultMessageDrawn)
ClearViewElement(veMessage);
if (defaultSortmodeDrawn)
ClearViewElement(veSortMode);
}
int cDisplayMenuRootView::GetMaxItems(void) {
@@ -417,6 +429,13 @@ void cDisplayMenuRootView::Render(void) {
defaultHeaderDrawn = false;
}
if (!view->DrawSortMode()) {
defaultSortmodeDrawn = true;
DrawSortMode();
} else {
defaultSortmodeDrawn = false;
}
if (!view->DrawColorButtons()) {
defaultButtonsDrawn = true;
DrawColorButtons();
@@ -476,6 +495,7 @@ void cDisplayMenuRootView::DrawBackground(void) {
map < string, int > intTokens;
DrawViewElement(veBackground, &stringTokens, &intTokens);
}
void cDisplayMenuRootView::DrawHeader(void) {
if (!ExecuteViewElement(veHeader)) {
return;
@@ -520,6 +540,38 @@ bool cDisplayMenuRootView::DrawTime(void) {
return true;
}
void cDisplayMenuRootView::DrawSortMode(void) {
if (!ExecuteViewElement(veSortMode)) {
return;
}
if (sortMode == msmUnknown) {
if (sortModeLast != msmUnknown)
ClearViewElement(veSortMode);
sortModeLast = msmUnknown;
return;
}
if (sortMode == sortModeLast) {
return;
}
sortModeLast = sortMode;
map < string, string > stringTokens;
map < string, int > intTokens;
bool sortNumber = (sortMode == msmNumber) ? true : false;
bool sortName = (sortMode == msmName) ? true : false;
bool sortTime = (sortMode == msmTime) ? true : false;
bool sortProvider = (sortMode == msmProvider) ? true : false;
intTokens.insert(pair<string, int>("sortnumber", sortNumber));
intTokens.insert(pair<string, int>("sortname", sortName));
intTokens.insert(pair<string, int>("sorttime", sortTime));
intTokens.insert(pair<string, int>("sortprovider", sortProvider));
ClearViewElement(veSortMode);
DrawViewElement(veSortMode, &stringTokens, &intTokens);
return;
}
void cDisplayMenuRootView::DrawColorButtons(void) {
if (!ExecuteViewElement(veButtons)) {

View File

@@ -15,6 +15,8 @@ enum ePluginMenuType {
class cDisplayMenuRootView : public cView, public cViewHelpers {
private:
eMenuCategory cat;
eMenuSortMode sortMode;
eMenuSortMode sortModeLast;
eSubView viewType;
cTemplateView *subView;
bool subViewAvailable;
@@ -32,10 +34,12 @@ private:
bool defaultButtonsDrawn;
bool defaultDateTimeDrawn;
bool defaultMessageDrawn;
bool defaultSortmodeDrawn;
void DrawBackground(void);
void DrawHeader(void);
void DrawDateTime(void);
bool DrawTime(void);
void DrawSortMode(void);
void DrawColorButtons(void);
void DrawMessage(eMessageType type, const char *text);
void ClearRootView(void);
@@ -45,6 +49,7 @@ public:
virtual ~cDisplayMenuRootView();
bool createOsd(void);
void SetMenu(eMenuCategory menuCat, bool menuInit);
void SetSortMode(eMenuSortMode sortMode);
void CorrectDefaultMenu(void);
void SetPluginMenu(string name, int menu, int type);
void SetTitle(const char *title);

View File

@@ -13,6 +13,8 @@ cDisplayMenuView::cDisplayMenuView(cTemplateView *tmplView, bool menuInit) : cVi
else
SetFadeTime(0);
cat = mcUndefined;
sortMode = msmUnknown;
sortModeLast = msmUnknown;
buttonTexts = NULL;
}
@@ -175,6 +177,38 @@ void cDisplayMenuView::DrawScrollbar(int numMax, int numDisplayed, int offset) {
DrawViewElement(veScrollbar, &stringTokens, &intTokens);
}
bool cDisplayMenuView::DrawSortMode(void) {
if (!ExecuteViewElement(veSortMode)) {
return false;
}
if (sortMode == msmUnknown) {
if (sortModeLast != msmUnknown)
ClearViewElement(veSortMode);
sortModeLast = msmUnknown;
return true;
}
if (sortMode == sortModeLast)
return true;
sortModeLast = sortMode;
map < string, string > stringTokens;
map < string, int > intTokens;
bool sortNumber = (sortMode == msmNumber) ? true : false;
bool sortName = (sortMode == msmName) ? true : false;
bool sortTime = (sortMode == msmTime) ? true : false;
bool sortProvider = (sortMode == msmProvider) ? true : false;
intTokens.insert(pair<string, int>("sortnumber", sortNumber));
intTokens.insert(pair<string, int>("sortname", sortName));
intTokens.insert(pair<string, int>("sorttime", sortTime));
intTokens.insert(pair<string, int>("sortprovider", sortProvider));
ClearViewElement(veSortMode);
DrawViewElement(veSortMode, &stringTokens, &intTokens);
return true;
}
bool cDisplayMenuView::BackgroundImplemented(void) {
if (!ExecuteViewElement(veBackground)) {
return false;

View File

@@ -5,9 +5,21 @@
#include "viewhelpers.h"
#include "displaymenulistview.h"
#if APIVERSNUM < 20107
enum eMenuSortMode {
msmUnknown = 0,
msmNumber,
msmName,
msmTime,
msmProvider
};
#endif
class cDisplayMenuView : public cView, public cViewHelpers {
protected:
eMenuCategory cat;
eMenuSortMode sortMode;
eMenuSortMode sortModeLast;
string menuTitle;
string *buttonTexts;
virtual void Action(void);
@@ -15,6 +27,7 @@ public:
cDisplayMenuView(cTemplateView *tmplView, bool menuInit);
virtual ~cDisplayMenuView();
void SetMenuCat(eMenuCategory newCat) { cat = newCat; };
void SetSortMode(eMenuSortMode sortMode) { this->sortMode = sortMode; };
void SetTitle(const char *title) {menuTitle = title; };
virtual void SetChannel(const cChannel *channel) {};
virtual const cChannel *GetChannel(void) { return NULL; };
@@ -29,6 +42,7 @@ public:
bool DrawColorButtons(void);
bool DrawMessage(eMessageType type, const char *text);
void DrawScrollbar(int numMax, int numDisplayed, int offset);
bool DrawSortMode(void);
virtual void DrawStaticViewElements(void) {};
virtual bool DrawDynamicViewElements(void) { return false; };
bool BackgroundImplemented(void);