diff --git a/HISTORY b/HISTORY index fdf9aab..f4e3843 100644 --- a/HISTORY +++ b/HISTORY @@ -33,5 +33,7 @@ Version 0.0.2 - if a subview is completely not set in a skin, the default menu is used - fixed a bug if displaydetailedtext is called without correct menucat (mailbox plugin) - implemented function drawslope, see Wiki for documentation +- using default menu list in case an invalid MenuCategory is set + diff --git a/views/displaymenurootview.c b/views/displaymenurootview.c index 00fb329..db4b079 100644 --- a/views/displaymenurootview.c +++ b/views/displaymenurootview.c @@ -12,6 +12,10 @@ cDisplayMenuRootView::cDisplayMenuRootView(cTemplateView *rootView) : cView(root view = NULL; listView = NULL; detailView = NULL; + buttonTexts[0] = ""; + buttonTexts[1] = ""; + buttonTexts[2] = ""; + buttonTexts[3] = ""; defaultBackgroundDrawn = false; defaultHeaderDrawn = false; defaultButtonsDrawn = false; @@ -216,14 +220,24 @@ void cDisplayMenuRootView::SetMessage(eMessageType type, const char *text) { } void cDisplayMenuRootView::SetDetailedViewEvent(const cEvent *event) { - if (!detailView) - detailView = new cDisplayMenuDetailView(subView); + if (!detailView) { + if (viewType != svMenuDetailedEpg) { + SetMenu(mcEvent, true); + } else { + detailView = new cDisplayMenuDetailView(subView); + } + } detailView->SetEvent(event); } void cDisplayMenuRootView::SetDetailedViewRecording(const cRecording *recording) { - if (!detailView) - detailView = new cDisplayMenuDetailView(subView); + if (!detailView) { + if (viewType != svMenuDetailedRecording) { + SetMenu(mcRecordingInfo, true); + } else { + detailView = new cDisplayMenuDetailView(subView); + } + } detailView->SetRecording(recording); } @@ -231,7 +245,6 @@ void cDisplayMenuRootView::SetDetailedViewText(const char *text) { if (!detailView) { if (viewType != svMenuDetailedText) { SetMenu(mcText, true); - SetButtonTexts(NULL, NULL, NULL, NULL); } else { detailView = new cDisplayMenuDetailView(subView); } @@ -281,7 +294,9 @@ int cDisplayMenuRootView::GetMaxItems(void) { if (listView) { return listView->GetMaxItems(); } - return 0; + //wrong menucat + SetMenu(mcUnknown, true); + return listView->GetMaxItems(); } int cDisplayMenuRootView::GetListViewWidth(void) { diff --git a/views/displaymenuview.c b/views/displaymenuview.c index 8ed9a3d..66df9a6 100644 --- a/views/displaymenuview.c +++ b/views/displaymenuview.c @@ -12,6 +12,7 @@ cDisplayMenuView::cDisplayMenuView(cTemplateView *tmplView, bool menuInit) : cVi else SetFadeTime(0); cat = mcUndefined; + buttonTexts = NULL; } cDisplayMenuView::~cDisplayMenuView() { @@ -106,10 +107,10 @@ bool cDisplayMenuView::DrawColorButtons(void) { map < string, string > stringTokens; map < string, int > intTokens; - stringTokens.insert(pair("red", buttonTexts[0])); - stringTokens.insert(pair("green", buttonTexts[1])); - stringTokens.insert(pair("yellow", buttonTexts[2])); - stringTokens.insert(pair("blue", buttonTexts[3])); + stringTokens.insert(pair("red", buttonTexts ? buttonTexts[0] : "")); + stringTokens.insert(pair("green", buttonTexts ? buttonTexts[1]: "")); + stringTokens.insert(pair("yellow", buttonTexts ? buttonTexts[2]: "")); + stringTokens.insert(pair("blue", buttonTexts ? buttonTexts[3] : "")); int colorKeys[4] = { Setup.ColorKey0, Setup.ColorKey1, Setup.ColorKey2, Setup.ColorKey3 };