summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlouis <louis.braun@gmx.de>2012-12-05 20:50:15 +0100
committerlouis <louis.braun@gmx.de>2012-12-05 20:50:15 +0100
commit85b83b42ae87dff1ce984a88779d03698978460b (patch)
tree84d3522d3ec7a25b4cc982baa62067b208236b14
parentbfe8fcb2626206e320dcae906476b0aa334f9954 (diff)
downloadskin-nopacity-85b83b42ae87dff1ce984a88779d03698978460b.tar.gz
skin-nopacity-85b83b42ae87dff1ce984a88779d03698978460b.tar.bz2
changed epgsearch handling
-rw-r--r--README50
-rw-r--r--config.c26
-rw-r--r--config.h3
-rw-r--r--displaymenu.c48
-rw-r--r--displaymenu.h2
-rw-r--r--displaymenuview.c8
-rw-r--r--displaymenuview.h2
-rw-r--r--epgsearchconf.c295
-rw-r--r--epgsearchconf.h31
-rw-r--r--menudetailview.c6
-rw-r--r--menudetailview.h4
-rw-r--r--menuitem.c232
-rw-r--r--menuitem.h15
-rw-r--r--nopacity.c3
-rw-r--r--po/de_DE.po5
-rw-r--r--setup.c2
16 files changed, 618 insertions, 114 deletions
diff --git a/README b/README
index b99daa9..68c9322 100644
--- a/README
+++ b/README
@@ -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%
diff --git a/config.c b/config.c
index 6638e0a..a37d120 100644
--- a/config.c
+++ b/config.c
@@ -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);
diff --git a/config.h b/config.h
index 366c6e7..fe4dd94 100644
--- a/config.h
+++ b/config.h
@@ -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);
diff --git a/menuitem.c b/menuitem.c
index 94c6569..1ed2c4d 100644
--- a/menuitem.c
+++ b/menuitem.c
@@ -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);
}
}
diff --git a/menuitem.h b/menuitem.h
index fd001d6..02aa057 100644
--- a/menuitem.h
+++ b/menuitem.h
@@ -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:
diff --git a/nopacity.c b/nopacity.c
index 1ed2561..4746cfc 100644
--- a/nopacity.c
+++ b/nopacity.c
@@ -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"
diff --git a/setup.c b/setup.c
index 79a4617..6a70adb 100644
--- a/setup.c
+++ b/setup.c
@@ -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));