Compare commits

...

76 Commits

Author SHA1 Message Date
kamel5 5ef383453f Version 1.3.6 2022-06-25 13:30:04 +02:00
kamel5 5638c408c1 Better fit channel logo in search result 2022-06-25 13:29:18 +02:00
kamel5 519a87a471 Adapt epgsearch "allow empty" in searchtimer edit 2022-06-25 13:12:24 +02:00
kamel5 a87a1db7c2 Remove SetHeader and SetFooter 2022-06-25 13:00:13 +02:00
kamel5 00ea3fb5ff Rename isDummy() to IsDummy() 2022-06-18 17:03:15 +02:00
kamel5 93af9304c8 Cosmetic change in osdmanager.* 2022-06-18 17:03:15 +02:00
kamel5 d8663ff309 Cosmetic change in geometrymanager.c 2022-06-18 17:03:15 +02:00
kamel5 8e26759d4e Rename GetTimerValue() to GetTimer() 2022-06-18 17:03:15 +02:00
kamel5 5923c9c0ed Rename setActive() to SetActive() 2022-06-18 17:03:15 +02:00
kamel5 6174461af6 Rename isActive() to IsActive() 2022-06-18 17:03:15 +02:00
kamel5 018a8946b7 Rename GetEventValue() to GetEvent() 2022-06-18 17:03:15 +02:00
kamel5 c3dbae705a Rename GetActive() to GetNumActive() 2022-06-18 17:03:15 +02:00
kamel5 0289731158 Refactor cRecMenuTimeline 2022-06-18 17:03:15 +02:00
kamel5 1f1498a734 Refactor cRecMenuAskFolder 2022-06-18 17:03:15 +02:00
kamel5 e707ec7d4f Refactor cRecMenuFavorites 2022-06-18 17:03:15 +02:00
kamel5 bb7d03c7ed Refactor cRecMenuRecordingSearchNotFound 2022-06-18 17:03:15 +02:00
kamel5 b804b63353 Refactor cRecMenuRecordingSearchResults 2022-06-18 17:03:15 +02:00
kamel5 a7e0aacdf1 Refactor cRecMenuRecordingSearch 2022-06-18 17:03:15 +02:00
kamel5 37a31d0768 Refactor cRecMenuSearchConfirmTimer 2022-06-18 17:03:15 +02:00
kamel5 380e84afcd Refactor cRecMenuSearchNothingFound 2022-06-18 17:03:15 +02:00
kamel5 412a78a112 Refactor cRecMenuSearchResults 2022-06-18 17:03:15 +02:00
kamel5 5cc50e465d Refactor cRecMenuSearch 2022-06-18 17:03:15 +02:00
kamel5 a3dc78f70a Refactor cRecMenuSwitchTimerDelete 2022-06-18 17:03:15 +02:00
kamel5 403af35519 Refactor cRecMenuSwitchTimerConfirm 2022-06-18 17:03:15 +02:00
kamel5 97c8bc23fd Refactor cRecMenuSwitchTimer 2022-06-18 17:03:15 +02:00
kamel5 95fd68a6be Refactor cRecMenuSearchTimerNothingFound 2022-06-18 17:03:15 +02:00
kamel5 66659a865d Refactor cRecMenuSearchTimerResults 2022-06-18 17:03:15 +02:00
kamel5 4f95cffdb2 Refactor cRecMenuSearchTimerTemplatesCreate 2022-06-18 17:03:15 +02:00
kamel5 7f7a16498c Refactor cRecMenuSearchTimerCreateConfirm 2022-06-18 17:03:15 +02:00
kamel5 f900446195 Refactor cRecMenuSearchTimerDeleteConfirm 2022-06-18 17:03:15 +02:00
kamel5 d24bbefe4c Refactor cRecMenuSearchTimerEdit 2022-06-18 17:03:15 +02:00
kamel5 54ce728fa5 Refactor cRecMenuSearchTimers 2022-06-18 17:03:15 +02:00
kamel5 a4cc2a4fa8 Refactor cRecMenuSearchTimerTemplates 2022-06-18 17:03:15 +02:00
kamel5 30fc49af0c Refactor cRecMenuSearchTimer 2022-06-18 17:03:15 +02:00
kamel5 cf9250e50b Refactor cRecMenuConfirmSeriesTimer 2022-06-18 17:03:15 +02:00
kamel5 2531526a4d Refactor cRecMenuSeriesTimer 2022-06-18 17:03:15 +02:00
kamel5 37db3b185c Refactor cRecMenuEditTimer 2022-06-18 17:03:15 +02:00
kamel5 e4ef6c4ee5 Refactor cRecMenuConfirmRerunUsed 2022-06-18 17:03:15 +02:00
kamel5 51b1896c6d Refactor cRecMenuNoRerunsFound 2022-06-18 17:03:15 +02:00
kamel5 ec7d45f960 Refactor cRecMenuRerunResults 2022-06-18 17:03:15 +02:00
kamel5 0837137ea8 Refactor cRecMenuNoTimerConflict 2022-06-18 17:03:15 +02:00
kamel5 33196207d0 Refactor cRecMenuTimerConflict 2022-06-18 17:03:15 +02:00
kamel5 73e331f97f Refactor cRecMenuTimerConflicts 2022-06-18 17:03:15 +02:00
kamel5 56cab4a666 Refactor cRecMenuAskDeleteTimer 2022-06-18 17:03:15 +02:00
kamel5 a4294b1f54 Refactor cRecMenuConfirmDeleteTimer 2022-06-18 17:03:15 +02:00
kamel5 ce690366f8 Refactor cRecMenuConfirmTimer 2022-06-18 17:03:02 +02:00
kamel5 9565eda1aa Fix typo 2022-06-18 16:10:07 +02:00
kamel5 637617bd12 Fix a segfault
In the function "cDetailView::InitiateView" there was a
segfault when the "call->type = tNone".
2022-06-18 12:38:50 +02:00
kamel5 eb259fb961 Fixed possible segfault when showing scrollbar in search result lists
A segfault is possible if numSteps is greater than height in
"cRecMenu::createScrollbar()".
2022-04-29 12:18:36 +02:00
kamel5 e2d67769dc Changed the size and location of the channel logos to better fit in place
This leads to a better positioning of the channel logos if they are
displayed in the EPG grid
2022-04-29 12:08:51 +02:00
kamel5 936db4a087 Display errors in search recordings 2021-12-15 15:20:34 +01:00
kamel5 6af3193b02 In menu "Search Recordins" get ChannelName from 'RecInfo'
Alternatively fallback via 'ChannelID' from the active channel list.
2021-12-15 14:48:39 +01:00
kamel5 2d46769a3e Eliminate "Warnung: ISO-C++17 erlaubt Speicherklassenangabe »register« nicht [-Wregister]" 2021-12-15 14:42:41 +01:00
kamel5 6663910058 Version 1.3.5 2021-05-22 11:43:26 +02:00
kamel5 896a4abf75 Update iceblue theme 2021-05-22 11:41:31 +02:00
kamel5 4e062c0a8d Fix for VDR-2.5.4 2021-05-22 11:40:58 +02:00
kamel5 2f497adf01 Version 1.3.4 2021-01-11 11:36:25 +01:00
kamel5 decfb2d39d Coemetic changes 2021-01-11 11:33:16 +01:00
kamel5 5f4ea6b30d gcc11fix 2021-01-11 11:19:01 +01:00
kamel5 435a74d9cf Version 1.3.3 2020-08-06 19:05:42 +02:00
kamel5 fc47c35bea Version 1.3.2 2020-08-06 12:47:03 +02:00
kamel5 4d80c6900d Optional deactivation of the timer confirmation messages 2020-08-06 12:47:03 +02:00
kamel5 78d6e980ee Wrap title in detailview header 2020-08-06 12:47:03 +02:00
kamel5 69356e9c43 Add "Timer On/Off" to recmenu 2020-08-06 12:46:59 +02:00
kamel5 bf3a8a430b Center some channel logos 2020-08-02 19:50:55 +02:00
kamel5 52c41ff5af Fixed display groupname in cChannelGroupGrid::DrawHorizontal 2020-07-25 13:35:03 +02:00
kamel5 5870b1ae4c Version 1.3.1 2020-03-11 15:08:32 +01:00
kamel5 69b851c9ed Fixed a segfault 2020-03-11 14:59:03 +01:00
kamel5 8335ab0e41 Fixes for <VDR-2.3.1 compatibility 2020-03-07 16:55:49 +01:00
kamel5 240cbe87e0 Version 1.3.0 2020-03-06 14:03:36 +01:00
kamel5 ee68d2eb2f Fixed messages in DisplayTimerConflict 2020-03-06 14:01:47 +01:00
kamel5 eb3a4113be Fixed horizontal alignment in timeline 2020-03-06 14:01:47 +01:00
kamel5 7ec89bf12b Fixed stopIndex in cRecMenu::JumpBegin 2020-03-06 14:01:47 +01:00
kamel5 f653594c4a Fixes for <VDR-2.3.1 compatibility 2020-03-04 15:26:27 +01:00
kamel5 8129d116fb Show numTimersToday in timeline 2020-03-02 13:33:58 +01:00
kamel5 874f5cd9d5 Fixed a problem in DisplayTimerConflict 2020-03-02 12:47:04 +01:00
44 changed files with 1559 additions and 1281 deletions

45
HISTORY
View File

@ -256,3 +256,48 @@ Version 1.2.17
- Final fix for utf8 CutText
- Fixed a remote timer problem
- Add episode to manual timer
Version 1.3.0
- last version with <VDR-2.3.1 compatibility
- Fixed a possible seqfault in DisplayTimerConflict
- Show numTimersToday in timeline
- Fixed stopIndex in cRecMenu::JumpBegin
- Fixed horizontal alignment in timeline
- Fixed messages in DisplayTimerConflict
Version 1.3.1
- Fixes for <VDR-2.3.1 compatibility
- Fixed a segfault while starting tvguide
Version 1.3.2
- Fixed display groupname in cChannelGroupGrid::DrawHorizontal
- Center some channel logos
- Add "Timer On/Off" to recmenu
- Wrap title in detailview header
- Optional deactivation of the timer confirmation messages
Version 1.3.3
- Bugfix
Version 1.3.4
- Fix for gcc11
Version 1.3.5
- Fix for VDR-2.5.4
- Update iceblue theme
Version 1.3.6
- Fix segfault when tvscraper returns "call->type = tNone"
- In menu "Search Recordins" get ChannelName from 'RecInfo'
- Display errors in search recordings
- Fixed possible segfault when showing scrollbar in search result lists
- Adapt epgsearch "allow empty" for searchtimer
- some rework
- optical optimization

View File

@ -214,7 +214,7 @@ void cChannelEpg::AddNewGridsAtStart() {
const cSchedule *Schedule = NULL;
Schedule = schedules->GetSchedule(channel);
if (!Schedule) {
if (firstGrid->isDummy()) {
if (firstGrid->IsDummy()) {
firstGrid->SetStartTime(timeManager->GetStart());
firstGrid->SetEndTime(timeManager->GetEnd());
}
@ -238,7 +238,7 @@ void cChannelEpg::AddNewGridsAtStart() {
}
if (dummyNeeded) {
firstGrid = grids.First();
if (firstGrid->isDummy()) {
if (firstGrid->IsDummy()) {
firstGrid->SetStartTime(timeManager->GetStart());
if (firstGrid->EndTime() >= timeManager->GetEnd())
firstGrid->SetEndTime(timeManager->GetEnd());
@ -270,7 +270,7 @@ void cChannelEpg::AddNewGridsAtEnd() {
const cSchedule *Schedule = NULL;
Schedule = schedules->GetSchedule(channel);
if (!Schedule) {
if (lastGrid->isDummy()) {
if (lastGrid->IsDummy()) {
lastGrid->SetStartTime(timeManager->GetStart());
lastGrid->SetEndTime(timeManager->GetEnd());
}
@ -293,7 +293,7 @@ void cChannelEpg::AddNewGridsAtEnd() {
}
if (dummyNeeded) {
lastGrid = grids.Last();
if (lastGrid->isDummy()) {
if (lastGrid->IsDummy()) {
lastGrid->SetEndTime(timeManager->GetEnd());
if (lastGrid->StartTime() <= timeManager->GetStart())
lastGrid->SetStartTime(timeManager->GetStart());
@ -313,7 +313,7 @@ void cChannelEpg::ClearOutdatedStart() {
grids.Del(firstGrid);
firstGrid = NULL;
} else {
if (firstGrid->isDummy()) {
if (firstGrid->IsDummy()) {
firstGrid->SetStartTime(timeManager->GetStart());
cGridElement *next = getNext(firstGrid);
if (next) {
@ -337,7 +337,7 @@ void cChannelEpg::ClearOutdatedEnd() {
grids.Del(lastGrid);
lastGrid = NULL;
} else {
if (lastGrid->isDummy()) {
if (lastGrid->IsDummy()) {
lastGrid->SetEndTime(timeManager->GetEnd());
cGridElement *prev = getPrev(lastGrid);
if (prev) {

View File

@ -47,7 +47,7 @@ void cChannelGroupGrid::SetGeometry(int start, int end) {
width = geoManager.channelGroupsWidth;
height = (end - start + 1) * geoManager.rowHeight;
}
pixmap = osdManager.requestPixmap(1, cRect(x, y, width, height));
pixmap = osdManager.CreatePixmap(1, cRect(x, y, width, height));
}
void cChannelGroupGrid::Draw(void) {
@ -68,29 +68,28 @@ void cChannelGroupGrid::Draw(void) {
void cChannelGroupGrid::DrawVertical(tColor colorText, tColor colorTextBack) {
int textY = (Height() - fontManager.FontChannelGroups->Height()) / 2;
cString text = CutText(name, Width() - 4, fontManager.FontChannelGroups).c_str();
cString text = cString::sprintf("%s", CutText(name, Width() - 4, fontManager.FontChannelGroups).c_str());
int textWidth = fontManager.FontChannelGroups->Width(*text);
int x = (Width() - textWidth) / 2;
pixmap->DrawText(cPoint(x, textY), *text, colorText, colorTextBack, fontManager.FontChannelGroups);
}
void cChannelGroupGrid::DrawHorizontal(tColor colorText, tColor colorTextBack) {
std::string nameUpper = name;
std::transform(nameUpper.begin(), nameUpper.end(),nameUpper.begin(), ::toupper);
int numChars = nameUpper.length();
std::string groupName = name;
int numChars = groupName.length();
int charHeight = fontManager.FontChannelGroupsHorizontal->Height();
int textHeight = numChars * charHeight;
int y = 5;
if ((textHeight +5) < Height()) {
if ((textHeight + 5) < Height()) {
y = (Height() - textHeight) / 2;
}
for (int i=0; i < numChars; i++) {
if (((y + 2*charHeight) > Height()) && ((i+1)<numChars)) {
for (int i = 0; i < numChars; i++) {
if (((y + 2 * charHeight) > Height()) && ((i + 1) < numChars)) {
int x = (Width() - fontManager.FontChannelGroupsHorizontal->Width("...")) / 2;
pixmap->DrawText(cPoint(x, y), "...", colorText, colorTextBack, fontManager.FontChannelGroupsHorizontal);
break;
}
cString currentChar = cString::sprintf("%c", nameUpper.at(i));
cString currentChar = cString::sprintf("%s", utf8_substr(groupName.c_str(), i, 1).c_str());
int x = (Width() - fontManager.FontChannelGroupsHorizontal->Width(*currentChar)) / 2;
pixmap->DrawText(cPoint(x, y), *currentChar, colorText, colorTextBack, fontManager.FontChannelGroupsHorizontal);
y += fontManager.FontChannelGroupsHorizontal->Height();

View File

@ -18,17 +18,17 @@ cChannelJump::cChannelJump(cChannelGroups *channelGroups, int lastValidChannel)
}
cChannelJump::~cChannelJump(void) {
osdManager.releasePixmap(pixmapBack);
osdManager.releasePixmap(pixmapText);
osdManager.DestroyPixmap(pixmapBack);
osdManager.DestroyPixmap(pixmapText);
}
void cChannelJump::SetPixmaps(void) {
int x = (geoManager.osdWidth - geoManager.channelJumpWidth)/2;
int y = (geoManager.osdHeight - geoManager.channelJumpHeight)/2;
pixmapBack = osdManager.requestPixmap(4, cRect(x, y, geoManager.channelJumpWidth, geoManager.channelJumpHeight));
pixmap = osdManager.requestPixmap(5, cRect(x, y, geoManager.channelJumpWidth, geoManager.channelJumpHeight));
pixmapText = osdManager.requestPixmap(6, cRect(x, y, geoManager.channelJumpWidth, geoManager.channelJumpHeight));
pixmapBack = osdManager.CreatePixmap(4, cRect(x, y, geoManager.channelJumpWidth, geoManager.channelJumpHeight));
pixmap = osdManager.CreatePixmap(5, cRect(x, y, geoManager.channelJumpWidth, geoManager.channelJumpHeight));
pixmapText = osdManager.CreatePixmap(6, cRect(x, y, geoManager.channelJumpWidth, geoManager.channelJumpHeight));
}
void cChannelJump::Draw(void) {

View File

@ -35,6 +35,7 @@ cTVGuideConfig::cTVGuideConfig() {
jumpChannels = 0;
blueKeyMode = 2;
addSubtitleToTimer = 1;
timerMessage = 1;
closeOnSwitch = 1;
numkeyMode = 0;
useRemoteTimers = 0;
@ -297,6 +298,7 @@ bool cTVGuideConfig::SetupParse(const char *Name, const char *Value) {
else if (strcmp(Name, "instRecFolderMode") == 0) instRecFolderMode = atoi(Value);
else if (strcmp(Name, "instRecFixedFolder") == 0) instRecFixedFolder = Value;
else if (strcmp(Name, "addSubtitleToTimer") == 0) addSubtitleToTimer = atoi(Value);
else if (strcmp(Name, "timerMessage") == 0) timerMessage = atoi(Value);
else if (strcmp(Name, "favWhatsOnNow") == 0) favWhatsOnNow = atoi(Value);
else if (strcmp(Name, "favWhatsOnNext") == 0) favWhatsOnNext = atoi(Value);
else if (strcmp(Name, "favUseTime1") == 0) favUseTime1 = atoi(Value);

View File

@ -88,6 +88,7 @@ class cTVGuideConfig {
int channelJumpMode;
int jumpChannels;
int blueKeyMode;
int timerMessage;
int addSubtitleToTimer;
int closeOnSwitch;
int numkeyMode;

View File

@ -32,6 +32,8 @@ void cDetailView::InitiateView(void) {
view = new cMovieView(call.movieId);
} else if (call.type == tSeries) {
view = new cSeriesView(call.seriesId, call.episodeId);
} else {
view = new cEPGView();
}
} else {
view = new cEPGView();
@ -147,14 +149,14 @@ eOSState cDetailView::ProcessKey(eKeys Key) {
bool scrolled = view->KeyUp();
if (scrolled) {
view->DrawScrollbar();
osdManager.flush();
osdManager.Flush();
}
break; }
case kDown: {
bool scrolled = view->KeyDown();
if (scrolled) {
view->DrawScrollbar();
osdManager.flush();
osdManager.Flush();
}
break; }
case kLeft:

View File

@ -34,10 +34,10 @@ void cDummyGrid::PositionPixmap() {
y0 += (StartTime() - column->Start())/60*geoManager.minutePixel;
}
if (!pixmap) {
pixmap = osdManager.requestPixmap(-1, cRect(x0, y0, geoManager.colWidth, viewportHeight));
pixmap = osdManager.CreatePixmap(-1, cRect(x0, y0, geoManager.colWidth, viewportHeight));
} else if (dirty) {
osdManager.releasePixmap(pixmap);
pixmap = osdManager.requestPixmap(-1, cRect(x0, y0, geoManager.colWidth, viewportHeight));
osdManager.DestroyPixmap(pixmap);
pixmap = osdManager.CreatePixmap(-1, cRect(x0, y0, geoManager.colWidth, viewportHeight));
} else {
pixmap->SetViewPort(cRect(x0, y0, geoManager.colWidth, viewportHeight));
}
@ -48,10 +48,10 @@ void cDummyGrid::PositionPixmap() {
x0 += (StartTime() - column->Start())/60*geoManager.minutePixel;
}
if (!pixmap) {
pixmap = osdManager.requestPixmap(-1, cRect(x0, y0, viewportHeight, geoManager.rowHeight));
pixmap = osdManager.CreatePixmap(-1, cRect(x0, y0, viewportHeight, geoManager.rowHeight));
} else if (dirty) {
osdManager.releasePixmap(pixmap);
pixmap = osdManager.requestPixmap(-1, cRect(x0, y0, viewportHeight, geoManager.rowHeight));
osdManager.DestroyPixmap(pixmap);
pixmap = osdManager.CreatePixmap(-1, cRect(x0, y0, viewportHeight, geoManager.rowHeight));
} else {
pixmap->SetViewPort(cRect(x0, y0, viewportHeight, geoManager.rowHeight));
}

View File

@ -20,9 +20,9 @@ cEpgGrid::~cEpgGrid(void) {
void cEpgGrid::SetViewportHeight() {
int viewportHeightOld = viewportHeight;
if ( column->Start() > StartTime() ) {
viewportHeight = (min((int)EndTime(), column->Stop()) - column->Start()) /60;
viewportHeight = (std::min((int)EndTime(), column->Stop()) - column->Start()) / 60;
} else if ( column->Stop() < EndTime() ) {
viewportHeight = (column->Stop() - StartTime()) /60;
viewportHeight = (column->Stop() - StartTime()) / 60;
if (viewportHeight < 0) viewportHeight = 0;
} else {
viewportHeight = Duration() / 60;
@ -37,11 +37,11 @@ void cEpgGrid::PositionPixmap() {
int x0 = column->getX();
int y0 = geoManager.statusHeaderHeight + geoManager.channelHeaderHeight + geoManager.channelGroupsHeight;
if ( column->Start() < StartTime() ) {
y0 += (StartTime() - column->Start())/60*geoManager.minutePixel;
y0 += (StartTime() - column->Start()) / 60 * geoManager.minutePixel;
}
if (!pixmap) {
pixmap = osdManager.requestPixmap(-1, cRect(x0, y0, geoManager.colWidth, viewportHeight),
cRect(0, 0, geoManager.colWidth, Duration()/60*geoManager.minutePixel));
pixmap = osdManager.CreatePixmap(-1, cRect(x0, y0, geoManager.colWidth, viewportHeight),
cRect(0, 0, geoManager.colWidth, Duration() / 60 * geoManager.minutePixel));
} else {
pixmap->SetViewPort(cRect(x0, y0, geoManager.colWidth, viewportHeight));
}
@ -49,11 +49,11 @@ void cEpgGrid::PositionPixmap() {
int x0 = geoManager.channelHeaderWidth + geoManager.channelGroupsWidth;
int y0 = column->getY();
if ( column->Start() < StartTime() ) {
x0 += (StartTime() - column->Start())/60*geoManager.minutePixel;
x0 += (StartTime() - column->Start()) / 60 * geoManager.minutePixel;
}
if (!pixmap) {
pixmap = osdManager.requestPixmap(-1, cRect(x0, y0, viewportHeight, geoManager.rowHeight),
cRect(0, 0, Duration()/60*geoManager.minutePixel, geoManager.rowHeight));
pixmap = osdManager.CreatePixmap(-1, cRect(x0, y0, viewportHeight, geoManager.rowHeight),
cRect(0, 0, Duration() / 60 * geoManager.minutePixel, geoManager.rowHeight));
} else {
pixmap->SetViewPort(cRect(x0, y0, viewportHeight, geoManager.rowHeight ));
}

View File

@ -8,7 +8,7 @@ cFooter::cFooter(cChannelGroups *channelGroups) {
currentGroup = -1;
buttonY = (geoManager.footerHeight - geoManager.buttonHeight)/2;
SetButtonPositions();
footer = osdManager.requestPixmap(2, cRect( 0,
footer = osdManager.CreatePixmap(2, cRect( 0,
geoManager.footerY,
geoManager.osdWidth,
geoManager.footerHeight),
@ -17,7 +17,7 @@ cFooter::cFooter(cChannelGroups *channelGroups) {
}
cFooter::~cFooter(void) {
osdManager.releasePixmap(footer);
osdManager.DestroyPixmap(footer);
}
void cFooter::drawRedButton() {

View File

@ -12,19 +12,19 @@ cGeometryManager::~cGeometryManager() {
}
bool cGeometryManager::SetGeometry(int osdWidth, int osdHeight, bool force) {
if (!force && (this->osdWidth == osdWidth) && (this->osdHeight == osdHeight)) {
esyslog("tvgudie: GeoManager SetGeometry nothing to change");
return false;
}
this->osdWidth = osdWidth;
this->osdHeight = osdHeight;
esyslog("tvguide: Set OSD to %d x %d px", osdWidth, osdHeight);
if (!force && (this->osdWidth == osdWidth) && (this->osdHeight == osdHeight)) {
esyslog("tvgudie: GeoManager SetGeometry nothing to change");
return false;
}
this->osdWidth = osdWidth;
this->osdHeight = osdHeight;
esyslog("tvguide: Set OSD to %d x %d px", osdWidth, osdHeight);
statusHeaderHeight = (config.displayStatusHeader) ? (config.headerHeightPercent * osdHeight / 100):0;
statusHeaderHeight = (config.displayStatusHeader) ? (config.headerHeightPercent * osdHeight / 100) : 0;
tvFrameWidth = statusHeaderHeight * 16 / 9;
headerContentWidth = (config.scaleVideo) ? (osdWidth - tvFrameWidth):osdWidth;
channelGroupsWidth = (config.displayChannelGroups) ? (config.channelGroupsPercent * osdWidth / 100):0;
channelGroupsHeight = (config.displayChannelGroups) ? (config.channelGroupsPercent * osdHeight / 100):0;
channelGroupsWidth = (config.displayChannelGroups) ? (config.channelGroupsPercent * osdWidth / 100) : 0;
channelGroupsHeight = (config.displayChannelGroups) ? (config.channelGroupsPercent * osdHeight / 100) : 0;
channelHeaderWidth = config.channelHeaderWidthPercent * osdWidth / 100;
channelHeaderHeight = config.channelHeaderHeightPercent * osdHeight / 100;
timeLineWidth = config.timeLineWidthPercent * osdWidth / 100;

View File

@ -51,7 +51,7 @@ public:
bool Active(void) { return active; };
bool HasTimer(void) {return hasTimer;};
bool HasSwitchTimer(void) {return hasSwitchTimer;};
bool isDummy(void) { return dummy; };
bool IsDummy(void) { return dummy; };
virtual void debug() {};
};

View File

@ -8,7 +8,7 @@ cHeaderGrid::cHeaderGrid(void) : cGridElement(NULL) {
}
cHeaderGrid::~cHeaderGrid(void) {
osdManager.releasePixmap(pixmapLogo);
osdManager.DestroyPixmap(pixmapLogo);
}
void cHeaderGrid::createBackground(int num) {
@ -22,8 +22,8 @@ void cHeaderGrid::createBackground(int num) {
x = geoManager.channelGroupsWidth;
y = geoManager.statusHeaderHeight + geoManager.timeLineHeight + num*geoManager.rowHeight;
}
pixmap = osdManager.requestPixmap(1, cRect(x, y, geoManager.channelLogoWidth, geoManager.channelLogoHeight));
pixmapLogo = osdManager.requestPixmap(2, cRect(x, y, geoManager.channelLogoWidth, geoManager.channelLogoHeight));
pixmap = osdManager.CreatePixmap(1, cRect(x, y, geoManager.channelLogoWidth, geoManager.channelLogoHeight));
pixmapLogo = osdManager.CreatePixmap(2, cRect(x, y, geoManager.channelLogoWidth, geoManager.channelLogoHeight));
if ((!pixmap) || (!pixmapLogo)){
return;
}
@ -56,7 +56,8 @@ void cHeaderGrid::drawChannelHorizontal(const cChannel *channel) {
cImage *logo = imgCache.GetLogo(channel);
if (logo) {
const int logoheight = logo->Height();
pixmapLogo->DrawImage(cPoint(logoX, (Height() - logoheight) / 2), *logo);
const int logowidth = logo->Width();
pixmapLogo->DrawImage(cPoint(logoX + ((logoWidth - logowidth) / 2), (Height() - logoheight) / 2), *logo);
logoFound = true;
}
}
@ -81,7 +82,6 @@ void cHeaderGrid::drawChannelHorizontal(const cChannel *channel) {
// Draw Channel vertical view
void cHeaderGrid::drawChannelVertical(const cChannel *channel) {
int logoWidth = geoManager.logoWidth;
int logoHeight = geoManager.logoHeight;
cTextWrapper tw;
cString headerText = cString::sprintf("%d - %s", channel->Number(), channel->Name());
@ -93,8 +93,10 @@ void cHeaderGrid::drawChannelVertical(const cChannel *channel) {
if (!config.hideChannelLogos) {
cImage *logo = imgCache.GetLogo(channel);
if (logo) {
pixmapLogo->DrawImage(cPoint((Width() - logoWidth) / 2, 6), *logo);
logoFound = true;
const int logoheight = logo->Height();
const int logowidth = logo->Width();
pixmapLogo->DrawImage(cPoint((Width() - logowidth) / 2, (logoHeight - logoheight) / 2), *logo);
logoFound = true;
}
}
bool drawText = false;

View File

@ -34,19 +34,19 @@ void cImageCache::CreateCache(void) {
int start = cTimeMs::Now();
int startNext = cTimeMs::Now();
CreateOsdIconCache();
esyslog("tvguide: Osd Icon Cash created in %d ms", int(cTimeMs::Now()-startNext));
esyslog("tvguide: Osd Icon Cache created in %d ms", int(cTimeMs::Now()-startNext));
startNext = cTimeMs::Now();
PrepareGridIconCache();
CreateGridIconCache();
esyslog("tvguide: Grid Icon Cash created in %d ms", int(cTimeMs::Now()-startNext));
esyslog("tvguide: Grid Icon Cache created in %d ms", int(cTimeMs::Now()-startNext));
startNext = cTimeMs::Now();
CreateChannelGroupCache();
esyslog("tvguide: Channelgroup Cash created in %d ms", int(cTimeMs::Now()-startNext));
esyslog("tvguide: Channelgroup Cache created in %d ms", int(cTimeMs::Now()-startNext));
startNext = cTimeMs::Now();
CreateLogoCache();
esyslog("tvguide: Logo Cash created in %d ms", int(cTimeMs::Now()-startNext));
esyslog("tvguide: Logo Cache created in %d ms", int(cTimeMs::Now()-startNext));
startNext = cTimeMs::Now();
esyslog("tvguide: Complete Image Cash created in %d ms", int(cTimeMs::Now()-start));
esyslog("tvguide: Complete Image Cache created in %d ms", int(cTimeMs::Now()-start));
}
void cImageCache::CreateOsdIconCache(void) {
@ -357,7 +357,7 @@ cImage *cImageCache::GetLogo(const cChannel *channel) {
delete tempStaticLogo;
tempStaticLogo = NULL;
}
tempStaticLogo = CreateImage(geoManager.logoWidth, geoManager.logoHeight);
tempStaticLogo = CreateImage(geoManager.logoWidth * 0.8, geoManager.logoHeight * 0.8);
return tempStaticLogo;
} else {
//add requested logo to cache
@ -609,7 +609,7 @@ bool cImageCache::LoadLogo(const cChannel *channel) {
}
void cImageCache::InsertIntoLogoCache(std::string channelID) {
cImage *image = CreateImage(geoManager.logoWidth, geoManager.logoHeight);
cImage *image = CreateImage(geoManager.logoWidth * 0.8, geoManager.logoHeight * 0.8);
logoCache.insert(std::pair<std::string, cImage*>(channelID, image));
}

View File

@ -2,12 +2,21 @@
#include "osdmanager.h"
cOsdManager::cOsdManager(void) {
osd = NULL;
}
bool cOsdManager::setOsd() {
void cOsdManager::Lock(void) {
mutex.Lock();
}
void cOsdManager::Unlock(void) {
mutex.Unlock();
}
bool cOsdManager::CreateOsd(void) {
osd = cOsdProvider::NewOsd(cOsd::OsdLeft(), cOsd::OsdTop());
if (osd) {
tArea Area = { 0, 0, cOsd::OsdWidth(), cOsd::OsdHeight(), 32 };
tArea Area = { 0, 0, cOsd::OsdWidth() - 1, cOsd::OsdHeight() - 1, 32 };
if (osd->SetAreas(&Area, 1) == oeOk) {
return true;
}
@ -15,7 +24,14 @@ bool cOsdManager::setOsd() {
return false;
}
void cOsdManager::setBackground() {
void cOsdManager::DeleteOsd(void) {
Lock();
delete osd;
osd = NULL;
Unlock();
}
void cOsdManager::SetBackground(void) {
if (config.displayStatusHeader && config.scaleVideo) {
int widthStatus = cOsd::OsdWidth() - geoManager.statusHeaderHeight * 16 / 9;
@ -27,12 +43,20 @@ void cOsdManager::setBackground() {
}
cPixmap *cOsdManager::requestPixmap(int Layer, const cRect &ViewPort, const cRect &DrawPort) {
return osd->CreatePixmap(Layer, ViewPort, DrawPort);
cPixmap *cOsdManager::CreatePixmap(int Layer, const cRect &ViewPort, const cRect &DrawPort) {
if (osd)
return osd->CreatePixmap(Layer, ViewPort, DrawPort);
return NULL;
}
void cOsdManager::releasePixmap(cPixmap *pixmap) {
if (!pixmap)
void cOsdManager::DestroyPixmap(cPixmap *pixmap) {
if (!osd || !pixmap)
return;
osd->DestroyPixmap(pixmap);
}
void cOsdManager::Flush(void) {
if (osd) {
osd->Flush();
}
}

View File

@ -4,20 +4,23 @@
#include <vdr/osd.h>
class cOsdManager {
private:
cOsd *osd;
public:
cOsdManager(void);
bool setOsd();
void setBackground();
void flush() {osd->Flush();};
cPixmap *requestPixmap(int Layer, const cRect &ViewPort, const cRect &DrawPort = cRect::Null);
void releasePixmap(cPixmap *pixmap);
void deleteOsd() {delete osd;};
int Width() { return osd->Width(); };
int Height() { return osd->Height(); };
int Top() { return osd->Top(); };
int Left() { return osd->Left(); };
private:
cOsd *osd;
cMutex mutex;
public:
cOsdManager(void);
void Lock(void);
void Unlock(void);
bool CreateOsd(void);
void DeleteOsd(void);
void SetBackground(void);
cPixmap *CreatePixmap(int Layer, const cRect &ViewPort, const cRect &DrawPort = cRect::Null);
void DestroyPixmap(cPixmap *pixmap);
void Flush(void);
int Width(void) { return osd->Width(); };
int Height(void) { return osd->Height(); };
int Top(void) { return osd->Top(); };
int Left(void) { return osd->Left(); };
};
#endif //__TVGUIDE_OSDMANAGER_H

View File

@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: vdr-tvguide 0.0.1\n"
"Report-Msgid-Bugs-To: <see README>\n"
"POT-Creation-Date: 2020-02-17 14:30+0100\n"
"POT-Creation-Date: 2022-04-29 16:05+0200\n"
"PO-Revision-Date: 2013-09-21 17:49+0200\n"
"Last-Translator: My friend <Sampep> Thanks David <Gabychan> <gbonich@gmail.com>\n"
"Language-Team: \n"
@ -25,7 +25,7 @@ msgid "min"
msgstr "min"
msgid "Reruns of "
msgstr ""
msgstr "Reemissions "
msgid "No reruns found"
msgstr ""
@ -75,6 +75,15 @@ msgstr "tots els canals"
msgid "unknown channel"
msgstr "canal desconegut"
msgid "with"
msgstr ""
msgid "errors"
msgstr ""
msgid "error"
msgstr ""
msgid "Duration"
msgstr "Durada"
@ -105,12 +114,15 @@ msgstr ""
msgid "Instant Record"
msgstr "Enregistra a l'instant"
msgid "Delete Timer"
msgstr "Esborra temporitzador"
msgid "Timer On/Off"
msgstr "Temporitzador On/Off"
msgid "Edit Timer"
msgstr "Edita temporitzador"
msgid "Delete Timer"
msgstr "Esborra temporitzador"
msgid "Timer Timeline"
msgstr ""
@ -168,14 +180,14 @@ msgstr "Sí"
msgid "No"
msgstr "No"
msgid "One"
msgstr "Un"
msgid "Timer Conflicts"
msgstr "Conflicte al temporitzador"
msgid "detected"
msgstr "detectat"
msgid "Timer Conflicts"
msgstr "Conflicte al temporitzador"
msgid "Ignore Conflicts"
msgstr "Ignora conflictes"
msgid "Show conflict"
msgstr "Mostra conflicte"
@ -183,9 +195,6 @@ msgstr "Mostra conflicte"
msgid "timers involved"
msgstr "temporitzadors involucrats"
msgid "Ignore Conflicts"
msgstr "Ignora conflictes"
msgid "Ignore Conflict"
msgstr "Ignora conflicte"
@ -216,6 +225,12 @@ msgstr ""
msgid "replaced by rerun"
msgstr ""
msgid "Save"
msgstr "Desa"
msgid "Cancel"
msgstr "Cancel·la"
msgid "Timer Active"
msgstr "Temporitzador actiu"
@ -240,14 +255,11 @@ msgstr ""
msgid "New Folder"
msgstr ""
msgid "Save"
msgstr "Desa"
msgid "Create Series Timer based on:"
msgstr "Programa enregistrament de Sèries segons:"
msgid "Cancel"
msgstr "Cancel·la"
msgid "Create Series Timer based on"
msgstr "Programa enregistrament de Sèries segons"
msgid "Create Timer"
msgstr "Crea temporitzador"
msgid "Series Timer start time"
msgstr "Inici temporitzador Sèries"
@ -261,9 +273,6 @@ msgstr "Dies a enregistrar"
msgid "Day to start"
msgstr "Dia d'inici"
msgid "Create Timer"
msgstr "Crea temporitzador"
msgid "Series Timer created"
msgstr "Sèrie programada"
@ -273,17 +282,17 @@ msgstr "Inici"
msgid "Stop"
msgstr "Final"
msgid "Configure Search Timer based on"
msgstr "Configura cerca de temporitzadors segons"
msgid "Search Expression:"
msgstr "Cerca expressió:"
msgid "Configure Search Timer based on:"
msgstr "Configura cerca de temporitzadors segons:"
msgid "Continue"
msgstr "Continua"
msgid "Configure Search Timer for Search String"
msgstr "Configura cerca de temporitzadors amb text"
msgid "Search Expression:"
msgstr "Cerca expressió:"
msgid "Configure Search Timer for Search String:"
msgstr "Configura cerca de temporitzadors amb text:"
msgid "Manually configure Options"
msgstr "Opcions de configuració manual"
@ -450,7 +459,7 @@ msgstr ""
msgid "Delete Search Timer and created Timers"
msgstr ""
msgid "Search Timer sucessfully created."
msgid "Search Timer sucessfully created"
msgstr "S'ha creat cerca de temporitzador"
msgid "Search Timer update initialised"
@ -474,12 +483,12 @@ msgstr "Utilitza una altra plantilla"
msgid "search results for Favorite"
msgstr ""
msgid "search result for Favorite"
msgstr ""
msgid "search results for Search Timer"
msgstr "cerca resultats per temporitzador"
msgid "search result for Favorite"
msgstr ""
msgid "search result for Search Timer"
msgstr "cerca resultat per temporitzador"
@ -489,8 +498,8 @@ msgstr "No s'ha trobat la cadena de text"
msgid "Configure Options for Switchtimer"
msgstr "Opcions de configuració de canvi de temporitzador"
msgid "Minutes before switching"
msgstr "Minuts abans del canvi"
msgid "Create"
msgstr "Crea"
msgid "switch"
msgstr "canvia"
@ -501,12 +510,12 @@ msgstr "només anunci"
msgid "ask for switch"
msgstr "pregunta pel canvi"
msgid "Minutes before switching"
msgstr "Minuts abans del canvi"
msgid "Switch Mode"
msgstr "Mode de canvi"
msgid "Create"
msgstr "Crea"
msgid "Switch Timer sucessfully created"
msgstr "Canvi de temporitzador creat"
@ -516,6 +525,9 @@ msgstr "No s'ha creat el canvi de temporitzador"
msgid "Switch Timer deleted"
msgstr "Canvi de temporitzador esborrat"
msgid "Perform Search"
msgstr "Realitza la cerca"
msgid "Search Mode"
msgstr "Mode de cerca"
@ -534,9 +546,6 @@ msgstr "Cerca a la descripció"
msgid "Show Search Options"
msgstr "Mostra opcions de cerca"
msgid "Perform Search"
msgstr "Realitza la cerca"
msgid "search results for"
msgstr "resultats de cerca per"
@ -552,12 +561,12 @@ msgstr ""
msgid "Found"
msgstr "Trobada"
msgid "recording"
msgstr "gravació"
msgid "recordings"
msgstr "gravacions"
msgid "recording"
msgstr "gravació"
msgid "for"
msgstr "per"
@ -591,6 +600,9 @@ msgstr "expressió regular"
msgid "fuzzy"
msgstr ""
msgid "allow empty"
msgstr ""
msgid "Interval"
msgstr ""
@ -760,7 +772,7 @@ msgid "Display time in EPG Grids"
msgstr "Mostra el temps a l'EPG"
msgid "Height of Headers (Status Header and EPG View, Perc. of osd height)"
msgstr ""
msgstr "Alçada capçalera d'estat (% alçada OSD)"
msgid "Height of Footer (Perc. of osd height)"
msgstr ""
@ -898,7 +910,7 @@ msgid "Instant recording:"
msgstr ""
msgid "Folder for instant Recordings"
msgstr ""
msgstr "Utilitza carpetes per gravacions a l'instant"
msgid "Folder"
msgstr ""
@ -909,6 +921,9 @@ msgstr ""
msgid "Use Remotetimers"
msgstr "Utilitza temporitzadors remots"
msgid "Show timer confirmation messages"
msgstr ""
msgid "Favorites:"
msgstr ""
@ -997,7 +1012,7 @@ msgid "EPG Info"
msgstr ""
msgid "Reruns"
msgstr ""
msgstr "Reemissions"
msgid "Recording Information"
msgstr ""

View File

@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: vdr-tvguide 0.0.1\n"
"Report-Msgid-Bugs-To: <see README>\n"
"POT-Creation-Date: 2020-02-17 14:30+0100\n"
"POT-Creation-Date: 2022-04-29 16:05+0200\n"
"PO-Revision-Date: 2012-08-25 17:49+0200\n"
"Last-Translator: Horst\n"
"Language-Team: \n"
@ -72,6 +72,15 @@ msgstr "alle Kanäle"
msgid "unknown channel"
msgstr "unbekannter Kanal"
msgid "with"
msgstr "mit"
msgid "errors"
msgstr "Fehler"
msgid "error"
msgstr "Fehler"
msgid "Duration"
msgstr "Dauer"
@ -102,12 +111,15 @@ msgstr "erledigte Aufnahmen"
msgid "Instant Record"
msgstr "Aufnahme"
msgid "Delete Timer"
msgstr "Timer löschen"
msgid "Timer On/Off"
msgstr "Timer Ein/Aus"
msgid "Edit Timer"
msgstr "Timer bearbeiten"
msgid "Delete Timer"
msgstr "Timer löschen"
msgid "Timer Timeline"
msgstr "Timer Tagesübersicht"
@ -165,14 +177,14 @@ msgstr "Ja"
msgid "No"
msgstr "Nein"
msgid "One"
msgstr "Ein"
msgid "Timer Conflicts"
msgstr "Timerkonflikte"
msgid "detected"
msgstr "gefunden"
msgid "Timer Conflicts"
msgstr "Timerkonflikte"
msgid "Ignore Conflicts"
msgstr "Konflikte ignorieren"
msgid "Show conflict"
msgstr "Konflikt zeigen"
@ -180,9 +192,6 @@ msgstr "Konflikt zeigen"
msgid "timers involved"
msgstr "Timer beteiligt"
msgid "Ignore Conflicts"
msgstr "Konflikte ignorieren"
msgid "Ignore Conflict"
msgstr "Konflikt ignorieren"
@ -213,6 +222,12 @@ msgstr "Timer für"
msgid "replaced by rerun"
msgstr "ersetzt durch Wiederholung"
msgid "Save"
msgstr "Speichern"
msgid "Cancel"
msgstr "Abbrechen"
msgid "Timer Active"
msgstr "Timer aktiv"
@ -237,14 +252,11 @@ msgstr "Timer Datei"
msgid "New Folder"
msgstr "Neues Verzeichnis"
msgid "Save"
msgstr "Speichern"
msgid "Create Series Timer based on:"
msgstr "Serientimer anlegen basierend auf:"
msgid "Cancel"
msgstr "Abbrechen"
msgid "Create Series Timer based on"
msgstr "Serientimer anlegen basierend auf"
msgid "Create Timer"
msgstr "Timer anlegen"
msgid "Series Timer start time"
msgstr "Serientimer Start Zeit"
@ -258,9 +270,6 @@ msgstr "Tage"
msgid "Day to start"
msgstr "Beginnen am"
msgid "Create Timer"
msgstr "Timer anlegen"
msgid "Series Timer created"
msgstr "Serientimer angelegt"
@ -270,17 +279,17 @@ msgstr "Start"
msgid "Stop"
msgstr "Stop"
msgid "Configure Search Timer based on"
msgstr "Suchtimer konfigurieren basierend auf"
msgid "Search Expression:"
msgstr "Suchausdruck:"
msgid "Configure Search Timer based on:"
msgstr "Suchtimer konfigurieren basierend auf:"
msgid "Continue"
msgstr "Weiter"
msgid "Configure Search Timer for Search String"
msgstr "Suchtimer konfigurieren für Suchbegriff"
msgid "Search Expression:"
msgstr "Suchausdruck:"
msgid "Configure Search Timer for Search String:"
msgstr "Suchtimer konfigurieren für Suchbegriff:"
msgid "Manually configure Options"
msgstr "Optionen manuell konfigurieren"
@ -447,7 +456,7 @@ msgstr "Nur Suchtimer löschen"
msgid "Delete Search Timer and created Timers"
msgstr "Suchtimer und erzeugte Timer löschen"
msgid "Search Timer sucessfully created."
msgid "Search Timer sucessfully created"
msgstr "Suchtimer erfolgreich angelegt"
msgid "Search Timer update initialised"
@ -471,12 +480,12 @@ msgstr "Anderes Template benutzen"
msgid "search results for Favorite"
msgstr "Suchergebnisse für Favorit"
msgid "search result for Favorite"
msgstr "Suchergebnis für Favorit"
msgid "search results for Search Timer"
msgstr "Treffer für Suchtimer"
msgid "search result for Favorite"
msgstr "Suchergebnis für Favorit"
msgid "search result for Search Timer"
msgstr "Treffer für Suchtimer"
@ -486,8 +495,8 @@ msgstr "Keine Treffer für Suchbegriff"
msgid "Configure Options for Switchtimer"
msgstr "Optionen für Umschalttimer konfigurieren"
msgid "Minutes before switching"
msgstr "Minuten vor umschalten"
msgid "Create"
msgstr "Anlegen"
msgid "switch"
msgstr "umschalten"
@ -498,12 +507,12 @@ msgstr "nur ankündigen"
msgid "ask for switch"
msgstr "vor umschalten fragen"
msgid "Minutes before switching"
msgstr "Minuten vor umschalten"
msgid "Switch Mode"
msgstr "Umschaltmodus"
msgid "Create"
msgstr "Anlegen"
msgid "Switch Timer sucessfully created"
msgstr "Umschalttimer erfolgreich angelegt"
@ -513,6 +522,9 @@ msgstr "Umschalttimer NICHT erfolgreich angelegt"
msgid "Switch Timer deleted"
msgstr "Umschalttimer gelöscht"
msgid "Perform Search"
msgstr "Suche ausführen"
msgid "Search Mode"
msgstr "Suchmodus"
@ -531,9 +543,6 @@ msgstr "In Beschreibung suchen"
msgid "Show Search Options"
msgstr "Suchoptionen anzeigen"
msgid "Perform Search"
msgstr "Suche ausführen"
msgid "search results for"
msgstr "Suchergebnisse für"
@ -549,12 +558,12 @@ msgstr "Suchausdruck muss mindestens drei Zeichen haben"
msgid "Found"
msgstr " "
msgid "recording"
msgstr "Aufnahme gefunden"
msgid "recordings"
msgstr "Aufnahmen gefunden"
msgid "recording"
msgstr "Aufnahme gefunden"
msgid "for"
msgstr "für"
@ -588,6 +597,9 @@ msgstr "Regulärer Ausdruck"
msgid "fuzzy"
msgstr "unscharf"
msgid "allow empty"
msgstr "erlaube leere"
msgid "Interval"
msgstr "Bereich"
@ -906,6 +918,9 @@ msgstr "Untertitel in manuellen Timern"
msgid "Use Remotetimers"
msgstr "RemoteTimers benutzen"
msgid "Show timer confirmation messages"
msgstr "Timer Bestätigungsmeldungen anzeigen"
msgid "Favorites:"
msgstr "Favoriten:"
@ -955,7 +970,7 @@ msgid "Create Log Messages for image loading"
msgstr "Log Nachrichten für das Laden der Bilder erzeugen"
msgid "Limit Logo Cache"
msgstr "Logo Cash beschränken"
msgstr "Logo Cache beschränken"
msgid "Maximal number of logos to cache"
msgstr "Maximale Anzahl Logos"
@ -997,7 +1012,7 @@ msgid "Reruns"
msgstr "Wiederholungen"
msgid "Recording Information"
msgstr ""
msgstr "Aufnahme Information"
msgid "Image Galery"
msgstr "Bildergalerie"

View File

@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: vdr-tvguide 0.0.1\n"
"Report-Msgid-Bugs-To: <see README>\n"
"POT-Creation-Date: 2020-02-17 14:30+0100\n"
"POT-Creation-Date: 2022-04-29 16:05+0200\n"
"PO-Revision-Date: 2012-08-25 17:49+0200\n"
"Last-Translator: fiveten_59\n"
"Language-Team: \n"
@ -72,6 +72,15 @@ msgstr "Tutti i Canali"
msgid "unknown channel"
msgstr "Canale sconosciuto"
msgid "with"
msgstr ""
msgid "errors"
msgstr ""
msgid "error"
msgstr ""
msgid "Duration"
msgstr "Durata"
@ -102,12 +111,15 @@ msgstr "registrazione eseguita"
msgid "Instant Record"
msgstr "Registrazione immediata"
msgid "Delete Timer"
msgstr "Cancella il Timer"
msgid "Timer On/Off"
msgstr "Timer On/Off"
msgid "Edit Timer"
msgstr "Edita il Timer"
msgid "Delete Timer"
msgstr "Cancella il Timer"
msgid "Timer Timeline"
msgstr "Scadenza del Timer"
@ -165,14 +177,14 @@ msgstr "Si"
msgid "No"
msgstr "No"
msgid "One"
msgstr "Uno"
msgid "Timer Conflicts"
msgstr "Conflitti del Timer"
msgid "detected"
msgstr "rilevato"
msgid "Timer Conflicts"
msgstr "Conflitti del Timer"
msgid "Ignore Conflicts"
msgstr "Ignora conflitti"
msgid "Show conflict"
msgstr "Mostra conflitto"
@ -180,9 +192,6 @@ msgstr "Mostra conflitto"
msgid "timers involved"
msgstr "Timers impegnati"
msgid "Ignore Conflicts"
msgstr "Ignora conflitti"
msgid "Ignore Conflict"
msgstr "Ignora conflitto"
@ -213,6 +222,12 @@ msgstr "Timer per"
msgid "replaced by rerun"
msgstr "rimosso dal riavvio"
msgid "Save"
msgstr "Salva"
msgid "Cancel"
msgstr "Cancella"
msgid "Timer Active"
msgstr "Timer attivo"
@ -237,14 +252,11 @@ msgstr "File del Timer"
msgid "New Folder"
msgstr "Nuova cartella"
msgid "Save"
msgstr "Salva"
msgid "Create Series Timer based on:"
msgstr "Crea il Series Timer basato su:"
msgid "Cancel"
msgstr "Cancella"
msgid "Create Series Timer based on"
msgstr "Crea il Series Timer basato su"
msgid "Create Timer"
msgstr "Crea il Timer"
msgid "Series Timer start time"
msgstr "Ora d'avvio del Series Timer"
@ -258,9 +270,6 @@ msgstr "Giorni da registrare"
msgid "Day to start"
msgstr "Giorno d'inizio"
msgid "Create Timer"
msgstr "Crea il Timer"
msgid "Series Timer created"
msgstr "Series Timer creato"
@ -270,17 +279,17 @@ msgstr "Avvio"
msgid "Stop"
msgstr "Ferma"
msgid "Configure Search Timer based on"
msgstr "Configura il Search Timer in serie basato su"
msgid "Search Expression:"
msgstr "Cerca espressione:"
msgid "Configure Search Timer based on:"
msgstr "Configura il Search Timer in serie basato su:"
msgid "Continue"
msgstr "Continua"
msgid "Configure Search Timer for Search String"
msgstr "Configura il Search Timer basato su Search String"
msgid "Search Expression:"
msgstr "Cerca espressione:"
msgid "Configure Search Timer for Search String:"
msgstr "Configura il Search Timer basato su Search String:"
msgid "Manually configure Options"
msgstr "Configura manualmente le Opzioni"
@ -447,7 +456,7 @@ msgstr "Elimina solo il Search Timer"
msgid "Delete Search Timer and created Timers"
msgstr "Elimina il Search Timer e Timers creati"
msgid "Search Timer sucessfully created."
msgid "Search Timer sucessfully created"
msgstr "Search Timer creato con successo"
msgid "Search Timer update initialised"
@ -471,12 +480,12 @@ msgstr "Anderes Template benutzen"
msgid "search results for Favorite"
msgstr "Suchergebnisse für Favorit"
msgid "search result for Favorite"
msgstr "Suchergebnis für Favorit"
msgid "search results for Search Timer"
msgstr "Treffer für Suchtimer"
msgid "search result for Favorite"
msgstr "Suchergebnis für Favorit"
msgid "search result for Search Timer"
msgstr "Treffer für Suchtimer"
@ -486,8 +495,8 @@ msgstr "Keine Treffer für Suchbegriff"
msgid "Configure Options for Switchtimer"
msgstr "Optionen für Umschalttimer konfigurieren"
msgid "Minutes before switching"
msgstr "Minuten vor umschalten"
msgid "Create"
msgstr "Creare"
msgid "switch"
msgstr "cambio"
@ -498,12 +507,12 @@ msgstr "Segnala solamente"
msgid "ask for switch"
msgstr "chiedi per cambiare"
msgid "Minutes before switching"
msgstr "Minuten vor umschalten"
msgid "Switch Mode"
msgstr "Modalità Switch"
msgid "Create"
msgstr "Creare"
msgid "Switch Timer sucessfully created"
msgstr "Switch Timer creato con successo"
@ -513,6 +522,9 @@ msgstr "Switch Timer NON creato"
msgid "Switch Timer deleted"
msgstr "Switch Timer eliminato"
msgid "Perform Search"
msgstr "Fai una ricerca"
msgid "Search Mode"
msgstr "Modalità di ricerca"
@ -531,9 +543,6 @@ msgstr "Cerca nella descrizione"
msgid "Show Search Options"
msgstr "Mostra opzioni di ricerca"
msgid "Perform Search"
msgstr "Fai una ricerca"
msgid "search results for"
msgstr "cerca risultati per"
@ -549,12 +558,12 @@ msgstr "Search String deve avere almeno tre lettere"
msgid "Found"
msgstr "Trovato"
msgid "recording"
msgstr "registrazione"
msgid "recordings"
msgstr "registrazioni"
msgid "recording"
msgstr "registrazione"
msgid "for"
msgstr "per"
@ -588,6 +597,9 @@ msgstr "Regulärer Ausdruck"
msgid "fuzzy"
msgstr ""
msgid "allow empty"
msgstr ""
msgid "Interval"
msgstr ""
@ -906,6 +918,9 @@ msgstr "Aggiungi episodi ai timer manuali"
msgid "Use Remotetimers"
msgstr "Usa Remotetimers"
msgid "Show timer confirmation messages"
msgstr ""
msgid "Favorites:"
msgstr ""

View File

@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: vdr-tvguide 1.0.0\n"
"Report-Msgid-Bugs-To: <see README>\n"
"POT-Creation-Date: 2020-02-17 14:30+0100\n"
"POT-Creation-Date: 2022-04-29 16:05+0200\n"
"PO-Revision-Date: 2013-09-25 17:49+0400\n"
"Last-Translator: AmiD, ilya\n"
"Language-Team: Russia-Cherepovets(wm.amid@gmail.com)\n"
@ -22,7 +22,7 @@ msgid "min"
msgstr "мин"
msgid "Reruns of "
msgstr ""
msgstr "ПОВТОРЫ ЭТОЙ "
msgid "No reruns found"
msgstr ""
@ -72,6 +72,15 @@ msgstr "все каналы"
msgid "unknown channel"
msgstr "неизвестный канал"
msgid "with"
msgstr ""
msgid "errors"
msgstr ""
msgid "error"
msgstr ""
msgid "Duration"
msgstr "Продолжительность"
@ -102,12 +111,15 @@ msgstr ""
msgid "Instant Record"
msgstr "Записать"
msgid "Delete Timer"
msgstr "Удалить таймер"
msgid "Timer On/Off"
msgstr "таймер Вкл/Выкл"
msgid "Edit Timer"
msgstr "Редактировать таймер"
msgid "Delete Timer"
msgstr "Удалить таймер"
msgid "Timer Timeline"
msgstr ""
@ -165,14 +177,14 @@ msgstr "Да"
msgid "No"
msgstr "Нет"
msgid "One"
msgstr "Один"
msgid "Timer Conflicts"
msgstr "Таймер-конфликты"
msgid "detected"
msgstr "обнаружен"
msgid "Timer Conflicts"
msgstr "Таймер-конфликты"
msgid "Ignore Conflicts"
msgstr "Игнорировать конфликты"
msgid "Show conflict"
msgstr "Показать конфликты"
@ -180,9 +192,6 @@ msgstr "Показать конфликты"
msgid "timers involved"
msgstr "Таймер"
msgid "Ignore Conflicts"
msgstr "Игнорировать конфликты"
msgid "Ignore Conflict"
msgstr "Игнорировать конфликт"
@ -213,6 +222,12 @@ msgstr ""
msgid "replaced by rerun"
msgstr ""
msgid "Save"
msgstr "Сохранить"
msgid "Cancel"
msgstr "Отменить"
msgid "Timer Active"
msgstr "Таймер активен"
@ -237,14 +252,11 @@ msgstr ""
msgid "New Folder"
msgstr ""
msgid "Save"
msgstr "Сохранить"
msgid "Create Series Timer based on:"
msgstr "Настроить циклический таймер:"
msgid "Cancel"
msgstr "Отменить"
msgid "Create Series Timer based on"
msgstr "Настроить циклический таймер"
msgid "Create Timer"
msgstr "Создать"
msgid "Series Timer start time"
msgstr "Время с"
@ -258,9 +270,6 @@ msgstr "Дни недели"
msgid "Day to start"
msgstr "Начиная с"
msgid "Create Timer"
msgstr "Создать"
msgid "Series Timer created"
msgstr "Циклический таймер создан"
@ -270,17 +279,17 @@ msgstr "Старт"
msgid "Stop"
msgstr "Стоп"
msgid "Configure Search Timer based on"
msgstr "Настроить поисковый таймер"
msgid "Search Expression:"
msgstr "Искать выражение:"
msgid "Configure Search Timer based on:"
msgstr "Настроить поисковый таймер:"
msgid "Continue"
msgstr "Продолжить"
msgid "Configure Search Timer for Search String"
msgstr "Настройка таймера поиска по ключевым словам"
msgid "Search Expression:"
msgstr "Искать выражение:"
msgid "Configure Search Timer for Search String:"
msgstr "Настройка таймера поиска по ключевым словам:"
msgid "Manually configure Options"
msgstr "Ручная настройка параметров"
@ -295,7 +304,7 @@ msgid "No Search Timers Configured"
msgstr ""
msgid "Configure Search Timer Options"
msgstr ""
msgstr "Настроить параметры таймера"
msgid "Save Search Timer"
msgstr ""
@ -447,7 +456,7 @@ msgstr ""
msgid "Delete Search Timer and created Timers"
msgstr ""
msgid "Search Timer sucessfully created."
msgid "Search Timer sucessfully created"
msgstr "Поисковый таймер создан"
msgid "Search Timer update initialised"
@ -471,12 +480,12 @@ msgstr "Использовать другие шаблоны"
msgid "search results for Favorite"
msgstr ""
msgid "search result for Favorite"
msgstr ""
msgid "search results for Search Timer"
msgstr "Совпадений найдено"
msgid "search result for Favorite"
msgstr ""
msgid "search result for Search Timer"
msgstr "Совпадение найдено"
@ -486,8 +495,8 @@ msgstr "Совпадений НЕ найдено"
msgid "Configure Options for Switchtimer"
msgstr "Настройка таймера переключения"
msgid "Minutes before switching"
msgstr "Минут до события"
msgid "Create"
msgstr "Создать"
msgid "switch"
msgstr "Переключить"
@ -498,12 +507,12 @@ msgstr "Только предупредить"
msgid "ask for switch"
msgstr "Спросить о переключении"
msgid "Minutes before switching"
msgstr "Минут до события"
msgid "Switch Mode"
msgstr "Режим переключения"
msgid "Create"
msgstr "Создать"
msgid "Switch Timer sucessfully created"
msgstr "Таймер переключения создан"
@ -513,6 +522,9 @@ msgstr "Таймер переключения НЕ был создан!"
msgid "Switch Timer deleted"
msgstr "Таймер переключения удален"
msgid "Perform Search"
msgstr "Найти"
msgid "Search Mode"
msgstr "Режим поиска"
@ -531,9 +543,6 @@ msgstr "Искать в описаниях"
msgid "Show Search Options"
msgstr "Показать параметры поиска"
msgid "Perform Search"
msgstr "Найти"
msgid "search results for"
msgstr "Найдено по запросу"
@ -549,12 +558,12 @@ msgstr ""
msgid "Found"
msgstr "Найдено"
msgid "recording"
msgstr "запись"
msgid "recordings"
msgstr "записей"
msgid "recording"
msgstr "запись"
msgid "for"
msgstr "для"
@ -588,6 +597,9 @@ msgstr "регулярные выражения"
msgid "fuzzy"
msgstr ""
msgid "allow empty"
msgstr ""
msgid "Interval"
msgstr ""
@ -757,7 +769,7 @@ msgid "Display time in EPG Grids"
msgstr "Показывать время в сетке EPG"
msgid "Height of Headers (Status Header and EPG View, Perc. of osd height)"
msgstr ""
msgstr "Высота верхней панели (% от высоты OSD)"
msgid "Height of Footer (Perc. of osd height)"
msgstr ""
@ -895,7 +907,7 @@ msgid "Instant recording:"
msgstr ""
msgid "Folder for instant Recordings"
msgstr ""
msgstr "Использовать директории для быстрой записи"
msgid "Folder"
msgstr ""
@ -906,6 +918,9 @@ msgstr ""
msgid "Use Remotetimers"
msgstr "RemoteTimers benutzen"
msgid "Show timer confirmation messages"
msgstr ""
msgid "Favorites:"
msgstr ""
@ -994,7 +1009,7 @@ msgid "EPG Info"
msgstr ""
msgid "Reruns"
msgstr ""
msgstr "ПОВТОРЫ"
msgid "Recording Information"
msgstr ""

View File

@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: vdr-tvguide 1.1.0\n"
"Report-Msgid-Bugs-To: <see README>\n"
"POT-Creation-Date: 2020-02-17 14:30+0100\n"
"POT-Creation-Date: 2022-04-29 16:05+0200\n"
"PO-Revision-Date: 2013-09-15 00:12+0100\n"
"Last-Translator: Milan Hrala <hrala.milan@gmail.com>\n"
"Language-Team: \n"
@ -22,7 +22,7 @@ msgid "min"
msgstr "min"
msgid "Reruns of "
msgstr ""
msgstr "Repríza tohto "
msgid "No reruns found"
msgstr ""
@ -72,6 +72,15 @@ msgstr "v
msgid "unknown channel"
msgstr "neznámy Kanal"
msgid "with"
msgstr ""
msgid "errors"
msgstr ""
msgid "error"
msgstr ""
msgid "Duration"
msgstr "Då¾ka"
@ -102,12 +111,15 @@ msgstr ""
msgid "Instant Record"
msgstr "Okam¾ite nahra»"
msgid "Delete Timer"
msgstr "Vymaza» plán nahrávania"
msgid "Timer On/Off"
msgstr "Zap./Vyp. plán nahrávania"
msgid "Edit Timer"
msgstr "Upravi» plán nahrávania"
msgid "Delete Timer"
msgstr "Vymaza» plán nahrávania"
msgid "Timer Timeline"
msgstr ""
@ -165,14 +177,14 @@ msgstr "
msgid "No"
msgstr "Nie"
msgid "One"
msgstr "Jeden"
msgid "Timer Conflicts"
msgstr "Konflikty plánov"
msgid "detected"
msgstr "nájdených"
msgid "Timer Conflicts"
msgstr "Konflikty plánov"
msgid "Ignore Conflicts"
msgstr "Ignorova» konflikty"
msgid "Show conflict"
msgstr "Zobrazi» konflikt"
@ -180,9 +192,6 @@ msgstr "Zobrazi
msgid "timers involved"
msgstr "plány komplikované"
msgid "Ignore Conflicts"
msgstr "Ignorova» konflikty"
msgid "Ignore Conflict"
msgstr "Ignorova» konflikt"
@ -213,6 +222,12 @@ msgstr ""
msgid "replaced by rerun"
msgstr ""
msgid "Save"
msgstr "Ulo¾i»"
msgid "Cancel"
msgstr "Zru¹i»"
msgid "Timer Active"
msgstr "Plán aktívny"
@ -237,14 +252,11 @@ msgstr ""
msgid "New Folder"
msgstr ""
msgid "Save"
msgstr "Ulo¾i»"
msgid "Create Series Timer based on:"
msgstr "Vytvorenie plánu na základe série:"
msgid "Cancel"
msgstr "Zru¹i»"
msgid "Create Series Timer based on"
msgstr "Vytvorenie plánu na základe série"
msgid "Create Timer"
msgstr "Vytvori» plán"
msgid "Series Timer start time"
msgstr "Sériový plán zaèína"
@ -258,9 +270,6 @@ msgstr "Dni"
msgid "Day to start"
msgstr "Zaèína dòa"
msgid "Create Timer"
msgstr "Vytvori» plán"
msgid "Series Timer created"
msgstr "Vytvorený sériový plán"
@ -270,17 +279,17 @@ msgstr "
msgid "Stop"
msgstr "Stop"
msgid "Configure Search Timer based on"
msgstr "Vyhµadávanie plánu nastavi» na základe"
msgid "Search Expression:"
msgstr "Hµadaný výraz:"
msgid "Configure Search Timer based on:"
msgstr "Vyhµadávanie plánu nastavi» na základe:"
msgid "Continue"
msgstr "Ïal¹ie"
msgid "Configure Search Timer for Search String"
msgstr "Konfigurácia vyhµadávania plánu pre hµadané kµúèové slovo "
msgid "Search Expression:"
msgstr "Hµadaný výraz:"
msgid "Configure Search Timer for Search String:"
msgstr "Konfigurácia vyhµadávania plánu pre hµadané kµúèové slovo:"
msgid "Manually configure Options"
msgstr "Ruène konfigurova» mo¾nosti"
@ -447,8 +456,8 @@ msgstr ""
msgid "Delete Search Timer and created Timers"
msgstr ""
msgid "Search Timer sucessfully created."
msgstr "Vyhµadávaè plánu vytvorený."
msgid "Search Timer sucessfully created"
msgstr "Vyhµadávaè plánu vytvorený"
msgid "Search Timer update initialised"
msgstr "Vyhladávaè plánu inicializovaný"
@ -471,12 +480,12 @@ msgstr "Pou
msgid "search results for Favorite"
msgstr ""
msgid "search result for Favorite"
msgstr ""
msgid "search results for Search Timer"
msgstr "nájdené výsledky vyhµadávania plánu"
msgid "search result for Favorite"
msgstr ""
msgid "search result for Search Timer"
msgstr "nájdený výsledok vyhµadávania plánu"
@ -486,8 +495,8 @@ msgstr "H
msgid "Configure Options for Switchtimer"
msgstr "Konfigurova» mo¾nosti pre prepínací plán"
msgid "Minutes before switching"
msgstr "Minúty pred prepnutím"
msgid "Create"
msgstr "Vytvori»"
msgid "switch"
msgstr "Prepnú»"
@ -498,12 +507,12 @@ msgstr "iba ozn
msgid "ask for switch"
msgstr "opýta» sa na prepnutie"
msgid "Minutes before switching"
msgstr "Minúty pred prepnutím"
msgid "Switch Mode"
msgstr "Prepínací re¾im"
msgid "Create"
msgstr "Vytvori»"
msgid "Switch Timer sucessfully created"
msgstr "Prepnutie je naplánované"
@ -513,6 +522,9 @@ msgstr "Pl
msgid "Switch Timer deleted"
msgstr "Plán prepnutia vymazaný"
msgid "Perform Search"
msgstr "Vykona» vyhµadávanie"
msgid "Search Mode"
msgstr "Re¾im vyhµadávania"
@ -531,9 +543,6 @@ msgstr "H
msgid "Show Search Options"
msgstr "Zobrazi» mo¾nosti vyhµadávania"
msgid "Perform Search"
msgstr "Vykona» vyhµadávanie"
msgid "search results for"
msgstr "vyhµadané výsledky pre"
@ -549,12 +558,12 @@ msgstr ""
msgid "Found"
msgstr "Nájdené"
msgid "recording"
msgstr "nahrávka"
msgid "recordings"
msgstr "nahrávky"
msgid "recording"
msgstr "nahrávka"
msgid "for"
msgstr "pre"
@ -588,6 +597,9 @@ msgstr "regul
msgid "fuzzy"
msgstr ""
msgid "allow empty"
msgstr ""
msgid "Interval"
msgstr ""
@ -757,7 +769,7 @@ msgid "Display time in EPG Grids"
msgstr "Zobrazi» èas v EPG mrie¾ke"
msgid "Height of Headers (Status Header and EPG View, Perc. of osd height)"
msgstr ""
msgstr "Vý¹ka stavovej hlavièky (% z OSD vý¹ky)"
msgid "Height of Footer (Perc. of osd height)"
msgstr ""
@ -895,7 +907,7 @@ msgid "Instant recording:"
msgstr ""
msgid "Folder for instant Recordings"
msgstr ""
msgstr "Pou¾i» adresáre pre okam¾ité nahrávky"
msgid "Folder"
msgstr ""
@ -906,6 +918,9 @@ msgstr "Prida
msgid "Use Remotetimers"
msgstr "Pou¾i» vzdialený plánovaè"
msgid "Show timer confirmation messages"
msgstr ""
msgid "Favorites:"
msgstr ""
@ -994,7 +1009,7 @@ msgid "EPG Info"
msgstr ""
msgid "Reruns"
msgstr ""
msgstr "Repríza"
msgid "Recording Information"
msgstr ""

View File

@ -1,4 +1,4 @@
#define __STL_CONFIG_H
#define DISABLE_TEMPLATES_COLLIDING_WITH_STL
#include <string>
#include <sstream>
@ -130,7 +130,7 @@ cTimer *cRecManager::createLocalTimer(const cEvent *event, std::string path) {
isyslog("timer %s added (active)", *timer->ToDescr());
#endif
}
return timer;
return timers->GetTimer(timer);
}
cTimer *cRecManager::createRemoteTimer(const cEvent *event, std::string path) {
@ -267,6 +267,21 @@ void cRecManager::DeleteRemoteTimer(const cEvent *event) {
}
}
void cRecManager::OnOffTimer(const cEvent *event) {
const cTimer *t;
#if VDRVERSNUM >= 20301
{
LOCK_TIMERS_READ;
t = Timers->GetMatch(event);
}
#else
t = Timers.GetMatch(event);
#endif
if (!t)
return;
SaveTimer(t);
}
void cRecManager::SaveTimer(const cTimer *t, cTimer *newTimerSettings) {
if (!t)
return;
@ -280,27 +295,34 @@ void cRecManager::SaveTimer(const cTimer *t, cTimer *newTimerSettings) {
esyslog(tr("tvguide: RemoteTimerModifications failed"));
}
}
cTimer *timer = timers->GetTimer(t);
#else
cTimers* timers = &Timers;
cTimer *timer = timers->GetTimer((cTimer *)t);
#endif
cTimer *timer = timers->GetTimer(t);
if (!timer) {
return;
}
bool active = newTimerSettings->HasFlags(tfActive);
int prio = newTimerSettings->Priority();
int lifetime = newTimerSettings->Lifetime();
time_t day = newTimerSettings->Day();
int start = newTimerSettings->Start();
int stop = newTimerSettings->Stop();
std::string fileName = newTimerSettings->File();
timer->SetDay(day);
timer->SetStart(start);
timer->SetStop(stop);
timer->SetPriority(prio);
timer->SetLifetime(lifetime);
timer->SetFile(fileName.c_str());
bool active = true;
if (newTimerSettings) {
int prio = newTimerSettings->Priority();
int lifetime = newTimerSettings->Lifetime();
time_t day = newTimerSettings->Day();
int start = newTimerSettings->Start();
int stop = newTimerSettings->Stop();
std::string fileName = newTimerSettings->File();
timer->SetDay(day);
timer->SetStart(start);
timer->SetStop(stop);
timer->SetPriority(prio);
timer->SetLifetime(lifetime);
timer->SetFile(fileName.c_str());
active = newTimerSettings->HasFlags(tfActive);
} else
active = !timer->HasFlags(tfActive);
if (active)
timer->SetFlags(tfActive);
@ -317,11 +339,7 @@ void cRecManager::SaveTimer(const cTimer *t, cTimer *newTimerSettings) {
rt.timer = NULL;
RefreshRemoteTimers();
} else {
#if VDRVERSNUM >= 20301
timers->SetModified();
#else
timers.SetModified();
#endif
}
}

View File

@ -33,11 +33,12 @@ public:
cTimer *createLocalTimer(const cEvent *event, std::string path);
cTimer *createRemoteTimer(const cEvent *event, std::string path);
void SetTimerPath(cTimer *timer, const cEvent *event, std::string path);
void OnOffTimer(const cEvent *event);
void DeleteTimer(const cTimer *timer);
void DeleteTimer(const cEvent *event);
void DeleteLocalTimer(const cEvent *event);
void DeleteRemoteTimer(const cEvent *event);
void SaveTimer(const cTimer *timer, cTimer *newTimerSettings);
void SaveTimer(const cTimer *timer, cTimer *newTimerSettings = NULL);
bool IsRecorded(const cEvent *event);
cTVGuideTimerConflicts *CheckTimerConflict(void);
void CreateSeriesTimer(cTimer *seriesTimer);

View File

@ -28,7 +28,7 @@ cRecMenu::~cRecMenu(void) {
if (footer)
delete footer;
if (pixmapScrollBar)
osdManager.releasePixmap(pixmapScrollBar);
osdManager.DestroyPixmap(pixmapScrollBar);
if (imgScrollBar)
delete imgScrollBar;
}
@ -81,26 +81,26 @@ bool cRecMenu::CalculateHeight(bool reDraw) {
void cRecMenu::CreatePixmap(void) {
if (pixmap)
osdManager.releasePixmap(pixmap);
pixmap = osdManager.requestPixmap(3, cRect(x, y, width, height));
osdManager.DestroyPixmap(pixmap);
pixmap = osdManager.CreatePixmap(3, cRect(x, y, width, height));
if (scrollable) {
int scrollBarX = x + width - scrollbarWidth - border;
int scrollBarY = y + border + headerHeight;
int scrollBarHeight = height - headerHeight - footerHeight - 2 * border;
if (pixmapScrollBar)
osdManager.releasePixmap(pixmapScrollBar);
pixmapScrollBar = osdManager.requestPixmap(4, cRect(scrollBarX, scrollBarY, scrollbarWidth, scrollBarHeight));
osdManager.DestroyPixmap(pixmapScrollBar);
pixmapScrollBar = osdManager.CreatePixmap(4, cRect(scrollBarX, scrollBarY, scrollbarWidth, scrollBarHeight));
} else
pixmapScrollBar = NULL;
}
void cRecMenu::SetHeader(cRecMenuItem *header) {
this->header = header;
void cRecMenu::AddHeader(cRecMenuItem *header) {
this->header = header;
headerHeight = header->GetHeight();
height += headerHeight;
}
void cRecMenu::SetFooter(cRecMenuItem *footer) {
void cRecMenu::AddFooter(cRecMenuItem *footer) {
this->footer = footer;
footerHeight = footer->GetHeight();
height += footerHeight;
@ -121,12 +121,11 @@ void cRecMenu::InitMenu(bool complete) {
numItems = 0;
if (scrollable) {
width -= scrollbarWidth + border;
osdManager.releasePixmap(pixmapScrollBar);
osdManager.DestroyPixmap(pixmapScrollBar);
pixmapScrollBar = NULL;
delete imgScrollBar;
imgScrollBar = NULL;
DELETENULL(imgScrollBar);
}
osdManager.releasePixmap(pixmap);
osdManager.DestroyPixmap(pixmap);
pixmap = NULL;
for (std::list<cRecMenuItem*>::iterator it = menuItems.begin(); it != menuItems.end(); it++) {
if (deleteMenuItems)
@ -179,14 +178,14 @@ void cRecMenu::Activate(cRecMenuItem *itemOld, cRecMenuItem *item) {
itemOld->setInactive();
itemOld->setBackground();
itemOld->Draw();
item->setActive();
item->SetActive();
item->setBackground();
item->Draw();
}
bool cRecMenu::ActivatePrev(void) {
cRecMenuItem *activeItem = GetActiveMenuItem();
if (!scrollable && footer && footer->isActive()) {
if (!scrollable && footer && footer->IsActive()) {
if (menuItems.size() > 0) {
cRecMenuItem *itemLast = menuItems.back();
Activate(footer, itemLast);
@ -217,7 +216,7 @@ bool cRecMenu::ActivatePrev(void) {
}
bool cRecMenu::ScrollUp(void) {
if (footer && footer->isActive()) {
if (footer && footer->IsActive()) {
if (menuItems.size() > 0)
Activate(footer, menuItems.back());
} else {
@ -275,7 +274,7 @@ bool cRecMenu::ActivateNext(void) {
if (next) {
Activate(activeItem , next);
return true;
} else if (!scrollable && footer && footer->isSelectable() && !footer->isActive()) {
} else if (!scrollable && footer && footer->isSelectable() && !footer->IsActive()) {
Activate(activeItem , footer);
return true;
}
@ -313,7 +312,7 @@ bool cRecMenu::ScrollDown(void) {
ActivateNext();
} else {
//last item reached, activate footer if not already active
if ((footer) && !(footer->isActive())) {
if ((footer) && !(footer->IsActive())) {
cRecMenuItem *activeItem = GetActiveMenuItem();
Activate(activeItem , footer);
} else {
@ -335,7 +334,7 @@ void cRecMenu::PageUp(void) {
Activate(footer, menuItems.front());
return;
}
int newActive = GetActive() - numItems;
int newActive = GetNumActive() - numItems;
if (newActive < 0)
newActive = 0;
activeItem->setInactive();
@ -348,7 +347,7 @@ void cRecMenu::PageUp(void) {
bool spaceLeft = true;
while (newItem = GetMenuItem(startIndex-1)) {
if (startIndex-1 == newActive)
newItem->setActive();
newItem->SetActive();
spaceLeft = AddMenuItemInitial(newItem, true);
if (!spaceLeft)
break;
@ -360,8 +359,8 @@ void cRecMenu::PageUp(void) {
break;
}
}
if (GetActive() == numItems)
menuItems.front()->setActive();
if (GetNumActive() == numItems)
menuItems.front()->SetActive();
if (CalculateHeight(true))
CreatePixmap();
Arrange(deleteMenuItems);
@ -379,7 +378,7 @@ void cRecMenu::PageDown(void) {
JumpEnd();
return;
}
int newActive = GetActive() + numItems;
int newActive = GetNumActive() + numItems;
activeItem->setInactive();
activeItem->setBackground();
ClearMenuItems();
@ -390,7 +389,7 @@ void cRecMenu::PageDown(void) {
bool spaceLeft = true;
while (newItem = GetMenuItem(stopIndex)) {
if (stopIndex == newActive)
newItem->setActive();
newItem->SetActive();
spaceLeft = AddMenuItemInitial(newItem);
if (!spaceLeft)
break;
@ -402,8 +401,8 @@ void cRecMenu::PageDown(void) {
break;
}
}
if (GetActive() == GetTotalNumMenuItems())
menuItems.back()->setActive();
if (GetNumActive() == GetTotalNumMenuItems())
menuItems.back()->SetActive();
if (CalculateHeight(true))
CreatePixmap();
Arrange(deleteMenuItems);
@ -441,9 +440,9 @@ void cRecMenu::JumpBegin(void) {
CreatePixmap();
Arrange(false);
startIndex = 0;
stopIndex = numItems - 1;
stopIndex = currentItem;
cRecMenuItem *first = menuItems.front();
first->setActive();
first->SetActive();
first->setBackground();
first->Draw();
Display(false);
@ -491,12 +490,12 @@ void cRecMenu::JumpEnd(void) {
stopIndex = totalNumItems;
startIndex = stopIndex - numItems;
if (footer) {
footer->setActive();
footer->SetActive();
footer->setBackground();
footer->Draw();
} else {
cRecMenuItem *last = menuItems.back();
last->setActive();
last->SetActive();
last->setBackground();
last->Draw();
}
@ -589,13 +588,17 @@ void cRecMenu::UpdateActiveMenuItem(void) {
void cRecMenu::DrawScrollBar(void) {
if (!pixmapScrollBar)
return;
pixmapScrollBar->Fill(theme.Color(clrBorder));
pixmapScrollBar->DrawRectangle(cRect(2,2,pixmapScrollBar->ViewPort().Width()-4, pixmapScrollBar->ViewPort().Height() - 4), theme.Color(clrBackground));
pixmapScrollBar->DrawRectangle(cRect(2, 2, pixmapScrollBar->ViewPort().Width() - 4, pixmapScrollBar->ViewPort().Height() - 4), theme.Color(clrBackground));
int totalNumItems = GetTotalNumMenuItems();
if (imgScrollBar == NULL) {
if (!totalNumItems)
return;
if (!imgScrollBar) {
int scrollBarImgHeight = (pixmapScrollBar->ViewPort().Height() - 8) * numItems / totalNumItems;
imgScrollBar = createScrollbar(pixmapScrollBar->ViewPort().Width()-8, scrollBarImgHeight, theme.Color(clrHighlight), theme.Color(clrHighlightBlending));
imgScrollBar = createScrollbar(pixmapScrollBar->ViewPort().Width() - 8, scrollBarImgHeight, theme.Color(clrHighlight), theme.Color(clrHighlightBlending));
}
int offset = (pixmapScrollBar->ViewPort().Height() - 8) * startIndex / totalNumItems;
pixmapScrollBar->DrawImage(cPoint(4, 2 + offset), *imgScrollBar);
@ -603,10 +606,10 @@ void cRecMenu::DrawScrollBar(void) {
cRecMenuItem *cRecMenu::GetActiveMenuItem(void) {
for (std::list<cRecMenuItem*>::iterator item = menuItems.begin(); item != menuItems.end(); item++) {
if ((*item)->isActive())
if ((*item)->IsActive())
return *item;
}
if (footer && footer->isActive())
if (footer && footer->IsActive())
return footer;
return NULL;
}
@ -621,10 +624,10 @@ cRecMenuItem *cRecMenu::GetMenuItemAt(int num) {
return NULL;
}
int cRecMenu::GetActive(void) {
int cRecMenu::GetNumActive(void) {
int numActive = startIndex;
for (std::list<cRecMenuItem*>::iterator item = menuItems.begin(); item != menuItems.end(); item++) {
if ((*item)->isActive()) {
if ((*item)->IsActive()) {
break;
}
numActive++;
@ -674,25 +677,21 @@ eRecMenuState cRecMenu::ProcessKey(eKeys Key) {
cImage *cRecMenu::createScrollbar(int width, int height, tColor clrBgr, tColor clrBlend) {
cImage *image = new cImage(cSize(width, height));
image->Fill(clrBgr);
if (config.style != eStyleFlat) {
if (height >= 32 && config.style != eStyleFlat) {
int numSteps = 64;
int alphaStep = 0x03;
if (height < 30)
return image;
else if (height < 100) {
if (height < 100) {
numSteps = 32;
alphaStep = 0x06;
}
int stepY = 0.5*height / numSteps;
if (stepY == 0)
stepY = 1;
int stepY = std::max(1, (int)(0.5 * height / numSteps));
int alpha = 0x40;
tColor clr;
for (int i = 0; i<numSteps; i++) {
for (int i = 0; i < numSteps; i++) {
clr = AlphaBlend(clrBgr, clrBlend, alpha);
for (int y = i*stepY; y < (i+1)*stepY; y++) {
for (int x=0; x<width; x++) {
image->SetPixel(cPoint(x,y), clr);
for (int y = i * stepY; y < (i + 1) * stepY; y++) {
for (int x = 0; x < width; x++) {
image->SetPixel(cPoint(x, y), clr);
}
}
alpha += alphaStep;

View File

@ -37,8 +37,8 @@ protected:
int CalculateOptimalWidth(void);
bool CalculateHeight(bool reDraw = false);
void CreatePixmap(void);
void SetHeader(cRecMenuItem *header);
void SetFooter(cRecMenuItem *footer);
void AddHeader(cRecMenuItem *header);
void AddFooter(cRecMenuItem *footer);
void ClearMenuItems(bool destructor = false);
void InitMenu(bool complete);
bool AddMenuItemInitial(cRecMenuItem *item, bool inFront = false);
@ -53,7 +53,7 @@ protected:
virtual int GetTotalNumMenuItems(void) { return 0; };
virtual void CreateMenuItems(void) {};
int GetStartIndex(void) { return startIndex; };
int GetActive(void);
int GetNumActive(void);
public:
cRecMenu(void);
virtual ~cRecMenu(void);
@ -63,4 +63,4 @@ public:
void UpdateActiveMenuItem(void);
virtual eRecMenuState ProcessKey(eKeys Key);
};
#endif //__TVGUIDE_RECMENU_H
#endif //__TVGUIDE_RECMENU_H

View File

@ -30,7 +30,7 @@ void cRecMenuItem::SetGeometry(int x, int y, int width) {
void cRecMenuItem::SetPixmaps(void) {
if (!pixmap)
pixmap = osdManager.requestPixmap(4, cRect(x, y, width, height));
pixmap = osdManager.CreatePixmap(4, cRect(x, y, width, height));
else
pixmap->SetViewPort(cRect(x, y, width, height));
}
@ -76,7 +76,7 @@ cRecMenuItemButton::cRecMenuItemButton(const char *text, eRecMenuState action, b
cRecMenuItemButton::~cRecMenuItemButton(void) {
if (pixmapText)
osdManager.releasePixmap(pixmapText);
osdManager.DestroyPixmap(pixmapText);
}
int cRecMenuItemButton::GetWidth(void) {
@ -89,8 +89,8 @@ void cRecMenuItemButton::SetPixmaps(void) {
width = width / 2;
}
if (!pixmap) {
pixmap = osdManager.requestPixmap(4, cRect(x, y, width, height));
pixmapText = osdManager.requestPixmap(5, cRect(x, y, width, height));
pixmap = osdManager.CreatePixmap(4, cRect(x, y, width, height));
pixmapText = osdManager.CreatePixmap(5, cRect(x, y, width, height));
} else {
pixmap->SetViewPort(cRect(x, y, width, height));
pixmapText->SetViewPort(cRect(x, y, width, height));
@ -158,8 +158,8 @@ void cRecMenuItemButtonYesNo::SetPixmaps(void) {
int noX = x + 52 * width / 100;
int yPixmaps = y + geoManager.borderRecMenus / 2;
if (!pixmap) {
pixmap = osdManager.requestPixmap(4, cRect(yesX, yPixmaps, buttonWidth, height));
pixmapNo = new cStyledPixmap(osdManager.requestPixmap(4, cRect(noX, yPixmaps, buttonWidth, height)));
pixmap = osdManager.CreatePixmap(4, cRect(yesX, yPixmaps, buttonWidth, height));
pixmapNo = new cStyledPixmap(osdManager.CreatePixmap(4, cRect(noX, yPixmaps, buttonWidth, height)));
} else {
pixmap->SetViewPort(cRect(yesX, yPixmaps, buttonWidth, height));
pixmapNo->SetViewPort(cRect(noX, yPixmaps, buttonWidth, height));
@ -266,15 +266,41 @@ cRecMenuItemInfo::cRecMenuItemInfo(const char *text, bool largeFont) {
selectable = false;
active = false;
this->text = text;
this->line1 = "";
this->line2 = "";
this->line3 = "";
this->line4 = "";
this->numLines = 1;
fontInfo = (largeFont) ? fontLarge : font;
border = 10;
}
cRecMenuItemInfo::cRecMenuItemInfo(std::string line1, int numLines, std::string line2, std::string line3, std::string line4, int width, bool largeFont) {
selectable = false;
fontInfo = (largeFont) ? fontLarge : font;
border = 10;
this->numLines = numLines;
this->line2 = line2;
this->line3 = line3;
this->line4 = line4;
if (numLines == 1) {
this->line1 = line1;
} else if (numLines == 2) {
this->line1 = cString::sprintf("%s\n%s", line1.c_str(), line2.c_str());
} else if (numLines == 3) {
this->line1 = cString::sprintf("%s\n%s\n%s", line1.c_str(), line2.c_str(), line3.c_str());
} else if (numLines == 4) {
this->line1 = cString::sprintf("%s\n%s\n%s\n%s", line1.c_str(), line2.c_str(), line3.c_str(), line4.c_str());
}
this->active = false;
CalculateHeight(width);
}
cRecMenuItemInfo::~cRecMenuItemInfo(void) {
}
void cRecMenuItemInfo::CalculateHeight(int textWidth) {
wrapper.Set(*text, fontInfo, textWidth);
wrapper.Set((line1 == "") ? *text : line1.c_str(), fontInfo, textWidth);
height = fontInfo->Height() * wrapper.Lines() + 2 * border;
}
@ -317,13 +343,13 @@ cRecMenuItemInt::cRecMenuItemInt(cString text,
cRecMenuItemInt::~cRecMenuItemInt(void) {
if (pixmapVal)
osdManager.releasePixmap(pixmapVal);
osdManager.DestroyPixmap(pixmapVal);
}
void cRecMenuItemInt::SetPixmaps(void) {
if (!pixmap) {
pixmap = osdManager.requestPixmap(4, cRect(x, y, width, height));
pixmapVal = osdManager.requestPixmap(5, cRect(x, y, width, height));
pixmap = osdManager.CreatePixmap(4, cRect(x, y, width, height));
pixmapVal = osdManager.CreatePixmap(5, cRect(x, y, width, height));
} else {
pixmap->SetViewPort(cRect(x, y, width, height));
pixmapVal->SetViewPort(cRect(x, y, width, height));
@ -438,13 +464,13 @@ cRecMenuItemBool::cRecMenuItemBool(cString text,
cRecMenuItemBool::~cRecMenuItemBool(void) {
if (pixmapVal)
osdManager.releasePixmap(pixmapVal);
osdManager.DestroyPixmap(pixmapVal);
}
void cRecMenuItemBool::SetPixmaps(void) {
if (!pixmap) {
pixmap = osdManager.requestPixmap(4, cRect(x, y, width, height));
pixmapVal = osdManager.requestPixmap(5, cRect(x, y, width, height));
pixmap = osdManager.CreatePixmap(4, cRect(x, y, width, height));
pixmapVal = osdManager.CreatePixmap(5, cRect(x, y, width, height));
} else {
pixmap->SetViewPort(cRect(x, y, width, height));
pixmapVal->SetViewPort(cRect(x, y, width, height));
@ -525,13 +551,13 @@ cRecMenuItemSelect::cRecMenuItemSelect(cString text,
cRecMenuItemSelect::~cRecMenuItemSelect(void) {
if (pixmapVal)
osdManager.releasePixmap(pixmapVal);
osdManager.DestroyPixmap(pixmapVal);
}
void cRecMenuItemSelect::SetPixmaps(void) {
if (!pixmap) {
pixmap = osdManager.requestPixmap(4, cRect(x, y, width, height));
pixmapVal = osdManager.requestPixmap(5, cRect(x, y, width, height));
pixmap = osdManager.CreatePixmap(4, cRect(x, y, width, height));
pixmapVal = osdManager.CreatePixmap(5, cRect(x, y, width, height));
} else {
pixmap->SetViewPort(cRect(x, y, width, height));
pixmapVal->SetViewPort(cRect(x, y, width, height));
@ -557,7 +583,7 @@ void cRecMenuItemSelect::Draw(void) {
void cRecMenuItemSelect::DrawValue(void) {
pixmapVal->Fill(clrTransparent);
std::string textVal = strings[currentVal];
int iconSize = min(128, height);
int iconSize = std::min(128, height);
int textX = width - font->Width(textVal.c_str()) - iconSize;
int textY = (height - font->Height()) / 2;
pixmapVal->DrawText(cPoint(textX, textY), textVal.c_str(), colorText, clrTransparent, font);
@ -633,13 +659,13 @@ cRecMenuItemSelectDirectory::cRecMenuItemSelectDirectory(cString text,
cRecMenuItemSelectDirectory::~cRecMenuItemSelectDirectory(void) {
if (pixmapVal)
osdManager.releasePixmap(pixmapVal);
osdManager.DestroyPixmap(pixmapVal);
}
void cRecMenuItemSelectDirectory::SetPixmaps(void) {
if (!pixmap) {
pixmap = osdManager.requestPixmap(4, cRect(x, y, width, height));
pixmapVal = osdManager.requestPixmap(5, cRect(x, y, width, height));
pixmap = osdManager.CreatePixmap(4, cRect(x, y, width, height));
pixmapVal = osdManager.CreatePixmap(5, cRect(x, y, width, height));
} else {
pixmap->SetViewPort(cRect(x, y, width, height));
pixmapVal->SetViewPort(cRect(x, y, width, height));
@ -664,7 +690,7 @@ void cRecMenuItemSelectDirectory::Draw(void) {
void cRecMenuItemSelectDirectory::DrawValue(void) {
pixmapVal->Fill(clrTransparent);
int iconSize = min(128, height);
int iconSize = std::min(128, height);
int textX = std::max(width - font->Width(folders[currentVal].c_str()) - iconSize, 10 + font->Width(*text) + 2 * iconSize);
int textY = (height - font->Height()) / 2;
pixmapVal->DrawText(cPoint(textX, textY), folders[currentVal].c_str(), colorText, clrTransparent, font, width - textX - iconSize, font->Height(), taTop | taRight);
@ -767,13 +793,13 @@ cRecMenuItemText::cRecMenuItemText(cString title,
cRecMenuItemText::~cRecMenuItemText(void) {
if (pixmapVal)
osdManager.releasePixmap(pixmapVal);
osdManager.DestroyPixmap(pixmapVal);
if (pixmapKeyboard)
delete pixmapKeyboard;
if (pixmapKeyboardHighlight)
osdManager.releasePixmap(pixmapKeyboardHighlight);
osdManager.DestroyPixmap(pixmapKeyboardHighlight);
if (pixmapKeyboardIcons)
osdManager.releasePixmap(pixmapKeyboardIcons);
osdManager.DestroyPixmap(pixmapKeyboardIcons);
delete[] valueUtf8;
delete[] allowedUtf8;
delete[] charMapUtf8;
@ -787,11 +813,11 @@ void cRecMenuItemText::SetPixmaps(void) {
int keyboardX = x + (100 - keyboardWidth)*width / 100;
int keyboardY = y + height;
if (!pixmap) {
pixmap = osdManager.requestPixmap(4, cRect(x, y, width, height));
pixmapVal = osdManager.requestPixmap(5, cRect(xPixmapVal, yPixmapVal, widthPixmapVal, heightPixmapVal));
pixmapKeyboard = new cStyledPixmap(osdManager.requestPixmap(-1, cRect(keyboardX, keyboardY, keyboardWidth*width/100, keyboardHeight)));
pixmapKeyboardHighlight = osdManager.requestPixmap(-1, cRect(keyboardX, keyboardY, keyboardWidth*width/100, keyboardHeight));
pixmapKeyboardIcons = osdManager.requestPixmap(-1, cRect(keyboardX, keyboardY, keyboardWidth*width/100, keyboardHeight));
pixmap = osdManager.CreatePixmap(4, cRect(x, y, width, height));
pixmapVal = osdManager.CreatePixmap(5, cRect(xPixmapVal, yPixmapVal, widthPixmapVal, heightPixmapVal));
pixmapKeyboard = new cStyledPixmap(osdManager.CreatePixmap(-1, cRect(keyboardX, keyboardY, keyboardWidth*width/100, keyboardHeight)));
pixmapKeyboardHighlight = osdManager.CreatePixmap(-1, cRect(keyboardX, keyboardY, keyboardWidth*width/100, keyboardHeight));
pixmapKeyboardIcons = osdManager.CreatePixmap(-1, cRect(keyboardX, keyboardY, keyboardWidth*width/100, keyboardHeight));
} else {
pixmap->SetViewPort(cRect(x, y, width, height));
pixmapVal->SetViewPort(cRect(xPixmapVal, yPixmapVal, widthPixmapVal, heightPixmapVal));
@ -967,7 +993,7 @@ char *cRecMenuItemText::GetSMSKeys(int num) {
if (specialChar)
addition = 1;
Utf8FromArray(startCharUtf8, p, numChars+addition);
int maxChars = min(numChars+1+addition, 8);
int maxChars = std::min(numChars+1+addition, 8);
char *smskey = new char[maxChars];
Utf8Strn0Cpy(smskey, p, maxChars);
return smskey;
@ -1324,13 +1350,13 @@ cRecMenuItemTime::cRecMenuItemTime(cString text,
cRecMenuItemTime::~cRecMenuItemTime(void) {
if (pixmapVal)
osdManager.releasePixmap(pixmapVal);
osdManager.DestroyPixmap(pixmapVal);
}
void cRecMenuItemTime::SetPixmaps(void) {
if (!pixmap) {
pixmap = osdManager.requestPixmap(4, cRect(x, y, width, height));
pixmapVal = osdManager.requestPixmap(5, cRect(x, y, width, height));
pixmap = osdManager.CreatePixmap(4, cRect(x, y, width, height));
pixmapVal = osdManager.CreatePixmap(5, cRect(x, y, width, height));
} else {
pixmap->SetViewPort(cRect(x, y, width, height));
pixmapVal->SetViewPort(cRect(x, y, width, height));
@ -1463,13 +1489,13 @@ cRecMenuItemDay::cRecMenuItemDay(cString text,
cRecMenuItemDay::~cRecMenuItemDay(void) {
if (pixmapVal)
osdManager.releasePixmap(pixmapVal);
osdManager.DestroyPixmap(pixmapVal);
}
void cRecMenuItemDay::SetPixmaps(void) {
if (!pixmap) {
pixmap = osdManager.requestPixmap(4, cRect(x, y, width, height));
pixmapVal = osdManager.requestPixmap(5, cRect(x, y, width, height));
pixmap = osdManager.CreatePixmap(4, cRect(x, y, width, height));
pixmapVal = osdManager.CreatePixmap(5, cRect(x, y, width, height));
} else {
pixmap->SetViewPort(cRect(x, y, width, height));
pixmapVal->SetViewPort(cRect(x, y, width, height));
@ -1548,21 +1574,22 @@ cRecMenuItemTimer::cRecMenuItemTimer(const cTimer *timer,
this->overlapStop = overlapStop;
this->active = active;
height = 3 * font->Height();
pixmapStatus = NULL;
pixmapIcons = NULL;
}
cRecMenuItemTimer::~cRecMenuItemTimer(void) {
if (pixmapIcons)
osdManager.releasePixmap(pixmapIcons);
osdManager.DestroyPixmap(pixmapIcons);
if (pixmapStatus)
osdManager.releasePixmap(pixmapStatus);
osdManager.DestroyPixmap(pixmapStatus);
}
void cRecMenuItemTimer::SetPixmaps(void) {
if (!pixmap) {
pixmap = osdManager.requestPixmap(4, cRect(x, y, width, height));
pixmapStatus = osdManager.requestPixmap(5, cRect(x, y, width, height));
pixmapIcons = osdManager.requestPixmap(6, cRect(x, y, width, height));
pixmap = osdManager.CreatePixmap(4, cRect(x, y, width, height));
pixmapStatus = osdManager.CreatePixmap(5, cRect(x, y, width, height));
pixmapIcons = osdManager.CreatePixmap(6, cRect(x, y, width, height));
} else {
pixmap->SetViewPort(cRect(x, y, width, height));
pixmapStatus->SetViewPort(cRect(x, y, width, height));
@ -1585,6 +1612,8 @@ void cRecMenuItemTimer::Show(void) {
}
void cRecMenuItemTimer::Draw(void) {
if (!timer)
return;
const cChannel *channel = timer->Channel();
int channelTransponder = 0;
cString channelName = "";
@ -1598,7 +1627,7 @@ void cRecMenuItemTimer::Draw(void) {
if (!config.hideChannelLogos) {
if (imgLoader.LoadLogo(channel, logoWidth, height)) {
cImage logo = imgLoader.GetImage();
pixmapIcons->DrawImage(cPoint(logoX, 0), logo);
pixmapIcons->DrawImage(cPoint(logoX, (height - logo.Height()) / 2), logo);
logoX += logoWidth + 5;
}
}
@ -1736,12 +1765,17 @@ cRecMenuItemTimerConflictHeader::cRecMenuItemTimerConflictHeader(time_t conflict
cRecMenuItemTimerConflictHeader::~cRecMenuItemTimerConflictHeader(void) {
if (pixmapStatus)
osdManager.releasePixmap(pixmapStatus);
osdManager.DestroyPixmap(pixmapStatus);
}
void cRecMenuItemTimerConflictHeader::SetPixmaps(void) {
pixmap = osdManager.requestPixmap(4, cRect(x, y, width, height));
pixmapStatus = osdManager.requestPixmap(5, cRect(x, y, width, height));
if (!pixmap) {
pixmap = osdManager.CreatePixmap(4, cRect(x, y, width, height));
pixmapStatus = osdManager.CreatePixmap(5, cRect(x, y, width, height));
} else {
pixmap->SetViewPort(cRect(x, y, width, height));
pixmapStatus->SetViewPort(cRect(x, y, width, height));
}
pixmapStatus->Fill(clrTransparent);
}
@ -1811,17 +1845,17 @@ cRecMenuItemEvent::cRecMenuItemEvent(const cEvent *event,
cRecMenuItemEvent::~cRecMenuItemEvent(void) {
if (pixmapIcons)
osdManager.releasePixmap(pixmapIcons);
osdManager.DestroyPixmap(pixmapIcons);
if (pixmapText)
osdManager.releasePixmap(pixmapText);
osdManager.DestroyPixmap(pixmapText);
}
void cRecMenuItemEvent::SetPixmaps(void) {
if (!pixmap) {
pixmap = osdManager.requestPixmap(4, cRect(x, y, width, height));
pixmapText = osdManager.requestPixmap(5, cRect(x, y, width - height / 2 - 10, height));
pixmap = osdManager.CreatePixmap(4, cRect(x, y, width, height));
pixmapText = osdManager.CreatePixmap(5, cRect(x, y, width - height / 2 - 10, height));
pixmapText->Fill(clrTransparent);
pixmapIcons = osdManager.requestPixmap(6, cRect(x, y, width, height));
pixmapIcons = osdManager.CreatePixmap(6, cRect(x, y, width, height));
pixmapIcons->Fill(clrTransparent);
} else {
pixmap->SetViewPort(cRect(x, y, width, height));
@ -1844,12 +1878,11 @@ void cRecMenuItemEvent::Draw(void) {
if (channel)
channelName = channel->Name();
int logoWidth = height * config.logoWidthRatio / config.logoHeightRatio;
cImageLoader imgLoader;
if (!config.hideChannelLogos) {
if (imgLoader.LoadLogo(channel, logoWidth, height)) {
cImageLoader imgLoader;
if (imgLoader.LoadLogo(channel, logoWidth * 0.8, height * 0.8)) {
cImage logo = imgLoader.GetImage();
pixmapText->DrawImage(cPoint(logoX, (height - logo.Height()) / 2), logo);
// logoX += logoWidth + 5;
pixmapText->DrawImage(cPoint(logoX + (logoWidth - logo.Width()) / 2, (height - logo.Height()) / 2), logo);
}
logoX += logoWidth + 5;
}
@ -1964,13 +1997,13 @@ cRecMenuItemChannelChooser::cRecMenuItemChannelChooser(cString text,
cRecMenuItemChannelChooser::~cRecMenuItemChannelChooser(void) {
if (pixmapChannel)
osdManager.releasePixmap(pixmapChannel);
osdManager.DestroyPixmap(pixmapChannel);
}
void cRecMenuItemChannelChooser::SetPixmaps(void) {
if (!pixmap) {
pixmap = osdManager.requestPixmap(4, cRect(x, y, width, height));
pixmapChannel = osdManager.requestPixmap(5, cRect(x, y, width, height));
pixmap = osdManager.CreatePixmap(4, cRect(x, y, width, height));
pixmapChannel = osdManager.CreatePixmap(5, cRect(x, y, width, height));
} else {
pixmap->SetViewPort(cRect(x, y, width, height));
pixmapChannel->SetViewPort(cRect(x, y, width, height));
@ -2005,7 +2038,7 @@ void cRecMenuItemChannelChooser::DrawValue(void) {
cImageLoader imgLoader;
if (imgLoader.LoadLogo(channel, logoWidth, height - 10)) {
cImage logo = imgLoader.GetImage();
pixmapChannel->DrawImage(cPoint(logoX, 5), logo);
pixmapChannel->DrawImage(cPoint(logoX, (height - logo.Height()) / 2), logo);
}
} else {
cString textVal = tr("all Channels");
@ -2117,16 +2150,16 @@ cRecMenuItemDayChooser::cRecMenuItemDayChooser(cString text,
cRecMenuItemDayChooser::~cRecMenuItemDayChooser(void) {
if (pixmapWeekdays)
osdManager.releasePixmap(pixmapWeekdays);
osdManager.DestroyPixmap(pixmapWeekdays);
if (pixmapWeekdaysSelect)
osdManager.releasePixmap(pixmapWeekdaysSelect);
osdManager.DestroyPixmap(pixmapWeekdaysSelect);
}
void cRecMenuItemDayChooser::SetPixmaps(void) {
if (!pixmap) {
pixmap = osdManager.requestPixmap(4, cRect(x, y, width, height));
pixmapWeekdays = osdManager.requestPixmap(5, cRect(x, y, width, height));
pixmapWeekdaysSelect = osdManager.requestPixmap(6, cRect(x, y, width, height));
pixmap = osdManager.CreatePixmap(4, cRect(x, y, width, height));
pixmapWeekdays = osdManager.CreatePixmap(5, cRect(x, y, width, height));
pixmapWeekdaysSelect = osdManager.CreatePixmap(6, cRect(x, y, width, height));
} else {
pixmap->SetViewPort(cRect(x, y, width, height));
pixmapWeekdays->SetViewPort(cRect(x, y, width, height));
@ -2155,7 +2188,7 @@ void cRecMenuItemDayChooser::SetSizes(void) {
if (charWidth > maxWidth)
maxWidth = charWidth;
}
daysSize = min(maxWidth + 15, height - 4);
daysSize = std::min(maxWidth + 15, height - 4);
daysX = width - 10 - 7 * daysSize;
daysY = (height - daysSize) / 2;
}
@ -2252,13 +2285,13 @@ cRecMenuItemRecording::cRecMenuItemRecording(const cRecording *recording, bool a
cRecMenuItemRecording::~cRecMenuItemRecording(void) {
if (pixmapText)
osdManager.releasePixmap(pixmapText);
osdManager.DestroyPixmap(pixmapText);
}
void cRecMenuItemRecording::SetPixmaps(void) {
if (!pixmap) {
pixmap = osdManager.requestPixmap(4, cRect(x, y, width, height));
pixmapText = osdManager.requestPixmap(5, cRect(x, y, width, height));
pixmap = osdManager.CreatePixmap(4, cRect(x, y, width, height));
pixmapText = osdManager.CreatePixmap(5, cRect(x, y, width, height));
pixmapText->Fill(clrTransparent);
} else {
pixmap->SetViewPort(cRect(x, y, width, height));
@ -2270,21 +2303,38 @@ void cRecMenuItemRecording::Draw(void) {
if (!recording)
return;
const cRecordingInfo *recInfo = recording->Info();
#if VDRVERSNUM >= 20301
LOCK_CHANNELS_READ;
const cChannel *channel = Channels->GetByChannelID(recInfo->ChannelID());
#else
const cChannel *channel = Channels.GetByChannelID(recInfo->ChannelID());
#endif
const cChannel *channel = NULL;
cString channelName = tr("unknown channel");
if (channel)
channelName = channel->Name();
if (recInfo) {
if (recInfo->ChannelName() && (strlen(recInfo->ChannelName()) > 0)) {
channelName = recInfo->ChannelName();
} else {
#if VDRVERSNUM >= 20301
{
LOCK_CHANNELS_READ;
channel = Channels->GetByChannelID(recInfo->ChannelID());
}
#else
channel = Channels.GetByChannelID(recInfo->ChannelID());
#endif
if (channel)
channelName = channel->Name();
}
}
cString name = recording->Name();
cString dateTime = cString::sprintf("%s, %s", *DateString(recording->Start()), *TimeString(recording->Start()));
int recDuration = recording->LengthInSeconds() / 60;
cString recDetails = cString::sprintf("%s: %d %s, %s %s %s \"%s\"", tr("Duration"), recDuration, tr("min"), tr("recorded at"), *dateTime, tr("from"), *channelName);
cString recDetails = "";
#if (APIVERSNUM >= 20505)
cString error = "";
if (recInfo->Errors() >= 0) {
error = cString::sprintf("%s %d %s ", tr("with"), recInfo->Errors(), (recInfo->Errors() >= 2) ? tr("errors") : tr("error"));
recDetails = cString::sprintf("%s: %d %s, %s %s %s \"%s\" %s", tr("Duration"), recDuration, tr("min"), tr("recorded at"), *dateTime, tr("from"), *channelName, *error);
} else
#endif
recDetails = cString::sprintf("%s: %d %s, %s %s %s \"%s\"", tr("Duration"), recDuration, tr("min"), tr("recorded at"), *dateTime, tr("from"), *channelName);
recDetails = CutText(*recDetails, width - 40, fontSmall).c_str();
int text1Y = (height/2 - font->Height()) / 2 + 5;
int text2Y = height/2 + (height/2 - fontSmall->Height())/2 - 5;
@ -2304,13 +2354,14 @@ void cRecMenuItemRecording::Show(void) {
}
// --- cRecMenuItemTimelineHeader -------------------------------------------------------
cRecMenuItemTimelineHeader::cRecMenuItemTimelineHeader(time_t day, std::vector<cTVGuideTimerConflict*> conflictsToday) {
cRecMenuItemTimelineHeader::cRecMenuItemTimelineHeader(time_t day, int numTimersToday, std::vector<cTVGuideTimerConflict*> conflictsToday) {
conflicts = conflictsToday;
pixmapTimeline = NULL;
pixmapTimerInfo = NULL;
pixmapTimerConflicts = NULL;
timer = NULL;
this->day = day;
this->numTimersToday = numTimersToday;
selectable = false;
active = false;
height = 5 * font->Height();
@ -2319,20 +2370,20 @@ cRecMenuItemTimelineHeader::cRecMenuItemTimelineHeader(time_t day, std::vector<c
cRecMenuItemTimelineHeader::~cRecMenuItemTimelineHeader(void) {
if (pixmapTimeline)
osdManager.releasePixmap(pixmapTimeline);
osdManager.DestroyPixmap(pixmapTimeline);
if (pixmapTimerInfo)
osdManager.releasePixmap(pixmapTimerInfo);
osdManager.DestroyPixmap(pixmapTimerInfo);
if (pixmapTimerConflicts)
osdManager.releasePixmap(pixmapTimerConflicts);
osdManager.DestroyPixmap(pixmapTimerConflicts);
}
void cRecMenuItemTimelineHeader::SetPixmaps(void) {
if (!pixmap) {
pixmap = osdManager.requestPixmap(4, cRect(x, y, width, height));
pixmapTimeline = osdManager.requestPixmap(5, cRect(x, y, width, height));
pixmapTimerInfo = osdManager.requestPixmap(6, cRect(x, y + 3 * font->Height() / 2, width, 2 * font->Height()));
pixmap = osdManager.CreatePixmap(4, cRect(x, y, width, height));
pixmapTimeline = osdManager.CreatePixmap(5, cRect(x, y, width, height));
pixmapTimerInfo = osdManager.CreatePixmap(6, cRect(x, y + 3 * font->Height() / 2, width, 2 * font->Height()));
if (conflicts.size() > 0) {
pixmapTimerConflicts = osdManager.requestPixmap(6, cRect(x, y, width, height));
pixmapTimerConflicts = osdManager.CreatePixmap(6, cRect(x, y, width, height));
}
} else {
pixmap->SetViewPort(cRect(x, y, width, height));
@ -2359,7 +2410,7 @@ void cRecMenuItemTimelineHeader::Draw(void) {
}
DrawTimerConflicts();
pixmap->Fill(clrTransparent);
cString headerText = tr("Timers for");
cString headerText = cString::sprintf("%i %s", numTimersToday, tr("Timers for"));
cString dateText = DateString(day);
cString header = cString::sprintf("%s: %s", *headerText, *dateText);
int xText = (width - fontLarge->Width(*header)) / 2;
@ -2384,7 +2435,7 @@ void cRecMenuItemTimelineHeader::DrawCurrentTimer(void) {
if (!config.hideChannelLogos) {
if (imgLoader.LoadLogo(channel, logoWidth, infoHeight)) {
cImage logo = imgLoader.GetImage();
pixmapTimerInfo->DrawImage(cPoint(0, 0), logo);
pixmapTimerInfo->DrawImage(cPoint(0, (infoHeight - logo.Height()) / 2), logo);
x += logoWidth + 10;
logoDrawn = true;
}
@ -2421,7 +2472,7 @@ void cRecMenuItemTimelineHeader::DrawTimeline(void) {
pixmapTimeline->Fill(clrTransparent);
width5Mins = (float)width * 5.0 / 24.0 / 60.0;
int widthHour = 12 * width5Mins;
x0 = (width - 24*widthHour)/2;
x0 = (width - (24 * widthHour)) / 2;
int barHeight = fontSmall->Height();
int y = height - barHeight;
tColor col1 = theme.Color(clrTimeline1);
@ -2502,21 +2553,23 @@ cRecMenuItemTimelineTimer::cRecMenuItemTimelineTimer(const cTimer *timer, time_t
selectable = true;
this->active = active;
height = geoManager.osdHeight / 16;
if (active)
SetActive();
}
cRecMenuItemTimelineTimer::~cRecMenuItemTimelineTimer(void) {
if (pixmapBack)
osdManager.releasePixmap(pixmapBack);
osdManager.DestroyPixmap(pixmapBack);
if (pixmapTimerConflicts)
osdManager.releasePixmap(pixmapTimerConflicts);
osdManager.DestroyPixmap(pixmapTimerConflicts);
}
void cRecMenuItemTimelineTimer::SetPixmaps(void) {
if (!pixmap) {
pixmapBack = osdManager.requestPixmap(4, cRect(x, y, width, height));
pixmap = osdManager.requestPixmap(5, cRect(x, y, width, height));
pixmapBack = osdManager.CreatePixmap(4, cRect(x, y, width, height));
pixmap = osdManager.CreatePixmap(5, cRect(x, y, width, height));
if (conflicts.size() > 0) {
pixmapTimerConflicts = osdManager.requestPixmap(6, cRect(x, y, width, height));
pixmapTimerConflicts = osdManager.CreatePixmap(6, cRect(x, y, width, height));
}
} else {
pixmapBack->SetViewPort(cRect(x, y, width, height));
@ -2526,7 +2579,8 @@ void cRecMenuItemTimelineTimer::SetPixmaps(void) {
}
width5Mins = (float)width * 5.0 / 24.0 / 60.0;
x0 = (width - 24*12*width5Mins)/2;
int widthHour = 12 * width5Mins;
x0 = (width - (24 * widthHour)) / 2;
}
void cRecMenuItemTimelineTimer::Draw(void) {
@ -2613,7 +2667,7 @@ void cRecMenuItemTimelineTimer::DrawNoTimerInfo(void) {
pixmap->DrawText(cPoint(x, y), *noTimersText, colorText, clrTransparent, font);
}
void cRecMenuItemTimelineTimer::setActive(void) {
void cRecMenuItemTimelineTimer::SetActive(void) {
active = true;
header->SetCurrentTimer(timer);
header->RefreshTimerDisplay();
@ -2637,7 +2691,7 @@ void cRecMenuItemTimelineTimer::Show(void) {
if (pixmapTimerConflicts) pixmapTimerConflicts->SetLayer(6);
}
const cTimer *cRecMenuItemTimelineTimer::GetTimerValue(void) {
const cTimer *cRecMenuItemTimelineTimer::GetTimer(void) {
return timer;
}
@ -2672,16 +2726,16 @@ cRecMenuItemSearchTimer::cRecMenuItemSearchTimer(cTVGuideSearchTimer timer,
cRecMenuItemSearchTimer::~cRecMenuItemSearchTimer(void) {
if (pixmapText)
osdManager.releasePixmap(pixmapText);
osdManager.DestroyPixmap(pixmapText);
if (pixmapIcons)
osdManager.releasePixmap(pixmapIcons);
osdManager.DestroyPixmap(pixmapIcons);
}
void cRecMenuItemSearchTimer::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));
pixmap = osdManager.CreatePixmap(4, cRect(x, y, width, height));
pixmapText = osdManager.CreatePixmap(5, cRect(x, y, width, height));
pixmapIcons = osdManager.CreatePixmap(6, cRect(x, y, width, height));
} else {
pixmap->SetViewPort(cRect(x, y, width, height));
pixmapText->SetViewPort(cRect(x, y, width, height));
@ -2799,16 +2853,16 @@ cRecMenuItemFavorite::cRecMenuItemFavorite(cTVGuideSearchTimer favorite,
cRecMenuItemFavorite::~cRecMenuItemFavorite(void) {
if (pixmapText)
osdManager.releasePixmap(pixmapText);
osdManager.DestroyPixmap(pixmapText);
if (pixmapIcons)
osdManager.releasePixmap(pixmapIcons);
osdManager.DestroyPixmap(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));
pixmap = osdManager.CreatePixmap(4, cRect(x, y, width, height));
pixmapText = osdManager.CreatePixmap(5, cRect(x, y, width, height));
pixmapIcons = osdManager.CreatePixmap(6, cRect(x, y, width, height));
} else {
pixmap->SetViewPort(cRect(x, y, width, height));
pixmapText->SetViewPort(cRect(x, y, width, height));
@ -2874,16 +2928,16 @@ cRecMenuItemFavoriteStatic::cRecMenuItemFavoriteStatic(std::string text, eRecMen
cRecMenuItemFavoriteStatic::~cRecMenuItemFavoriteStatic(void) {
if (pixmapText)
osdManager.releasePixmap(pixmapText);
osdManager.DestroyPixmap(pixmapText);
if (pixmapIcons)
osdManager.releasePixmap(pixmapIcons);
osdManager.DestroyPixmap(pixmapIcons);
}
void cRecMenuItemFavoriteStatic::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));
pixmap = osdManager.CreatePixmap(4, cRect(x, y, width, height));
pixmapText = osdManager.CreatePixmap(5, cRect(x, y, width, height));
pixmapIcons = osdManager.CreatePixmap(6, cRect(x, y, width, height));
} else {
pixmap->SetViewPort(cRect(x, y, width, height));
pixmapText->SetViewPort(cRect(x, y, width, height));

View File

@ -25,6 +25,7 @@ enum eRecMenuState {
rmsSearchRerunsTimerConflictMenu,
rmsSaveTimerConflictMenu,
rmsTimerConflictShowInfo,
rmsOnOffTimer,
rmsDeleteTimer,
rmsDeleteTimerConfirmation,
rmsEditTimer,
@ -109,10 +110,10 @@ public:
virtual int GetHeight(void) { return height; };
virtual int GetWidth(void) { return 0; };
virtual void CalculateHeight(int textWidth) {};
virtual void setActive(void) { this->active = true; }
virtual void SetActive(void) { this->active = true; }
virtual void setInactive(void) { this->active = false; }
bool isSelectable(void) { return selectable; }
bool isActive(void) { return active; }
bool IsActive(void) { return active; }
virtual void setBackground(void);
virtual void Draw(void) {};
virtual void Hide(void) { if (pixmap) pixmap->SetLayer(-1);};
@ -121,8 +122,7 @@ public:
virtual time_t GetTimeValue(void) { return 0; };
virtual bool GetBoolValue(void) { return false; };
virtual cString GetStringValue(void) { return cString(""); };
virtual const cEvent *GetEventValue(void) { return NULL; };
virtual const cTimer *GetTimerValue(void) { return NULL; };
virtual const cEvent *GetEvent(void) { return NULL; };
virtual eRecMenuState ProcessKey(eKeys Key) { return rmsNotConsumed; };
};
@ -174,12 +174,18 @@ public:
// --- cRecMenuItemInfo -------------------------------------------------------
class cRecMenuItemInfo : public cRecMenuItem {
private:
int numLines;
cString text;
std::string line1;
std::string line2;
std::string line3;
std::string line4;
cTextWrapper wrapper;
int border;
const cFont *fontInfo;
public:
cRecMenuItemInfo(const char *text, bool largeFont = false);
cRecMenuItemInfo(std::string line1, int numLines = 1, std::string line2 = "", std::string line3 = "", std::string line4 = "", int width = 80, bool largeFont = false);
virtual ~cRecMenuItemInfo(void);
void setBackground(void);
void CalculateHeight(int textWidth);
@ -480,7 +486,7 @@ public:
void SetPixmaps(void);
void Hide(void);
void Show(void);
const cEvent *GetEventValue(void) { return event; };
const cEvent *GetEvent(void) { return event; };
eRecMenuState ProcessKey(eKeys Key);
void Draw(void);
};
@ -573,19 +579,21 @@ private:
cPixmap *pixmapTimeline;
cPixmap *pixmapTimerInfo;
cPixmap *pixmapTimerConflicts;
int width5Mins;
float width5Mins;
int x0;
int numTimersToday;
bool timelineDrawn;
void DrawTimeline(void);
void DrawTimerConflicts(void);
void DrawCurrentTimer(void);
public:
cRecMenuItemTimelineHeader(time_t day, std::vector<cTVGuideTimerConflict*> conflictsToday);
cRecMenuItemTimelineHeader(time_t day, int numTimersToday, std::vector<cTVGuideTimerConflict*> conflictsToday);
virtual ~cRecMenuItemTimelineHeader(void);
void SetDay(time_t day) { this->day = day; };
void SetPixmaps(void);
void SetCurrentTimer(const cTimer *timer) { this->timer = timer; };
void UnsetCurrentTimer(void) { timer = NULL; };
void SetNumTimersToday(int numTimersToday) { this->numTimersToday = numTimersToday; };
void RefreshTimerDisplay(void);
void Hide(void);
void Show(void);
@ -601,7 +609,7 @@ private:
cPixmap *pixmapTimerConflicts;
cRecMenuItemTimelineHeader *header;
int x0;
int width5Mins;
float width5Mins;
time_t start;
time_t stop;
void DrawBackground(void);
@ -612,13 +620,13 @@ private:
public:
cRecMenuItemTimelineTimer(const cTimer *timer, time_t start, time_t stop, std::vector<cTVGuideTimerConflict*> conflictsToday, cRecMenuItemTimelineHeader *header, bool active);
virtual ~cRecMenuItemTimelineTimer(void);
void setActive(void);
void SetActive(void);
void setInactive(void);
void SetPixmaps(void);
void Hide(void);
void Show(void);
void Draw(void);
const cTimer *GetTimerValue(void);
const cTimer *GetTimer(void);
eRecMenuState ProcessKey(eKeys Key);
};

1167
recmenus.c

File diff suppressed because it is too large Load Diff

View File

@ -77,11 +77,12 @@ public:
class cRecMenuTimerConflict: public cRecMenu {
private:
cTVGuideTimerConflict *conflict;
int totalNumMenuItems;
public:
cRecMenuTimerConflict(cTVGuideTimerConflict *conflict);
cRecMenuTimerConflict(cTVGuideTimerConflict *conflict, eRecMenuState nextAction = rmsClose);
virtual ~cRecMenuTimerConflict(void) {};
cRecMenuItem *GetMenuItem(int number);
int GetTotalNumMenuItems(void);
virtual ~cRecMenuTimerConflict(void) {};
int GetTimerConflictIndex(void);
};
@ -204,13 +205,12 @@ class cRecMenuSearchTimers: public cRecMenu {
private:
int numSearchTimers;
std::vector<cTVGuideSearchTimer> searchTimers;
void SetMenuItems(void);
public:
cRecMenuSearchTimers(std::vector<cTVGuideSearchTimer> searchTimers);
virtual ~cRecMenuSearchTimers(void) {};
cRecMenuItem *GetMenuItem(int number);
int GetTotalNumMenuItems(void);
cTVGuideSearchTimer GetSearchTimer(void);
virtual ~cRecMenuSearchTimers(void);
};
// --- cRecMenuSearchTimerEdit ---------------------------------------------------------
@ -218,6 +218,7 @@ class cRecMenuSearchTimerEdit: public cRecMenu {
private:
cTVGuideSearchTimer sT;
std::vector<std::string> searchModes;
std::vector<std::string> subTitleModes;
std::vector<std::string> useChannelModes;
std::vector<std::string> channelGroups;
std::vector<std::string> compareDateModes;
@ -257,7 +258,7 @@ private:
cTVGuideSearchTimer searchTimer;
public:
cRecMenuSearchTimerDeleteConfirm(cTVGuideSearchTimer searchTimer);
virtual ~cRecMenuSearchTimerDeleteConfirm(void);
virtual ~cRecMenuSearchTimerDeleteConfirm(void) {};
cTVGuideSearchTimer GetSearchTimer(void);
};

View File

@ -37,7 +37,7 @@ void cRecMenuView::Start(const cEvent *event) {
this->event = event;
activeMenu = new cRecMenuMain(recManager->EpgSearchAvailable(), recManager->CheckEventForTimer(event), SwitchTimers.EventInSwitchList(event));
activeMenu->Display();
osdManager.flush();
osdManager.Flush();
}
void cRecMenuView::StartFavorites(void) {
@ -49,7 +49,7 @@ void cRecMenuView::StartFavorites(void) {
recManager->GetFavorites(&favorites);
activeMenu = new cRecMenuFavorites(favorites);
activeMenu->Display();
osdManager.flush();
osdManager.Flush();
}
@ -70,7 +70,7 @@ void cRecMenuView::Close(void) {
void cRecMenuView::SetBackground(void) {
int backgroundWidth = geoManager.osdWidth;
int backgroundHeight = geoManager.osdHeight;
pixmapBackground = osdManager.requestPixmap(3, cRect(0, 0, backgroundWidth, backgroundHeight));
pixmapBackground = osdManager.CreatePixmap(3, cRect(0, 0, backgroundWidth, backgroundHeight));
pixmapBackground->Fill(theme.Color(clrRecMenuBackground));
if (config.scaleVideo) {
int tvHeight = geoManager.statusHeaderHeight;
@ -81,7 +81,7 @@ void cRecMenuView::SetBackground(void) {
}
void cRecMenuView::DeleteBackground(void) {
osdManager.releasePixmap(pixmapBackground);
osdManager.DestroyPixmap(pixmapBackground);
}
void cRecMenuView::DisplaySearchTimerList(void) {
@ -93,16 +93,18 @@ void cRecMenuView::DisplaySearchTimerList(void) {
}
bool cRecMenuView::DisplayTimerConflict(const cTimer *timer) {
int timerID = 0;
#if VDRVERSNUM >= 20301
LOCK_TIMERS_READ;
for (const cTimer *t = Timers->First(); t; t = Timers->Next(t)) {
if (t == timer)
return DisplayTimerConflict(timer->Id() - 1);
#else
int timerID = 0;
for (const cTimer *t = Timers.First(); t; t = Timers.Next(t)) {
#endif
if (t == timer)
return DisplayTimerConflict(timerID);
timerID++;
#endif
}
return false;
}
@ -119,7 +121,8 @@ bool cRecMenuView::DisplayTimerConflict(int timerID) {
cTVGuideTimerConflict *conflict = timerConflicts->GetCurrentConflict();
if (!conflict)
return false;
activeMenu = new cRecMenuTimerConflict(conflict);
delete activeMenu;
activeMenu = new cRecMenuTimerConflict(conflict, rmsIgnoreTimerConflict);
activeMenu->Display();
return true;
}
@ -161,11 +164,16 @@ eOSState cRecMenuView::StateMachine(eRecMenuState nextState) {
if (cRecMenuAskFolder *menu = dynamic_cast<cRecMenuAskFolder*>(activeMenu)) {
recFolder = menu->GetFolder();
}
delete activeMenu;
cTimer *timer = recManager->createTimer(event, recFolder);
if (!DisplayTimerConflict(timer)) {
activeMenu = new cRecMenuConfirmTimer(event);
activeMenu->Display();
if (config.timerMessage) {
delete activeMenu;
activeMenu = new cRecMenuConfirmTimer(event);
activeMenu->Display();
} else {
Close();
state = osEnd;
}
}
break; }
case rmsInstantRecordFolder:
@ -175,24 +183,49 @@ eOSState cRecMenuView::StateMachine(eRecMenuState nextState) {
activeMenu = new cRecMenuAskFolder(event, rmsInstantRecord);
activeMenu->Display();
break;
case rmsOnOffTimer: {
//caller: main menu
//De/Activate timer for active event
recManager->OnOffTimer(event);
if (config.timerMessage) {
delete activeMenu;
activeMenu = new cRecMenuConfirmTimer(event, true);
activeMenu->Display();
} else {
Close();
state = osEnd;
}
break; }
case rmsDeleteTimer: {
//caller: main menu
//delete timer for active event
delete activeMenu;
if (recManager->IsRecorded(event)) {
delete activeMenu;
activeMenu = new cRecMenuAskDeleteTimer(event);
activeMenu->Display();
} else {
recManager->DeleteTimer(event);
activeMenu = new cRecMenuConfirmDeleteTimer(event);
if (config.timerMessage) {
delete activeMenu;
activeMenu = new cRecMenuConfirmDeleteTimer(event);
activeMenu->Display();
} else {
Close();
state = osEnd;
}
}
activeMenu->Display();
break; }
case rmsDeleteTimerConfirmation: {
//delete running timer for active event
recManager->DeleteTimer(event);
delete activeMenu;
activeMenu = new cRecMenuConfirmDeleteTimer(event);
activeMenu->Display();
if (config.timerMessage) {
delete activeMenu;
activeMenu = new cRecMenuConfirmDeleteTimer(event);
activeMenu->Display();
} else {
Close();
state = osEnd;
}
break; }
case rmsEditTimer: {
//edit timer for active event
@ -219,9 +252,14 @@ eOSState cRecMenuView::StateMachine(eRecMenuState nextState) {
case rmsIgnoreTimerConflict:
//caller: cRecMenuTimerConflict
//Confirming created Timer
delete activeMenu;
activeMenu = new cRecMenuConfirmTimer(event);
activeMenu->Display();
if (config.timerMessage) {
delete activeMenu;
activeMenu = new cRecMenuConfirmTimer(event);
activeMenu->Display();
} else {
Close();
state = osEnd;
}
break;
case rmsTimerConflictShowInfo: {
//caller: cRecMenuTimerConflict
@ -229,12 +267,18 @@ eOSState cRecMenuView::StateMachine(eRecMenuState nextState) {
if (cRecMenuTimerConflict *menu = dynamic_cast<cRecMenuTimerConflict*>(activeMenu)) {
timerIndex = menu->GetTimerConflictIndex();
} else break;
int timerID = timerConflicts->GetCurrentConflictTimerID(timerIndex);
const cTimers* timers;
#if VDRVERSNUM >= 20301
int timerID = timerConflicts->GetCurrentConflictTimerID(timerIndex) + 1;
{
LOCK_TIMERS_READ;
const cTimer *t = Timers->Get(timerID);
timers = Timers;
}
const cTimer *t = timers->GetById(timerID);
#else
const cTimer *t = Timers.Get(timerID);
int timerID = timerConflicts->GetCurrentConflictTimerID(timerIndex);
timers = &Timers;
const cTimer *t = timers->Get(timerID);
#endif
if (t) {
const cEvent *ev = t->Event();
@ -250,21 +294,30 @@ eOSState cRecMenuView::StateMachine(eRecMenuState nextState) {
if (cRecMenuTimerConflict *menu = dynamic_cast<cRecMenuTimerConflict*>(activeMenu)) {
timerIndex = menu->GetTimerConflictIndex();
} else break;
int timerID = timerConflicts->GetCurrentConflictTimerID(timerIndex);
const cTimers* timers;
const cEvent *event;
#if VDRVERSNUM >= 20301
int timerID = timerConflicts->GetCurrentConflictTimerID(timerIndex) + 1;
{
LOCK_TIMERS_READ;
timers = Timers;
}
event = timers->GetById(timerID)->Event();
#else
int timerID = timerConflicts->GetCurrentConflictTimerID(timerIndex);
timers = &Timers;
event = timers->Get(timerID)->Event();
#endif
recManager->DeleteTimer(timers->Get(timerID)->Event());
delete activeMenu;
recManager->DeleteTimer(event);
if (!DisplayTimerConflict(timerID)) {
activeMenu = new cRecMenuConfirmTimer(timers->Get(timerID)->Event());
activeMenu->Display();
if (config.timerMessage) {
delete activeMenu;
activeMenu = new cRecMenuConfirmDeleteTimer(event);
activeMenu->Display();
} else {
Close();
state = osEnd;
}
}
break; }
case rmsEditTimerConflictMenu: {
@ -274,12 +327,18 @@ eOSState cRecMenuView::StateMachine(eRecMenuState nextState) {
if (cRecMenuTimerConflict *menu = dynamic_cast<cRecMenuTimerConflict*>(activeMenu)) {
timerIndex = menu->GetTimerConflictIndex();
} else break;
int timerID = timerConflicts->GetCurrentConflictTimerID(timerIndex);
const cTimers* timers;
#if VDRVERSNUM >= 20301
int timerID = timerConflicts->GetCurrentConflictTimerID(timerIndex) + 1;
{
LOCK_TIMERS_READ;
const cTimer *timer = Timers->Get(timerID);
timers = Timers;
}
const cTimer *timer = timers->GetById(timerID);
#else
const cTimer *timer = Timers.Get(timerID);
int timerID = timerConflicts->GetCurrentConflictTimerID(timerIndex);
timers = &Timers;
const cTimer *timer = timers->Get(timerID);
#endif
if (timer) {
delete activeMenu;
@ -297,10 +356,15 @@ eOSState cRecMenuView::StateMachine(eRecMenuState nextState) {
originalTimer = menu->GetOriginalTimer();
} else break;
recManager->SaveTimer(originalTimer, timerModified);
delete activeMenu;
if (!DisplayTimerConflict(originalTimer)) {
activeMenu = new cRecMenuConfirmTimer(originalTimer->Event(), true);
activeMenu->Display();
if (config.timerMessage) {
delete activeMenu;
activeMenu = new cRecMenuConfirmTimer(originalTimer->Event(), true);
activeMenu->Display();
} else {
Close();
state = osEnd;
}
}
break; }
/***************************************************************************************
@ -648,7 +712,7 @@ eOSState cRecMenuView::StateMachine(eRecMenuState nextState) {
} else break;
timerConflicts->SetCurrentConflict(timerConflict);
delete activeMenu;
activeMenu = new cRecMenuTimerConflict(timerConflicts->GetCurrentConflict());
activeMenu = new cRecMenuTimerConflict(timerConflicts->GetCurrentConflict(), rmsTimerConflicts);
activeMenu->Display();
break; }
case rmsSearchRerunsTimerConflictMenu: {
@ -660,12 +724,18 @@ eOSState cRecMenuView::StateMachine(eRecMenuState nextState) {
if (cRecMenuTimerConflict *menu = dynamic_cast<cRecMenuTimerConflict*>(activeMenu)) {
timerConflict = menu->GetTimerConflictIndex();
} else break;
int timerID = timerConflicts->GetCurrentConflictTimerID(timerConflict);
const cTimers* timers;
#if VDRVERSNUM >= 20301
int timerID = timerConflicts->GetCurrentConflictTimerID(timerConflict) + 1;
{
LOCK_TIMERS_READ;
const cTimer *timer = Timers->Get(timerID);
timers = Timers;
}
const cTimer *timer = timers->GetById(timerID);
#else
cTimer *timer = Timers.Get(timerID);
int timerID = timerConflicts->GetCurrentConflictTimerID(timerConflict);
timers = &Timers;
const cTimer *timer = timers->Get(timerID);
#endif
if (timer) {
const cEvent *event = timer->Event();
@ -707,12 +777,16 @@ eOSState cRecMenuView::StateMachine(eRecMenuState nextState) {
originalConflictIndex = menu->GetTimerConflictIndex();
} else break;
int originalTimerID = timerConflicts->GetCurrentConflictTimerID(originalConflictIndex);
const cTimers* timers;
#if VDRVERSNUM >= 20301
{
LOCK_TIMERS_READ;
const cTimer *timerOriginal = Timers->Get(originalTimerID);
timers = Timers;
}
#else
cTimer *timerOriginal = Timers.Get(originalTimerID);
timers = &Timers;
#endif
const cTimer *timerOriginal = timers->Get(originalTimerID);
if (replace && timerOriginal) {
recManager->DeleteTimer(timerOriginal->Event());
recManager->createTimer(replace);
@ -920,12 +994,12 @@ eOSState cRecMenuView::ProcessKey(eKeys Key) {
activeMenu->UpdateActiveMenuItem();
activeMenu->Show();
state = osContinue;
osdManager.flush();
osdManager.Flush();
}
return state;
}
state = StateMachine(nextState);
}
osdManager.flush();
osdManager.Flush();
return state;
}

View File

@ -32,8 +32,8 @@ private:
public:
cRecMenuView(void);
virtual ~cRecMenuView(void);
void SetFooter(cFooter *footer) { this->footer = footer; };
bool isActive(void) { return active; };
void AddFooter(cFooter *footer) { this->footer = footer; };
bool IsActive(void) { return active; };
void Start(const cEvent *event);
void StartFavorites(void);
void Close(void);

View File

@ -554,6 +554,12 @@ void cTVGuideSearchTimer::GetSearchModes(std::vector<std::string> *searchModes)
searchModes->push_back(tr("fuzzy"));
}
void cTVGuideSearchTimer::GetSubTitleModes(std::vector<std::string> *subTitleModes) {
subTitleModes->push_back(trVDR("no"));
subTitleModes->push_back(trVDR("yes"));
subTitleModes->push_back(tr("allow empty"));
}
void cTVGuideSearchTimer::GetUseChannelModes(std::vector<std::string> *useChannelModes) {
useChannelModes->push_back(tr("No"));
useChannelModes->push_back(tr("Interval"));

View File

@ -81,6 +81,7 @@ public:
int GetNumTimers(void);
int GetNumRecordings(void);
void GetSearchModes(std::vector<std::string> *searchModes);
void GetSubTitleModes(std::vector<std::string> *subTitleModes);
void GetUseChannelModes(std::vector<std::string> *useChannelModes);
void GetSearchTimerModes(std::vector<std::string> *searchTimerModes);
void GetCompareDateModes(std::vector<std::string> *compareDateModes);

View File

@ -108,7 +108,8 @@ void cTvguideSetup::Store(void) {
SetupStore("footerHeightPercent", config.footerHeightPercent);
SetupStore("instRecFolderMode", config.instRecFolderMode);
SetupStore("instRecFixedFolder", config.instRecFixedFolder.c_str());
SetupStore("AddSubtitleToTimerMode", config.addSubtitleToTimer);
SetupStore("addSubtitleToTimer", config.addSubtitleToTimer);
SetupStore("timerMessage", config.timerMessage);
SetupStore("favWhatsOnNow", config.favWhatsOnNow);
SetupStore("favWhatsOnNext", config.favWhatsOnNext);
SetupStore("favUseTime1", config.favUseTime1);
@ -432,6 +433,7 @@ void cMenuSetupFavorites::Set(void) {
Add(new cMenuEditStraItem(tr("Add episode to manual timers"), &tmpConfig->addSubtitleToTimer, 3, addSubtitleMode));
if (pRemoteTimers)
Add(new cMenuEditBoolItem(tr("Use Remotetimers"), &tmpConfig->useRemoteTimers));
Add(new cMenuEditBoolItem(tr("Show timer confirmation messages"), &tmpConfig->timerMessage));
Add(new cOsdItem(tr("Favorites:"), osUnknown, false));
Add(new cMenuEditBoolItem(tr("Limit channels in favorites"), &tmpConfig->favLimitChannels));
if (tmpConfig->favLimitChannels) {

View File

@ -9,14 +9,14 @@ cStatusHeader::cStatusHeader(void) {
height = geoManager.statusHeaderHeight;
width = geoManager.headerContentWidth;
tvFrameWidth = geoManager.tvFrameWidth;
pixmap = osdManager.requestPixmap(1, cRect(0, 0, width, height));
pixmapText = osdManager.requestPixmap(2, cRect(0, 0, width, height));
pixmapTVFrame = osdManager.requestPixmap(1, cRect(width, 0, tvFrameWidth, height));
pixmap = osdManager.CreatePixmap(1, cRect(0, 0, width, height));
pixmapText = osdManager.CreatePixmap(2, cRect(0, 0, width, height));
pixmapTVFrame = osdManager.CreatePixmap(1, cRect(width, 0, tvFrameWidth, height));
}
cStatusHeader::~cStatusHeader(void) {
osdManager.releasePixmap(pixmapText);
osdManager.releasePixmap(pixmapTVFrame);
osdManager.DestroyPixmap(pixmapText);
osdManager.DestroyPixmap(pixmapTVFrame);
if (config.scaleVideo) {
cRect vidWin = cDevice::PrimaryDevice()->CanScaleVideo(cRect::Null);
cDevice::PrimaryDevice()->ScaleVideo(vidWin);
@ -63,7 +63,7 @@ void cStatusHeader::DrawInfoText(cGridElement *grid) {
pixmapText->Fill(clrTransparent);
int x = border;
int y = border;
if (!grid->isDummy()) {
if (!grid->IsDummy()) {
const cEvent *event = grid->GetEvent();
int newX = DrawPoster(event, x, y, height-2*border, border);
if (newX > 0) {

View File

@ -12,7 +12,7 @@ cStyledPixmap::cStyledPixmap(cPixmap *pixmap) {
cStyledPixmap::~cStyledPixmap(void) {
if (pixmap)
osdManager.releasePixmap(pixmap);
osdManager.DestroyPixmap(pixmap);
}
void cStyledPixmap::setPixmap(cPixmap *pixmap) {

View File

@ -1,14 +1,14 @@
Description = IceBlue
clrStyle = 00000000
clrBackground = DDFFFFFF
clrBackgroundOSD = FFFFFFFF
clrGrid1 = BB555555
clrGrid2 = BB888888
clrBackground = EEFFFFFF
clrBackgroundOSD = F0FFFFFF
clrGrid1 = FFB2B2C
clrGrid2 = 55B2B2C7
clrGridFontBack = 00000000
clrGridActiveFontBack = 00000000
clrGridActiveFontBack = FFFFFFFF
clrHighlight = FF000044
clrFont = FF000000
clrFontActive = FFFFFFFF
clrFontActive = FFFFFFFF
clrFontButtons = FFFFFFFF
clrFontHeader = FF000000
clrHeader = FFFFFFFF
@ -20,14 +20,14 @@ clrTimeline1Blending = 00000000
clrTimeline2 = FF000000
clrTimeline2Blending = 00000000
clrTimeBase = A0FF0000
clrTabInactive = 88B8B8E6
clrButtonRed = FFBB0000
clrTabInactive = 55B2B2C7
clrButtonRed = FFCC00000
clrButtonRedBorder = FF000000
clrButtonGreen = FF00BB00
clrButtonGreenBorder = FF000000
clrButtonYellow = FFBBBB00
clrButtonYellow = FFF5B800
clrButtonYellowBorder = FF000000
clrButtonBlue = FF0000BB
clrButtonBlue = FF003DF5
clrButtonBlueBorder = FF000000
clrRecMenuBackground = AA000000
clrRecMenuTimerConflictBackground = FFCCCCCC
@ -36,16 +36,16 @@ clrRecMenuTimerConflictOverlap = AAFF0000
clrRecMenuDayActive = FF00FF00
clrRecMenuDayInactive = FFFF0000
clrRecMenuDayHighlight = 77000000
clrRecMenuTextBack = FF3C3C3C
clrRecMenuTextBack = 00000000
clrRecMenuTextActiveBack = FF404749
clrRecMenuKeyboardBack = FF000044
clrRecMenuKeyboardBorder = FF3C3C3C
clrRecMenuKeyboardBorder = FF6C6C6C
clrRecMenuKeyboardHigh = 55FFFFFF
clrButtonRedKeyboard = FFBB0000
clrButtonGreenKeyboard = FF00BB00
clrButtonYellowKeyboard = FFBBBB00
clrRecMenuTimelineTimer = B012273f
clrRecMenuTimelineBack = FF828282
clrRecMenuTimelineActive = FF3F3F3F
clrRecMenuTimelineBack = 55B2B2C7
clrRecMenuTimelineActive = 773F3F3F
clrRecMenuTimelineConflict = 30FF0000
clrRecMenuTimelineConflictOverlap = 90FF0000
clrRecMenuTimelineConflictOverlap = 90FF0000

View File

@ -25,9 +25,9 @@ cTimeLine::cTimeLine(cTimeManager *timeManager) {
y12 = geoManager.statusHeaderHeight;
y22 = geoManager.timeLineHeight;
}
dateViewer = new cStyledPixmap(osdManager.requestPixmap(1, cRect(x11, y11, x21, y21)));
timeline = osdManager.requestPixmap(2, cRect(x12, y12, x22, y22));
clock = new cStyledPixmap(osdManager.requestPixmap(3, cRect(0,
dateViewer = new cStyledPixmap(osdManager.CreatePixmap(1, cRect(x11, y11, x21, y21)));
timeline = osdManager.CreatePixmap(2, cRect(x12, y12, x22, y22));
clock = new cStyledPixmap(osdManager.CreatePixmap(3, cRect(0,
geoManager.statusHeaderHeight,
geoManager.clockWidth,
geoManager.clockHeight)));
@ -36,8 +36,8 @@ cTimeLine::cTimeLine(cTimeManager *timeManager) {
cTimeLine::~cTimeLine(void) {
if (clock)
delete clock;
osdManager.releasePixmap(timeBase);
osdManager.releasePixmap(timeline);
osdManager.DestroyPixmap(timeBase);
osdManager.DestroyPixmap(timeline);
if (dateViewer)
delete dateViewer;
}
@ -205,7 +205,7 @@ void cTimeLine::DrawTimeIndicator(void) {
return;
}
int deltaTime = (time(0) - timeManager->GetStart()) / 60 * geoManager.minutePixel;
osdManager.releasePixmap(timeBase);
osdManager.DestroyPixmap(timeBase);
int x1, x2, y1, y2;
if (config.displayMode == eVertical) {
x1 = 0;
@ -218,7 +218,7 @@ void cTimeLine::DrawTimeIndicator(void) {
x2 = 4;
y2 = geoManager.timeLineHeight + config.channelRows * geoManager.rowHeight;
}
timeBase = osdManager.requestPixmap(3, cRect(x1, y1, x2, y2));
timeBase = osdManager.CreatePixmap(3, cRect(x1, y1, x2, y2));
timeBase->Fill(clrTransparent);
timeBase->DrawRectangle(cRect(0, 0, timeBase->ViewPort().Width(), timeBase->ViewPort().Height()), theme.Color(clrTimeBase));
}

View File

@ -16,12 +16,11 @@ cTVGuideTimerConflict::cTVGuideTimerConflict(void) {
}
cTVGuideTimerConflict::~cTVGuideTimerConflict(void) {
}
bool cTVGuideTimerConflict::timerInvolved(int involvedID) {
int numConflicts = timerIDs.size();
for (int i=0; i<numConflicts; i++) {
for (int i = 0; i < numConflicts; i++) {
if (timerIDs[i] == involvedID)
return true;
}
@ -44,13 +43,12 @@ cTVGuideTimerConflicts::~cTVGuideTimerConflicts(void) {
}
void cTVGuideTimerConflicts::AddConflict(std::string epgSearchConflictLine) {
/* TIMERCONFLICT FORMAT:
/* TIMERCONFLICT FORMAT:
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|30|50#152#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
@ -86,11 +84,13 @@ void cTVGuideTimerConflicts::CalculateConflicts(void) {
#if VDRVERSNUM >= 20301
LOCK_TIMERS_READ;
const cTimers* timers = Timers;
for (int j=0; j < numTimers; j++) {
const cTimer *timer = timers->GetById(conflicts[i]->timerIDs[j] + 1);
#else
const cTimers* timers = &Timers;
#endif
for (int j=0; j < numTimers; j++) {
const cTimer *timer = timers->Get(conflicts[i]->timerIDs[j]);
#endif
if (timer) {
if (!unionSet) {
unionSet = new cTimeInterval(timer->StartTime(), timer->StopTime());
@ -109,7 +109,11 @@ void cTVGuideTimerConflicts::CalculateConflicts(void) {
cTimeInterval *intersect = NULL;
for (int j=0; j < numTimers; j++) {
#if VDRVERSNUM >= 20301
const cTimer *timer = timers->GetById(conflicts[i]->timerIDs[j] + 1);
#else
const cTimer *timer = timers->Get(conflicts[i]->timerIDs[j]);
#endif
if (timer) {
if (!intersect) {
intersect = new cTimeInterval(timer->StartTime(), timer->StopTime());
@ -152,7 +156,7 @@ int cTVGuideTimerConflicts::GetCurrentConflictTimerID(int timerIndex) {
int cTVGuideTimerConflicts::GetCorrespondingConflict(int timerID) {
int conflictIndex = -1;
if (numConflicts > 0) {
for (int i=0; i<numConflicts; i++) {
for (int i = 0; i < numConflicts; i++) {
if (conflicts[i]->timerInvolved(timerID)) {
conflictIndex = i;
break;
@ -172,7 +176,7 @@ cTVGuideTimerConflict *cTVGuideTimerConflicts::GetConflict(int conflictIndex) {
std::vector<cTVGuideTimerConflict*> cTVGuideTimerConflicts::GetConflictsBetween(time_t start, time_t stop) {
std::vector<cTVGuideTimerConflict*> conflictsFound;
for (int i=0; i < numConflicts; i++) {
for (int i = 0; i < numConflicts; i++) {
if ((conflicts[i]->timeStart > start) && (conflicts[i]->timeStart < stop)||
(conflicts[i]->timeStop > start) && (conflicts[i]->timeStop < stop))
conflictsFound.push_back(conflicts[i]);

19
tools.c
View File

@ -10,7 +10,6 @@
#include <vdr/plugin.h>
#include <vdr/skins.h>
#include "services/epgsearch.h"
#include "tools.h"
cPlugin *GetScraperPlugin(void) {
@ -42,7 +41,7 @@ std::string utf8_substr(const std::string& str, unsigned int start, long unsigne
}
if (q<=start+leng || leng==std::string::npos){ max=i; }
if (min==std::string::npos || max==std::string::npos) { return ""; }
return str.substr(min,max);
return str.substr(min,max-min);
}
std::string CutText(std::string text, int width, const cFont *font) {
@ -435,8 +434,8 @@ ALGORITHM
******************************************************************************/
int afuzzy_checkSUB(const char *t, AFUZZY *fuzzy)
{
register char c;
register int j, d;
char c;
int j, d;
/* For eficciency this case should be little bit optimized */
if (!fuzzy->k)
@ -450,7 +449,7 @@ int afuzzy_checkSUB(const char *t, AFUZZY *fuzzy)
if (R1 & fuzzy->mask_ok)
return 1;
} /* end for (register int j = 0 ... */
} /* end for (int j = 0 ... */
return 0;
}
@ -474,16 +473,16 @@ int afuzzy_checkSUB(const char *t, AFUZZY *fuzzy)
memcpy(fuzzy->R, fuzzy->R1, fuzzy->r_size);
} /* end for (register int j = 0 ... */
} /* end for (int j = 0 ... */
return 0;
}
int afuzzy_checkFLT(const char *t, AFUZZY *fuzzy)
{
register Uint FilterR = 0;
register Uint FilterR1;
register int j;
Uint FilterR = 0;
Uint FilterR1;
int j;
for (j = 0; t[j] != '\0'; j++)
{
@ -492,7 +491,7 @@ int afuzzy_checkFLT(const char *t, AFUZZY *fuzzy)
if (FilterR1 & fuzzy->filter_ok)
return 1;
FilterR = FilterR1;
} /* end for (register int j = 0 ... */
} /* end for (int j = 0 ... */
return 0;
}

View File

@ -27,7 +27,7 @@
#error "VDR-2.0.0 API version or greater is required!"
#endif
static const char *VERSION = "1.2.17";
static const char *VERSION = "1.3.6";
static const char *DESCRIPTION = tr("A fancy 2d EPG Viewer");
static const char *MAINMENUENTRY = "Tvguide";

View File

@ -33,14 +33,12 @@ cTvGuideOsd::~cTvGuideOsd() {
delete recMenuView;
if (channelJumper)
delete channelJumper;
osdManager.deleteOsd();
osdManager.DeleteOsd();
}
void cTvGuideOsd::Show(void) {
int start = cTimeMs::Now();
bool ok = false;
ok = osdManager.setOsd();
if (ok) {
if (osdManager.CreateOsd()) {
bool themeChanged = config.LoadTheme();
config.SetStyle();
config.setDynamicValues();
@ -51,7 +49,7 @@ void cTvGuideOsd::Show(void) {
imgCache.Clear();
imgCache.CreateCache();
}
osdManager.setBackground();
osdManager.SetBackground();
timeManager = new cTimeManager();
timeManager->Now();
SwitchTimers.Load(AddDirectory(cPlugin::ConfigDirectory("epgsearch"), "epgsearchswitchtimers.conf"));
@ -118,17 +116,17 @@ void cTvGuideOsd::drawOsd() {
channelGroups = new cChannelGroups();
channelGroups->ReadChannelGroups();
footer = new cFooter(channelGroups);
recMenuView->SetFooter(footer);
recMenuView->AddFooter(footer);
footer->drawRedButton();
if (config.channelJumpMode == eNumJump) {
footer->drawGreenButton();
footer->drawYellowButton();
}
footer->drawBlueButton(false);
osdManager.flush();
osdManager.Flush();
readChannels(newStartChannel);
drawGridsChannelJump(offset);
osdManager.flush();
osdManager.Flush();
cPixmap::Unlock();
}
@ -289,7 +287,7 @@ void cTvGuideOsd::channelForward() {
if (activeGrid && (config.channelJumpMode == eGroupJump)) {
footer->UpdateGroupButtons(activeGrid->column->getChannel());
}
osdManager.flush();
osdManager.Flush();
}
void cTvGuideOsd::channelBack() {
@ -347,7 +345,7 @@ void cTvGuideOsd::channelBack() {
if (activeGrid && (config.channelJumpMode == eGroupJump)) {
footer->UpdateGroupButtons(activeGrid->column->getChannel());
}
osdManager.flush();
osdManager.Flush();
}
void cTvGuideOsd::timeForward() {
@ -367,7 +365,7 @@ void cTvGuideOsd::timeForward() {
if (!actionDone) {
ScrollForward();
}
osdManager.flush();
osdManager.Flush();
}
void cTvGuideOsd::ScrollForward() {
@ -406,7 +404,7 @@ void cTvGuideOsd::timeBack() {
if (!actionDone) {
ScrollBack();
}
osdManager.flush();
osdManager.Flush();
}
void cTvGuideOsd::ScrollBack() {
@ -470,7 +468,7 @@ void cTvGuideOsd::processKeyRight() {
}
void cTvGuideOsd::processKeyRed() {
if ((activeGrid == NULL) || activeGrid->isDummy())
if ((activeGrid == NULL) || activeGrid->IsDummy())
return;
recMenuView->Start(activeGrid->GetEvent());
}
@ -518,7 +516,7 @@ void cTvGuideOsd::processKeyGreen() {
else
drawGridsChannelJump(currentCol);
}
osdManager.flush();
osdManager.Flush();
}
}
@ -568,7 +566,7 @@ void cTvGuideOsd::processKeyYellow() {
else
drawGridsChannelJump(currentCol);
}
osdManager.flush();
osdManager.Flush();
}
}
@ -615,13 +613,13 @@ eOSState cTvGuideOsd::ChannelSwitch(bool *alreadyUnlocked) {
}
void cTvGuideOsd::DetailedEPG() {
if (!activeGrid->isDummy()) {
if (!activeGrid->IsDummy()) {
detailViewActive = true;
detailView = new cDetailView(activeGrid->GetEvent(), footer);
footer->SetDetailedViewMode();
osdManager.flush();
osdManager.Flush();
detailView->Start();
osdManager.flush();
osdManager.Flush();
}
}
@ -675,7 +673,7 @@ void cTvGuideOsd::TimeJump(int mode) {
timeLine->DrawDateViewer();
timeLine->DrawClock();
timeLine->DrawTimeline();
osdManager.flush();
osdManager.Flush();
}
int cTvGuideOsd::GetLastValidChannel(void) {
@ -689,7 +687,7 @@ void cTvGuideOsd::ChannelJump(int num) {
}
channelJumper->Set(num);
channelJumper->DrawText();
osdManager.flush();
osdManager.Flush();
}
void cTvGuideOsd::CheckTimeout(void) {
@ -714,7 +712,7 @@ void cTvGuideOsd::CheckTimeout(void) {
drawGridsChannelJump();
}
}
osdManager.flush();
osdManager.Flush();
}
}
@ -728,11 +726,11 @@ eOSState cTvGuideOsd::ProcessKey(eKeys Key) {
eOSState state = osContinue;
cPixmap::Lock();
bool alreadyUnlocked = false;
if (recMenuView->isActive()) {
if (recMenuView->IsActive()) {
state = recMenuView->ProcessKey(Key);
if (state == osEnd) {
SetTimers();
osdManager.flush();
osdManager.Flush();
}
state = osContinue;
} else if (detailViewActive) {
@ -748,7 +746,7 @@ eOSState cTvGuideOsd::ProcessKey(eKeys Key) {
if ((config.blueKeyMode == eBlueKeySwitch) || (config.blueKeyMode == eBlueKeyFavorites)) {
state = ChannelSwitch(&alreadyUnlocked);
} else {
osdManager.flush();
osdManager.Flush();
state = osContinue;
}
} else if ((Key & ~k_Repeat) == kOk && (config.blueKeyMode == eBlueKeyEPG)) {
@ -762,7 +760,7 @@ eOSState cTvGuideOsd::ProcessKey(eKeys Key) {
delete detailView;
detailView = NULL;
detailViewActive = false;
osdManager.flush();
osdManager.Flush();
state = osContinue;
}
}
@ -787,7 +785,7 @@ eOSState cTvGuideOsd::ProcessKey(eKeys Key) {
default: break;
}
if (timeLine->DrawClock()) {
osdManager.flush();
osdManager.Flush();
}
}
if (!alreadyUnlocked) {

100
view.c
View File

@ -41,19 +41,19 @@ cView::cView(void) : cThread("View") {
cView::~cView(void) {
if (pixmapBackground)
osdManager.releasePixmap(pixmapBackground);
osdManager.DestroyPixmap(pixmapBackground);
if (pixmapHeader)
delete pixmapHeader;
if (pixmapHeaderLogo)
osdManager.releasePixmap(pixmapHeaderLogo);
osdManager.DestroyPixmap(pixmapHeaderLogo);
if (pixmapContent)
osdManager.releasePixmap(pixmapContent);
osdManager.DestroyPixmap(pixmapContent);
if (pixmapTabs)
osdManager.releasePixmap(pixmapTabs);
osdManager.DestroyPixmap(pixmapTabs);
if (pixmapScrollbar)
osdManager.releasePixmap(pixmapScrollbar);
osdManager.DestroyPixmap(pixmapScrollbar);
if (pixmapScrollbarBack)
osdManager.releasePixmap(pixmapScrollbarBack);
osdManager.DestroyPixmap(pixmapScrollbarBack);
if (imgScrollBar)
delete imgScrollBar;
}
@ -81,11 +81,11 @@ void cView::SetGeometry(void) {
void cView::DrawHeader(void) {
if (!pixmapHeader) {
pixmapHeader = new cStyledPixmap(osdManager.requestPixmap(5, cRect(0, 0, headerWidth, headerHeight)));
pixmapHeader = new cStyledPixmap(osdManager.CreatePixmap(5, cRect(0, 0, headerWidth, headerHeight)));
pixmapHeader->setColor(theme.Color(clrHeader), theme.Color(clrHeaderBlending));
}
if (!pixmapHeaderLogo) {
pixmapHeaderLogo = osdManager.requestPixmap(6, cRect(0, 0, width, headerHeight));
pixmapHeaderLogo = osdManager.CreatePixmap(6, cRect(0, 0, width, headerHeight));
}
pixmapHeader->Fill(clrTransparent);
pixmapHeaderLogo->Fill(clrTransparent);
@ -108,17 +108,24 @@ void cView::DrawHeader(void) {
if (imgLoader.LoadLogo(channel, logoWidth, logoHeight)) {
cImage logo = imgLoader.GetImage();
const int logoheight = logo.Height();
pixmapHeaderLogo->DrawImage(cPoint(border / 2, ((headerHeight - logoHeight) / 2 + (logoHeight - logoheight) / 2)), logo);
const int logowidth = logo.Width();
pixmapHeaderLogo->DrawImage(cPoint(xText + ((logoWidth - logowidth) / 2), ((headerHeight - logoheight) / 2)), logo);
xText += logoWidth + border / 2;
}
}
//Date and Time, Title, Subtitle
int yDateTime = border / 2;
int yTitle = (headerHeight - fontHeaderLarge->Height()) / 2;
int ySubtitle = headerHeight - fontHeader->Height() - border / 3;
int textWidthMax = headerWidth - xText - border / 2;
wrapper.Set(title.c_str(), fontHeaderLarge, textWidthMax);
int lineHeight = fontHeaderLarge->Height();
int textLines = wrapper.Lines();
int yDateTime = border / 2;
int yTitle = (headerHeight - textLines * lineHeight) / 2;
int ySubtitle = headerHeight - fontHeader->Height() - border / 3;
pixmapHeader->DrawText(cPoint(xText, yDateTime), CutText(dateTime, textWidthMax, fontHeader).c_str(), theme.Color(clrFont), theme.Color(clrStatusHeader), fontHeader);
pixmapHeader->DrawText(cPoint(xText, yTitle), CutText(title, textWidthMax, fontHeaderLarge).c_str(), theme.Color(clrFont), theme.Color(clrStatusHeader), fontHeaderLarge);
for (int i = 0; i < textLines; i++) {
pixmapHeader->DrawText(cPoint(xText, yTitle + i * lineHeight), wrapper.GetLine(i), theme.Color(clrFont), theme.Color(clrStatusHeader), fontHeaderLarge);
}
pixmapHeader->DrawText(cPoint(xText, ySubtitle), CutText(subTitle, textWidthMax, fontHeader).c_str(), theme.Color(clrFont), theme.Color(clrStatusHeader), fontHeader);
//REC Icon
eTimerMatch timerMatch = tmNone;
@ -161,7 +168,7 @@ void cView::DrawHeader(void) {
void cView::DrawTabs(void) {
if (!pixmapTabs) {
pixmapTabs = osdManager.requestPixmap(4, cRect(0, y + headerHeight + contentHeight, width + scrollbarWidth, tabHeight));
pixmapTabs = osdManager.CreatePixmap(4, cRect(0, y + headerHeight + contentHeight, width + scrollbarWidth, tabHeight));
}
tColor bgColor = theme.Color(clrTabInactive);
pixmapTabs->Fill(clrTransparent);
@ -188,18 +195,18 @@ void cView::DrawTabs(void) {
void cView::ClearContent(void) {
if (pixmapContent && Running()) {
osdManager.releasePixmap(pixmapContent);
osdManager.DestroyPixmap(pixmapContent);
pixmapContent = NULL;
}
if (pixmapBackground && Running()) {
osdManager.releasePixmap(pixmapBackground);
osdManager.DestroyPixmap(pixmapBackground);
pixmapBackground = NULL;
}
}
void cView::CreateContent(int fullHeight) {
scrollable = false;
pixmapBackground = osdManager.requestPixmap(3, cRect(x, y + headerHeight, width + scrollbarWidth, contentHeight + tabHeight));
pixmapBackground = osdManager.CreatePixmap(3, cRect(x, y + headerHeight, width + scrollbarWidth, contentHeight + tabHeight));
pixmapBackground->Fill(theme.Color(clrBackground));
int drawPortHeight = contentHeight;
@ -207,7 +214,7 @@ void cView::CreateContent(int fullHeight) {
drawPortHeight = fullHeight;
scrollable = true;
}
pixmapContent = osdManager.requestPixmap(4, cRect(x, y + headerHeight, width, contentHeight), cRect(0, 0, width, drawPortHeight));
pixmapContent = osdManager.CreatePixmap(4, cRect(x, y + headerHeight, width, contentHeight), cRect(0, 0, width, drawPortHeight));
pixmapContent->Fill(clrTransparent);
}
@ -216,7 +223,7 @@ void cView::DrawContent(std::string *text) {
wText.Set(text->c_str(), font, width - 2 * border);
int lineHeight = font->Height();
int textLines = wText.Lines();
int textHeight = lineHeight * textLines + 2*border;
int textHeight = lineHeight * textLines + 2 * border;
int yText = border;
CreateContent(textHeight);
for (int i=0; i < textLines; i++) {
@ -246,18 +253,18 @@ void cView::DrawFloatingContent(std::string *infoText, cTvMedia *img, cTvMedia *
int lineHeight = font->Height();
int textLinesTall = wTextTall.Lines();
int textLinesFull = wTextFull.Lines();
int textHeight = lineHeight * (textLinesTall + textLinesFull) + 2*border;
int textHeight = lineHeight * (textLinesTall + textLinesFull) + 2 * border;
int yText = border;
CreateContent(max(textHeight, imgHeight + 2*border));
for (int i=0; i < textLinesTall; i++) {
CreateContent(std::max(textHeight, imgHeight + 2 * border));
for (int i = 0; i < textLinesTall; i++) {
pixmapContent->DrawText(cPoint(border, yText), wTextTall.GetLine(i), theme.Color(clrFont), clrTransparent, font);
yText += lineHeight;
}
for (int i=0; i < textLinesFull; i++) {
for (int i = 0; i < textLinesFull; i++) {
pixmapContent->DrawText(cPoint(border, yText), wTextFull.GetLine(i), theme.Color(clrFont), clrTransparent, font);
yText += lineHeight;
}
osdManager.flush();
osdManager.Flush();
cImageLoader imgLoader;
if (imgLoader.LoadPoster(img->path.c_str(), imgWidth, imgHeight)) {
if (Running() && pixmapContent)
@ -265,16 +272,16 @@ void cView::DrawFloatingContent(std::string *infoText, cTvMedia *img, cTvMedia *
}
if (!img2)
return;
osdManager.flush();
osdManager.Flush();
if (imgLoader.LoadPoster(img2->path.c_str(), imgWidth2, imgHeight2)) {
if (Running() && pixmapContent)
pixmapContent->DrawImage(cPoint(width - imgWidth2 - border, imgHeight + 2*border), imgLoader.GetImage());
pixmapContent->DrawImage(cPoint(width - imgWidth2 - border, imgHeight + 2 * border), imgLoader.GetImage());
}
}
void cView::CreateFloatingTextWrapper(cTextWrapper *twNarrow, cTextWrapper *twFull, std::string *text, int widthImg, int heightImg) {
int lineHeight = font->Height();
int linesNarrow = (heightImg + 2*border)/ lineHeight;
int linesNarrow = (heightImg + 2 * border)/ lineHeight;
int linesDrawn = 0;
int y = 0;
int widthNarrow = width - 3 * border - widthImg;
@ -394,7 +401,7 @@ void cView::DrawActors(std::vector<cActor> *actors) {
}
actor++;
}
osdManager.flush();
osdManager.Flush();
x = 0;
y += thumbHeight + 2 * fontSmall->Height() + border + border/2;
}
@ -420,11 +427,11 @@ void cView::DrawScrollbar(void) {
return;
if (!pixmapScrollbar) {
pixmapScrollbar = osdManager.requestPixmap(6, cRect(width, y + headerHeight, scrollbarWidth, contentHeight));
pixmapScrollbar = osdManager.CreatePixmap(6, cRect(width, y + headerHeight, scrollbarWidth, contentHeight));
pixmapScrollbar->Fill(clrTransparent);
}
if (!pixmapScrollbarBack) {
pixmapScrollbarBack = osdManager.requestPixmap(5, cRect(width, y + headerHeight, scrollbarWidth, contentHeight));
pixmapScrollbarBack = osdManager.CreatePixmap(5, cRect(width, y + headerHeight, scrollbarWidth, contentHeight));
pixmapScrollbarBack->Fill(clrTransparent);
}
@ -481,7 +488,6 @@ bool cView::KeyUp(void) {
if (!scrollable)
return false;
int aktHeight = pixmapContent->DrawPort().Point().Y();
// int lineHeight = font->Height();
if (aktHeight >= 0) {
return false;
}
@ -581,7 +587,7 @@ void cEPGView::DrawImages(void) {
if (drawPic) {
pixmapContent->DrawImage(cPoint((width - imgWidth) / 2, yPic), imgLoader.GetImage());
yPic += imgHeight + border;
osdManager.flush();
osdManager.Flush();
}
}
}
@ -606,7 +612,7 @@ void cEPGView::Action(void) {
ClearContent();
if (!headerDrawn) {
DrawHeader();
osdManager.flush();
osdManager.Flush();
headerDrawn = true;
}
if (tabs.size() == 0) {
@ -626,7 +632,7 @@ void cEPGView::Action(void) {
break;
}
DrawScrollbar();
osdManager.flush();
osdManager.Flush();
}
/********************************************************************************************
@ -749,32 +755,32 @@ void cSeriesView::DrawImages(void) {
if (imgLoader.LoadPoster(series.banners[i].path.c_str(), series.banners[i].width, series.banners[i].height) && Running()) {
pixmapContent->DrawImage(cPoint((width - series.banners[i].width) / 2, yPic), imgLoader.GetImage());
yPic += series.banners[i].height + border;
osdManager.flush();
osdManager.Flush();
}
}
if (imgLoader.LoadPoster(series.fanarts[i].path.c_str(), fanartWidth, fanartHeight) && Running()) {
pixmapContent->DrawImage(cPoint((width - fanartWidth)/2, yPic), imgLoader.GetImage());
yPic += fanartHeight + border;
osdManager.flush();
osdManager.Flush();
}
}
if (numPosters >= 1) {
if (imgLoader.LoadPoster(series.posters[0].path.c_str(), posterWidth, posterHeight) && Running()) {
pixmapContent->DrawImage(cPoint(border, yPic), imgLoader.GetImage());
osdManager.flush();
osdManager.Flush();
yPic += posterHeight + border;
}
}
if (numPosters >= 2) {
if (imgLoader.LoadPoster(series.posters[1].path.c_str(), posterWidth, posterHeight) && Running()) {
pixmapContent->DrawImage(cPoint(2 * border + posterWidth, yPic - posterHeight - border), imgLoader.GetImage());
osdManager.flush();
osdManager.Flush();
}
}
if (numPosters == 3) {
if (imgLoader.LoadPoster(series.posters[2].path.c_str(), posterWidth, posterHeight) && Running()) {
pixmapContent->DrawImage(cPoint((width - posterWidth) / 2, yPic), imgLoader.GetImage());
osdManager.flush();
osdManager.Flush();
}
}
}
@ -808,7 +814,7 @@ void cSeriesView::Action(void) {
ClearContent();
if (!headerDrawn) {
DrawHeader();
osdManager.flush();
osdManager.Flush();
headerDrawn = true;
}
if (tabs.size() == 0) {
@ -850,7 +856,7 @@ void cSeriesView::Action(void) {
break;
}
DrawScrollbar();
osdManager.flush();
osdManager.Flush();
}
/********************************************************************************************
@ -976,28 +982,28 @@ void cMovieView::DrawImages(void) {
if (imgLoader.LoadPoster(movie.fanart.path.c_str(), fanartWidth, fanartHeight) && Running()) {
pixmapContent->DrawImage(cPoint((width - fanartWidth)/2, yPic), imgLoader.GetImage());
yPic += fanartHeight + border;
osdManager.flush();
osdManager.Flush();
}
}
if (movie.collectionFanart.width > 0 && movie.collectionFanart.height > 0 && movie.collectionFanart.path.size() > 0) {
if (imgLoader.LoadPoster(movie.collectionFanart.path.c_str(), collectionFanartWidth, collectionFanartHeight) && Running()) {
pixmapContent->DrawImage(cPoint((width - collectionFanartWidth)/2, yPic), imgLoader.GetImage());
yPic += collectionFanartHeight + border;
osdManager.flush();
osdManager.Flush();
}
}
if (movie.poster.width > 0 && movie.poster.height > 0 && movie.poster.path.size() > 0) {
if (imgLoader.LoadPoster(movie.poster.path.c_str(), movie.poster.width, movie.poster.height) && Running()) {
pixmapContent->DrawImage(cPoint((width - movie.poster.width) / 2, yPic), imgLoader.GetImage());
yPic += movie.poster.height + border;
osdManager.flush();
osdManager.Flush();
}
}
if (movie.collectionPoster.width > 0 && movie.collectionPoster.height > 0 && movie.collectionPoster.path.size() > 0) {
if (imgLoader.LoadPoster(movie.collectionPoster.path.c_str(), movie.collectionPoster.width, movie.collectionPoster.height) && Running()) {
pixmapContent->DrawImage(cPoint((width - movie.collectionPoster.width) / 2, yPic), imgLoader.GetImage());
yPic += movie.collectionPoster.height + border;
osdManager.flush();
osdManager.Flush();
}
}
}
@ -1022,7 +1028,7 @@ void cMovieView::Action(void) {
ClearContent();
if (!headerDrawn) {
DrawHeader();
osdManager.flush();
osdManager.Flush();
headerDrawn = true;
}
if (tabs.size() == 0) {
@ -1058,5 +1064,5 @@ void cMovieView::Action(void) {
break;
}
DrawScrollbar();
osdManager.flush();
osdManager.Flush();
}

1
view.h
View File

@ -51,6 +51,7 @@ protected:
int contentHeight;
int tabHeight;
int scrollbarWidth;
cTextWrapper wrapper;
std::vector<std::string> tabs;
std::string title;
std::string subTitle;