diff options
author | louis <louis.braun@gmx.de> | 2013-03-17 18:39:03 +0100 |
---|---|---|
committer | louis <louis.braun@gmx.de> | 2013-03-17 18:39:03 +0100 |
commit | 44d0628d0e09000d25b163a210851673cc7ad695 (patch) | |
tree | 713d53e2a3c75e7bd407c630bb4ebd6e58c1352d | |
parent | 1e31f10fa68907104562b41fda09fe61485afdb0 (diff) | |
download | skin-nopacity-44d0628d0e09000d25b163a210851673cc7ad695.tar.gz skin-nopacity-44d0628d0e09000d25b163a210851673cc7ad695.tar.bz2 |
Display grapical progress bar in every default style VDR menu, fixed progress bar detection
-rw-r--r-- | displaymenu.c | 2 | ||||
-rw-r--r-- | menuitem.c | 51 | ||||
-rw-r--r-- | menuitem.h | 3 |
3 files changed, 27 insertions, 29 deletions
diff --git a/displaymenu.c b/displaymenu.c index 8637231..0bedb00 100644 --- a/displaymenu.c +++ b/displaymenu.c @@ -551,7 +551,7 @@ void cNopacityDisplayMenu::SetItem(const char *Text, int Index, bool Current, bo if (config.useMenuIcons) hasIcons = true; } else { - item = new cNopacityDefaultMenuItem(osd, Text, Selectable, MenuCategory()); + item = new cNopacityDefaultMenuItem(osd, Text, Selectable); menuView->GetMenuItemSize(mcUnknown, &itemSize); item->SetFont(menuView->GetMenuItemFont(mcUnknown)); } @@ -1052,16 +1052,19 @@ void cNopacityRecordingMenuItem::Render() { // cNopacityDefaultMenuItem ------------- -cNopacityDefaultMenuItem::cNopacityDefaultMenuItem(cOsd *osd, const char *text, bool sel, eMenuCategory menuCat) : cNopacityMenuItem (osd, text, sel) { +cNopacityDefaultMenuItem::cNopacityDefaultMenuItem(cOsd *osd, const char *text, bool sel) : cNopacityMenuItem (osd, text, sel) { scrollCol = -1; - this->menuCat = menuCat; } cNopacityDefaultMenuItem::~cNopacityDefaultMenuItem(void) { } bool cNopacityDefaultMenuItem::CheckProgressBar(const char *text) { - if (strlen(text) > 5 && text[0] == '[' && text[strlen(text) - 1] == ']') + if (strlen(text) > 5 + && text[0] == '[' + && ((text[1] == '|')||(text[1] == ' ')) + && ((text[2] == '|')||(text[2] == ' ')) + && text[strlen(text) - 1] == ']') return true; return false; } @@ -1111,7 +1114,7 @@ int cNopacityDefaultMenuItem::CheckScrollable(bool hasIcon) { int colTextWidth = 0; for (int i=0; i<numTabs; i++) { if (tabWidth[i] > 0) { - if ((menuCat == mcScheduleNow)&&(CheckProgressBar(*itemTabs[i]))) + if (CheckProgressBar(*itemTabs[i])) continue; colWidth = tabWidth[i+cSkinDisplayMenu::MaxTabs]; colTextWidth = font->Width(*itemTabs[i]); @@ -1144,38 +1147,34 @@ void cNopacityDefaultMenuItem::Render() { int colWidth = 0; int colTextWidth = 0; cString itemText(""); - std::stringstream sstrText; for (int i=0; i<numTabs; i++) { if (tabWidth[i] > 0) { - if (selectable) { - colWidth = tabWidth[i+cSkinDisplayMenu::MaxTabs]; - int posX = tabWidth[i]; - if ((menuCat == mcScheduleNow)&&(CheckProgressBar(*itemTabs[i]))) { - DrawProgressBar(posX, colWidth, *itemTabs[i], clrFont); - } else if (i != scrollCol) { - colTextWidth = font->Width(*itemTabs[i]); - if (colTextWidth > colWidth) { - cTextWrapper itemTextWrapped; - itemTextWrapped.Set(*itemTabs[i], font, colWidth - font->Width("... ")); + colWidth = tabWidth[i+cSkinDisplayMenu::MaxTabs]; + int posX = tabWidth[i]; + if (CheckProgressBar(*itemTabs[i])) { + DrawProgressBar(posX, colWidth, *itemTabs[i], clrFont); + } else if (i != scrollCol) { + colTextWidth = font->Width(*itemTabs[i]); + if (colTextWidth > colWidth) { + cTextWrapper itemTextWrapped; + itemTextWrapped.Set(*itemTabs[i], font, colWidth - font->Width("... ")); + if (selectable) itemText = cString::sprintf("%s... ", itemTextWrapped.GetLine(0)); - } else { - itemText = itemTabs[i]; - } - if (i==0) posX += 5; - pixmap->DrawText(cPoint(posX, (height - font->Height()) / 2), *itemText, clrFont, clrTransparent, font); + else + itemText = cString::sprintf("%s", itemTextWrapped.GetLine(0)); } else { - if (!Running()) - SetTextShort(); + itemText = itemTabs[i]; } + if (i==0) posX += 5; + pixmap->DrawText(cPoint(posX, (height - font->Height()) / 2), *itemText, clrFont, clrTransparent, font); } else { - sstrText << *itemTabs[i]; + if (!Running()) + SetTextShort(); } } else break; } - if (!selectable) { - pixmap->DrawText(cPoint(10, (height - font->Height()) / 2), sstrText.str().c_str(), clrFont, clrTransparent, font); - } + if (current && scrollable && !Running() && config.menuScrollSpeed) { Start(); } @@ -174,7 +174,6 @@ public: class cNopacityDefaultMenuItem : public cNopacityMenuItem { private: - eMenuCategory menuCat; bool CheckProgressBar(const char *text); void DrawProgressBar(int x, int width, const char *bar, tColor color); std::string strEntry; @@ -183,7 +182,7 @@ private: void SetTextFull(void); void SetTextShort(void); public: - cNopacityDefaultMenuItem(cOsd *osd, const char *text, bool sel, eMenuCategory menuCat); + cNopacityDefaultMenuItem(cOsd *osd, const char *text, bool sel); ~cNopacityDefaultMenuItem(void); int CheckScrollable(bool hasIcon); void Render(); |