summaryrefslogtreecommitdiff
path: root/footer.c
diff options
context:
space:
mode:
authorlouis <louis.braun@gmx.de>2013-12-21 11:25:03 +0100
committerlouis <louis.braun@gmx.de>2013-12-21 11:25:03 +0100
commit4c61104675de5f1fac7e7fa95fb5743e18defc02 (patch)
tree7a3ee90e3b28246e8d4595954d4559445fb7ebe7 /footer.c
parent8aa2c81d3165a0517115337362f1203ea4bdd899 (diff)
downloadvdr-plugin-tvguide-4c61104675de5f1fac7e7fa95fb5743e18defc02.tar.gz
vdr-plugin-tvguide-4c61104675de5f1fac7e7fa95fb5743e18defc02.tar.bz2
Version 1.2.0pre
Diffstat (limited to 'footer.c')
-rw-r--r--footer.c130
1 files changed, 67 insertions, 63 deletions
diff --git a/footer.c b/footer.c
index 36bf652..8d1d03e 100644
--- a/footer.c
+++ b/footer.c
@@ -6,16 +6,13 @@
cFooter::cFooter(cChannelGroups *channelGroups) {
this->channelGroups = channelGroups;
currentGroup = -1;
- buttonBorder = 20;
- buttonWidth = (tvguideConfig.osdWidth - tvguideConfig.timeLineWidth - 5*buttonBorder)/4;
- buttonHeight= tvguideConfig.footerHeight - 2*buttonBorder;
- buttonY = (tvguideConfig.footerHeight - buttonHeight)/2;
+ buttonY = (geoManager.footerHeight - geoManager.buttonHeight)/2;
SetButtonPositions();
- footer = osdManager.requestPixmap(2, cRect( tvguideConfig.timeLineWidth,
- tvguideConfig.osdHeight - tvguideConfig.footerHeight,
- tvguideConfig.osdWidth - tvguideConfig.timeLineWidth,
- tvguideConfig.footerHeight),
+ footer = osdManager.requestPixmap(2, cRect( 0,
+ geoManager.osdHeight - geoManager.footerHeight,
+ geoManager.osdWidth,
+ geoManager.footerHeight),
cRect::Null);
footer->Fill(clrTransparent);
}
@@ -24,76 +21,29 @@ cFooter::~cFooter(void) {
osdManager.releasePixmap(footer);
}
-void cFooter::SetButtonPositions(void) {
- for (int i=0; i < 4; i++) {
- positionButtons[i] = -1;
- }
- /*
- red button = 0
- green button = 1
- yellow button = 2
- blue button = 3
- */
- for (int button=0; button<4; button++) {
- if (Setup.ColorKey0 == button) {
- positionButtons[button] = 0;
- continue;
- }
- if (Setup.ColorKey1 == button) {
- positionButtons[button] = 1;
- continue;
- }
- if (Setup.ColorKey2 == button) {
- positionButtons[button] = 2;
- continue;
- }
- if (Setup.ColorKey3 == button) {
- positionButtons[button] = 3;
- continue;
- }
- }
-}
-
-void cFooter::DrawButton(const char *text, tColor color, tColor borderColor, int num) {
- tColor colorTextBack = (tvguideConfig.useBlending==0)?color:clrTransparent;
- int left = num * buttonWidth + (num + 1) * buttonBorder;
- footer->DrawRectangle(cRect(left, buttonY, buttonWidth, buttonHeight), borderColor);
- if (tvguideConfig.useBlending) {
- cImageLoader imgLoader;
- imgLoader.DrawBackground(theme.Color(clrButtonBlend), color, buttonWidth-4, buttonHeight-4);
- footer->DrawImage(cPoint(left+2, buttonY+2), imgLoader.GetImage());
- } else {
- footer->DrawRectangle(cRect(left, buttonY, buttonWidth, buttonHeight), borderColor);
- footer->DrawRectangle(cRect(left+2, buttonY+2, buttonWidth-4, buttonHeight-4), color);
- }
- int textWidth = tvguideConfig.FontButton->Width(text);
- int textHeight = tvguideConfig.FontButton->Height();
- footer->DrawText(cPoint(left + (buttonWidth-textWidth)/2, buttonY + (buttonHeight-textHeight)/2), text, theme.Color(clrFontButtons), colorTextBack, tvguideConfig.FontButton);
-}
-
void cFooter::drawRedButton() {
cString text(tr("Search & Rec"));
- DrawButton(*text, theme.Color(clrButtonRed), theme.Color(clrButtonRedBorder), positionButtons[0]);
+ DrawButton(*text, theme.Color(clrButtonRed), theme.Color(clrButtonRedBorder), oeButtonRed, positionButtons[0]);
}
void cFooter::drawGreenButton() {
cString text = cString::sprintf("%d %s", tvguideConfig.jumpChannels, tr("Channels back"));
- DrawButton(*text, theme.Color(clrButtonGreen), theme.Color(clrButtonGreenBorder), positionButtons[1]);
+ DrawButton(*text, theme.Color(clrButtonGreen), theme.Color(clrButtonGreenBorder), oeButtonGreen, positionButtons[1]);
}
void cFooter::drawGreenButton(const char *text) {
- std::string cuttedText = CutText(text, buttonWidth-6, tvguideConfig.FontButton);
- DrawButton(cuttedText.c_str(), theme.Color(clrButtonGreen), theme.Color(clrButtonGreenBorder), positionButtons[1]);
+ std::string cuttedText = CutText(text, geoManager.buttonWidth-6, fontManager.FontButton);
+ DrawButton(cuttedText.c_str(), theme.Color(clrButtonGreen), theme.Color(clrButtonGreenBorder), oeButtonGreen, positionButtons[1]);
}
void cFooter::drawYellowButton() {
cString text = cString::sprintf("%d %s", tvguideConfig.jumpChannels, tr("Channels forward"));
- DrawButton(*text, theme.Color(clrButtonYellow), theme.Color(clrButtonYellowBorder), positionButtons[2]);
+ DrawButton(*text, theme.Color(clrButtonYellow), theme.Color(clrButtonYellowBorder), oeButtonYellow, positionButtons[2]);
}
void cFooter::drawYellowButton(const char *text) {
- std::string cuttedText = CutText(text, buttonWidth-6, tvguideConfig.FontButton);
- DrawButton(cuttedText.c_str(), theme.Color(clrButtonYellow), theme.Color(clrButtonYellowBorder), positionButtons[2]);
+ std::string cuttedText = CutText(text, geoManager.buttonWidth-6, fontManager.FontButton);
+ DrawButton(cuttedText.c_str(), theme.Color(clrButtonYellow), theme.Color(clrButtonYellowBorder), oeButtonYellow, positionButtons[2]);
}
void cFooter::drawBlueButton() {
@@ -102,7 +52,7 @@ void cFooter::drawBlueButton() {
text = tr("Switch to Channel");
else if (tvguideConfig.blueKeyMode == 1)
text = tr("Detailed EPG");
- DrawButton(*text, theme.Color(clrButtonBlue), theme.Color(clrButtonBlueBorder), positionButtons[3]);
+ DrawButton(*text, theme.Color(clrButtonBlue), theme.Color(clrButtonBlueBorder), oeButtonBlue, positionButtons[3]);
}
void cFooter::UpdateGroupButtons(const cChannel *channel) {
@@ -113,3 +63,57 @@ void cFooter::UpdateGroupButtons(const cChannel *channel) {
drawYellowButton(channelGroups->GetNext(group));
}
}
+
+void cFooter::SetButtonPositions(void) {
+ for (int i=0; i < 4; i++) {
+ positionButtons[i] = -1;
+ }
+ /*
+ red button = 0
+ green button = 1
+ yellow button = 2
+ blue button = 3
+ */
+ for (int button=0; button<4; button++) {
+ if (Setup.ColorKey0 == button) {
+ positionButtons[button] = 0;
+ continue;
+ }
+ if (Setup.ColorKey1 == button) {
+ positionButtons[button] = 1;
+ continue;
+ }
+ if (Setup.ColorKey2 == button) {
+ positionButtons[button] = 2;
+ continue;
+ }
+ if (Setup.ColorKey3 == button) {
+ positionButtons[button] = 3;
+ continue;
+ }
+ }
+}
+
+void cFooter::DrawButton(const char *text, tColor color, tColor borderColor, eOsdElementType buttonType, int num) {
+ tColor colorTextBack = (tvguideConfig.style == eStyleFlat)?color:clrTransparent;
+ int left = num * geoManager.buttonWidth + (2 * num + 1) * geoManager.buttonBorder;
+
+ if ((tvguideConfig.style == eStyleBlendingMagick) || (tvguideConfig.style == eStyleBlendingDefault)) {
+ cImageLoader imgLoader;
+ imgLoader.DrawBackground(theme.Color(clrButtonBlend), color, geoManager.buttonWidth-4, geoManager.buttonHeight-4);
+ footer->DrawRectangle(cRect(left, buttonY, geoManager.buttonWidth, geoManager.buttonHeight), borderColor);
+ footer->DrawImage(cPoint(left+2, buttonY+2), imgLoader.GetImage());
+ } else if (tvguideConfig.style == eStyleGraphical) {
+ cImage *button = imgCache.GetOsdElement(buttonType);
+ if (button) {
+ footer->DrawImage(cPoint(left, buttonY), *button);
+ }
+ } else {
+ footer->DrawRectangle(cRect(left, buttonY, geoManager.buttonWidth, geoManager.buttonHeight), borderColor);
+ footer->DrawRectangle(cRect(left+2, buttonY+2, geoManager.buttonWidth-4, geoManager.buttonHeight-4), color);
+ }
+
+ int textWidth = fontManager.FontButton->Width(text);
+ int textHeight = fontManager.FontButton->Height();
+ footer->DrawText(cPoint(left + (geoManager.buttonWidth-textWidth)/2, buttonY + (geoManager.buttonHeight-textHeight)/2), text, theme.Color(clrFontButtons), colorTextBack, fontManager.FontButton);
+} \ No newline at end of file