diff options
author | louis <louis.braun@gmx.de> | 2012-12-05 20:50:15 +0100 |
---|---|---|
committer | louis <louis.braun@gmx.de> | 2012-12-05 20:50:15 +0100 |
commit | 85b83b42ae87dff1ce984a88779d03698978460b (patch) | |
tree | 84d3522d3ec7a25b4cc982baa62067b208236b14 | |
parent | bfe8fcb2626206e320dcae906476b0aa334f9954 (diff) | |
download | skin-nopacity-85b83b42ae87dff1ce984a88779d03698978460b.tar.gz skin-nopacity-85b83b42ae87dff1ce984a88779d03698978460b.tar.bz2 |
changed epgsearch handling
-rw-r--r-- | README | 50 | ||||
-rw-r--r-- | config.c | 26 | ||||
-rw-r--r-- | config.h | 3 | ||||
-rw-r--r-- | displaymenu.c | 48 | ||||
-rw-r--r-- | displaymenu.h | 2 | ||||
-rw-r--r-- | displaymenuview.c | 8 | ||||
-rw-r--r-- | displaymenuview.h | 2 | ||||
-rw-r--r-- | epgsearchconf.c | 295 | ||||
-rw-r--r-- | epgsearchconf.h | 31 | ||||
-rw-r--r-- | menudetailview.c | 6 | ||||
-rw-r--r-- | menudetailview.h | 4 | ||||
-rw-r--r-- | menuitem.c | 232 | ||||
-rw-r--r-- | menuitem.h | 15 | ||||
-rw-r--r-- | nopacity.c | 3 | ||||
-rw-r--r-- | po/de_DE.po | 5 | ||||
-rw-r--r-- | setup.c | 2 |
16 files changed, 618 insertions, 114 deletions
@@ -101,6 +101,52 @@ In this example, as a dirty hack just create a folder in your channel logo direc With softhddevice as output plugin, use a Version newer than Revision f640ebde (0.5.1, 10.10.2012) to achieve a correct display of the screen resolution during channel switching. +EPG Search Integration +------------------------- +nOpacity fully supports the alternative "schedules" menus provided by the EPG search plugin +(schedules, what's on now, what's on next, search results, favorites and "user defined times" +menu). If using the EPG search menus, please set "replace original schedule" to "true", +parallel usage of the vanilla VDR schedules menu and the schedules menu provided by EPG +search (with a dedicated main menu entry) is not supported. Please keep also in mind that +changing the schedules display behaviour needs to restart vdr, because nOpacity reads the +EPGSearch config only once at startup. + +If you use the default settings to display the EPG search schedule menus (if the file +epgsearchmenu.conf is not available in the epgserarch plugin config directory), everything +should work rather well out of the box. Just set "show progress in now" to "true" to achieve a +correct display of the progress bar in the "what's on now" view. + +Beside using the default settings you can also set up your own epgsearchmenu.conf file to +control the information which is diplayed in the various menus. All tokens described in the +epgsearchmenu.conf file in the epgsearch plugin sources (subdirectory ./conf/) are supported. +For me these entries for the different menus showed the best result: + +MenuWhatsOnNow=%chlng%:4|%progrT2S%:5|%time%:8|%status%:3|%title%:15|%subtitle%:25 +MenuWhatsOnNext=%chlng%:4|%time%:8|%status%:8|%title%:15|%subtitle%:25 +MenuWhatsOnElse=%chlng%:4|%time%:8|%status%:8|%title%:15|%subtitle%:25 +MenuSchedule=%time%:8|%status%:8|%title%:15|%subtitle%:25 +MenuSearchResults=%chlng%:12|%time_w% %datesh%:6|%time%:6|%status%:2|%title%:15|%subtitle%:25 +MenuFavorites=%chlng%:4|%time%:8|%status%:8|%title%:15|%subtitle%:25 +WarEagleIcons=1 + +Per default EPG search provides the short channel name (%chsh%), which is different to the "regular" +channel name for some channels. If %chsh% is used, for those channels no channel logos are displayed +if they are not appropriately renamed. + +The order of the tokens in the different sections of the epgsearchmenu.conf is not relevant how the +information in displayed in the skin. In fact the skin displays the various tokens in the way that +each menu item is displayed in three lines: +line 1: date and time information, status information +line 2: title +line 3: subtitle (if available) + +The first line is created out of the following tokens (if set) in this order: +%time_d% %time_w% %date% %datesh% %time% %timespan% %status% %t_status% %v_status% %r_status% + +Display of reruns of a show in detailed EPG View: if activated in the setup menu, nOpacity displays +the reruns of a show via the EPG Search service interface in the detailed EPG view. + + Setup Options ------------- @@ -111,6 +157,10 @@ Setup Options * VDR menu: - Fade-In Time in ms (Zero for switching off fading): Default 300ms +- Scale Video size to fit into menu window: yaepg Patch needed +- Display Reruns in detailed EPG View: via epgsearch service +- Number of reruns to display: Default 5 +- Use Subtitle for reruns - Width of narrow Menu Bar (% of OSD Width): Width of menu bar for the main menu, schedules menu and channels menu. Default: 30%. - Width of Disc Usage and Timers Display (% of OSD Width): Default: 12% @@ -54,7 +54,7 @@ cNopacityConfig::cNopacityConfig() { //DisplayMenu scalePicture = 1; displayRerunsDetailEPGView = 1; - numReruns = 3; + numReruns = 5; useSubtitleRerun = 1; menuFadeTime = 300; menuWidthNarrow = 30; @@ -76,6 +76,7 @@ cNopacityConfig::cNopacityConfig() { fontDate = 0; fontMenuitemLarge = 0; fontMenuitemSchedule = 0; + fontMenuitemScheduleSmall = 0; fontMenuitemDefault = 0; fontDiskUsage = 0; fontTimersHead = 0; @@ -88,6 +89,7 @@ cNopacityConfig::cNopacityConfig() { } cNopacityConfig::~cNopacityConfig() { + delete epgSearchConf; } void cNopacityConfig::setDynamicValues() { @@ -117,6 +119,27 @@ void cNopacityConfig::setDynamicValues() { dsyslog("nopacity: using EPG Images Directory %s", (epgImagePathSet)?(*epgImagePath):(*epgImagePathDefault)); } +void cNopacityConfig::loadEPGSearchSettings(void) { + epgSearchConf = new cNopacityEPGSearchConfig(); + if (epgSearchConf->CheckEPGSearchAvailable()) { + dsyslog("nopacity: epgsearch plugin available"); + epgSearchConf->LoadEpgSearchConf(); + if (epgSearchConf->ReplaceScheduleActive()) { + if (!epgSearchConf->LoadEpgSearchMenuConf()) { + epgSearchConf->SetDefaultEPGSearchConf(); + } + } else { + dsyslog("nopacity: epgsearch plugin available, but not used for replacing schedules menu"); + dsyslog("nopacity: please enable \"replacing schedules menu\" in epgsearch settings"); + epgSearchConf->SetDefaultVDRConf(); + } + } else { + dsyslog("nopacity: no epgsearch plugin available"); + epgSearchConf->SetDefaultVDRConf(); + } + epgSearchConf->SetTimerConfilictCont(); +} + void cNopacityConfig::SetLogoPath(cString path) { logoPath = path; logoPathSet = true; @@ -195,6 +218,7 @@ bool cNopacityConfig::SetupParse(const char *Name, const char *Value) { else if (strcmp(Name, "fontDate") == 0) fontDate = atoi(Value); else if (strcmp(Name, "fontMenuitemLarge") == 0) fontMenuitemLarge = atoi(Value); else if (strcmp(Name, "fontMenuitemSchedule") == 0) fontMenuitemSchedule = atoi(Value); + else if (strcmp(Name, "fontMenuitemScheduleSmall") == 0) fontMenuitemScheduleSmall = atoi(Value); else if (strcmp(Name, "fontMenuitemDefault") == 0) fontMenuitemDefault = atoi(Value); else if (strcmp(Name, "fontDiskUsage") == 0) fontDiskUsage = atoi(Value); else if (strcmp(Name, "fontTimersHead") == 0) fontTimersHead = atoi(Value); @@ -17,6 +17,7 @@ class cNopacityConfig { cString iconPathDefault;
cString epgImagePathDefault;
void setDynamicValues();
+ void loadEPGSearchSettings(void);
//Common
int fontIndex;
const char *fontDefaultName;
@@ -74,6 +75,7 @@ class cNopacityConfig { int volumeBorderBottom;
int fontVolume;
//DisplayMenu
+ cNopacityEPGSearchConfig *epgSearchConf;
int scalePicture;
int displayRerunsDetailEPGView;
int numReruns;
@@ -99,6 +101,7 @@ class cNopacityConfig { int fontDate;
int fontMenuitemLarge;
int fontMenuitemSchedule;
+ int fontMenuitemScheduleSmall;
int fontMenuitemDefault;
int fontDiskUsage;
int fontTimersHead;
diff --git a/displaymenu.c b/displaymenu.c index 0d785bd..46be742 100644 --- a/displaymenu.c +++ b/displaymenu.c @@ -17,6 +17,7 @@ cNopacityDisplayMenu::cNopacityDisplayMenu(void) { lastTimersState = -1; menuItemIndexLast = -1; currentNumItems = 0; + channelName = NULL; menuHasIcons = true; detailView = NULL; contentNarrow = true; @@ -169,21 +170,60 @@ void cNopacityDisplayMenu::SetTitle(const char *Title) { contentNarrow = true; menuHasIcons = true; } else { + std::string strTitle = Title; menuView->ShowHeaderLogo(false); if (MenuCategory() == mcSchedule) { + //Main Schedule if (startswith(Title, trVDR("Schedule"))) { menuSubCategory = mcSubSchedule; left += menuView->ShowHeaderIconChannelLogo(Title); menuHasIcons = true; contentNarrow = true; + //What's on now + } else if ( (strTitle.find(trVDR("Button$Now")) != std::string::npos) + || (strTitle.find(trVDR("What's on now?")) != std::string::npos) ) { + menuSubCategory = mcSubScheduleWhatsOnNow; + left += menuView->DrawHeaderIcon(mcSchedule); + menuHasIcons = true; + contentNarrow = true; + //What's on next + } else if ( (strTitle.find(trVDR("Button$Next")) != std::string::npos) + || (strTitle.find(trVDR("What's on next?")) != std::string::npos) ) { + menuSubCategory = mcSubScheduleWhatsOnNext; + left += menuView->DrawHeaderIcon(mcSchedule); + menuHasIcons = true; + contentNarrow = true; + //EPGSearch search results + } else if (isdigit(strTitle.at(0))) { + menuSubCategory = mcSubScheduleSearchResults; + left += menuView->DrawHeaderIcon(mcSchedule); + menuHasIcons = true; + contentNarrow = true; + //What's on else + } else if ( ((config.epgSearchConf->UserSet[0]) && (strTitle.find(config.epgSearchConf->User[0]) != std::string::npos)) + ||((config.epgSearchConf->UserSet[1]) && (strTitle.find(config.epgSearchConf->User[1]) != std::string::npos)) + ||((config.epgSearchConf->UserSet[2]) && (strTitle.find(config.epgSearchConf->User[2]) != std::string::npos)) + ||((config.epgSearchConf->UserSet[3]) && (strTitle.find(config.epgSearchConf->User[3]) != std::string::npos))) + { + menuSubCategory = mcSubScheduleWhatsOnElse; + left += menuView->DrawHeaderIcon(mcSchedule); + menuHasIcons = true; + contentNarrow = true; + //hack for epgsearch timer conflict view } else if (endswith(Title, "%")) { - //hack for epgsearch timer conflict view menuSubCategory = mcSubScheduleTimer; menuHasIcons = false; contentNarrow = false; currentNumItems = config.numDefaultMenuItems; + //EPGSearch Favorites + } else if (strTitle.find(":") != std::string::npos) { + menuSubCategory = mcSubScheduleFavorites; + left += menuView->DrawHeaderIcon(mcSchedule); + menuHasIcons = true; + contentNarrow = true; + } else { - menuSubCategory = mcSubScheduleWhatsOn; + menuSubCategory = mcSubScheduleTimerconflict; left += menuView->DrawHeaderIcon(mcSchedule); menuHasIcons = true; contentNarrow = true; @@ -273,6 +313,7 @@ void cNopacityDisplayMenu::SetItem(const char *Text, int Index, bool Current, bo item = new cNopacityScheduleMenuItem(osd, Text, Current, Selectable, menuSubCategory); menuView->GetMenuItemSize(mcSchedule, &itemSize); item->SetFont(menuView->GetMenuItemFont(mcSchedule)); + item->SetFontSmall(menuView->GetMenuItemFontSmall()); menuIconWidth = config.menuItemLogoWidth; menuIconHeight = config.menuItemLogoHeight; } @@ -321,6 +362,7 @@ void cNopacityDisplayMenu::SetItem(const char *Text, int Index, bool Current, bo item->SetCurrent(Current); item->Render(); } + SetEditableWidth(menuView->GetEditableWidth()); } @@ -374,7 +416,7 @@ void cNopacityDisplayMenu::SetEvent(const cEvent *Event) { if (!Event) return; menuView->AdjustContentBackground(false, contentNarrowLast); - detailView = new cNopacityMenuDetailEventView(osd, Event, channelName); + detailView = new cNopacityMenuDetailEventView(osd, Event, *channelName); menuView->SetDetailViewSize(dvEvent, detailView); detailView->SetFonts(); if (config.displayRerunsDetailEPGView) diff --git a/displaymenu.h b/displaymenu.h index 438e77e..5231ae8 100644 --- a/displaymenu.h +++ b/displaymenu.h @@ -28,7 +28,7 @@ private: void DrawDisk(void); void DrawTimers(void); void SplitItem(const char *Text, cString *strItems, int *tabItems); - const char *channelName; + cString channelName; virtual void Action(void); protected: int Tab(int n); diff --git a/displaymenuview.c b/displaymenuview.c index 53fe6b2..95965e8 100644 --- a/displaymenuview.c +++ b/displaymenuview.c @@ -32,6 +32,7 @@ cNopacityDisplayMenuView::~cNopacityDisplayMenuView(void) { delete fontDate; delete fontMenuitemLarge; delete fontMenuitemSchedule; + delete fontMenuitemScheduleSmall; delete fontMenuitemDefault; delete fontDiskUsage; delete fontTimers; @@ -131,7 +132,8 @@ void cNopacityDisplayMenuView::CreateFonts(void) { fontHeader = cFont::CreateFont(config.fontName, headerHeight / 2 + config.fontHeader); fontDate = cFont::CreateFont(config.fontName, headerHeight / 2 + config.fontDate); fontMenuitemLarge = cFont::CreateFont(config.fontName, menuItemHeightMain/3 + 4 + config.fontMenuitemLarge); - fontMenuitemSchedule = cFont::CreateFont(config.fontName, menuItemHeightSchedule / 4 + config.fontMenuitemSchedule); + fontMenuitemSchedule = cFont::CreateFont(config.fontName, menuItemHeightSchedule / 4 + 5 + config.fontMenuitemSchedule); + fontMenuitemScheduleSmall = cFont::CreateFont(config.fontName, menuItemHeightSchedule / 4 - 5 + config.fontMenuitemScheduleSmall); fontMenuitemDefault = cFont::CreateFont(config.fontName, menuItemHeightDefault * 2 / 3 + config.fontMenuitemDefault); fontDiskUsage = cFont::CreateFont(config.fontName, (diskUsageHeight/4)/2 - 2 + config.fontDiskUsage); fontTimersHead = cFont::CreateFont(config.fontName, (contentHeight - 3*spaceMenu - diskUsageHeight) / 25 + config.fontTimersHead); @@ -156,6 +158,10 @@ cFont *cNopacityDisplayMenuView::GetMenuItemFont(eMenuCategory menuCat) { return fontMenuitemDefault; } +cFont *cNopacityDisplayMenuView::GetMenuItemFontSmall() { + return fontMenuitemScheduleSmall; +} + void cNopacityDisplayMenuView::GetMenuItemSize(eMenuCategory menuCat, cPoint *itemSize) { int itemWidth = 0; int itemHeight = 0; diff --git a/displaymenuview.h b/displaymenuview.h index bd621ca..447dc2a 100644 --- a/displaymenuview.h +++ b/displaymenuview.h @@ -35,6 +35,7 @@ class cNopacityDisplayMenuView { cFont *fontDate; cFont *fontMenuitemLarge; cFont *fontMenuitemSchedule; + cFont *fontMenuitemScheduleSmall; cFont *fontMenuitemDefault; cFont *fontDiskUsage; cFont *fontTimers; @@ -66,6 +67,7 @@ class cNopacityDisplayMenuView { void SetPixmapAlpha(int Alpha); void CreateFonts(void); cFont *GetMenuItemFont(eMenuCategory menuCat); + cFont *GetMenuItemFontSmall(void); void GetMenuItemSize(eMenuCategory menuCat, cPoint *itemSize); int GetMaxItems(eMenuCategory menuCat); int GetMenuTop(int numItems, int itemHeight); diff --git a/epgsearchconf.c b/epgsearchconf.c new file mode 100644 index 0000000..84232f8 --- /dev/null +++ b/epgsearchconf.c @@ -0,0 +1,295 @@ +enum eEpgSearchTokens { eEPGtime = 0, eEPGdate, eEPGdatesh, eEPGtime_w, eEPGtime_d, eEPGtimespan,
+ eEPGtitle, eEPGsubtitle, eEPGt_status, eEPGv_status, eEPGr_status,
+ eEPGstatus, eEPGchnr, eEPGchsh, eEPGchlng, eEPGprogr, eEPGprogrT2S};
+enum eEPGModes { eMenuSchedule = 0, eMenuWhatsOnNow, eMenuWhatsOnNext, eMenuWhatsOnElse,
+ eMenuSearchResults, eMenuFavorites, eMenuTimerconflict};
+
+#include <string>
+#include "epgsearchconf.h"
+
+cNopacityEPGSearchConfig::cNopacityEPGSearchConfig(void) {
+ ReplaceSchedule = false;
+ ShowChannelNr = false;
+ ShowProgress = false;
+ MaxTabs = 6;
+ for (int i=0; i<4; i++) {
+ UserSet[i] = false;
+ User[i] = "";
+ }
+ for (int i=0; i<EPGSEARCHCATS; i++)
+ for (int j =0; j<EPGSEARCHTOKENS; j++)
+ epgSearchConfig[i][j] = -1;
+
+}
+cNopacityEPGSearchConfig::~cNopacityEPGSearchConfig() {
+}
+
+bool cNopacityEPGSearchConfig::CheckEPGSearchAvailable(void) {
+ cPlugin *epgSearchPlugin = NULL;
+ epgSearchPlugin = cPluginManager::GetPlugin("epgsearch");
+ if (epgSearchPlugin) {
+ return true;
+ }
+ return false;
+}
+
+bool cNopacityEPGSearchConfig::LoadEpgSearchConf(void) {
+ std::string ConfigDir = cPlugin::ConfigDirectory(NULL);
+ ConfigDir = ConfigDir.substr(0, ConfigDir.find("/plugins"));
+ cString vdrSetup = "setup.conf";
+ cString fileName = AddDirectory(ConfigDir.c_str(), *vdrSetup);
+ if (access(fileName, F_OK) == 0) {
+ FILE *f = fopen(fileName, "r");
+ if (f) {
+ char *s;
+ cReadLine ReadLine;
+ while ((s = ReadLine.Read(f)) != NULL) {
+ char *p = strchr(s, '#');
+ if (p)
+ *p = 0;
+ stripspace(s);
+ if (!isempty(s)) {
+ std::string line = s;
+ if (line.find("epgsearch.ReplaceOrgSchedule = 1") == 0) {
+ ReplaceSchedule = true;
+ } else if (line.find("epgsearch.ShowChannelNr = 1") == 0) {
+ ShowChannelNr = true;
+ } else if (line.find("epgsearch.ShowProgress = 1") == 0) {
+ ShowProgress = true;
+ } else {
+ for (int i=0; i<4; i++) {
+ cString strEPGUserMode = cString::sprintf("epgsearch.UserMode%dDescription =", i+1);
+ if (line.find(*strEPGUserMode) == 0) {
+ try {
+ line = line.substr(line.find("=")+1);
+ line = line.substr(line.find_first_not_of(" "));
+ if (line.length() > 0) {
+ User[i] = line.c_str();
+ UserSet[i] = true;
+ }
+ } catch (...){}
+ }
+ }
+ }
+ }
+ }
+ }
+ } else {
+ return false;
+ }
+ return true;
+}
+
+bool cNopacityEPGSearchConfig::LoadEpgSearchMenuConf(void) {
+ cString ConfigDir = cPlugin::ConfigDirectory("epgsearch");
+ cString epgsearchConf = "epgsearchmenu.conf";
+ cString fileName = AddDirectory(*ConfigDir, *epgsearchConf);
+ if (access(fileName, F_OK) == 0) {
+ dsyslog("nopacity: config file %s found", *fileName);
+ FILE *f = fopen(fileName, "r");
+ if (f) {
+ char *s;
+ cReadLine ReadLine;
+ while ((s = ReadLine.Read(f)) != NULL) {
+ char *p = strchr(s, '#');
+ if (p)
+ *p = 0;
+ stripspace(s);
+ try {
+ if (!isempty(s)) {
+ std::string line = s;
+ std::string *values = new std::string[MaxTabs];
+ if (line.find("MenuWhatsOnNow") == 0) {
+ values = SplitEpgSearchMenuLine(line.substr(line.find_first_of("=") + 1));
+ SetTokens(values, eMenuWhatsOnNow);
+ } else if (line.find("MenuWhatsOnNext") == 0) {
+ values = SplitEpgSearchMenuLine(line.substr(line.find_first_of("=") + 1));
+ SetTokens(values, eMenuWhatsOnNext);
+ } else if (line.find("MenuWhatsOnElse") == 0) {
+ values = SplitEpgSearchMenuLine(line.substr(line.find_first_of("=") + 1));
+ SetTokens(values, eMenuWhatsOnElse);
+ } else if (line.find("MenuSchedule") == 0) {
+ values = SplitEpgSearchMenuLine(line.substr(line.find_first_of("=") + 1));
+ SetTokens(values, eMenuSchedule);
+ } else if (line.find("MenuSearchResults") == 0) {
+ values = SplitEpgSearchMenuLine(line.substr(line.find_first_of("=") + 1));
+ SetTokens(values, eMenuSearchResults);
+ } else if (line.find("MenuFavorites") == 0) {
+ values = SplitEpgSearchMenuLine(line.substr(line.find_first_of("=") + 1));
+ SetTokens(values, eMenuFavorites);
+ }
+ delete[] values;
+ }
+ } catch (...){}
+ }
+ }
+ } else {
+ dsyslog("nopacity: %s not available, using epgsearch default settings", *fileName);
+ return false;
+ }
+ return true;
+}
+
+std::string *cNopacityEPGSearchConfig::SplitEpgSearchMenuLine(std::string line) {
+ size_t posSeparator = -1;
+ bool found = false;
+ posSeparator = line.find_first_of("|") + 1;
+ std::string *values = new std::string[MaxTabs];
+ for (int i=0; i < MaxTabs; i++)
+ values[i] = "";
+ std::string value;
+ int i=0;
+ while (posSeparator > 0) {
+ found = true;
+ try {
+ value = line.substr(0, posSeparator);
+ value = value.substr(0, value.find_first_of(":"));
+ value = value.substr(value.find_first_not_of(" "));
+ value = value.substr(0, value.find_last_not_of(" ")+1);
+ values[i] = value;
+ line = line.substr(posSeparator);
+ posSeparator = line.find_first_of("|") + 1;
+ } catch (...) {}
+ i++;
+ }
+ if (found) {
+ try {
+ value = line.substr(0, line.find_first_of(":"));
+ value = value.substr(value.find_first_not_of(" "));
+ value = value.substr(0, value.find_last_not_of(" ")+1);
+ values[i] = value;
+ } catch (...) {}
+ }
+ return values;
+}
+
+void cNopacityEPGSearchConfig::SetTokens(std::string *values, eEPGModes mode) {
+ for (int i=0; i<MaxTabs; i++) {
+ toLowerCase(values[i]);
+ if (values[i].find("%time%") == 0)
+ epgSearchConfig[mode][eEPGtime] = i;
+ else if (values[i].find("%date%") == 0)
+ epgSearchConfig[mode][eEPGdate] = i;
+ else if (values[i].find("%datesh%") == 0)
+ epgSearchConfig[mode][eEPGdatesh] = i;
+ else if (values[i].find("%time_w%") == 0)
+ epgSearchConfig[mode][eEPGtime_w] = i;
+ else if (values[i].find("%time_d%") == 0)
+ epgSearchConfig[mode][eEPGtime_d] = i;
+ else if (values[i].find("%timespan%") == 0)
+ epgSearchConfig[mode][eEPGtimespan] = i;
+ else if (values[i].find("%title%") == 0)
+ epgSearchConfig[mode][eEPGtitle] = i;
+ else if (values[i].find("%subtitle%") == 0)
+ epgSearchConfig[mode][eEPGsubtitle] = i;
+ else if (values[i].find("%t_status%") == 0)
+ epgSearchConfig[mode][eEPGt_status] = i;
+ else if (values[i].find("%v_status%") == 0)
+ epgSearchConfig[mode][eEPGv_status] = i;
+ else if (values[i].find("%r_status%") == 0)
+ epgSearchConfig[mode][eEPGr_status] = i;
+ else if (values[i].find("%status%") == 0)
+ epgSearchConfig[mode][eEPGstatus] = i;
+ else if (values[i].find("%chnr%") == 0)
+ epgSearchConfig[mode][eEPGchnr] = i;
+ else if (values[i].find("%chsh%") == 0)
+ epgSearchConfig[mode][eEPGchsh] = i;
+ else if (values[i].find("%chlng%") == 0)
+ epgSearchConfig[mode][eEPGchlng] = i;
+ else if (values[i].find("%progr%") == 0)
+ epgSearchConfig[mode][eEPGprogr] = i;
+ else if (values[i].find("%progrt2s%") == 0)
+ epgSearchConfig[mode][eEPGprogrT2S] = i;
+ }
+
+}
+
+void cNopacityEPGSearchConfig::SetDefaultEPGSearchConf(void) {
+ //MenuSchedule
+ epgSearchConfig[eMenuSchedule][eEPGtime_w] = 0;
+ epgSearchConfig[eMenuSchedule][eEPGtime] = 1;
+ epgSearchConfig[eMenuSchedule][eEPGstatus] = 2;
+ epgSearchConfig[eMenuSchedule][eEPGtitle] = 3;
+ //MenuWhatsOnNow
+ int i=0;
+ if (ShowChannelNr)
+ epgSearchConfig[eMenuWhatsOnNow][eEPGchnr] = i++;
+ epgSearchConfig[eMenuWhatsOnNow][eEPGchsh] = i++;
+ epgSearchConfig[eMenuWhatsOnNow][eEPGtime] = i++;
+ if(ShowProgress)
+ epgSearchConfig[eMenuWhatsOnNow][eEPGprogrT2S] = i++;
+ else
+ epgSearchConfig[eMenuWhatsOnNow][eEPGprogr] = i++;
+ epgSearchConfig[eMenuWhatsOnNow][eEPGstatus] = i++;
+ epgSearchConfig[eMenuWhatsOnNow][eEPGtitle] = i++;
+ //MenuWhatsOnNext
+ i=0;
+ if (ShowChannelNr)
+ epgSearchConfig[eMenuWhatsOnNext][eEPGchnr] = i++;
+ epgSearchConfig[eMenuWhatsOnNext][eEPGchsh] = i++;
+ epgSearchConfig[eMenuWhatsOnNext][eEPGtime] = i++;
+ epgSearchConfig[eMenuWhatsOnNext][eEPGstatus] = i++;
+ epgSearchConfig[eMenuWhatsOnNext][eEPGtitle] = i++;
+ //MenuWhatsOnElse
+ i=0;
+ if (ShowChannelNr)
+ epgSearchConfig[eMenuWhatsOnElse][eEPGchnr] = i++;
+ epgSearchConfig[eMenuWhatsOnElse][eEPGchsh] = i++;
+ epgSearchConfig[eMenuWhatsOnElse][eEPGtime] = i++;
+ epgSearchConfig[eMenuWhatsOnElse][eEPGstatus] = i++;
+ epgSearchConfig[eMenuWhatsOnElse][eEPGtitle] = i++;
+ //MenuSearchResults
+ i=0;
+ if (ShowChannelNr)
+ epgSearchConfig[eMenuSearchResults][eEPGchnr] = i++;
+ epgSearchConfig[eMenuSearchResults][eEPGchsh] = i++;
+ epgSearchConfig[eMenuSearchResults][eEPGdatesh] = i++;
+ epgSearchConfig[eMenuSearchResults][eEPGtime] = i++;
+ epgSearchConfig[eMenuSearchResults][eEPGstatus] = i++;
+ epgSearchConfig[eMenuSearchResults][eEPGtitle] = i++;
+ //MenuFavorites
+ i=0;
+ if (ShowChannelNr)
+ epgSearchConfig[eMenuFavorites][eEPGchnr] = i++;
+ epgSearchConfig[eMenuFavorites][eEPGchsh] = i++;
+ epgSearchConfig[eMenuFavorites][eEPGtime] = i++;
+ epgSearchConfig[eMenuFavorites][eEPGtimespan] = i++;
+ epgSearchConfig[eMenuFavorites][eEPGstatus] = i++;
+ epgSearchConfig[eMenuFavorites][eEPGtitle] = i++;
+}
+
+void cNopacityEPGSearchConfig::SetTimerConfilictCont(void) {
+ epgSearchConfig[eMenuTimerconflict][eEPGtime_d] = 0;
+ epgSearchConfig[eMenuTimerconflict][eEPGchsh] = 1;
+ epgSearchConfig[eMenuTimerconflict][eEPGdate] = 2;
+ epgSearchConfig[eMenuTimerconflict][eEPGtime] = 3;
+ epgSearchConfig[eMenuTimerconflict][eEPGtitle] = 4;
+}
+
+void cNopacityEPGSearchConfig::SetDefaultVDRConf(void) {
+ //MenuSchedule
+ epgSearchConfig[eMenuSchedule][eEPGdate] = 0;
+ epgSearchConfig[eMenuSchedule][eEPGtime] = 1;
+ epgSearchConfig[eMenuSchedule][eEPGstatus] = 2;
+ epgSearchConfig[eMenuSchedule][eEPGtitle] = 3;
+ //MenuWhatsOnNow
+ epgSearchConfig[eMenuWhatsOnNow][eEPGchnr] = 0;
+ epgSearchConfig[eMenuWhatsOnNow][eEPGchlng] = 1;
+ epgSearchConfig[eMenuWhatsOnNow][eEPGtime] = 2;
+ epgSearchConfig[eMenuWhatsOnNow][eEPGstatus] = 3;
+ epgSearchConfig[eMenuWhatsOnNow][eEPGtitle] = 4;
+ //MenuWhatsOnNext
+ epgSearchConfig[eMenuWhatsOnNext][eEPGchnr] = 0;
+ epgSearchConfig[eMenuWhatsOnNext][eEPGchlng] = 1;
+ epgSearchConfig[eMenuWhatsOnNext][eEPGtime] = 2;
+ epgSearchConfig[eMenuWhatsOnNext][eEPGstatus] = 3;
+ epgSearchConfig[eMenuWhatsOnNext][eEPGtitle] = 4;
+}
+
+
+void cNopacityEPGSearchConfig::toLowerCase(std::string &str) {
+ const int length = str.length();
+ for(int i=0; i < length; ++i) {
+ str[i] = std::tolower(str[i]);
+ }
+}
\ No newline at end of file diff --git a/epgsearchconf.h b/epgsearchconf.h new file mode 100644 index 0000000..f6a027a --- /dev/null +++ b/epgsearchconf.h @@ -0,0 +1,31 @@ +#ifndef __NOPACITY_EPGSEARCHCONFIG_H
+#define __NOPACITY_EPGSEARCHCONFIG_H
+
+#define EPGSEARCHCATS 7
+#define EPGSEARCHTOKENS 17
+
+class cNopacityEPGSearchConfig {
+ private:
+ bool ReplaceSchedule;
+ bool ShowChannelNr;
+ bool ShowProgress;
+ int MaxTabs;
+ std::string *SplitEpgSearchMenuLine(std::string line);
+ void SetTokens(std::string *values, eEPGModes mode);
+ void toLowerCase(std::string &str);
+ public:
+ cNopacityEPGSearchConfig(void);
+ virtual ~cNopacityEPGSearchConfig();
+ bool CheckEPGSearchAvailable(void);
+ bool ReplaceScheduleActive(void) {return ReplaceSchedule;};
+ bool LoadEpgSearchConf(void);
+ bool LoadEpgSearchMenuConf(void);
+ void SetDefaultEPGSearchConf(void);
+ void SetDefaultVDRConf(void);
+ void SetTimerConfilictCont(void);
+ bool UserSet[4];
+ cString User[4];
+ int epgSearchConfig[EPGSEARCHCATS][EPGSEARCHTOKENS];
+};
+
+#endif //__NOPACITY_EPGSEARCHCONFIG_H
\ No newline at end of file diff --git a/menudetailview.c b/menudetailview.c index 03bd32b..945f940 100644 --- a/menudetailview.c +++ b/menudetailview.c @@ -160,9 +160,9 @@ bool cNopacityMenuDetailView::Scroll(bool Up, bool Page) { //---------------cNopacityMenuDetailEventView--------------------- -cNopacityMenuDetailEventView::cNopacityMenuDetailEventView(cOsd *osd, const cEvent *Event, const char *channel) : cNopacityMenuDetailView(osd) { +cNopacityMenuDetailEventView::cNopacityMenuDetailEventView(cOsd *osd, const cEvent *Event, cString channelName) : cNopacityMenuDetailView(osd) { event = Event; - channelName = channel; + this->channelName = channelName; } cNopacityMenuDetailEventView::~cNopacityMenuDetailEventView(void) { @@ -199,7 +199,7 @@ void cNopacityMenuDetailEventView::Render(void) { void cNopacityMenuDetailEventView::DrawHeader(void) { cImageLoader imgLoader; int logoWidth = config.detailViewLogoWidth; - if (imgLoader.LoadLogo(channelName, logoWidth, config.detailViewLogoHeight)) { + if (imgLoader.LoadLogo(*channelName, logoWidth, config.detailViewLogoHeight)) { pixmapLogo->DrawImage(cPoint(0, max((headerHeight - config.detailViewLogoHeight - border)/2, 0)), imgLoader.GetImage()); } int widthTextHeader = width - 4 * border - logoWidth; diff --git a/menudetailview.h b/menudetailview.h index 36ace32..8d1e864 100644 --- a/menudetailview.h +++ b/menudetailview.h @@ -36,10 +36,10 @@ public: class cNopacityMenuDetailEventView : public cNopacityMenuDetailView { private: void DrawHeader(void); - const char *channelName; + cString channelName; const cEvent *event; public: - cNopacityMenuDetailEventView(cOsd *osd, const cEvent *Event, const char *channel); + cNopacityMenuDetailEventView(cOsd *osd, const cEvent *Event, cString channelName); virtual ~cNopacityMenuDetailEventView(void); void CreatePixmaps(void); void SetFonts(void); @@ -1,5 +1,6 @@ #include "menuitem.h" #include <string> +#include <sstream> #include <algorithm> @@ -162,89 +163,143 @@ cNopacityScheduleMenuItem::~cNopacityScheduleMenuItem(void) { } void cNopacityScheduleMenuItem::Render() { - - /* Data in Array: - Schedule: 0: Date, - 1: Time - 2: Running, VPS - 3: Title - What's on Now: 0: Channel Number - 1: Channel Name - 2: Time - Vanilla: - 3: Running, VPS - 4: Title - EPGSearch: - 3: Remaining (EPGSearch) - 4: Running, VPS - 5: Title - EPG Search Res: 0: Channel Number - 1: Channel Name - 2: Date - 3: Time - 4: " " - 5: Title - What's on Next: 0: Channel Number - 1: Channel Name - 2: Time - 3: Running, VPS - 4: Title - EPGSearch Hide Channelnumbers: Each entry -1 - */ - cString channelNumber, channelName, startTime, running, remaining, title; - bool hasRemaining = false; + int logoWidth = config.menuItemLogoWidth; + int logoHeight = config.menuItemLogoHeight; + std::stringstream sstrDateTime; + std::string strTitle; + std::string strSubtitle; + std::string strChannelName; + std::string strProgressbar; + eEPGModes mode; + bool hasLogo = false; + int left = 5; + std::string delimiterType = "daydelimiter"; + bool hasProgressBar = false; int handleBgrd = (current)?handleBackgrounds[5]:handleBackgrounds[4]; - tColor clrFont = (current)?Theme.Color(clrMenuFontMenuItemHigh):Theme.Color(clrMenuFontMenuItem); - if (subCategory == mcSubScheduleWhatsOn) { - if (selectable) { //Event - pixmap->Fill(Theme.Color(clrMenuBorder)); - if (isnumber(*itemTabs[0])) { - channelNumber = itemTabs[0]; - channelName = itemTabs[1]; - startTime = itemTabs[2]; - if ((std::string(skipspace(itemTabs[3])).length() > 0) && (startswith(*itemTabs[3], "["))) { // EPGSearch Progress Bar - hasRemaining = true; - remaining = itemTabs[3]; - running = itemTabs[4]; - title = itemTabs[5]; - } else if (std::string(skipspace(itemTabs[4])).length() == 0){ //EPG Search Result - running = itemTabs[3]; - title = itemTabs[5]; - } else { - running = itemTabs[3]; - title = itemTabs[4]; - } + + pixmap->Fill(Theme.Color(clrMenuBorder)); + pixmap->DrawImage(cPoint(1, 1), handleBgrd); + + switch (subCategory) { + case mcSubSchedule: + mode = eMenuSchedule; + break; + case mcSubScheduleWhatsOnNow: + mode = eMenuWhatsOnNow; + hasLogo = true; + delimiterType = "Channelseparator"; + break; + case mcSubScheduleWhatsOnNext: + mode = eMenuWhatsOnNext; + hasLogo = true; + delimiterType = "Channelseparator"; + break; + case mcSubScheduleSearchResults: + mode = eMenuSearchResults; + hasLogo = true; + delimiterType = "Channelseparator"; + break; + case mcSubScheduleWhatsOnElse: + mode = eMenuWhatsOnElse; + hasLogo = true; + break; + case mcSubScheduleFavorites: + mode = eMenuFavorites; + hasLogo = true; + break; + case mcSubScheduleTimerconflict: + mode = eMenuTimerconflict; + hasLogo = true; + break; + default: + mode = eMenuSchedule; + break; + } + + if (hasLogo) + left = logoWidth + 10; + + if (selectable) { + //Build Date & Time & Status + if (config.epgSearchConf->epgSearchConfig[mode][eEPGtime_d] > -1) + sstrDateTime << *itemTabs[config.epgSearchConf->epgSearchConfig[mode][eEPGtime_d]] << " "; + if (config.epgSearchConf->epgSearchConfig[mode][eEPGtime_w] > -1) + sstrDateTime << *itemTabs[config.epgSearchConf->epgSearchConfig[mode][eEPGtime_w]] << " "; + if (config.epgSearchConf->epgSearchConfig[mode][eEPGdate] > -1) + sstrDateTime << *itemTabs[config.epgSearchConf->epgSearchConfig[mode][eEPGdate]] << " "; + if (config.epgSearchConf->epgSearchConfig[mode][eEPGdatesh] > -1) + sstrDateTime << *itemTabs[config.epgSearchConf->epgSearchConfig[mode][eEPGdatesh]] << " "; + if (config.epgSearchConf->epgSearchConfig[mode][eEPGtime] > -1) + sstrDateTime << *itemTabs[config.epgSearchConf->epgSearchConfig[mode][eEPGtime]] << " "; + if (config.epgSearchConf->epgSearchConfig[mode][eEPGtimespan] > -1) + sstrDateTime << *itemTabs[config.epgSearchConf->epgSearchConfig[mode][eEPGtimespan]] << " "; + if (config.epgSearchConf->epgSearchConfig[mode][eEPGstatus] > -1) + sstrDateTime << *itemTabs[config.epgSearchConf->epgSearchConfig[mode][eEPGstatus]] << " "; + if (config.epgSearchConf->epgSearchConfig[mode][eEPGt_status] > -1) + sstrDateTime << *itemTabs[config.epgSearchConf->epgSearchConfig[mode][eEPGt_status]] << " "; + if (config.epgSearchConf->epgSearchConfig[mode][eEPGv_status] > -1) + sstrDateTime << *itemTabs[config.epgSearchConf->epgSearchConfig[mode][eEPGv_status]] << " "; + if (config.epgSearchConf->epgSearchConfig[mode][eEPGr_status] > -1) + sstrDateTime << *itemTabs[config.epgSearchConf->epgSearchConfig[mode][eEPGr_status]] << " "; + //Build title and subtitle + if (config.epgSearchConf->epgSearchConfig[mode][eEPGtitle] > -1) { + strTitle = *itemTabs[config.epgSearchConf->epgSearchConfig[mode][eEPGtitle]]; + if (config.epgSearchConf->epgSearchConfig[mode][eEPGsubtitle] > -1) { + strSubtitle = *itemTabs[config.epgSearchConf->epgSearchConfig[mode][eEPGsubtitle]]; } else { - channelName = itemTabs[0]; - startTime = itemTabs[1]; - if ((std::string(skipspace(itemTabs[2])).length() > 0) && (startswith(*itemTabs[2], "["))) { // EPGSearch Progress Bar - hasRemaining = true; - remaining = itemTabs[2]; - running = itemTabs[3]; - title = itemTabs[4]; - } else if (std::string(skipspace(itemTabs[3])).length() == 0){ //EPG Search Result - running = itemTabs[2]; - title = itemTabs[4]; + size_t delimiter = strTitle.find("~"); + if (delimiter != std::string::npos) { + strSubtitle = strTitle.substr(delimiter+2); + strTitle = strTitle.substr(0, delimiter); } else { - running = itemTabs[2]; - title = itemTabs[3]; + strSubtitle = ""; } } - int logoWidth = config.menuItemLogoWidth; - int logoHeight = config.menuItemLogoHeight; - int xText = logoWidth + 10; - cTextWrapper titleLines; - titleLines.Set(*title, font, width - xText); - int lineHeight = font->Height() - 2; - pixmap->DrawImage(cPoint(1, 1), handleBgrd); + } + if (font->Width(strTitle.c_str()) > (width - left)) { + cTextWrapper twTitle; + std::stringstream sstrTitle; + twTitle.Set(strTitle.c_str(), font, width - left); + sstrTitle << twTitle.GetLine(0) << "..."; + strTitle = sstrTitle.str(); + } + if (fontSmall->Width(strSubtitle.c_str()) > (width - left)) { + cTextWrapper twSubtitle; + std::stringstream sstrSubtitle; + twSubtitle.Set(strSubtitle.c_str(), fontSmall, width - left); + sstrSubtitle << twSubtitle.GetLine(0) << "..."; + strSubtitle = sstrSubtitle.str(); + } + //Build Channel Name + if (config.epgSearchConf->epgSearchConfig[mode][eEPGchlng] > -1) + strChannelName = *itemTabs[config.epgSearchConf->epgSearchConfig[mode][eEPGchlng]]; + else if (config.epgSearchConf->epgSearchConfig[mode][eEPGchsh] > -1) + strChannelName = *itemTabs[config.epgSearchConf->epgSearchConfig[mode][eEPGchsh]]; + else + strChannelName = ""; + //Build Progressbar + if (config.epgSearchConf->epgSearchConfig[mode][eEPGprogrT2S] > -1) { + strProgressbar = *itemTabs[config.epgSearchConf->epgSearchConfig[mode][eEPGprogrT2S]]; + hasProgressBar = true; + } + + //DISPLAY + int titleY = (height - font->Height())/2 - 2; + if (strSubtitle.length() == 0) + titleY = font->Height() + (height - 2*font->Height())/2; + pixmap->DrawText(cPoint(left, 3), sstrDateTime.str().c_str(), Theme.Color(clrMenuFontMenuItem), clrTransparent, font); + pixmap->DrawText(cPoint(left, titleY), strTitle.c_str(), Theme.Color(clrMenuFontMenuItemTitle), clrTransparent, font); + pixmap->DrawText(cPoint(left, titleY + font->Height() - 2), strSubtitle.c_str(), Theme.Color(clrMenuFontMenuItem), clrTransparent, fontSmall); + if (hasIcon) { if (!iconDrawn) { cImageLoader imgLoader; - if (imgLoader.LoadLogo(*channelName, logoWidth, logoHeight)) { + if (imgLoader.LoadLogo(strChannelName.c_str(), logoWidth, logoHeight)) { pixmapIcon->DrawImage(cPoint(1, 1), imgLoader.GetImage()); } else { cTextWrapper channel; - channel.Set(*channelName, font, logoWidth); + channel.Set(strChannelName.c_str(), font, logoWidth); int lines = channel.Lines(); + int lineHeight = height / 3; int heightChannel = lines * lineHeight; int y = (heightChannel>height)?0:(height-heightChannel)/2; for (int line = 0; line < lines; line++) { @@ -253,36 +308,13 @@ void cNopacityScheduleMenuItem::Render() { } iconDrawn = true; } - - - pixmap->DrawText(cPoint(xText, 0), startTime, Theme.Color(clrMenuFontMenuItemTitle), clrTransparent, font); - pixmap->DrawText(cPoint(xText + font->Width(*startTime) + 5, 0), *running, Theme.Color(clrMenuFontMenuItemTitle), clrTransparent, font); - for (int line = 0; line < titleLines.Lines(); line++) { - if (line == 2) break; - pixmap->DrawText(cPoint(xText , lineHeight * (line+1)), titleLines.GetLine(line), clrFont, clrTransparent, font); - } - if (hasRemaining) - DrawRemaining(remaining, xText, height*7/8, width - xText - 10); - } else { //Channelseparators - DrawDelimiter(*itemTabs[1], "Channelseparator", handleBgrd); } - } else { - if (selectable) { //Event - pixmap->Fill(Theme.Color(clrMenuBorder)); - pixmap->DrawImage(cPoint(1, 1), handleBgrd); - cString dateTime = cString::sprintf("%s %s %s", *itemTabs[0], *itemTabs[1], *itemTabs[2]); - pixmap->DrawText(cPoint(5, 3), *dateTime, Theme.Color(clrMenuFontMenuItemTitle), clrTransparent, font); - title = itemTabs[3]; - cTextWrapper titleLines; - int lineHeight = font->Height(); - titleLines.Set(*title, font, width-8); - for (int line = 0; line < titleLines.Lines(); line++) { - pixmap->DrawText(cPoint(5 , 3 + lineHeight * (line+1)), titleLines.GetLine(line), clrFont, clrTransparent, font); - if (line == 3) break; - } - } else { //Day Delimiter - DrawDelimiter(*itemTabs[1], "daydelimiter", handleBgrd); + if (hasProgressBar) { + DrawRemaining(strProgressbar.c_str(), left, height*7/8, width - left - 10); } + + } else { + DrawDelimiter(*itemTabs[1], delimiterType.c_str(), handleBgrd); } } @@ -13,6 +13,7 @@ protected: bool selectable; bool current; cFont *font; + cFont *fontSmall; int width, height; cString *itemTabs; int *tabWidth; @@ -24,6 +25,7 @@ public: void CreatePixmap(int top, int space, int index, int width, int height); void CreatePixmapIcon(int top, int space, int index, int itemHeight, int iconWidth, int iconHeight); void SetFont(cFont *font) {this->font = font;} + void SetFontSmall(cFont *fontSmall) {this->fontSmall = fontSmall;} void SetCurrent(bool cur) {current = cur;} void SetAlpha(int alpha) {this->pixmap->SetAlpha(alpha);} void SetAlphaIcon(int alpha) {if (hasIcon) this->pixmapIcon->SetAlpha(alpha);} @@ -45,7 +47,18 @@ public: void Render(); }; -enum eMenuSubCategory { mcSubUndefined = -1, mcSubSchedule = 0, mcSubScheduleWhatsOn, mcSubScheduleTimer, mcSubChannels, mcSubChannelEdit}; +enum eMenuSubCategory { mcSubUndefined = -1, + mcSubSchedule = 0, + mcSubScheduleWhatsOn, + mcSubScheduleWhatsOnNow, + mcSubScheduleWhatsOnNext, + mcSubScheduleWhatsOnElse, + mcSubScheduleSearchResults, + mcSubScheduleFavorites, + mcSubScheduleTimerconflict, + mcSubScheduleTimer, + mcSubChannels, + mcSubChannelEdit}; class cNopacityScheduleMenuItem : public cNopacityMenuItem { private: @@ -118,7 +118,7 @@ THEME_CLR(Theme, clrMessageWarning, CLR_MESSAGEWARNING); THEME_CLR(Theme, clrMessageError, CLR_MESSAGEERROR); THEME_CLR(Theme, clrMessageBlend, CLR_TRANSBLACK); - +#include "epgsearchconf.c" #include "config.c" cNopacityConfig config; #include "setup.c" @@ -137,6 +137,7 @@ cNopacityConfig config; cNopacity::cNopacity(void) : cSkin("nOpacity", &::Theme) { config.setDynamicValues(); + config.loadEPGSearchSettings(); } const char *cNopacity::Description(void) { diff --git a/po/de_DE.po b/po/de_DE.po index 3a16af2..2c0480d 100644 --- a/po/de_DE.po +++ b/po/de_DE.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: skinnopacity 0.0.1\n" "Report-Msgid-Bugs-To: <see README>\n" -"POT-Creation-Date: 2012-11-28 20:39+0100\n" +"POT-Creation-Date: 2012-12-05 19:48+0100\n" "PO-Revision-Date: 2012-11-11 17:49+0200\n" "Last-Translator: louis\n" "Language-Team: \n" @@ -121,6 +121,9 @@ msgstr "Schriftgröße anpassen - Große Menübuttons" msgid "Adjust Font Size - Schedule Menu Item" msgstr "Schriftgröße anpassen - Programmübersicht Menübuttons" +msgid "Adjust Font Size - Schedule Menu Item Small" +msgstr "Schriftgröße anpassen - Programmübersicht Menübuttons klein" + msgid "Adjust Font Size - Default Menu Item" msgstr "Schriftgröße anpassen - Default Menübuttons" @@ -115,6 +115,7 @@ void cNopacitySetup::Store(void) { SetupStore("fontDate", config.fontDate); SetupStore("fontMenuitemLarge", config.fontMenuitemLarge); SetupStore("fontMenuitemSchedule", config.fontMenuitemSchedule); + SetupStore("fontMenuitemScheduleSmall", config.fontMenuitemScheduleSmall); SetupStore("fontMenuitemDefault", config.fontMenuitemDefault); SetupStore("fontDiskUsage", config.fontDiskUsage); SetupStore("fontTimersHead", config.fontTimersHead); @@ -188,6 +189,7 @@ void cNopacitySetupMenuDisplay::Set(void) { Add(new cMenuEditIntItem(tr("Adjust Font Size - Date"), &tmpNopacityConfig->fontDate, -20, 20)); Add(new cMenuEditIntItem(tr("Adjust Font Size - Large Menu Item"), &tmpNopacityConfig->fontMenuitemLarge, -20, 20)); Add(new cMenuEditIntItem(tr("Adjust Font Size - Schedule Menu Item"), &tmpNopacityConfig->fontMenuitemSchedule, -20, 20)); + Add(new cMenuEditIntItem(tr("Adjust Font Size - Schedule Menu Item Small"), &tmpNopacityConfig->fontMenuitemScheduleSmall, -20, 20)); Add(new cMenuEditIntItem(tr("Adjust Font Size - Default Menu Item"), &tmpNopacityConfig->fontMenuitemDefault, -20, 20)); Add(new cMenuEditIntItem(tr("Adjust Font Size - Disc Usage"), &tmpNopacityConfig->fontDiskUsage, -20, 20)); Add(new cMenuEditIntItem(tr("Adjust Font Size - Timers Header"), &tmpNopacityConfig->fontTimersHead, -20, 20)); |