summaryrefslogtreecommitdiff
path: root/recmenuitem.c
diff options
context:
space:
mode:
Diffstat (limited to 'recmenuitem.c')
-rw-r--r--recmenuitem.c74
1 files changed, 74 insertions, 0 deletions
diff --git a/recmenuitem.c b/recmenuitem.c
index 5ad06ca..ec85136 100644
--- a/recmenuitem.c
+++ b/recmenuitem.c
@@ -2731,4 +2731,78 @@ eRecMenuState cRecMenuItemFavorite::ProcessKey(eKeys Key) {
break;
}
return rmsNotConsumed;
+}
+
+// --- cRecMenuItemFavoriteStatic -------------------------------------------------------
+cRecMenuItemFavoriteStatic::cRecMenuItemFavoriteStatic(std::string text, eRecMenuState action, bool active) {
+ this->text = text;
+ this->action = action;
+ pixmapText = NULL;
+ pixmapIcons = NULL;
+ selectable = true;
+ this->active = active;
+ height = 2 * font->Height();;
+}
+
+cRecMenuItemFavoriteStatic::~cRecMenuItemFavoriteStatic(void) {
+ if (pixmapText)
+ osdManager.releasePixmap(pixmapText);
+ if (pixmapIcons)
+ osdManager.releasePixmap(pixmapIcons);
+}
+
+void cRecMenuItemFavoriteStatic::SetPixmaps(void) {
+ if (!pixmap) {
+ pixmap = osdManager.requestPixmap(4, cRect(x, y, width, height));
+ pixmapText = osdManager.requestPixmap(5, cRect(x, y, width, height));
+ pixmapIcons = osdManager.requestPixmap(6, cRect(x, y, width, height));
+ } else {
+ pixmap->SetViewPort(cRect(x, y, width, height));
+ pixmapText->SetViewPort(cRect(x, y, width, height));
+ pixmapIcons->SetViewPort(cRect(x, y, width, height));
+ }
+}
+
+void cRecMenuItemFavoriteStatic::Draw(void) {
+ int textX = DrawIcons();
+ pixmapText->Fill(clrTransparent);
+ textX += 20;
+ pixmapText->DrawText(cPoint(textX, (height - fontLarge->Height())/2), text.c_str(), colorText, clrTransparent, fontLarge);
+}
+
+void cRecMenuItemFavoriteStatic::Hide(void) {
+ if (pixmap) pixmap->SetLayer(-1);
+ if (pixmapText) pixmapText->SetLayer(-1);
+ if (pixmapIcons) pixmapIcons->SetLayer(-1);
+}
+
+void cRecMenuItemFavoriteStatic::Show(void) {
+ if (pixmap) pixmap->SetLayer(4);
+ if (pixmapText) pixmapText->SetLayer(5);
+ if (pixmapIcons) pixmapIcons->SetLayer(6);
+}
+
+int cRecMenuItemFavoriteStatic::DrawIcons(void) {
+ pixmapIcons->Fill(clrTransparent);
+ int iconsX = 10;
+ int iconSize = height / 2;
+ int iconY = (height - iconSize) / 2;
+ std::string iconSearch;
+ iconSearch = active ? "search_active" : "search_inactive" ;
+ cImage *imgSearch = imgCache.GetIcon(iconSearch, iconSize, iconSize);
+ if (imgSearch) {
+ pixmapIcons->DrawImage(cPoint(iconsX, iconY), *imgSearch);
+ iconsX += iconSize + 10;
+ }
+ return iconsX;
+}
+
+eRecMenuState cRecMenuItemFavoriteStatic::ProcessKey(eKeys Key) {
+ switch (Key & ~k_Repeat) {
+ case kOk:
+ return action;
+ default:
+ break;
+ }
+ return rmsNotConsumed;
} \ No newline at end of file