Favorites menu with EPG Search favorite timers with blue key

This commit is contained in:
louis 2014-01-14 18:00:32 +01:00
parent d0651a4a50
commit a8b7c95434
21 changed files with 325 additions and 20 deletions

View File

@ -105,3 +105,4 @@ Version 1.1.0
- completely refactored recording menu - completely refactored recording menu
- restructured detailöed EPG View that tv frame and status buttons - restructured detailöed EPG View that tv frame and status buttons
are displayed are displayed
- Favorites menu with EPG Search favorite timers with blue key

View File

@ -28,7 +28,7 @@ cTvguideConfig::cTvguideConfig() {
hugeStepHours = 24; hugeStepHours = 24;
channelJumpMode = eNumJump; channelJumpMode = eNumJump;
jumpChannels = 0; jumpChannels = 0;
blueKeyMode = 0; blueKeyMode = eBlueKeySwitch;
closeOnSwitch = 1; closeOnSwitch = 1;
numkeyMode = 0; numkeyMode = 0;
useRemoteTimers = 0; useRemoteTimers = 0;

View File

@ -30,6 +30,12 @@ enum {
eStyleFlat eStyleFlat
}; };
enum {
eBlueKeySwitch,
eBlueKeyEPG,
eBlueKeyFavorites
};
class cTvguideConfig { class cTvguideConfig {
private: private:
public: public:

View File

@ -45,12 +45,21 @@ void cFooter::drawYellowButton(const char *text) {
DrawButton(cuttedText.c_str(), theme.Color(clrButtonYellow), theme.Color(clrButtonYellowBorder), oeButtonYellow, positionButtons[2]); DrawButton(cuttedText.c_str(), theme.Color(clrButtonYellow), theme.Color(clrButtonYellowBorder), oeButtonYellow, positionButtons[2]);
} }
void cFooter::drawBlueButton() { void cFooter::drawBlueButton(bool detailedEPG) {
cString text; cString text;
if (tvguideConfig.blueKeyMode == 0) if (tvguideConfig.blueKeyMode == eBlueKeySwitch)
text = tr("Switch to Channel"); text = tr("Switch to Channel");
else if (tvguideConfig.blueKeyMode == 1) else if (tvguideConfig.blueKeyMode == eBlueKeyEPG) {
text = tr("Detailed EPG"); if (!detailedEPG)
text = tr("Detailed EPG");
else
text = tr("Close detailed EPG");
} else if (tvguideConfig.blueKeyMode == eBlueKeyFavorites) {
if (!detailedEPG)
text = tr("Favorites");
else
text = tr("Switch to Channel");
}
DrawButton(*text, theme.Color(clrButtonBlue), theme.Color(clrButtonBlueBorder), oeButtonBlue, positionButtons[3]); DrawButton(*text, theme.Color(clrButtonBlue), theme.Color(clrButtonBlueBorder), oeButtonBlue, positionButtons[3]);
} }
@ -68,6 +77,10 @@ void cFooter::UpdateGroupButtons(const cChannel *channel, bool force) {
void cFooter::SetDetailedViewMode(void) { void cFooter::SetDetailedViewMode(void) {
ClearButton(positionButtons[1]); ClearButton(positionButtons[1]);
ClearButton(positionButtons[2]); ClearButton(positionButtons[2]);
if (tvguideConfig.blueKeyMode != eBlueKeySwitch) {
ClearButton(positionButtons[3]);
drawBlueButton(true);
}
} }
void cFooter::LeaveDetailedViewMode(const cChannel *channel) { void cFooter::LeaveDetailedViewMode(const cChannel *channel) {

View File

@ -24,7 +24,7 @@ public:
void drawGreenButton(const char *text); void drawGreenButton(const char *text);
void drawYellowButton(); void drawYellowButton();
void drawYellowButton(const char *text); void drawYellowButton(const char *text);
void drawBlueButton(); void drawBlueButton(bool detailedEPG = false);
void UpdateGroupButtons(const cChannel *channel, bool force = false); void UpdateGroupButtons(const cChannel *channel, bool force = false);
void SetDetailedViewMode(void); void SetDetailedViewMode(void);
void LeaveDetailedViewMode(const cChannel *channel); void LeaveDetailedViewMode(const cChannel *channel);

View File

@ -3,7 +3,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: vdr-tvguide 0.0.1\n" "Project-Id-Version: vdr-tvguide 0.0.1\n"
"Report-Msgid-Bugs-To: <see README>\n" "Report-Msgid-Bugs-To: <see README>\n"
"POT-Creation-Date: 2014-01-12 16:23+0100\n" "POT-Creation-Date: 2014-01-14 17:00+0100\n"
"PO-Revision-Date: 2013-09-21 17:49+0200\n" "PO-Revision-Date: 2013-09-21 17:49+0200\n"
"Last-Translator: My friend <Sampep> Thanks David <Gabychan> <gbonich@gmail.com>\n" "Last-Translator: My friend <Sampep> Thanks David <Gabychan> <gbonich@gmail.com>\n"
"Language-Team: \n" "Language-Team: \n"
@ -45,6 +45,12 @@ msgstr "Canvia al canal"
msgid "Detailed EPG" msgid "Detailed EPG"
msgstr "EPG Detallat" msgstr "EPG Detallat"
msgid "Close detailed EPG"
msgstr ""
msgid "Favorites"
msgstr ""
msgid "images" msgid "images"
msgstr "" msgstr ""
@ -327,6 +333,9 @@ msgstr ""
msgid "Avoid Repeats" msgid "Avoid Repeats"
msgstr "" msgstr ""
msgid "Use in Favorites"
msgstr ""
msgid "Hide advanced Options" msgid "Hide advanced Options"
msgstr "" msgstr ""
@ -474,6 +483,9 @@ msgstr "per"
msgid "No recordings found for" msgid "No recordings found for"
msgstr "No s'han trobat gravacions per" msgstr "No s'han trobat gravacions per"
msgid "No Favorites available"
msgstr ""
msgid "whole term must appear" msgid "whole term must appear"
msgstr "expressió completa" msgstr "expressió completa"
@ -513,6 +525,9 @@ msgstr "Blau: Canvi de canal, OK: EPG detallat"
msgid "Blue: Detailed EPG, Ok: Channel Switch" msgid "Blue: Detailed EPG, Ok: Channel Switch"
msgstr "Blau: EPG detallat, OK: Canvi de canal" msgstr "Blau: EPG detallat, OK: Canvi de canal"
msgid "Blue: Favorites / Switch, Ok: Detailed EPG"
msgstr ""
msgid "Timely Jump" msgid "Timely Jump"
msgstr "" msgstr ""

View File

@ -3,7 +3,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: vdr-tvguide 0.0.1\n" "Project-Id-Version: vdr-tvguide 0.0.1\n"
"Report-Msgid-Bugs-To: <see README>\n" "Report-Msgid-Bugs-To: <see README>\n"
"POT-Creation-Date: 2014-01-12 16:23+0100\n" "POT-Creation-Date: 2014-01-14 17:00+0100\n"
"PO-Revision-Date: 2012-08-25 17:49+0200\n" "PO-Revision-Date: 2012-08-25 17:49+0200\n"
"Last-Translator: Horst\n" "Last-Translator: Horst\n"
"Language-Team: \n" "Language-Team: \n"
@ -42,6 +42,12 @@ msgstr "Umschalten"
msgid "Detailed EPG" msgid "Detailed EPG"
msgstr "Detailiertes EPG" msgstr "Detailiertes EPG"
msgid "Close detailed EPG"
msgstr "Det. EPG schließen"
msgid "Favorites"
msgstr "Favoriten"
msgid "images" msgid "images"
msgstr "Bilder" msgstr "Bilder"
@ -324,6 +330,9 @@ msgstr "VPS benutzen"
msgid "Avoid Repeats" msgid "Avoid Repeats"
msgstr "Wiederholungen vermeiden" msgstr "Wiederholungen vermeiden"
msgid "Use in Favorites"
msgstr "Als Favorit benutzen"
msgid "Hide advanced Options" msgid "Hide advanced Options"
msgstr "Erweiterte Optionen ausblenden" msgstr "Erweiterte Optionen ausblenden"
@ -471,6 +480,9 @@ msgstr "für"
msgid "No recordings found for" msgid "No recordings found for"
msgstr "Keine Aufnahmen gefunden für" msgstr "Keine Aufnahmen gefunden für"
msgid "No Favorites available"
msgstr "Keine Favoriten verfügbar"
msgid "whole term must appear" msgid "whole term must appear"
msgstr "vollständiger Ausdruck" msgstr "vollständiger Ausdruck"
@ -510,6 +522,9 @@ msgstr "Blau: Umschalten, OK: Detailiertes EPG"
msgid "Blue: Detailed EPG, Ok: Channel Switch" msgid "Blue: Detailed EPG, Ok: Channel Switch"
msgstr "Blau: Detailiertes EPG, OK: Umschalten" msgstr "Blau: Detailiertes EPG, OK: Umschalten"
msgid "Blue: Favorites / Switch, Ok: Detailed EPG"
msgstr "Blau: Favoriten / Umschalten, OK: Det. EPG"
msgid "Timely Jump" msgid "Timely Jump"
msgstr "Zeitsprung" msgstr "Zeitsprung"

View File

@ -3,7 +3,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: vdr-tvguide 1.0.0\n" "Project-Id-Version: vdr-tvguide 1.0.0\n"
"Report-Msgid-Bugs-To: <see README>\n" "Report-Msgid-Bugs-To: <see README>\n"
"POT-Creation-Date: 2014-01-12 16:23+0100\n" "POT-Creation-Date: 2014-01-14 17:00+0100\n"
"PO-Revision-Date: 2013-09-25 17:49+0400\n" "PO-Revision-Date: 2013-09-25 17:49+0400\n"
"Last-Translator: AmiD, ilya\n" "Last-Translator: AmiD, ilya\n"
"Language-Team: Russia-Cherepovets(wm.amid@gmail.com)\n" "Language-Team: Russia-Cherepovets(wm.amid@gmail.com)\n"
@ -42,6 +42,12 @@ msgstr "Переключиться"
msgid "Detailed EPG" msgid "Detailed EPG"
msgstr "Подробный EPG" msgstr "Подробный EPG"
msgid "Close detailed EPG"
msgstr ""
msgid "Favorites"
msgstr ""
msgid "images" msgid "images"
msgstr "" msgstr ""
@ -324,6 +330,9 @@ msgstr ""
msgid "Avoid Repeats" msgid "Avoid Repeats"
msgstr "" msgstr ""
msgid "Use in Favorites"
msgstr ""
msgid "Hide advanced Options" msgid "Hide advanced Options"
msgstr "" msgstr ""
@ -471,6 +480,9 @@ msgstr "для"
msgid "No recordings found for" msgid "No recordings found for"
msgstr "Не найдено записей:" msgstr "Не найдено записей:"
msgid "No Favorites available"
msgstr ""
msgid "whole term must appear" msgid "whole term must appear"
msgstr "фраза" msgstr "фраза"
@ -510,6 +522,9 @@ msgstr "Синяя: Переключить канал, OK: Подробный EP
msgid "Blue: Detailed EPG, Ok: Channel Switch" msgid "Blue: Detailed EPG, Ok: Channel Switch"
msgstr "Синяя: Подробный EPG, OK: Переключить канал" msgstr "Синяя: Подробный EPG, OK: Переключить канал"
msgid "Blue: Favorites / Switch, Ok: Detailed EPG"
msgstr ""
msgid "Timely Jump" msgid "Timely Jump"
msgstr "" msgstr ""

View File

@ -3,7 +3,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: vdr-tvguide 1.1.0\n" "Project-Id-Version: vdr-tvguide 1.1.0\n"
"Report-Msgid-Bugs-To: <see README>\n" "Report-Msgid-Bugs-To: <see README>\n"
"POT-Creation-Date: 2014-01-12 16:23+0100\n" "POT-Creation-Date: 2014-01-14 17:00+0100\n"
"PO-Revision-Date: 2013-09-15 00:12+0100\n" "PO-Revision-Date: 2013-09-15 00:12+0100\n"
"Last-Translator: Milan Hrala <hrala.milan@gmail.com>\n" "Last-Translator: Milan Hrala <hrala.milan@gmail.com>\n"
"Language-Team: \n" "Language-Team: \n"
@ -42,6 +42,12 @@ msgstr "Prepn
msgid "Detailed EPG" msgid "Detailed EPG"
msgstr "Podrobné EPG" msgstr "Podrobné EPG"
msgid "Close detailed EPG"
msgstr ""
msgid "Favorites"
msgstr ""
msgid "images" msgid "images"
msgstr "" msgstr ""
@ -324,6 +330,9 @@ msgstr ""
msgid "Avoid Repeats" msgid "Avoid Repeats"
msgstr "" msgstr ""
msgid "Use in Favorites"
msgstr ""
msgid "Hide advanced Options" msgid "Hide advanced Options"
msgstr "" msgstr ""
@ -471,6 +480,9 @@ msgstr "pre"
msgid "No recordings found for" msgid "No recordings found for"
msgstr "Nena¹li sa nahrávky s názvom " msgstr "Nena¹li sa nahrávky s názvom "
msgid "No Favorites available"
msgstr ""
msgid "whole term must appear" msgid "whole term must appear"
msgstr "kompletný výraz" msgstr "kompletný výraz"
@ -510,6 +522,9 @@ msgstr "Modr
msgid "Blue: Detailed EPG, Ok: Channel Switch" msgid "Blue: Detailed EPG, Ok: Channel Switch"
msgstr "Modré: podrobné EPG, OK: prepnú» kanál" msgstr "Modré: podrobné EPG, OK: prepnú» kanál"
msgid "Blue: Favorites / Switch, Ok: Detailed EPG"
msgstr ""
msgid "Timely Jump" msgid "Timely Jump"
msgstr "" msgstr ""

View File

@ -574,3 +574,23 @@ const cEvent **cRecManager::LoadReruns(const cEvent *event, int &numResults) {
} }
return NULL; return NULL;
} }
void cRecManager::GetFavorites(std::vector<cTVGuideSearchTimer> *favorites) {
if (!epgSearchAvailable) {
return;
}
Epgsearch_services_v1_1 *epgSearch = new Epgsearch_services_v1_1;
if (epgSearchPlugin->Service("Epgsearch-services-v1.1", epgSearch)) {
std::list<std::string> searchTimerList;
searchTimerList = epgSearch->handler->SearchTimerList();
for(std::list<std::string>::iterator it = searchTimerList.begin(); it != searchTimerList.end(); it++) {
cTVGuideSearchTimer timer;
timer.SetEPGSearchString(it->c_str());
if (timer.Parse()) {
if (timer.UseInFavorites())
favorites->push_back(timer);
}
}
}
}

View File

@ -54,6 +54,7 @@ public:
void DeleteSwitchTimer(const cEvent *event); void DeleteSwitchTimer(const cEvent *event);
cRecording **SearchForRecordings(std::string searchString, int &numResults); cRecording **SearchForRecordings(std::string searchString, int &numResults);
const cEvent **LoadReruns(const cEvent *event, int &numResults); const cEvent **LoadReruns(const cEvent *event, int &numResults);
void GetFavorites(std::vector<cTVGuideSearchTimer> *favorites);
virtual ~cRecManager (void); virtual ~cRecManager (void);
}; };

View File

@ -2658,3 +2658,83 @@ eRecMenuState cRecMenuItemSearchTimer::ProcessKey(eKeys Key) {
} }
return rmsNotConsumed; return rmsNotConsumed;
} }
// --- cRecMenuItemFavorite -------------------------------------------------------
cRecMenuItemFavorite::cRecMenuItemFavorite(cTVGuideSearchTimer favorite,
eRecMenuState action1,
bool active) {
this->favorite = favorite;
this->action = action1;
pixmapText = NULL;
pixmapIcons = NULL;
selectable = true;
this->active = active;
height = 2 * font->Height();;
}
cRecMenuItemFavorite::~cRecMenuItemFavorite(void) {
if (pixmapText)
osdManager.releasePixmap(pixmapText);
if (pixmapIcons)
osdManager.releasePixmap(pixmapIcons);
}
void cRecMenuItemFavorite::SetPixmaps(void) {
if (!pixmap) {
pixmap = osdManager.requestPixmap(4, cRect(x, y, width, height));
pixmapText = osdManager.requestPixmap(5, cRect(x, y, width, height));
pixmapIcons = osdManager.requestPixmap(6, cRect(x, y, width, height));
} else {
pixmap->SetViewPort(cRect(x, y, width, height));
pixmapText->SetViewPort(cRect(x, y, width, height));
pixmapIcons->SetViewPort(cRect(x, y, width, height));
}
}
void cRecMenuItemFavorite::Draw(void) {
int textX = DrawIcons();
if (!drawn) {
pixmapText->Fill(clrTransparent);
textX += 20;
cString label = cString::sprintf("\"%s\"", favorite.SearchString().c_str());
pixmapText->DrawText(cPoint(textX, (height - fontLarge->Height())/2), *label, colorText, clrTransparent, fontLarge);
drawn = true;
}
}
void cRecMenuItemFavorite::Hide(void) {
if (pixmap) pixmap->SetLayer(-1);
if (pixmapText) pixmapText->SetLayer(-1);
if (pixmapIcons) pixmapIcons->SetLayer(-1);
}
void cRecMenuItemFavorite::Show(void) {
if (pixmap) pixmap->SetLayer(4);
if (pixmapText) pixmapText->SetLayer(5);
if (pixmapIcons) pixmapIcons->SetLayer(6);
}
int cRecMenuItemFavorite::DrawIcons(void) {
pixmapIcons->Fill(clrTransparent);
int iconsX = 10;
int iconSize = height / 2;
int iconY = (height - iconSize) / 2;
std::string iconSearch;
iconSearch = active ? "search_active" : "search_inactive" ;
cImage *imgSearch = imgCache.GetIcon(iconSearch, iconSize, iconSize);
if (imgSearch) {
pixmapIcons->DrawImage(cPoint(iconsX, iconY), *imgSearch);
iconsX += iconSize + 10;
}
return iconsX;
}
eRecMenuState cRecMenuItemFavorite::ProcessKey(eKeys Key) {
switch (Key & ~k_Repeat) {
case kOk:
return action;
default:
break;
}
return rmsNotConsumed;
}

View File

@ -605,4 +605,25 @@ public:
eRecMenuState ProcessKey(eKeys Key); eRecMenuState ProcessKey(eKeys Key);
}; };
// --- cRecMenuItemFavorite -------------------------------------------------------
class cRecMenuItemFavorite : public cRecMenuItem {
private:
cTVGuideSearchTimer favorite;
eRecMenuState action1;
cPixmap *pixmapText;
cPixmap *pixmapIcons;
int DrawIcons(void);
public:
cRecMenuItemFavorite(cTVGuideSearchTimer favorite,
eRecMenuState action1,
bool active);
virtual ~cRecMenuItemFavorite(void);
void SetPixmaps(void);
void Hide(void);
void Show(void);
void Draw(void);
cTVGuideSearchTimer GetFavorite(void) { return favorite; };
eRecMenuState ProcessKey(eKeys Key);
};
#endif //__TVGUIDE_RECMENUITEM_H #endif //__TVGUIDE_RECMENUITEM_H

View File

@ -39,6 +39,19 @@ void cRecMenuManager::Start(const cEvent *event) {
osdManager.flush(); osdManager.flush();
} }
void cRecMenuManager::StartFavorites(void) {
active = true;
activeMenuBuffer = NULL;
detailViewActive = false;
SetBackground();
std::vector<cTVGuideSearchTimer> favorites;
recManager->GetFavorites(&favorites);
activeMenu = new cRecMenuFavorites(favorites);
activeMenu->Display();
osdManager.flush();
}
void cRecMenuManager::Close(void) { void cRecMenuManager::Close(void) {
event = NULL; event = NULL;
active = false; active = false;
@ -299,7 +312,7 @@ eOSState cRecMenuManager::StateMachine(eRecMenuState nextState) {
activeMenu->Display(); activeMenu->Display();
break; } break; }
case rmsSearchTimerTest: { case rmsSearchTimerTest: {
//caller: cRecMenuSearchTimerEdit, cRecMenuSearchTimerTemplatesCreate, rmsSearchTimers //caller: cRecMenuSearchTimerEdit, cRecMenuSearchTimerTemplatesCreate, cRecMenuSearchTimers, cRecMenuFavorites
//show results of currently choosen search timer //show results of currently choosen search timer
cTVGuideSearchTimer searchTimer; cTVGuideSearchTimer searchTimer;
if (cRecMenuSearchTimerEdit *menu = dynamic_cast<cRecMenuSearchTimerEdit*>(activeMenu)) { if (cRecMenuSearchTimerEdit *menu = dynamic_cast<cRecMenuSearchTimerEdit*>(activeMenu)) {
@ -311,6 +324,8 @@ eOSState cRecMenuManager::StateMachine(eRecMenuState nextState) {
TVGuideEPGSearchTemplate tmpl = menu->GetTemplate(); TVGuideEPGSearchTemplate tmpl = menu->GetTemplate();
searchTimer.SetTemplate(tmpl.templValue); searchTimer.SetTemplate(tmpl.templValue);
searchTimer.Parse(true); searchTimer.Parse(true);
} else if (cRecMenuFavorites *menu = dynamic_cast<cRecMenuFavorites*>(activeMenu)) {
searchTimer = menu->GetFavorite();
} else break; } else break;
int numSearchResults = 0; int numSearchResults = 0;
std::string searchString = searchTimer.BuildSearchString(); std::string searchString = searchTimer.BuildSearchString();

View File

@ -31,6 +31,7 @@ public:
void SetFooter(cFooter *footer) { this->footer = footer; }; void SetFooter(cFooter *footer) { this->footer = footer; };
bool isActive(void) { return active; }; bool isActive(void) { return active; };
void Start(const cEvent *event); void Start(const cEvent *event);
void StartFavorites(void);
void Close(void); void Close(void);
eOSState StateMachine(eRecMenuState nextState); eOSState StateMachine(eRecMenuState nextState);
eOSState ProcessKey(eKeys Key); eOSState ProcessKey(eKeys Key);

View File

@ -701,6 +701,7 @@ cRecMenuSearchTimerEdit::cRecMenuSearchTimerEdit(cTVGuideSearchTimer searchTimer
compareTitle = searchTimer.CompareTitle(); compareTitle = searchTimer.CompareTitle();
compareSubtitle = searchTimer.CompareSubtitle(); compareSubtitle = searchTimer.CompareSubtitle();
compareSummary = searchTimer.CompareSummary(); compareSummary = searchTimer.CompareSummary();
useInFavorites = searchTimer.UseInFavorites();
SetWidthPercent(70); SetWidthPercent(70);
cString infoText; cString infoText;
@ -769,6 +770,7 @@ void cRecMenuSearchTimerEdit::InitMenuItems(void) {
mainMenuItems.push_back(new cRecMenuItemInt(tr("Time margin for stop in minutes"), marginStop, 0, 30, false, &marginStop, rmsSearchTimerSave)); mainMenuItems.push_back(new cRecMenuItemInt(tr("Time margin for stop in minutes"), marginStop, 0, 30, false, &marginStop, rmsSearchTimerSave));
mainMenuItems.push_back(new cRecMenuItemBool(tr("Use VPS"), useVPS, false, false, &useVPS, rmsSearchTimerSave)); mainMenuItems.push_back(new cRecMenuItemBool(tr("Use VPS"), useVPS, false, false, &useVPS, rmsSearchTimerSave));
mainMenuItems.push_back(new cRecMenuItemBool(tr("Avoid Repeats"), avoidRepeats, true, false, &avoidRepeats, rmsSearchTimerSave)); mainMenuItems.push_back(new cRecMenuItemBool(tr("Avoid Repeats"), avoidRepeats, true, false, &avoidRepeats, rmsSearchTimerSave));
mainMenuItems.push_back(new cRecMenuItemBool(tr("Use in Favorites"), useInFavorites, false, false, &useInFavorites, rmsSearchTimerSave));
mainMenuItems.push_back(new cRecMenuItemButton(tr("Hide advanced Options"), rmsSearchTimerEdit, false)); mainMenuItems.push_back(new cRecMenuItemButton(tr("Hide advanced Options"), rmsSearchTimerEdit, false));
} }
mainMenuItems.push_back(new cRecMenuItemButton(tr("Display Results for Search Timer"), rmsSearchTimerTest, false)); mainMenuItems.push_back(new cRecMenuItemButton(tr("Display Results for Search Timer"), rmsSearchTimerTest, false));
@ -871,6 +873,7 @@ cTVGuideSearchTimer cRecMenuSearchTimerEdit::GetSearchTimer(void) {
searchTimer.SetCompareSubtitle(compareSubtitle); searchTimer.SetCompareSubtitle(compareSubtitle);
searchTimer.SetCompareSummary(compareSummary); searchTimer.SetCompareSummary(compareSummary);
} }
searchTimer.SetUseInFavorites(useInFavorites);
return searchTimer; return searchTimer;
} }
@ -1439,4 +1442,53 @@ eRecMenuState cRecMenuTimeline::ProcessKey(eKeys Key) {
state = cRecMenu::ProcessKey(Key); state = cRecMenu::ProcessKey(Key);
} }
return state; return state;
}
/******************************************************************************************
* Favorites
******************************************************************************************/
// --- cRecMenuFavorites ---------------------------------------------------------
cRecMenuFavorites::cRecMenuFavorites(std::vector<cTVGuideSearchTimer> favorites) {
this->favorites = favorites;
numFavorites = favorites.size();
SetWidthPercent(70);
cString header;
if (numFavorites > 0) {
header = tr("Favorites");
} else {
header = tr("No Favorites available");
}
cRecMenuItemInfo *headerItem = new cRecMenuItemInfo(*header, true);
headerItem->CalculateHeight(width - 2 * border);
SetHeader(headerItem);
for (int i = 0; i < numFavorites; i++) {
AddMenuItemInitial(new cRecMenuItemFavorite(favorites[i], rmsSearchTimerTest, (i==0)?true:false));
}
cRecMenuItem *button = new cRecMenuItemButton(tr("Close"), rmsClose, (numFavorites==0)?true:false);
SetFooter(button);
CalculateHeight();
CreatePixmap();
Arrange();
}
cRecMenuFavorites::~cRecMenuFavorites(void) {
}
cRecMenuItem *cRecMenuFavorites::GetMenuItem(int number) {
if (number > -1 && number < numFavorites)
return new cRecMenuItemFavorite(favorites[number], rmsSearchTimerTest, false);
return NULL;
}
int cRecMenuFavorites::GetTotalNumMenuItems(void) {
return numFavorites;
}
cTVGuideSearchTimer cRecMenuFavorites::GetFavorite(void) {
cRecMenuItemFavorite *activeItem = dynamic_cast<cRecMenuItemFavorite*>(GetActiveMenuItem());
return activeItem->GetFavorite();
} }

View File

@ -244,6 +244,7 @@ private:
bool compareTitle; bool compareTitle;
bool compareSubtitle; bool compareSubtitle;
bool compareSummary; bool compareSummary;
bool useInFavorites;
void InitMenuItems(void); void InitMenuItems(void);
void AddSubMenu(std::vector<cRecMenuItem*> *subMenu); void AddSubMenu(std::vector<cRecMenuItem*> *subMenu);
public: public:
@ -458,4 +459,21 @@ public:
cTimer *GetTimer(void); cTimer *GetTimer(void);
}; };
/******************************************************************************************
* Favorites
******************************************************************************************/
// --- cRecMenuFavorites ---------------------------------------------------------
class cRecMenuFavorites: public cRecMenu {
private:
std::vector<cTVGuideSearchTimer> favorites;
int numFavorites;
public:
cRecMenuFavorites(std::vector<cTVGuideSearchTimer> favorites);
cRecMenuItem *GetMenuItem(int number);
int GetTotalNumMenuItems(void);
cTVGuideSearchTimer GetFavorite(void);
virtual ~cRecMenuFavorites(void);
};
#endif //__TVGUIDE_RECMENUS_H #endif //__TVGUIDE_RECMENUS_H

View File

@ -95,6 +95,7 @@ public:
bool CompareTitle(void) { return compareTitle; }; bool CompareTitle(void) { return compareTitle; };
bool CompareSubtitle(void) { return compareSubtitle; }; bool CompareSubtitle(void) { return compareSubtitle; };
bool CompareSummary(void) { return compareSummary; }; bool CompareSummary(void) { return compareSummary; };
bool UseInFavorites(void) { return useInFavorites; };
//SETTER //SETTER
void SetSearchString(std::string searchString) { this->searchString = searchString; }; void SetSearchString(std::string searchString) { this->searchString = searchString; };
void SetActive(bool active) { useAsSearchTimer = active; }; void SetActive(bool active) { useAsSearchTimer = active; };
@ -120,6 +121,7 @@ public:
void SetCompareTitle(bool compareTitle) { this->compareTitle = compareTitle; }; void SetCompareTitle(bool compareTitle) { this->compareTitle = compareTitle; };
void SetCompareSubtitle(bool compareSubtitle) { this->compareSubtitle = compareSubtitle; }; void SetCompareSubtitle(bool compareSubtitle) { this->compareSubtitle = compareSubtitle; };
void SetCompareSummary(bool compareSummary) { this->compareSummary = compareSummary; }; void SetCompareSummary(bool compareSummary) { this->compareSummary = compareSummary; };
void SetUseInFavorites(bool useInFavorites) { this->useInFavorites = useInFavorites; };
//COMMON //COMMON
int GetNumTimers(void); int GetNumTimers(void);
int GetNumRecordings(void); int GetNumRecordings(void);

View File

@ -165,6 +165,7 @@ cMenuSetupGeneral::cMenuSetupGeneral(cTvguideConfig* data) : cMenuSetupSubMenu(
jumpMode[1] = tr("previous / next channel group"); jumpMode[1] = tr("previous / next channel group");
blueMode[0] = tr("Blue: Channel Switch, Ok: Detailed EPG"); blueMode[0] = tr("Blue: Channel Switch, Ok: Detailed EPG");
blueMode[1] = tr("Blue: Detailed EPG, Ok: Channel Switch"); blueMode[1] = tr("Blue: Detailed EPG, Ok: Channel Switch");
blueMode[2] = tr("Blue: Favorites / Switch, Ok: Detailed EPG");
numMode[0] = tr("Timely Jump"); numMode[0] = tr("Timely Jump");
numMode[1] = tr("Jump to specific channel"); numMode[1] = tr("Jump to specific channel");
useSubtitleRerunTexts[0] = tr("never"); useSubtitleRerunTexts[0] = tr("never");
@ -187,7 +188,7 @@ void cMenuSetupGeneral::Set(void) {
Add(new cMenuEditBoolItem(tr("Rounded Corners"), &tmpTvguideConfig->roundedCorners)); Add(new cMenuEditBoolItem(tr("Rounded Corners"), &tmpTvguideConfig->roundedCorners));
Add(new cMenuEditStraItem(tr("Channel Jump Mode (Keys Green / Yellow)"), &tmpTvguideConfig->channelJumpMode, 2, jumpMode)); Add(new cMenuEditStraItem(tr("Channel Jump Mode (Keys Green / Yellow)"), &tmpTvguideConfig->channelJumpMode, 2, jumpMode));
Add(new cMenuEditStraItem(tr("Keys Blue and OK"), &tmpTvguideConfig->blueKeyMode, 2, blueMode)); Add(new cMenuEditStraItem(tr("Keys Blue and OK"), &tmpTvguideConfig->blueKeyMode, 3, blueMode));
Add(new cMenuEditBoolItem(tr("Close TVGuide after channel switch"), &tmpTvguideConfig->closeOnSwitch)); Add(new cMenuEditBoolItem(tr("Close TVGuide after channel switch"), &tmpTvguideConfig->closeOnSwitch));
Add(new cMenuEditStraItem(tr("Functionality of numeric Keys"), &tmpTvguideConfig->numkeyMode, 2, numMode)); Add(new cMenuEditStraItem(tr("Functionality of numeric Keys"), &tmpTvguideConfig->numkeyMode, 2, numMode));
Add(new cMenuEditBoolItem(tr("Hide last Channel Group"), &tmpTvguideConfig->hideLastGroup)); Add(new cMenuEditBoolItem(tr("Hide last Channel Group"), &tmpTvguideConfig->hideLastGroup));

View File

@ -34,7 +34,7 @@ class cMenuSetupGeneral : public cMenuSetupSubMenu {
cThemes themes; cThemes themes;
const char * timeFormatItems[2]; const char * timeFormatItems[2];
const char * jumpMode[2]; const char * jumpMode[2];
const char * blueMode[2]; const char * blueMode[3];
const char * numMode[2]; const char * numMode[2];
const char *useSubtitleRerunTexts[3]; const char *useSubtitleRerunTexts[3];
void Set(void); void Set(void);

View File

@ -108,7 +108,7 @@ void cTvGuideOsd::drawOsd() {
footer->drawGreenButton(); footer->drawGreenButton();
footer->drawYellowButton(); footer->drawYellowButton();
} }
footer->drawBlueButton(); footer->drawBlueButton(false);
osdManager.flush(); osdManager.flush();
readChannels(newStartChannel); readChannels(newStartChannel);
drawGridsChannelJump(offset); drawGridsChannelJump(offset);
@ -500,19 +500,23 @@ void cTvGuideOsd::processKeyYellow() {
} }
eOSState cTvGuideOsd::processKeyBlue() { eOSState cTvGuideOsd::processKeyBlue() {
if (tvguideConfig.blueKeyMode == 0) { if (tvguideConfig.blueKeyMode == eBlueKeySwitch) {
return ChannelSwitch(); return ChannelSwitch();
} else if (tvguideConfig.blueKeyMode == 1) { } else if (tvguideConfig.blueKeyMode == eBlueKeyEPG) {
DetailedEPG(); DetailedEPG();
} else if (tvguideConfig.blueKeyMode == eBlueKeyFavorites) {
recMenuManager->StartFavorites();
} }
return osContinue; return osContinue;
} }
eOSState cTvGuideOsd::processKeyOk() { eOSState cTvGuideOsd::processKeyOk() {
if (tvguideConfig.blueKeyMode == 0) { if (tvguideConfig.blueKeyMode == eBlueKeySwitch) {
DetailedEPG(); DetailedEPG();
} else if (tvguideConfig.blueKeyMode == 1) { } else if (tvguideConfig.blueKeyMode == eBlueKeyEPG) {
return ChannelSwitch(); return ChannelSwitch();
} else if (tvguideConfig.blueKeyMode == eBlueKeyFavorites) {
DetailedEPG();
} }
return osContinue; return osContinue;
} }
@ -656,11 +660,21 @@ eOSState cTvGuideOsd::ProcessKey(eKeys Key) {
detailView = NULL; detailView = NULL;
detailViewActive = false; detailViewActive = false;
processKeyRed(); processKeyRed();
} else if (((Key & ~k_Repeat) == kBlue) && (tvguideConfig.blueKeyMode == 0)) { } else if ((Key & ~k_Repeat) == kBlue) {
delete detailView; delete detailView;
detailView = NULL; detailView = NULL;
detailViewActive = false; detailViewActive = false;
state = processKeyBlue(); if ((tvguideConfig.blueKeyMode == eBlueKeySwitch) || (tvguideConfig.blueKeyMode == eBlueKeyFavorites))
state = ChannelSwitch();
else {
osdManager.flush();
state = osContinue;
}
} else if ((Key & ~k_Repeat) == kOk && (tvguideConfig.blueKeyMode = eBlueKeyEPG)) {
delete detailView;
detailView = NULL;
detailViewActive = false;
state = ChannelSwitch();
} else { } else {
state = detailView->ProcessKey(Key); state = detailView->ProcessKey(Key);
if (state == osEnd) { if (state == osEnd) {