diff options
author | louis <louis.braun@gmx.de> | 2014-01-19 13:52:05 +0100 |
---|---|---|
committer | louis <louis.braun@gmx.de> | 2014-01-19 13:52:05 +0100 |
commit | fcb664da93677cf540d384ee1d377493a2b475ba (patch) | |
tree | 96f13cc83874e74b4d351a66f9ed8e7022e9c8cb /recmenus.c | |
parent | 475964a7810214229c9d60c79e00192fd65eb1a0 (diff) | |
download | vdr-plugin-tvguide-fcb664da93677cf540d384ee1d377493a2b475ba.tar.gz vdr-plugin-tvguide-fcb664da93677cf540d384ee1d377493a2b475ba.tar.bz2 |
Improved favorites menu with whats on now / next and up to four user defined times
Diffstat (limited to 'recmenus.c')
-rw-r--r-- | recmenus.c | 74 |
1 files changed, 63 insertions, 11 deletions
@@ -961,12 +961,17 @@ cRecMenuSearchTimerTemplatesCreate::cRecMenuSearchTimerTemplatesCreate(TVGuideEP cRecMenuSearchTimerResults::cRecMenuSearchTimerResults(std::string searchString, const cEvent **searchResults, int numResults, std::string templateName, eRecMenuState action2) { this->searchResults = searchResults; this->action2 = action2; - SetWidthPercent(70); - cString message1 = tr("search results for Search Timer"); - cString message2 = tr("search result for Search Timer"); this->numResults = numResults; - cString message3 = tr("Using Template"); - cString infoText; + SetWidthPercent(70); + cString message1 = "", message2 = "", message3 = "", infoText = ""; + if (action2 == rmsDisabled) { + message1 = tr("search results for Search Timer"); + message2 = tr("search result for Search Timer"); + message3 = tr("Using Template"); + } else if (action2 == rmsFavoritesRecord) { + message1 = tr("search results for Favorite"); + message2 = tr("search result for Favorite"); + } if (templateName.size() > 0) { infoText = cString::sprintf("%d %s:\n\"%s\"\n%s \"%s\"", numResults, (numResults>1)?(*message1):(*message2), searchString.c_str(), *message3, templateName.c_str()); } else { @@ -1452,8 +1457,10 @@ eRecMenuState cRecMenuTimeline::ProcessKey(eKeys Key) { // --- cRecMenuFavorites --------------------------------------------------------- cRecMenuFavorites::cRecMenuFavorites(std::vector<cTVGuideSearchTimer> favorites) { + deleteMenuItems = false; this->favorites = favorites; - numFavorites = favorites.size(); + CreateFavoritesMenuItems(); + numFavorites = myMenuItems.size(); SetWidthPercent(70); cString header; if (numFavorites > 0) { @@ -1465,23 +1472,68 @@ cRecMenuFavorites::cRecMenuFavorites(std::vector<cTVGuideSearchTimer> favorites) 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); + + for (int i=0; i<numFavorites; i++) { + if (i==0) + myMenuItems[i]->setActive(); + if (!AddMenuItemInitial(myMenuItems[i])) + break; + } + CalculateHeight(); CreatePixmap(); Arrange(); } cRecMenuFavorites::~cRecMenuFavorites(void) { + for (std::vector<cRecMenuItem*>::iterator it = myMenuItems.begin(); it != myMenuItems.end(); it++) { + delete *it; + } + myMenuItems.clear(); +} + +void cRecMenuFavorites::CreateFavoritesMenuItems(void) { + if (tvguideConfig.favWhatsOnNow) { + myMenuItems.push_back(new cRecMenuItemFavoriteStatic(tr("What's on now"), rmsFavoritesNow, false)); + } + if (tvguideConfig.favWhatsOnNext) { + myMenuItems.push_back(new cRecMenuItemFavoriteStatic(tr("What's on next"), rmsFavoritesNext, false)); + } + if (tvguideConfig.favUseTime1) { + std::string desc = *cString::sprintf("%s (%s)", tvguideConfig.descUser1.c_str(), NiceTime(tvguideConfig.favTime1).c_str()); + myMenuItems.push_back(new cRecMenuItemFavoriteStatic(desc, rmsFavoritesUser1, false)); + } + if (tvguideConfig.favUseTime2) { + std::string desc = *cString::sprintf("%s (%s)", tvguideConfig.descUser2.c_str(), NiceTime(tvguideConfig.favTime2).c_str()); + myMenuItems.push_back(new cRecMenuItemFavoriteStatic(desc, rmsFavoritesUser2, false)); + } + if (tvguideConfig.favUseTime3) { + std::string desc = *cString::sprintf("%s (%s)", tvguideConfig.descUser3.c_str(), NiceTime(tvguideConfig.favTime3).c_str()); + myMenuItems.push_back(new cRecMenuItemFavoriteStatic(desc, rmsFavoritesUser3, false)); + } + if (tvguideConfig.favUseTime4) { + std::string desc = *cString::sprintf("%s (%s)", tvguideConfig.descUser4.c_str(), NiceTime(tvguideConfig.favTime4).c_str()); + myMenuItems.push_back(new cRecMenuItemFavoriteStatic(desc, rmsFavoritesUser4, false)); + } + + int numAdditionalFavs = favorites.size(); + for (int i = 0; i < numAdditionalFavs; i++) { + myMenuItems.push_back(new cRecMenuItemFavorite(favorites[i], rmsSearchTimerTest, false)); + } + +} + +std::string cRecMenuFavorites::NiceTime(int favTime) { + int hours = favTime/100; + int mins = favTime - hours * 100; + return *cString::sprintf("%02d:%02d", hours, mins); } cRecMenuItem *cRecMenuFavorites::GetMenuItem(int number) { if (number > -1 && number < numFavorites) - return new cRecMenuItemFavorite(favorites[number], rmsSearchTimerTest, false); + return myMenuItems[number]; return NULL; } |