diff options
author | Martin Schirrmacher <vdr.skinflat@schirrmacher.eu> | 2013-08-19 17:44:43 +0200 |
---|---|---|
committer | Martin Schirrmacher <vdr.skinflat@schirrmacher.eu> | 2013-08-19 17:44:43 +0200 |
commit | 85e4985984c836c5800b7d548ec3ed84d523eb38 (patch) | |
tree | b8cfdab3b08b78af42fa5eb900eddede4587c7a1 | |
parent | f44adfed65bfac7d6bb15da30ffae9fffafa4a40 (diff) | |
download | skin-flat-85e4985984c836c5800b7d548ec3ed84d523eb38.tar.gz skin-flat-85e4985984c836c5800b7d548ec3ed84d523eb38.tar.bz2 |
show disk usage in topbar
-rw-r--r-- | HISTORY | 3 | ||||
-rw-r--r-- | baserender.c | 29 | ||||
-rw-r--r-- | baserender.h | 2 | ||||
-rw-r--r-- | displaymenu.c | 18 | ||||
-rw-r--r-- | displaymenu.h | 5 | ||||
-rw-r--r-- | po/de_DE.po | 8 |
6 files changed, 56 insertions, 9 deletions
@@ -1,6 +1,9 @@ VDR Plugin 'skinflat' Revision History --------------------------------------- +2013-XX-XX: Version 0.1.1 +- [add] show disk usage in topbar @ menu recordings & timer + 2013-09-08: Version 0.1.0 - [add] parameter to set channel logos path (-l --logo) - [add] 3 new themes - green, gold, red (include icons) diff --git a/baserender.c b/baserender.c index 11bca47..d68ab3c 100644 --- a/baserender.c +++ b/baserender.c @@ -10,6 +10,8 @@ cFlatBaseRender::cFlatBaseRender(void) { fontSmlHeight = fontSml->Height(); topBarTitle = ""; + tobBarTitleExtra1 = ""; + tobBarTitleExtra2 = ""; topBarLastDate = ""; topBarUpdateTitle = false; topBarHeight = 0; @@ -83,6 +85,12 @@ void cFlatBaseRender::TopBarSetTitle(cString title) { topBarUpdateTitle = true; } +void cFlatBaseRender::TopBarSetTitleExtra(cString extra1, cString extra2) { + tobBarTitleExtra1 = extra1; + tobBarTitleExtra2 = extra2; + topBarUpdateTitle = true; +} + // sollte bei jedum "Flush" aufgerufen werden! void cFlatBaseRender::TopBarUpdate(void) { cString curDate = DayDateTime(); @@ -91,27 +99,36 @@ void cFlatBaseRender::TopBarUpdate(void) { topBarLastDate = curDate; int fontTop = (topBarHeight - fontHeight) / 2; + int fontSmlTop = (topBarHeight - fontSmlHeight*2) / 2; + topBarPixmap->Fill(Theme.Color(clrTopBarBg)); topBarPixmap->DrawText(cPoint(marginItem*2, fontTop), topBarTitle, Theme.Color(clrTopBarFont), Theme.Color(clrTopBarBg), font); + + int extra1Width = fontSml->Width(tobBarTitleExtra1); + int extra2Width = fontSml->Width(tobBarTitleExtra2); + int extraMaxWidth = max(extra1Width, extra2Width); + int extraLeft = osdWidth/2 - extraMaxWidth/2; + topBarPixmap->DrawText(cPoint(extraLeft, fontSmlTop), tobBarTitleExtra1, Theme.Color(clrTopBarDateFont), Theme.Color(clrTopBarBg), fontSml, extraMaxWidth); + topBarPixmap->DrawText(cPoint(extraLeft, fontSmlTop + fontSmlHeight), tobBarTitleExtra2, Theme.Color(clrTopBarDateFont), Theme.Color(clrTopBarBg), fontSml, extraMaxWidth); + time_t t; time(&t); - + cString time = TimeString(t); cString time2 = cString::sprintf("%s %s", *time, tr("clock")); - + int timeWidth = font->Width(*time2) + marginItem*2; topBarPixmap->DrawText(cPoint(osdWidth - timeWidth, fontTop), time2, Theme.Color(clrTopBarTimeFont), Theme.Color(clrTopBarBg), font); - + cString weekday = WeekDayNameFull(t); int weekdayWidth = fontSml->Width(*weekday); - + cString date = ShortDateString(t); int dateWidth = fontSml->Width(*date); int fullWidth = max(weekdayWidth, dateWidth); - - int fontSmlTop = (topBarHeight - fontSmlHeight*2) / 2; + topBarPixmap->DrawText(cPoint(osdWidth - timeWidth - fullWidth - marginItem*2, fontSmlTop), weekday, Theme.Color(clrTopBarDateFont), Theme.Color(clrTopBarBg), fontSml, fullWidth, 0, taCenter); topBarPixmap->DrawText(cPoint(osdWidth - timeWidth - fullWidth - marginItem*2, fontSmlTop + fontSmlHeight), date, Theme.Color(clrTopBarDateFont), Theme.Color(clrTopBarBg), fontSml, fullWidth, 0, taCenter); } diff --git a/baserender.h b/baserender.h index 698e1c6..5bd55ee 100644 --- a/baserender.h +++ b/baserender.h @@ -22,6 +22,7 @@ class cFlatBaseRender // TopBar cPixmap *topBarPixmap; cString topBarTitle; + cString tobBarTitleExtra1, tobBarTitleExtra2; bool topBarUpdateTitle; cString topBarLastDate; int topBarHeight; @@ -66,6 +67,7 @@ class cFlatBaseRender void TopBarCreate(void); void TopBarSetTitle(cString title); + void TopBarSetTitleExtra(cString extra1, cString extra2); void TopBarUpdate(void); void ButtonsCreate(void); diff --git a/displaymenu.c b/displaymenu.c index 3d7881b..5ec1116 100644 --- a/displaymenu.c +++ b/displaymenu.c @@ -23,6 +23,8 @@ cFlatDisplayMenu::cFlatDisplayMenu(void) { menuPixmap->Fill(clrTransparent); scrollbarPixmap->Fill(clrTransparent); + + menuCategory = mcUndefined; } cFlatDisplayMenu::~cFlatDisplayMenu() { @@ -30,6 +32,10 @@ cFlatDisplayMenu::~cFlatDisplayMenu() { osd->DestroyPixmap(scrollbarPixmap); } +void cFlatDisplayMenu::SetMenuCategory(eMenuCategory MenuCategory) { + menuCategory = MenuCategory; +} + void cFlatDisplayMenu::DrawScrollbar(int Total, int Offset, int Shown, int Top, int Height, bool CanScrollUp, bool CanScrollDown) { if (Total > 0 && Total > Shown) { int scrollHeight = max(int((Height) * double(Shown) / Total + 0.5), 5); @@ -76,7 +82,17 @@ void cFlatDisplayMenu::Clear(void) { } void cFlatDisplayMenu::SetTitle(const char *Title) { - TopBarSetTitle(Title); + if( menuCategory == mcRecording || menuCategory == mcTimer ) { + cVideoDiskUsage::HasChanged(VideoDiskUsageState); + int DiskUsage = cVideoDiskUsage::UsedPercent(); + int FreeGB = cVideoDiskUsage::FreeMB() / 1024; + cString extra1 = cString::sprintf("%s: %d%%", tr("disk usage"), DiskUsage); + cString extra2 = cString::sprintf("%s: %d GB", tr("free space"), FreeGB); + + TopBarSetTitle(Title); + TopBarSetTitleExtra(extra1, extra2); + } else + TopBarSetTitle(Title); } void cFlatDisplayMenu::SetButtons(const char *Red, const char *Green, const char *Yellow, const char *Blue) { diff --git a/displaymenu.h b/displaymenu.h index 37662ea..77ab33b 100644 --- a/displaymenu.h +++ b/displaymenu.h @@ -8,6 +8,9 @@ class cFlatDisplayMenu : public cFlatBaseRender, public cSkinDisplayMenu { cPixmap *menuPixmap; int menuWidth; + eMenuCategory menuCategory; + int VideoDiskUsageState = -1; + int contentTop; cPixmap *scrollbarPixmap; @@ -24,7 +27,7 @@ class cFlatDisplayMenu : public cFlatBaseRender, public cSkinDisplayMenu { virtual int MaxItems(void); virtual void Clear(void); - //virtual void SetMenuCategory(eMenuCategory MenuCategory); + virtual void SetMenuCategory(eMenuCategory MenuCategory); //virtual void SetTabs(int Tab1, int Tab2 = 0, int Tab3 = 0, int Tab4 = 0, int Tab5 = 0); virtual void SetTitle(const char *Title); diff --git a/po/de_DE.po b/po/de_DE.po index 0c2e182..0d2c59f 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-08-04 18:47+0200\n" +"POT-Creation-Date: 2013-08-18 22:35+0200\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" @@ -18,5 +18,11 @@ msgstr "" msgid "clock" msgstr "Uhr" +msgid "disk usage" +msgstr "" + +msgid "free space" +msgstr "" + msgid "Volume" msgstr "Lautstärke" |