summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--HISTORY5
-rw-r--r--baserender.c2
-rw-r--r--config.c10
-rw-r--r--config.h4
-rw-r--r--displaymenu.c270
-rw-r--r--displaymenu.h5
-rw-r--r--icons/default/changroup.pngbin0 -> 2101 bytes
-rw-r--r--icons/default/extraIcons/Playing.pngbin9112 -> 1991 bytes
-rw-r--r--po/de_DE.po19
-rw-r--r--setup.c12
10 files changed, 251 insertions, 76 deletions
diff --git a/HISTORY b/HISTORY
index ecf5a82f..95bba5e8 100644
--- a/HISTORY
+++ b/HISTORY
@@ -1,6 +1,11 @@
VDR Plugin 'skinflatplus' Revision History
---------------------------------------
+2013-12-XX: Version 0.1.1
+
+- [fix] load user decor settings
+- [fix] menu scrollbar size and margin
+
2013-11-24: Version 0.1.0 - MegaV0lt Version
Special thanks to MegaV0lt@VDR-Portal for
detailed bug reports, feature requests, testing and themes + icons
diff --git a/baserender.c b/baserender.c
index 101bd4a2..702ca67a 100644
--- a/baserender.c
+++ b/baserender.c
@@ -847,7 +847,7 @@ void cFlatBaseRender::ScrollbarDraw(cPixmap *Pixmap, int Left, int Top, int Heig
int scrollHeight = max(int((Height) * double(Shown) / Total + 0.5), 5);
int scrollTop = min(int(Top + (Height) * double(Offset) / Total + 0.5), Top + Height - scrollHeight);
- //Pixmap->Fill(clrTransparent);
+ Pixmap->Fill(clrTransparent);
Pixmap->DrawRectangle(cRect(Left, Top, scrollBarWidth, Height), Theme.Color(clrScrollbarBg));
if( scrollBarWidth <= 10 )
diff --git a/config.c b/config.c
index f59844c5..1c194f86 100644
--- a/config.c
+++ b/config.c
@@ -37,6 +37,10 @@ cFlatConfig::cFlatConfig(void) {
TopBarFontSize = 0.05;
MessageOffset = 50;
+ MainMenuItemScale = 1.0;
+
+ MenuChannelType = 1;
+
decorBorderChannelByTheme = 1;
decorBorderChannelTypeUser = 0;
decorBorderChannelSizeUser = 0;
@@ -169,6 +173,9 @@ bool cFlatConfig::SetupParse(const char *Name, const char *Value) {
else if (strcmp(Name, "MenuItemIconsShow") == 0) MenuItemIconsShow = atoi(Value);
else if (strcmp(Name, "TopBarMenuIconShow") == 0) TopBarMenuIconShow = atoi(Value);
else if (strcmp(Name, "DecorIndex") == 0) DecorIndex = atoi(Value);
+ else if (strcmp(Name, "MainMenuItemScale") == 0) MainMenuItemScale = atod(Value);
+ else if (strcmp(Name, "MenuChannelType") == 0) MenuChannelType = atoi(Value);
+
else return false;
return true;
@@ -186,7 +193,7 @@ void cFlatConfig::DecorCheckAndInit(void) {
if( DecorCurrent != DecorIndex ) {
DecorCurrent = DecorIndex;
DecorLoadCurrent();
-
+ }
if( decorBorderChannelByTheme ) {
decorBorderChannelType = decorBorderChannelTypeTheme;
decorBorderChannelSize = decorBorderChannelSizeTheme;
@@ -327,7 +334,6 @@ void cFlatConfig::DecorCheckAndInit(void) {
decorBorderMenuContentSize = 0;
if( decorBorderButtonType == 0 )
decorBorderButtonSize = 0;
- }
}
void cFlatConfig::ThemeInit(void) {
diff --git a/config.h b/config.h
index 2005aa14..01d862e5 100644
--- a/config.h
+++ b/config.h
@@ -173,5 +173,9 @@ class cFlatConfig
int MenuItemIconsShow;
int TopBarMenuIconShow;
+ double MainMenuItemScale;
+
+ int MenuChannelType;
+
int DecorIndex;
};
diff --git a/displaymenu.c b/displaymenu.c
index f13630da..f898058b 100644
--- a/displaymenu.c
+++ b/displaymenu.c
@@ -43,7 +43,7 @@ cFlatDisplayMenu::cFlatDisplayMenu(void) {
itemHeight = fontHeight + Config.MenuItemPadding + Config.decorBorderMenuItemSize*2;
itemChannelHeight = fontHeight + Config.MenuItemPadding + Config.decorBorderMenuItemSize*2;
- scrollBarWidth = ScrollBarWidth() + Config.MenuItemPadding;
+ scrollBarWidth = ScrollBarWidth() + marginItem;
scrollBarHeight = osdHeight - (topBarHeight + Config.decorBorderTopBarSize*2 +
buttonsHeight + Config.decorBorderButtonSize*2 + marginItem*3 );
scrollBarTop = topBarHeight + marginItem + Config.decorBorderTopBarSize*2;
@@ -63,7 +63,7 @@ cFlatDisplayMenu::cFlatDisplayMenu(void) {
chHeight = fontHeight + fontSmlHeight*2 + marginItem*2;
contentHeadPixmap = osd->CreatePixmap(1, cRect(chLeft, chTop, chWidth, chHeight));
- scrollbarPixmap = osd->CreatePixmap(2, cRect(osdWidth - scrollBarWidth, scrollBarTop, scrollBarWidth, scrollBarHeight));
+ scrollbarPixmap = osd->CreatePixmap(2, cRect(0, scrollBarTop, menuWidth, scrollBarHeight));
menuPixmap->Fill(clrTransparent);
menuIconsPixmap->Fill(clrTransparent);
@@ -88,6 +88,16 @@ cFlatDisplayMenu::~cFlatDisplayMenu() {
void cFlatDisplayMenu::SetMenuCategory(eMenuCategory MenuCategory) {
menuCategory = MenuCategory;
+
+ if( menuCategory == mcChannel ) {
+ if( Config.MenuChannelType == 0 )
+ itemChannelHeight = fontHeight + Config.MenuItemPadding + Config.decorBorderMenuItemSize*2;
+ else if( Config.MenuChannelType == 1 )
+ itemChannelHeight = fontHeight + Config.MenuItemPadding + Config.decorBorderMenuItemSize*2;
+ else if( Config.MenuChannelType == 2 )
+ itemChannelHeight = fontHeight + fontSmlHeight + marginItem + Config.decorProgressMenuItemSize + Config.MenuItemPadding + Config.decorBorderMenuItemSize*2;
+
+ }
}
void cFlatDisplayMenu::DrawScrollbar(int Total, int Offset, int Shown, int Top, int Height, bool CanScrollUp, bool CanScrollDown) {
@@ -97,13 +107,13 @@ void cFlatDisplayMenu::DrawScrollbar(int Total, int Offset, int Shown, int Top,
DecorBorderClearByFrom(BorderMenuItem);
ItemBorderDrawAllWithScrollbar();
ItemBorderClear();
- menuPixmap->DrawRectangle(cRect(menuWidth - scrollBarWidth - Config.decorBorderMenuItemSize, 0, scrollBarWidth, scrollBarHeight), clrTransparent);
+ menuPixmap->DrawRectangle(cRect(menuItemWidth - scrollBarWidth + Config.decorBorderMenuItemSize, 0, scrollBarWidth + marginItem, scrollBarHeight), clrTransparent);
}
} else if( ShowEvent == false && ShowRecording == false && ShowText == false ) {
isScrolling = false;
}
- ScrollbarDraw(scrollbarPixmap, Config.MenuItemPadding, Top, Height, Total, Offset, Shown, CanScrollUp, CanScrollDown);
+ ScrollbarDraw(scrollbarPixmap, menuItemWidth - scrollBarWidth + Config.decorBorderMenuItemSize*2 + marginItem, Top, Height, Total, Offset, Shown, CanScrollUp, CanScrollDown);
}
void cFlatDisplayMenu::SetScrollbar(int Total, int Offset) {
@@ -207,6 +217,12 @@ void cFlatDisplayMenu::SetTitle(const char *Title) {
case mcCommand:
icon = "menuIcons/Commands";
break;
+ case mcEvent:
+ icon = "extraIcons/Info";
+ break;
+ case mcRecordingInfo:
+ icon = "extraIcons/PlayInfo";
+ break;
default:
icon = "";
}
@@ -231,10 +247,15 @@ void cFlatDisplayMenu::SetItem(const char *Text, int Index, bool Current, bool S
ShowText = false;
int y = Index * itemHeight;
- int Width = menuWidth - Config.decorBorderMenuItemSize*2;
- if( isScrolling )
- Width -= scrollBarWidth;
+ menuItemWidth = menuWidth - Config.decorBorderMenuItemSize*2;
+
+ //if( menuCategory == mcMain )
+ // menuItemWidth *= 0.5;
+ int AvailableTextWidth = menuItemWidth - scrollBarWidth;
+ if( isScrolling )
+ menuItemWidth -= scrollBarWidth;
+
tColor ColorFg, ColorBg;
if (Current) {
ColorFg = Theme.Color(clrItemCurrentFont);
@@ -249,7 +270,7 @@ void cFlatDisplayMenu::SetItem(const char *Text, int Index, bool Current, bool S
ColorBg = Theme.Color(clrItemBg);
}
}
- menuPixmap->DrawRectangle(cRect(Config.decorBorderMenuItemSize, y, Width, fontHeight), ColorBg);
+ menuPixmap->DrawRectangle(cRect(Config.decorBorderMenuItemSize, y, menuItemWidth, fontHeight), ColorBg);
int lh = fontHeight;
int x1 = 0;
int xOff = x1;
@@ -267,7 +288,9 @@ void cFlatDisplayMenu::SetItem(const char *Text, int Index, bool Current, bool S
bool isRunning = false;
int xt = Tab(i);
-
+
+ if( xt >= menuItemWidth )
+ continue;
if( true ) {
// check if timer info symbols: " !#>"
if (i == 0 && strlen(s) == 1 && strchr(" !#>", s[0])) {
@@ -299,6 +322,7 @@ void cFlatDisplayMenu::SetItem(const char *Text, int Index, bool Current, bool S
}
}
xOff = x1 + Tab(i) + Config.decorBorderMenuItemSize;
+
if( istimer ) {
// timer menu
switch( s[0] ) {
@@ -332,11 +356,11 @@ void cFlatDisplayMenu::SetItem(const char *Text, int Index, bool Current, bool S
xOff += bmVPS->Width();
if( isRunning )
- menuPixmap->DrawText(cPoint(xOff, y), "*", ColorFg, ColorBg, font, xOff);
+ menuPixmap->DrawText(cPoint(xOff, y), "*", ColorFg, ColorBg, font, AvailableTextWidth - xOff);
} else if (isnewrecording) {
// recordings menu
- menuPixmap->DrawText(cPoint(xOff, y), buffer, ColorFg, ColorBg, font, xOff);
+ menuPixmap->DrawText(cPoint(xOff, y), buffer, ColorFg, ColorBg, font, AvailableTextWidth - xOff);
// draw symbol "new" centered
int gap = std::max(0, (Tab(i+1)-Tab(i)- font->Width(buffer) - bmNew->Width()) / 2);
@@ -367,10 +391,10 @@ void cFlatDisplayMenu::SetItem(const char *Text, int Index, bool Current, bool S
}
}
menuPixmap->DrawText(cPoint(fontHeight + marginItem*2 + xt + Config.decorBorderMenuItemSize, y), s, ColorFg, ColorBg, font,
- Width - xt - marginItem*2 - fontHeight );
+ AvailableTextWidth - xt - marginItem*2 - fontHeight);
} else {
menuPixmap->DrawText(cPoint(xt + Config.decorBorderMenuItemSize, y), s, ColorFg, ColorBg, font,
- Width - xt);
+ AvailableTextWidth - xt);
}
}
}
@@ -381,11 +405,14 @@ void cFlatDisplayMenu::SetItem(const char *Text, int Index, bool Current, bool S
sDecorBorder ib;
ib.Left = Config.decorBorderMenuItemSize;
ib.Top = topBarHeight + marginItem + Config.decorBorderTopBarSize*2 + Config.decorBorderMenuItemSize + y;
+
ib.Width = menuWidth - Config.decorBorderMenuItemSize*2;
if( isScrolling ) {
ib.Width -= scrollBarWidth;
}
-
+
+ ib.Width = menuItemWidth;
+
ib.Height = fontHeight;
ib.Size = Config.decorBorderMenuItemSize;
ib.Type = Config.decorBorderMenuItemType;
@@ -524,14 +551,27 @@ void cFlatDisplayMenu::DrawProgressBarFromText(int Top, int Left, int Width, con
}
}
-/*
bool cFlatDisplayMenu::SetItemChannel(const cChannel *Channel, int Index, bool Current, bool Selectable, bool WithProvider) {
+ if( Config.MenuChannelType == 0 || !Channel )
+ return false;
+
cSchedulesLock schedulesLock;
const cSchedules *schedules = cSchedules::Schedules(schedulesLock);
cString buffer;
int y = Index * itemChannelHeight;
+
+ int Height = fontHeight;
+ if( Config.MenuChannelType == 2 )
+ Height = fontHeight + fontSmlHeight + marginItem + Config.decorProgressMenuItemSize;
+ menuItemWidth = menuWidth - Config.decorBorderMenuItemSize*2;
+ if( Config.MenuChannelType == 2 )
+ menuItemWidth *= 0.5;
+
+ if( isScrolling )
+ menuItemWidth -= scrollBarWidth;
+
tColor ColorFg, ColorBg;
if (Current) {
ColorFg = Theme.Color(clrItemCurrentFont);
@@ -546,7 +586,70 @@ bool cFlatDisplayMenu::SetItemChannel(const cChannel *Channel, int Index, bool C
ColorBg = Theme.Color(clrItemBg);
}
}
- menuPixmap->DrawRectangle(cRect(0, y, menuWidth, itemChannelHeight - paddingMenuItem), ColorBg);
+
+ menuPixmap->DrawRectangle(cRect(Config.decorBorderMenuItemSize, y, menuItemWidth, Height), ColorBg);
+
+ int Left, Top, Width;
+ int LeftName;
+ Left = Config.decorBorderMenuItemSize + marginItem;
+ Top = y;
+
+ bool DrawChanNumber = true;
+ bool DrawChanLogo = true;
+ bool DrawProgress = true;
+ if( Channel->GroupSep() )
+ DrawProgress = false;
+ float progress = 0.0;
+ cString EventTitle = "";
+
+ if( DrawChanNumber ) {
+ cString ws = "999";
+ int w = font->Width(ws);
+ if( !Channel->GroupSep() )
+ buffer = cString::sprintf("%d", Channel->Number());
+ else
+ buffer = "";
+ Width = font->Width(buffer);
+ if( Width < w )
+ Width = w;
+ menuPixmap->DrawText(cPoint(Left, Top), buffer, ColorFg, ColorBg, font, Width, fontHeight, taRight);
+ Left += Width + marginItem;
+ }
+
+ if( DrawChanLogo ) {
+ int imageHeight = fontHeight;
+ int imageLeft = Left;
+ int imageTop = Top;
+ if( imgLoader.LoadLogo(Channel->Name(), imageHeight, imageHeight) ) {
+ imageTop = Top + (fontHeight - imgLoader.Height()) / 2;
+ menuIconsPixmap->DrawImage( cPoint(imageLeft, imageTop), imgLoader.GetImage() );
+ Left += imageHeight + marginItem * 2;
+ } else {
+ bool isRadioChannel = ((!Channel->Vpid())&&(Channel->Apid(0))) ? true : false;
+
+ if( isRadioChannel ) {
+ if( imgLoader.LoadIcon("radio", imageHeight, imageHeight) ) {
+ imageTop = Top + (fontHeight - imgLoader.Height()) / 2;
+ menuIconsPixmap->DrawImage( cPoint(imageLeft, imageTop), imgLoader.GetImage() );
+ Left += imageHeight + marginItem * 2;
+ }
+ } else if( Channel->GroupSep() ) {
+ if( imgLoader.LoadIcon("changroup", imageHeight, imageHeight) ) {
+ imageTop = Top + (fontHeight - imgLoader.Height()) / 2;
+ menuIconsPixmap->DrawImage( cPoint(imageLeft, imageTop), imgLoader.GetImage() );
+ Left += imageHeight + marginItem * 2;
+ }
+ } else {
+ if( imgLoader.LoadIcon("tv", imageHeight, imageHeight) ) {
+ imageTop = Top + (fontHeight - imgLoader.Height()) / 2;
+ menuIconsPixmap->DrawImage( cPoint(imageLeft, imageTop), imgLoader.GetImage() );
+ Left += imageHeight + marginItem * 2;
+ }
+ }
+ }
+ }
+
+ LeftName = Left;
// event from channel
const cSchedule *Schedule = schedules->GetSchedule( Channel->GetChannelID() );
@@ -554,73 +657,104 @@ bool cFlatDisplayMenu::SetItemChannel(const cChannel *Channel, int Index, bool C
const cEvent *Event = Schedule->GetPresentEvent();
if( Event ) {
// calculate progress bar
- float progress = (int)roundf( (float)(time(NULL) - Event->StartTime()) / (float) (Event->Duration()) * 100.0);
+ progress = (int)roundf( (float)(time(NULL) - Event->StartTime()) / (float) (Event->Duration()) * 100.0);
if(progress < 0)
progress = 0.;
else if(progress > 100)
progress = 100;
- if( WithProvider )
- buffer = cString::sprintf("%d\t%s - %s", Channel->Number(), Channel->Provider(), Channel->Name());
- else
- buffer = cString::sprintf("%d\t%s", Channel->Number(), Channel->Name());
-
- const char *s1 = GetTabbedText(buffer, 0);
- if( s1 ) {
- int xt = Tab(0);
- menuPixmap->DrawText(cPoint(marginItem + xt, y), s1, ColorFg, ColorBg, font);
- }
- const char *s2 = GetTabbedText(buffer, 1);
- if( s2 ) {
- int xt = Tab(1);
- int w = (menuWidth / 10 * 3) - marginItem;
- menuPixmap->DrawText(cPoint(marginItem + xt, y), s2, ColorFg, ColorBg, font, w);
- }
-
- menuPixmap->DrawRectangle(cRect( (menuWidth/10*3) + marginItem, y, marginItem, fontHeight), ColorBg);
-
- if( Current )
- ProgressBarDrawInline(menuPixmap, (menuWidth/10*3) + marginItem*2, y, menuWidth/10 - marginItem, fontHeight,
- progress, 100, Theme.Color(clrMenuItemChanCurProgressFg), Theme.Color(clrMenuItemChanCurProgressBarFg),
- Theme.Color(clrMenuItemChanCurProgressBg));
- else
- ProgressBarDrawInline(menuPixmap, (menuWidth/10*3) + marginItem*2, y, menuWidth/10 - marginItem, fontHeight,
- progress, 100, Theme.Color(clrMenuItemChanProgressFg), Theme.Color(clrMenuItemChanProgressBarFg),
- Theme.Color(clrMenuItemChanProgressBg));
- menuPixmap->DrawText(cPoint((menuWidth / 10 * 4) + marginItem*2, y), Event->Title(), ColorFg, ColorBg, font);
-
- return true;
+ EventTitle = Event->Title();
}
}
-
- // without schedule, do it like vdr
- if (!Channel->GroupSep()) {
- if( WithProvider )
- buffer = cString::sprintf("%d\t%s - %s", Channel->Number(), Channel->Provider(), Channel->Name());
+
+ if( WithProvider )
+ buffer = cString::sprintf("%s - %s", Channel->Provider(), Channel->Name());
+ else
+ buffer = cString::sprintf("%s", Channel->Name());
+
+ Width = menuItemWidth / 10*2;
+ if( isScrolling )
+ Width = (menuItemWidth + scrollBarWidth) / 10*2;
+
+ if( Config.MenuChannelType == 2 )
+ Width = menuItemWidth - LeftName;
+
+ menuPixmap->DrawText(cPoint(LeftName, Top), buffer, ColorFg, ColorBg, font, Width);
+
+ Left += Width + marginItem;
+
+ if( DrawProgress ) {
+ int PBTop = y + (itemChannelHeight-Config.MenuItemPadding)/2 - Config.decorProgressMenuItemSize/2 - Config.decorBorderMenuItemSize;
+ int PBLeft = Left;
+ int PBWidth = menuItemWidth/10;
+ if( Config.MenuChannelType == 2 ) {
+ PBTop = Top + fontHeight + fontSmlHeight;
+ PBLeft = Left - Width - marginItem;
+ PBWidth = menuItemWidth - LeftName - marginItem*2;
+
+ if( isScrolling )
+ PBWidth += scrollBarWidth;
+ }
+
+ Width = menuItemWidth/10;
+ if( isScrolling )
+ Width = (menuItemWidth + scrollBarWidth) / 10;
+ if( Current )
+ ProgressBarDrawRaw(menuPixmap, menuPixmap, cRect( PBLeft, PBTop, PBWidth, Config.decorProgressMenuItemSize),
+ cRect( PBLeft, PBTop, PBWidth, Config.decorProgressMenuItemSize), progress, 100,
+ Config.decorProgressMenuItemCurFg, Config.decorProgressMenuItemCurBarFg, Config.decorProgressMenuItemCurBg, Config.decorProgressMenuItemType);
else
- buffer = cString::sprintf("%d\t%s", Channel->Number(), Channel->Name());
+ ProgressBarDrawRaw(menuPixmap, menuPixmap, cRect( PBLeft, PBTop, PBWidth, Config.decorProgressMenuItemSize),
+ cRect( PBLeft, PBTop, PBWidth, Config.decorProgressMenuItemSize), progress, 100,
+ Config.decorProgressMenuItemFg, Config.decorProgressMenuItemBarFg, Config.decorProgressMenuItemBg, Config.decorProgressMenuItemType);
+ Left += Width + marginItem;
+ }
- const char *s1 = GetTabbedText(buffer, 0);
- if( s1 ) {
- int xt = Tab(0);
- menuPixmap->DrawText(cPoint(marginItem + xt, y), s1, ColorFg, ColorBg, font);
- }
- const char *s2 = GetTabbedText(buffer, 1);
- if( s2 ) {
- int xt = Tab(1);
- int w = (menuWidth / 10 * 3) - marginItem;
+ if( Config.MenuChannelType == 2 ) {
+ Left = LeftName;
+ Top += fontHeight;
+ menuPixmap->DrawText(cPoint(Left, Top), EventTitle, ColorFg, ColorBg, fontSml, menuItemWidth - Left - marginItem );
+ } else
+ menuPixmap->DrawText(cPoint(Left, Top), EventTitle, ColorFg, ColorBg, font, menuItemWidth - Left - marginItem );
+
+ sDecorBorder ib;
+ ib.Left = Config.decorBorderMenuItemSize;
+ ib.Top = topBarHeight + marginItem + Config.decorBorderTopBarSize*2 + Config.decorBorderMenuItemSize + y;
+
+ ib.Width = menuItemWidth - Config.decorBorderMenuItemSize*2;
+
+ if( isScrolling ) {
+ ib.Width -= scrollBarWidth;
+ }
+
+ ib.Width = menuItemWidth;
+
+ ib.Height = Height;
+ ib.Size = Config.decorBorderMenuItemSize;
+ ib.Type = Config.decorBorderMenuItemType;
- menuPixmap->DrawText(cPoint(marginItem + xt, y), s2, ColorFg, ColorBg, font, w);
+ if( Current ) {
+ ib.ColorFg = Config.decorBorderMenuItemCurFg;
+ ib.ColorBg = Config.decorBorderMenuItemCurBg;
+ } else {
+ if( Selectable ) {
+ ib.ColorFg = Config.decorBorderMenuItemSelFg;
+ ib.ColorBg = Config.decorBorderMenuItemSelBg;
+ } else {
+ ib.ColorFg = Config.decorBorderMenuItemFg;
+ ib.ColorBg = Config.decorBorderMenuItemBg;
}
}
- else {
- buffer = cString::sprintf("---%s ----------------------------------------------------------------", Channel->Name());
- menuPixmap->DrawText(cPoint(marginItem, y), buffer, ColorFg, ColorBg, font);
+
+ DecorBorderDraw(ib.Left, ib.Top, ib.Width, ib.Height,
+ ib.Size, ib.Type, ib.ColorFg, ib.ColorBg, BorderMenuItem);
+
+ if( !isScrolling ) {
+ ItemBorderInsertUnique(ib);
}
return true;
}
-*/
void cFlatDisplayMenu::SetEvent(const cEvent *Event) {
if( !Event )
@@ -1115,4 +1249,4 @@ void cFlatDisplayMenu::ItemBorderDrawAllWithoutScrollbar(void) {
void cFlatDisplayMenu::ItemBorderClear(void) {
ItemsBorder.clear();
-} \ No newline at end of file
+}
diff --git a/displaymenu.h b/displaymenu.h
index 8e4b4a2e..eb047089 100644
--- a/displaymenu.h
+++ b/displaymenu.h
@@ -8,7 +8,8 @@ class cFlatDisplayMenu : public cFlatBaseRender, public cSkinDisplayMenu {
cPixmap *menuPixmap;
cPixmap *menuIconsPixmap;
int menuTop, menuWidth;
-
+ int menuItemWidth;
+
eMenuCategory menuCategory;
int VideoDiskUsageState;
@@ -62,7 +63,7 @@ class cFlatDisplayMenu : public cFlatBaseRender, public cSkinDisplayMenu {
//virtual bool SetItemEvent(const cEvent *Event, int Index, bool Current, bool Selectable, const cChannel *Channel, bool WithDate, eTimerMatch TimerMatch);
//virtual bool SetItemTimer(const cTimer *Timer, int Index, bool Current, bool Selectable);
- //virtual bool SetItemChannel(const cChannel *Channel, int Index, bool Current, bool Selectable, bool WithProvider);
+ virtual bool SetItemChannel(const cChannel *Channel, int Index, bool Current, bool Selectable, bool WithProvider);
//virtual bool SetItemRecording(const cRecording *Recording, int Index, bool Current, bool Selectable, int Level, int Total, int New);
virtual void SetScrollbar(int Total, int Offset);
diff --git a/icons/default/changroup.png b/icons/default/changroup.png
new file mode 100644
index 00000000..4dbfdb6d
--- /dev/null
+++ b/icons/default/changroup.png
Binary files differ
diff --git a/icons/default/extraIcons/Playing.png b/icons/default/extraIcons/Playing.png
index 602a6771..dda0751d 100644
--- a/icons/default/extraIcons/Playing.png
+++ b/icons/default/extraIcons/Playing.png
Binary files differ
diff --git a/po/de_DE.po b/po/de_DE.po
index 7c448f9d..c63c285d 100644
--- a/po/de_DE.po
+++ b/po/de_DE.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: vdr-skinflat 0.0.1\n"
"Report-Msgid-Bugs-To: <see README>\n"
-"POT-Creation-Date: 2013-11-21 22:40+0100\n"
+"POT-Creation-Date: 2014-02-07 20:48+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -111,6 +111,15 @@ msgstr ""
msgid "big line + alpha blend"
msgstr ""
+msgid "VDR default"
+msgstr ""
+
+msgid "flatPlus long"
+msgstr ""
+
+msgid "flatPlus short"
+msgstr ""
+
msgid "General settings"
msgstr "Allgemeine Einstellungen"
@@ -237,6 +246,12 @@ msgstr "Zeige Zusatzinfo bei Aufnahmen"
msgid "Show additional EPG info"
msgstr "Zeige Zusatzinfo bei EPG"
+msgid "Main menuitem scale"
+msgstr ""
+
+msgid "Menu channel type"
+msgstr ""
+
msgid "Menuitem border by decor-file?"
msgstr "Menüitem Rand von Decordatei?"
@@ -313,4 +328,4 @@ msgid "Tracks border type"
msgstr "Audiospur Rand Typ"
msgid "Tracks border size"
-msgstr "Audiospur Rand Größe" \ No newline at end of file
+msgstr "Audiospur Rand Größe"
diff --git a/setup.c b/setup.c
index 1627a207..ba2fd85e 100644
--- a/setup.c
+++ b/setup.c
@@ -2,6 +2,7 @@
cStringList Bordertypes;
cStringList Progresstypes;
+cStringList MenuChannelTypes;
cFlatSetup::cFlatSetup(void) {
SetupConfig = Config;
@@ -37,6 +38,10 @@ void cFlatSetup::Setup(void) {
Progresstypes.Append( strdup(tr("small line + big line + alpha blend")) );
Progresstypes.Append( strdup(tr("big line + alpha blend")) );
+ MenuChannelTypes.Append( strdup(tr("VDR default")) );
+ MenuChannelTypes.Append( strdup(tr("flatPlus long")) );
+ MenuChannelTypes.Append( strdup(tr("flatPlus short")) );
+
Add(new cOsdItem(tr("General settings"), osUnknown, true));
Add(new cOsdItem(tr("Channelinfo settings"), osUnknown, true));
Add(new cOsdItem(tr("Menu settings"), osUnknown, true));
@@ -144,7 +149,9 @@ void cFlatSetup::Store(void) {
SetupStore("MenuItemIconsShow", Config.MenuItemIconsShow);
SetupStore("TopBarMenuIconShow", Config.TopBarMenuIconShow);
SetupStore("DecorIndex", Config.DecorIndex);
-
+ SetupStore("MainMenuItemScale", dtoa(Config.MainMenuItemScale));
+ SetupStore("MenuChannelType", Config.MenuChannelType);
+
Config.Init();
}
@@ -340,6 +347,9 @@ void cFlatSetupMenu::Setup(void) {
Add(new cMenuEditBoolItem(tr("Menu content fullsize background"), &SetupConfig->MenuContentFullSize));
Add(new cMenuEditBoolItem(tr("Show additional recording info"), &SetupConfig->RecordingAdditionalInfoShow));
Add(new cMenuEditBoolItem(tr("Show additional EPG info"), &SetupConfig->EpgAdditionalInfoShow));
+ Add(new cMenuEditPrcItem(tr("Main menuitem scale"), &SetupConfig->MainMenuItemScale, 0.2, 1, 0));
+
+ Add(new cMenuEditStraItem(tr("Menu channel type"), &SetupConfig->MenuChannelType, MenuChannelTypes.Size(), &MenuChannelTypes[0]));
Add(new cMenuEditBoolItem(tr("Menuitem border by decor-file?"), &SetupConfig->decorBorderMenuItemByTheme));
if( SetupConfig->decorBorderMenuItemByTheme ) {