Added possibility to search for reruns in case of a timer conflict
1
HISTORY
@ -96,3 +96,4 @@ Version 1.1.0
|
|||||||
- Rounded Corners for color buttons (Closes Ticket 1475)
|
- Rounded Corners for color buttons (Closes Ticket 1475)
|
||||||
- Fixed some issues with text backgrounds in flat themes (closes
|
- Fixed some issues with text backgrounds in flat themes (closes
|
||||||
Tickets 1480 and 1486)
|
Tickets 1480 and 1486)
|
||||||
|
- Added possibility to search for reruns in case of a timer conflict
|
||||||
|
2
Makefile
@ -59,7 +59,7 @@ endif
|
|||||||
|
|
||||||
### The object files (add further files here):
|
### The object files (add further files here):
|
||||||
|
|
||||||
OBJS = $(PLUGIN).o channelcolumn.o channelgroup.o channelgroups.o channeljump.o config.o detailview.o dummygrid.o epggrid.o fontmanager.o footer.o geometrymanager.o grid.o headergrid.o imagecache.o imageloader.o imagemagickwrapper.o imagescaler.o osdmanager.o recmanager.o recmenu.o recmenuitem.o recmenumanager.o recmenus.o setup.o statusheader.o styledpixmap.o switchtimer.o timeline.o timer.o tools.o tvguideosd.o
|
OBJS = $(PLUGIN).o channelcolumn.o channelgroup.o channelgroups.o channeljump.o config.o detailview.o dummygrid.o epggrid.o fontmanager.o footer.o geometrymanager.o grid.o headergrid.o imagecache.o imageloader.o imagemagickwrapper.o imagescaler.o osdmanager.o recmanager.o recmenu.o recmenuitem.o recmenumanager.o recmenus.o setup.o statusheader.o styledpixmap.o switchtimer.o timeline.o timer.o timerconflict.o tools.o tvguideosd.o
|
||||||
|
|
||||||
### The main target:
|
### The main target:
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 428 B |
Before Width: | Height: | Size: 438 B |
BIN
icons/darkredNG/recmenuicons/arrow_left.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
icons/darkredNG/recmenuicons/arrow_right.png
Normal file
After Width: | Height: | Size: 936 B |
BIN
icons/darkredNG/recmenuicons/delete_active.png
Normal file
After Width: | Height: | Size: 768 B |
BIN
icons/darkredNG/recmenuicons/delete_inactive.png
Normal file
After Width: | Height: | Size: 886 B |
BIN
icons/darkredNG/recmenuicons/edit_active.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
icons/darkredNG/recmenuicons/edit_inactive.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
icons/darkredNG/recmenuicons/icon_backspace.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
icons/darkredNG/recmenuicons/icon_del_ins.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
icons/darkredNG/recmenuicons/icon_shift.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
icons/darkredNG/recmenuicons/info_active.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
icons/darkredNG/recmenuicons/info_inactive.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
icons/darkredNG/recmenuicons/no.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
icons/darkredNG/recmenuicons/record_active.png
Normal file
After Width: | Height: | Size: 6.6 KiB |
BIN
icons/darkredNG/recmenuicons/record_inactive.png
Normal file
After Width: | Height: | Size: 3.8 KiB |
BIN
icons/darkredNG/recmenuicons/search_active.png
Normal file
After Width: | Height: | Size: 3.3 KiB |
BIN
icons/darkredNG/recmenuicons/search_inactive.png
Normal file
After Width: | Height: | Size: 2.9 KiB |
BIN
icons/darkredNG/recmenuicons/yes.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 428 B |
Before Width: | Height: | Size: 438 B |
Before Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 52 KiB |
Before Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 8.8 KiB |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 6.9 KiB |
Before Width: | Height: | Size: 5.8 KiB |
Before Width: | Height: | Size: 3.2 KiB |
BIN
icons/default/recmenuicons/arrow_left.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
icons/default/recmenuicons/arrow_right.png
Normal file
After Width: | Height: | Size: 936 B |
BIN
icons/default/recmenuicons/delete_active.png
Normal file
After Width: | Height: | Size: 768 B |
BIN
icons/default/recmenuicons/delete_inactive.png
Normal file
After Width: | Height: | Size: 886 B |
BIN
icons/default/recmenuicons/edit_active.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
icons/default/recmenuicons/edit_inactive.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
icons/default/recmenuicons/icon_backspace.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
icons/default/recmenuicons/icon_del_ins.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
icons/default/recmenuicons/icon_shift.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
icons/default/recmenuicons/info_active.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
icons/default/recmenuicons/info_inactive.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
icons/default/recmenuicons/no.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
icons/default/recmenuicons/record_active.png
Normal file
After Width: | Height: | Size: 6.6 KiB |
BIN
icons/default/recmenuicons/record_inactive.png
Normal file
After Width: | Height: | Size: 3.8 KiB |
BIN
icons/default/recmenuicons/search_active.png
Normal file
After Width: | Height: | Size: 3.3 KiB |
BIN
icons/default/recmenuicons/search_inactive.png
Normal file
After Width: | Height: | Size: 2.9 KiB |
BIN
icons/default/recmenuicons/yes.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 52 KiB |
Before Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 8.8 KiB |
BIN
icons/no.png
Before Width: | Height: | Size: 51 KiB |
BIN
icons/recmenuicons/arrow_left.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
icons/recmenuicons/arrow_right.png
Normal file
After Width: | Height: | Size: 936 B |
BIN
icons/recmenuicons/delete_active.png
Normal file
After Width: | Height: | Size: 768 B |
BIN
icons/recmenuicons/delete_inactive.png
Normal file
After Width: | Height: | Size: 886 B |
BIN
icons/recmenuicons/edit_active.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
icons/recmenuicons/edit_inactive.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
icons/recmenuicons/icon_backspace.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
icons/recmenuicons/icon_del_ins.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
icons/recmenuicons/icon_shift.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
icons/recmenuicons/info_active.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
icons/recmenuicons/info_inactive.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
icons/recmenuicons/no.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
icons/recmenuicons/record_active.png
Normal file
After Width: | Height: | Size: 6.6 KiB |
BIN
icons/recmenuicons/record_inactive.png
Normal file
After Width: | Height: | Size: 3.8 KiB |
BIN
icons/recmenuicons/search_active.png
Normal file
After Width: | Height: | Size: 3.3 KiB |
BIN
icons/recmenuicons/search_inactive.png
Normal file
After Width: | Height: | Size: 2.9 KiB |
BIN
icons/recmenuicons/yes.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 6.9 KiB |
Before Width: | Height: | Size: 5.8 KiB |
BIN
icons/yes.png
Before Width: | Height: | Size: 35 KiB |
33
imagecache.c
@ -2,10 +2,10 @@
|
|||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <vdr/channels.h>
|
#include <vdr/channels.h>
|
||||||
#include "imagecache.h"
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "imagescaler.h"
|
#include "imagescaler.h"
|
||||||
#include "tools.h"
|
#include "tools.h"
|
||||||
|
#include "imagecache.h"
|
||||||
|
|
||||||
cImageCache::cImageCache() : cImageMagickWrapper() {
|
cImageCache::cImageCache() : cImageMagickWrapper() {
|
||||||
tempStaticLogo = NULL;
|
tempStaticLogo = NULL;
|
||||||
@ -372,6 +372,27 @@ cImage *cImageCache::GetLogo(const cChannel *channel) {
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cImage *cImageCache::GetIcon(std::string name, int width, int height) {
|
||||||
|
std::stringstream iconName;
|
||||||
|
iconName << name << width << "x" << height;
|
||||||
|
std::map<std::string, cImage*>::iterator hit = iconCache.find(iconName.str());
|
||||||
|
if (hit != iconCache.end()) {
|
||||||
|
return (cImage*)hit->second;
|
||||||
|
} else {
|
||||||
|
std::stringstream iconPath;
|
||||||
|
iconPath << "recmenuicons/" << name;
|
||||||
|
bool success = LoadIcon(iconPath.str());
|
||||||
|
if (success) {
|
||||||
|
cImage *image = CreateImage(width, height);
|
||||||
|
iconCache.insert(std::pair<std::string, cImage*>(iconName.str(), image));
|
||||||
|
hit = iconCache.find(iconName.str());
|
||||||
|
if (hit != iconCache.end()) {
|
||||||
|
return (cImage*)hit->second;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
void cImageCache::InsertIntoOsdElementCache(eOsdElementType type, int width, int height) {
|
void cImageCache::InsertIntoOsdElementCache(eOsdElementType type, int width, int height) {
|
||||||
cImage *image = CreateImage(width, height, false);
|
cImage *image = CreateImage(width, height, false);
|
||||||
@ -578,7 +599,7 @@ std::string cImageCache::GetCacheSize(eCacheType type) {
|
|||||||
sizeByte += img->Width() * img->Height() * sizeof(tColor);
|
sizeByte += img->Width() * img->Height() * sizeof(tColor);
|
||||||
}
|
}
|
||||||
numImages = osdElementCache.size();
|
numImages = osdElementCache.size();
|
||||||
} else if ((type == ctGrid) || (type == ctLogo) || (type == ctChannelGroup)) {
|
} else if ((type == ctGrid) || (type == ctLogo) || (type == ctChannelGroup) || (type == ctIcon)) {
|
||||||
std::map<std::string, cImage*> *cache;
|
std::map<std::string, cImage*> *cache;
|
||||||
if (type == ctGrid)
|
if (type == ctGrid)
|
||||||
cache = &gridCache;
|
cache = &gridCache;
|
||||||
@ -586,6 +607,8 @@ std::string cImageCache::GetCacheSize(eCacheType type) {
|
|||||||
cache = &logoCache;
|
cache = &logoCache;
|
||||||
else if (type == ctChannelGroup)
|
else if (type == ctChannelGroup)
|
||||||
cache = &groupsCache;
|
cache = &groupsCache;
|
||||||
|
else if (type == ctIcon)
|
||||||
|
cache = &iconCache;
|
||||||
|
|
||||||
for(std::map<std::string, cImage*>::const_iterator it = cache->begin(); it != cache->end(); it++) {
|
for(std::map<std::string, cImage*>::const_iterator it = cache->begin(); it != cache->end(); it++) {
|
||||||
cImage *img = (cImage*)it->second;
|
cImage *img = (cImage*)it->second;
|
||||||
@ -623,6 +646,12 @@ void cImageCache::Clear(void) {
|
|||||||
}
|
}
|
||||||
logoCache.clear();
|
logoCache.clear();
|
||||||
|
|
||||||
|
for(std::map<std::string, cImage*>::const_iterator it = iconCache.begin(); it != iconCache.end(); it++) {
|
||||||
|
cImage *img = (cImage*)it->second;
|
||||||
|
delete img;
|
||||||
|
}
|
||||||
|
iconCache.clear();
|
||||||
|
|
||||||
if (tempStaticLogo)
|
if (tempStaticLogo)
|
||||||
delete tempStaticLogo;
|
delete tempStaticLogo;
|
||||||
if (groupsHead)
|
if (groupsHead)
|
||||||
|
@ -12,6 +12,7 @@ enum eCacheType {
|
|||||||
ctGrid,
|
ctGrid,
|
||||||
ctLogo,
|
ctLogo,
|
||||||
ctChannelGroup,
|
ctChannelGroup,
|
||||||
|
ctIcon,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum eOsdElementType {
|
enum eOsdElementType {
|
||||||
@ -41,6 +42,7 @@ public:
|
|||||||
cImage *GetGrid(int width, int height, bool active);
|
cImage *GetGrid(int width, int height, bool active);
|
||||||
cImage *GetChannelGroup(int width, int height);
|
cImage *GetChannelGroup(int width, int height);
|
||||||
cImage *GetLogo(const cChannel *channel);
|
cImage *GetLogo(const cChannel *channel);
|
||||||
|
cImage *GetIcon(std::string name, int width, int height);
|
||||||
std::string GetCacheSize(eCacheType type);
|
std::string GetCacheSize(eCacheType type);
|
||||||
void Clear(void);
|
void Clear(void);
|
||||||
private:
|
private:
|
||||||
@ -68,6 +70,7 @@ private:
|
|||||||
std::map<std::string, cImage*> gridCache;
|
std::map<std::string, cImage*> gridCache;
|
||||||
std::map<std::string, cImage*> groupsCache;
|
std::map<std::string, cImage*> groupsCache;
|
||||||
std::map<std::string, cImage*> logoCache;
|
std::map<std::string, cImage*> logoCache;
|
||||||
|
std::map<std::string, cImage*> iconCache;
|
||||||
void CreateOsdIconCache(void);
|
void CreateOsdIconCache(void);
|
||||||
void PrepareGridIconCache(void);
|
void PrepareGridIconCache(void);
|
||||||
void CreateGridIconCache(void);
|
void CreateGridIconCache(void);
|
||||||
|
@ -77,8 +77,13 @@ bool cImageLoader::LoadPoster(const char *poster, int width, int height) {
|
|||||||
bool cImageLoader::LoadIcon(const char *cIcon, int size) {
|
bool cImageLoader::LoadIcon(const char *cIcon, int size) {
|
||||||
if (size==0)
|
if (size==0)
|
||||||
return false;
|
return false;
|
||||||
|
cString iconPathTheme = cString::sprintf("%s%s/recmenuicons/", *tvguideConfig.iconPath, *tvguideConfig.themeName);
|
||||||
bool success = false;
|
bool success = false;
|
||||||
success = LoadImage(cIcon, *tvguideConfig.iconPath, "png");
|
success = LoadImage(cIcon, *iconPathTheme, "png");
|
||||||
|
if (!success) {
|
||||||
|
cString iconPathdefault = cString::sprintf("%s/recmenuicons/", *tvguideConfig.iconPath);
|
||||||
|
success = LoadImage(cIcon, *iconPathdefault, "png");
|
||||||
|
}
|
||||||
if (!success)
|
if (!success)
|
||||||
return false;
|
return false;
|
||||||
buffer.sample(Geometry(size, size));
|
buffer.sample(Geometry(size, size));
|
||||||
|
26
po/ca_ES.po
@ -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: 2013-12-24 11:13+0100\n"
|
"POT-Creation-Date: 2013-12-29 17:53+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"
|
||||||
@ -159,6 +159,27 @@ msgstr "No s'han trobat conflictes"
|
|||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Tanca"
|
msgstr "Tanca"
|
||||||
|
|
||||||
|
msgid "reruns for"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "rerun for"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "found"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Ignore reruns"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "No reruns found for Event"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Timer for"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "replaced by rerun"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Timer Active"
|
msgid "Timer Active"
|
||||||
msgstr "Temporitzador actiu"
|
msgstr "Temporitzador actiu"
|
||||||
|
|
||||||
@ -644,3 +665,6 @@ msgstr ""
|
|||||||
|
|
||||||
msgid "Channel Groups Cache"
|
msgid "Channel Groups Cache"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Recording Menus Icon Cache"
|
||||||
|
msgstr ""
|
||||||
|
26
po/de_DE.po
@ -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: 2013-12-24 11:13+0100\n"
|
"POT-Creation-Date: 2013-12-29 17:53+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"
|
||||||
@ -156,6 +156,27 @@ msgstr "Keine Timerkonflikte gefunden"
|
|||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Schließen"
|
msgstr "Schließen"
|
||||||
|
|
||||||
|
msgid "reruns for"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "rerun for"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "found"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Ignore reruns"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "No reruns found for Event"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Timer for"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "replaced by rerun"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Timer Active"
|
msgid "Timer Active"
|
||||||
msgstr "Timer aktiv"
|
msgstr "Timer aktiv"
|
||||||
|
|
||||||
@ -641,3 +662,6 @@ msgstr "EPG Grid Cache"
|
|||||||
|
|
||||||
msgid "Channel Groups Cache"
|
msgid "Channel Groups Cache"
|
||||||
msgstr "Kanalgruppen Cache"
|
msgstr "Kanalgruppen Cache"
|
||||||
|
|
||||||
|
msgid "Recording Menus Icon Cache"
|
||||||
|
msgstr ""
|
||||||
|
26
po/ru_RU.po
@ -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: 2013-12-24 11:13+0100\n"
|
"POT-Creation-Date: 2013-12-29 17:53+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"
|
||||||
@ -156,6 +156,27 @@ msgstr "Таймер-конфликты не найдены"
|
|||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Закрыть"
|
msgstr "Закрыть"
|
||||||
|
|
||||||
|
msgid "reruns for"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "rerun for"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "found"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Ignore reruns"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "No reruns found for Event"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Timer for"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "replaced by rerun"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Timer Active"
|
msgid "Timer Active"
|
||||||
msgstr "Таймер активен"
|
msgstr "Таймер активен"
|
||||||
|
|
||||||
@ -641,3 +662,6 @@ msgstr ""
|
|||||||
|
|
||||||
msgid "Channel Groups Cache"
|
msgid "Channel Groups Cache"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Recording Menus Icon Cache"
|
||||||
|
msgstr ""
|
||||||
|
26
po/sk_SK.po
@ -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: 2013-12-24 11:13+0100\n"
|
"POT-Creation-Date: 2013-12-29 17:53+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"
|
||||||
@ -156,6 +156,27 @@ msgstr "Nena
|
|||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Zavrie»"
|
msgstr "Zavrie»"
|
||||||
|
|
||||||
|
msgid "reruns for"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "rerun for"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "found"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Ignore reruns"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "No reruns found for Event"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Timer for"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "replaced by rerun"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Timer Active"
|
msgid "Timer Active"
|
||||||
msgstr "Plán aktívny"
|
msgstr "Plán aktívny"
|
||||||
|
|
||||||
@ -641,3 +662,6 @@ msgstr ""
|
|||||||
|
|
||||||
msgid "Channel Groups Cache"
|
msgid "Channel Groups Cache"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Recording Menus Icon Cache"
|
||||||
|
msgstr ""
|
||||||
|
148
recmanager.c
@ -9,21 +9,13 @@
|
|||||||
#include "services/tvscraper.h"
|
#include "services/tvscraper.h"
|
||||||
#include "tools.h"
|
#include "tools.h"
|
||||||
#include "switchtimer.h"
|
#include "switchtimer.h"
|
||||||
|
#include "timerconflict.h"
|
||||||
#include "recmanager.h"
|
#include "recmanager.h"
|
||||||
|
|
||||||
static int CompareRecording(const void *p1, const void *p2) {
|
static int CompareRecording(const void *p1, const void *p2) {
|
||||||
return (int)((*(cRecording **)p1)->Start() - (*(cRecording **)p2)->Start());
|
return (int)((*(cRecording **)p1)->Start() - (*(cRecording **)p2)->Start());
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TVGuideTimerConflict::timerInvolved(int involvedID) {
|
|
||||||
int numConflicts = timerIDs.size();
|
|
||||||
for (int i=0; i<numConflicts; i++) {
|
|
||||||
if (timerIDs[i] == involvedID)
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
cRecManager::cRecManager(void) {
|
cRecManager::cRecManager(void) {
|
||||||
epgSearchPlugin = NULL;
|
epgSearchPlugin = NULL;
|
||||||
epgSearchAvailable = false;
|
epgSearchAvailable = false;
|
||||||
@ -225,100 +217,23 @@ bool cRecManager::IsRecorded(const cEvent *event) {
|
|||||||
return timer->Recording();
|
return timer->Recording();
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<TVGuideTimerConflict> cRecManager::CheckTimerConflict(void) {
|
cTVGuideTimerConflicts *cRecManager::CheckTimerConflict(void) {
|
||||||
/* TIMERCONFLICT FORMAT:
|
cTVGuideTimerConflicts *conflictList = new cTVGuideTimerConflicts();
|
||||||
The result list looks like this for example when we have 2 timer conflicts at one time:
|
|
||||||
1190232780:152|30|50#152#45:45|10|50#152#45
|
|
||||||
'1190232780' is the time of the conflict in seconds since 1970-01-01.
|
|
||||||
It's followed by list of timers that have a conflict at this time:
|
|
||||||
'152|30|50#1 int editTimer(cTimer *timer, bool active, int prio, int start, int stop);
|
|
||||||
52#45' is the description of the first conflicting timer. Here:
|
|
||||||
'152' is VDR's timer id of this timer as returned from VDR's LSTT command
|
|
||||||
'30' is the percentage of recording that would be done (0...100)
|
|
||||||
'50#152#45' is the list of concurrent timers at this conflict
|
|
||||||
'45|10|50#152#45' describes the next conflict
|
|
||||||
*/
|
|
||||||
std::vector<TVGuideTimerConflict> results;
|
|
||||||
if (!epgSearchAvailable)
|
if (!epgSearchAvailable)
|
||||||
return results;
|
return conflictList;
|
||||||
Epgsearch_services_v1_1 *epgSearch = new Epgsearch_services_v1_1;
|
Epgsearch_services_v1_1 *epgSearch = new Epgsearch_services_v1_1;
|
||||||
if (epgSearchPlugin->Service("Epgsearch-services-v1.1", epgSearch)) {
|
if (epgSearchPlugin->Service("Epgsearch-services-v1.1", epgSearch)) {
|
||||||
std::list<std::string> conflicts = epgSearch->handler->TimerConflictList();
|
std::list<std::string> conflicts = epgSearch->handler->TimerConflictList();
|
||||||
int numConflicts = conflicts.size();
|
int numConflicts = conflicts.size();
|
||||||
if (numConflicts > 0) {
|
if (numConflicts == 0)
|
||||||
for (std::list<std::string>::iterator it=conflicts.begin(); it != conflicts.end(); ++it) {
|
return conflictList;
|
||||||
TVGuideTimerConflict sConflict;
|
for (std::list<std::string>::iterator it=conflicts.begin(); it != conflicts.end(); ++it) {
|
||||||
splitstring s(it->c_str());
|
conflictList->AddConflict(*it);
|
||||||
std::vector<std::string> flds = s.split(':');
|
|
||||||
if (flds.size() < 2)
|
|
||||||
continue;
|
|
||||||
sConflict.time = atoi(flds[0].c_str());
|
|
||||||
splitstring s2(flds[1].c_str());
|
|
||||||
std::vector<std::string> flds2 = s2.split('|');
|
|
||||||
if (flds2.size() < 3)
|
|
||||||
continue;
|
|
||||||
sConflict.timerID = atoi(flds2[0].c_str());
|
|
||||||
sConflict.percentPossible = atoi(flds2[1].c_str());
|
|
||||||
splitstring s3(flds2[2].c_str());
|
|
||||||
std::vector<std::string> flds3 = s3.split('#');
|
|
||||||
std::vector<int> timerIDs;
|
|
||||||
for (int k = 0; k < flds3.size(); k++) {
|
|
||||||
timerIDs.push_back(atoi(flds3[k].c_str()) - 1);
|
|
||||||
}
|
|
||||||
sConflict.timerIDs = timerIDs;
|
|
||||||
results.push_back(sConflict);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
delete epgSearch;
|
delete epgSearch;
|
||||||
|
conflictList->CalculateConflicts();
|
||||||
int numConflicts = results.size();
|
return conflictList;
|
||||||
time_t startTime = 0;
|
|
||||||
time_t endTime = 0;
|
|
||||||
for (int i=0; i < numConflicts; i++) {
|
|
||||||
cTimeInterval *unionSet = NULL;
|
|
||||||
int numTimers = results[i].timerIDs.size();
|
|
||||||
for (int j=0; j < numTimers; j++) {
|
|
||||||
const cTimer *timer = Timers.Get(results[i].timerIDs[j]);
|
|
||||||
if (timer) {
|
|
||||||
if (!unionSet) {
|
|
||||||
unionSet = new cTimeInterval(timer->StartTime(), timer->StopTime());
|
|
||||||
} else {
|
|
||||||
cTimeInterval *timerInterval = new cTimeInterval(timer->StartTime(), timer->StopTime());
|
|
||||||
cTimeInterval *newUnion = unionSet->Union(timerInterval);
|
|
||||||
delete unionSet;
|
|
||||||
delete timerInterval;
|
|
||||||
unionSet = newUnion;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
results[i].timeStart = unionSet->Start();
|
|
||||||
results[i].timeStop = unionSet->Stop();
|
|
||||||
delete unionSet;
|
|
||||||
|
|
||||||
cTimeInterval *intersect = NULL;
|
|
||||||
for (int j=0; j < numTimers; j++) {
|
|
||||||
const cTimer *timer = Timers.Get(results[i].timerIDs[j]);
|
|
||||||
if (timer) {
|
|
||||||
if (!intersect) {
|
|
||||||
intersect = new cTimeInterval(timer->StartTime(), timer->StopTime());
|
|
||||||
} else {
|
|
||||||
cTimeInterval *timerInterval = new cTimeInterval(timer->StartTime(), timer->StopTime());
|
|
||||||
cTimeInterval *newIntersect = intersect->Intersect(timerInterval);
|
|
||||||
if (newIntersect) {
|
|
||||||
delete intersect;
|
|
||||||
intersect = newIntersect;
|
|
||||||
}
|
|
||||||
delete timerInterval;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
results[i].overlapStart = intersect->Start();
|
|
||||||
results[i].overlapStop = intersect->Stop();
|
|
||||||
delete intersect;
|
|
||||||
}
|
|
||||||
|
|
||||||
return results;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cTimer *cRecManager::CreateSeriesTimer(cRecMenu *menu, std::string path) {
|
cTimer *cRecManager::CreateSeriesTimer(cRecMenu *menu, std::string path) {
|
||||||
@ -748,3 +663,46 @@ cRecording **cRecManager::SearchForRecordings(cString searchString, int &numResu
|
|||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const cEvent **cRecManager::LoadReruns(const cEvent *event, int &numResults) {
|
||||||
|
if (epgSearchAvailable && !isempty(event->Title())) {
|
||||||
|
Epgsearch_searchresults_v1_0 data;
|
||||||
|
std::string strQuery = event->Title();
|
||||||
|
if (tvguideConfig.useSubtitleRerun > 0) {
|
||||||
|
if (tvguideConfig.useSubtitleRerun == 2 || !isempty(event->ShortText()))
|
||||||
|
strQuery += "~";
|
||||||
|
if (!isempty(event->ShortText()))
|
||||||
|
strQuery += event->ShortText();
|
||||||
|
data.useSubTitle = true;
|
||||||
|
} else {
|
||||||
|
data.useSubTitle = false;
|
||||||
|
}
|
||||||
|
data.query = (char *)strQuery.c_str();
|
||||||
|
data.mode = 0;
|
||||||
|
data.channelNr = 0;
|
||||||
|
data.useTitle = true;
|
||||||
|
data.useDescription = false;
|
||||||
|
|
||||||
|
if (epgSearchPlugin->Service("Epgsearch-searchresults-v1.0", &data)) {
|
||||||
|
cList<Epgsearch_searchresults_v1_0::cServiceSearchResult>* list = data.pResultList;
|
||||||
|
if (!list)
|
||||||
|
return NULL;
|
||||||
|
const cEvent **searchResults = NULL;
|
||||||
|
int numElements = list->Count();
|
||||||
|
if (numElements > 0) {
|
||||||
|
searchResults = new const cEvent *[numElements];
|
||||||
|
int index = 0;
|
||||||
|
for (Epgsearch_searchresults_v1_0::cServiceSearchResult *r = list->First(); r; r = list->Next(r)) {
|
||||||
|
if ((event->ChannelID() == r->event->ChannelID()) && (event->StartTime() == r->event->StartTime()))
|
||||||
|
continue;
|
||||||
|
searchResults[index] = r->event;
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
delete list;
|
||||||
|
numResults = index;
|
||||||
|
return searchResults;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
17
recmanager.h
@ -6,19 +6,7 @@
|
|||||||
#include <vdr/plugin.h>
|
#include <vdr/plugin.h>
|
||||||
#include "detailview.h"
|
#include "detailview.h"
|
||||||
#include "recmenu.h"
|
#include "recmenu.h"
|
||||||
|
#include "timerconflict.h"
|
||||||
class TVGuideTimerConflict {
|
|
||||||
public:
|
|
||||||
time_t time;
|
|
||||||
time_t timeStart;
|
|
||||||
time_t timeStop;
|
|
||||||
time_t overlapStart;
|
|
||||||
time_t overlapStop;
|
|
||||||
int percentPossible;
|
|
||||||
int timerID;
|
|
||||||
std::vector<int> timerIDs;
|
|
||||||
bool timerInvolved(int involvedID);
|
|
||||||
};
|
|
||||||
|
|
||||||
struct TVGuideEPGSearchTemplate {
|
struct TVGuideEPGSearchTemplate {
|
||||||
public:
|
public:
|
||||||
@ -49,7 +37,7 @@ public:
|
|||||||
void DeleteRemoteTimer(const cEvent *event);
|
void DeleteRemoteTimer(const cEvent *event);
|
||||||
void SaveTimer(cTimer *timer, cRecMenu *menu);
|
void SaveTimer(cTimer *timer, cRecMenu *menu);
|
||||||
bool IsRecorded(const cEvent *event);
|
bool IsRecorded(const cEvent *event);
|
||||||
std::vector<TVGuideTimerConflict> CheckTimerConflict(void);
|
cTVGuideTimerConflicts *CheckTimerConflict(void);
|
||||||
cTimer *CreateSeriesTimer(cRecMenu *menu, std::string path);
|
cTimer *CreateSeriesTimer(cRecMenu *menu, std::string path);
|
||||||
std::string BuildEPGSearchString(cString searchString, cRecMenu *menu);
|
std::string BuildEPGSearchString(cString searchString, cRecMenu *menu);
|
||||||
std::string BuildEPGSearchString(cString searchString, std::string templValue);
|
std::string BuildEPGSearchString(cString searchString, std::string templValue);
|
||||||
@ -61,6 +49,7 @@ public:
|
|||||||
bool CreateSwitchTimer(const cEvent *event, cRecMenu *menu);
|
bool CreateSwitchTimer(const cEvent *event, cRecMenu *menu);
|
||||||
void DeleteSwitchTimer(const cEvent *event);
|
void DeleteSwitchTimer(const cEvent *event);
|
||||||
cRecording **SearchForRecordings(cString searchString, int &numResults);
|
cRecording **SearchForRecordings(cString searchString, int &numResults);
|
||||||
|
const cEvent **LoadReruns(const cEvent *event, int &numResults);
|
||||||
virtual ~cRecManager (void);
|
virtual ~cRecManager (void);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -340,6 +340,7 @@ void cRecMenu::Arrange(bool scroll) {
|
|||||||
if (!scroll) {
|
if (!scroll) {
|
||||||
header->SetGeometry(xElement, yElement, widthElement);
|
header->SetGeometry(xElement, yElement, widthElement);
|
||||||
header->SetPixmaps();
|
header->SetPixmaps();
|
||||||
|
header->setBackground();
|
||||||
}
|
}
|
||||||
yElement += header->GetHeight();
|
yElement += header->GetHeight();
|
||||||
}
|
}
|
||||||
@ -351,6 +352,7 @@ void cRecMenu::Arrange(bool scroll) {
|
|||||||
if (footer && !scroll) {
|
if (footer && !scroll) {
|
||||||
footer->SetGeometry(xElement, yElement, widthElement);
|
footer->SetGeometry(xElement, yElement, widthElement);
|
||||||
footer->SetPixmaps();
|
footer->SetPixmaps();
|
||||||
|
footer->setBackground();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
114
recmenuitem.c
@ -1,6 +1,7 @@
|
|||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <vdr/remote.h>
|
#include <vdr/remote.h>
|
||||||
#include "imageloader.h"
|
#include "imageloader.h"
|
||||||
|
#include "imagecache.h"
|
||||||
#include "tools.h"
|
#include "tools.h"
|
||||||
#include "recmenuitem.h"
|
#include "recmenuitem.h"
|
||||||
|
|
||||||
@ -253,6 +254,7 @@ void cRecMenuItemInfo::CalculateHeight(int textWidth) {
|
|||||||
|
|
||||||
void cRecMenuItemInfo::setBackground(void) {
|
void cRecMenuItemInfo::setBackground(void) {
|
||||||
pixmap->Fill(clrTransparent);
|
pixmap->Fill(clrTransparent);
|
||||||
|
cRecMenuItem::setBackground();
|
||||||
}
|
}
|
||||||
|
|
||||||
void cRecMenuItemInfo::Draw(void) {
|
void cRecMenuItemInfo::Draw(void) {
|
||||||
@ -411,14 +413,14 @@ void cRecMenuItemBool::Draw(void) {
|
|||||||
|
|
||||||
void cRecMenuItemBool::DrawValue(void) {
|
void cRecMenuItemBool::DrawValue(void) {
|
||||||
pixmapVal->Fill(clrTransparent);
|
pixmapVal->Fill(clrTransparent);
|
||||||
cString strIcon = yes?"yes":"no";
|
std::string strIcon = yes?"yes":"no";
|
||||||
int iconSize = height - 8;
|
int iconSize = height - 8;
|
||||||
int iconX = width - iconSize - 10;
|
int iconX = width - iconSize - 10;
|
||||||
int iconY = (height - iconSize) / 2;
|
int iconY = (height - iconSize) / 2;
|
||||||
cImageLoader imgLoader;
|
|
||||||
if (imgLoader.LoadIcon(strIcon, iconSize)) {
|
cImage *imgYesNo = imgCache.GetIcon(strIcon, iconSize, iconSize);
|
||||||
cImage icon = imgLoader.GetImage();
|
if (imgYesNo) {
|
||||||
pixmapVal->DrawImage(cPoint(iconX, iconY), icon);
|
pixmapVal->DrawImage(cPoint(iconX, iconY), *imgYesNo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -499,14 +501,14 @@ void cRecMenuItemSelect::DrawValue(void) {
|
|||||||
int iconLeftX = textX - iconSize;
|
int iconLeftX = textX - iconSize;
|
||||||
int iconRightX = width - iconSize;
|
int iconRightX = width - iconSize;
|
||||||
int iconY = (height - iconSize) / 2;
|
int iconY = (height - iconSize) / 2;
|
||||||
cImageLoader imgLoader;
|
|
||||||
if (imgLoader.LoadIcon("arrow_left", iconSize)) {
|
cImage *imgLeft = imgCache.GetIcon("arrow_left", iconSize, iconSize);
|
||||||
cImage icon = imgLoader.GetImage();
|
if (imgLeft) {
|
||||||
pixmapVal->DrawImage(cPoint(iconLeftX, iconY), icon);
|
pixmapVal->DrawImage(cPoint(iconLeftX, iconY), *imgLeft);
|
||||||
}
|
}
|
||||||
if (imgLoader.LoadIcon("arrow_right", iconSize)) {
|
cImage *imgRight = imgCache.GetIcon("arrow_right", iconSize, iconSize);
|
||||||
cImage icon = imgLoader.GetImage();
|
if (imgRight) {
|
||||||
pixmapVal->DrawImage(cPoint(iconRightX, iconY), icon);
|
pixmapVal->DrawImage(cPoint(iconRightX, iconY), *imgRight);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -671,8 +673,7 @@ void cRecMenuItemText::ActivateKeyboard(void) {
|
|||||||
bool draw = false;
|
bool draw = false;
|
||||||
bool drawIcon = false;
|
bool drawIcon = false;
|
||||||
cString strNum;
|
cString strNum;
|
||||||
cString strIcon;
|
std::string strIcon;
|
||||||
cImageLoader imgLoader;
|
|
||||||
if (num<10) {
|
if (num<10) {
|
||||||
strNum = *cString::sprintf("%d", num);
|
strNum = *cString::sprintf("%d", num);
|
||||||
draw = true;
|
draw = true;
|
||||||
@ -701,10 +702,10 @@ void cRecMenuItemText::ActivateKeyboard(void) {
|
|||||||
}
|
}
|
||||||
if (drawIcon) {
|
if (drawIcon) {
|
||||||
int iconSize = gridHeight - 10;
|
int iconSize = gridHeight - 10;
|
||||||
if (imgLoader.LoadIcon(strIcon, iconSize)) {
|
cImage *imgIcon = imgCache.GetIcon(strIcon, iconSize, iconSize);
|
||||||
cImage icon = imgLoader.GetImage();
|
if (imgIcon) {
|
||||||
int iconX = X + (gridWidth - iconSize) / 2;
|
int iconX = X + (gridWidth - iconSize) / 2;
|
||||||
pixmapKeyboardIcons->DrawImage(cPoint(iconX, Y + 5), icon);
|
pixmapKeyboardIcons->DrawImage(cPoint(iconX, Y + 5), *imgIcon);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
num++;
|
num++;
|
||||||
@ -1306,6 +1307,7 @@ cRecMenuItemTimer::cRecMenuItemTimer(const cTimer *timer,
|
|||||||
eRecMenuState action1,
|
eRecMenuState action1,
|
||||||
eRecMenuState action2,
|
eRecMenuState action2,
|
||||||
eRecMenuState action3,
|
eRecMenuState action3,
|
||||||
|
eRecMenuState action4,
|
||||||
time_t conflictStart,
|
time_t conflictStart,
|
||||||
time_t conflictStop,
|
time_t conflictStop,
|
||||||
time_t overlapStart,
|
time_t overlapStart,
|
||||||
@ -1316,6 +1318,7 @@ cRecMenuItemTimer::cRecMenuItemTimer(const cTimer *timer,
|
|||||||
this->action = action1;
|
this->action = action1;
|
||||||
this->action2 = action2;
|
this->action2 = action2;
|
||||||
this->action3 = action3;
|
this->action3 = action3;
|
||||||
|
this->action4 = action4;
|
||||||
iconActive = 0;
|
iconActive = 0;
|
||||||
this->conflictStart = conflictStart;
|
this->conflictStart = conflictStart;
|
||||||
this->conflictStop = conflictStop;
|
this->conflictStop = conflictStop;
|
||||||
@ -1382,48 +1385,57 @@ void cRecMenuItemTimer::Draw(void) {
|
|||||||
int textHeightLine2 = height/2 - 5 + (height/4 - fontSmall->Height()) / 2;
|
int textHeightLine2 = height/2 - 5 + (height/4 - fontSmall->Height()) / 2;
|
||||||
int textHeightLine3 = 3*height/4 - 5 + (height/4 - fontSmall->Height()) / 2;
|
int textHeightLine3 = 3*height/4 - 5 + (height/4 - fontSmall->Height()) / 2;
|
||||||
const cEvent *event = timer->Event();
|
const cEvent *event = timer->Event();
|
||||||
cString timerTitle("");
|
std::string timerTitle = "";
|
||||||
if (event)
|
if (event) {
|
||||||
timerTitle = event->Title();
|
timerTitle = event->Title();
|
||||||
|
timerTitle = CutText(timerTitle, (70 * width / 100) - textX, font);
|
||||||
|
}
|
||||||
cString timeStart = DayDateTime(timer->StartTime());
|
cString timeStart = DayDateTime(timer->StartTime());
|
||||||
cString timeEnd = TimeString(timer->StopTime());
|
cString timeEnd = TimeString(timer->StopTime());
|
||||||
cString timerTime = cString::sprintf("%s - %s", *timeStart, *timeEnd);
|
cString timerTime = cString::sprintf("%s - %s", *timeStart, *timeEnd);
|
||||||
cString channelInfo = cString::sprintf("%s, %s %d", *channelName, tr("Transp."), channelTransponder);
|
cString channelInfo = cString::sprintf("%s, %s %d", *channelName, tr("Transp."), channelTransponder);
|
||||||
pixmap->DrawText(cPoint(textX, textHeightLine1), *timerTitle, theme.Color(clrFont), colorTextBack, font);
|
pixmapIcons->DrawText(cPoint(textX, textHeightLine1), timerTitle.c_str(), colorText, colorTextBack, font);
|
||||||
pixmap->DrawText(cPoint(textX, textHeightLine2), *timerTime, theme.Color(clrFont), colorTextBack, fontSmall);
|
pixmapIcons->DrawText(cPoint(textX, textHeightLine2), *timerTime, colorText, colorTextBack, fontSmall);
|
||||||
pixmap->DrawText(cPoint(textX, textHeightLine3), *channelInfo, theme.Color(clrFont), colorTextBack, fontSmall);
|
pixmapIcons->DrawText(cPoint(textX, textHeightLine3), *channelInfo, colorText, colorTextBack, fontSmall);
|
||||||
|
|
||||||
DrawTimerConflict();
|
DrawTimerConflict();
|
||||||
}
|
}
|
||||||
|
|
||||||
int cRecMenuItemTimer::DrawIcons(void) {
|
int cRecMenuItemTimer::DrawIcons(void) {
|
||||||
int iconsX = 10;
|
int iconsX = 10;
|
||||||
int iconSize = 64;
|
int iconSize = height/2;
|
||||||
int iconY = (height - iconSize) / 2;
|
int iconY = (height - iconSize) / 2;
|
||||||
cString iconInfo, iconDelete, iconEdit;
|
std::string iconInfo, iconDelete, iconEdit, iconSearch;
|
||||||
if (active) {
|
if (active) {
|
||||||
iconInfo = (iconActive==0)?"info_active":"info_inactive";
|
iconInfo = (iconActive==0)?"info_active":"info_inactive";
|
||||||
iconDelete = (iconActive==1)?"delete_active":"delete_inactive";
|
iconDelete = (iconActive==1)?"delete_active":"delete_inactive";
|
||||||
iconEdit = (iconActive==2)?"edit_active":"edit_inactive";
|
iconEdit = (iconActive==2)?"edit_active":"edit_inactive";
|
||||||
|
iconSearch = (iconActive==3)?"search_active":"search_inactive";
|
||||||
} else {
|
} else {
|
||||||
iconInfo = "info_inactive";
|
iconInfo = "info_inactive";
|
||||||
iconDelete = "delete_inactive";
|
iconDelete = "delete_inactive";
|
||||||
iconEdit = "edit_inactive";
|
iconEdit = "edit_inactive";
|
||||||
|
iconSearch = "search_inactive";
|
||||||
}
|
}
|
||||||
cImageLoader imgLoader;
|
|
||||||
if (imgLoader.LoadIcon(iconInfo, iconSize)) {
|
cImage *imgInfo = imgCache.GetIcon(iconInfo, iconSize, iconSize);
|
||||||
cImage icon = imgLoader.GetImage();
|
if (imgInfo) {
|
||||||
pixmapIcons->DrawImage(cPoint(iconsX, iconY), icon);
|
pixmapIcons->DrawImage(cPoint(iconsX, iconY), *imgInfo);
|
||||||
iconsX += iconSize + 5;
|
iconsX += iconSize + 5;
|
||||||
}
|
}
|
||||||
if (imgLoader.LoadIcon(iconDelete, iconSize)) {
|
cImage *imgDelete = imgCache.GetIcon(iconDelete, iconSize, iconSize);
|
||||||
cImage icon = imgLoader.GetImage();
|
if (imgDelete) {
|
||||||
pixmapIcons->DrawImage(cPoint(iconsX, iconY), icon);
|
pixmapIcons->DrawImage(cPoint(iconsX, iconY), *imgDelete);
|
||||||
iconsX += iconSize + 5;
|
iconsX += iconSize + 5;
|
||||||
}
|
}
|
||||||
if (imgLoader.LoadIcon(iconEdit, iconSize)) {
|
cImage *imgEdit = imgCache.GetIcon(iconEdit, iconSize, iconSize);
|
||||||
cImage icon = imgLoader.GetImage();
|
if (imgEdit) {
|
||||||
pixmapIcons->DrawImage(cPoint(iconsX, iconY), icon);
|
pixmapIcons->DrawImage(cPoint(iconsX, iconY), *imgEdit);
|
||||||
|
iconsX += iconSize + 5;
|
||||||
|
}
|
||||||
|
cImage *imgSearch = imgCache.GetIcon(iconSearch, iconSize, iconSize);
|
||||||
|
if (imgSearch) {
|
||||||
|
pixmapIcons->DrawImage(cPoint(iconsX, iconY), *imgSearch);
|
||||||
iconsX += iconSize + 5;
|
iconsX += iconSize + 5;
|
||||||
}
|
}
|
||||||
return iconsX;
|
return iconsX;
|
||||||
@ -1461,7 +1473,7 @@ eRecMenuState cRecMenuItemTimer::ProcessKey(eKeys Key) {
|
|||||||
return rmsNotConsumed;
|
return rmsNotConsumed;
|
||||||
break;
|
break;
|
||||||
case kRight:
|
case kRight:
|
||||||
if (iconActive < 2) {
|
if (iconActive < 3) {
|
||||||
iconActive++;
|
iconActive++;
|
||||||
DrawIcons();
|
DrawIcons();
|
||||||
return rmsConsumed;
|
return rmsConsumed;
|
||||||
@ -1475,6 +1487,8 @@ eRecMenuState cRecMenuItemTimer::ProcessKey(eKeys Key) {
|
|||||||
return action2;
|
return action2;
|
||||||
else if (iconActive == 2)
|
else if (iconActive == 2)
|
||||||
return action3;
|
return action3;
|
||||||
|
else if (iconActive == 3)
|
||||||
|
return action4;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@ -1521,6 +1535,7 @@ void cRecMenuItemTimerConflictHeader::Show(void) {
|
|||||||
|
|
||||||
void cRecMenuItemTimerConflictHeader::setBackground(void) {
|
void cRecMenuItemTimerConflictHeader::setBackground(void) {
|
||||||
pixmap->Fill(clrTransparent);
|
pixmap->Fill(clrTransparent);
|
||||||
|
cRecMenuItem::setBackground();
|
||||||
}
|
}
|
||||||
|
|
||||||
void cRecMenuItemTimerConflictHeader::Draw(void) {
|
void cRecMenuItemTimerConflictHeader::Draw(void) {
|
||||||
@ -1550,10 +1565,10 @@ void cRecMenuItemTimerConflictHeader::Draw(void) {
|
|||||||
int xConflStop = width - fontSmall->Width(*strConflStop) - 2;
|
int xConflStop = width - fontSmall->Width(*strConflStop) - 2;
|
||||||
int xOverlapStart = xOverlap - fontSmall->Width(*strOverlapStart) - 2;
|
int xOverlapStart = xOverlap - fontSmall->Width(*strOverlapStart) - 2;
|
||||||
int xOverlapStop = xOverlap + widthOverlap + 2;
|
int xOverlapStop = xOverlap + widthOverlap + 2;
|
||||||
pixmap->DrawText(cPoint(xConflStart, y1), *strConflStart, theme.Color(clrRecMenuTimerConflictBar), colorTextBack, fontSmall);
|
pixmap->DrawText(cPoint(xConflStart, y1), *strConflStart, theme.Color(clrRecMenuTimerConflictBar), theme.Color(clrRecMenuTimerConflictBackground), fontSmall);
|
||||||
pixmap->DrawText(cPoint(xConflStop, y1), *strConflStop, theme.Color(clrRecMenuTimerConflictBar), colorTextBack, fontSmall);
|
pixmap->DrawText(cPoint(xConflStop, y1), *strConflStop, theme.Color(clrRecMenuTimerConflictBar), theme.Color(clrRecMenuTimerConflictBackground), fontSmall);
|
||||||
pixmap->DrawText(cPoint(xOverlapStart, y2), *strOverlapStart, theme.Color(clrRecMenuTimerConflictOverlap), colorTextBack, fontSmall);
|
pixmap->DrawText(cPoint(xOverlapStart, y2), *strOverlapStart, theme.Color(clrRecMenuTimerConflictOverlap), theme.Color(clrRecMenuTimerConflictBackground), fontSmall);
|
||||||
pixmap->DrawText(cPoint(xOverlapStop, y2), *strOverlapStop, theme.Color(clrRecMenuTimerConflictOverlap), colorTextBack, fontSmall);
|
pixmap->DrawText(cPoint(xOverlapStop, y2), *strOverlapStop, theme.Color(clrRecMenuTimerConflictOverlap), theme.Color(clrRecMenuTimerConflictBackground), fontSmall);
|
||||||
}
|
}
|
||||||
|
|
||||||
// --- cRecMenuItemEvent -------------------------------------------------------
|
// --- cRecMenuItemEvent -------------------------------------------------------
|
||||||
@ -1631,9 +1646,9 @@ void cRecMenuItemEvent::Draw(void) {
|
|||||||
int cRecMenuItemEvent::DrawIcons(void) {
|
int cRecMenuItemEvent::DrawIcons(void) {
|
||||||
pixmapIcons->Fill(clrTransparent);
|
pixmapIcons->Fill(clrTransparent);
|
||||||
int iconsX = 10;
|
int iconsX = 10;
|
||||||
int iconSize = 64;
|
int iconSize = height / 2;
|
||||||
int iconY = (height - iconSize) / 2;
|
int iconY = (height - iconSize) / 2;
|
||||||
cString iconInfo, iconRecord;
|
std::string iconInfo, iconRecord;
|
||||||
if (active) {
|
if (active) {
|
||||||
iconInfo = (iconActive==0)?"info_active":"info_inactive";
|
iconInfo = (iconActive==0)?"info_active":"info_inactive";
|
||||||
if (action2 != rmsDisabled)
|
if (action2 != rmsDisabled)
|
||||||
@ -1643,16 +1658,17 @@ int cRecMenuItemEvent::DrawIcons(void) {
|
|||||||
if (action2 != rmsDisabled)
|
if (action2 != rmsDisabled)
|
||||||
iconRecord = "record_inactive";
|
iconRecord = "record_inactive";
|
||||||
}
|
}
|
||||||
cImageLoader imgLoader;
|
cImage *imgInfo = imgCache.GetIcon(iconInfo, iconSize, iconSize);
|
||||||
if (imgLoader.LoadIcon(iconInfo, iconSize)) {
|
if (imgInfo) {
|
||||||
cImage icon = imgLoader.GetImage();
|
pixmapIcons->DrawImage(cPoint(iconsX, iconY), *imgInfo);
|
||||||
pixmapIcons->DrawImage(cPoint(iconsX, iconY), icon);
|
|
||||||
iconsX += iconSize + 5;
|
iconsX += iconSize + 5;
|
||||||
}
|
}
|
||||||
if ((action2 != rmsDisabled) && imgLoader.LoadIcon(iconRecord, iconSize)) {
|
if (action2 != rmsDisabled) {
|
||||||
cImage icon = imgLoader.GetImage();
|
cImage *imgRec = imgCache.GetIcon(iconRecord, iconSize, iconSize);
|
||||||
pixmapIcons->DrawImage(cPoint(iconsX, iconY), icon);
|
if (imgRec) {
|
||||||
iconsX += iconSize + 5;
|
pixmapIcons->DrawImage(cPoint(iconsX, iconY), *imgRec);
|
||||||
|
iconsX += iconSize + 5;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return iconsX;
|
return iconsX;
|
||||||
}
|
}
|
||||||
|
@ -18,6 +18,7 @@ enum eRecMenuState {
|
|||||||
rmsIgnoreTimerConflict,
|
rmsIgnoreTimerConflict,
|
||||||
rmsDeleteTimerConflictMenu,
|
rmsDeleteTimerConflictMenu,
|
||||||
rmsEditTimerConflictMenu,
|
rmsEditTimerConflictMenu,
|
||||||
|
rmsSearchRerunsTimerConflictMenu,
|
||||||
rmsSaveTimerConflictMenu,
|
rmsSaveTimerConflictMenu,
|
||||||
rmsTimerConflictShowInfo,
|
rmsTimerConflictShowInfo,
|
||||||
rmsDeleteTimer,
|
rmsDeleteTimer,
|
||||||
@ -51,6 +52,8 @@ enum eRecMenuState {
|
|||||||
rmsRecordingSearchResult,
|
rmsRecordingSearchResult,
|
||||||
rmsTimerConflict,
|
rmsTimerConflict,
|
||||||
rmsTimerConflicts,
|
rmsTimerConflicts,
|
||||||
|
rmsTimerConflictIgnoreReruns,
|
||||||
|
rmsTimerConflictRecordRerun,
|
||||||
rmsDisabled,
|
rmsDisabled,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -331,6 +334,7 @@ private:
|
|||||||
const cTimer *timer;
|
const cTimer *timer;
|
||||||
eRecMenuState action2;
|
eRecMenuState action2;
|
||||||
eRecMenuState action3;
|
eRecMenuState action3;
|
||||||
|
eRecMenuState action4;
|
||||||
int iconActive;
|
int iconActive;
|
||||||
cPixmap *pixmapIcons;
|
cPixmap *pixmapIcons;
|
||||||
cPixmap *pixmapStatus;
|
cPixmap *pixmapStatus;
|
||||||
@ -345,6 +349,7 @@ public:
|
|||||||
eRecMenuState action1,
|
eRecMenuState action1,
|
||||||
eRecMenuState action2,
|
eRecMenuState action2,
|
||||||
eRecMenuState action3,
|
eRecMenuState action3,
|
||||||
|
eRecMenuState action4,
|
||||||
time_t conflictStart,
|
time_t conflictStart,
|
||||||
time_t conflictStop,
|
time_t conflictStop,
|
||||||
time_t overlapStart,
|
time_t overlapStart,
|
||||||
|
133
recmenumanager.c
@ -1,6 +1,7 @@
|
|||||||
#include "recmenu.h"
|
#include "recmenu.h"
|
||||||
#include "recmenus.h"
|
#include "recmenus.h"
|
||||||
#include "switchtimer.h"
|
#include "switchtimer.h"
|
||||||
|
#include "timerconflict.h"
|
||||||
#include "recmenumanager.h"
|
#include "recmenumanager.h"
|
||||||
|
|
||||||
cRecMenuManager::cRecMenuManager(void) {
|
cRecMenuManager::cRecMenuManager(void) {
|
||||||
@ -11,10 +12,11 @@ cRecMenuManager::cRecMenuManager(void) {
|
|||||||
recManager->SetEPGSearchPlugin();
|
recManager->SetEPGSearchPlugin();
|
||||||
instantRecord = false;
|
instantRecord = false;
|
||||||
folderChoosen = false;
|
folderChoosen = false;
|
||||||
currentConflict = -1;
|
timerConflicts = NULL;
|
||||||
templateID = -1;
|
templateID = -1;
|
||||||
timer = NULL;
|
timer = NULL;
|
||||||
recFolder = "";
|
recFolderSeriesTimer = "";
|
||||||
|
recFolderInstantTimer = "";
|
||||||
searchWithOptions = false;
|
searchWithOptions = false;
|
||||||
detailViewActive = false;
|
detailViewActive = false;
|
||||||
}
|
}
|
||||||
@ -25,6 +27,10 @@ cRecMenuManager::~cRecMenuManager(void) {
|
|||||||
delete activeMenu;
|
delete activeMenu;
|
||||||
activeMenu = NULL;
|
activeMenu = NULL;
|
||||||
}
|
}
|
||||||
|
if (timerConflicts) {
|
||||||
|
delete timerConflicts;
|
||||||
|
timerConflicts = NULL;
|
||||||
|
}
|
||||||
delete recManager;
|
delete recManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -33,10 +39,11 @@ void cRecMenuManager::Start(const cEvent *event) {
|
|||||||
activeMenuBuffer = NULL;
|
activeMenuBuffer = NULL;
|
||||||
instantRecord = false;
|
instantRecord = false;
|
||||||
folderChoosen = false;
|
folderChoosen = false;
|
||||||
currentConflict = -1;
|
timerConflicts = NULL;
|
||||||
templateID = -1;
|
templateID = -1;
|
||||||
timer = NULL;
|
timer = NULL;
|
||||||
recFolder = "";
|
recFolderSeriesTimer = "";
|
||||||
|
recFolderInstantTimer = "";
|
||||||
searchWithOptions = false;
|
searchWithOptions = false;
|
||||||
detailViewActive = false;
|
detailViewActive = false;
|
||||||
SetBackground();
|
SetBackground();
|
||||||
@ -53,6 +60,10 @@ void cRecMenuManager::Close(void) {
|
|||||||
delete activeMenu;
|
delete activeMenu;
|
||||||
activeMenu = NULL;
|
activeMenu = NULL;
|
||||||
}
|
}
|
||||||
|
if (timerConflicts) {
|
||||||
|
delete timerConflicts;
|
||||||
|
timerConflicts = NULL;
|
||||||
|
}
|
||||||
DeleteBackground();
|
DeleteBackground();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -83,14 +94,14 @@ eOSState cRecMenuManager::StateMachine(eRecMenuState nextState) {
|
|||||||
//Creating timer for active Event
|
//Creating timer for active Event
|
||||||
//if no conflict, confirm and exit
|
//if no conflict, confirm and exit
|
||||||
instantRecord = true;
|
instantRecord = true;
|
||||||
cString folder = "";
|
recFolderInstantTimer = "";
|
||||||
if (folderChoosen) {
|
if (folderChoosen) {
|
||||||
int activeItem = activeMenu->GetActive(false);
|
int activeItem = activeMenu->GetActive(false);
|
||||||
if (activeItem > 0)
|
if (activeItem > 0)
|
||||||
folder = activeMenu->GetStringValue(activeItem);
|
recFolderInstantTimer = activeMenu->GetStringValue(activeItem);
|
||||||
}
|
}
|
||||||
delete activeMenu;
|
delete activeMenu;
|
||||||
cTimer *timer = recManager->createTimer(event, *folder);
|
cTimer *timer = recManager->createTimer(event, *recFolderInstantTimer);
|
||||||
if (!displayTimerConflict(timer)) {
|
if (!displayTimerConflict(timer)) {
|
||||||
activeMenu = new cRecMenuConfirmTimer(event);
|
activeMenu = new cRecMenuConfirmTimer(event);
|
||||||
activeMenu->Display();
|
activeMenu->Display();
|
||||||
@ -116,7 +127,7 @@ eOSState cRecMenuManager::StateMachine(eRecMenuState nextState) {
|
|||||||
break;
|
break;
|
||||||
case rmsTimerConflictShowInfo: {
|
case rmsTimerConflictShowInfo: {
|
||||||
int timerIndex = activeMenu->GetActive(true);
|
int timerIndex = activeMenu->GetActive(true);
|
||||||
int timerID = conflictList[currentConflict].timerIDs[timerIndex];
|
int timerID = timerConflicts->GetCurrentConflictTimerID(timerIndex);
|
||||||
cTimer *t = Timers.Get(timerID);
|
cTimer *t = Timers.Get(timerID);
|
||||||
if (t) {
|
if (t) {
|
||||||
const cEvent *ev = t->Event();
|
const cEvent *ev = t->Event();
|
||||||
@ -135,7 +146,7 @@ eOSState cRecMenuManager::StateMachine(eRecMenuState nextState) {
|
|||||||
//delete timer out of current timer conflict
|
//delete timer out of current timer conflict
|
||||||
//active menu: cRecMenuTimerConflict
|
//active menu: cRecMenuTimerConflict
|
||||||
int timerIndex = activeMenu->GetActive(true);
|
int timerIndex = activeMenu->GetActive(true);
|
||||||
int timerID = conflictList[currentConflict].timerIDs[timerIndex];
|
int timerID = timerConflicts->GetCurrentConflictTimerID(timerIndex);
|
||||||
recManager->DeleteTimer(timerID);
|
recManager->DeleteTimer(timerID);
|
||||||
delete activeMenu;
|
delete activeMenu;
|
||||||
if (!displayTimerConflict(timerID)) {
|
if (!displayTimerConflict(timerID)) {
|
||||||
@ -146,8 +157,8 @@ eOSState cRecMenuManager::StateMachine(eRecMenuState nextState) {
|
|||||||
case rmsEditTimerConflictMenu: {
|
case rmsEditTimerConflictMenu: {
|
||||||
//edit timer out of current timer conflict
|
//edit timer out of current timer conflict
|
||||||
//active menu: cRecMenuTimerConflict
|
//active menu: cRecMenuTimerConflict
|
||||||
int activeItem = activeMenu->GetActive(true);
|
int timerIndex = activeMenu->GetActive(true);
|
||||||
int timerID = conflictList[currentConflict].timerIDs[activeItem];
|
int timerID = timerConflicts->GetCurrentConflictTimerID(timerIndex);
|
||||||
timer = Timers.Get(timerID);
|
timer = Timers.Get(timerID);
|
||||||
if (timer) {
|
if (timer) {
|
||||||
delete activeMenu;
|
delete activeMenu;
|
||||||
@ -201,11 +212,11 @@ eOSState cRecMenuManager::StateMachine(eRecMenuState nextState) {
|
|||||||
* --------- SERIES TIMER ---------------------------------
|
* --------- SERIES TIMER ---------------------------------
|
||||||
*/
|
*/
|
||||||
case rmsSeriesTimer: {
|
case rmsSeriesTimer: {
|
||||||
recFolder = "";
|
recFolderSeriesTimer = "";
|
||||||
if (folderChoosen) {
|
if (folderChoosen) {
|
||||||
int activeItem = activeMenu->GetActive(false);
|
int activeItem = activeMenu->GetActive(false);
|
||||||
if (activeItem > 0)
|
if (activeItem > 0)
|
||||||
recFolder = activeMenu->GetStringValue(activeItem);
|
recFolderSeriesTimer = activeMenu->GetStringValue(activeItem);
|
||||||
}
|
}
|
||||||
delete activeMenu;
|
delete activeMenu;
|
||||||
cChannel *channel = Channels.GetByChannelID(event->ChannelID());
|
cChannel *channel = Channels.GetByChannelID(event->ChannelID());
|
||||||
@ -220,7 +231,7 @@ eOSState cRecMenuManager::StateMachine(eRecMenuState nextState) {
|
|||||||
activeMenu->Display();
|
activeMenu->Display();
|
||||||
break;
|
break;
|
||||||
case rmsSeriesTimerCreate: {
|
case rmsSeriesTimerCreate: {
|
||||||
cTimer *seriesTimer = recManager->CreateSeriesTimer(activeMenu, *recFolder);
|
cTimer *seriesTimer = recManager->CreateSeriesTimer(activeMenu, *recFolderSeriesTimer);
|
||||||
delete activeMenu;
|
delete activeMenu;
|
||||||
activeMenu = new cRecMenuConfirmSeriesTimer(seriesTimer);
|
activeMenu = new cRecMenuConfirmSeriesTimer(seriesTimer);
|
||||||
activeMenu->Display();
|
activeMenu->Display();
|
||||||
@ -438,25 +449,79 @@ eOSState cRecMenuManager::StateMachine(eRecMenuState nextState) {
|
|||||||
case rmsTimerConflicts: {
|
case rmsTimerConflicts: {
|
||||||
//Show timer conflict
|
//Show timer conflict
|
||||||
//active menu: cRecMenuTimerConflicts
|
//active menu: cRecMenuTimerConflicts
|
||||||
conflictList = recManager->CheckTimerConflict();
|
if (timerConflicts) {
|
||||||
|
delete timerConflicts;
|
||||||
|
}
|
||||||
|
timerConflicts = recManager->CheckTimerConflict();
|
||||||
delete activeMenu;
|
delete activeMenu;
|
||||||
int numConflicts = conflictList.size();
|
int numConflicts = timerConflicts->NumConflicts();
|
||||||
if (numConflicts > 0) {
|
if (numConflicts > 0) {
|
||||||
activeMenu = new cRecMenuTimerConflicts(conflictList);
|
activeMenu = new cRecMenuTimerConflicts(timerConflicts);
|
||||||
} else {
|
} else {
|
||||||
activeMenu = new cRecMenuNoTimerConflict();
|
activeMenu = new cRecMenuNoTimerConflict();
|
||||||
}
|
}
|
||||||
activeMenu->Display();
|
activeMenu->Display();
|
||||||
break; }
|
break; }
|
||||||
case rmsTimerConflict:
|
case rmsTimerConflict: {
|
||||||
//Show timer conflict
|
//Show timer conflict
|
||||||
//active menu: cRecMenuTimerConflicts
|
//active menu: cRecMenuTimerConflicts
|
||||||
currentConflict = activeMenu->GetActive(true);
|
if (!timerConflicts)
|
||||||
|
break;
|
||||||
|
timerConflicts->SetCurrentConflict(activeMenu->GetActive(true));
|
||||||
delete activeMenu;
|
delete activeMenu;
|
||||||
activeMenu = new cRecMenuTimerConflict(conflictList[currentConflict]);
|
activeMenu = new cRecMenuTimerConflict(timerConflicts->GetCurrentConflict());
|
||||||
activeMenu->Display();
|
activeMenu->Display();
|
||||||
break;
|
break; }
|
||||||
|
case rmsSearchRerunsTimerConflictMenu: {
|
||||||
|
//Show reruns for timer from timer conflict
|
||||||
|
//active menu: cRecMenuTimerConflict
|
||||||
|
if (!timerConflicts)
|
||||||
|
break;
|
||||||
|
int activeItem = activeMenu->GetActive(true);
|
||||||
|
int timerID = timerConflicts->GetCurrentConflictTimerID(activeItem);
|
||||||
|
timer = Timers.Get(timerID);
|
||||||
|
if (timer) {
|
||||||
|
const cEvent *event = timer->Event();
|
||||||
|
if (event) {
|
||||||
|
int numReruns = 0;
|
||||||
|
const cEvent **reruns = recManager->LoadReruns(event, numReruns);
|
||||||
|
if (reruns && (numReruns > 0)) {
|
||||||
|
activeMenuBuffer = activeMenu;
|
||||||
|
activeMenuBuffer->Hide();
|
||||||
|
activeMenu = new cRecMenuRerunResults(event, reruns, numReruns);
|
||||||
|
activeMenu->Display();
|
||||||
|
} else {
|
||||||
|
activeMenuBuffer = activeMenu;
|
||||||
|
activeMenuBuffer->Hide();
|
||||||
|
activeMenu = new cRecMenuNoRerunsFound((event->Title())?event->Title():"");
|
||||||
|
activeMenu->Display();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break; }
|
||||||
|
case rmsTimerConflictIgnoreReruns: {
|
||||||
|
delete activeMenu;
|
||||||
|
activeMenu = activeMenuBuffer;
|
||||||
|
activeMenuBuffer = NULL;
|
||||||
|
activeMenu->Show();
|
||||||
|
break; }
|
||||||
|
case rmsTimerConflictRecordRerun: {
|
||||||
|
const cEvent *replace = activeMenu->GetEventValue(activeMenu->GetActive(false));
|
||||||
|
int originalConflictIndex = activeMenuBuffer->GetActive(false);
|
||||||
|
int originalTimerID = timerConflicts->GetCurrentConflictTimerID(originalConflictIndex);
|
||||||
|
cTimer *timerOriginal = Timers.Get(originalTimerID);
|
||||||
|
if (replace && timerOriginal) {
|
||||||
|
recManager->DeleteTimer(timerOriginal->Event());
|
||||||
|
recManager->createTimer(replace, *recFolderInstantTimer);
|
||||||
|
delete activeMenu;
|
||||||
|
if (activeMenuBuffer) {
|
||||||
|
delete activeMenuBuffer;
|
||||||
|
activeMenuBuffer = NULL;
|
||||||
|
}
|
||||||
|
activeMenu = new cRecMenuConfirmRerunUsed(timerOriginal->Event(), replace);
|
||||||
|
activeMenu->Display();
|
||||||
|
}
|
||||||
|
break; }
|
||||||
/*
|
/*
|
||||||
* --------- COMMON ---------------------------------
|
* --------- COMMON ---------------------------------
|
||||||
*/
|
*/
|
||||||
@ -489,20 +554,18 @@ bool cRecMenuManager::displayTimerConflict(cTimer *timer) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool cRecMenuManager::displayTimerConflict(int timerID) {
|
bool cRecMenuManager::displayTimerConflict(int timerID) {
|
||||||
conflictList = recManager->CheckTimerConflict();
|
if (timerConflicts)
|
||||||
int numConflicts = conflictList.size();
|
delete timerConflicts;
|
||||||
int showTimerConflict = -1;
|
timerConflicts = recManager->CheckTimerConflict();
|
||||||
if (numConflicts > 0) {
|
if (!timerConflicts)
|
||||||
for (int i=0; i<numConflicts; i++) {
|
return false;
|
||||||
if (conflictList[i].timerInvolved(timerID)) {
|
int showTimerConflict = timerConflicts->GetCorrespondingConflict(timerID);
|
||||||
showTimerConflict = i;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (showTimerConflict > -1) {
|
if (showTimerConflict > -1) {
|
||||||
currentConflict = showTimerConflict;
|
timerConflicts->SetCurrentConflict(showTimerConflict);
|
||||||
activeMenu = new cRecMenuTimerConflict(conflictList[currentConflict]);
|
cTVGuideTimerConflict *conflict = timerConflicts->GetCurrentConflict();
|
||||||
|
if (!conflict)
|
||||||
|
return false;
|
||||||
|
activeMenu = new cRecMenuTimerConflict(conflict);
|
||||||
activeMenu->Display();
|
activeMenu->Display();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -13,15 +13,15 @@ private:
|
|||||||
cRecMenu *activeMenuBuffer;
|
cRecMenu *activeMenuBuffer;
|
||||||
const cEvent *event;
|
const cEvent *event;
|
||||||
cRecManager *recManager;
|
cRecManager *recManager;
|
||||||
std::vector<TVGuideTimerConflict> conflictList;
|
cTVGuideTimerConflicts *timerConflicts;
|
||||||
std::vector<TVGuideEPGSearchTemplate> epgSearchTemplates;
|
std::vector<TVGuideEPGSearchTemplate> epgSearchTemplates;
|
||||||
bool instantRecord;
|
bool instantRecord;
|
||||||
bool folderChoosen;
|
bool folderChoosen;
|
||||||
int currentConflict;
|
cString recFolderInstantTimer;
|
||||||
int templateID;
|
int templateID;
|
||||||
bool searchWithOptions;
|
bool searchWithOptions;
|
||||||
cTimer *timer;
|
cTimer *timer;
|
||||||
cString recFolder;
|
cString recFolderSeriesTimer;
|
||||||
cString searchString;
|
cString searchString;
|
||||||
cDetailView *detailView;
|
cDetailView *detailView;
|
||||||
cPixmap *pixmapBackground;
|
cPixmap *pixmapBackground;
|
||||||
|
135
recmenus.c
@ -177,20 +177,23 @@ cRecMenuAskDeleteTimer::cRecMenuAskDeleteTimer(const cEvent *event) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// --- cRecMenuTimerConflicts ---------------------------------------------------------
|
// --- cRecMenuTimerConflicts ---------------------------------------------------------
|
||||||
cRecMenuTimerConflicts::cRecMenuTimerConflicts(std::vector<TVGuideTimerConflict> conflicts) {
|
cRecMenuTimerConflicts::cRecMenuTimerConflicts(cTVGuideTimerConflicts *conflicts) {
|
||||||
int numConflicts = conflicts.size();
|
int numConflicts = conflicts->NumConflicts();
|
||||||
|
|
||||||
cString text;
|
cString text;
|
||||||
if (numConflicts == 1) {
|
if (numConflicts == 1) {
|
||||||
text = cString::sprintf("%s %s %s", tr("One"), tr("Timer Conflict"), tr("detected"));
|
text = cString::sprintf("%s %s %s", tr("One"), tr("Timer Conflict"), tr("detected"));
|
||||||
} else {
|
} else {
|
||||||
text = cString::sprintf("%d %s %s", (int)conflicts.size(), tr("Timer Conflicts"), tr("detected"));
|
text = cString::sprintf("%d %s %s", conflicts->NumConflicts(), tr("Timer Conflicts"), tr("detected"));
|
||||||
}
|
}
|
||||||
cRecMenuItemInfo *infoItem = new cRecMenuItemInfo(*text);
|
cRecMenuItemInfo *infoItem = new cRecMenuItemInfo(*text);
|
||||||
|
|
||||||
for (int i=0; i<numConflicts; i++) {
|
for (int i=0; i<numConflicts; i++) {
|
||||||
cString dateTime = DayDateTime(conflicts[i].time);
|
cTVGuideTimerConflict *conflict = conflicts->GetConflict(i);
|
||||||
int numTimers = conflicts[i].timerIDs.size();
|
if (!conflict)
|
||||||
|
continue;
|
||||||
|
cString dateTime = DayDateTime(conflict->time);
|
||||||
|
int numTimers = conflict->timerIDs.size();
|
||||||
cString textConflict = cString::sprintf("%s: %s (%d %s)", tr("Show conflict"), *dateTime, numTimers, tr("timers involved"));
|
cString textConflict = cString::sprintf("%s: %s (%d %s)", tr("Show conflict"), *dateTime, numTimers, tr("timers involved"));
|
||||||
bool isActive = (i==0)?true:false;
|
bool isActive = (i==0)?true:false;
|
||||||
AddMenuItem(new cRecMenuItemButton(*textConflict, rmsTimerConflict, isActive));
|
AddMenuItem(new cRecMenuItemButton(*textConflict, rmsTimerConflict, isActive));
|
||||||
@ -207,26 +210,27 @@ cRecMenuTimerConflicts::cRecMenuTimerConflicts(std::vector<TVGuideTimerConflict>
|
|||||||
}
|
}
|
||||||
|
|
||||||
// --- cRecMenuTimerConflict ---------------------------------------------------------
|
// --- cRecMenuTimerConflict ---------------------------------------------------------
|
||||||
cRecMenuTimerConflict::cRecMenuTimerConflict(TVGuideTimerConflict conflict) {
|
cRecMenuTimerConflict::cRecMenuTimerConflict(cTVGuideTimerConflict *conflict) {
|
||||||
SetWidthPercent(80);
|
SetWidthPercent(95);
|
||||||
this->conflict = conflict;
|
this->conflict = conflict;
|
||||||
SetHeader(new cRecMenuItemTimerConflictHeader(conflict.timeStart,
|
SetHeader(new cRecMenuItemTimerConflictHeader(conflict->timeStart,
|
||||||
conflict.timeStop,
|
conflict->timeStop,
|
||||||
conflict.overlapStart,
|
conflict->overlapStart,
|
||||||
conflict.overlapStop));
|
conflict->overlapStop));
|
||||||
SetFooter(new cRecMenuItemButton(tr("Ignore Conflict"), rmsIgnoreTimerConflict, false, true));
|
SetFooter(new cRecMenuItemButton(tr("Ignore Conflict"), rmsIgnoreTimerConflict, false, true));
|
||||||
int i=0;
|
int i=0;
|
||||||
for(std::vector<int>::iterator it = conflict.timerIDs.begin(); it != conflict.timerIDs.end(); it++) {
|
for(std::vector<int>::iterator it = conflict->timerIDs.begin(); it != conflict->timerIDs.end(); it++) {
|
||||||
const cTimer *timer = Timers.Get(*it);
|
const cTimer *timer = Timers.Get(*it);
|
||||||
if (timer) {
|
if (timer) {
|
||||||
AddMenuItemScroll(new cRecMenuItemTimer( timer,
|
AddMenuItemScroll(new cRecMenuItemTimer( timer,
|
||||||
rmsTimerConflictShowInfo,
|
rmsTimerConflictShowInfo,
|
||||||
rmsDeleteTimerConflictMenu,
|
rmsDeleteTimerConflictMenu,
|
||||||
rmsEditTimerConflictMenu,
|
rmsEditTimerConflictMenu,
|
||||||
conflict.timeStart,
|
rmsSearchRerunsTimerConflictMenu,
|
||||||
conflict.timeStop,
|
conflict->timeStart,
|
||||||
conflict.overlapStart,
|
conflict->timeStop,
|
||||||
conflict.overlapStop,
|
conflict->overlapStart,
|
||||||
|
conflict->overlapStop,
|
||||||
(!i)?true:false)
|
(!i)?true:false)
|
||||||
);
|
);
|
||||||
i++;
|
i++;
|
||||||
@ -240,16 +244,17 @@ cRecMenuTimerConflict::cRecMenuTimerConflict(TVGuideTimerConflict conflict) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
cRecMenuItem *cRecMenuTimerConflict::GetMenuItem(int number) {
|
cRecMenuItem *cRecMenuTimerConflict::GetMenuItem(int number) {
|
||||||
if ((number >= 0) && (number < conflict.timerIDs.size())) {
|
if ((number >= 0) && (number < conflict->timerIDs.size())) {
|
||||||
const cTimer *timer = Timers.Get(conflict.timerIDs[number]);
|
const cTimer *timer = Timers.Get(conflict->timerIDs[number]);
|
||||||
cRecMenuItem *result = new cRecMenuItemTimer( timer,
|
cRecMenuItem *result = new cRecMenuItemTimer( timer,
|
||||||
rmsTimerConflictShowInfo,
|
rmsTimerConflictShowInfo,
|
||||||
rmsDeleteTimerConflictMenu,
|
rmsDeleteTimerConflictMenu,
|
||||||
rmsEditTimerConflictMenu,
|
rmsEditTimerConflictMenu,
|
||||||
conflict.timeStart,
|
rmsSearchRerunsTimerConflictMenu,
|
||||||
conflict.timeStop,
|
conflict->timeStart,
|
||||||
conflict.overlapStart,
|
conflict->timeStop,
|
||||||
conflict.overlapStop,
|
conflict->overlapStart,
|
||||||
|
conflict->overlapStop,
|
||||||
false);
|
false);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@ -257,7 +262,7 @@ cRecMenuItem *cRecMenuTimerConflict::GetMenuItem(int number) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int cRecMenuTimerConflict::GetTotalNumMenuItems(void) {
|
int cRecMenuTimerConflict::GetTotalNumMenuItems(void) {
|
||||||
return conflict.timerIDs.size();
|
return conflict->timerIDs.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
// --- cRecMenuNoTimerConflict ---------------------------------------------------------
|
// --- cRecMenuNoTimerConflict ---------------------------------------------------------
|
||||||
@ -273,6 +278,90 @@ cRecMenuNoTimerConflict::cRecMenuNoTimerConflict(void) {
|
|||||||
Arrange();
|
Arrange();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// --- cRecMenuRerunResults ---------------------------------------------------------
|
||||||
|
cRecMenuRerunResults::cRecMenuRerunResults(const cEvent *original, const cEvent **reruns, int numReruns) {
|
||||||
|
this->reruns = reruns;
|
||||||
|
this->numReruns = numReruns;
|
||||||
|
SetWidthPercent(70);
|
||||||
|
this->numReruns = numReruns;
|
||||||
|
cString message1 = tr("reruns for");
|
||||||
|
cString message2 = tr("rerun for");
|
||||||
|
cString message3 = tr("found");
|
||||||
|
cString infoText = cString::sprintf("%d %s:\n\"%s\" %s", numReruns, (numReruns>1)?(*message1):(*message2), original->Title(), *message3);
|
||||||
|
cRecMenuItem *infoItem = new cRecMenuItemInfo(*infoText);
|
||||||
|
infoItem->CalculateHeight(width - 2 * border);
|
||||||
|
SetHeader(infoItem);
|
||||||
|
|
||||||
|
cRecMenuItem *button = new cRecMenuItemButton(tr("Ignore reruns"), rmsTimerConflictIgnoreReruns, false);
|
||||||
|
SetFooter(button);
|
||||||
|
|
||||||
|
if (reruns && (numReruns > 0)) {
|
||||||
|
for (int i=0; i<numReruns; i++) {
|
||||||
|
AddMenuItemScroll(new cRecMenuItemEvent(reruns[i], rmsSearchShowInfo, rmsTimerConflictRecordRerun, (i==0)?true:false));
|
||||||
|
if (!CheckHeight())
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
CalculateHeight();
|
||||||
|
CreatePixmap();
|
||||||
|
Arrange();
|
||||||
|
}
|
||||||
|
|
||||||
|
cRecMenuItem *cRecMenuRerunResults::GetMenuItem(int number) {
|
||||||
|
if ((number >= 0) && (number < numReruns)) {
|
||||||
|
cRecMenuItem *result = new cRecMenuItemEvent(reruns[number], rmsSearchShowInfo, rmsTimerConflictRecordRerun, false);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
int cRecMenuRerunResults::GetTotalNumMenuItems(void) {
|
||||||
|
return numReruns;
|
||||||
|
}
|
||||||
|
|
||||||
|
// --- cRecMenuNoRerunsFound ---------------------------------------------------------
|
||||||
|
cRecMenuNoRerunsFound::cRecMenuNoRerunsFound(cString searchString) {
|
||||||
|
SetWidthPercent(50);
|
||||||
|
cString message = tr("No reruns found for Event");
|
||||||
|
cString text = cString::sprintf("%s\n\"%s\"",
|
||||||
|
*message,
|
||||||
|
*searchString);
|
||||||
|
cRecMenuItemInfo *infoItem = new cRecMenuItemInfo(*text);
|
||||||
|
infoItem->CalculateHeight(width - 2 * border);
|
||||||
|
AddMenuItem(infoItem);
|
||||||
|
AddMenuItem(new cRecMenuItemButton(tr("OK"), rmsTimerConflictIgnoreReruns, true, true));
|
||||||
|
CalculateHeight();
|
||||||
|
CreatePixmap();
|
||||||
|
Arrange();
|
||||||
|
}
|
||||||
|
|
||||||
|
// --- cRecMenuConfirmRerunUsed ---------------------------------------------------------
|
||||||
|
cRecMenuConfirmRerunUsed::cRecMenuConfirmRerunUsed(const cEvent *original, const cEvent *replace) {
|
||||||
|
SetWidthPercent(70);
|
||||||
|
cString channelOrig = Channels.GetByChannelID(original->ChannelID())->Name();
|
||||||
|
cString channelReplace = Channels.GetByChannelID(replace->ChannelID())->Name();
|
||||||
|
cString message1 = tr("Timer for");
|
||||||
|
cString message2 = tr("replaced by rerun");
|
||||||
|
cString text = cString::sprintf("%s\n\"%s\", %s %s, %s\n%s\n\"%s\", %s %s, %s",
|
||||||
|
*message1,
|
||||||
|
original->Title(),
|
||||||
|
*original->GetDateString(),
|
||||||
|
*original->GetTimeString(),
|
||||||
|
*channelOrig,
|
||||||
|
*message2,
|
||||||
|
replace->Title(),
|
||||||
|
*replace->GetDateString(),
|
||||||
|
*replace->GetTimeString(),
|
||||||
|
*channelReplace);
|
||||||
|
cRecMenuItemInfo *infoItem = new cRecMenuItemInfo(*text);
|
||||||
|
infoItem->CalculateHeight(width - 2 * border);
|
||||||
|
AddMenuItem(infoItem);
|
||||||
|
AddMenuItem(new cRecMenuItemButton(tr("OK"), rmsTimerConflicts, true, true));
|
||||||
|
CalculateHeight();
|
||||||
|
CreatePixmap();
|
||||||
|
Arrange();
|
||||||
|
}
|
||||||
|
|
||||||
// --- cRecMenuEditTimer ---------------------------------------------------------
|
// --- cRecMenuEditTimer ---------------------------------------------------------
|
||||||
cRecMenuEditTimer::cRecMenuEditTimer(const cTimer *timer, eRecMenuState nextState) {
|
cRecMenuEditTimer::cRecMenuEditTimer(const cTimer *timer, eRecMenuState nextState) {
|
||||||
SetWidthPercent(60);
|
SetWidthPercent(60);
|
||||||
|
36
recmenus.h
@ -51,16 +51,16 @@ public:
|
|||||||
// --- cRecMenuTimerConflicts ---------------------------------------------------------
|
// --- cRecMenuTimerConflicts ---------------------------------------------------------
|
||||||
class cRecMenuTimerConflicts: public cRecMenu {
|
class cRecMenuTimerConflicts: public cRecMenu {
|
||||||
public:
|
public:
|
||||||
cRecMenuTimerConflicts(std::vector<TVGuideTimerConflict> conflicts);
|
cRecMenuTimerConflicts(cTVGuideTimerConflicts *conflicts);
|
||||||
virtual ~cRecMenuTimerConflicts(void) {};
|
virtual ~cRecMenuTimerConflicts(void) {};
|
||||||
};
|
};
|
||||||
|
|
||||||
// --- cRecMenuTimerConflict ---------------------------------------------------------
|
// --- cRecMenuTimerConflict ---------------------------------------------------------
|
||||||
class cRecMenuTimerConflict: public cRecMenu {
|
class cRecMenuTimerConflict: public cRecMenu {
|
||||||
private:
|
private:
|
||||||
TVGuideTimerConflict conflict;
|
cTVGuideTimerConflict *conflict;
|
||||||
public:
|
public:
|
||||||
cRecMenuTimerConflict(TVGuideTimerConflict conflict);
|
cRecMenuTimerConflict(cTVGuideTimerConflict *conflict);
|
||||||
cRecMenuItem *GetMenuItem(int number);
|
cRecMenuItem *GetMenuItem(int number);
|
||||||
int GetTotalNumMenuItems(void);
|
int GetTotalNumMenuItems(void);
|
||||||
virtual ~cRecMenuTimerConflict(void) {};
|
virtual ~cRecMenuTimerConflict(void) {};
|
||||||
@ -73,6 +73,34 @@ public:
|
|||||||
virtual ~cRecMenuNoTimerConflict(void) {};
|
virtual ~cRecMenuNoTimerConflict(void) {};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// --- cRecMenuRerunResults ---------------------------------------------------------
|
||||||
|
class cRecMenuRerunResults: public cRecMenu {
|
||||||
|
private:
|
||||||
|
const cEvent **reruns;
|
||||||
|
int numReruns;
|
||||||
|
public:
|
||||||
|
cRecMenuRerunResults(const cEvent *original, const cEvent **reruns, int numReruns);
|
||||||
|
cRecMenuItem *GetMenuItem(int number);
|
||||||
|
int GetTotalNumMenuItems(void);
|
||||||
|
virtual ~cRecMenuRerunResults(void) {
|
||||||
|
delete[] reruns;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
// --- cRecMenuNoRerunsFound ---------------------------------------------------------
|
||||||
|
class cRecMenuNoRerunsFound: public cRecMenu {
|
||||||
|
public:
|
||||||
|
cRecMenuNoRerunsFound(cString searchString);
|
||||||
|
virtual ~cRecMenuNoRerunsFound(void) {};
|
||||||
|
};
|
||||||
|
|
||||||
|
// --- cRecMenuConfirmRerunUsed ---------------------------------------------------------
|
||||||
|
class cRecMenuConfirmRerunUsed: public cRecMenu {
|
||||||
|
public:
|
||||||
|
cRecMenuConfirmRerunUsed(const cEvent *original, const cEvent *replace);
|
||||||
|
virtual ~cRecMenuConfirmRerunUsed(void) {};
|
||||||
|
};
|
||||||
|
|
||||||
// --- cRecMenuEditTimer ---------------------------------------------------------
|
// --- cRecMenuEditTimer ---------------------------------------------------------
|
||||||
class cRecMenuEditTimer: public cRecMenu {
|
class cRecMenuEditTimer: public cRecMenu {
|
||||||
public:
|
public:
|
||||||
@ -229,8 +257,6 @@ public:
|
|||||||
virtual ~cRecMenuSearchNothingFound(void) {};
|
virtual ~cRecMenuSearchNothingFound(void) {};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// --- cRecMenuRecordingSearch ---------------------------------------------------------
|
// --- cRecMenuRecordingSearch ---------------------------------------------------------
|
||||||
class cRecMenuRecordingSearch: public cRecMenu {
|
class cRecMenuRecordingSearch: public cRecMenu {
|
||||||
private:
|
private:
|
||||||
|
1
setup.c
@ -364,6 +364,7 @@ void cMenuSetupImageCache::Set(void) {
|
|||||||
Add(InfoItem(tr("Logo cache"), (imgCache.GetCacheSize(ctLogo)).c_str()));
|
Add(InfoItem(tr("Logo cache"), (imgCache.GetCacheSize(ctLogo)).c_str()));
|
||||||
Add(InfoItem(tr("EPG Grid Cache"), (imgCache.GetCacheSize(ctGrid)).c_str()));
|
Add(InfoItem(tr("EPG Grid Cache"), (imgCache.GetCacheSize(ctGrid)).c_str()));
|
||||||
Add(InfoItem(tr("Channel Groups Cache"), (imgCache.GetCacheSize(ctChannelGroup)).c_str()));
|
Add(InfoItem(tr("Channel Groups Cache"), (imgCache.GetCacheSize(ctChannelGroup)).c_str()));
|
||||||
|
Add(InfoItem(tr("Recording Menus Icon Cache"), (imgCache.GetCacheSize(ctIcon)).c_str()));
|
||||||
|
|
||||||
SetCurrent(Get(currentItem));
|
SetCurrent(Get(currentItem));
|
||||||
Display();
|
Display();
|
||||||
|