mirror of
https://projects.vdr-developer.org/git/vdr-plugin-tvguide.git
synced 2023-10-05 13:01:48 +00:00
Compare commits
86 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
2f497adf01 | ||
|
decfb2d39d | ||
|
5f4ea6b30d | ||
|
435a74d9cf | ||
|
fc47c35bea | ||
|
4d80c6900d | ||
|
78d6e980ee | ||
|
69356e9c43 | ||
|
bf3a8a430b | ||
|
52c41ff5af | ||
|
5870b1ae4c | ||
|
69b851c9ed | ||
|
8335ab0e41 | ||
|
240cbe87e0 | ||
|
ee68d2eb2f | ||
|
eb3a4113be | ||
|
7ec89bf12b | ||
|
f653594c4a | ||
|
8129d116fb | ||
|
874f5cd9d5 | ||
|
9044e092f8 | ||
|
b96f800240 | ||
|
5d9ed1439a | ||
|
66a0c15aea | ||
|
8db88c2556 | ||
|
509b64d78f | ||
|
15b7074b4e | ||
|
3fee6ab13f | ||
|
ffd3e2c79f | ||
|
c77f74321f | ||
|
efe06b8e98 | ||
|
6540e21444 | ||
|
2e4a43133e | ||
|
bcf2ce757c | ||
|
263a734a0d | ||
|
7300fdf91c | ||
|
89e9086943 | ||
|
e236d9e571 | ||
|
8794891599 | ||
|
cd62a9bd6b | ||
|
3f0bd75011 | ||
|
a711aed160 | ||
|
cdb5a46145 | ||
|
fc784f34e5 | ||
|
b707292485 | ||
|
587fbe1f44 | ||
|
9173d14b10 | ||
|
3386c05e91 | ||
|
a1eaf7a865 | ||
|
41eb32389d | ||
|
f4369c0772 | ||
|
0203cb3f01 | ||
|
152662d519 | ||
|
b17fd9b7aa | ||
|
fb165b2b43 | ||
|
e31070cd76 | ||
|
15ce11db5f | ||
|
0d3dd79585 | ||
|
7f8ac2a2a8 | ||
|
31f72f2ad8 | ||
|
a1aa300259 | ||
|
b7970e5723 | ||
|
3f9327b8e4 | ||
|
bff9d78ff3 | ||
|
d21b1496f0 | ||
|
5ff172c987 | ||
|
6b3eda282f | ||
|
107f3f945f | ||
|
45a2d6bee0 | ||
|
700543b394 | ||
|
1df9641621 | ||
|
3ed46bd881 | ||
|
81759f95cb | ||
|
0766d67980 | ||
|
3513f82a8c | ||
|
7a79059414 | ||
|
ceadc0bbfe | ||
|
e09279ca32 | ||
|
27e9004629 | ||
|
194aa06a4e | ||
|
f046493a00 | ||
|
fd7b1b9ab7 | ||
|
c4e25b899c | ||
|
059936c6d7 | ||
|
549d42b487 | ||
|
ad1f0ba0d6 |
83
HISTORY
83
HISTORY
@@ -203,3 +203,86 @@ Version 1.2.9
|
||||
- Correct plugin options in README and CommandLineHelp
|
||||
- Change locking in cTVGuideSearchTimer::cTVGuideSearchTimer
|
||||
- Fixed a dayOfWeek error in RecMenuSearchTimerEdit
|
||||
|
||||
Version 1.2.10
|
||||
|
||||
- Update remotetimers.h
|
||||
- Simplify cRecMenuSearchTimerEdit::GetSearchTimer
|
||||
- Fixed cRecMenuItemSelectDirectory::DrawValue
|
||||
- Some rework
|
||||
|
||||
Version 1.2.11
|
||||
|
||||
- Fixed a segfault with graphicsmagick > 1.3.31
|
||||
- Fixed a possible deadlock in detailview
|
||||
- Optical changes in cMenuSetupImageCache
|
||||
|
||||
Version 1.2.12
|
||||
|
||||
- Fixed updating current time
|
||||
- Fixed updating current TimeBase
|
||||
- Diplay the current TimeBase throughout the whole timeline
|
||||
|
||||
Version 1.2.13
|
||||
|
||||
- Revert "Diplay the current TimeBase throughout the whole timeline"
|
||||
|
||||
Version 1.2.14
|
||||
|
||||
- Diplay the current TimeBase throughout the whole timeline
|
||||
- Can switch off and optimize diplay time in epggrid "displayMode == Vertical"
|
||||
- Fixed a error while changing a Theme
|
||||
|
||||
Version 1.2.15
|
||||
|
||||
- Workaround for HWAccelerated OSD
|
||||
|
||||
Version 1.2.16
|
||||
|
||||
- Fixed a timer changed message
|
||||
- Extend keys kFastRew, kFastFwd, kPrev, kNext for TimeJump
|
||||
(if you use the numeric keys for "Jump to specific channel",
|
||||
you can now use the keys kFastRew, kFastFwd, kPrev, kNext for TimeJump.
|
||||
Note: if you use the permashift-plugin then the key kFastRew doesnt work for TimeJump)
|
||||
- Fixed a possible deadlook in cEPGView::cEPGView
|
||||
- Refactor Timeline
|
||||
- Refactor CutText in horizontal epgview
|
||||
- Optimize display "REC" sign in epgview
|
||||
- Separate "displayTime" for horizontal and vertical view
|
||||
- RecMenu "Timer Timeline" displays now sorted active timer
|
||||
|
||||
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
|
||||
|
2
Makefile
2
Makefile
@@ -60,7 +60,7 @@ endif
|
||||
|
||||
### The object files (add further files here):
|
||||
|
||||
OBJS = $(PLUGIN).o channelcolumn.o channelgroup.o channelgroups.o channeljump.o config.o detailview.o dummygrid.o epggrid.o fontmanager.o footer.o geometrymanager.o grid.o headergrid.o imagecache.o imageloader.o imagemagickwrapper.o imagescaler.o osdmanager.o recmanager.o recmenu.o recmenuitem.o recmenumanager.o recmenus.o searchtimer.o setup.o statusheader.o styledpixmap.o switchtimer.o timeline.o timer.o timerconflict.o tools.o tvguideosd.o view.o
|
||||
OBJS = $(PLUGIN).o channelepg.o channelgroup.o channelgroups.o channeljump.o config.o detailview.o dummygrid.o epggrid.o fontmanager.o footer.o geometrymanager.o gridelement.o headergrid.o imagecache.o imageloader.o imagemagickwrapper.o imagescaler.o osdmanager.o recmanager.o recmenu.o recmenuitem.o recmenuview.o recmenus.o searchtimer.o setup.o statusheader.o styledpixmap.o switchtimer.o timeline.o timemanager.o timerconflict.o tools.o tvguideosd.o view.o
|
||||
|
||||
### The main target:
|
||||
|
||||
|
@@ -1,10 +1,10 @@
|
||||
#include "channelcolumn.h"
|
||||
#include "channelepg.h"
|
||||
#include "dummygrid.h"
|
||||
|
||||
cChannelColumn::cChannelColumn(int num, const cChannel *channel, cMyTime *myTime) {
|
||||
cChannelEpg::cChannelEpg(int num, const cChannel *channel, cTimeManager *timeManager) {
|
||||
this->channel = channel;
|
||||
this->num = num;
|
||||
this->myTime = myTime;
|
||||
this->timeManager = timeManager;
|
||||
#if VDRVERSNUM < 20301
|
||||
hasTimer = channel->HasTimer();
|
||||
#endif
|
||||
@@ -15,7 +15,7 @@ cChannelColumn::cChannelColumn(int num, const cChannel *channel, cMyTime *myTime
|
||||
header = NULL;
|
||||
}
|
||||
|
||||
cChannelColumn::~cChannelColumn(void) {
|
||||
cChannelEpg::~cChannelEpg(void) {
|
||||
if (header)
|
||||
delete header;
|
||||
grids.Clear();
|
||||
@@ -24,21 +24,21 @@ cChannelColumn::~cChannelColumn(void) {
|
||||
#endif
|
||||
}
|
||||
|
||||
void cChannelColumn::clearGrids() {
|
||||
void cChannelEpg::clearGrids() {
|
||||
grids.Clear();
|
||||
}
|
||||
|
||||
void cChannelColumn::createHeader() {
|
||||
void cChannelEpg::createHeader() {
|
||||
header = new cHeaderGrid();
|
||||
header->createBackground(num);
|
||||
header->drawChannel(channel);
|
||||
}
|
||||
|
||||
void cChannelColumn::drawHeader() {
|
||||
void cChannelEpg::drawHeader() {
|
||||
header->setPosition(num);
|
||||
}
|
||||
|
||||
bool cChannelColumn::readGrids() {
|
||||
bool cChannelEpg::readGrids() {
|
||||
#if VDRVERSNUM >= 20301
|
||||
const cSchedules* schedules;
|
||||
{
|
||||
@@ -51,17 +51,17 @@ bool cChannelColumn::readGrids() {
|
||||
const cSchedule *Schedule = NULL;
|
||||
Schedule = schedules->GetSchedule(channel);
|
||||
if (!Schedule) {
|
||||
addDummyGrid(myTime->GetStart(), myTime->GetEnd(), NULL, false);
|
||||
addDummyGrid(timeManager->GetStart(), timeManager->GetEnd(), NULL, false);
|
||||
return true;
|
||||
}
|
||||
bool eventFound = false;
|
||||
bool dummyAtStart = false;
|
||||
const cEvent *startEvent = Schedule->GetEventAround(myTime->GetStart());
|
||||
const cEvent *startEvent = Schedule->GetEventAround(timeManager->GetStart());
|
||||
if (startEvent != NULL) {
|
||||
eventFound = true;
|
||||
} else {
|
||||
for (int i=1; i<6; i++) {
|
||||
startEvent = Schedule->GetEventAround(myTime->GetStart()+i*5*60);
|
||||
startEvent = Schedule->GetEventAround(timeManager->GetStart()+i*5*60);
|
||||
if (startEvent) {
|
||||
eventFound = true;
|
||||
dummyAtStart = true;
|
||||
@@ -72,20 +72,20 @@ bool cChannelColumn::readGrids() {
|
||||
if (eventFound) {
|
||||
bool col = true;
|
||||
if (dummyAtStart) {
|
||||
addDummyGrid(myTime->GetStart(), startEvent->StartTime(), NULL, col);
|
||||
addDummyGrid(timeManager->GetStart(), startEvent->StartTime(), NULL, col);
|
||||
col = !col;
|
||||
}
|
||||
bool dummyNeeded = true;
|
||||
bool toFarInFuture = false;
|
||||
time_t endLast = myTime->GetStart();
|
||||
time_t endLast = timeManager->GetStart();
|
||||
const cEvent *event = startEvent;
|
||||
const cEvent *eventLast = NULL;
|
||||
for (; event; event = Schedule->Events()->Next(event)) {
|
||||
if (endLast < event->StartTime()) {
|
||||
//gap, dummy needed
|
||||
time_t endTime = event->StartTime();
|
||||
if (endTime > myTime->GetEnd()) {
|
||||
endTime = myTime->GetEnd();
|
||||
if (endTime > timeManager->GetEnd()) {
|
||||
endTime = timeManager->GetEnd();
|
||||
toFarInFuture = true;
|
||||
}
|
||||
addDummyGrid(endLast, endTime, NULL, col);
|
||||
@@ -97,74 +97,76 @@ bool cChannelColumn::readGrids() {
|
||||
addEpgGrid(event, NULL, col);
|
||||
col = !col;
|
||||
endLast = event->EndTime();
|
||||
if (event->EndTime() > myTime->GetEnd()) {
|
||||
if (event->EndTime() > timeManager->GetEnd()) {
|
||||
dummyNeeded = false;
|
||||
break;
|
||||
}
|
||||
eventLast = event;
|
||||
}
|
||||
if (dummyNeeded) {
|
||||
addDummyGrid(eventLast->EndTime(), myTime->GetEnd(), NULL, col);
|
||||
addDummyGrid(eventLast->EndTime(), timeManager->GetEnd(), NULL, col);
|
||||
}
|
||||
return true;
|
||||
} else {
|
||||
addDummyGrid(myTime->GetStart(), myTime->GetEnd(), NULL, false);
|
||||
addDummyGrid(timeManager->GetStart(), timeManager->GetEnd(), NULL, false);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void cChannelColumn::drawGrids() {
|
||||
for (cGrid *grid = grids.First(); grid; grid = grids.Next(grid)) {
|
||||
void cChannelEpg::drawGrids() {
|
||||
for (cGridElement *grid = grids.First(); grid; grid = grids.Next(grid)) {
|
||||
grid->SetViewportHeight();
|
||||
grid->PositionPixmap();
|
||||
grid->Draw();
|
||||
}
|
||||
}
|
||||
|
||||
int cChannelColumn::getX() {
|
||||
int cChannelEpg::getX() {
|
||||
return geoManager.timeLineWidth + num*geoManager.colWidth;
|
||||
}
|
||||
|
||||
int cChannelColumn::getY() {
|
||||
int cChannelEpg::getY() {
|
||||
return geoManager.statusHeaderHeight + geoManager.timeLineHeight + num*geoManager.rowHeight;
|
||||
}
|
||||
|
||||
cGrid * cChannelColumn::getActive() {
|
||||
cMyTime t;
|
||||
cGridElement *cChannelEpg::getActive(bool last) {
|
||||
cTimeManager t;
|
||||
t.Now();
|
||||
for (cGrid *grid = grids.First(); grid; grid = grids.Next(grid)) {
|
||||
if (last)
|
||||
return grids.Last();
|
||||
for (cGridElement *grid = grids.First(); grid; grid = grids.Next(grid)) {
|
||||
if (grid->Match(t.Get()))
|
||||
return grid;
|
||||
}
|
||||
return grids.First();
|
||||
}
|
||||
|
||||
cGrid * cChannelColumn::getNext(cGrid *activeGrid) {
|
||||
cGridElement *cChannelEpg::getNext(cGridElement *activeGrid) {
|
||||
if (activeGrid == NULL)
|
||||
return NULL;
|
||||
cGrid *next = grids.Next(activeGrid);
|
||||
cGridElement *next = grids.Next(activeGrid);
|
||||
if (next)
|
||||
return next;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
cGrid * cChannelColumn::getPrev(cGrid *activeGrid) {
|
||||
cGridElement *cChannelEpg::getPrev(cGridElement *activeGrid) {
|
||||
if (activeGrid == NULL)
|
||||
return NULL;
|
||||
cGrid *prev = grids.Prev(activeGrid);
|
||||
cGridElement *prev = grids.Prev(activeGrid);
|
||||
if (prev)
|
||||
return prev;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
cGrid * cChannelColumn::getNeighbor(cGrid *activeGrid) {
|
||||
cGridElement *cChannelEpg::getNeighbor(cGridElement *activeGrid) {
|
||||
if (!activeGrid)
|
||||
return NULL;
|
||||
cGrid *neighbor = NULL;
|
||||
cGridElement *neighbor = NULL;
|
||||
int overlap = 0;
|
||||
int overlapNew = 0;
|
||||
cGrid *grid = NULL;
|
||||
cGridElement *grid = NULL;
|
||||
grid = grids.First();
|
||||
if (grid) {
|
||||
for (; grid; grid = grids.Next(grid)) {
|
||||
@@ -184,19 +186,19 @@ cGrid * cChannelColumn::getNeighbor(cGrid *activeGrid) {
|
||||
return neighbor;
|
||||
}
|
||||
|
||||
bool cChannelColumn::isFirst(cGrid *grid) {
|
||||
bool cChannelEpg::isFirst(cGridElement *grid) {
|
||||
if (grid == grids.First())
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
void cChannelColumn::AddNewGridsAtStart() {
|
||||
cGrid *firstGrid = NULL;
|
||||
void cChannelEpg::AddNewGridsAtStart() {
|
||||
cGridElement *firstGrid = NULL;
|
||||
firstGrid = grids.First();
|
||||
if (firstGrid == NULL)
|
||||
return;
|
||||
//if first event is long enough, nothing to do.
|
||||
if (firstGrid->StartTime() <= myTime->GetStart()) {
|
||||
if (firstGrid->StartTime() <= timeManager->GetStart()) {
|
||||
return;
|
||||
}
|
||||
//if not, i have to add new ones to the list
|
||||
@@ -213,8 +215,8 @@ void cChannelColumn::AddNewGridsAtStart() {
|
||||
Schedule = schedules->GetSchedule(channel);
|
||||
if (!Schedule) {
|
||||
if (firstGrid->isDummy()) {
|
||||
firstGrid->SetStartTime(myTime->GetStart());
|
||||
firstGrid->SetEndTime(myTime->GetEnd());
|
||||
firstGrid->SetStartTime(timeManager->GetStart());
|
||||
firstGrid->SetEndTime(timeManager->GetEnd());
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -223,13 +225,13 @@ void cChannelColumn::AddNewGridsAtStart() {
|
||||
for (const cEvent *event = Schedule->GetEventAround(firstGrid->StartTime()-60); event; event = Schedule->Events()->Prev(event)) {
|
||||
if (!event)
|
||||
break;
|
||||
if (event->EndTime() < myTime->GetStart()) {
|
||||
if (event->EndTime() < timeManager->GetStart()) {
|
||||
break;
|
||||
}
|
||||
cGrid *grid = addEpgGrid(event, firstGrid, col);
|
||||
cGridElement *grid = addEpgGrid(event, firstGrid, col);
|
||||
col = !col;
|
||||
firstGrid = grid;
|
||||
if (event->StartTime() <= myTime->GetStart()) {
|
||||
if (event->StartTime() <= timeManager->GetStart()) {
|
||||
dummyNeeded = false;
|
||||
break;
|
||||
}
|
||||
@@ -237,22 +239,22 @@ void cChannelColumn::AddNewGridsAtStart() {
|
||||
if (dummyNeeded) {
|
||||
firstGrid = grids.First();
|
||||
if (firstGrid->isDummy()) {
|
||||
firstGrid->SetStartTime(myTime->GetStart());
|
||||
if (firstGrid->EndTime() >= myTime->GetEnd())
|
||||
firstGrid->SetEndTime(myTime->GetEnd());
|
||||
firstGrid->SetStartTime(timeManager->GetStart());
|
||||
if (firstGrid->EndTime() >= timeManager->GetEnd())
|
||||
firstGrid->SetEndTime(timeManager->GetEnd());
|
||||
} else {
|
||||
addDummyGrid(myTime->GetStart(), firstGrid->StartTime(), firstGrid, col);
|
||||
addDummyGrid(timeManager->GetStart(), firstGrid->StartTime(), firstGrid, col);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void cChannelColumn::AddNewGridsAtEnd() {
|
||||
cGrid *lastGrid = NULL;
|
||||
void cChannelEpg::AddNewGridsAtEnd() {
|
||||
cGridElement *lastGrid = NULL;
|
||||
lastGrid = grids.Last();
|
||||
if (lastGrid == NULL)
|
||||
return;
|
||||
//if last event is long enough, nothing to do.
|
||||
if (lastGrid->EndTime() >= myTime->GetEnd()) {
|
||||
if (lastGrid->EndTime() >= timeManager->GetEnd()) {
|
||||
return;
|
||||
}
|
||||
//if not, i have to add new ones to the list
|
||||
@@ -269,8 +271,8 @@ void cChannelColumn::AddNewGridsAtEnd() {
|
||||
Schedule = schedules->GetSchedule(channel);
|
||||
if (!Schedule) {
|
||||
if (lastGrid->isDummy()) {
|
||||
lastGrid->SetStartTime(myTime->GetStart());
|
||||
lastGrid->SetEndTime(myTime->GetEnd());
|
||||
lastGrid->SetStartTime(timeManager->GetStart());
|
||||
lastGrid->SetEndTime(timeManager->GetEnd());
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -279,12 +281,12 @@ void cChannelColumn::AddNewGridsAtEnd() {
|
||||
for (const cEvent *event = Schedule->GetEventAround(lastGrid->EndTime()+60); event; event = Schedule->Events()->Next(event)) {
|
||||
if (!event)
|
||||
break;
|
||||
if (event->StartTime() > myTime->GetEnd()) {
|
||||
if (event->StartTime() > timeManager->GetEnd()) {
|
||||
break;
|
||||
}
|
||||
addEpgGrid(event, NULL, col);
|
||||
col = !col;
|
||||
if (event->EndTime() > myTime->GetEnd()) {
|
||||
if (event->EndTime() > timeManager->GetEnd()) {
|
||||
dummyNeeded = false;
|
||||
break;
|
||||
}
|
||||
@@ -292,32 +294,32 @@ void cChannelColumn::AddNewGridsAtEnd() {
|
||||
if (dummyNeeded) {
|
||||
lastGrid = grids.Last();
|
||||
if (lastGrid->isDummy()) {
|
||||
lastGrid->SetEndTime(myTime->GetEnd());
|
||||
if (lastGrid->StartTime() <= myTime->GetStart())
|
||||
lastGrid->SetStartTime(myTime->GetStart());
|
||||
lastGrid->SetEndTime(timeManager->GetEnd());
|
||||
if (lastGrid->StartTime() <= timeManager->GetStart())
|
||||
lastGrid->SetStartTime(timeManager->GetStart());
|
||||
} else {
|
||||
addDummyGrid(lastGrid->EndTime(), myTime->GetEnd(), NULL, col);
|
||||
addDummyGrid(lastGrid->EndTime(), timeManager->GetEnd(), NULL, col);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void cChannelColumn::ClearOutdatedStart() {
|
||||
cGrid *firstGrid = NULL;
|
||||
void cChannelEpg::ClearOutdatedStart() {
|
||||
cGridElement *firstGrid = NULL;
|
||||
while (true) {
|
||||
firstGrid = grids.First();
|
||||
if (!firstGrid)
|
||||
break;
|
||||
if (firstGrid->EndTime() <= myTime->GetStart()) {
|
||||
if (firstGrid->EndTime() <= timeManager->GetStart()) {
|
||||
grids.Del(firstGrid);
|
||||
firstGrid = NULL;
|
||||
} else {
|
||||
if (firstGrid->isDummy()) {
|
||||
firstGrid->SetStartTime(myTime->GetStart());
|
||||
cGrid *next = getNext(firstGrid);
|
||||
firstGrid->SetStartTime(timeManager->GetStart());
|
||||
cGridElement *next = getNext(firstGrid);
|
||||
if (next) {
|
||||
firstGrid->SetEndTime(next->StartTime());
|
||||
} else {
|
||||
firstGrid->SetEndTime(myTime->GetEnd());
|
||||
firstGrid->SetEndTime(timeManager->GetEnd());
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -325,23 +327,23 @@ void cChannelColumn::ClearOutdatedStart() {
|
||||
}
|
||||
}
|
||||
|
||||
void cChannelColumn::ClearOutdatedEnd() {
|
||||
cGrid *lastGrid = NULL;
|
||||
void cChannelEpg::ClearOutdatedEnd() {
|
||||
cGridElement *lastGrid = NULL;
|
||||
while (true) {
|
||||
lastGrid = grids.Last();
|
||||
if (!lastGrid)
|
||||
break;
|
||||
if (lastGrid->StartTime() >= myTime->GetEnd()) {
|
||||
if (lastGrid->StartTime() >= timeManager->GetEnd()) {
|
||||
grids.Del(lastGrid);
|
||||
lastGrid = NULL;
|
||||
} else {
|
||||
if (lastGrid->isDummy()) {
|
||||
lastGrid->SetEndTime(myTime->GetEnd());
|
||||
cGrid *prev = getPrev(lastGrid);
|
||||
lastGrid->SetEndTime(timeManager->GetEnd());
|
||||
cGridElement *prev = getPrev(lastGrid);
|
||||
if (prev) {
|
||||
lastGrid->SetStartTime(prev->EndTime());
|
||||
} else {
|
||||
lastGrid->SetStartTime(myTime->GetStart());
|
||||
lastGrid->SetStartTime(timeManager->GetStart());
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -349,8 +351,8 @@ void cChannelColumn::ClearOutdatedEnd() {
|
||||
}
|
||||
}
|
||||
|
||||
cGrid *cChannelColumn::addEpgGrid(const cEvent *event, cGrid *firstGrid, bool color) {
|
||||
cGrid *grid = new cEpgGrid(this, event);
|
||||
cGridElement *cChannelEpg::addEpgGrid(const cEvent *event, cGridElement *firstGrid, bool color) {
|
||||
cGridElement *grid = new cEpgGrid(this, event);
|
||||
grid->setText();
|
||||
grid->SetColor(color);
|
||||
if (!firstGrid)
|
||||
@@ -360,8 +362,8 @@ cGrid *cChannelColumn::addEpgGrid(const cEvent *event, cGrid *firstGrid, bool co
|
||||
return grid;
|
||||
}
|
||||
|
||||
cGrid *cChannelColumn::addDummyGrid(time_t start, time_t end, cGrid *firstGrid, bool color) {
|
||||
cGrid *dummy = new cDummyGrid(this, start, end);
|
||||
cGridElement *cChannelEpg::addDummyGrid(time_t start, time_t end, cGridElement *firstGrid, bool color) {
|
||||
cGridElement *dummy = new cDummyGrid(this, start, end);
|
||||
dummy->setText();
|
||||
dummy->SetColor(color);
|
||||
if (!firstGrid)
|
||||
@@ -371,12 +373,12 @@ cGrid *cChannelColumn::addDummyGrid(time_t start, time_t end, cGrid *firstGrid,
|
||||
return dummy;
|
||||
}
|
||||
|
||||
void cChannelColumn::SetTimers() {
|
||||
void cChannelEpg::SetTimers() {
|
||||
#if VDRVERSNUM < 20301
|
||||
hasTimer = channel->HasTimer();
|
||||
#endif
|
||||
hasSwitchTimer = SwitchTimers.ChannelInSwitchList(channel);
|
||||
for (cGrid *grid = grids.First(); grid; grid = grids.Next(grid)) {
|
||||
for (cGridElement *grid = grids.First(); grid; grid = grids.Next(grid)) {
|
||||
bool gridHadTimer = grid->HasTimer();
|
||||
grid->SetTimer();
|
||||
if (gridHadTimer || gridHadTimer != grid->HasTimer())
|
||||
@@ -389,11 +391,11 @@ void cChannelColumn::SetTimers() {
|
||||
}
|
||||
}
|
||||
|
||||
void cChannelColumn::dumpGrids() {
|
||||
void cChannelEpg::dumpGrids() {
|
||||
esyslog("tvguide: ------Channel %s %d: %d entires ---------", channel->Name(), num, grids.Count());
|
||||
int i=1;
|
||||
for (cGrid *grid = grids.First(); grid; grid = grids.Next(grid)) {
|
||||
esyslog("tvguide: grid %d: start: %s, stop: %s", i, *cMyTime::printTime(grid->StartTime()), *cMyTime::printTime(grid->EndTime()));
|
||||
for (cGridElement *grid = grids.First(); grid; grid = grids.Next(grid)) {
|
||||
esyslog("tvguide: grid %d: start: %s, stop: %s", i, *cTimeManager::printTime(grid->StartTime()), *cTimeManager::printTime(grid->EndTime()));
|
||||
i++;
|
||||
}
|
||||
}
|
@@ -1,25 +1,25 @@
|
||||
#ifndef __TVGUIDE_CHANNELCOLUMN_H
|
||||
#define __TVGUIDE_CHANNELCOLUMN_H
|
||||
#ifndef __TVGUIDE_CHANNELEPG_H
|
||||
#define __TVGUIDE_CHANNELEPG_H
|
||||
|
||||
#include <vdr/tools.h>
|
||||
#include "grid.h"
|
||||
#include "gridelement.h"
|
||||
#include "epggrid.h"
|
||||
#include "headergrid.h"
|
||||
#include "switchtimer.h"
|
||||
|
||||
class cGrid;
|
||||
class cGridElement;
|
||||
class cEpgGrid;
|
||||
class cHeaderGrid;
|
||||
|
||||
// --- cChannelColumn -------------------------------------------------------------
|
||||
// --- cChannelEpg -------------------------------------------------------------
|
||||
|
||||
class cChannelColumn : public cListObject, public cStyledPixmap {
|
||||
class cChannelEpg : public cListObject, public cStyledPixmap {
|
||||
private:
|
||||
cMyTime *myTime;
|
||||
cTimeManager *timeManager;
|
||||
int num;
|
||||
const cChannel *channel;
|
||||
cHeaderGrid *header;
|
||||
cList<cGrid> grids;
|
||||
cList<cGridElement> grids;
|
||||
#if VDRVERSNUM >= 20301
|
||||
#else
|
||||
cSchedulesLock *schedulesLock;
|
||||
@@ -27,26 +27,26 @@ private:
|
||||
const cSchedules *schedules;
|
||||
bool hasTimer;
|
||||
bool hasSwitchTimer;
|
||||
cGrid *addEpgGrid(const cEvent *event, cGrid *firstGrid, bool color);
|
||||
cGrid *addDummyGrid(time_t start, time_t end, cGrid *firstGrid, bool color);
|
||||
cGridElement *addEpgGrid(const cEvent *event, cGridElement *firstGrid, bool color);
|
||||
cGridElement *addDummyGrid(time_t start, time_t end, cGridElement *firstGrid, bool color);
|
||||
public:
|
||||
cChannelColumn(int num, const cChannel *channel, cMyTime *myTime);
|
||||
virtual ~cChannelColumn(void);
|
||||
cChannelEpg(int num, const cChannel *channel, cTimeManager *timeManager);
|
||||
virtual ~cChannelEpg(void);
|
||||
void createHeader();
|
||||
void drawHeader();
|
||||
bool readGrids();
|
||||
void drawGrids();
|
||||
int getX();
|
||||
int getY();
|
||||
int Start() { return myTime->GetStart(); };
|
||||
int Stop() { return myTime->GetEnd(); };
|
||||
int Start() { return timeManager->GetStart(); };
|
||||
int Stop() { return timeManager->GetEnd(); };
|
||||
const char* Name() { return channel->Name(); };
|
||||
const cChannel * getChannel() {return channel;}
|
||||
cGrid * getActive();
|
||||
cGrid * getNext(cGrid *activeGrid);
|
||||
cGrid * getPrev(cGrid *activeGrid);
|
||||
cGrid * getNeighbor(cGrid *activeGrid);
|
||||
bool isFirst(cGrid *grid);
|
||||
const cChannel *getChannel() {return channel;}
|
||||
cGridElement *getActive(bool last = false);
|
||||
cGridElement *getNext(cGridElement *activeGrid);
|
||||
cGridElement *getPrev(cGridElement *activeGrid);
|
||||
cGridElement *getNeighbor(cGridElement *activeGrid);
|
||||
bool isFirst(cGridElement *grid);
|
||||
void AddNewGridsAtStart();
|
||||
void AddNewGridsAtEnd();
|
||||
void ClearOutdatedStart();
|
||||
@@ -66,4 +66,4 @@ public:
|
||||
void dumpGrids();
|
||||
};
|
||||
|
||||
#endif //__TVGUIDE_CHANNELCOLUMN_H
|
||||
#endif //__TVGUIDE_CHANNELEPG_H
|
@@ -36,12 +36,12 @@ void cChannelGroupGrid::SetBackground() {
|
||||
|
||||
void cChannelGroupGrid::SetGeometry(int start, int end) {
|
||||
int x, y, width, height;
|
||||
if (tvguideConfig.displayMode == eVertical) {
|
||||
if (config.displayMode == eVertical) {
|
||||
x = geoManager.timeLineWidth + start*geoManager.colWidth;
|
||||
y = geoManager.statusHeaderHeight;
|
||||
width = (end - start + 1) * geoManager.colWidth;
|
||||
height = geoManager.channelGroupsHeight;
|
||||
} else if (tvguideConfig.displayMode == eHorizontal) {
|
||||
} else if (config.displayMode == eHorizontal) {
|
||||
x = 0;
|
||||
y = geoManager.statusHeaderHeight + geoManager.timeLineHeight + start*geoManager.rowHeight;
|
||||
width = geoManager.channelGroupsWidth;
|
||||
@@ -51,46 +51,45 @@ void cChannelGroupGrid::SetGeometry(int start, int end) {
|
||||
}
|
||||
|
||||
void cChannelGroupGrid::Draw(void) {
|
||||
if (tvguideConfig.style == eStyleGraphical) {
|
||||
if (config.style == eStyleGraphical) {
|
||||
drawBackgroundGraphical(bgChannelGroup);
|
||||
} else {
|
||||
drawBackground();
|
||||
drawBorder();
|
||||
}
|
||||
tColor colorText = theme.Color(clrFont);
|
||||
tColor colorTextBack = (tvguideConfig.style == eStyleFlat)?color:clrTransparent;
|
||||
if (tvguideConfig.displayMode == eVertical) {
|
||||
tColor colorTextBack = (config.style == eStyleFlat)?color:clrTransparent;
|
||||
if (config.displayMode == eVertical) {
|
||||
DrawVertical(colorText, colorTextBack);
|
||||
} else if (tvguideConfig.displayMode == eHorizontal) {
|
||||
} else if (config.displayMode == eHorizontal) {
|
||||
DrawHorizontal(colorText, colorTextBack);
|
||||
}
|
||||
}
|
||||
|
||||
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();
|
||||
|
@@ -1,4 +1,5 @@
|
||||
#include <vector>
|
||||
#include "config.h"
|
||||
#include "channelgroups.h"
|
||||
|
||||
cChannelGroups::cChannelGroups(void) {
|
||||
@@ -12,26 +13,23 @@ void cChannelGroups::ReadChannelGroups(void) {
|
||||
int lastChannelNumber = 0;
|
||||
#if VDRVERSNUM >= 20301
|
||||
LOCK_CHANNELS_READ;
|
||||
const cChannel *first = Channels->First();
|
||||
const cChannels *channels = Channels;
|
||||
#else
|
||||
const cChannel *first = Channels.First();
|
||||
const cChannels *channels = &Channels;
|
||||
#endif
|
||||
const cChannel *first = channels->First();
|
||||
if (!first->GroupSep()) {
|
||||
channelGroups.push_back(cChannelGroup(tr("Main Program")));
|
||||
setStart = true;
|
||||
}
|
||||
#if VDRVERSNUM >= 20301
|
||||
for (const cChannel *channel = Channels->First(); channel; channel = Channels->Next(channel)) {
|
||||
#else
|
||||
for (const cChannel *channel = Channels.First(); channel; channel = Channels.Next(channel)) {
|
||||
#endif
|
||||
for (const cChannel *channel = channels->First(); channel; channel = channels->Next(channel)) {
|
||||
if (setStart && (channelGroups.size() > 0)) {
|
||||
channelGroups[channelGroups.size()-1].SetChannelStart(channel->Number());
|
||||
channelGroups[channelGroups.size() - 1].SetChannelStart(channel->Number());
|
||||
setStart = false;
|
||||
}
|
||||
if (channel->GroupSep()) {
|
||||
if (channelGroups.size() > 0) {
|
||||
channelGroups[channelGroups.size()-1].SetChannelStop(lastChannelNumber);
|
||||
channelGroups[channelGroups.size() - 1].SetChannelStop(lastChannelNumber);
|
||||
}
|
||||
channelGroups.push_back(cChannelGroup(channel->Name()));
|
||||
setStart = true;
|
||||
@@ -40,8 +38,8 @@ void cChannelGroups::ReadChannelGroups(void) {
|
||||
}
|
||||
}
|
||||
if (channelGroups.size() > 0) {
|
||||
channelGroups[channelGroups.size()-1].SetChannelStop(lastChannelNumber);
|
||||
if ((tvguideConfig.hideLastGroup)&&(channelGroups.size() > 1)) {
|
||||
channelGroups[channelGroups.size() - 1].SetChannelStop(lastChannelNumber);
|
||||
if ((config.hideLastGroup) && (channelGroups.size() > 1)) {
|
||||
channelGroups.pop_back();
|
||||
}
|
||||
}
|
||||
@@ -96,7 +94,7 @@ int cChannelGroups::GetNextGroupChannelNumber(const cChannel *channel) {
|
||||
}
|
||||
|
||||
bool cChannelGroups::IsInLastGroup(const cChannel *channel) {
|
||||
if (!tvguideConfig.hideLastGroup)
|
||||
if (!config.hideLastGroup)
|
||||
return false;
|
||||
if (channelGroups.size() > 0) {
|
||||
if (channel->Number() > channelGroups[channelGroups.size()-1].StopChannel()) {
|
||||
@@ -145,9 +143,15 @@ void cChannelGroups::CreateGroupGrid(const char *name, int number, int start, in
|
||||
}
|
||||
|
||||
int cChannelGroups::GetLastValidChannel(void) {
|
||||
if (channelGroups.size() > 0)
|
||||
return channelGroups[channelGroups.size()-1].StopChannel();
|
||||
return 0;
|
||||
if (config.hideLastGroup && channelGroups.size() > 0) {
|
||||
return channelGroups[channelGroups.size() - 1].StopChannel();
|
||||
}
|
||||
#if VDRVERSNUM >= 20301
|
||||
LOCK_CHANNELS_READ;
|
||||
return Channels->MaxNumber();
|
||||
#else
|
||||
return Channels.MaxNumber();
|
||||
#endif
|
||||
}
|
||||
|
||||
void cChannelGroups::DumpGroups(void) {
|
||||
|
@@ -3,6 +3,7 @@
|
||||
|
||||
#include <vector>
|
||||
#include <vdr/channels.h>
|
||||
#include "config.h"
|
||||
#include "channelgroup.h"
|
||||
|
||||
// --- cChannelGroups -------------------------------------------------------------
|
||||
|
@@ -6,22 +6,13 @@
|
||||
#include "channelgroups.h"
|
||||
#include "channeljump.h"
|
||||
|
||||
cChannelJump::cChannelJump(cChannelGroups *channelGroups) {
|
||||
cChannelJump::cChannelJump(cChannelGroups *channelGroups, int lastValidChannel) {
|
||||
this->channelGroups = channelGroups;
|
||||
pixmapText = NULL;
|
||||
channel = 0;
|
||||
if (!tvguideConfig.hideLastGroup) {
|
||||
#if VDRVERSNUM >= 20301
|
||||
LOCK_CHANNELS_READ;
|
||||
maxChannels = Channels->MaxNumber();
|
||||
#else
|
||||
maxChannels = Channels.MaxNumber();
|
||||
#endif
|
||||
} else {
|
||||
maxChannels = channelGroups->GetLastValidChannel();
|
||||
}
|
||||
maxChannels = lastValidChannel;
|
||||
timeout = Setup.ChannelEntryTimeout;
|
||||
startTime = cTimeMs::Now();
|
||||
startTime = 0;
|
||||
SetPixmaps();
|
||||
Draw();
|
||||
}
|
||||
@@ -41,7 +32,7 @@ void cChannelJump::SetPixmaps(void) {
|
||||
}
|
||||
|
||||
void cChannelJump::Draw(void) {
|
||||
if (tvguideConfig.style == eStyleGraphical) {
|
||||
if (config.style == eStyleGraphical) {
|
||||
drawBackgroundGraphical(bgChannelJump);
|
||||
} else {
|
||||
pixmap->Fill(theme.Color(clrBackground));
|
||||
|
@@ -18,7 +18,7 @@ private:
|
||||
void Draw(void);
|
||||
cString BuildChannelString(void);
|
||||
public:
|
||||
cChannelJump(cChannelGroups *channelGroups);
|
||||
cChannelJump(cChannelGroups *channelGroups, int lastValidChannel);
|
||||
virtual ~cChannelJump(void);
|
||||
void Set(int num);
|
||||
void DrawText(void);
|
||||
|
41
config.c
41
config.c
@@ -1,7 +1,8 @@
|
||||
#include <string>
|
||||
#include "config.h"
|
||||
|
||||
cTvguideConfig::cTvguideConfig() {
|
||||
cTVGuideConfig::cTVGuideConfig() {
|
||||
useHWAccel = false;
|
||||
debugImageLoading = 0;
|
||||
showMainMenuEntry = 1;
|
||||
replaceOriginalSchedule = 0;
|
||||
@@ -9,8 +10,8 @@ cTvguideConfig::cTvguideConfig() {
|
||||
showTimeInGrid = 1;
|
||||
channelCols = 5;
|
||||
channelRows = 10;
|
||||
displayTime = 160;
|
||||
displayHorizontalTime = 160;
|
||||
displayTime = 180;
|
||||
displayHorizontalTime = 180;
|
||||
displayStatusHeader = 1;
|
||||
displayChannelGroups = 1;
|
||||
displayTimeBase = 1;
|
||||
@@ -27,10 +28,14 @@ cTvguideConfig::cTvguideConfig() {
|
||||
footerHeightPercent = 7;
|
||||
stepMinutes = 30;
|
||||
bigStepHours = 3;
|
||||
bigStepHoursHorizontal = 3;
|
||||
hugeStepHours = 24;
|
||||
hugeStepHoursHorizontal = 24;
|
||||
channelJumpMode = eNumJump;
|
||||
jumpChannels = 0;
|
||||
blueKeyMode = 2;
|
||||
addSubtitleToTimer = 1;
|
||||
timerMessage = 1;
|
||||
closeOnSwitch = 1;
|
||||
numkeyMode = 0;
|
||||
useRemoteTimers = 0;
|
||||
@@ -95,6 +100,7 @@ cTvguideConfig::cTvguideConfig() {
|
||||
FontRecMenuItemLargeDelta = 0;
|
||||
timeFormat = 1;
|
||||
useNopacityTheme = 1;
|
||||
useNopacityThemeCurrent = -1;
|
||||
themeIndex = -1;
|
||||
themeIndexCurrent = -1;
|
||||
themeName = "";
|
||||
@@ -112,25 +118,26 @@ cTvguideConfig::cTvguideConfig() {
|
||||
iconsPathSet = false;
|
||||
}
|
||||
|
||||
cTvguideConfig::~cTvguideConfig() {
|
||||
cTVGuideConfig::~cTVGuideConfig() {
|
||||
}
|
||||
|
||||
void cTvguideConfig::setDynamicValues() {
|
||||
void cTVGuideConfig::setDynamicValues() {
|
||||
numGrids = (displayMode == eVertical)?channelCols:channelRows;
|
||||
jumpChannels = numGrids;
|
||||
}
|
||||
|
||||
bool cTvguideConfig::LoadTheme() {
|
||||
bool cTVGuideConfig::LoadTheme() {
|
||||
//is correct theme already loaded?
|
||||
if (nOpacityTheme.size() == 0)
|
||||
nOpacityTheme = Setup.OSDTheme;
|
||||
if ((themeIndex > -1) && (themeIndex == themeIndexCurrent)) {
|
||||
if ((themeIndex > -1) && (themeIndex == themeIndexCurrent) && (useNopacityTheme == useNopacityThemeCurrent)) {
|
||||
if (!nOpacityTheme.compare(Setup.OSDTheme)) {
|
||||
return false;
|
||||
} else {
|
||||
nOpacityTheme = Setup.OSDTheme;
|
||||
}
|
||||
}
|
||||
esyslog("tvguide: loading new Theme");
|
||||
//Load available Themes
|
||||
cThemes themes;
|
||||
themes.Load(*cString("tvguide"));
|
||||
@@ -167,6 +174,7 @@ bool cTvguideConfig::LoadTheme() {
|
||||
themeIndex = 0;
|
||||
|
||||
themeIndexCurrent = themeIndex;
|
||||
useNopacityThemeCurrent = useNopacityTheme;
|
||||
|
||||
const char *themePath = themes.FileName(themeIndex);
|
||||
if (access(themePath, F_OK) == 0) {
|
||||
@@ -178,7 +186,7 @@ bool cTvguideConfig::LoadTheme() {
|
||||
}
|
||||
|
||||
|
||||
void cTvguideConfig::SetStyle(void) {
|
||||
void cTVGuideConfig::SetStyle(void) {
|
||||
if (theme.Color(clrStyle) == CLR_STYLE_FLAT) {
|
||||
style = eStyleFlat;
|
||||
esyslog("tvguide: set flat style");
|
||||
@@ -195,25 +203,25 @@ void cTvguideConfig::SetStyle(void) {
|
||||
|
||||
}
|
||||
|
||||
void cTvguideConfig::SetLogoPath(cString path) {
|
||||
void cTVGuideConfig::SetLogoPath(cString path) {
|
||||
logoPath = checkSlashAtEnd(*path);
|
||||
logoPathSet = true;
|
||||
esyslog("tvguide: Logo Path set to %s", *logoPath);
|
||||
}
|
||||
|
||||
void cTvguideConfig::SetImagesPath(cString path) {
|
||||
void cTVGuideConfig::SetImagesPath(cString path) {
|
||||
epgImagePath = checkSlashAtEnd(*path);
|
||||
imagesPathSet = true;
|
||||
esyslog("tvguide: EPG Image Path set to %s", *epgImagePath);
|
||||
}
|
||||
|
||||
void cTvguideConfig::SetIconsPath(cString path) {
|
||||
void cTVGuideConfig::SetIconsPath(cString path) {
|
||||
iconPath = checkSlashAtEnd(*path);
|
||||
iconsPathSet = true;
|
||||
esyslog("tvguide: Icon Path set to %s", *iconPath);
|
||||
}
|
||||
|
||||
void cTvguideConfig::SetDefaultPathes(void) {
|
||||
void cTVGuideConfig::SetDefaultPathes(void) {
|
||||
logoPathDefault = cString::sprintf("%s/logos/", cPlugin::ResourceDirectory(PLUGIN_NAME_I18N));
|
||||
iconPathDefault = cString::sprintf("%s/icons/", cPlugin::ResourceDirectory(PLUGIN_NAME_I18N));
|
||||
epgImagePathDefault = cString::sprintf("%s/epgimages/", cPlugin::CacheDirectory(PLUGIN_NAME_I18N));
|
||||
@@ -229,7 +237,7 @@ void cTvguideConfig::SetDefaultPathes(void) {
|
||||
}
|
||||
}
|
||||
|
||||
cString cTvguideConfig::checkSlashAtEnd(std::string path) {
|
||||
cString cTVGuideConfig::checkSlashAtEnd(std::string path) {
|
||||
try {
|
||||
if (!(path.at(path.size()-1) == '/'))
|
||||
return cString::sprintf("%s/", path.c_str());
|
||||
@@ -237,9 +245,10 @@ cString cTvguideConfig::checkSlashAtEnd(std::string path) {
|
||||
return path.c_str();
|
||||
}
|
||||
|
||||
bool cTvguideConfig::SetupParse(const char *Name, const char *Value) {
|
||||
bool cTVGuideConfig::SetupParse(const char *Name, const char *Value) {
|
||||
if (strcmp(Name, "timeFormat") == 0) timeFormat = atoi(Value);
|
||||
else if (strcmp(Name, "debugImageLoading") == 0) debugImageLoading = atoi(Value);
|
||||
else if (strcmp(Name, "useHWAccel") == 0) useHWAccel = atoi(Value);
|
||||
else if (strcmp(Name, "showMainMenuEntry") == 0) showMainMenuEntry = atoi(Value);
|
||||
else if (strcmp(Name, "replaceOriginalSchedule") == 0) replaceOriginalSchedule = atoi(Value);
|
||||
else if (strcmp(Name, "useNopacityTheme") == 0) useNopacityTheme = atoi(Value);
|
||||
@@ -264,7 +273,9 @@ bool cTvguideConfig::SetupParse(const char *Name, const char *Value) {
|
||||
else if (strcmp(Name, "logoWidthRatio") == 0) logoWidthRatio = atoi(Value);
|
||||
else if (strcmp(Name, "logoHeightRatio") == 0) logoHeightRatio = atoi(Value);
|
||||
else if (strcmp(Name, "bigStepHours") == 0) bigStepHours = atoi(Value);
|
||||
else if (strcmp(Name, "bigStepHoursHorizontal") == 0) bigStepHoursHorizontal = atoi(Value);
|
||||
else if (strcmp(Name, "hugeStepHours") == 0) hugeStepHours = atoi(Value);
|
||||
else if (strcmp(Name, "hugeStepHoursHorizontal") == 0) hugeStepHoursHorizontal = atoi(Value);
|
||||
else if (strcmp(Name, "channelJumpMode") == 0) channelJumpMode = atoi(Value);
|
||||
else if (strcmp(Name, "blueKeyMode") == 0) blueKeyMode = atoi(Value);
|
||||
else if (strcmp(Name, "numkeyMode") == 0) numkeyMode = atoi(Value);
|
||||
@@ -286,6 +297,8 @@ bool cTvguideConfig::SetupParse(const char *Name, const char *Value) {
|
||||
else if (strcmp(Name, "footerHeightPercent") == 0) footerHeightPercent = atoi(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);
|
||||
|
24
config.h
24
config.h
@@ -8,7 +8,7 @@
|
||||
#include "fontmanager.h"
|
||||
#include "imagecache.h"
|
||||
|
||||
enum {
|
||||
enum eTimeFormat {
|
||||
e12Hours,
|
||||
e24Hours
|
||||
};
|
||||
@@ -43,12 +43,19 @@ enum eInstRecFolderMode {
|
||||
eFolderFixed
|
||||
};
|
||||
|
||||
class cTvguideConfig {
|
||||
typedef enum {
|
||||
addSubtitleNever = 0,
|
||||
addSubtitleSmart,
|
||||
addSubtitleAlways
|
||||
} addSubtitleToTimerMode;
|
||||
|
||||
class cTVGuideConfig {
|
||||
private:
|
||||
cString checkSlashAtEnd(std::string path);
|
||||
public:
|
||||
cTvguideConfig();
|
||||
~cTvguideConfig();
|
||||
cTVGuideConfig();
|
||||
~cTVGuideConfig();
|
||||
int useHWAccel;
|
||||
int debugImageLoading;
|
||||
int showMainMenuEntry;
|
||||
int replaceOriginalSchedule;
|
||||
@@ -75,10 +82,14 @@ class cTvguideConfig {
|
||||
int footerHeightPercent;
|
||||
int stepMinutes;
|
||||
int bigStepHours;
|
||||
int bigStepHoursHorizontal;
|
||||
int hugeStepHours;
|
||||
int hugeStepHoursHorizontal;
|
||||
int channelJumpMode;
|
||||
int jumpChannels;
|
||||
int blueKeyMode;
|
||||
int timerMessage;
|
||||
int addSubtitleToTimer;
|
||||
int closeOnSwitch;
|
||||
int numkeyMode;
|
||||
int useRemoteTimers;
|
||||
@@ -149,6 +160,7 @@ class cTvguideConfig {
|
||||
int FontRecMenuItemLargeDelta;
|
||||
int timeFormat;
|
||||
int useNopacityTheme;
|
||||
int useNopacityThemeCurrent;
|
||||
int themeIndex;
|
||||
int themeIndexCurrent;
|
||||
cString themeName;
|
||||
@@ -175,7 +187,7 @@ class cTvguideConfig {
|
||||
};
|
||||
|
||||
#ifdef DEFINE_CONFIG
|
||||
cTvguideConfig tvguideConfig;
|
||||
cTVGuideConfig config;
|
||||
cOsdManager osdManager;
|
||||
cGeometryManager geoManager;
|
||||
cFontManager fontManager;
|
||||
@@ -183,7 +195,7 @@ class cTvguideConfig {
|
||||
cTheme theme;
|
||||
cPlugin* pRemoteTimers = NULL;
|
||||
#else
|
||||
extern cTvguideConfig tvguideConfig;
|
||||
extern cTVGuideConfig config;
|
||||
extern cOsdManager osdManager;
|
||||
extern cGeometryManager geoManager;
|
||||
extern cFontManager fontManager;
|
||||
|
10
detailview.c
10
detailview.c
@@ -1,12 +1,12 @@
|
||||
#include "detailview.h"
|
||||
|
||||
cDetailView::cDetailView(const cEvent *event, cFooter *footer) {
|
||||
cDetailView::cDetailView(const cEvent *event, cFooter *footer) : cThread("DetailView") {
|
||||
this->event = event;
|
||||
this->footer = footer;
|
||||
}
|
||||
|
||||
cDetailView::~cDetailView(void){
|
||||
Cancel(-1);
|
||||
Cancel(3);
|
||||
while (Active())
|
||||
cCondWait::SleepMs(10);
|
||||
#if VDRVERSNUM >= 20301
|
||||
@@ -74,8 +74,8 @@ std::string cDetailView::LoadReruns(void) {
|
||||
Epgsearch_searchresults_v1_0 data;
|
||||
std::string strQuery = event->Title();
|
||||
|
||||
if (tvguideConfig.displayRerunsDetailEPGView > 0) {
|
||||
if (tvguideConfig.useSubtitleRerun == 2 && !isempty(event->ShortText())) {
|
||||
if (config.displayRerunsDetailEPGView > 0) {
|
||||
if (config.useSubtitleRerun == 2 && !isempty(event->ShortText())) {
|
||||
strQuery += "~";
|
||||
strQuery += event->ShortText();
|
||||
}
|
||||
@@ -95,7 +95,7 @@ std::string cDetailView::LoadReruns(void) {
|
||||
if (list && (list->Count() > 1)) {
|
||||
foundRerun = true;
|
||||
int i = 0;
|
||||
for (Epgsearch_searchresults_v1_0::cServiceSearchResult *r = list->First(); r && i < tvguideConfig.numReruns; r = list->Next(r)) {
|
||||
for (Epgsearch_searchresults_v1_0::cServiceSearchResult *r = list->First(); r && i < config.numReruns; r = list->Next(r)) {
|
||||
if ((event->ChannelID() == r->event->ChannelID()) && (event->StartTime() == r->event->StartTime()))
|
||||
continue;
|
||||
i++;
|
||||
|
20
dummygrid.c
20
dummygrid.c
@@ -1,6 +1,6 @@
|
||||
#include "dummygrid.h"
|
||||
|
||||
cDummyGrid::cDummyGrid(cChannelColumn *c, time_t start, time_t end) : cGrid(c) {
|
||||
cDummyGrid::cDummyGrid(cChannelEpg *c, time_t start, time_t end) : cGridElement(c) {
|
||||
this->start = start;
|
||||
this->end = end;
|
||||
strText = tr("No EPG Information available");
|
||||
@@ -27,7 +27,7 @@ void cDummyGrid::SetViewportHeight() {
|
||||
|
||||
void cDummyGrid::PositionPixmap() {
|
||||
int x0, y0;
|
||||
if (tvguideConfig.displayMode == eVertical) {
|
||||
if (config.displayMode == eVertical) {
|
||||
x0 = column->getX();
|
||||
y0 = geoManager.statusHeaderHeight + geoManager.channelHeaderHeight + geoManager.channelGroupsHeight;
|
||||
if ( column->Start() < StartTime() ) {
|
||||
@@ -41,7 +41,7 @@ void cDummyGrid::PositionPixmap() {
|
||||
} else {
|
||||
pixmap->SetViewPort(cRect(x0, y0, geoManager.colWidth, viewportHeight));
|
||||
}
|
||||
} else if (tvguideConfig.displayMode == eHorizontal) {
|
||||
} else if (config.displayMode == eHorizontal) {
|
||||
x0 = geoManager.channelHeaderWidth + geoManager.channelGroupsWidth;
|
||||
y0 = column->getY();
|
||||
if ( column->Start() < StartTime() ) {
|
||||
@@ -59,7 +59,7 @@ void cDummyGrid::PositionPixmap() {
|
||||
}
|
||||
|
||||
void cDummyGrid::setText() {
|
||||
if (tvguideConfig.displayMode == eVertical) {
|
||||
if (config.displayMode == eVertical) {
|
||||
text->Set(*strText, fontManager.FontGrid, geoManager.colWidth-2*borderWidth);
|
||||
}
|
||||
}
|
||||
@@ -67,13 +67,13 @@ void cDummyGrid::setText() {
|
||||
void cDummyGrid::drawText() {
|
||||
tColor colorText = (active)?theme.Color(clrFontActive):theme.Color(clrFont);
|
||||
tColor colorTextBack;
|
||||
if (tvguideConfig.style == eStyleFlat)
|
||||
if (config.style == eStyleFlat)
|
||||
colorTextBack = color;
|
||||
else if (tvguideConfig.style == eStyleGraphical)
|
||||
else if (config.style == eStyleGraphical)
|
||||
colorTextBack = (active)?theme.Color(clrGridActiveFontBack):theme.Color(clrGridFontBack);
|
||||
else
|
||||
colorTextBack = clrTransparent;
|
||||
if (tvguideConfig.displayMode == eVertical) {
|
||||
if (config.displayMode == eVertical) {
|
||||
if (Height()/geoManager.minutePixel < 6)
|
||||
return;
|
||||
int textHeight = fontManager.FontGrid->Height();
|
||||
@@ -82,7 +82,7 @@ void cDummyGrid::drawText() {
|
||||
pixmap->DrawText(cPoint(borderWidth, borderWidth + i*textHeight), text->GetLine(i), colorText, colorTextBack, fontManager.FontGrid);
|
||||
|
||||
}
|
||||
} else if (tvguideConfig.displayMode == eHorizontal) {
|
||||
} else if (config.displayMode == eHorizontal) {
|
||||
if (Width()/geoManager.minutePixel < 10) {
|
||||
int titleY = (geoManager.rowHeight - fontManager.FontGridHorizontal->Height())/2;
|
||||
pixmap->DrawText(cPoint(borderWidth - 2, titleY), "...", colorText, colorTextBack, fontManager.FontGridHorizontal);
|
||||
@@ -103,8 +103,8 @@ cString cDummyGrid::getTimeString(void) {
|
||||
void cDummyGrid::debug() {
|
||||
esyslog("tvguide dummygrid: %s: %s, %s, viewportHeight: %d px, Duration: %ld min, active: %d",
|
||||
column->Name(),
|
||||
*cMyTime::printTime(start),
|
||||
*cMyTime::printTime(end),
|
||||
*cTimeManager::printTime(start),
|
||||
*cTimeManager::printTime(end),
|
||||
viewportHeight,
|
||||
Duration()/60,
|
||||
active);
|
||||
|
10
dummygrid.h
10
dummygrid.h
@@ -1,12 +1,12 @@
|
||||
#ifndef __TVGUIDE_DUMMYGRID_H
|
||||
#define __TVGUIDE_DUMMYGRID_H
|
||||
|
||||
#include "grid.h"
|
||||
#include "channelcolumn.h"
|
||||
#include "gridelement.h"
|
||||
#include "channelepg.h"
|
||||
|
||||
// --- cDummyGrid -------------------------------------------------------------
|
||||
|
||||
class cDummyGrid : public cGrid {
|
||||
class cDummyGrid : public cGridElement {
|
||||
private:
|
||||
time_t start;
|
||||
time_t end;
|
||||
@@ -14,7 +14,7 @@ private:
|
||||
void drawText();
|
||||
time_t Duration(void);
|
||||
public:
|
||||
cDummyGrid(cChannelColumn *c, time_t start, time_t end);
|
||||
cDummyGrid(cChannelEpg *c, time_t start, time_t end);
|
||||
virtual ~cDummyGrid(void);
|
||||
void SetViewportHeight();
|
||||
void PositionPixmap();
|
||||
@@ -24,7 +24,7 @@ public:
|
||||
time_t EndTime() { return end; };
|
||||
void SetStartTime(time_t start) { this->start = start; };
|
||||
void SetEndTime(time_t end) { this->end = end; };
|
||||
int calcOverlap(cGrid *neighbor);
|
||||
int calcOverlap(cGridElement *neighbor);
|
||||
void setTimer() {};
|
||||
cString getText(void);
|
||||
cString getTimeString(void);
|
||||
|
99
epggrid.c
99
epggrid.c
@@ -1,9 +1,9 @@
|
||||
#include "services/remotetimers.h"
|
||||
#include "channelcolumn.h"
|
||||
#include "channelepg.h"
|
||||
#include "tools.h"
|
||||
#include "epggrid.h"
|
||||
|
||||
cEpgGrid::cEpgGrid(cChannelColumn *c, const cEvent *event) : cGrid(c) {
|
||||
cEpgGrid::cEpgGrid(cChannelEpg *c, const cEvent *event) : cGridElement(c) {
|
||||
this->event = event;
|
||||
extText = new cTextWrapper();
|
||||
hasTimer = false;
|
||||
@@ -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;
|
||||
@@ -33,27 +33,27 @@ void cEpgGrid::SetViewportHeight() {
|
||||
}
|
||||
|
||||
void cEpgGrid::PositionPixmap() {
|
||||
if (tvguideConfig.displayMode == eVertical) {
|
||||
if (config.displayMode == eVertical) {
|
||||
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));
|
||||
cRect(0, 0, geoManager.colWidth, Duration() / 60 * geoManager.minutePixel));
|
||||
} else {
|
||||
pixmap->SetViewPort(cRect(x0, y0, geoManager.colWidth, viewportHeight));
|
||||
}
|
||||
} else if (tvguideConfig.displayMode == eHorizontal) {
|
||||
} else if (config.displayMode == eHorizontal) {
|
||||
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));
|
||||
cRect(0, 0, Duration() / 60 * geoManager.minutePixel, geoManager.rowHeight));
|
||||
} else {
|
||||
pixmap->SetViewPort(cRect(x0, y0, viewportHeight, geoManager.rowHeight ));
|
||||
}
|
||||
@@ -63,7 +63,7 @@ void cEpgGrid::PositionPixmap() {
|
||||
|
||||
void cEpgGrid::SetTimer() {
|
||||
hasTimer = false;
|
||||
if (tvguideConfig.useRemoteTimers && pRemoteTimers) {
|
||||
if (config.useRemoteTimers && pRemoteTimers) {
|
||||
RemoteTimers_Event_v1_0 rt;
|
||||
rt.event = event;
|
||||
if (pRemoteTimers->Service("RemoteTimers::GetTimerByEvent-v1.0", &rt))
|
||||
@@ -91,54 +91,53 @@ void cEpgGrid::SetSwitchTimer() {
|
||||
}
|
||||
|
||||
void cEpgGrid::setText() {
|
||||
if (tvguideConfig.displayMode == eVertical) {
|
||||
cString strText;
|
||||
strText = cString::sprintf("%s - %s:\n%s", *(event->GetTimeString()), *(event->GetEndTimeString()), event->Title());
|
||||
text->Set(*(strText), fontManager.FontGrid, geoManager.colWidth-2*borderWidth);
|
||||
extText->Set(event->ShortText(), fontManager.FontGridSmall, geoManager.colWidth-2*borderWidth);
|
||||
} else if (tvguideConfig.displayMode == eHorizontal) {
|
||||
timeString = cString::sprintf("%s - %s", *(event->GetTimeString()), *(event->GetEndTimeString()));
|
||||
if (config.displayMode == eVertical) {
|
||||
text->Set(event->Title(), fontManager.FontGrid, geoManager.colWidth - 2 * borderWidth);
|
||||
extText->Set(event->ShortText(), fontManager.FontGridSmall, geoManager.colWidth - 2 * borderWidth);
|
||||
}
|
||||
if (config.showTimeInGrid) {
|
||||
timeString = cString::sprintf("%s - %s:", *(event->GetTimeString()), *(event->GetEndTimeString()));
|
||||
}
|
||||
}
|
||||
|
||||
void cEpgGrid::drawText() {
|
||||
tColor colorText = (active)?theme.Color(clrFontActive):theme.Color(clrFont);
|
||||
tColor colorText = (active) ? theme.Color(clrFontActive) : theme.Color(clrFont);
|
||||
tColor colorTextBack;
|
||||
if (tvguideConfig.style == eStyleFlat)
|
||||
if (config.style == eStyleFlat)
|
||||
colorTextBack = color;
|
||||
else if (tvguideConfig.style == eStyleGraphical)
|
||||
colorTextBack = (active)?theme.Color(clrGridActiveFontBack):theme.Color(clrGridFontBack);
|
||||
else if (config.style == eStyleGraphical)
|
||||
colorTextBack = (active) ? theme.Color(clrGridActiveFontBack) : theme.Color(clrGridFontBack);
|
||||
else
|
||||
colorTextBack = clrTransparent;
|
||||
if (tvguideConfig.displayMode == eVertical) {
|
||||
if (Height()/geoManager.minutePixel < 6)
|
||||
if (config.displayMode == eVertical) {
|
||||
if (Height() / geoManager.minutePixel < 6)
|
||||
return;
|
||||
int textHeight = fontManager.FontGrid->Height();
|
||||
int textHeightSmall = fontManager.FontGridSmall->Height();
|
||||
int textLines = text->Lines();
|
||||
for (int i=0; i<textLines; i++) {
|
||||
pixmap->DrawText(cPoint(borderWidth, borderWidth + i*textHeight), text->GetLine(i), colorText, colorTextBack, fontManager.FontGrid);
|
||||
int titleY = borderWidth;
|
||||
if (config.showTimeInGrid) { // mit Zeitangabe im Grid
|
||||
pixmap->DrawText(cPoint(borderWidth, borderWidth), *timeString, colorText, colorTextBack, fontManager.FontGridSmall);
|
||||
titleY += textHeightSmall;
|
||||
}
|
||||
for (int i = 0; i < textLines; i++) {
|
||||
pixmap->DrawText(cPoint(borderWidth, titleY + i * textHeight), text->GetLine(i), colorText, colorTextBack, fontManager.FontGrid);
|
||||
}
|
||||
int extTextLines = extText->Lines();
|
||||
int offset = (textLines+1)*textHeight - 0.5*textHeight;
|
||||
textHeight = fontManager.FontGridSmall->Height();
|
||||
if ((Height()-textHeight-10) > offset) {
|
||||
for (int i=0; i<extTextLines; i++) {
|
||||
pixmap->DrawText(cPoint(borderWidth, borderWidth + offset + i*textHeight), extText->GetLine(i), colorText, colorTextBack, fontManager.FontGridSmall);
|
||||
int offset = titleY + (textLines + 0.5) * textHeight;
|
||||
if ((Height() - textHeightSmall - 10) > offset) {
|
||||
for (int i = 0; i < extTextLines; i++) {
|
||||
pixmap->DrawText(cPoint(borderWidth, offset + i * textHeightSmall), extText->GetLine(i), colorText, colorTextBack, fontManager.FontGridSmall);
|
||||
}
|
||||
}
|
||||
} else if (tvguideConfig.displayMode == eHorizontal) {
|
||||
if (Width()/geoManager.minutePixel < 10) {
|
||||
int titleY = (geoManager.rowHeight - fontManager.FontGridHorizontal->Height())/2;
|
||||
pixmap->DrawText(cPoint(borderWidth - 2, titleY), "...", colorText, colorTextBack, fontManager.FontGridHorizontal);
|
||||
return;
|
||||
}
|
||||
cString strTitle = CutText(event->Title(), viewportHeight, fontManager.FontGridHorizontal).c_str();
|
||||
} else if (config.displayMode == eHorizontal) {
|
||||
cString strTitle = CutText(event->Title(), viewportHeight - borderWidth, fontManager.FontGridHorizontal).c_str();
|
||||
int titleY = 0;
|
||||
if (tvguideConfig.showTimeInGrid) {
|
||||
if (config.showTimeInGrid) { // mit Zeitangabe im Grid
|
||||
pixmap->DrawText(cPoint(borderWidth, borderWidth), *timeString, colorText, colorTextBack, fontManager.FontGridHorizontalSmall);
|
||||
titleY = fontManager.FontGridHorizontalSmall->Height() + (geoManager.rowHeight - fontManager.FontGridHorizontalSmall->Height() - fontManager.FontGridHorizontal->Height())/2;
|
||||
titleY = fontManager.FontGridHorizontalSmall->Height() + (geoManager.rowHeight - fontManager.FontGridHorizontalSmall->Height() - fontManager.FontGridHorizontal->Height()) / 2;
|
||||
} else {
|
||||
titleY = (geoManager.rowHeight - fontManager.FontGridHorizontal->Height())/2;
|
||||
titleY = (geoManager.rowHeight - fontManager.FontGridHorizontal->Height()) / 2;
|
||||
}
|
||||
pixmap->DrawText(cPoint(borderWidth, titleY), *strTitle, colorText, colorTextBack, fontManager.FontGridHorizontal);
|
||||
}
|
||||
@@ -170,13 +169,17 @@ void cEpgGrid::drawText() {
|
||||
|
||||
void cEpgGrid::drawIcon(cString iconText, tColor color) {
|
||||
|
||||
const cFont *font = (tvguideConfig.displayMode == eVertical)
|
||||
?fontManager.FontGrid
|
||||
:fontManager.FontGridHorizontalSmall;
|
||||
int textWidth = font->Width(*iconText)+2*borderWidth;
|
||||
int textHeight = font->Height()+10;
|
||||
pixmap->DrawRectangle( cRect(Width() - textWidth - borderWidth, Height() - textHeight - borderWidth, textWidth, textHeight), color);
|
||||
pixmap->DrawText(cPoint(Width() - textWidth, Height() - textHeight - borderWidth/2), *iconText, theme.Color(clrFont), color, font);
|
||||
const cFont *font = (config.displayMode == eVertical) ? fontManager.FontGrid : fontManager.FontGridHorizontalSmall;
|
||||
int textWidth = font->Width(*iconText) + 2 * borderWidth;
|
||||
int textHeight = font->Height() + 10;
|
||||
if ((config.displayMode == eHorizontal) && ((Width() - 2 * textWidth) < 0))
|
||||
pixmap->DrawEllipse( cRect(Width() - textHeight / 2 - borderWidth, Height() - textHeight - borderWidth, textHeight / 2, textHeight / 2), color);
|
||||
else if ((config.displayMode == eVertical) && ((Height() - 2 * textHeight) < 0))
|
||||
pixmap->DrawEllipse( cRect(Width() - textHeight / 2 - borderWidth, borderWidth, textHeight / 2, textHeight / 2), color);
|
||||
else {
|
||||
pixmap->DrawEllipse( cRect(Width() - textWidth - borderWidth, Height() - textHeight - borderWidth, textWidth, textHeight), color);
|
||||
pixmap->DrawText(cPoint(Width() - textWidth, Height() - textHeight - borderWidth / 2), *iconText, theme.Color(clrFont), clrTransparent, font);
|
||||
}
|
||||
}
|
||||
|
||||
cString cEpgGrid::getTimeString(void) {
|
||||
|
@@ -2,11 +2,11 @@
|
||||
#define __TVGUIDE_EPGGRID_H
|
||||
|
||||
#include <vdr/epg.h>
|
||||
#include "grid.h"
|
||||
#include "gridelement.h"
|
||||
|
||||
// --- cEpgGrid -------------------------------------------------------------
|
||||
|
||||
class cEpgGrid : public cGrid {
|
||||
class cEpgGrid : public cGridElement {
|
||||
private:
|
||||
const cTimer *timer;
|
||||
const cEvent *event;
|
||||
@@ -16,7 +16,7 @@ private:
|
||||
void drawIcon(cString iconText, tColor color);
|
||||
time_t Duration(void) { return event->Duration(); };
|
||||
public:
|
||||
cEpgGrid(cChannelColumn *c, const cEvent *event);
|
||||
cEpgGrid(cChannelEpg *c, const cEvent *event);
|
||||
virtual ~cEpgGrid(void);
|
||||
void SetViewportHeight();
|
||||
void PositionPixmap();
|
||||
|
@@ -12,34 +12,34 @@ cFontManager::~cFontManager() {
|
||||
void cFontManager::SetFonts() {
|
||||
InitialiseFontType();
|
||||
//Common Fonts
|
||||
FontButton = CreateFont(geoManager.footerHeight/3 + 4 + tvguideConfig.FontButtonDelta);
|
||||
FontDetailView = CreateFont(geoManager.osdHeight/30 + tvguideConfig.FontDetailViewDelta);
|
||||
FontDetailViewSmall = CreateFont(geoManager.osdHeight/40 + tvguideConfig.FontDetailViewSmallDelta);
|
||||
FontDetailHeader = CreateFont(geoManager.osdHeight/27 + tvguideConfig.FontDetailHeaderDelta);
|
||||
FontDetailHeaderLarge = CreateFont(geoManager.osdHeight/20 + tvguideConfig.FontDetailHeaderDelta);
|
||||
FontMessageBox = CreateFont(geoManager.osdHeight/33 + tvguideConfig.FontMessageBoxDelta);
|
||||
FontMessageBoxLarge = CreateFont(geoManager.osdHeight/30 + tvguideConfig.FontMessageBoxLargeDelta);
|
||||
FontStatusHeader = CreateFont(geoManager.statusHeaderHeight/6 - 4 + tvguideConfig.FontStatusHeaderDelta);
|
||||
FontStatusHeaderLarge = CreateFont(geoManager.statusHeaderHeight/5 + tvguideConfig.FontStatusHeaderLargeDelta);
|
||||
FontButton = CreateFont(geoManager.footerHeight/3 + 4 + config.FontButtonDelta);
|
||||
FontDetailView = CreateFont(geoManager.osdHeight/30 + config.FontDetailViewDelta);
|
||||
FontDetailViewSmall = CreateFont(geoManager.osdHeight/40 + config.FontDetailViewSmallDelta);
|
||||
FontDetailHeader = CreateFont(geoManager.osdHeight/27 + config.FontDetailHeaderDelta);
|
||||
FontDetailHeaderLarge = CreateFont(geoManager.osdHeight/20 + config.FontDetailHeaderDelta);
|
||||
FontMessageBox = CreateFont(geoManager.osdHeight/33 + config.FontMessageBoxDelta);
|
||||
FontMessageBoxLarge = CreateFont(geoManager.osdHeight/30 + config.FontMessageBoxLargeDelta);
|
||||
FontStatusHeader = CreateFont(geoManager.statusHeaderHeight/6 - 4 + config.FontStatusHeaderDelta);
|
||||
FontStatusHeaderLarge = CreateFont(geoManager.statusHeaderHeight/5 + config.FontStatusHeaderLargeDelta);
|
||||
//Fonts for vertical Display
|
||||
FontChannelHeader = CreateFont(geoManager.colWidth/10 + tvguideConfig.FontChannelHeaderDelta);
|
||||
FontChannelGroups = CreateFont(geoManager.colWidth/8 + tvguideConfig.FontChannelGroupsDelta);
|
||||
FontGrid = CreateFont(geoManager.colWidth/12 + tvguideConfig.FontGridDelta);
|
||||
FontGridSmall = CreateFont(geoManager.colWidth/12 + tvguideConfig.FontGridSmallDelta);
|
||||
FontTimeLineWeekday = CreateFont(geoManager.timeLineWidth/3 + tvguideConfig.FontTimeLineWeekdayDelta);
|
||||
FontTimeLineDate = CreateFont(geoManager.timeLineWidth/4 + tvguideConfig.FontTimeLineDateDelta);
|
||||
FontTimeLineTime = CreateFont(geoManager.timeLineWidth/4 + tvguideConfig.FontTimeLineTimeDelta);
|
||||
FontChannelHeader = CreateFont(geoManager.colWidth/10 + config.FontChannelHeaderDelta);
|
||||
FontChannelGroups = CreateFont(geoManager.colWidth/8 + config.FontChannelGroupsDelta);
|
||||
FontGrid = CreateFont(geoManager.colWidth/12 + config.FontGridDelta);
|
||||
FontGridSmall = CreateFont(geoManager.colWidth/12 + config.FontGridSmallDelta);
|
||||
FontTimeLineWeekday = CreateFont(geoManager.timeLineWidth/3 + config.FontTimeLineWeekdayDelta);
|
||||
FontTimeLineDate = CreateFont(geoManager.timeLineWidth/4 + config.FontTimeLineDateDelta);
|
||||
FontTimeLineTime = CreateFont(geoManager.timeLineWidth/4 + config.FontTimeLineTimeDelta);
|
||||
//Fonts for horizontal Display
|
||||
FontChannelHeaderHorizontal = CreateFont(geoManager.rowHeight/3 + tvguideConfig.FontChannelHeaderHorizontalDelta);
|
||||
FontChannelGroupsHorizontal = CreateFont(geoManager.rowHeight/3 + 5 + tvguideConfig.FontChannelGroupsHorizontalDelta);
|
||||
FontGridHorizontal = CreateFont(geoManager.rowHeight/3 + 5 + tvguideConfig.FontGridHorizontalDelta);
|
||||
FontGridHorizontalSmall = CreateFont(geoManager.rowHeight/4 + tvguideConfig.FontGridHorizontalSmallDelta);
|
||||
FontTimeLineDateHorizontal = CreateFont(geoManager.timeLineHeight/2 + 5 + tvguideConfig.FontTimeLineDateHorizontalDelta);
|
||||
FontTimeLineTimeHorizontal = CreateFont(geoManager.timeLineHeight/2 + tvguideConfig.FontTimeLineTimeHorizontalDelta);
|
||||
FontChannelHeaderHorizontal = CreateFont(geoManager.rowHeight/3 + config.FontChannelHeaderHorizontalDelta);
|
||||
FontChannelGroupsHorizontal = CreateFont(geoManager.rowHeight/3 + 5 + config.FontChannelGroupsHorizontalDelta);
|
||||
FontGridHorizontal = CreateFont(geoManager.rowHeight/3 + 5 + config.FontGridHorizontalDelta);
|
||||
FontGridHorizontalSmall = CreateFont(geoManager.rowHeight/4 + config.FontGridHorizontalSmallDelta);
|
||||
FontTimeLineDateHorizontal = CreateFont(geoManager.timeLineHeight/2 + 5 + config.FontTimeLineDateHorizontalDelta);
|
||||
FontTimeLineTimeHorizontal = CreateFont(geoManager.timeLineHeight/2 + config.FontTimeLineTimeHorizontalDelta);
|
||||
//Fonts for RecMenu
|
||||
FontRecMenuItem = CreateFont(geoManager.osdHeight/30 + tvguideConfig.FontRecMenuItemDelta);
|
||||
FontRecMenuItemSmall = CreateFont(geoManager.osdHeight/40 + tvguideConfig.FontRecMenuItemSmallDelta);
|
||||
FontRecMenuItemLarge = CreateFont(geoManager.osdHeight/25 + tvguideConfig.FontRecMenuItemLargeDelta);
|
||||
FontRecMenuItem = CreateFont(geoManager.osdHeight/30 + config.FontRecMenuItemDelta);
|
||||
FontRecMenuItemSmall = CreateFont(geoManager.osdHeight/40 + config.FontRecMenuItemSmallDelta);
|
||||
FontRecMenuItemLarge = CreateFont(geoManager.osdHeight/25 + config.FontRecMenuItemLargeDelta);
|
||||
}
|
||||
|
||||
void cFontManager::DeleteFonts() {
|
||||
@@ -71,15 +71,15 @@ void cFontManager::DeleteFonts() {
|
||||
}
|
||||
|
||||
void cFontManager::InitialiseFontType(void) {
|
||||
if (tvguideConfig.fontIndex == 0) {
|
||||
fontName = tvguideConfig.fontNameDefault;
|
||||
if (config.fontIndex == 0) {
|
||||
fontName = config.fontNameDefault;
|
||||
} else {
|
||||
cStringList availableFonts;
|
||||
cFont::GetAvailableFontNames(&availableFonts);
|
||||
if (availableFonts[tvguideConfig.fontIndex-1]) {
|
||||
fontName = availableFonts[tvguideConfig.fontIndex-1];
|
||||
if (availableFonts[config.fontIndex-1]) {
|
||||
fontName = availableFonts[config.fontIndex-1];
|
||||
} else
|
||||
fontName = tvguideConfig.fontNameDefault;
|
||||
fontName = config.fontNameDefault;
|
||||
}
|
||||
cFont *test = NULL;
|
||||
test = cFont::CreateFont(*fontName, 30);
|
||||
|
24
footer.c
24
footer.c
@@ -26,7 +26,7 @@ void cFooter::drawRedButton() {
|
||||
}
|
||||
|
||||
void cFooter::drawGreenButton() {
|
||||
cString text = cString::sprintf("%d %s", tvguideConfig.jumpChannels, tr("Channels back"));
|
||||
cString text = cString::sprintf("%d %s", config.jumpChannels, tr("Channels back"));
|
||||
DrawButton(*text, theme.Color(clrButtonGreen), theme.Color(clrButtonGreenBorder), oeButtonGreen, positionButtons[1]);
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ void cFooter::drawGreenButton(const char *text) {
|
||||
}
|
||||
|
||||
void cFooter::drawYellowButton() {
|
||||
cString text = cString::sprintf("%d %s", tvguideConfig.jumpChannels, tr("Channels forward"));
|
||||
cString text = cString::sprintf("%d %s", config.jumpChannels, tr("Channels forward"));
|
||||
DrawButton(*text, theme.Color(clrButtonYellow), theme.Color(clrButtonYellowBorder), oeButtonYellow, positionButtons[2]);
|
||||
}
|
||||
|
||||
@@ -47,14 +47,14 @@ void cFooter::drawYellowButton(const char *text) {
|
||||
|
||||
void cFooter::drawBlueButton(bool detailedEPG) {
|
||||
cString text;
|
||||
if (tvguideConfig.blueKeyMode == eBlueKeySwitch)
|
||||
if (config.blueKeyMode == eBlueKeySwitch)
|
||||
text = tr("Switch to Channel");
|
||||
else if (tvguideConfig.blueKeyMode == eBlueKeyEPG) {
|
||||
else if (config.blueKeyMode == eBlueKeyEPG) {
|
||||
if (!detailedEPG)
|
||||
text = tr("Detailed EPG");
|
||||
else
|
||||
text = tr("Close detailed EPG");
|
||||
} else if (tvguideConfig.blueKeyMode == eBlueKeyFavorites) {
|
||||
} else if (config.blueKeyMode == eBlueKeyFavorites) {
|
||||
if (!detailedEPG)
|
||||
text = tr("Favorites");
|
||||
else
|
||||
@@ -80,7 +80,7 @@ void cFooter::SetDetailedViewMode(bool fromRecMenu) {
|
||||
if (fromRecMenu) {
|
||||
ClearButton(positionButtons[0]);
|
||||
ClearButton(positionButtons[3]);
|
||||
} else if (tvguideConfig.blueKeyMode != eBlueKeySwitch) {
|
||||
} else if (config.blueKeyMode != eBlueKeySwitch) {
|
||||
ClearButton(positionButtons[3]);
|
||||
drawBlueButton(true);
|
||||
}
|
||||
@@ -89,7 +89,7 @@ void cFooter::SetDetailedViewMode(bool fromRecMenu) {
|
||||
void cFooter::LeaveDetailedViewMode(const cChannel *channel) {
|
||||
drawRedButton();
|
||||
drawBlueButton();
|
||||
if (tvguideConfig.channelJumpMode == eNumJump) {
|
||||
if (config.channelJumpMode == eNumJump) {
|
||||
drawGreenButton();
|
||||
drawYellowButton();
|
||||
} else {
|
||||
@@ -128,20 +128,20 @@ void cFooter::SetButtonPositions(void) {
|
||||
}
|
||||
|
||||
void cFooter::DrawButton(const char *text, tColor color, tColor borderColor, eOsdElementType buttonType, int num) {
|
||||
tColor colorTextBack = (tvguideConfig.style == eStyleFlat)?color:clrTransparent;
|
||||
tColor colorTextBack = (config.style == eStyleFlat)?color:clrTransparent;
|
||||
int left = num * geoManager.buttonWidth + (2 * num + 1) * geoManager.buttonBorder;
|
||||
|
||||
if ((tvguideConfig.style == eStyleBlendingMagick) || (tvguideConfig.style == eStyleBlendingDefault)) {
|
||||
if ((config.style == eStyleBlendingMagick) || (config.style == eStyleBlendingDefault)) {
|
||||
cImageLoader imgLoader;
|
||||
imgLoader.DrawBackground(theme.Color(clrButtonBlend), color, geoManager.buttonWidth-4, geoManager.buttonHeight-4);
|
||||
footer->DrawRectangle(cRect(left, buttonY, geoManager.buttonWidth, geoManager.buttonHeight), borderColor);
|
||||
footer->DrawImage(cPoint(left+2, buttonY+2), imgLoader.GetImage());
|
||||
if (tvguideConfig.roundedCorners) {
|
||||
if (config.roundedCorners) {
|
||||
int borderRadius = 12;
|
||||
int borderWidth = 2;
|
||||
DrawRoundedCorners(footer, left, buttonY, geoManager.buttonWidth, geoManager.buttonHeight, borderRadius, borderWidth, borderColor);
|
||||
}
|
||||
} else if (tvguideConfig.style == eStyleGraphical) {
|
||||
} else if (config.style == eStyleGraphical) {
|
||||
cImage *button = imgCache.GetOsdElement(buttonType);
|
||||
if (button) {
|
||||
footer->DrawImage(cPoint(left, buttonY), *button);
|
||||
@@ -149,7 +149,7 @@ void cFooter::DrawButton(const char *text, tColor color, tColor borderColor, eOs
|
||||
} else {
|
||||
footer->DrawRectangle(cRect(left, buttonY, geoManager.buttonWidth, geoManager.buttonHeight), borderColor);
|
||||
footer->DrawRectangle(cRect(left+1, buttonY+1, geoManager.buttonWidth-2, geoManager.buttonHeight-2), color);
|
||||
if (tvguideConfig.roundedCorners) {
|
||||
if (config.roundedCorners) {
|
||||
int borderRadius = 12;
|
||||
int borderWidth = 1;
|
||||
DrawRoundedCorners(footer, left, buttonY, geoManager.buttonWidth, geoManager.buttonHeight, borderRadius, borderWidth, borderColor);
|
||||
|
@@ -20,39 +20,39 @@ bool cGeometryManager::SetGeometry(int osdWidth, int osdHeight, bool force) {
|
||||
this->osdHeight = osdHeight;
|
||||
esyslog("tvguide: Set OSD to %d x %d px", osdWidth, osdHeight);
|
||||
|
||||
statusHeaderHeight = (tvguideConfig.displayStatusHeader)?(tvguideConfig.headerHeightPercent * osdHeight / 100):0;
|
||||
statusHeaderHeight = (config.displayStatusHeader) ? (config.headerHeightPercent * osdHeight / 100):0;
|
||||
tvFrameWidth = statusHeaderHeight * 16 / 9;
|
||||
headerContentWidth = (tvguideConfig.scaleVideo)?(osdWidth - tvFrameWidth):osdWidth;
|
||||
channelGroupsWidth = (tvguideConfig.displayChannelGroups)?(tvguideConfig.channelGroupsPercent * osdWidth / 100):0;
|
||||
channelGroupsHeight = (tvguideConfig.displayChannelGroups)?(tvguideConfig.channelGroupsPercent * osdHeight / 100):0;
|
||||
channelHeaderWidth = tvguideConfig.channelHeaderWidthPercent * osdWidth / 100;
|
||||
channelHeaderHeight = tvguideConfig.channelHeaderHeightPercent * osdHeight / 100;
|
||||
timeLineWidth = tvguideConfig.timeLineWidthPercent * osdWidth / 100;
|
||||
timeLineHeight = tvguideConfig.timeLineHeightPercent * osdHeight / 100;
|
||||
footerHeight = tvguideConfig.footerHeightPercent * osdHeight / 100;
|
||||
headerContentWidth = (config.scaleVideo) ? (osdWidth - tvFrameWidth):osdWidth;
|
||||
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;
|
||||
timeLineHeight = config.timeLineHeightPercent * osdHeight / 100;
|
||||
footerHeight = config.footerHeightPercent * osdHeight / 100;
|
||||
footerY = osdHeight - footerHeight;
|
||||
|
||||
if (tvguideConfig.displayMode == eVertical) {
|
||||
colWidth = (osdWidth - timeLineWidth) / tvguideConfig.channelCols;
|
||||
if (config.displayMode == eVertical) {
|
||||
colWidth = (osdWidth - timeLineWidth) / config.channelCols;
|
||||
rowHeight = 0;
|
||||
minutePixel = (osdHeight - statusHeaderHeight - channelGroupsHeight - channelHeaderHeight - footerHeight) / tvguideConfig.displayTime;
|
||||
minutePixel = (double)(osdHeight - statusHeaderHeight - channelGroupsHeight - channelHeaderHeight - footerHeight) / (double)config.displayTime;
|
||||
channelLogoWidth = colWidth;
|
||||
channelLogoHeight = channelHeaderHeight;
|
||||
logoWidth = channelLogoWidth/2 - 15;
|
||||
logoHeight = logoWidth * tvguideConfig.logoHeightRatio / tvguideConfig.logoWidthRatio;
|
||||
logoWidth = channelLogoWidth / 2 - 15;
|
||||
logoHeight = logoWidth * config.logoHeightRatio / config.logoWidthRatio;
|
||||
timeLineGridWidth = timeLineWidth;
|
||||
timeLineGridHeight = minutePixel * 30;
|
||||
dateVieverWidth = timeLineWidth;
|
||||
dateVieverHeight = (channelHeaderHeight + channelGroupsHeight) * 2 / 3;
|
||||
clockWidth = dateVieverWidth;
|
||||
clockHeight = (channelHeaderHeight + channelGroupsHeight) - dateVieverHeight;
|
||||
} else if (tvguideConfig.displayMode == eHorizontal) {
|
||||
} else if (config.displayMode == eHorizontal) {
|
||||
colWidth = 0;
|
||||
rowHeight = (osdHeight - statusHeaderHeight - timeLineHeight - footerHeight) / tvguideConfig.channelRows;
|
||||
minutePixel = (osdWidth - channelHeaderWidth - channelGroupsWidth) / tvguideConfig.displayHorizontalTime;
|
||||
rowHeight = (osdHeight - statusHeaderHeight - timeLineHeight - footerHeight) / config.channelRows;
|
||||
minutePixel = (double)(osdWidth - channelHeaderWidth - channelGroupsWidth) / (double)config.displayHorizontalTime;
|
||||
channelLogoWidth = channelHeaderWidth;
|
||||
channelLogoHeight = rowHeight;
|
||||
logoWidth = channelLogoHeight * tvguideConfig.logoWidthRatio / tvguideConfig.logoHeightRatio;
|
||||
logoWidth = channelLogoHeight * config.logoWidthRatio / config.logoHeightRatio;
|
||||
logoHeight = channelLogoHeight;
|
||||
timeLineGridWidth = geoManager.minutePixel * 30;
|
||||
timeLineGridHeight = geoManager.timeLineHeight;
|
||||
@@ -65,7 +65,7 @@ bool cGeometryManager::SetGeometry(int osdWidth, int osdHeight, bool force) {
|
||||
buttonWidth = osdWidth / 4 - 2 * buttonBorder;
|
||||
buttonHeight = footerHeight - 3 * buttonBorder;
|
||||
|
||||
epgViewHeaderHeight = tvguideConfig.headerHeightPercent * osdHeight / 100;
|
||||
epgViewHeaderHeight = config.headerHeightPercent * osdHeight / 100;
|
||||
|
||||
borderRecMenus = 10;
|
||||
|
||||
|
@@ -24,7 +24,7 @@ public:
|
||||
//Content
|
||||
int colWidth;
|
||||
int rowHeight;
|
||||
int minutePixel;
|
||||
double minutePixel;
|
||||
int channelLogoWidth;
|
||||
int channelLogoHeight;
|
||||
//Timeline
|
||||
|
@@ -1,7 +1,7 @@
|
||||
#include "channelcolumn.h"
|
||||
#include "grid.h"
|
||||
#include "channelepg.h"
|
||||
#include "gridelement.h"
|
||||
|
||||
cGrid::cGrid(cChannelColumn *c) {
|
||||
cGridElement::cGridElement(cChannelEpg *c) {
|
||||
this->column = c;
|
||||
text = new cTextWrapper();
|
||||
dirty = true;
|
||||
@@ -10,11 +10,11 @@ cGrid::cGrid(cChannelColumn *c) {
|
||||
borderWidth = 10;
|
||||
}
|
||||
|
||||
cGrid::~cGrid(void) {
|
||||
cGridElement::~cGridElement(void) {
|
||||
delete text;
|
||||
}
|
||||
|
||||
void cGrid::setBackground() {
|
||||
void cGridElement::setBackground() {
|
||||
if (active) {
|
||||
color = theme.Color(clrHighlight);
|
||||
colorBlending = theme.Color(clrHighlightBlending);
|
||||
@@ -29,12 +29,12 @@ void cGrid::setBackground() {
|
||||
}
|
||||
}
|
||||
|
||||
void cGrid::Draw() {
|
||||
void cGridElement::Draw() {
|
||||
if (!pixmap) {
|
||||
return;
|
||||
}
|
||||
if (dirty) {
|
||||
if (tvguideConfig.style == eStyleGraphical) {
|
||||
if (config.style == eStyleGraphical) {
|
||||
drawBackgroundGraphical(bgGrid, active);
|
||||
drawText();
|
||||
} else {
|
||||
@@ -48,20 +48,20 @@ void cGrid::Draw() {
|
||||
}
|
||||
}
|
||||
|
||||
bool cGrid::isFirst(void) {
|
||||
bool cGridElement::isFirst(void) {
|
||||
if (column->isFirst(this))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
bool cGrid::Match(time_t t) {
|
||||
bool cGridElement::Match(time_t t) {
|
||||
if ((StartTime() < t) && (EndTime() > t))
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
int cGrid::calcOverlap(cGrid *neighbor) {
|
||||
int cGridElement::calcOverlap(cGridElement *neighbor) {
|
||||
int overlap = 0;
|
||||
if (intersects(neighbor)) {
|
||||
if ((StartTime() <= neighbor->StartTime()) && (EndTime() <= neighbor->EndTime())) {
|
||||
@@ -77,6 +77,6 @@ int cGrid::calcOverlap(cGrid *neighbor) {
|
||||
return overlap;
|
||||
}
|
||||
|
||||
bool cGrid::intersects(cGrid *neighbor) {
|
||||
bool cGridElement::intersects(cGridElement *neighbor) {
|
||||
return ! ( (neighbor->EndTime() <= StartTime()) || (neighbor->StartTime() >= EndTime()) );
|
||||
}
|
@@ -4,11 +4,11 @@
|
||||
#include <vdr/tools.h>
|
||||
#include "styledpixmap.h"
|
||||
|
||||
class cChannelColumn;
|
||||
class cChannelEpg;
|
||||
|
||||
// --- cEpgGrid -------------------------------------------------------------
|
||||
|
||||
class cGrid : public cListObject, public cStyledPixmap {
|
||||
class cGridElement : public cListObject, public cStyledPixmap {
|
||||
protected:
|
||||
cTextWrapper *text;
|
||||
int viewportHeight;
|
||||
@@ -19,14 +19,14 @@ protected:
|
||||
bool dirty;
|
||||
bool hasTimer;
|
||||
bool hasSwitchTimer;
|
||||
bool intersects(cGrid *neighbor);
|
||||
bool intersects(cGridElement *neighbor);
|
||||
virtual time_t Duration(void) { return 0; };
|
||||
virtual void drawText(void) {};
|
||||
bool dummy;
|
||||
public:
|
||||
cGrid(cChannelColumn *c);
|
||||
virtual ~cGrid(void);
|
||||
cChannelColumn *column;
|
||||
cGridElement(cChannelEpg *c);
|
||||
virtual ~cGridElement(void);
|
||||
cChannelEpg *column;
|
||||
virtual void SetViewportHeight(void) {};
|
||||
virtual void PositionPixmap(void) {};
|
||||
virtual void setText(void) {};
|
||||
@@ -43,7 +43,7 @@ public:
|
||||
virtual time_t EndTime(void) { return 0; };
|
||||
virtual void SetStartTime(time_t start) {};
|
||||
virtual void SetEndTime(time_t end) {};
|
||||
int calcOverlap(cGrid *neighbor);
|
||||
int calcOverlap(cGridElement *neighbor);
|
||||
virtual void SetTimer(void) {};
|
||||
virtual void SetSwitchTimer(void) {};
|
||||
virtual cString getText(void) { return cString("");};
|
30
headergrid.c
30
headergrid.c
@@ -2,7 +2,7 @@
|
||||
#include "tools.h"
|
||||
#include "headergrid.h"
|
||||
|
||||
cHeaderGrid::cHeaderGrid(void) : cGrid(NULL) {
|
||||
cHeaderGrid::cHeaderGrid(void) : cGridElement(NULL) {
|
||||
pixmap = NULL;
|
||||
pixmapLogo = NULL;
|
||||
}
|
||||
@@ -15,10 +15,10 @@ void cHeaderGrid::createBackground(int num) {
|
||||
color = theme.Color(clrHeader);
|
||||
colorBlending = theme.Color(clrHeaderBlending);
|
||||
int x, y;
|
||||
if (tvguideConfig.displayMode == eVertical) {
|
||||
if (config.displayMode == eVertical) {
|
||||
x = geoManager.timeLineWidth + num*geoManager.colWidth;
|
||||
y = geoManager.statusHeaderHeight + geoManager.channelGroupsHeight;
|
||||
} else if (tvguideConfig.displayMode == eHorizontal) {
|
||||
} else if (config.displayMode == eHorizontal) {
|
||||
x = geoManager.channelGroupsWidth;
|
||||
y = geoManager.statusHeaderHeight + geoManager.timeLineHeight + num*geoManager.rowHeight;
|
||||
}
|
||||
@@ -28,7 +28,7 @@ void cHeaderGrid::createBackground(int num) {
|
||||
return;
|
||||
}
|
||||
pixmapLogo->Fill(clrTransparent);
|
||||
if (tvguideConfig.style == eStyleGraphical) {
|
||||
if (config.style == eStyleGraphical) {
|
||||
drawBackgroundGraphical(bgChannelHeader);
|
||||
} else {
|
||||
drawBackground();
|
||||
@@ -37,9 +37,9 @@ void cHeaderGrid::createBackground(int num) {
|
||||
}
|
||||
|
||||
void cHeaderGrid::drawChannel(const cChannel *channel) {
|
||||
if (tvguideConfig.displayMode == eVertical) {
|
||||
if (config.displayMode == eVertical) {
|
||||
drawChannelVertical(channel);
|
||||
} else if (tvguideConfig.displayMode == eHorizontal) {
|
||||
} else if (config.displayMode == eHorizontal) {
|
||||
drawChannelHorizontal(channel);
|
||||
}
|
||||
}
|
||||
@@ -48,11 +48,11 @@ void cHeaderGrid::drawChannel(const cChannel *channel) {
|
||||
|
||||
void cHeaderGrid::drawChannelHorizontal(const cChannel *channel) {
|
||||
int logoWidth = geoManager.logoWidth;
|
||||
int logoX = tvguideConfig.displayChannelName ? 5 : (Width() - logoWidth) / 2;
|
||||
int logoX = config.displayChannelName ? 5 : (Width() - logoWidth) / 2;
|
||||
int textX = 5;
|
||||
int textY = (Height() - fontManager.FontChannelHeaderHorizontal->Height()) / 2;
|
||||
bool logoFound = false;
|
||||
if (!tvguideConfig.hideChannelLogos) {
|
||||
if (!config.hideChannelLogos) {
|
||||
cImage *logo = imgCache.GetLogo(channel);
|
||||
if (logo) {
|
||||
const int logoheight = logo->Height();
|
||||
@@ -65,13 +65,13 @@ void cHeaderGrid::drawChannelHorizontal(const cChannel *channel) {
|
||||
if (!logoFound) {
|
||||
drawText = true;
|
||||
}
|
||||
if (tvguideConfig.displayChannelName) {
|
||||
if (config.displayChannelName) {
|
||||
drawText = true;
|
||||
textX += logoWidth + 5;
|
||||
textWidthMax -= textX;
|
||||
}
|
||||
if (drawText) {
|
||||
tColor colorTextBack = (tvguideConfig.style == eStyleFlat)?color:clrTransparent;
|
||||
tColor colorTextBack = (config.style == eStyleFlat)?color:clrTransparent;
|
||||
cString strChannel = cString::sprintf("%d %s", channel->Number(), channel->Name());
|
||||
strChannel = CutText(*strChannel, textWidthMax, fontManager.FontChannelHeaderHorizontal).c_str();
|
||||
pixmap->DrawText(cPoint(textX, textY), *strChannel, theme.Color(clrFontHeader), colorTextBack, fontManager.FontChannelHeaderHorizontal);
|
||||
@@ -90,7 +90,7 @@ void cHeaderGrid::drawChannelVertical(const cChannel *channel) {
|
||||
int lineHeight = fontManager.FontChannelHeader->Height();
|
||||
int yStart = (geoManager.channelHeaderHeight - lines * lineHeight) / 2 + 8;
|
||||
bool logoFound = false;
|
||||
if (!tvguideConfig.hideChannelLogos) {
|
||||
if (!config.hideChannelLogos) {
|
||||
cImage *logo = imgCache.GetLogo(channel);
|
||||
if (logo) {
|
||||
pixmapLogo->DrawImage(cPoint((Width() - logoWidth) / 2, 6), *logo);
|
||||
@@ -100,13 +100,13 @@ void cHeaderGrid::drawChannelVertical(const cChannel *channel) {
|
||||
bool drawText = false;
|
||||
if (!logoFound) {
|
||||
drawText = true;
|
||||
} else if (tvguideConfig.displayChannelName) {
|
||||
} else if (config.displayChannelName) {
|
||||
drawText = true;
|
||||
yStart = logoHeight;
|
||||
}
|
||||
if (!drawText)
|
||||
return;
|
||||
tColor colorTextBack = (tvguideConfig.style == eStyleFlat)?color:clrTransparent;
|
||||
tColor colorTextBack = (config.style == eStyleFlat)?color:clrTransparent;
|
||||
for (int i = 0; i < lines; i++) {
|
||||
int textWidth = fontManager.FontChannelHeader->Width(tw.GetLine(i));
|
||||
int xText = (geoManager.colWidth - textWidth) / 2;
|
||||
@@ -118,12 +118,12 @@ void cHeaderGrid::drawChannelVertical(const cChannel *channel) {
|
||||
|
||||
void cHeaderGrid::setPosition(int num) {
|
||||
int x, y, width, height;
|
||||
if (tvguideConfig.displayMode == eVertical) {
|
||||
if (config.displayMode == eVertical) {
|
||||
x = geoManager.timeLineWidth + num*geoManager.colWidth;
|
||||
y = geoManager.statusHeaderHeight + geoManager.channelGroupsHeight;
|
||||
width = geoManager.colWidth;
|
||||
height = geoManager.channelHeaderHeight;
|
||||
} else if (tvguideConfig.displayMode == eHorizontal) {
|
||||
} else if (config.displayMode == eHorizontal) {
|
||||
x = geoManager.channelGroupsWidth;
|
||||
y = geoManager.statusHeaderHeight + geoManager.timeLineHeight + num*geoManager.rowHeight;
|
||||
width = geoManager.channelHeaderWidth;
|
||||
|
@@ -1,11 +1,11 @@
|
||||
#ifndef __TVGUIDE_HEADERGRID_H
|
||||
#define __TVGUIDE_HEADERGRID_H
|
||||
|
||||
#include "grid.h"
|
||||
#include "gridelement.h"
|
||||
|
||||
// --- cHeaderGrid -------------------------------------------------------------
|
||||
|
||||
class cHeaderGrid : public cGrid {
|
||||
class cHeaderGrid : public cGridElement {
|
||||
private:
|
||||
cPixmap *pixmapLogo;
|
||||
void drawChannelHorizontal(const cChannel *channel);
|
||||
|
52
imagecache.c
52
imagecache.c
@@ -28,7 +28,7 @@ cImageCache::~cImageCache() {
|
||||
}
|
||||
|
||||
void cImageCache::CreateCache(void) {
|
||||
if (tvguideConfig.style != eStyleGraphical)
|
||||
if (config.style != eStyleGraphical)
|
||||
return;
|
||||
esyslog("tvguide: Creating Image Cache");
|
||||
int start = cTimeMs::Now();
|
||||
@@ -85,7 +85,7 @@ void cImageCache::CreateOsdIconCache(void) {
|
||||
InsertIntoOsdElementCache(oeButtonBlue, geoManager.buttonWidth, geoManager.buttonHeight);
|
||||
|
||||
//Channel Logo Background
|
||||
if (tvguideConfig.displayMode == eHorizontal) {
|
||||
if (config.displayMode == eHorizontal) {
|
||||
success = LoadIcon("osdElements/channellogoback_horizontal");
|
||||
} else {
|
||||
success = LoadIcon("osdElements/channellogoback_vertical");
|
||||
@@ -95,7 +95,7 @@ void cImageCache::CreateOsdIconCache(void) {
|
||||
|
||||
//Timeline Elements
|
||||
std::string imgTimeline1, imgTimeline2, imgDateViewer;
|
||||
if (tvguideConfig.displayMode == eHorizontal) {
|
||||
if (config.displayMode == eHorizontal) {
|
||||
imgTimeline1 = "osdElements/timeline1_horizontal";
|
||||
imgTimeline2 = "osdElements/timeline2_horizontal";
|
||||
imgDateViewer = "osdElements/timeline2_horizontal";
|
||||
@@ -129,7 +129,7 @@ void cImageCache::PrepareGridIconCache(void) {
|
||||
//Create Buffers for Background
|
||||
gridsAvailable = true;
|
||||
std::string grid, grid_active;
|
||||
if (tvguideConfig.displayMode == eHorizontal) {
|
||||
if (config.displayMode == eHorizontal) {
|
||||
grid = "osdElements/grid_horizontal";
|
||||
grid_active = "osdElements/grid_active_horizontal";
|
||||
} else {
|
||||
@@ -158,7 +158,7 @@ void cImageCache::PrepareGridIconCache(void) {
|
||||
imgBottom = NULL;
|
||||
imgBottomActive = NULL;
|
||||
|
||||
if (tvguideConfig.displayMode == eHorizontal) {
|
||||
if (config.displayMode == eHorizontal) {
|
||||
std::string left = "osdElements/grid_left";
|
||||
std::string right = "osdElements/grid_right";
|
||||
std::string left_active = "osdElements/grid_active_left";
|
||||
@@ -214,7 +214,7 @@ void cImageCache::PrepareGridIconCache(void) {
|
||||
}
|
||||
|
||||
void cImageCache::CreateGridIconCache(void) {
|
||||
if (tvguideConfig.displayMode == eHorizontal) {
|
||||
if (config.displayMode == eHorizontal) {
|
||||
int gridHeight = geoManager.rowHeight;
|
||||
for (int minutes = 5; minutes <= 120; minutes += 5) {
|
||||
GetGrid(minutes * geoManager.minutePixel, gridHeight, false);
|
||||
@@ -233,7 +233,7 @@ void cImageCache::CreateChannelGroupCache(void) {
|
||||
groupsBottom = NULL;
|
||||
groupsLeft = NULL;
|
||||
groupsRight = NULL;
|
||||
if (tvguideConfig.displayMode == eHorizontal) {
|
||||
if (config.displayMode == eHorizontal) {
|
||||
std::string channelGroupHead = "osdElements/channelgroup_head";
|
||||
std::string channelGroupBottom = "osdElements/channelgroup_bottom";
|
||||
int width = geoManager.channelGroupsWidth;
|
||||
@@ -249,7 +249,7 @@ void cImageCache::CreateChannelGroupCache(void) {
|
||||
if (success && heightHeadBottom) {
|
||||
groupsBottom = CreateImage(width, heightHeadBottom, false);
|
||||
}
|
||||
for (int size = 1; size <= tvguideConfig.numGrids; ++size) {
|
||||
for (int size = 1; size <= config.numGrids; ++size) {
|
||||
InsertIntoGroupsCacheHorizontal(size);
|
||||
}
|
||||
} else {
|
||||
@@ -268,7 +268,7 @@ void cImageCache::CreateChannelGroupCache(void) {
|
||||
if (success && widthHeadBottom) {
|
||||
groupsRight = CreateImage(widthHeadBottom, height, false);
|
||||
}
|
||||
for (int size = 1; size <= tvguideConfig.numGrids; ++size) {
|
||||
for (int size = 1; size <= config.numGrids; ++size) {
|
||||
InsertIntoGroupsCacheVertical(size);
|
||||
}
|
||||
}
|
||||
@@ -276,9 +276,9 @@ void cImageCache::CreateChannelGroupCache(void) {
|
||||
}
|
||||
|
||||
void cImageCache::CreateLogoCache(void) {
|
||||
if (tvguideConfig.hideChannelLogos)
|
||||
if (config.hideChannelLogos)
|
||||
return;
|
||||
if (tvguideConfig.numLogosInitial > 0) {
|
||||
if (config.numLogosInitial > 0) {
|
||||
int channelsCached = 0;
|
||||
#if VDRVERSNUM >= 20301
|
||||
LOCK_CHANNELS_READ;
|
||||
@@ -286,7 +286,7 @@ void cImageCache::CreateLogoCache(void) {
|
||||
#else
|
||||
for (const cChannel *channel = Channels.First(); channel; channel = Channels.Next(channel)) {
|
||||
#endif
|
||||
if (channelsCached >= tvguideConfig.numLogosInitial)
|
||||
if (channelsCached >= config.numLogosInitial)
|
||||
break;
|
||||
if (!channel->GroupSep()) {
|
||||
bool success = LoadLogo(channel);
|
||||
@@ -351,7 +351,7 @@ cImage *cImageCache::GetLogo(const cChannel *channel) {
|
||||
} else {
|
||||
bool success = LoadLogo(channel);
|
||||
if (success) {
|
||||
if ((tvguideConfig.limitLogoCache) && ((int)logoCache.size() >= tvguideConfig.numLogosMax)) {
|
||||
if ((config.limitLogoCache) && ((int)logoCache.size() >= config.numLogosMax)) {
|
||||
//logo cache is full, don't cache anymore
|
||||
if (tempStaticLogo) {
|
||||
delete tempStaticLogo;
|
||||
@@ -403,7 +403,7 @@ void cImageCache::InsertIntoOsdElementCache(eOsdElementType type, int width, int
|
||||
void cImageCache::InsertIntoGridCache(std::string name, int width, int height, bool active) {
|
||||
cImage *image = CreateGrid(width, height, active);
|
||||
if (image) {
|
||||
if (tvguideConfig.displayMode == eHorizontal) {
|
||||
if (config.displayMode == eHorizontal) {
|
||||
AddCornersHorizontal(image, active);
|
||||
} else {
|
||||
AddCornersVertical(image, active);
|
||||
@@ -553,25 +553,25 @@ void cImageCache::AddCornersGroupVertical(cImage *img) {
|
||||
|
||||
bool cImageCache::LoadIcon(std::string name) {
|
||||
bool success = false;
|
||||
if (tvguideConfig.iconsPathSet) {
|
||||
cString iconPathTheme = cString::sprintf("%s%s/", *tvguideConfig.iconPath, *tvguideConfig.themeName);
|
||||
if (config.iconsPathSet) {
|
||||
cString iconPathTheme = cString::sprintf("%s%s/", *config.iconPath, *config.themeName);
|
||||
success = LoadImage(name, *iconPathTheme, "png");
|
||||
if (success) {
|
||||
return true;
|
||||
} else {
|
||||
success = LoadImage(name, *tvguideConfig.iconPath, "png");
|
||||
success = LoadImage(name, *config.iconPath, "png");
|
||||
if (success) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!success) {
|
||||
cString iconPathTheme = cString::sprintf("%s%s/", *tvguideConfig.iconPathDefault, *tvguideConfig.themeName);
|
||||
cString iconPathTheme = cString::sprintf("%s%s/", *config.iconPathDefault, *config.themeName);
|
||||
success = LoadImage(name, *iconPathTheme, "png");
|
||||
if (success) {
|
||||
return true;
|
||||
} else {
|
||||
success = LoadImage(name, *tvguideConfig.iconPathDefault, "png");
|
||||
success = LoadImage(name, *config.iconPathDefault, "png");
|
||||
if (success) {
|
||||
return true;
|
||||
}
|
||||
@@ -587,24 +587,24 @@ bool cImageCache::LoadLogo(const cChannel *channel) {
|
||||
std::string logoLower = StrToLowerCase(channel->Name());
|
||||
bool success = false;
|
||||
cString extension;
|
||||
if (tvguideConfig.logoExtension == 0) {
|
||||
if (config.logoExtension == 0) {
|
||||
extension = "png";
|
||||
} else if (tvguideConfig.logoExtension == 1) {
|
||||
} else if (config.logoExtension == 1) {
|
||||
extension = "jpg";
|
||||
}
|
||||
|
||||
if (tvguideConfig.logoPathSet) {
|
||||
success = LoadImage(channelID.c_str(), *tvguideConfig.logoPath, *extension);
|
||||
if (config.logoPathSet) {
|
||||
success = LoadImage(channelID.c_str(), *config.logoPath, *extension);
|
||||
if (success)
|
||||
return true;
|
||||
success = LoadImage(logoLower.c_str(), *tvguideConfig.logoPath, *extension);
|
||||
success = LoadImage(logoLower.c_str(), *config.logoPath, *extension);
|
||||
if (success)
|
||||
return true;
|
||||
}
|
||||
success = LoadImage(channelID.c_str(), *tvguideConfig.logoPathDefault, *extension);
|
||||
success = LoadImage(channelID.c_str(), *config.logoPathDefault, *extension);
|
||||
if (success)
|
||||
return true;
|
||||
success = LoadImage(logoLower.c_str(), *tvguideConfig.logoPathDefault, *extension);
|
||||
success = LoadImage(logoLower.c_str(), *config.logoPathDefault, *extension);
|
||||
return success;
|
||||
}
|
||||
|
||||
|
@@ -11,7 +11,6 @@
|
||||
using namespace Magick;
|
||||
|
||||
cImageLoader::cImageLoader() {
|
||||
InitializeMagick(NULL);
|
||||
}
|
||||
|
||||
cImageLoader::~cImageLoader() {
|
||||
@@ -23,22 +22,22 @@ bool cImageLoader::LoadLogo(const cChannel *channel, int width, int height) {
|
||||
std::string channelID = StrToLowerCase(*(channel->GetChannelID().ToString()));
|
||||
std::string logoLower = StrToLowerCase(channel->Name());
|
||||
cString extension;
|
||||
if (tvguideConfig.logoExtension == 0) {
|
||||
if (config.logoExtension == 0) {
|
||||
extension = "png";
|
||||
} else if (tvguideConfig.logoExtension == 1) {
|
||||
} else if (config.logoExtension == 1) {
|
||||
extension = "jpg";
|
||||
}
|
||||
bool success = false;
|
||||
if (tvguideConfig.logoPathSet) {
|
||||
success = LoadImage(channelID.c_str(), *tvguideConfig.logoPath, *extension);
|
||||
if (config.logoPathSet) {
|
||||
success = LoadImage(channelID.c_str(), *config.logoPath, *extension);
|
||||
if (!success) {
|
||||
success = LoadImage(logoLower.c_str(), *tvguideConfig.logoPath, *extension);
|
||||
success = LoadImage(logoLower.c_str(), *config.logoPath, *extension);
|
||||
}
|
||||
}
|
||||
if (!success)
|
||||
success = LoadImage(channelID.c_str(), *tvguideConfig.logoPathDefault, *extension);
|
||||
success = LoadImage(channelID.c_str(), *config.logoPathDefault, *extension);
|
||||
if (!success)
|
||||
success = LoadImage(logoLower.c_str(), *tvguideConfig.logoPathDefault, *extension);
|
||||
success = LoadImage(logoLower.c_str(), *config.logoPathDefault, *extension);
|
||||
if (success)
|
||||
buffer.sample(Geometry(width, height));
|
||||
return success;
|
||||
@@ -48,9 +47,9 @@ bool cImageLoader::LoadEPGImage(int eventID, int width, int height) {
|
||||
if ((width == 0)||(height==0))
|
||||
return false;
|
||||
bool success = false;
|
||||
success = LoadImage(*cString::sprintf("%d", eventID), *tvguideConfig.epgImagePath, "jpg");
|
||||
success = LoadImage(*cString::sprintf("%d", eventID), *config.epgImagePath, "jpg");
|
||||
if (!success)
|
||||
success = LoadImage(*cString::sprintf("%d_0", eventID), *tvguideConfig.epgImagePath, "jpg");
|
||||
success = LoadImage(*cString::sprintf("%d_0", eventID), *config.epgImagePath, "jpg");
|
||||
if (!success)
|
||||
return false;
|
||||
buffer.sample( Geometry(width, height));
|
||||
@@ -58,12 +57,12 @@ bool cImageLoader::LoadEPGImage(int eventID, int width, int height) {
|
||||
}
|
||||
|
||||
bool cImageLoader::LoadAdditionalEPGImage(cString name) {
|
||||
int width = tvguideConfig.epgImageWidthLarge;
|
||||
int height = tvguideConfig.epgImageHeightLarge;
|
||||
int width = config.epgImageWidthLarge;
|
||||
int height = config.epgImageHeightLarge;
|
||||
if ((width == 0)||(height==0))
|
||||
return false;
|
||||
bool success = false;
|
||||
success = LoadImage(*name, *tvguideConfig.epgImagePath, "jpg");
|
||||
success = LoadImage(*name, *config.epgImagePath, "jpg");
|
||||
if (!success)
|
||||
return false;
|
||||
if (height != 0 || width != 0) {
|
||||
@@ -84,19 +83,19 @@ bool cImageLoader::LoadIcon(const char *cIcon, int size) {
|
||||
if (size==0)
|
||||
return false;
|
||||
bool success = false;
|
||||
if (tvguideConfig.iconsPathSet) {
|
||||
cString iconPathTheme = cString::sprintf("%s%s/recmenuicons/", *tvguideConfig.iconPath, *tvguideConfig.themeName);
|
||||
if (config.iconsPathSet) {
|
||||
cString iconPathTheme = cString::sprintf("%s%s/recmenuicons/", *config.iconPath, *config.themeName);
|
||||
success = LoadImage(cIcon, *iconPathTheme, "png");
|
||||
if (!success) {
|
||||
cString iconPath = cString::sprintf("%srecmenuicons/", *tvguideConfig.iconPath);
|
||||
cString iconPath = cString::sprintf("%srecmenuicons/", *config.iconPath);
|
||||
success = LoadImage(cIcon, *iconPath, "png");
|
||||
}
|
||||
}
|
||||
if (!success) {
|
||||
cString iconPathTheme = cString::sprintf("%s%s/recmenuicons/", *tvguideConfig.iconPathDefault, *tvguideConfig.themeName);
|
||||
cString iconPathTheme = cString::sprintf("%s%s/recmenuicons/", *config.iconPathDefault, *config.themeName);
|
||||
success = LoadImage(cIcon, *iconPathTheme, "png");
|
||||
if (!success) {
|
||||
cString iconPath = cString::sprintf("%srecmenuicons/", *tvguideConfig.iconPathDefault);
|
||||
cString iconPath = cString::sprintf("%srecmenuicons/", *config.iconPathDefault);
|
||||
success = LoadImage(cIcon, *iconPath, "png");
|
||||
}
|
||||
}
|
||||
@@ -110,20 +109,20 @@ bool cImageLoader::LoadOsdElement(cString name, int width, int height) {
|
||||
if ((width == 0)||(height==0))
|
||||
return false;
|
||||
bool success = false;
|
||||
if (tvguideConfig.iconsPathSet) {
|
||||
cString path = cString::sprintf("%s%s%s", *tvguideConfig.iconPath, *tvguideConfig.themeName, "/osdElements/");
|
||||
if (config.iconsPathSet) {
|
||||
cString path = cString::sprintf("%s%s%s", *config.iconPath, *config.themeName, "/osdElements/");
|
||||
success = LoadImage(*name, *path, "png");
|
||||
if (!success) {
|
||||
path = cString::sprintf("%s%s", *tvguideConfig.iconPath, "/osdElements/");
|
||||
path = cString::sprintf("%s%s", *config.iconPath, "/osdElements/");
|
||||
success = LoadImage(*name, *path, "png");
|
||||
}
|
||||
}
|
||||
if (!success) {
|
||||
cString path = cString::sprintf("%s%s%s", *tvguideConfig.iconPathDefault, *tvguideConfig.themeName, "/osdElements/");
|
||||
cString path = cString::sprintf("%s%s%s", *config.iconPathDefault, *config.themeName, "/osdElements/");
|
||||
success = LoadImage(*name, *path, "png");
|
||||
}
|
||||
if (!success) {
|
||||
cString path = cString::sprintf("%s%s", *tvguideConfig.iconPathDefault, "/osdElements/");
|
||||
cString path = cString::sprintf("%s%s", *config.iconPathDefault, "/osdElements/");
|
||||
success = LoadImage(*name, *path, "png");
|
||||
}
|
||||
if (!success)
|
||||
|
@@ -5,7 +5,6 @@
|
||||
#include "imagescaler.h"
|
||||
|
||||
cImageMagickWrapper::cImageMagickWrapper() {
|
||||
InitializeMagick(NULL);
|
||||
}
|
||||
|
||||
cImageMagickWrapper::~cImageMagickWrapper() {
|
||||
@@ -77,21 +76,21 @@ bool cImageMagickWrapper::LoadImage(std::string FileName, std::string Path, std:
|
||||
std::stringstream sstrImgFile;
|
||||
sstrImgFile << Path << FileName << "." << Extension;
|
||||
std::string imgFile = sstrImgFile.str();
|
||||
if (tvguideConfig.debugImageLoading)
|
||||
if (config.debugImageLoading)
|
||||
esyslog("tvguide: trying to load: %s", imgFile.c_str());
|
||||
buffer.read(imgFile.c_str());
|
||||
if (tvguideConfig.debugImageLoading)
|
||||
if (config.debugImageLoading)
|
||||
esyslog("tvguide: %s sucessfully loaded", imgFile.c_str());
|
||||
} catch( Magick::Warning &warning ) {
|
||||
if (tvguideConfig.debugImageLoading)
|
||||
if (config.debugImageLoading)
|
||||
esyslog("tvguide: Magick Warning: %s", warning.what());
|
||||
return true;
|
||||
} catch( Magick::Error &error ) {
|
||||
if (tvguideConfig.debugImageLoading)
|
||||
if (config.debugImageLoading)
|
||||
esyslog("tvguide: Magick Error: %s", error.what());
|
||||
return false;
|
||||
} catch(...) {
|
||||
if (tvguideConfig.debugImageLoading)
|
||||
if (config.debugImageLoading)
|
||||
esyslog("tvguide: an unknown Magick error occured during image loading");
|
||||
return false;
|
||||
}
|
||||
@@ -102,21 +101,21 @@ bool cImageMagickWrapper::LoadImage(const char *fullpath) {
|
||||
if ((fullpath == NULL) || (strlen(fullpath) < 5))
|
||||
return false;
|
||||
try {
|
||||
if (tvguideConfig.debugImageLoading)
|
||||
if (config.debugImageLoading)
|
||||
esyslog("tvguide: trying to load: %s", fullpath);
|
||||
buffer.read(fullpath);
|
||||
if (tvguideConfig.debugImageLoading)
|
||||
if (config.debugImageLoading)
|
||||
esyslog("tvguide: %s sucessfully loaded", fullpath);
|
||||
} catch( Magick::Warning &warning ) {
|
||||
if (tvguideConfig.debugImageLoading)
|
||||
if (config.debugImageLoading)
|
||||
esyslog("tvguide: Magick Warning: %s", warning.what());
|
||||
return true;
|
||||
} catch( Magick::Error &error ) {
|
||||
if (tvguideConfig.debugImageLoading)
|
||||
if (config.debugImageLoading)
|
||||
esyslog("tvguide: Magick Error: %s", error.what());
|
||||
return false;
|
||||
} catch(...) {
|
||||
if (tvguideConfig.debugImageLoading)
|
||||
if (config.debugImageLoading)
|
||||
esyslog("tvguide: an unknown Magick error occured during image loading");
|
||||
return false;
|
||||
}
|
||||
|
@@ -7,7 +7,7 @@ cOsdManager::cOsdManager(void) {
|
||||
bool cOsdManager::setOsd() {
|
||||
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;
|
||||
}
|
||||
@@ -17,7 +17,7 @@ bool cOsdManager::setOsd() {
|
||||
|
||||
void cOsdManager::setBackground() {
|
||||
|
||||
if (tvguideConfig.displayStatusHeader && tvguideConfig.scaleVideo) {
|
||||
if (config.displayStatusHeader && config.scaleVideo) {
|
||||
int widthStatus = cOsd::OsdWidth() - geoManager.statusHeaderHeight * 16 / 9;
|
||||
osd->DrawRectangle(0, 0, widthStatus, geoManager.statusHeaderHeight, theme.Color(clrBackgroundOSD));
|
||||
osd->DrawRectangle(0, geoManager.statusHeaderHeight, Width(), Height(), theme.Color(clrBackgroundOSD));
|
||||
|
53
po/ca_ES.po
53
po/ca_ES.po
@@ -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: 2019-04-22 14:34+0200\n"
|
||||
"POT-Creation-Date: 2020-08-04 14:15+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 ""
|
||||
@@ -57,6 +57,9 @@ msgstr ""
|
||||
msgid "images"
|
||||
msgstr ""
|
||||
|
||||
msgid "tvguide: RemoteTimerModifications failed"
|
||||
msgstr ""
|
||||
|
||||
msgid "root video folder"
|
||||
msgstr "Directori principal per a vídeo"
|
||||
|
||||
@@ -99,21 +102,18 @@ msgstr ""
|
||||
msgid "recordings done"
|
||||
msgstr ""
|
||||
|
||||
msgid "What's on now"
|
||||
msgstr ""
|
||||
|
||||
msgid "What's on next"
|
||||
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 ""
|
||||
|
||||
@@ -144,6 +144,9 @@ msgstr "Cerca a les gravacions"
|
||||
msgid "Set Folder for"
|
||||
msgstr "Programa carpeta per"
|
||||
|
||||
msgid "Timer changed"
|
||||
msgstr ""
|
||||
|
||||
msgid "Timer created"
|
||||
msgstr "Temporitzador creat"
|
||||
|
||||
@@ -567,6 +570,12 @@ msgstr "No s'han trobat gravacions per"
|
||||
msgid "No Favorites available"
|
||||
msgstr ""
|
||||
|
||||
msgid "What's on now"
|
||||
msgstr ""
|
||||
|
||||
msgid "What's on next"
|
||||
msgstr ""
|
||||
|
||||
msgid "whole term must appear"
|
||||
msgstr "expressió completa"
|
||||
|
||||
@@ -675,6 +684,9 @@ msgstr "si existeix"
|
||||
msgid "always"
|
||||
msgstr "sempre"
|
||||
|
||||
msgid "Use workaround for HWAccelerated OSD"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show Main Menu Entry"
|
||||
msgstr "Mostra entrada del menú principal"
|
||||
|
||||
@@ -751,7 +763,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 ""
|
||||
@@ -882,15 +894,30 @@ msgstr ""
|
||||
msgid "Use fixed folder"
|
||||
msgstr ""
|
||||
|
||||
msgid "Folder for instant Recordings"
|
||||
msgid "smart"
|
||||
msgstr ""
|
||||
|
||||
msgid "Instant recording:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Folder for instant Recordings"
|
||||
msgstr "Utilitza carpetes per gravacions a l'instant"
|
||||
|
||||
msgid "Folder"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add episode to manual timers"
|
||||
msgstr ""
|
||||
|
||||
msgid "Use Remotetimers"
|
||||
msgstr "Utilitza temporitzadors remots"
|
||||
|
||||
msgid "Show timer confirmation messages"
|
||||
msgstr ""
|
||||
|
||||
msgid "Favorites:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Limit channels in favorites"
|
||||
msgstr ""
|
||||
|
||||
@@ -976,7 +1003,7 @@ msgid "EPG Info"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reruns"
|
||||
msgstr ""
|
||||
msgstr "Reemissions"
|
||||
|
||||
msgid "Recording Information"
|
||||
msgstr ""
|
||||
|
47
po/de_DE.po
47
po/de_DE.po
@@ -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: 2019-04-22 14:34+0200\n"
|
||||
"POT-Creation-Date: 2020-08-04 14:15+0200\n"
|
||||
"PO-Revision-Date: 2012-08-25 17:49+0200\n"
|
||||
"Last-Translator: Horst\n"
|
||||
"Language-Team: \n"
|
||||
@@ -54,6 +54,9 @@ msgstr "Favoriten"
|
||||
msgid "images"
|
||||
msgstr "Bilder"
|
||||
|
||||
msgid "tvguide: RemoteTimerModifications failed"
|
||||
msgstr ""
|
||||
|
||||
msgid "root video folder"
|
||||
msgstr "Video Hauptverzeichnis"
|
||||
|
||||
@@ -96,21 +99,18 @@ msgstr "aktive Timer"
|
||||
msgid "recordings done"
|
||||
msgstr "erledigte Aufnahmen"
|
||||
|
||||
msgid "What's on now"
|
||||
msgstr "Was läuft jetzt?"
|
||||
|
||||
msgid "What's on next"
|
||||
msgstr "Was läuft als nächstes?"
|
||||
|
||||
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"
|
||||
|
||||
@@ -141,6 +141,9 @@ msgstr "In Aufnahmen suchen"
|
||||
msgid "Set Folder for"
|
||||
msgstr "Verzeichnis festlegen für"
|
||||
|
||||
msgid "Timer changed"
|
||||
msgstr "Timer geändert"
|
||||
|
||||
msgid "Timer created"
|
||||
msgstr "Timer angelegt"
|
||||
|
||||
@@ -564,6 +567,12 @@ msgstr "Keine Aufnahmen gefunden für"
|
||||
msgid "No Favorites available"
|
||||
msgstr "Keine Favoriten verfügbar"
|
||||
|
||||
msgid "What's on now"
|
||||
msgstr "Was läuft jetzt?"
|
||||
|
||||
msgid "What's on next"
|
||||
msgstr "Was läuft als nächstes?"
|
||||
|
||||
msgid "whole term must appear"
|
||||
msgstr "vollständiger Ausdruck"
|
||||
|
||||
@@ -672,6 +681,9 @@ msgstr "falls vorhanden"
|
||||
msgid "always"
|
||||
msgstr "immer"
|
||||
|
||||
msgid "Use workaround for HWAccelerated OSD"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show Main Menu Entry"
|
||||
msgstr "Hauptmenüeintrag anzeigen"
|
||||
|
||||
@@ -879,15 +891,30 @@ msgstr "Verzeichnis aus Liste auswählen"
|
||||
msgid "Use fixed folder"
|
||||
msgstr "Festes Verzeichnis benutzen"
|
||||
|
||||
msgid "smart"
|
||||
msgstr "intelligent"
|
||||
|
||||
msgid "Instant recording:"
|
||||
msgstr "Sofortaufnahmen:"
|
||||
|
||||
msgid "Folder for instant Recordings"
|
||||
msgstr "Verzeichnis für Sofortaufnahmen"
|
||||
|
||||
msgid "Folder"
|
||||
msgstr "Verzeichnis"
|
||||
|
||||
msgid "Add episode to manual timers"
|
||||
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:"
|
||||
|
||||
msgid "Limit channels in favorites"
|
||||
msgstr "Kanäle in Favoriten beschränken"
|
||||
|
||||
@@ -976,7 +1003,7 @@ msgid "Reruns"
|
||||
msgstr "Wiederholungen"
|
||||
|
||||
msgid "Recording Information"
|
||||
msgstr ""
|
||||
msgstr "Aufnahme Information"
|
||||
|
||||
msgid "Image Galery"
|
||||
msgstr "Bildergalerie"
|
||||
|
45
po/it_IT.po
45
po/it_IT.po
@@ -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: 2019-04-22 14:34+0200\n"
|
||||
"POT-Creation-Date: 2020-08-04 14:15+0200\n"
|
||||
"PO-Revision-Date: 2012-08-25 17:49+0200\n"
|
||||
"Last-Translator: fiveten_59\n"
|
||||
"Language-Team: \n"
|
||||
@@ -54,6 +54,9 @@ msgstr "Favoriti"
|
||||
msgid "images"
|
||||
msgstr "Immagini"
|
||||
|
||||
msgid "tvguide: RemoteTimerModifications failed"
|
||||
msgstr ""
|
||||
|
||||
msgid "root video folder"
|
||||
msgstr "cartella video di root"
|
||||
|
||||
@@ -96,21 +99,18 @@ msgstr "Timers attivi"
|
||||
msgid "recordings done"
|
||||
msgstr "registrazione eseguita"
|
||||
|
||||
msgid "What's on now"
|
||||
msgstr "Was läuft jetzt?"
|
||||
|
||||
msgid "What's on next"
|
||||
msgstr "Was läuft als nächstes?"
|
||||
|
||||
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"
|
||||
|
||||
@@ -141,6 +141,9 @@ msgstr "Cerca nelle registrazioni"
|
||||
msgid "Set Folder for"
|
||||
msgstr "Crea cartella per"
|
||||
|
||||
msgid "Timer changed"
|
||||
msgstr ""
|
||||
|
||||
msgid "Timer created"
|
||||
msgstr "Timer creato"
|
||||
|
||||
@@ -564,6 +567,12 @@ msgstr "Nessuna registrazione trovata per"
|
||||
msgid "No Favorites available"
|
||||
msgstr "Nessun Favoriti disponibile"
|
||||
|
||||
msgid "What's on now"
|
||||
msgstr "Was läuft jetzt?"
|
||||
|
||||
msgid "What's on next"
|
||||
msgstr "Was läuft als nächstes?"
|
||||
|
||||
msgid "whole term must appear"
|
||||
msgstr "vollständiger Ausdruck"
|
||||
|
||||
@@ -672,6 +681,9 @@ msgstr "se esiste"
|
||||
msgid "always"
|
||||
msgstr "sempre"
|
||||
|
||||
msgid "Use workaround for HWAccelerated OSD"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show Main Menu Entry"
|
||||
msgstr "Hauptmenüeintrag anzeigen"
|
||||
|
||||
@@ -879,15 +891,30 @@ msgstr "Scegli dall'elenco cartelle"
|
||||
msgid "Use fixed folder"
|
||||
msgstr "Usa cartella fissa"
|
||||
|
||||
msgid "smart"
|
||||
msgstr "intelligente"
|
||||
|
||||
msgid "Instant recording:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Folder for instant Recordings"
|
||||
msgstr "Cartella per la registrazione immediata"
|
||||
|
||||
msgid "Folder"
|
||||
msgstr "Cartella"
|
||||
|
||||
msgid "Add episode to manual timers"
|
||||
msgstr "Aggiungi episodi ai timer manuali"
|
||||
|
||||
msgid "Use Remotetimers"
|
||||
msgstr "Usa Remotetimers"
|
||||
|
||||
msgid "Show timer confirmation messages"
|
||||
msgstr ""
|
||||
|
||||
msgid "Favorites:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Limit channels in favorites"
|
||||
msgstr "Limite dei canali nei favoriti"
|
||||
|
||||
|
55
po/ru_RU.po
55
po/ru_RU.po
@@ -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: 2019-04-22 14:34+0200\n"
|
||||
"POT-Creation-Date: 2020-08-04 14:15+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 ""
|
||||
@@ -54,6 +54,9 @@ msgstr ""
|
||||
msgid "images"
|
||||
msgstr ""
|
||||
|
||||
msgid "tvguide: RemoteTimerModifications failed"
|
||||
msgstr ""
|
||||
|
||||
msgid "root video folder"
|
||||
msgstr "Главная видео директория"
|
||||
|
||||
@@ -96,21 +99,18 @@ msgstr ""
|
||||
msgid "recordings done"
|
||||
msgstr ""
|
||||
|
||||
msgid "What's on now"
|
||||
msgstr ""
|
||||
|
||||
msgid "What's on next"
|
||||
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 ""
|
||||
|
||||
@@ -141,6 +141,9 @@ msgstr "Искать в записях"
|
||||
msgid "Set Folder for"
|
||||
msgstr "Укажите каталог для"
|
||||
|
||||
msgid "Timer changed"
|
||||
msgstr ""
|
||||
|
||||
msgid "Timer created"
|
||||
msgstr "Таймер создан"
|
||||
|
||||
@@ -295,7 +298,7 @@ msgid "No Search Timers Configured"
|
||||
msgstr ""
|
||||
|
||||
msgid "Configure Search Timer Options"
|
||||
msgstr ""
|
||||
msgstr "Настроить параметры таймера"
|
||||
|
||||
msgid "Save Search Timer"
|
||||
msgstr ""
|
||||
@@ -564,6 +567,12 @@ msgstr "Не найдено записей:"
|
||||
msgid "No Favorites available"
|
||||
msgstr ""
|
||||
|
||||
msgid "What's on now"
|
||||
msgstr ""
|
||||
|
||||
msgid "What's on next"
|
||||
msgstr ""
|
||||
|
||||
msgid "whole term must appear"
|
||||
msgstr "фраза"
|
||||
|
||||
@@ -672,6 +681,9 @@ msgstr "если существует"
|
||||
msgid "always"
|
||||
msgstr "всегда"
|
||||
|
||||
msgid "Use workaround for HWAccelerated OSD"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show Main Menu Entry"
|
||||
msgstr "Показывать пункт в главном меню"
|
||||
|
||||
@@ -748,7 +760,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 ""
|
||||
@@ -879,15 +891,30 @@ msgstr ""
|
||||
msgid "Use fixed folder"
|
||||
msgstr ""
|
||||
|
||||
msgid "Folder for instant Recordings"
|
||||
msgid "smart"
|
||||
msgstr ""
|
||||
|
||||
msgid "Instant recording:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Folder for instant Recordings"
|
||||
msgstr "Использовать директории для быстрой записи"
|
||||
|
||||
msgid "Folder"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add episode to manual timers"
|
||||
msgstr ""
|
||||
|
||||
msgid "Use Remotetimers"
|
||||
msgstr "RemoteTimers benutzen"
|
||||
|
||||
msgid "Show timer confirmation messages"
|
||||
msgstr ""
|
||||
|
||||
msgid "Favorites:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Limit channels in favorites"
|
||||
msgstr ""
|
||||
|
||||
@@ -973,7 +1000,7 @@ msgid "EPG Info"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reruns"
|
||||
msgstr ""
|
||||
msgstr "ПОВТОРЫ"
|
||||
|
||||
msgid "Recording Information"
|
||||
msgstr ""
|
||||
|
53
po/sk_SK.po
53
po/sk_SK.po
@@ -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: 2019-04-22 14:34+0200\n"
|
||||
"POT-Creation-Date: 2020-08-04 14:15+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<EFBFBD>za tohto "
|
||||
|
||||
msgid "No reruns found"
|
||||
msgstr ""
|
||||
@@ -54,6 +54,9 @@ msgstr ""
|
||||
msgid "images"
|
||||
msgstr ""
|
||||
|
||||
msgid "tvguide: RemoteTimerModifications failed"
|
||||
msgstr ""
|
||||
|
||||
msgid "root video folder"
|
||||
msgstr "Hlavn<76> video adres<65>r"
|
||||
|
||||
@@ -96,21 +99,18 @@ msgstr ""
|
||||
msgid "recordings done"
|
||||
msgstr ""
|
||||
|
||||
msgid "What's on now"
|
||||
msgstr ""
|
||||
|
||||
msgid "What's on next"
|
||||
msgstr ""
|
||||
|
||||
msgid "Instant Record"
|
||||
msgstr "Okam<61>ite nahra<72>"
|
||||
|
||||
msgid "Delete Timer"
|
||||
msgstr "Vymaza<EFBFBD> pl<70>n nahr<68>vania"
|
||||
msgid "Timer On/Off"
|
||||
msgstr "Zap./Vyp. pl<70>n nahr<68>vania"
|
||||
|
||||
msgid "Edit Timer"
|
||||
msgstr "Upravi<76> pl<70>n nahr<68>vania"
|
||||
|
||||
msgid "Delete Timer"
|
||||
msgstr "Vymaza<7A> pl<70>n nahr<68>vania"
|
||||
|
||||
msgid "Timer Timeline"
|
||||
msgstr ""
|
||||
|
||||
@@ -141,6 +141,9 @@ msgstr "Vyh
|
||||
msgid "Set Folder for"
|
||||
msgstr "Nastavi<76> adres<65>r pre"
|
||||
|
||||
msgid "Timer changed"
|
||||
msgstr ""
|
||||
|
||||
msgid "Timer created"
|
||||
msgstr "Pl<50>n vytvoren<65>"
|
||||
|
||||
@@ -564,6 +567,12 @@ msgstr "Nena
|
||||
msgid "No Favorites available"
|
||||
msgstr ""
|
||||
|
||||
msgid "What's on now"
|
||||
msgstr ""
|
||||
|
||||
msgid "What's on next"
|
||||
msgstr ""
|
||||
|
||||
msgid "whole term must appear"
|
||||
msgstr "kompletn<74> v<>raz"
|
||||
|
||||
@@ -672,6 +681,9 @@ msgstr "ak s
|
||||
msgid "always"
|
||||
msgstr "v<>dy"
|
||||
|
||||
msgid "Use workaround for HWAccelerated OSD"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show Main Menu Entry"
|
||||
msgstr "Zobrazi<7A> v hlavnom menu"
|
||||
|
||||
@@ -748,7 +760,7 @@ msgid "Display time in EPG Grids"
|
||||
msgstr "Zobrazi<7A> <20>as v EPG mrie<69>ke"
|
||||
|
||||
msgid "Height of Headers (Status Header and EPG View, Perc. of osd height)"
|
||||
msgstr ""
|
||||
msgstr "V<EFBFBD><EFBFBD>ka stavovej hlavi<76>ky (% z OSD v<><76>ky)"
|
||||
|
||||
msgid "Height of Footer (Perc. of osd height)"
|
||||
msgstr ""
|
||||
@@ -879,15 +891,30 @@ msgstr ""
|
||||
msgid "Use fixed folder"
|
||||
msgstr ""
|
||||
|
||||
msgid "Folder for instant Recordings"
|
||||
msgid "smart"
|
||||
msgstr "chytr<74>"
|
||||
|
||||
msgid "Instant recording:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Folder for instant Recordings"
|
||||
msgstr "Pou<6F>i<EFBFBD> adres<65>re pre okam<61>it<69> nahr<68>vky"
|
||||
|
||||
msgid "Folder"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add episode to manual timers"
|
||||
msgstr "Prida<64> epiz<69>dy do ru<72>n<EFBFBD>ho <20>asova<76>a"
|
||||
|
||||
msgid "Use Remotetimers"
|
||||
msgstr "Pou<6F>i<EFBFBD> vzdialen<65> pl<70>nova<76>"
|
||||
|
||||
msgid "Show timer confirmation messages"
|
||||
msgstr ""
|
||||
|
||||
msgid "Favorites:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Limit channels in favorites"
|
||||
msgstr ""
|
||||
|
||||
@@ -973,7 +1000,7 @@ msgid "EPG Info"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reruns"
|
||||
msgstr ""
|
||||
msgstr "Repr<EFBFBD>za"
|
||||
|
||||
msgid "Recording Information"
|
||||
msgstr ""
|
||||
|
237
recmanager.c
237
recmanager.c
@@ -44,7 +44,7 @@ bool cRecManager::RefreshRemoteTimers(void) {
|
||||
bool cRecManager::CheckEventForTimer(const cEvent *event) {
|
||||
bool hasTimer = false;
|
||||
|
||||
if (tvguideConfig.useRemoteTimers && pRemoteTimers) {
|
||||
if (config.useRemoteTimers && pRemoteTimers) {
|
||||
RemoteTimers_GetMatch_v1_0 rtMatch;
|
||||
rtMatch.event = event;
|
||||
pRemoteTimers->Service("RemoteTimers::GetMatch-v1.0", &rtMatch);
|
||||
@@ -66,7 +66,7 @@ bool cRecManager::CheckEventForTimer(const cEvent *event) {
|
||||
|
||||
const cTimer *cRecManager::GetTimerForEvent(const cEvent *event) {
|
||||
const cTimer *timer = NULL;
|
||||
if (tvguideConfig.useRemoteTimers && pRemoteTimers) {
|
||||
if (config.useRemoteTimers && pRemoteTimers) {
|
||||
RemoteTimers_GetMatch_v1_0 rtMatch;
|
||||
rtMatch.event = event;
|
||||
pRemoteTimers->Service("RemoteTimers::GetMatch-v1.0", &rtMatch);
|
||||
@@ -85,7 +85,7 @@ const cTimer *cRecManager::GetTimerForEvent(const cEvent *event) {
|
||||
|
||||
cTimer *cRecManager::createTimer(const cEvent *event, std::string path) {
|
||||
cTimer *timer = NULL;
|
||||
if (tvguideConfig.useRemoteTimers && pRemoteTimers) {
|
||||
if (config.useRemoteTimers && pRemoteTimers) {
|
||||
timer = createRemoteTimer(event, path);
|
||||
} else {
|
||||
timer = createLocalTimer(event, path);
|
||||
@@ -96,13 +96,15 @@ cTimer *cRecManager::createTimer(const cEvent *event, std::string path) {
|
||||
cTimer *cRecManager::createLocalTimer(const cEvent *event, std::string path) {
|
||||
cTimer *timer = new cTimer(event);
|
||||
#if VDRVERSNUM >= 20301
|
||||
if (Setup.SVDRPPeering && *Setup.SVDRPDefaultHost)
|
||||
((cTimer*)timer)->SetRemote(Setup.SVDRPDefaultHost);
|
||||
LOCK_TIMERS_WRITE;
|
||||
cTimer *t = Timers->GetTimer(timer);
|
||||
cTimers* timers = Timers;
|
||||
timers->SetExplicitModify();
|
||||
if (Setup.SVDRPPeering && *Setup.SVDRPDefaultHost)
|
||||
timer->SetRemote(Setup.SVDRPDefaultHost);
|
||||
#else
|
||||
cTimer *t = Timers.GetTimer(timer);
|
||||
cTimers* timers = &Timers;
|
||||
#endif
|
||||
cTimer *t = timers->GetTimer(timer);
|
||||
if (t) {
|
||||
t->OnOff();
|
||||
#if VDRVERSNUM >= 20301
|
||||
@@ -114,20 +116,21 @@ cTimer *cRecManager::createLocalTimer(const cEvent *event, std::string path) {
|
||||
timer = t;
|
||||
isyslog("timer %s reactivated", *t->ToDescr());
|
||||
} else {
|
||||
SetTimerPath(timer, event, path);
|
||||
timers->Add(timer);
|
||||
timers->SetModified();
|
||||
#if VDRVERSNUM >= 20301
|
||||
Timers->Add(timer);
|
||||
if (!HandleRemoteTimerModifications(timer)) {
|
||||
timers->Del(timer);
|
||||
esyslog(tr("tvguide: RemoteTimerModifications failed"));
|
||||
} else {
|
||||
isyslog("timer %s added (active)", *timer->ToDescr());
|
||||
}
|
||||
#else
|
||||
Timers.Add(timer);
|
||||
#endif
|
||||
isyslog("timer %s added (active)", *timer->ToDescr());
|
||||
}
|
||||
SetTimerPath(timer, event, path);
|
||||
#if VDRVERSNUM >= 20301
|
||||
Timers->SetModified();
|
||||
#else
|
||||
Timers.SetModified();
|
||||
#endif
|
||||
return timer;
|
||||
}
|
||||
return timers->GetTimer(timer);
|
||||
}
|
||||
|
||||
cTimer *cRecManager::createRemoteTimer(const cEvent *event, std::string path) {
|
||||
@@ -150,9 +153,9 @@ cTimer *cRecManager::createRemoteTimer(const cEvent *event, std::string path) {
|
||||
}
|
||||
|
||||
void cRecManager::SetTimerPath(cTimer *timer, const cEvent *event, std::string path) {
|
||||
if (tvguideConfig.instRecFolderMode == eFolderFixed) {
|
||||
if (config.instRecFolderMode == eFolderFixed) {
|
||||
Epgsearch_services_v1_2 *epgSearch = new Epgsearch_services_v1_2;
|
||||
std::string recDir = tvguideConfig.instRecFixedFolder;
|
||||
std::string recDir = config.instRecFixedFolder;
|
||||
std::replace(recDir.begin(), recDir.end(), '/', '~');
|
||||
if (strchr(recDir.c_str(), '%') != NULL) {
|
||||
if (epgSearchPlugin->Service("Epgsearch-services-v1.1", epgSearch)) {
|
||||
@@ -172,35 +175,33 @@ void cRecManager::SetTimerPath(cTimer *timer, const cEvent *event, std::string p
|
||||
return;
|
||||
}
|
||||
//Set choosen path
|
||||
bool addSubtitle = false;
|
||||
if (!isempty(event->ShortText())) { // add subtitle if present
|
||||
addSubtitle = (config.addSubtitleToTimer != addSubtitleNever);
|
||||
if (config.addSubtitleToTimer == addSubtitleSmart)
|
||||
if (event->Duration() > 80 * 60)
|
||||
addSubtitle = false;
|
||||
}
|
||||
cString newFileName;
|
||||
if (path.size() > 0) {
|
||||
std::replace(path.begin(), path.end(), '/', '~');
|
||||
newFileName = cString::sprintf("%s~%s", path.c_str(), timer->File());
|
||||
if (addSubtitle)
|
||||
newFileName = cString::sprintf("%s~%s~%s", path.c_str(), event->Title(), event->ShortText());
|
||||
else
|
||||
newFileName = cString::sprintf("%s~%s", path.c_str(), timer->File());
|
||||
} else {
|
||||
newFileName = event->Title();
|
||||
if (addSubtitle)
|
||||
newFileName = cString::sprintf("%s~%s", event->Title(), event->ShortText());
|
||||
else
|
||||
newFileName = event->Title();
|
||||
}
|
||||
timer->SetFile(*newFileName);
|
||||
}
|
||||
|
||||
void cRecManager::DeleteTimer(int timerID) {
|
||||
#if VDRVERSNUM >= 20301
|
||||
cTimer *t;
|
||||
{
|
||||
LOCK_TIMERS_WRITE;
|
||||
t = Timers->Get(timerID);
|
||||
}
|
||||
#else
|
||||
cTimer *t = Timers.Get(timerID);
|
||||
#endif
|
||||
if (!t)
|
||||
return;
|
||||
DeleteTimer(t);
|
||||
}
|
||||
|
||||
void cRecManager::DeleteTimer(const cEvent *event) {
|
||||
if (!event)
|
||||
return;
|
||||
if (tvguideConfig.useRemoteTimers && pRemoteTimers) {
|
||||
if (config.useRemoteTimers && pRemoteTimers) {
|
||||
DeleteRemoteTimer(event);
|
||||
} else {
|
||||
DeleteLocalTimer(event);
|
||||
@@ -226,12 +227,19 @@ void cRecManager::DeleteTimer(const cTimer *timer) {
|
||||
#if VDRVERSNUM >= 20301
|
||||
LOCK_TIMERS_WRITE;
|
||||
cTimers* timers = Timers;
|
||||
if (timer && timer->Remote() && !timer->Recording()) {
|
||||
if (HandleRemoteTimerModifications(NULL, (cTimer*)timer)) {
|
||||
timers->Del((cTimer*)timer);
|
||||
}
|
||||
timers->SetModified();
|
||||
}
|
||||
cTimer* t = timers->GetTimer(timer);
|
||||
#else
|
||||
cTimers* timers = &Timers;
|
||||
cTimer* t = timers->GetTimer((cTimer*)timer);
|
||||
#endif
|
||||
|
||||
if (!t)
|
||||
return;
|
||||
if (t->Recording()) {
|
||||
t->Skip();
|
||||
#if VDRVERSNUM >= 20301
|
||||
@@ -239,7 +247,7 @@ void cRecManager::DeleteTimer(const cTimer *timer) {
|
||||
#else
|
||||
cRecordControls::Process(time(NULL));
|
||||
#endif
|
||||
}
|
||||
}
|
||||
isyslog("timer %s deleted", *t->ToDescr());
|
||||
timers->Del(t, true);
|
||||
timers->SetModified();
|
||||
@@ -259,56 +267,82 @@ void cRecManager::DeleteRemoteTimer(const cEvent *event) {
|
||||
}
|
||||
}
|
||||
|
||||
void cRecManager::SaveTimer(const cTimer *t, cTimer newTimerSettings) {
|
||||
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;
|
||||
|
||||
#if VDRVERSNUM >= 20301
|
||||
LOCK_TIMERS_WRITE;
|
||||
cTimer *timer = Timers->GetTimer(t);
|
||||
cTimers* timers = Timers;
|
||||
timers->SetExplicitModify();
|
||||
if (t && t->Remote()) {
|
||||
if (!HandleRemoteTimerModifications(newTimerSettings, (cTimer *)t)) {
|
||||
esyslog(tr("tvguide: RemoteTimerModifications failed"));
|
||||
}
|
||||
}
|
||||
cTimer *timer = timers->GetTimer(t);
|
||||
#else
|
||||
cTimer *timer = Timers.GetTimer((cTimer*)t);
|
||||
cTimers* timers = &Timers;
|
||||
cTimer *timer = timers->GetTimer((cTimer *)t);
|
||||
#endif
|
||||
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();
|
||||
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());
|
||||
timer->SetDay(day);
|
||||
timer->SetStart(start);
|
||||
timer->SetStop(stop);
|
||||
timer->SetPriority(prio);
|
||||
timer->SetLifetime(lifetime);
|
||||
timer->SetFile(fileName.c_str());
|
||||
|
||||
if (timer->HasFlags(tfActive) && !active)
|
||||
timer->ClrFlags(tfActive);
|
||||
else if (!timer->HasFlags(tfActive) && active)
|
||||
timer->SetFlags(tfActive);
|
||||
active = newTimerSettings->HasFlags(tfActive);
|
||||
} else
|
||||
active = !timer->HasFlags(tfActive);
|
||||
|
||||
if (active)
|
||||
timer->SetFlags(tfActive);
|
||||
else
|
||||
timer->ClrFlags(tfActive);
|
||||
|
||||
#if VDRVERSNUM < 20300
|
||||
timer->SetEventFromSchedule();
|
||||
#endif
|
||||
if (tvguideConfig.useRemoteTimers && pRemoteTimers) {
|
||||
if (config.useRemoteTimers && pRemoteTimers) {
|
||||
RemoteTimers_Timer_v1_0 rt;
|
||||
rt.timer = timer;
|
||||
if (!pRemoteTimers->Service("RemoteTimers::ModTimer-v1.0", &rt))
|
||||
rt.timer = NULL;
|
||||
RefreshRemoteTimers();
|
||||
} else {
|
||||
#if VDRVERSNUM >= 20301
|
||||
Timers->SetModified();
|
||||
#else
|
||||
Timers.SetModified();
|
||||
#endif
|
||||
timers->SetModified();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool cRecManager::IsRecorded(const cEvent *event) {
|
||||
#if VDRVERSNUM >= 20301
|
||||
LOCK_TIMERS_WRITE;
|
||||
@@ -341,11 +375,10 @@ cTVGuideTimerConflicts *cRecManager::CheckTimerConflict(void) {
|
||||
}
|
||||
|
||||
void cRecManager::CreateSeriesTimer(cTimer *seriesTimer) {
|
||||
#if VDRVERSNUM >= 20301
|
||||
#else
|
||||
#if VDRVERSNUM < 20300
|
||||
seriesTimer->SetEventFromSchedule();
|
||||
#endif
|
||||
if (tvguideConfig.useRemoteTimers && pRemoteTimers) {
|
||||
if (config.useRemoteTimers && pRemoteTimers) {
|
||||
RemoteTimers_Timer_v1_0 rt;
|
||||
rt.timer = seriesTimer;
|
||||
if (!pRemoteTimers->Service("RemoteTimers::NewTimer-v1.0", &rt))
|
||||
@@ -355,12 +388,11 @@ void cRecManager::CreateSeriesTimer(cTimer *seriesTimer) {
|
||||
#if VDRVERSNUM >= 20301
|
||||
LOCK_TIMERS_WRITE;
|
||||
cTimers* timers = Timers;
|
||||
#else
|
||||
cTimers* timers = &Timers;
|
||||
#endif
|
||||
timers->Add(seriesTimer);
|
||||
timers->SetModified();
|
||||
#else
|
||||
Timers.Add(seriesTimer);
|
||||
Timers.SetModified();
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@@ -597,7 +629,7 @@ void cRecManager::DeleteSearchTimer(cTVGuideSearchTimer *searchTimer, bool delTi
|
||||
timers = &Timers;
|
||||
#endif
|
||||
cTimer *timer = timers->First();
|
||||
while(timer) {
|
||||
while (timer) {
|
||||
if (!timer->Recording()) {
|
||||
char* searchID = GetAuxValue(timer, "s-id");
|
||||
if (searchID) {
|
||||
@@ -726,8 +758,8 @@ const cEvent **cRecManager::LoadReruns(const cEvent *event, int &numResults) {
|
||||
if (epgSearchAvailable && !isempty(event->Title())) {
|
||||
Epgsearch_searchresults_v1_0 data;
|
||||
std::string strQuery = event->Title();
|
||||
if (tvguideConfig.useSubtitleRerun > 0) {
|
||||
if (tvguideConfig.useSubtitleRerun == 2 || !isempty(event->ShortText()))
|
||||
if (config.useSubtitleRerun > 0) {
|
||||
if (config.useSubtitleRerun == 2 || !isempty(event->ShortText()))
|
||||
strQuery += "~";
|
||||
if (!isempty(event->ShortText()))
|
||||
strQuery += event->ShortText();
|
||||
@@ -789,31 +821,23 @@ const cEvent **cRecManager::WhatsOnNow(bool nowOrNext, int &numResults) {
|
||||
std::vector<const cEvent*> tmpResults;
|
||||
#if VDRVERSNUM >= 20301
|
||||
LOCK_CHANNELS_READ;
|
||||
const cChannels* channels = Channels;
|
||||
LOCK_SCHEDULES_READ;
|
||||
const cSchedules* schedules = Schedules;
|
||||
#else
|
||||
cChannels* channels = &Channels;
|
||||
cSchedulesLock schedulesLock;
|
||||
const cSchedules *schedules = cSchedules::Schedules(schedulesLock);
|
||||
#endif
|
||||
const cChannel *startChannel = NULL, *stopChannel = NULL;
|
||||
if (tvguideConfig.favLimitChannels) {
|
||||
#if VDRVERSNUM >= 20301
|
||||
startChannel = Channels->GetByNumber(tvguideConfig.favStartChannel);
|
||||
stopChannel = Channels->GetByNumber(tvguideConfig.favStopChannel);
|
||||
if (config.favLimitChannels) {
|
||||
startChannel = channels->GetByNumber(config.favStartChannel);
|
||||
stopChannel = channels->GetByNumber(config.favStopChannel);
|
||||
}
|
||||
if (!startChannel)
|
||||
startChannel = Channels->First();
|
||||
startChannel = channels->First();
|
||||
|
||||
for (const cChannel *channel = startChannel; channel; channel = Channels->Next(channel)) {
|
||||
#else
|
||||
startChannel = Channels.GetByNumber(tvguideConfig.favStartChannel);
|
||||
stopChannel = Channels.GetByNumber(tvguideConfig.favStopChannel);
|
||||
}
|
||||
if (!startChannel)
|
||||
startChannel = Channels.First();
|
||||
|
||||
for (const cChannel *channel = startChannel; channel; channel = Channels.Next(channel)) {
|
||||
#endif
|
||||
for (const cChannel *channel = startChannel; channel; channel = channels->Next(channel)) {
|
||||
if (channel->GroupSep()) continue;
|
||||
const cSchedule *Schedule = schedules->GetSchedule(channel);
|
||||
if (!Schedule) continue;
|
||||
@@ -842,13 +866,13 @@ const cEvent **cRecManager::UserDefinedTime(int userTime, int &numResults) {
|
||||
std::vector<const cEvent*> tmpResults;
|
||||
int favTime = 0;
|
||||
if (userTime == 1) {
|
||||
favTime = tvguideConfig.favTime1;
|
||||
favTime = config.favTime1;
|
||||
} else if (userTime == 2) {
|
||||
favTime = tvguideConfig.favTime2;
|
||||
favTime = config.favTime2;
|
||||
} else if (userTime == 3) {
|
||||
favTime = tvguideConfig.favTime3;
|
||||
favTime = config.favTime3;
|
||||
} else if (userTime == 4) {
|
||||
favTime = tvguideConfig.favTime4;
|
||||
favTime = config.favTime4;
|
||||
}
|
||||
|
||||
time_t now = time(0);
|
||||
@@ -865,32 +889,23 @@ const cEvent **cRecManager::UserDefinedTime(int userTime, int &numResults) {
|
||||
|
||||
#if VDRVERSNUM >= 20301
|
||||
LOCK_CHANNELS_READ;
|
||||
const cChannels* channels = Channels;
|
||||
LOCK_SCHEDULES_READ;
|
||||
// const cChannels* channels = Channels;
|
||||
const cSchedules* schedules = Schedules;
|
||||
#else
|
||||
cChannels* channels = &Channels;
|
||||
cSchedulesLock schedulesLock;
|
||||
const cSchedules *schedules = cSchedules::Schedules(schedulesLock);
|
||||
#endif
|
||||
const cChannel *startChannel = NULL, *stopChannel = NULL;
|
||||
if (tvguideConfig.favLimitChannels) {
|
||||
#if VDRVERSNUM >= 20301
|
||||
startChannel = Channels->GetByNumber(tvguideConfig.favStartChannel);
|
||||
stopChannel = Channels->GetByNumber(tvguideConfig.favStopChannel);
|
||||
if (config.favLimitChannels) {
|
||||
startChannel = channels->GetByNumber(config.favStartChannel);
|
||||
stopChannel = channels->GetByNumber(config.favStopChannel);
|
||||
}
|
||||
if (!startChannel)
|
||||
startChannel = Channels->First();
|
||||
startChannel = channels->First();
|
||||
|
||||
for (const cChannel *channel = startChannel; channel; channel = Channels->Next(channel)) {
|
||||
#else
|
||||
startChannel = Channels.GetByNumber(tvguideConfig.favStartChannel);
|
||||
stopChannel = Channels.GetByNumber(tvguideConfig.favStopChannel);
|
||||
}
|
||||
if (!startChannel)
|
||||
startChannel = Channels.First();
|
||||
|
||||
for (const cChannel *channel = startChannel; channel; channel = Channels.Next(channel)) {
|
||||
#endif
|
||||
for (const cChannel *channel = startChannel; channel; channel = channels->Next(channel)) {
|
||||
if (channel->GroupSep()) continue;
|
||||
const cSchedule *Schedule = schedules->GetSchedule(channel);
|
||||
if (!Schedule) continue;
|
||||
|
@@ -33,12 +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(int timerID);
|
||||
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);
|
||||
|
10
recmenu.c
10
recmenu.c
@@ -441,7 +441,7 @@ void cRecMenu::JumpBegin(void) {
|
||||
CreatePixmap();
|
||||
Arrange(false);
|
||||
startIndex = 0;
|
||||
stopIndex = numItems - 1;
|
||||
stopIndex = currentItem;
|
||||
cRecMenuItem *first = menuItems.front();
|
||||
first->setActive();
|
||||
first->setBackground();
|
||||
@@ -532,7 +532,7 @@ void cRecMenu::Arrange(bool scroll) {
|
||||
}
|
||||
|
||||
void cRecMenu::Display(bool scroll) {
|
||||
if (tvguideConfig.style == eStyleGraphical) {
|
||||
if (config.style == eStyleGraphical) {
|
||||
drawBackgroundGraphical(bgRecMenuBack);
|
||||
} else {
|
||||
pixmap->Fill(theme.Color(clrBackground));
|
||||
@@ -589,10 +589,14 @@ 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));
|
||||
|
||||
int totalNumItems = GetTotalNumMenuItems();
|
||||
if (!totalNumItems)
|
||||
return;
|
||||
if (imgScrollBar == NULL) {
|
||||
int scrollBarImgHeight = (pixmapScrollBar->ViewPort().Height() - 8) * numItems / totalNumItems;
|
||||
imgScrollBar = createScrollbar(pixmapScrollBar->ViewPort().Width()-8, scrollBarImgHeight, theme.Color(clrHighlight), theme.Color(clrHighlightBlending));
|
||||
@@ -674,7 +678,7 @@ 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 (tvguideConfig.style != eStyleFlat) {
|
||||
if (config.style != eStyleFlat) {
|
||||
int numSteps = 64;
|
||||
int alphaStep = 0x03;
|
||||
if (height < 30)
|
||||
|
180
recmenuitem.c
180
recmenuitem.c
@@ -36,7 +36,7 @@ void cRecMenuItem::SetPixmaps(void) {
|
||||
}
|
||||
|
||||
void cRecMenuItem::setBackground(void) {
|
||||
if (tvguideConfig.style == eStyleGraphical) {
|
||||
if (config.style == eStyleGraphical) {
|
||||
if (defaultBackground) {
|
||||
drawBackgroundGraphical(bgButton, active);
|
||||
}
|
||||
@@ -52,7 +52,7 @@ void cRecMenuItem::setBackground(void) {
|
||||
colorBlending = theme.Color(clrGrid1Blending);
|
||||
colorText = theme.Color(clrFont);
|
||||
}
|
||||
colorTextBack = (tvguideConfig.style == eStyleFlat)?color:clrTransparent;
|
||||
colorTextBack = (config.style == eStyleFlat)?color:clrTransparent;
|
||||
if (defaultBackground) {
|
||||
drawBackground();
|
||||
drawBorder();
|
||||
@@ -177,7 +177,7 @@ void cRecMenuItemButtonYesNo::Show(void) {
|
||||
}
|
||||
|
||||
void cRecMenuItemButtonYesNo::setBackground() {
|
||||
if (tvguideConfig.style == eStyleGraphical) {
|
||||
if (config.style == eStyleGraphical) {
|
||||
drawBackgroundGraphical(bgButton, yesActive&&active);
|
||||
colorTextBack = clrTransparent;
|
||||
colorTextNoBack = clrTransparent;
|
||||
@@ -213,8 +213,8 @@ void cRecMenuItemButtonYesNo::setBackground() {
|
||||
theme.Color(clrGrid1Blending));
|
||||
colorTextNo = theme.Color(clrFont);
|
||||
}
|
||||
colorTextBack = (tvguideConfig.style == eStyleFlat)?color:clrTransparent;
|
||||
colorTextNoBack = (tvguideConfig.style == eStyleFlat)?colorNoBack:clrTransparent;
|
||||
colorTextBack = (config.style == eStyleFlat)?color:clrTransparent;
|
||||
colorTextNoBack = (config.style == eStyleFlat)?colorNoBack:clrTransparent;
|
||||
drawBackground();
|
||||
drawBorder();
|
||||
pixmapNo->drawBackground();
|
||||
@@ -297,22 +297,17 @@ void cRecMenuItemInfo::Draw(void) {
|
||||
|
||||
// --- cRecMenuItemInt -------------------------------------------------------
|
||||
cRecMenuItemInt::cRecMenuItemInt(cString text,
|
||||
int initialVal,
|
||||
int minVal,
|
||||
int maxVal,
|
||||
// bool refresh;
|
||||
bool active,
|
||||
int *callback,
|
||||
eRecMenuState action,
|
||||
int indent) {
|
||||
eRecMenuState action) {
|
||||
selectable = true;
|
||||
this->text = text;
|
||||
this->currentVal = initialVal;
|
||||
this->currentVal = *callback;
|
||||
this->minVal = minVal;
|
||||
this->maxVal = maxVal;
|
||||
// this->refresh = refresh;
|
||||
this->active = active;
|
||||
this->indent = indent;
|
||||
this->callback = callback;
|
||||
this->action = action;
|
||||
height = 3 * font->Height() / 2;
|
||||
@@ -352,7 +347,7 @@ void cRecMenuItemInt::setBackground() {
|
||||
|
||||
void cRecMenuItemInt::Draw(void) {
|
||||
int textY = (height - font->Height()) / 2;
|
||||
pixmap->DrawText(cPoint(10 + indent * 30, textY), *text, colorText, colorTextBack, font);
|
||||
pixmap->DrawText(cPoint(10, textY), *text, colorText, colorTextBack, font);
|
||||
DrawValue();
|
||||
}
|
||||
|
||||
@@ -410,38 +405,32 @@ eRecMenuState cRecMenuItemInt::ProcessKey(eKeys Key) {
|
||||
|
||||
// --- cRecMenuItemBool -------------------------------------------------------
|
||||
cRecMenuItemBool::cRecMenuItemBool(cString text,
|
||||
bool initialVal,
|
||||
bool refresh,
|
||||
bool active,
|
||||
bool *callback,
|
||||
eRecMenuState action,
|
||||
int indent) {
|
||||
bool refresh) {
|
||||
selectable = true;
|
||||
this->text = text;
|
||||
this->yes = initialVal;
|
||||
this->yes = *callback;
|
||||
this->refresh = refresh;
|
||||
this->active = active;
|
||||
this->callback = callback;
|
||||
this->indent = indent;
|
||||
this->action = action;
|
||||
height = 3 * font->Height() / 2;
|
||||
pixmapVal = NULL;
|
||||
}
|
||||
|
||||
cRecMenuItemBool::cRecMenuItemBool(cString text,
|
||||
bool initialVal,
|
||||
bool refresh,
|
||||
bool active,
|
||||
int *callback,
|
||||
eRecMenuState action,
|
||||
int indent) {
|
||||
bool refresh) {
|
||||
selectable = true;
|
||||
this->text = text;
|
||||
this->yes = initialVal;
|
||||
this->yes = *callback;
|
||||
this->refresh = refresh;
|
||||
this->active = active;
|
||||
this->callback = (bool*)callback;
|
||||
this->indent = indent;
|
||||
this->action = action;
|
||||
height = 3 * font->Height() / 2;
|
||||
pixmapVal = NULL;
|
||||
@@ -474,13 +463,13 @@ void cRecMenuItemBool::Show(void) {
|
||||
|
||||
void cRecMenuItemBool::Draw(void) {
|
||||
int textY = (height - font->Height()) / 2;
|
||||
pixmap->DrawText(cPoint(10 + indent * 30, textY), *text, colorText, colorTextBack, font);
|
||||
pixmap->DrawText(cPoint(10, textY), *text, colorText, colorTextBack, font);
|
||||
DrawValue();
|
||||
}
|
||||
|
||||
void cRecMenuItemBool::DrawValue(void) {
|
||||
pixmapVal->Fill(clrTransparent);
|
||||
std::string strIcon = yes?"yes":"no";
|
||||
std::string strIcon = yes ? "yes" : "no";
|
||||
int iconSize = height - 8;
|
||||
int iconX = width - iconSize - 10;
|
||||
int iconY = (height - iconSize) / 2;
|
||||
@@ -515,24 +504,20 @@ eRecMenuState cRecMenuItemBool::ProcessKey(eKeys Key) {
|
||||
// --- cRecMenuItemSelect -------------------------------------------------------
|
||||
cRecMenuItemSelect::cRecMenuItemSelect(cString text,
|
||||
std::vector<std::string> Strings,
|
||||
int initialVal,
|
||||
bool active,
|
||||
int *callback,
|
||||
eRecMenuState action,
|
||||
bool refresh,
|
||||
int indent) {
|
||||
bool refresh) {
|
||||
selectable = true;
|
||||
this->text = text;
|
||||
strings = Strings;
|
||||
numValues = Strings.size();
|
||||
if ((initialVal < 0) || (initialVal > numValues-1))
|
||||
this->currentVal = *callback;
|
||||
if ((this->currentVal < 0) || (this->currentVal > numValues - 1))
|
||||
this->currentVal = 0;
|
||||
else
|
||||
this->currentVal = initialVal;
|
||||
this->active = active;
|
||||
this->callback = callback;
|
||||
this->refresh = refresh;
|
||||
this->indent = indent;
|
||||
this->action = action;
|
||||
height = 3 * font->Height() / 2;
|
||||
pixmapVal = NULL;
|
||||
@@ -565,14 +550,14 @@ void cRecMenuItemSelect::Show(void) {
|
||||
|
||||
void cRecMenuItemSelect::Draw(void) {
|
||||
int textY = (height - font->Height()) / 2;
|
||||
pixmap->DrawText(cPoint(10 + indent * 30, textY), *text, colorText, colorTextBack, font);
|
||||
pixmap->DrawText(cPoint(10, textY), *text, colorText, colorTextBack, font);
|
||||
DrawValue();
|
||||
}
|
||||
|
||||
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);
|
||||
@@ -629,20 +614,18 @@ cRecMenuItemSelectDirectory::cRecMenuItemSelectDirectory(cString text,
|
||||
bool active,
|
||||
char *callback,
|
||||
eRecMenuState action,
|
||||
bool isSearchTimer,
|
||||
int indent) {
|
||||
bool isSearchTimer) {
|
||||
selectable = true;
|
||||
this->text = text;
|
||||
this->originalFolder = originalFolder;
|
||||
this->active = active;
|
||||
this->callback = callback;
|
||||
this->indent = indent;
|
||||
this->action = action;
|
||||
height = 3 * font->Height() / 2;
|
||||
pixmapVal = NULL;
|
||||
folders.push_back(tr("root video folder"));
|
||||
if (isSearchTimer && tvguideConfig.instRecFixedFolder.size() > 0)
|
||||
folders.push_back(tvguideConfig.instRecFixedFolder);
|
||||
if (isSearchTimer && config.instRecFixedFolder.size() > 0)
|
||||
folders.push_back(config.instRecFixedFolder);
|
||||
ReadRecordingDirectories(&folders, NULL, "");
|
||||
numValues = folders.size();
|
||||
this->currentVal = GetInitial();
|
||||
@@ -675,16 +658,16 @@ void cRecMenuItemSelectDirectory::Show(void) {
|
||||
|
||||
void cRecMenuItemSelectDirectory::Draw(void) {
|
||||
int textY = (height - font->Height()) / 2;
|
||||
pixmap->DrawText(cPoint(10 + indent * 30, textY), *text, colorText, colorTextBack, font);
|
||||
pixmap->DrawText(cPoint(10, textY), *text, colorText, colorTextBack, font);
|
||||
DrawValue();
|
||||
}
|
||||
|
||||
void cRecMenuItemSelectDirectory::DrawValue(void) {
|
||||
pixmapVal->Fill(clrTransparent);
|
||||
int iconSize = min(128, height);
|
||||
int textX = width - font->Width(folders[currentVal].c_str()) - iconSize;
|
||||
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);
|
||||
pixmapVal->DrawText(cPoint(textX, textY), folders[currentVal].c_str(), colorText, clrTransparent, font, width - textX - iconSize, font->Height(), taTop | taRight);
|
||||
int iconLeftX = textX - iconSize;
|
||||
int iconRightX = width - iconSize;
|
||||
int iconY = (height - iconSize) / 2;
|
||||
@@ -750,13 +733,12 @@ int cRecMenuItemSelectDirectory::GetInitial(void) {
|
||||
|
||||
// --- cRecMenuItemText -------------------------------------------------------
|
||||
cRecMenuItemText::cRecMenuItemText(cString title,
|
||||
char *initialVal,
|
||||
int length,
|
||||
bool active,
|
||||
char *callback) {
|
||||
selectable = true;
|
||||
this->title = title;
|
||||
value = initialVal;
|
||||
value = callback;
|
||||
this->active = active;
|
||||
this->callback = callback;
|
||||
height = 3 * font->Height();
|
||||
@@ -985,7 +967,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;
|
||||
@@ -1323,21 +1305,18 @@ eRecMenuState cRecMenuItemText::ProcessKey(eKeys Key) {
|
||||
|
||||
// --- cRecMenuItemTime -------------------------------------------------------
|
||||
cRecMenuItemTime::cRecMenuItemTime(cString text,
|
||||
int initialVal,
|
||||
bool active,
|
||||
int *callback,
|
||||
eRecMenuState action,
|
||||
int indent) {
|
||||
eRecMenuState action) {
|
||||
selectable = true;
|
||||
this->text = text;
|
||||
this->value = initialVal;
|
||||
this->value = *callback;
|
||||
hh = value / 100;
|
||||
mm = value % 100;
|
||||
pos = 0;
|
||||
fresh = true;
|
||||
this->active = active;
|
||||
this->callback = callback;
|
||||
this->indent = indent;
|
||||
this->action = action;
|
||||
height = 3 * font->Height() / 2;
|
||||
pixmapVal = NULL;
|
||||
@@ -1370,7 +1349,7 @@ void cRecMenuItemTime::Show(void) {
|
||||
|
||||
void cRecMenuItemTime::Draw(void) {
|
||||
int textY = (height - font->Height()) / 2;
|
||||
pixmap->DrawText(cPoint(10 + indent * 30, textY), *text, colorText, colorTextBack, font);
|
||||
pixmap->DrawText(cPoint(10, textY), *text, colorText, colorTextBack, font);
|
||||
DrawValue();
|
||||
}
|
||||
|
||||
@@ -1469,13 +1448,12 @@ eRecMenuState cRecMenuItemTime::ProcessKey(eKeys Key) {
|
||||
|
||||
// --- cRecMenuItemDay -------------------------------------------------------
|
||||
cRecMenuItemDay::cRecMenuItemDay(cString text,
|
||||
time_t initialVal,
|
||||
bool active,
|
||||
time_t *callback,
|
||||
eRecMenuState action) {
|
||||
selectable = true;
|
||||
this->text = text;
|
||||
this->currentVal = cTimer::SetTime(initialVal, 0);
|
||||
this->currentVal = cTimer::SetTime(*callback, 0);
|
||||
this->active = active;
|
||||
this->callback = callback;
|
||||
this->action = action;
|
||||
@@ -1570,6 +1548,7 @@ cRecMenuItemTimer::cRecMenuItemTimer(const cTimer *timer,
|
||||
this->overlapStop = overlapStop;
|
||||
this->active = active;
|
||||
height = 3 * font->Height();
|
||||
pixmapStatus = NULL;
|
||||
pixmapIcons = NULL;
|
||||
}
|
||||
|
||||
@@ -1607,6 +1586,8 @@ void cRecMenuItemTimer::Show(void) {
|
||||
}
|
||||
|
||||
void cRecMenuItemTimer::Draw(void) {
|
||||
if (!timer)
|
||||
return;
|
||||
const cChannel *channel = timer->Channel();
|
||||
int channelTransponder = 0;
|
||||
cString channelName = "";
|
||||
@@ -1615,12 +1596,12 @@ void cRecMenuItemTimer::Draw(void) {
|
||||
channelName = channel->Name();
|
||||
}
|
||||
int logoX = DrawIcons();
|
||||
int logoWidth = height * tvguideConfig.logoWidthRatio / tvguideConfig.logoHeightRatio;
|
||||
int logoWidth = height * config.logoWidthRatio / config.logoHeightRatio;
|
||||
cImageLoader imgLoader;
|
||||
if (!tvguideConfig.hideChannelLogos) {
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -1762,8 +1743,13 @@ cRecMenuItemTimerConflictHeader::~cRecMenuItemTimerConflictHeader(void) {
|
||||
}
|
||||
|
||||
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.requestPixmap(4, cRect(x, y, width, height));
|
||||
pixmapStatus = osdManager.requestPixmap(5, cRect(x, y, width, height));
|
||||
} else {
|
||||
pixmap->SetViewPort(cRect(x, y, width, height));
|
||||
pixmapStatus->SetViewPort(cRect(x, y, width, height));
|
||||
}
|
||||
pixmapStatus->Fill(clrTransparent);
|
||||
}
|
||||
|
||||
@@ -1865,9 +1851,9 @@ void cRecMenuItemEvent::Draw(void) {
|
||||
cString channelName = "";
|
||||
if (channel)
|
||||
channelName = channel->Name();
|
||||
int logoWidth = height * tvguideConfig.logoWidthRatio / tvguideConfig.logoHeightRatio;
|
||||
int logoWidth = height * config.logoWidthRatio / config.logoHeightRatio;
|
||||
cImageLoader imgLoader;
|
||||
if (!tvguideConfig.hideChannelLogos) {
|
||||
if (!config.hideChannelLogos) {
|
||||
if (imgLoader.LoadLogo(channel, logoWidth, height)) {
|
||||
cImage logo = imgLoader.GetImage();
|
||||
pixmapText->DrawImage(cPoint(logoX, (height - logo.Height()) / 2), logo);
|
||||
@@ -1957,15 +1943,21 @@ eRecMenuState cRecMenuItemEvent::ProcessKey(eKeys Key) {
|
||||
|
||||
// --- cRecMenuItemChannelChooser -------------------------------------------------------
|
||||
cRecMenuItemChannelChooser::cRecMenuItemChannelChooser(cString text,
|
||||
const cChannel *initialChannel,
|
||||
bool active,
|
||||
int *callback,
|
||||
eRecMenuState action,
|
||||
int indent) {
|
||||
eRecMenuState action) {
|
||||
selectable = true;
|
||||
this->text = text;
|
||||
this->channel = initialChannel;
|
||||
if (initialChannel)
|
||||
#if VDRVERSNUM >= 20301
|
||||
{
|
||||
LOCK_CHANNELS_READ;
|
||||
channels = Channels;
|
||||
}
|
||||
#else
|
||||
channels = &Channels;
|
||||
#endif
|
||||
this->channel = channels->GetByNumber(*callback);
|
||||
if (callback)
|
||||
initialChannelSet = true;
|
||||
else
|
||||
initialChannelSet = false;
|
||||
@@ -1973,10 +1965,8 @@ cRecMenuItemChannelChooser::cRecMenuItemChannelChooser(cString text,
|
||||
fresh = true;
|
||||
this->active = active;
|
||||
this->callback = callback;
|
||||
this->indent = indent;
|
||||
this->action = action;
|
||||
height = 3 * font->Height() / 2;
|
||||
// height = 2 * font->Height();
|
||||
pixmapChannel = NULL;
|
||||
}
|
||||
|
||||
@@ -2007,7 +1997,7 @@ void cRecMenuItemChannelChooser::Show(void) {
|
||||
|
||||
void cRecMenuItemChannelChooser::Draw(void) {
|
||||
int textY = (height - font->Height()) / 2;
|
||||
pixmap->DrawText(cPoint(10 + indent * 30, textY), *text, colorText, colorTextBack, font);
|
||||
pixmap->DrawText(cPoint(10, textY), *text, colorText, colorTextBack, font);
|
||||
DrawValue();
|
||||
}
|
||||
|
||||
@@ -2018,12 +2008,12 @@ void cRecMenuItemChannelChooser::DrawValue(void) {
|
||||
cString textVal = cString::sprintf("%d - %s", channel->Number(), channel->Name());
|
||||
int textX = width - font->Width(*textVal) - 10;
|
||||
pixmapChannel->DrawText(cPoint(textX, textY), *textVal, colorText, clrTransparent, font);
|
||||
int logoWidth = height * tvguideConfig.logoWidthRatio / tvguideConfig.logoHeightRatio;
|
||||
int logoWidth = height * config.logoWidthRatio / config.logoHeightRatio;
|
||||
int logoX = textX - logoWidth - 10;
|
||||
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");
|
||||
@@ -2046,12 +2036,6 @@ eRecMenuState cRecMenuItemChannelChooser::ProcessKey(eKeys Key) {
|
||||
if (!channel)
|
||||
return rmsConsumed;
|
||||
const cChannel *prev = channel;
|
||||
#if VDRVERSNUM >= 20301
|
||||
LOCK_CHANNELS_READ;
|
||||
const cChannels* channels = Channels;
|
||||
#else
|
||||
const cChannels* channels = &Channels;
|
||||
#endif
|
||||
const cChannel *firstChannel = channels->First();
|
||||
if(firstChannel->GroupSep())
|
||||
firstChannel = channels->Next(firstChannel);
|
||||
@@ -2077,12 +2061,6 @@ eRecMenuState cRecMenuItemChannelChooser::ProcessKey(eKeys Key) {
|
||||
break; }
|
||||
case kRight: {
|
||||
fresh = true;
|
||||
#if VDRVERSNUM >= 20301
|
||||
LOCK_CHANNELS_READ;
|
||||
const cChannels* channels = Channels;
|
||||
#else
|
||||
const cChannels* channels = &Channels;
|
||||
#endif
|
||||
if (!channel) {
|
||||
channel = channels->First();
|
||||
if(channel->GroupSep())
|
||||
@@ -2111,12 +2089,7 @@ eRecMenuState cRecMenuItemChannelChooser::ProcessKey(eKeys Key) {
|
||||
fresh = false;
|
||||
}
|
||||
channelNumber = channelNumber * 10 + (Key - k0);
|
||||
#if VDRVERSNUM >= 20301
|
||||
LOCK_CHANNELS_READ;
|
||||
const cChannel *chanNew = Channels->GetByNumber(channelNumber);
|
||||
#else
|
||||
const cChannel *chanNew = Channels.GetByNumber(channelNumber);
|
||||
#endif
|
||||
chanNew = channels->GetByNumber(channelNumber);
|
||||
if (chanNew) {
|
||||
channel = chanNew;
|
||||
DrawValue();
|
||||
@@ -2135,18 +2108,15 @@ eRecMenuState cRecMenuItemChannelChooser::ProcessKey(eKeys Key) {
|
||||
|
||||
// --- cRecMenuItemDayChooser -------------------------------------------------------
|
||||
cRecMenuItemDayChooser::cRecMenuItemDayChooser(cString text,
|
||||
int weekdays,
|
||||
bool active,
|
||||
int *callback,
|
||||
int indent) {
|
||||
int *callback) {
|
||||
selectable = true;
|
||||
this->text = text;
|
||||
this->weekdays = *callback;
|
||||
if (weekdays < 1)
|
||||
weekdays *= -1;
|
||||
this->weekdays = weekdays;
|
||||
this->active = active;
|
||||
this->callback = callback;
|
||||
this->indent = indent;
|
||||
height = 3 * font->Height() / 2;
|
||||
selectedDay = 0;
|
||||
pixmapWeekdays = NULL;
|
||||
@@ -2193,7 +2163,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;
|
||||
}
|
||||
@@ -2209,7 +2179,7 @@ void cRecMenuItemDayChooser::setBackground() {
|
||||
|
||||
void cRecMenuItemDayChooser::Draw(void) {
|
||||
int textY = (height - font->Height()) / 2;
|
||||
pixmap->DrawText(cPoint(10 + indent * 30, textY), *text, colorText, colorTextBack, font);
|
||||
pixmap->DrawText(cPoint(10, textY), *text, colorText, colorTextBack, font);
|
||||
DrawDays();
|
||||
}
|
||||
|
||||
@@ -2342,13 +2312,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();
|
||||
@@ -2397,7 +2368,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;
|
||||
@@ -2416,18 +2387,18 @@ void cRecMenuItemTimelineHeader::DrawCurrentTimer(void) {
|
||||
const cChannel *channel = timer->Channel();
|
||||
int x = 0;
|
||||
if (channel) {
|
||||
int logoWidth = infoHeight * tvguideConfig.logoWidthRatio / tvguideConfig.logoHeightRatio;
|
||||
int logoWidth = infoHeight * config.logoWidthRatio / config.logoHeightRatio;
|
||||
bool logoDrawn = false;
|
||||
cImageLoader imgLoader;
|
||||
if (!tvguideConfig.hideChannelLogos) {
|
||||
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;
|
||||
}
|
||||
}
|
||||
if (tvguideConfig.hideChannelLogos || !logoDrawn) {
|
||||
if (config.hideChannelLogos || !logoDrawn) {
|
||||
int channelNameWidth = fontSmall->Width(channel->Name());
|
||||
pixmapTimerInfo->DrawText(cPoint(10, (infoHeight - fontSmall->Height())/2), channel->Name(), colorText, clrTransparent, fontSmall);
|
||||
x += channelNameWidth + 20;
|
||||
@@ -2459,7 +2430,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);
|
||||
@@ -2564,7 +2535,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) {
|
||||
|
@@ -25,6 +25,7 @@ enum eRecMenuState {
|
||||
rmsSearchRerunsTimerConflictMenu,
|
||||
rmsSaveTimerConflictMenu,
|
||||
rmsTimerConflictShowInfo,
|
||||
rmsOnOffTimer,
|
||||
rmsDeleteTimer,
|
||||
rmsDeleteTimerConfirmation,
|
||||
rmsEditTimer,
|
||||
@@ -194,21 +195,16 @@ private:
|
||||
int *callback;
|
||||
int minVal;
|
||||
int maxVal;
|
||||
// bool refresh;
|
||||
int indent;
|
||||
cPixmap *pixmapVal;
|
||||
bool fresh;
|
||||
void DrawValue(void);
|
||||
public:
|
||||
cRecMenuItemInt(cString text,
|
||||
int initialVal,
|
||||
int minVal,
|
||||
int maxVal,
|
||||
// bool refresh = false,
|
||||
bool active = false,
|
||||
int *callback = NULL,
|
||||
eRecMenuState action = rmsNotConsumed,
|
||||
int indent = 0);
|
||||
eRecMenuState action = rmsNotConsumed);
|
||||
virtual ~cRecMenuItemInt(void);
|
||||
void SetPixmaps(void);
|
||||
void Hide(void);
|
||||
@@ -224,26 +220,21 @@ class cRecMenuItemBool : public cRecMenuItem {
|
||||
private:
|
||||
cString text;
|
||||
bool yes;
|
||||
int indent;
|
||||
bool *callback;
|
||||
cPixmap *pixmapVal;
|
||||
bool refresh;
|
||||
void DrawValue(void);
|
||||
public:
|
||||
cRecMenuItemBool(cString text,
|
||||
bool initialVal,
|
||||
bool refresh = false,
|
||||
bool active = false,
|
||||
bool *callback = NULL,
|
||||
eRecMenuState action = rmsNotConsumed,
|
||||
int indent = 0);
|
||||
bool refresh = false);
|
||||
cRecMenuItemBool(cString text,
|
||||
bool initialVal,
|
||||
bool refresh = false,
|
||||
bool active = false,
|
||||
int *callback = NULL,
|
||||
eRecMenuState action = rmsNotConsumed,
|
||||
int indent = 0);
|
||||
bool refresh = false);
|
||||
virtual ~cRecMenuItemBool(void);
|
||||
void SetPixmaps(void);
|
||||
void Hide(void);
|
||||
@@ -260,7 +251,6 @@ private:
|
||||
int currentVal;
|
||||
int *callback;
|
||||
bool refresh;
|
||||
int indent;
|
||||
std::vector<std::string> strings;
|
||||
int numValues;
|
||||
cPixmap *pixmapVal;
|
||||
@@ -268,12 +258,10 @@ private:
|
||||
public:
|
||||
cRecMenuItemSelect(cString text,
|
||||
std::vector<std::string> Strings,
|
||||
int initialVal,
|
||||
bool active = false,
|
||||
int *callback = NULL,
|
||||
eRecMenuState action = rmsNotConsumed,
|
||||
bool refresh = false,
|
||||
int indent = 0);
|
||||
bool refresh = false);
|
||||
virtual ~cRecMenuItemSelect(void);
|
||||
void SetPixmaps(void);
|
||||
void Hide(void);
|
||||
@@ -292,7 +280,6 @@ private:
|
||||
std::vector<std::string> folders;
|
||||
int currentVal;
|
||||
char *callback;
|
||||
int indent;
|
||||
int numValues;
|
||||
cPixmap *pixmapVal;
|
||||
void DrawValue(void);
|
||||
@@ -304,8 +291,7 @@ public:
|
||||
bool active = false,
|
||||
char *callback = NULL,
|
||||
eRecMenuState action = rmsNotConsumed,
|
||||
bool isSearchTimer = false,
|
||||
int indent = 0);
|
||||
bool isSearchTimer = false);
|
||||
virtual ~cRecMenuItemSelectDirectory(void);
|
||||
void SetPixmaps(void);
|
||||
void Hide(void);
|
||||
@@ -358,7 +344,6 @@ private:
|
||||
void DrawValue(char *newValue);
|
||||
public:
|
||||
cRecMenuItemText(cString title,
|
||||
char *initialVal,
|
||||
int length,
|
||||
bool active = false,
|
||||
char *callback = NULL);
|
||||
@@ -379,7 +364,6 @@ private:
|
||||
cString text;
|
||||
int value;
|
||||
int *callback;
|
||||
int indent;
|
||||
int mm;
|
||||
int hh;
|
||||
int pos;
|
||||
@@ -388,11 +372,9 @@ private:
|
||||
void DrawValue(void);
|
||||
public:
|
||||
cRecMenuItemTime(cString text,
|
||||
int initialVal,
|
||||
bool active = false,
|
||||
int *callback = NULL,
|
||||
eRecMenuState action = rmsNotConsumed,
|
||||
int indent = 0);
|
||||
eRecMenuState action = rmsNotConsumed);
|
||||
virtual ~cRecMenuItemTime(void);
|
||||
void SetPixmaps(void);
|
||||
void Hide(void);
|
||||
@@ -412,7 +394,6 @@ private:
|
||||
void DrawValue(void);
|
||||
public:
|
||||
cRecMenuItemDay(cString text,
|
||||
time_t initialVal,
|
||||
bool active = false,
|
||||
time_t *callback = NULL,
|
||||
eRecMenuState action = rmsNotConsumed);
|
||||
@@ -509,21 +490,25 @@ public:
|
||||
class cRecMenuItemChannelChooser : public cRecMenuItem {
|
||||
private:
|
||||
cString text;
|
||||
#if VDRVERSNUM >= 20301
|
||||
const cChannels *channels;
|
||||
const cChannel *chanNew;
|
||||
#else
|
||||
cChannels *channels;
|
||||
cChannel *chanNew;
|
||||
#endif
|
||||
const cChannel *channel;
|
||||
int channelNumber;
|
||||
int *callback;
|
||||
int indent;
|
||||
bool initialChannelSet;
|
||||
bool fresh;
|
||||
cPixmap *pixmapChannel;
|
||||
void DrawValue(void);
|
||||
public:
|
||||
cRecMenuItemChannelChooser (cString text,
|
||||
const cChannel *initialChannel,
|
||||
bool active = false,
|
||||
int *callback = NULL,
|
||||
eRecMenuState action = rmsNotConsumed,
|
||||
int indent = 0);
|
||||
eRecMenuState action = rmsNotConsumed);
|
||||
virtual ~cRecMenuItemChannelChooser(void);
|
||||
void SetPixmaps(void);
|
||||
void Hide(void);
|
||||
@@ -539,7 +524,6 @@ private:
|
||||
cString text;
|
||||
int weekdays;
|
||||
int *callback;
|
||||
int indent;
|
||||
bool epgsearchMode;
|
||||
std::string days;
|
||||
int daysX;
|
||||
@@ -555,10 +539,8 @@ private:
|
||||
bool WeekDaySet(unsigned day);
|
||||
public:
|
||||
cRecMenuItemDayChooser (cString text,
|
||||
int weekdays,
|
||||
bool active = false,
|
||||
int *callback = NULL,
|
||||
int indent = 0);
|
||||
int *callback = NULL);
|
||||
virtual ~cRecMenuItemDayChooser(void);
|
||||
void SetPixmaps(void);
|
||||
void Hide(void);
|
||||
@@ -592,19 +574,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);
|
||||
@@ -620,7 +604,7 @@ private:
|
||||
cPixmap *pixmapTimerConflicts;
|
||||
cRecMenuItemTimelineHeader *header;
|
||||
int x0;
|
||||
int width5Mins;
|
||||
float width5Mins;
|
||||
time_t start;
|
||||
time_t stop;
|
||||
void DrawBackground(void);
|
||||
|
383
recmenus.c
383
recmenus.c
@@ -1,18 +1,19 @@
|
||||
#include "services/remotetimers.h"
|
||||
#include "tools.h"
|
||||
#include "recmenumanager.h"
|
||||
#include "recmenuview.h"
|
||||
#include "recmenus.h"
|
||||
|
||||
// --- cRecMenuMain ---------------------------------------------------------
|
||||
cRecMenuMain::cRecMenuMain(bool epgSearchAvailable, bool timerActive, bool switchTimerActive) {
|
||||
eRecMenuState action = rmsInstantRecord;
|
||||
if (!timerActive) {
|
||||
if (tvguideConfig.instRecFolderMode == eFolderSelect)
|
||||
if (config.instRecFolderMode == eFolderSelect)
|
||||
action = rmsInstantRecordFolder;
|
||||
AddMenuItem(new cRecMenuItemButton(tr("Instant Record"), action, true, false, false, true));
|
||||
} else {
|
||||
AddMenuItem(new cRecMenuItemButton(tr("Delete Timer"), rmsDeleteTimer, true, false, false, true));
|
||||
AddMenuItem(new cRecMenuItemButton(tr("Timer On/Off"), rmsOnOffTimer, true, false, false, true));
|
||||
AddMenuItem(new cRecMenuItemButton(tr("Edit Timer"), rmsEditTimer, false, false, false, true));
|
||||
AddMenuItem(new cRecMenuItemButton(tr("Delete Timer"), rmsDeleteTimer, false, false, false, true));
|
||||
}
|
||||
|
||||
AddMenuItem(new cRecMenuItemButton(tr("Timer Timeline"), rmsTimeline, false, false, false, true));
|
||||
@@ -22,7 +23,7 @@ cRecMenuMain::cRecMenuMain(bool epgSearchAvailable, bool timerActive, bool switc
|
||||
AddMenuItem(new cRecMenuItemButton(tr("Search Timers"), rmsSearchTimers, false, false, false, true));
|
||||
}
|
||||
|
||||
if (tvguideConfig.instRecFolderMode == eFolderSelect)
|
||||
if (config.instRecFolderMode == eFolderSelect)
|
||||
action = rmsSeriesTimerFolder;
|
||||
else
|
||||
action = rmsSeriesTimer;
|
||||
@@ -103,7 +104,7 @@ std::string cRecMenuAskFolder::GetFolder(void) {
|
||||
}
|
||||
|
||||
// --- cRecMenuConfirmTimer ---------------------------------------------------------
|
||||
cRecMenuConfirmTimer::cRecMenuConfirmTimer(const cEvent *event) {
|
||||
cRecMenuConfirmTimer::cRecMenuConfirmTimer(const cEvent *event, bool timerChanged) {
|
||||
SetWidthPercent(50);
|
||||
#if VDRVERSNUM >= 20301
|
||||
LOCK_CHANNELS_READ;
|
||||
@@ -111,9 +112,8 @@ cRecMenuConfirmTimer::cRecMenuConfirmTimer(const cEvent *event) {
|
||||
#else
|
||||
const cString channelName = Channels.GetByChannelID(event->ChannelID())->Name();
|
||||
#endif
|
||||
cString message;
|
||||
bool eventHasTimer = false;
|
||||
if (tvguideConfig.useRemoteTimers && pRemoteTimers) {
|
||||
if (config.useRemoteTimers && pRemoteTimers) {
|
||||
RemoteTimers_GetMatch_v1_0 rtMatch;
|
||||
rtMatch.event = event;
|
||||
pRemoteTimers->Service("RemoteTimers::GetMatch-v1.0", &rtMatch);
|
||||
@@ -123,11 +123,9 @@ cRecMenuConfirmTimer::cRecMenuConfirmTimer(const cEvent *event) {
|
||||
} else {
|
||||
eventHasTimer = event->HasTimer();
|
||||
}
|
||||
if (eventHasTimer) {
|
||||
message = tr("Timer created");
|
||||
} else {
|
||||
message = tr("Timer NOT created");
|
||||
}
|
||||
const cString message = (eventHasTimer) ? (timerChanged) ? tr("Timer changed")
|
||||
: tr("Timer created")
|
||||
: tr("Timer NOT created");
|
||||
cString text = cString::sprintf("%s\n%s\n%s %s - %s\n%s",
|
||||
*message,
|
||||
*channelName,
|
||||
@@ -197,8 +195,9 @@ cRecMenuAskDeleteTimer::cRecMenuAskDeleteTimer(const cEvent *event) {
|
||||
|
||||
// --- cRecMenuTimerConflicts ---------------------------------------------------------
|
||||
cRecMenuTimerConflicts::cRecMenuTimerConflicts(cTVGuideTimerConflicts *conflicts) {
|
||||
int numConflicts = conflicts->NumConflicts();
|
||||
SetWidthPercent(50);
|
||||
|
||||
int numConflicts = (conflicts) ? conflicts->NumConflicts() : 0;
|
||||
cString text;
|
||||
if (numConflicts == 1) {
|
||||
text = cString::sprintf("%s %s %s", tr("One"), tr("Timer Conflict"), tr("detected"));
|
||||
@@ -233,19 +232,21 @@ int cRecMenuTimerConflicts::GetTimerConflict(void) {
|
||||
}
|
||||
|
||||
// --- cRecMenuTimerConflict ---------------------------------------------------------
|
||||
cRecMenuTimerConflict::cRecMenuTimerConflict(cTVGuideTimerConflict *conflict) {
|
||||
cRecMenuTimerConflict::cRecMenuTimerConflict(cTVGuideTimerConflict *conflict, eRecMenuState nextAction) {
|
||||
SetWidthPercent(95);
|
||||
this->conflict = conflict;
|
||||
totalNumMenuItems = (int)conflict->timerIDs.size();
|
||||
|
||||
SetHeader(new cRecMenuItemTimerConflictHeader(conflict->timeStart,
|
||||
conflict->timeStop,
|
||||
conflict->overlapStart,
|
||||
conflict->overlapStop));
|
||||
SetFooter(new cRecMenuItemButton(tr("Ignore Conflict"), rmsIgnoreTimerConflict, false, true));
|
||||
SetFooter(new cRecMenuItemButton(tr("Ignore Conflict"), nextAction, false, true));
|
||||
int i=0;
|
||||
for(std::vector<int>::iterator it = conflict->timerIDs.begin(); it != conflict->timerIDs.end(); it++) {
|
||||
#if VDRVERSNUM >= 20301
|
||||
LOCK_TIMERS_READ;
|
||||
const cTimer *timer = Timers->Get(*it);
|
||||
const cTimer *timer = Timers->GetById(*it + 1);
|
||||
#else
|
||||
const cTimer *timer = Timers.Get(*it);
|
||||
#endif
|
||||
@@ -271,7 +272,7 @@ cRecMenuTimerConflict::cRecMenuTimerConflict(cTVGuideTimerConflict *conflict) {
|
||||
}
|
||||
|
||||
cRecMenuItem *cRecMenuTimerConflict::GetMenuItem(int number) {
|
||||
if ((number >= 0) && (number < (int)conflict->timerIDs.size())) {
|
||||
if ((number >= 0) && (number < totalNumMenuItems)) {
|
||||
#if VDRVERSNUM >= 20301
|
||||
LOCK_TIMERS_READ;
|
||||
const cTimer *timer = Timers->Get(conflict->timerIDs[number]);
|
||||
@@ -294,7 +295,7 @@ cRecMenuItem *cRecMenuTimerConflict::GetMenuItem(int number) {
|
||||
}
|
||||
|
||||
int cRecMenuTimerConflict::GetTotalNumMenuItems(void) {
|
||||
return conflict->timerIDs.size();
|
||||
return totalNumMenuItems;
|
||||
}
|
||||
|
||||
int cRecMenuTimerConflict::GetTimerConflictIndex(void) {
|
||||
@@ -426,7 +427,7 @@ cRecMenuEditTimer::cRecMenuEditTimer(const cTimer *timer, eRecMenuState nextStat
|
||||
AddMenuItemInitial(infoItem);
|
||||
|
||||
timerActive = false;
|
||||
if (tvguideConfig.useRemoteTimers && pRemoteTimers) {
|
||||
if (config.useRemoteTimers && pRemoteTimers) {
|
||||
RemoteTimers_GetMatch_v1_0 rtMatch;
|
||||
rtMatch.event = timer->Event();
|
||||
pRemoteTimers->Service("RemoteTimers::GetMatch-v1.0", &rtMatch);
|
||||
@@ -444,12 +445,12 @@ cRecMenuEditTimer::cRecMenuEditTimer(const cTimer *timer, eRecMenuState nextStat
|
||||
lifetime = timer->Lifetime();
|
||||
strncpy(folder, GetDirectoryFromTimer(timer->File()).c_str(), TEXTINPUTLENGTH);
|
||||
|
||||
AddMenuItemInitial(new cRecMenuItemBool(tr("Timer Active"), timerActive, false, true, &timerActive));
|
||||
AddMenuItemInitial(new cRecMenuItemInt(tr("Priority"), prio, 0, MAXPRIORITY, false, &prio));
|
||||
AddMenuItemInitial(new cRecMenuItemInt(tr("Lifetime"), lifetime, 0, MAXLIFETIME, false, &lifetime));
|
||||
AddMenuItemInitial(new cRecMenuItemDay(tr("Day"), day, false, &day));
|
||||
AddMenuItemInitial(new cRecMenuItemTime(tr("Timer start time"), start, false, &start));
|
||||
AddMenuItemInitial(new cRecMenuItemTime(tr("Timer stop time"), stop, false, &stop));
|
||||
AddMenuItemInitial(new cRecMenuItemBool(tr("Timer Active"), true, &timerActive));
|
||||
AddMenuItemInitial(new cRecMenuItemInt(tr("Priority"), 0, MAXPRIORITY, false, &prio));
|
||||
AddMenuItemInitial(new cRecMenuItemInt(tr("Lifetime"), 0, MAXLIFETIME, false, &lifetime));
|
||||
AddMenuItemInitial(new cRecMenuItemDay(tr("Day"), false, &day));
|
||||
AddMenuItemInitial(new cRecMenuItemTime(tr("Timer start time"), false, &start));
|
||||
AddMenuItemInitial(new cRecMenuItemTime(tr("Timer stop time"), false, &stop));
|
||||
cString fileInfo = cString::sprintf("%s:\n%s", tr("Timer File"), timer->File());
|
||||
cRecMenuItemInfo *fileInfoItem = new cRecMenuItemInfo(*fileInfo, false);
|
||||
fileInfoItem->CalculateHeight(width - 2 * border);
|
||||
@@ -470,17 +471,17 @@ const cTimer *cRecMenuEditTimer::GetOriginalTimer(void) {
|
||||
return originalTimer;
|
||||
}
|
||||
|
||||
cTimer cRecMenuEditTimer::GetTimer(void) {
|
||||
cTimer t;
|
||||
cTimer *cRecMenuEditTimer::GetTimer(void) {
|
||||
cTimer *t = (cTimer *)originalTimer;
|
||||
if (timerActive)
|
||||
t.SetFlags(tfActive);
|
||||
t->SetFlags(tfActive);
|
||||
else
|
||||
t.SetFlags(tfNone);
|
||||
t.SetDay(day);
|
||||
t.SetStart(start);
|
||||
t.SetStop(stop);
|
||||
t.SetPriority(prio);
|
||||
t.SetLifetime(lifetime);
|
||||
t->ClrFlags(tfActive);
|
||||
t->SetDay(day);
|
||||
t->SetStart(start);
|
||||
t->SetStop(stop);
|
||||
t->SetPriority(prio);
|
||||
t->SetLifetime(lifetime);
|
||||
std::string newFolder(folder);
|
||||
std::string newFile = originalTimer->File();
|
||||
size_t found = newFile.find_last_of('~');
|
||||
@@ -495,7 +496,7 @@ cTimer cRecMenuEditTimer::GetTimer(void) {
|
||||
newFile = *cString::sprintf("%s~%s", newFolder.c_str(), newFile.c_str());
|
||||
}
|
||||
std::replace(newFile.begin(), newFile.end(), '/', '~');
|
||||
t.SetFile(newFile.c_str());
|
||||
t->SetFile(newFile.c_str());
|
||||
return t;
|
||||
}
|
||||
|
||||
@@ -522,18 +523,14 @@ cRecMenuSeriesTimer::cRecMenuSeriesTimer(const cChannel *initialChannel, const c
|
||||
infoItem->CalculateHeight(width - 2 * border);
|
||||
SetHeader(infoItem);
|
||||
|
||||
AddMenuItem(new cRecMenuItemBool(tr("Timer Active"), timerActive, false, false, &timerActive));
|
||||
#if VDRVERSNUM >= 20301
|
||||
AddMenuItem(new cRecMenuItemChannelChooser(tr("Channel"), initialChannel, false, &channel));
|
||||
#else
|
||||
AddMenuItem(new cRecMenuItemChannelChooser(tr("Channel"), (cChannel*)initialChannel, false, &channel));
|
||||
#endif
|
||||
AddMenuItem(new cRecMenuItemTime(tr("Series Timer start time"), start, false, &start));
|
||||
AddMenuItem(new cRecMenuItemTime(tr("Series Timer stop time"), stop, false, &stop));
|
||||
AddMenuItem(new cRecMenuItemDayChooser(tr("Days to record"), dayOfWeek, false, &dayOfWeek));
|
||||
AddMenuItem(new cRecMenuItemDay(tr("Day to start"), tstart, false, &tstart));
|
||||
AddMenuItem(new cRecMenuItemInt(tr("Priority"), priority, 0, MAXPRIORITY, false, &priority));
|
||||
AddMenuItem(new cRecMenuItemInt(tr("Lifetime"), lifetime, 0, MAXLIFETIME, false, &lifetime));
|
||||
AddMenuItem(new cRecMenuItemBool(tr("Timer Active"), false, &timerActive));
|
||||
AddMenuItem(new cRecMenuItemChannelChooser(tr("Channel"), false, &channel));
|
||||
AddMenuItem(new cRecMenuItemTime(tr("Series Timer start time"), false, &start));
|
||||
AddMenuItem(new cRecMenuItemTime(tr("Series Timer stop time"), false, &stop));
|
||||
AddMenuItem(new cRecMenuItemDayChooser(tr("Days to record"), false, &dayOfWeek));
|
||||
AddMenuItem(new cRecMenuItemDay(tr("Day to start"), false, &tstart));
|
||||
AddMenuItem(new cRecMenuItemInt(tr("Priority"), 0, MAXPRIORITY, false, &priority));
|
||||
AddMenuItem(new cRecMenuItemInt(tr("Lifetime"), 0, MAXLIFETIME, false, &lifetime));
|
||||
|
||||
AddMenuItem(new cRecMenuItemButtonYesNo(tr("Create Timer"), tr("Cancel"), rmsSeriesTimerCreate, rmsClose, true));
|
||||
|
||||
@@ -615,7 +612,7 @@ cRecMenuSearchTimer::cRecMenuSearchTimer(const cEvent *event) {
|
||||
infoItem->CalculateHeight(width - 2 * border);
|
||||
SetHeader(infoItem);
|
||||
strncpy(searchString, event->Title(), TEXTINPUTLENGTH);
|
||||
AddMenuItemInitial(new cRecMenuItemText(tr("Search Expression:"), searchString, TEXTINPUTLENGTH, false));
|
||||
AddMenuItemInitial(new cRecMenuItemText(tr("Search Expression:"), TEXTINPUTLENGTH, false, searchString));
|
||||
AddMenuItemInitial(new cRecMenuItemButtonYesNo(tr("Continue"), tr("Cancel"), rmsSearchTimerOptions, rmsClose, true));
|
||||
CalculateHeight();
|
||||
CreatePixmap();
|
||||
@@ -721,14 +718,22 @@ int cRecMenuSearchTimers::GetTotalNumMenuItems(void) {
|
||||
cRecMenuSearchTimerEdit::cRecMenuSearchTimerEdit(cTVGuideSearchTimer searchTimer, std::vector<std::string> channelGroups) {
|
||||
init = true;
|
||||
deleteMenuItems = false;
|
||||
this->searchTimer = searchTimer;
|
||||
this->sT = searchTimer;
|
||||
this->channelGroups = channelGroups;
|
||||
strncpy(searchString, sT.searchString.c_str(), TEXTINPUTLENGTH);
|
||||
channelgroupIndex = -1;
|
||||
std::string dir = sT.directory;
|
||||
strncpy(directory, dir.c_str(), TEXTINPUTLENGTH);
|
||||
dayOfWeek = sT.DayOfWeek();
|
||||
dayOfWeek = DayOfWeek(sT.dayOfWeek);
|
||||
// dsyslog("Weekday = %i, %i", sT.dayOfWeek, dayOfWeek);
|
||||
indent = " ";
|
||||
|
||||
if (sT.useChannel == 1) {
|
||||
startChannel = (sT.channelMin) ? sT.channelMin->Number() : 0;
|
||||
stopChannel = (sT.channelMax) ? sT.channelMax->Number() : 0;
|
||||
if (startChannel == 0) startChannel = 1;
|
||||
if (stopChannel == 0) stopChannel = 1;
|
||||
}
|
||||
|
||||
sT.GetSearchModes(&searchModes);
|
||||
sT.GetUseChannelModes(&useChannelModes);
|
||||
@@ -759,6 +764,31 @@ cRecMenuSearchTimerEdit::~cRecMenuSearchTimerEdit(void) {
|
||||
mainMenuItems.clear();
|
||||
}
|
||||
|
||||
int cRecMenuSearchTimerEdit::DayOfWeek(int dayofWeek) {
|
||||
int vdrDayOfWeek = 0;
|
||||
if (dayofWeek > 0) {
|
||||
vdrDayOfWeek = pow(2, (dayofWeek + 6) % 7);
|
||||
} else if (dayofWeek < 0) {
|
||||
int absDayOfWeek = abs(dayofWeek);
|
||||
for (int i = 0; i < 7; i++) {
|
||||
if (absDayOfWeek & (1 << i)) {
|
||||
vdrDayOfWeek += pow(2, (i + 6) % 7);
|
||||
}
|
||||
}
|
||||
}
|
||||
return vdrDayOfWeek;
|
||||
}
|
||||
|
||||
int cRecMenuSearchTimerEdit::SetDayOfWeek(int VDRDayOfWeek) {
|
||||
int epgSearchDayOfWeek = 0;
|
||||
for (int i=0; i < 7; i++) {
|
||||
if (VDRDayOfWeek & (1 << i)) {
|
||||
epgSearchDayOfWeek += pow(2, (i+1)%7);
|
||||
}
|
||||
}
|
||||
return epgSearchDayOfWeek * (-1);
|
||||
}
|
||||
|
||||
int cRecMenuSearchTimerEdit::SplitChannelGroups(std::vector<std::string> *channelGroups, std::vector<std::string> *channelgroups) {
|
||||
int i = 0;
|
||||
int j = 0;
|
||||
@@ -790,94 +820,82 @@ void cRecMenuSearchTimerEdit::CreateMenuItems(void) {
|
||||
mainMenuItems.clear();
|
||||
}
|
||||
|
||||
mainMenuItems.push_back(new cRecMenuItemText(tr("Search term"), searchString, TEXTINPUTLENGTH, init, searchString));
|
||||
mainMenuItems.push_back(new cRecMenuItemBool(tr("Active"), sT.useAsSearchTimer, true, false, &sT.useAsSearchTimer, rmsSearchTimerSave));
|
||||
mainMenuItems.push_back(new cRecMenuItemSelect(tr("Search mode"), searchModes, sT.mode, false, &sT.mode, rmsSearchTimerSave, true));
|
||||
mainMenuItems.push_back(new cRecMenuItemText(tr("Search term"), TEXTINPUTLENGTH, init, searchString));
|
||||
mainMenuItems.push_back(new cRecMenuItemBool(tr("Active"), false, &sT.useAsSearchTimer, rmsSearchTimerSave, true));
|
||||
mainMenuItems.push_back(new cRecMenuItemSelect(tr("Search mode"), searchModes, false, &sT.mode, rmsSearchTimerSave, true));
|
||||
if (sT.mode == 5) {
|
||||
mainMenuItems.push_back(new cRecMenuItemInt(tr("Tolerance"), sT.fuzzyTolerance, 1, 9, false, &sT.fuzzyTolerance, rmsSearchTimerSave, 1));
|
||||
mainMenuItems.push_back(new cRecMenuItemInt(cString::sprintf("%s%s", *indent, tr("Tolerance")), 1, 9, false, &sT.fuzzyTolerance, rmsSearchTimerSave));
|
||||
}
|
||||
mainMenuItems.push_back(new cRecMenuItemBool(tr("Match case"), sT.useCase, false, false, &sT.useCase, rmsSearchTimerSave));
|
||||
mainMenuItems.push_back(new cRecMenuItemBool(tr("Use title"), sT.useTitle, false, false, &sT.useTitle, rmsSearchTimerSave));
|
||||
mainMenuItems.push_back(new cRecMenuItemBool(tr("Use subtitle"), sT.useSubtitle, false, false, &sT.useSubtitle, rmsSearchTimerSave));
|
||||
mainMenuItems.push_back(new cRecMenuItemBool(tr("Use description"), sT.useDescription, false, false, &sT.useDescription, rmsSearchTimerSave));
|
||||
// mainMenuItems.push_back(new cRecMenuItemBool(tr("Use content descriptor"), sT.useContentDescriptors, false, false, &sT.useContentDescriptors, rmsSearchTimerSave));
|
||||
mainMenuItems.push_back(new cRecMenuItemSelect(tr("Use channel"), useChannelModes, sT.useChannel, false, &sT.useChannel, rmsSearchTimerSave, true));
|
||||
mainMenuItems.push_back(new cRecMenuItemBool(tr("Match case"), false, &sT.useCase, rmsSearchTimerSave));
|
||||
mainMenuItems.push_back(new cRecMenuItemBool(tr("Use title"), false, &sT.useTitle, rmsSearchTimerSave));
|
||||
mainMenuItems.push_back(new cRecMenuItemBool(tr("Use subtitle"), false, &sT.useSubtitle, rmsSearchTimerSave));
|
||||
mainMenuItems.push_back(new cRecMenuItemBool(tr("Use description"), false, &sT.useDescription, rmsSearchTimerSave));
|
||||
// mainMenuItems.push_back(new cRecMenuItemBool(tr("Use content descriptor"), false, &sT.useContentDescriptors, rmsSearchTimerSave));
|
||||
mainMenuItems.push_back(new cRecMenuItemSelect(tr("Use channel"), useChannelModes, false, &sT.useChannel, rmsSearchTimerSave, true));
|
||||
if (sT.useChannel == 1) {
|
||||
startChannel = (sT.channelMin) ? sT.channelMin->Number() : 0;
|
||||
stopChannel = (sT.channelMax) ? sT.channelMax->Number() : 0;
|
||||
if (startChannel == 0) startChannel = 1;
|
||||
if (stopChannel == 0) stopChannel = 1;
|
||||
#if VDRVERSNUM >= 20301
|
||||
{
|
||||
LOCK_CHANNELS_READ;
|
||||
mainMenuItems.push_back(new cRecMenuItemChannelChooser(tr("from channel"), Channels->GetByNumber(startChannel), false, &startChannel, rmsSearchTimerSave, 1));
|
||||
mainMenuItems.push_back(new cRecMenuItemChannelChooser(tr("to channel"), Channels->GetByNumber(stopChannel), false, &stopChannel, rmsSearchTimerSave, 1));
|
||||
}
|
||||
#else
|
||||
mainMenuItems.push_back(new cRecMenuItemChannelChooser(tr("from channel"), Channels.GetByNumber(startChannel), false, &startChannel, rmsSearchTimerSave, 1));
|
||||
mainMenuItems.push_back(new cRecMenuItemChannelChooser(tr("to channel"), Channels.GetByNumber(stopChannel), false, &stopChannel, rmsSearchTimerSave, 1));
|
||||
#endif
|
||||
mainMenuItems.push_back(new cRecMenuItemChannelChooser(cString::sprintf("%s%s", *indent, tr("from channel")), false, &startChannel, rmsSearchTimerSave));
|
||||
mainMenuItems.push_back(new cRecMenuItemChannelChooser(cString::sprintf("%s%s", *indent, tr("to channel")), false, &stopChannel, rmsSearchTimerSave));
|
||||
}
|
||||
else if ((sT.useChannel == 2) && (channelgroups.size() > 0)) {
|
||||
mainMenuItems.push_back(new cRecMenuItemSelect(tr("Channel group"), channelgroups, channelgroupIndex, false, &channelgroupIndex, rmsSearchTimerSave, false, 1));
|
||||
mainMenuItems.push_back(new cRecMenuItemSelect(cString::sprintf("%s%s", *indent, tr("Channel group")), channelgroups, false, &channelgroupIndex, rmsSearchTimerSave, false));
|
||||
}
|
||||
mainMenuItems.push_back(new cRecMenuItemBool(tr("Use time"), sT.useTime, true, false, &sT.useTime, rmsSearchTimerSave));
|
||||
mainMenuItems.push_back(new cRecMenuItemBool(tr("Use time"), false, &sT.useTime, rmsSearchTimerSave, true));
|
||||
if (sT.useTime) {
|
||||
mainMenuItems.push_back(new cRecMenuItemTime(tr("Start after"), sT.startTime, false, &sT.startTime, rmsSearchTimerSave, 1));
|
||||
mainMenuItems.push_back(new cRecMenuItemTime(tr("Start before"), sT.stopTime, false, &sT.stopTime, rmsSearchTimerSave, 1));
|
||||
mainMenuItems.push_back(new cRecMenuItemTime(cString::sprintf("%s%s", *indent, tr("Start after")), false, &sT.startTime, rmsSearchTimerSave));
|
||||
mainMenuItems.push_back(new cRecMenuItemTime(cString::sprintf("%s%s", *indent, tr("Start before")), false, &sT.stopTime, rmsSearchTimerSave));
|
||||
}
|
||||
mainMenuItems.push_back(new cRecMenuItemBool(tr("Use duration"), sT.useDuration, true, false, &sT.useDuration, rmsSearchTimerSave));
|
||||
mainMenuItems.push_back(new cRecMenuItemBool(tr("Use duration"), false, &sT.useDuration, rmsSearchTimerSave, true));
|
||||
if (sT.useDuration) {
|
||||
mainMenuItems.push_back(new cRecMenuItemTime(tr("Min. duration"), sT.minDuration, false, &sT.minDuration, rmsSearchTimerSave, 1));
|
||||
mainMenuItems.push_back(new cRecMenuItemTime(tr("Max. duration"), sT.maxDuration, false, &sT.maxDuration, rmsSearchTimerSave, 1));
|
||||
mainMenuItems.push_back(new cRecMenuItemTime(cString::sprintf("%s%s", *indent, tr("Min. duration")), false, &sT.minDuration, rmsSearchTimerSave));
|
||||
mainMenuItems.push_back(new cRecMenuItemTime(cString::sprintf("%s%s", *indent, tr("Max. duration")), false, &sT.maxDuration, rmsSearchTimerSave));
|
||||
}
|
||||
mainMenuItems.push_back(new cRecMenuItemBool(tr("Use day of week"), sT.useDayOfWeek, true, false, &sT.useDayOfWeek, rmsSearchTimerSave));
|
||||
mainMenuItems.push_back(new cRecMenuItemBool(tr("Use day of week"), false, &sT.useDayOfWeek, rmsSearchTimerSave, true));
|
||||
if (sT.useDayOfWeek)
|
||||
mainMenuItems.push_back(new cRecMenuItemDayChooser(tr("Day of week"), dayOfWeek, false, &dayOfWeek, 1));
|
||||
mainMenuItems.push_back(new cRecMenuItemBool(tr("Use in Favorites"), sT.useInFavorites, false, false, &sT.useInFavorites, rmsSearchTimerSave));
|
||||
mainMenuItems.push_back(new cRecMenuItemBool(tr("Use as search timer"), sT.useAsSearchTimer, true, false, &sT.useAsSearchTimer, rmsSearchTimerSave));
|
||||
mainMenuItems.push_back(new cRecMenuItemDayChooser(cString::sprintf("%s%s", *indent, tr("Day of week")), false, &dayOfWeek));
|
||||
mainMenuItems.push_back(new cRecMenuItemBool(tr("Use in Favorites"), false, &sT.useInFavorites, rmsSearchTimerSave));
|
||||
mainMenuItems.push_back(new cRecMenuItemBool(tr("Use as search timer"), false, &sT.useAsSearchTimer, rmsSearchTimerSave, true));
|
||||
if (sT.useAsSearchTimer) {
|
||||
mainMenuItems.push_back(new cRecMenuItemSelect(tr("Action"), searchTimerModes, sT.action, false, &sT.action, rmsSearchTimerSave, true, 1));
|
||||
mainMenuItems.push_back(new cRecMenuItemSelect(cString::sprintf("%s%s", *indent, tr("Action")), searchTimerModes, false, &sT.action, rmsSearchTimerSave, true));
|
||||
if (sT.action == searchTimerActionSwitchOnly) {
|
||||
mainMenuItems.push_back(new cRecMenuItemInt(tr("Switch ... minutes before start"), sT.switchMinsBefore, 0, 99, false, &sT.switchMinsBefore, rmsSearchTimerSave, 2));
|
||||
mainMenuItems.push_back(new cRecMenuItemBool(tr("Unmute sound"), sT.unmuteSoundOnSwitch, false, false, &sT.unmuteSoundOnSwitch, rmsSearchTimerSave, 2));
|
||||
mainMenuItems.push_back(new cRecMenuItemInt(cString::sprintf("%s%s%s", *indent, *indent, tr("Switch ... minutes before start")), 0, 99, false, &sT.switchMinsBefore, rmsSearchTimerSave));
|
||||
mainMenuItems.push_back(new cRecMenuItemBool(cString::sprintf("%s%s%s", *indent, *indent, tr("Unmute sound")), false, &sT.unmuteSoundOnSwitch, rmsSearchTimerSave));
|
||||
}
|
||||
if (sT.action == searchTimerActionAnnounceAndSwitch) {
|
||||
mainMenuItems.push_back(new cRecMenuItemInt(tr("Ask ... minutes before start"), sT.switchMinsBefore, 0, 99, false, &sT.switchMinsBefore, rmsSearchTimerSave, 2));
|
||||
mainMenuItems.push_back(new cRecMenuItemBool(tr("Unmute sound"), sT.unmuteSoundOnSwitch, false, false, &sT.unmuteSoundOnSwitch, rmsSearchTimerSave, 2));
|
||||
mainMenuItems.push_back(new cRecMenuItemInt(cString::sprintf("%s%s%s", *indent, *indent, tr("Ask ... minutes before start")), 0, 99, false, &sT.switchMinsBefore, rmsSearchTimerSave));
|
||||
mainMenuItems.push_back(new cRecMenuItemBool(cString::sprintf("%s%s%s", *indent, *indent, tr("Unmute sound")), false, &sT.unmuteSoundOnSwitch, rmsSearchTimerSave));
|
||||
}
|
||||
if ((sT.action == searchTimerActionRecord) || (sT.action == searchTimerActionInactiveRecord)) {
|
||||
mainMenuItems.push_back(new cRecMenuItemBool(tr("Series Recording"), sT.useEpisode, false, false, &sT.useEpisode, rmsSearchTimerSave, 2));
|
||||
mainMenuItems.push_back(new cRecMenuItemSelectDirectory(tr("Directory"), std::string(directory), false, directory, rmsSearchTimerSave, true, 2));
|
||||
mainMenuItems.push_back(new cRecMenuItemInt(tr("Delete recordings after ... days"), sT.delAfterDays, 0, 999, false, &sT.delAfterDays, rmsSearchTimerSave, 2));
|
||||
mainMenuItems.push_back(new cRecMenuItemBool(cString::sprintf("%s%s%s", *indent, *indent, tr("Series Recording")), false, &sT.useEpisode, rmsSearchTimerSave));
|
||||
mainMenuItems.push_back(new cRecMenuItemSelectDirectory(cString::sprintf("%s%s%s", *indent, *indent, tr("Directory")), std::string(directory), false, directory, rmsSearchTimerSave, true));
|
||||
mainMenuItems.push_back(new cRecMenuItemInt(cString::sprintf("%s%s%s", *indent, *indent, tr("Delete recordings after ... days")), 0, 999, false, &sT.delAfterDays, rmsSearchTimerSave));
|
||||
if (sT.delAfterDays > 0) {
|
||||
mainMenuItems.push_back(new cRecMenuItemInt(tr("Keep ... recordings"), sT.recordingsKeep, 0, 999, false, &sT.recordingsKeep, rmsSearchTimerSave, 3));
|
||||
mainMenuItems.push_back(new cRecMenuItemInt(cString::sprintf("%s%s%s%s", *indent, *indent, *indent, tr("Keep ... recordings")), 0, 999, false, &sT.recordingsKeep, rmsSearchTimerSave));
|
||||
}
|
||||
mainMenuItems.push_back(new cRecMenuItemInt(tr("Pause when ... recordings exist"), sT.pauseOnNrRecordings, 0, 999, false, &sT.pauseOnNrRecordings, rmsSearchTimerSave, 2));
|
||||
mainMenuItems.push_back(new cRecMenuItemBool(tr("Avoid Repeats"), sT.avoidRepeats, true, false, &sT.avoidRepeats, rmsSearchTimerSave, 2));
|
||||
mainMenuItems.push_back(new cRecMenuItemInt(cString::sprintf("%s%s%s", *indent, *indent, tr("Pause when ... recordings exist")), 0, 999, false, &sT.pauseOnNrRecordings, rmsSearchTimerSave));
|
||||
mainMenuItems.push_back(new cRecMenuItemBool(cString::sprintf("%s%s%s", *indent, *indent, tr("Avoid Repeats")), false, &sT.avoidRepeats, rmsSearchTimerSave, true));
|
||||
if (sT.avoidRepeats) {
|
||||
mainMenuItems.push_back(new cRecMenuItemInt(tr("Allowed repeats"), sT.allowedRepeats, 0, 99, false, &sT.allowedRepeats, rmsSearchTimerSave, 3));
|
||||
mainMenuItems.push_back(new cRecMenuItemInt(cString::sprintf("%s%s%s%s", *indent, *indent, *indent, tr("Allowed repeats")), 0, 99, false, &sT.allowedRepeats, rmsSearchTimerSave));
|
||||
if (sT.allowedRepeats > 0) {
|
||||
mainMenuItems.push_back(new cRecMenuItemInt(tr("Only repeats within ... days"), sT.repeatsWithinDays, 0, 999, false, &sT.repeatsWithinDays, rmsSearchTimerSave, 4));
|
||||
mainMenuItems.push_back(new cRecMenuItemInt(cString::sprintf("%s%s%s%s%s", *indent, *indent, *indent, *indent, tr("Only repeats within ... days")), 0, 999, false, &sT.repeatsWithinDays, rmsSearchTimerSave));
|
||||
}
|
||||
mainMenuItems.push_back(new cRecMenuItemBool(tr("Compare Title"), sT.compareTitle, false, false, &sT.compareTitle, rmsSearchTimerSave, 3));
|
||||
mainMenuItems.push_back(new cRecMenuItemBool(tr("Compare Subtitle"), sT.compareSubtitle, false, false, &sT.compareSubtitle, rmsSearchTimerSave, 3));
|
||||
mainMenuItems.push_back(new cRecMenuItemBool(tr("Compare Description"), sT.compareSummary, true, false, &sT.compareSummary, rmsSearchTimerSave, 3));
|
||||
mainMenuItems.push_back(new cRecMenuItemBool(cString::sprintf("%s%s%s%s", *indent, *indent, *indent, tr("Compare Title")), false, &sT.compareTitle, rmsSearchTimerSave));
|
||||
mainMenuItems.push_back(new cRecMenuItemBool(cString::sprintf("%s%s%s%s", *indent, *indent, *indent, tr("Compare Subtitle")), false, &sT.compareSubtitle, rmsSearchTimerSave));
|
||||
mainMenuItems.push_back(new cRecMenuItemBool(cString::sprintf("%s%s%s%s", *indent, *indent, *indent, tr("Compare Description")), false, &sT.compareSummary, rmsSearchTimerSave, true));
|
||||
if (sT.compareSummary) {
|
||||
mainMenuItems.push_back(new cRecMenuItemInt(tr("Min. match in %"), sT.compareSummaryMatchInPercent, 1, 100, false, &sT.compareSummaryMatchInPercent, rmsSearchTimerSave, 4));
|
||||
mainMenuItems.push_back(new cRecMenuItemInt(cString::sprintf("%s%s%s%s%s", *indent, *indent, *indent, *indent, tr("Min. match in %")), 1, 100, false, &sT.compareSummaryMatchInPercent, rmsSearchTimerSave));
|
||||
}
|
||||
mainMenuItems.push_back(new cRecMenuItemSelect(tr("Compare date"), compareDateModes, sT.compareDate, false, &sT.compareDate, rmsSearchTimerSave, false, 3));
|
||||
mainMenuItems.push_back(new cRecMenuItemSelect(cString::sprintf("%s%s%s%s", *indent, *indent, *indent, tr("Compare date")), compareDateModes, false, &sT.compareDate, rmsSearchTimerSave, false));
|
||||
}
|
||||
mainMenuItems.push_back(new cRecMenuItemInt(tr("Priority"), sT.priority, 0, 99, false, &sT.priority, rmsSearchTimerSave, 2));
|
||||
mainMenuItems.push_back(new cRecMenuItemInt(tr("Lifetime"), sT.lifetime, 0, 99, false, &sT.lifetime, rmsSearchTimerSave, 2));
|
||||
mainMenuItems.push_back(new cRecMenuItemInt(tr("Time margin for start in minutes"), sT.marginStart, 0, 30, false, &sT.marginStart, rmsSearchTimerSave, 2));
|
||||
mainMenuItems.push_back(new cRecMenuItemInt(tr("Time margin for stop in minutes"), sT.marginStop, 0, 30, false, &sT.marginStop, rmsSearchTimerSave, 2));
|
||||
mainMenuItems.push_back(new cRecMenuItemBool(tr("Use VPS"), sT.useVPS, false, false, &sT.useVPS, rmsSearchTimerSave, 2));
|
||||
mainMenuItems.push_back(new cRecMenuItemSelect(tr("Auto delete"), delModes, sT.delMode, false, &sT.delMode, rmsSearchTimerSave, true, 2));
|
||||
mainMenuItems.push_back(new cRecMenuItemInt(cString::sprintf("%s%s%s", *indent, *indent, tr("Priority")), 0, 99, false, &sT.priority, rmsSearchTimerSave));
|
||||
mainMenuItems.push_back(new cRecMenuItemInt(cString::sprintf("%s%s%s", *indent, *indent, tr("Lifetime")), 0, 99, false, &sT.lifetime, rmsSearchTimerSave));
|
||||
mainMenuItems.push_back(new cRecMenuItemInt(cString::sprintf("%s%s%s", *indent, *indent, tr("Time margin for start in minutes")), 0, 30, false, &sT.marginStart, rmsSearchTimerSave));
|
||||
mainMenuItems.push_back(new cRecMenuItemInt(cString::sprintf("%s%s%s", *indent, *indent, tr("Time margin for stop in minutes")), 0, 30, false, &sT.marginStop, rmsSearchTimerSave));
|
||||
mainMenuItems.push_back(new cRecMenuItemBool(cString::sprintf("%s%s%s", *indent, *indent, tr("Use VPS")), false, &sT.useVPS, rmsSearchTimerSave));
|
||||
mainMenuItems.push_back(new cRecMenuItemSelect(cString::sprintf("%s%s%s", *indent, *indent, tr("Auto delete")), delModes, false, &sT.delMode, rmsSearchTimerSave, true));
|
||||
if (sT.delMode == 1)
|
||||
mainMenuItems.push_back(new cRecMenuItemInt(tr("after ... recordings"), sT.delAfterCountRecs, 0, 999, false, &sT.delAfterCountRecs, rmsSearchTimerSave, 3));
|
||||
mainMenuItems.push_back(new cRecMenuItemInt(cString::sprintf("%s%s%s%s", *indent, *indent, *indent, tr("after ... recordings")), 0, 999, false, &sT.delAfterCountRecs, rmsSearchTimerSave));
|
||||
else if (sT.delMode == 2)
|
||||
mainMenuItems.push_back(new cRecMenuItemInt(tr("after ... days after first rec."), sT.delAfterDaysOfFirstRec, 0, 999, false, &sT.delAfterDaysOfFirstRec, rmsSearchTimerSave, 3));
|
||||
mainMenuItems.push_back(new cRecMenuItemInt(cString::sprintf("%s%s%s%s", *indent, *indent, *indent, tr("after ... days after first rec.")), 0, 999, false, &sT.delAfterDaysOfFirstRec, rmsSearchTimerSave));
|
||||
}
|
||||
}
|
||||
mainMenuItems.push_back(new cRecMenuItemButton(tr("Display Results for Search Timer"), rmsSearchTimerTest, false));
|
||||
@@ -908,13 +926,7 @@ void cRecMenuSearchTimerEdit::CreateMenuItems(void) {
|
||||
}
|
||||
|
||||
cTVGuideSearchTimer cRecMenuSearchTimerEdit::GetSearchTimer(void) {
|
||||
searchTimer.SetSearchString(searchString);
|
||||
searchTimer.SetSearchMode(sT.mode);
|
||||
searchTimer.SetFuzzyTolerance(sT.fuzzyTolerance);
|
||||
searchTimer.SetUseCase(sT.useCase);
|
||||
searchTimer.SetUseTitle(sT.useTitle);
|
||||
searchTimer.SetUseSubtitle(sT.useSubtitle);
|
||||
searchTimer.SetUseDesription(sT.useDescription);
|
||||
sT.searchString = searchString;
|
||||
if (sT.useChannel == 1) {
|
||||
#if VDRVERSNUM >= 20301
|
||||
{
|
||||
@@ -926,67 +938,22 @@ cTVGuideSearchTimer cRecMenuSearchTimerEdit::GetSearchTimer(void) {
|
||||
sT.channelMin = Channels.GetByNumber(startChannel);
|
||||
sT.channelMax = Channels.GetByNumber(stopChannel);
|
||||
#endif
|
||||
searchTimer.SetStartChannel(sT.channelMin);
|
||||
searchTimer.SetStopChannel(sT.channelMax);
|
||||
}
|
||||
if (sT.useChannel == 2) {
|
||||
if (channelgroups.size() > 0) {
|
||||
std::string & channelGroup = channelgroups[channelgroupIndex];
|
||||
searchTimer.SetChannelGroup(channelGroup);
|
||||
sT.channelGroup = channelGroup;
|
||||
} else {
|
||||
sT.useChannel = 0;
|
||||
}
|
||||
}
|
||||
searchTimer.SetUseChannel(sT.useChannel);
|
||||
searchTimer.SetUseTime(sT.useTime);
|
||||
if (sT.useTime) {
|
||||
searchTimer.SetStartTime(sT.startTime);
|
||||
searchTimer.SetStopTime(sT.stopTime);
|
||||
}
|
||||
searchTimer.SetUseDuration(sT.useDuration);
|
||||
if (sT.useDuration) {
|
||||
searchTimer.SetMinDuration(sT.minDuration);
|
||||
searchTimer.SetMaxDuration(sT.maxDuration);
|
||||
}
|
||||
searchTimer.SetUseDayOfWeek(sT.useDayOfWeek);
|
||||
if (sT.useDayOfWeek) {
|
||||
searchTimer.SetDayOfWeek(dayOfWeek);
|
||||
sT.dayOfWeek = SetDayOfWeek(dayOfWeek);
|
||||
}
|
||||
searchTimer.SetUseAsSearchTimer(sT.useAsSearchTimer);
|
||||
searchTimer.SetAction(sT.action);
|
||||
searchTimer.SetSwitchMinsBefore(sT.switchMinsBefore);
|
||||
searchTimer.SetUnmuteSoundOnSwitch(sT.unmuteSoundOnSwitch);
|
||||
searchTimer.SetPriority(sT.priority);
|
||||
searchTimer.SetLifetime(sT.lifetime);
|
||||
searchTimer.SetUseEpisode(sT.useEpisode);
|
||||
std::string dir(directory);
|
||||
std::replace(dir.begin(), dir.end(), '/', '~');
|
||||
searchTimer.SetDirectory(dir);
|
||||
searchTimer.SetDelAfterDays(sT.delAfterDays);
|
||||
searchTimer.SetRecordingsKeep(sT.recordingsKeep);
|
||||
searchTimer.SetPauseOnNrRecordings(sT.pauseOnNrRecordings);
|
||||
searchTimer.SetMarginStart(sT.marginStart);
|
||||
searchTimer.SetMarginStop(sT.marginStop);
|
||||
searchTimer.SetUseVPS(sT.useVPS);
|
||||
searchTimer.SetAvoidRepeats(sT.avoidRepeats);
|
||||
if (sT.avoidRepeats) {
|
||||
searchTimer.SetAllowedRepeats(sT.allowedRepeats);
|
||||
if (sT.repeatsWithinDays > 0) {
|
||||
searchTimer.SetRepeatsWithinDays(sT.repeatsWithinDays);
|
||||
}
|
||||
searchTimer.SetCompareTitle(sT.compareTitle);
|
||||
searchTimer.SetCompareSubtitle(sT.compareSubtitle);
|
||||
searchTimer.SetCompareSummary(sT.compareSummary);
|
||||
if (sT.compareSummary) {
|
||||
searchTimer.SetCompareSummaryMatchInPercent(sT.compareSummaryMatchInPercent);
|
||||
}
|
||||
searchTimer.SetCompareDate(sT.compareDate);
|
||||
}
|
||||
searchTimer.SetUseInFavorites(sT.useInFavorites);
|
||||
searchTimer.SetDelMode(sT.delMode);
|
||||
searchTimer.SetDelAfterCountRecs(sT.delAfterCountRecs);
|
||||
searchTimer.SetDelAfterDaysOfFirstRec(sT.delAfterDaysOfFirstRec);
|
||||
return searchTimer;
|
||||
sT.directory = dir;
|
||||
return sT;
|
||||
}
|
||||
|
||||
int cRecMenuSearchTimerEdit::GetTotalNumMenuItems(void) {
|
||||
@@ -1148,8 +1115,8 @@ cRecMenuSearchTimerNothingFound::cRecMenuSearchTimerNothingFound(std::string sea
|
||||
|
||||
// --- cRecMenuSwitchTimer ---------------------------------------------------------
|
||||
cRecMenuSwitchTimer::cRecMenuSwitchTimer(void) {
|
||||
switchMinsBefore = tvguideConfig.switchMinsBefore;
|
||||
switchMode = tvguideConfig.switchMode;
|
||||
switchMinsBefore = config.switchMinsBefore;
|
||||
switchMode = config.switchMode;
|
||||
|
||||
SetWidthPercent(60);
|
||||
|
||||
@@ -1158,12 +1125,12 @@ cRecMenuSwitchTimer::cRecMenuSwitchTimer(void) {
|
||||
infoItem->CalculateHeight(width - 2 * border);
|
||||
AddMenuItem(infoItem);
|
||||
|
||||
AddMenuItem(new cRecMenuItemInt(tr("Minutes before switching"), switchMinsBefore, 0, 10, false, &switchMinsBefore));
|
||||
AddMenuItem(new cRecMenuItemInt(tr("Minutes before switching"), 0, 10, false, &switchMinsBefore));
|
||||
std::vector<std::string> switchModeItems;
|
||||
switchModeItems.push_back(tr("switch"));
|
||||
switchModeItems.push_back(tr("announce only"));
|
||||
switchModeItems.push_back(tr("ask for switch"));
|
||||
AddMenuItem(new cRecMenuItemSelect(tr("Switch Mode"), switchModeItems, switchMode, false, &switchMode));
|
||||
AddMenuItem(new cRecMenuItemSelect(tr("Switch Mode"), switchModeItems, false, &switchMode));
|
||||
|
||||
AddMenuItem(new cRecMenuItemButtonYesNo(tr("Create"), tr("Cancel"), rmsSwitchTimerCreate, rmsClose, true));
|
||||
|
||||
@@ -1231,16 +1198,16 @@ cRecMenuSearch::cRecMenuSearch(std::string searchString, bool withOptions) {
|
||||
cRecMenuItemInfo *infoItem = new cRecMenuItemInfo(*infoText, true);
|
||||
infoItem->CalculateHeight(width - 2 * border);
|
||||
SetHeader(infoItem);
|
||||
AddMenuItem(new cRecMenuItemText(tr("Search Expression:"), this->searchString, TEXTINPUTLENGTH, false, this->searchString));
|
||||
AddMenuItem(new cRecMenuItemText(tr("Search Expression:"), TEXTINPUTLENGTH, false, this->searchString));
|
||||
if (withOptions) {
|
||||
std::vector<std::string> searchModes;
|
||||
cTVGuideSearchTimer searchTimer;
|
||||
searchTimer.GetSearchModes(&searchModes);
|
||||
AddMenuItemInitial(new cRecMenuItemSelect(tr("Search Mode"), searchModes, 0, false, &mode));
|
||||
AddMenuItemInitial(new cRecMenuItemChannelChooser(tr("Channel to Search"), NULL, false, &channelNr));
|
||||
AddMenuItemInitial(new cRecMenuItemBool(tr("Search in title"), true, false, false, &useTitle));
|
||||
AddMenuItemInitial(new cRecMenuItemBool(tr("Search in Subtitle"), true, false, false, &useSubTitle));
|
||||
AddMenuItemInitial(new cRecMenuItemBool(tr("Search in Description"), false, false, false, &useDescription));
|
||||
AddMenuItemInitial(new cRecMenuItemSelect(tr("Search Mode"), searchModes, false, &mode));
|
||||
AddMenuItemInitial(new cRecMenuItemChannelChooser(tr("Channel to Search"), false, &channelNr));
|
||||
AddMenuItemInitial(new cRecMenuItemBool(tr("Search in title"), false, &useTitle));
|
||||
AddMenuItemInitial(new cRecMenuItemBool(tr("Search in Subtitle"), false, &useSubTitle));
|
||||
AddMenuItemInitial(new cRecMenuItemBool(tr("Search in Description"), false, &useDescription));
|
||||
} else {
|
||||
AddMenuItemInitial(new cRecMenuItemButton(tr("Show Search Options"), rmsSearchWithOptions, false));
|
||||
}
|
||||
@@ -1374,7 +1341,7 @@ cRecMenuRecordingSearch::cRecMenuRecordingSearch(std::string search) {
|
||||
infoItem->CalculateHeight(width - 2 * border);
|
||||
SetHeader(infoItem);
|
||||
|
||||
AddMenuItem(new cRecMenuItemText(tr("Search Expression:"), searchString, TEXTINPUTLENGTH, false, searchString));
|
||||
AddMenuItem(new cRecMenuItemText(tr("Search Expression:"), TEXTINPUTLENGTH, false, searchString));
|
||||
AddMenuItem(new cRecMenuItemButtonYesNo(tr("Perform Search"), tr("Cancel"), rmsRecordingSearchResult, rmsClose, true));
|
||||
CalculateHeight();
|
||||
CreatePixmap();
|
||||
@@ -1447,8 +1414,8 @@ cRecMenuTimeline::cRecMenuTimeline(cTVGuideTimerConflicts *timerConflicts) {
|
||||
SetStartStop();
|
||||
conflictsToday = timerConflicts->GetConflictsBetween(timeStart, timeStop);
|
||||
GetTimersForDay();
|
||||
SetWidthPercent(95);
|
||||
header = new cRecMenuItemTimelineHeader(timeStart, conflictsToday);
|
||||
SetWidthPercent(90);
|
||||
header = new cRecMenuItemTimelineHeader(timeStart, numTimersToday, conflictsToday);
|
||||
SetHeader(header);
|
||||
cRecMenuItem *footer = new cRecMenuItemButton(tr("Close"), rmsClose, false, true);
|
||||
SetFooter(footer);
|
||||
@@ -1468,26 +1435,40 @@ void cRecMenuTimeline::GetTimersForDay(void) {
|
||||
timersToday.clear();
|
||||
#if VDRVERSNUM >= 20301
|
||||
LOCK_TIMERS_READ;
|
||||
// const cTimers* timers = Timers;
|
||||
for (const cTimer *t = Timers->First(); t; t = Timers->Next(t)) {
|
||||
const cTimers* timers = Timers;
|
||||
cSortedTimers SortedTimers(timers);
|
||||
int i = 0;
|
||||
while (i < SortedTimers.Size()) {
|
||||
const cTimer *t = SortedTimers[i];
|
||||
if (((t->StartTime() > timeStart) && (t->StartTime() <= timeStop)) || ((t->StopTime() > timeStart) && (t->StopTime() <= timeStop))) {
|
||||
if (t->HasFlags(tfActive))
|
||||
timersToday.push_back(t);
|
||||
}
|
||||
i++;
|
||||
}
|
||||
#else
|
||||
for (const cTimer *t = Timers.First(); t; t = Timers.Next(t)) {
|
||||
#endif
|
||||
if (((t->StartTime() > timeStart) && (t->StartTime() <= timeStop)) || ((t->StopTime() > timeStart) && (t->StopTime() <= timeStop))) {
|
||||
timersToday.push_back(t);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
numTimersToday = timersToday.size();
|
||||
}
|
||||
|
||||
void cRecMenuTimeline::SetTimers(void) {
|
||||
ClearMenu();
|
||||
GetTimersForDay();
|
||||
conflictsToday = timerConflicts->GetConflictsBetween(timeStart, timeStop);
|
||||
header->UnsetCurrentTimer();
|
||||
header->SetDay(timeStart);
|
||||
header->RefreshTimerDisplay();
|
||||
header->SetNumTimersToday(numTimersToday);
|
||||
if (numTimersToday == 0) {
|
||||
AddMenuItem(new cRecMenuItemTimelineTimer(NULL, 0, 0, conflictsToday, header, false));
|
||||
header->UnsetCurrentTimer();
|
||||
footer->setActive();
|
||||
} else {
|
||||
for (int i=0; i<numTimersToday; i++) {
|
||||
for (int i = 0; i<numTimersToday; i++) {
|
||||
cRecMenuItemTimelineTimer *item = new cRecMenuItemTimelineTimer(timersToday[i], timeStart, timeStop, conflictsToday, header, false);
|
||||
if (i==0)
|
||||
item->setActive();
|
||||
@@ -1506,12 +1487,6 @@ void cRecMenuTimeline::PrevDay(void) {
|
||||
return;
|
||||
timeStart -= 3600*24;
|
||||
timeStop -= 3600*24;
|
||||
conflictsToday = timerConflicts->GetConflictsBetween(timeStart, timeStop);
|
||||
SetWidthPercent(95);
|
||||
header->SetDay(timeStart);
|
||||
header->UnsetCurrentTimer();
|
||||
header->RefreshTimerDisplay();
|
||||
GetTimersForDay();
|
||||
SetTimers();
|
||||
Display();
|
||||
}
|
||||
@@ -1519,12 +1494,6 @@ void cRecMenuTimeline::PrevDay(void) {
|
||||
void cRecMenuTimeline::NextDay(void) {
|
||||
timeStart += 3600*24;
|
||||
timeStop += 3600*24;
|
||||
conflictsToday = timerConflicts->GetConflictsBetween(timeStart, timeStop);
|
||||
SetWidthPercent(95);
|
||||
header->SetDay(timeStart);
|
||||
header->UnsetCurrentTimer();
|
||||
header->RefreshTimerDisplay();
|
||||
GetTimersForDay();
|
||||
SetTimers();
|
||||
Display();
|
||||
}
|
||||
@@ -1618,26 +1587,26 @@ cRecMenuFavorites::~cRecMenuFavorites(void) {
|
||||
}
|
||||
|
||||
void cRecMenuFavorites::CreateFavoritesMenuItems(void) {
|
||||
if (tvguideConfig.favWhatsOnNow) {
|
||||
if (config.favWhatsOnNow) {
|
||||
myMenuItems.push_back(new cRecMenuItemFavoriteStatic(tr("What's on now"), rmsFavoritesNow, false));
|
||||
}
|
||||
if (tvguideConfig.favWhatsOnNext) {
|
||||
if (config.favWhatsOnNext) {
|
||||
myMenuItems.push_back(new cRecMenuItemFavoriteStatic(tr("What's on next"), rmsFavoritesNext, false));
|
||||
}
|
||||
if (tvguideConfig.favUseTime1) {
|
||||
std::string desc = *cString::sprintf("%s (%s)", tvguideConfig.descUser1.c_str(), NiceTime(tvguideConfig.favTime1).c_str());
|
||||
if (config.favUseTime1) {
|
||||
std::string desc = *cString::sprintf("%s (%s)", config.descUser1.c_str(), NiceTime(config.favTime1).c_str());
|
||||
myMenuItems.push_back(new cRecMenuItemFavoriteStatic(desc, rmsFavoritesUser1, false));
|
||||
}
|
||||
if (tvguideConfig.favUseTime2) {
|
||||
std::string desc = *cString::sprintf("%s (%s)", tvguideConfig.descUser2.c_str(), NiceTime(tvguideConfig.favTime2).c_str());
|
||||
if (config.favUseTime2) {
|
||||
std::string desc = *cString::sprintf("%s (%s)", config.descUser2.c_str(), NiceTime(config.favTime2).c_str());
|
||||
myMenuItems.push_back(new cRecMenuItemFavoriteStatic(desc, rmsFavoritesUser2, false));
|
||||
}
|
||||
if (tvguideConfig.favUseTime3) {
|
||||
std::string desc = *cString::sprintf("%s (%s)", tvguideConfig.descUser3.c_str(), NiceTime(tvguideConfig.favTime3).c_str());
|
||||
if (config.favUseTime3) {
|
||||
std::string desc = *cString::sprintf("%s (%s)", config.descUser3.c_str(), NiceTime(config.favTime3).c_str());
|
||||
myMenuItems.push_back(new cRecMenuItemFavoriteStatic(desc, rmsFavoritesUser3, false));
|
||||
}
|
||||
if (tvguideConfig.favUseTime4) {
|
||||
std::string desc = *cString::sprintf("%s (%s)", tvguideConfig.descUser4.c_str(), NiceTime(tvguideConfig.favTime4).c_str());
|
||||
if (config.favUseTime4) {
|
||||
std::string desc = *cString::sprintf("%s (%s)", config.descUser4.c_str(), NiceTime(config.favTime4).c_str());
|
||||
myMenuItems.push_back(new cRecMenuItemFavoriteStatic(desc, rmsFavoritesUser4, false));
|
||||
}
|
||||
|
||||
|
13
recmenus.h
13
recmenus.h
@@ -47,7 +47,7 @@ public:
|
||||
// --- cRecMenuConfirmTimer ---------------------------------------------------------
|
||||
class cRecMenuConfirmTimer: public cRecMenu {
|
||||
public:
|
||||
cRecMenuConfirmTimer(const cEvent *event);
|
||||
cRecMenuConfirmTimer(const cEvent *event, bool timerChanged = false);
|
||||
virtual ~cRecMenuConfirmTimer(void) {};
|
||||
};
|
||||
|
||||
@@ -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);
|
||||
};
|
||||
|
||||
@@ -136,7 +137,7 @@ public:
|
||||
cRecMenuEditTimer(const cTimer *timer, eRecMenuState nextState);
|
||||
const cTimer *GetOriginalTimer(void);
|
||||
virtual ~cRecMenuEditTimer(void) {};
|
||||
cTimer GetTimer(void);
|
||||
cTimer *GetTimer(void);
|
||||
};
|
||||
|
||||
/******************************************************************************************
|
||||
@@ -216,7 +217,6 @@ public:
|
||||
// --- cRecMenuSearchTimerEdit ---------------------------------------------------------
|
||||
class cRecMenuSearchTimerEdit: public cRecMenu {
|
||||
private:
|
||||
cTVGuideSearchTimer searchTimer;
|
||||
cTVGuideSearchTimer sT;
|
||||
std::vector<std::string> searchModes;
|
||||
std::vector<std::string> useChannelModes;
|
||||
@@ -226,11 +226,14 @@ private:
|
||||
std::vector<std::string> delModes;
|
||||
std::vector<std::string> channelgroups;
|
||||
std::vector<cRecMenuItem*> mainMenuItems;
|
||||
cString indent;
|
||||
bool init;
|
||||
int numMenuItems;
|
||||
int useChannelPos;
|
||||
int useTimePos;
|
||||
int useDayOfWeekPos;
|
||||
int DayOfWeek(int dayofWeek = 0);
|
||||
int SetDayOfWeek(int VDRDayOfWeek);
|
||||
int avoidRepeatsPos;
|
||||
char searchString[TEXTINPUTLENGTH];
|
||||
bool timerActive;
|
||||
|
@@ -2,9 +2,9 @@
|
||||
#include "recmenus.h"
|
||||
#include "switchtimer.h"
|
||||
#include "timerconflict.h"
|
||||
#include "recmenumanager.h"
|
||||
#include "recmenuview.h"
|
||||
|
||||
cRecMenuManager::cRecMenuManager(void) {
|
||||
cRecMenuView::cRecMenuView(void) {
|
||||
footer = NULL;
|
||||
active = false;
|
||||
activeMenu = NULL;
|
||||
@@ -16,7 +16,7 @@ cRecMenuManager::cRecMenuManager(void) {
|
||||
detailViewActive = false;
|
||||
}
|
||||
|
||||
cRecMenuManager::~cRecMenuManager(void) {
|
||||
cRecMenuView::~cRecMenuView(void) {
|
||||
if (activeMenu) {
|
||||
active = false;
|
||||
delete activeMenu;
|
||||
@@ -29,7 +29,7 @@ cRecMenuManager::~cRecMenuManager(void) {
|
||||
delete recManager;
|
||||
}
|
||||
|
||||
void cRecMenuManager::Start(const cEvent *event) {
|
||||
void cRecMenuView::Start(const cEvent *event) {
|
||||
active = true;
|
||||
activeMenuBuffer = NULL;
|
||||
detailViewActive = false;
|
||||
@@ -40,7 +40,7 @@ void cRecMenuManager::Start(const cEvent *event) {
|
||||
osdManager.flush();
|
||||
}
|
||||
|
||||
void cRecMenuManager::StartFavorites(void) {
|
||||
void cRecMenuView::StartFavorites(void) {
|
||||
active = true;
|
||||
activeMenuBuffer = NULL;
|
||||
detailViewActive = false;
|
||||
@@ -53,7 +53,7 @@ void cRecMenuManager::StartFavorites(void) {
|
||||
}
|
||||
|
||||
|
||||
void cRecMenuManager::Close(void) {
|
||||
void cRecMenuView::Close(void) {
|
||||
event = NULL;
|
||||
active = false;
|
||||
if (activeMenu) {
|
||||
@@ -67,12 +67,12 @@ void cRecMenuManager::Close(void) {
|
||||
DeleteBackground();
|
||||
}
|
||||
|
||||
void cRecMenuManager::SetBackground(void) {
|
||||
void cRecMenuView::SetBackground(void) {
|
||||
int backgroundWidth = geoManager.osdWidth;
|
||||
int backgroundHeight = geoManager.osdHeight;
|
||||
pixmapBackground = osdManager.requestPixmap(3, cRect(0, 0, backgroundWidth, backgroundHeight));
|
||||
pixmapBackground->Fill(theme.Color(clrRecMenuBackground));
|
||||
if (tvguideConfig.scaleVideo) {
|
||||
if (config.scaleVideo) {
|
||||
int tvHeight = geoManager.statusHeaderHeight;
|
||||
int tvWidth = tvHeight * 16 / 9;
|
||||
int tvX = geoManager.osdWidth - tvWidth;
|
||||
@@ -80,16 +80,83 @@ void cRecMenuManager::SetBackground(void) {
|
||||
}
|
||||
}
|
||||
|
||||
void cRecMenuManager::DeleteBackground(void) {
|
||||
void cRecMenuView::DeleteBackground(void) {
|
||||
osdManager.releasePixmap(pixmapBackground);
|
||||
}
|
||||
|
||||
eOSState cRecMenuManager::StateMachine(eRecMenuState nextState) {
|
||||
void cRecMenuView::DisplaySearchTimerList(void) {
|
||||
delete activeMenu;
|
||||
std::vector<cTVGuideSearchTimer> searchTimers;
|
||||
recManager->GetSearchTimers(&searchTimers);
|
||||
activeMenu = new cRecMenuSearchTimers(searchTimers);
|
||||
activeMenu->Display();
|
||||
}
|
||||
|
||||
bool cRecMenuView::DisplayTimerConflict(const cTimer *timer) {
|
||||
#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)) {
|
||||
if (t == timer)
|
||||
return DisplayTimerConflict(timerID);
|
||||
timerID++;
|
||||
#endif
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool cRecMenuView::DisplayTimerConflict(int timerID) {
|
||||
if (timerConflicts)
|
||||
delete timerConflicts;
|
||||
timerConflicts = recManager->CheckTimerConflict();
|
||||
if (!timerConflicts)
|
||||
return false;
|
||||
int showTimerConflict = timerConflicts->GetCorrespondingConflict(timerID);
|
||||
if (showTimerConflict > -1) {
|
||||
timerConflicts->SetCurrentConflict(showTimerConflict);
|
||||
cTVGuideTimerConflict *conflict = timerConflicts->GetCurrentConflict();
|
||||
if (!conflict)
|
||||
return false;
|
||||
delete activeMenu;
|
||||
activeMenu = new cRecMenuTimerConflict(conflict, rmsIgnoreTimerConflict);
|
||||
activeMenu->Display();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void cRecMenuView::DisplayFavoriteResults(std::string header, const cEvent **result, int numResults) {
|
||||
if (numResults) {
|
||||
activeMenuBuffer = activeMenu;
|
||||
activeMenuBuffer->Hide();
|
||||
activeMenu = new cRecMenuSearchTimerResults(header, result, numResults, "", rmsFavoritesRecord);
|
||||
activeMenu->Display();
|
||||
} else {
|
||||
activeMenuBuffer = activeMenu;
|
||||
activeMenuBuffer->Hide();
|
||||
activeMenu = new cRecMenuSearchTimerNothingFound(header);
|
||||
activeMenu->Display();
|
||||
}
|
||||
}
|
||||
|
||||
void cRecMenuView::DisplayDetailedView(const cEvent *ev) {
|
||||
activeMenu->Hide();
|
||||
detailView = new cDetailView(ev, footer);
|
||||
footer->SetDetailedViewMode(true);
|
||||
detailView->Start();
|
||||
detailViewActive = true;
|
||||
}
|
||||
|
||||
eOSState cRecMenuView::StateMachine(eRecMenuState nextState) {
|
||||
eOSState state = osContinue;
|
||||
switch (nextState) {
|
||||
/***************************************************************************************
|
||||
* INSTANT RECORDING
|
||||
****************************************************************************************/
|
||||
/***************************************************************************************
|
||||
* INSTANT RECORDING
|
||||
****************************************************************************************/
|
||||
case rmsInstantRecord: {
|
||||
//caller: main menu or folder chooser
|
||||
//Creating timer for active Event, if no conflict, confirm and exit
|
||||
@@ -97,11 +164,16 @@ eOSState cRecMenuManager::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:
|
||||
@@ -111,12 +183,83 @@ eOSState cRecMenuManager::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
|
||||
if (recManager->IsRecorded(event)) {
|
||||
delete activeMenu;
|
||||
activeMenu = new cRecMenuAskDeleteTimer(event);
|
||||
activeMenu->Display();
|
||||
} else {
|
||||
recManager->DeleteTimer(event);
|
||||
if (config.timerMessage) {
|
||||
delete activeMenu;
|
||||
activeMenu = new cRecMenuConfirmDeleteTimer(event);
|
||||
activeMenu->Display();
|
||||
} else {
|
||||
Close();
|
||||
state = osEnd;
|
||||
}
|
||||
}
|
||||
break; }
|
||||
case rmsDeleteTimerConfirmation: {
|
||||
//delete running timer for active event
|
||||
recManager->DeleteTimer(event);
|
||||
if (config.timerMessage) {
|
||||
delete activeMenu;
|
||||
activeMenu = new cRecMenuConfirmDeleteTimer(event);
|
||||
activeMenu->Display();
|
||||
} else {
|
||||
Close();
|
||||
state = osEnd;
|
||||
}
|
||||
break; }
|
||||
case rmsEditTimer: {
|
||||
//edit timer for active event
|
||||
const cTimer *timer = recManager->GetTimerForEvent(event);
|
||||
if (timer) {
|
||||
delete activeMenu;
|
||||
activeMenu = new cRecMenuEditTimer(timer, rmsSaveTimer);
|
||||
activeMenu->Display();
|
||||
}
|
||||
break; }
|
||||
case rmsSaveTimer: {
|
||||
//caller: cRecMenuEditTimer
|
||||
//save timer for active event
|
||||
cTimer *timerModified;
|
||||
const cTimer *originalTimer;
|
||||
if (cRecMenuEditTimer *menu = dynamic_cast<cRecMenuEditTimer*>(activeMenu)) {
|
||||
timerModified = menu->GetTimer();
|
||||
originalTimer = menu->GetOriginalTimer();
|
||||
} else break;
|
||||
recManager->SaveTimer(originalTimer, timerModified);
|
||||
Close();
|
||||
state = osEnd;
|
||||
break; }
|
||||
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
|
||||
@@ -124,12 +267,18 @@ eOSState cRecMenuManager::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
|
||||
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();
|
||||
@@ -145,12 +294,30 @@ eOSState cRecMenuManager::StateMachine(eRecMenuState nextState) {
|
||||
if (cRecMenuTimerConflict *menu = dynamic_cast<cRecMenuTimerConflict*>(activeMenu)) {
|
||||
timerIndex = menu->GetTimerConflictIndex();
|
||||
} else break;
|
||||
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);
|
||||
recManager->DeleteTimer(timerID);
|
||||
delete activeMenu;
|
||||
timers = &Timers;
|
||||
event = timers->Get(timerID)->Event();
|
||||
#endif
|
||||
recManager->DeleteTimer(event);
|
||||
if (!DisplayTimerConflict(timerID)) {
|
||||
activeMenu = new cRecMenuConfirmTimer(event);
|
||||
activeMenu->Display();
|
||||
if (config.timerMessage) {
|
||||
delete activeMenu;
|
||||
activeMenu = new cRecMenuConfirmDeleteTimer(event);
|
||||
activeMenu->Display();
|
||||
} else {
|
||||
Close();
|
||||
state = osEnd;
|
||||
}
|
||||
}
|
||||
break; }
|
||||
case rmsEditTimerConflictMenu: {
|
||||
@@ -160,12 +327,18 @@ eOSState cRecMenuManager::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;
|
||||
@@ -176,71 +349,27 @@ eOSState cRecMenuManager::StateMachine(eRecMenuState nextState) {
|
||||
case rmsSaveTimerConflictMenu: {
|
||||
//caller: cRecMenuEditTimer
|
||||
//save timer from current timer conflict
|
||||
cTimer timerModified;
|
||||
cTimer *timerModified;
|
||||
const cTimer *originalTimer;
|
||||
if (cRecMenuEditTimer *menu = dynamic_cast<cRecMenuEditTimer*>(activeMenu)) {
|
||||
timerModified = menu->GetTimer();
|
||||
originalTimer = menu->GetOriginalTimer();
|
||||
} else break;
|
||||
recManager->SaveTimer(originalTimer, timerModified);
|
||||
delete activeMenu;
|
||||
if (!DisplayTimerConflict(originalTimer)) {
|
||||
activeMenu = new cRecMenuConfirmTimer(event);
|
||||
activeMenu->Display();
|
||||
if (config.timerMessage) {
|
||||
delete activeMenu;
|
||||
activeMenu = new cRecMenuConfirmTimer(originalTimer->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)) {
|
||||
activeMenu = new cRecMenuAskDeleteTimer(event);
|
||||
} else {
|
||||
recManager->DeleteTimer(event);
|
||||
activeMenu = new cRecMenuConfirmDeleteTimer(event);
|
||||
}
|
||||
activeMenu->Display();
|
||||
break;
|
||||
case rmsDeleteTimerConfirmation:
|
||||
//delete running timer for active event
|
||||
recManager->DeleteTimer(event);
|
||||
delete activeMenu;
|
||||
activeMenu = new cRecMenuConfirmDeleteTimer(event);
|
||||
activeMenu->Display();
|
||||
break;
|
||||
case rmsEditTimer: {
|
||||
//edit timer for active event
|
||||
const cTimer *timer;
|
||||
#if VDRVERSNUM >= 20301
|
||||
{
|
||||
LOCK_TIMERS_READ;
|
||||
timer = recManager->GetTimerForEvent(event);
|
||||
}
|
||||
#else
|
||||
timer = recManager->GetTimerForEvent(event);
|
||||
#endif
|
||||
if (timer) {
|
||||
delete activeMenu;
|
||||
activeMenu = new cRecMenuEditTimer(timer, rmsSaveTimer);
|
||||
activeMenu->Display();
|
||||
}
|
||||
break; }
|
||||
case rmsSaveTimer: {
|
||||
//caller: cRecMenuEditTimer
|
||||
//save timer for active event
|
||||
cTimer timerModified;
|
||||
const cTimer *originalTimer;
|
||||
if (cRecMenuEditTimer *menu = dynamic_cast<cRecMenuEditTimer*>(activeMenu)) {
|
||||
timerModified = menu->GetTimer();
|
||||
originalTimer = menu->GetOriginalTimer();
|
||||
} else break;
|
||||
recManager->SaveTimer(originalTimer, timerModified);
|
||||
state = osEnd;
|
||||
Close();
|
||||
break; }
|
||||
/***************************************************************************************
|
||||
* SERIES TIMER
|
||||
****************************************************************************************/
|
||||
/***************************************************************************************
|
||||
* SERIES TIMER
|
||||
****************************************************************************************/
|
||||
case rmsSeriesTimer: {
|
||||
//caller: main menu oder folder chooser
|
||||
std::string recFolder = "";
|
||||
@@ -275,9 +404,9 @@ eOSState cRecMenuManager::StateMachine(eRecMenuState nextState) {
|
||||
activeMenu = new cRecMenuConfirmSeriesTimer(seriesTimer);
|
||||
activeMenu->Display();
|
||||
break; }
|
||||
/**********************************************************************************************
|
||||
* SEARCH TIMER
|
||||
***********************************************************************************************/
|
||||
/**********************************************************************************************
|
||||
* SEARCH TIMER
|
||||
***********************************************************************************************/
|
||||
case rmsSearchTimer:
|
||||
//Caller: main menu
|
||||
//set search String for search timer
|
||||
@@ -363,13 +492,12 @@ eOSState cRecMenuManager::StateMachine(eRecMenuState nextState) {
|
||||
activeMenuBuffer = activeMenu;
|
||||
activeMenuBuffer->Hide();
|
||||
activeMenu = new cRecMenuSearchTimerResults(searchTimer.GetSearchString(), searchResult, numSearchResults, "", recState);
|
||||
activeMenu->Display();
|
||||
} else {
|
||||
activeMenuBuffer = activeMenu;
|
||||
activeMenuBuffer->Hide();
|
||||
activeMenu = new cRecMenuSearchTimerNothingFound(searchTimer.GetSearchString());
|
||||
activeMenu->Display();
|
||||
}
|
||||
activeMenu->Display();
|
||||
break; }
|
||||
case rmsSearchTimerSave: {
|
||||
//caller: cRecMenuSearchTimerEdit, cRecMenuSearchTimerTemplatesCreate
|
||||
@@ -448,66 +576,9 @@ eOSState cRecMenuManager::StateMachine(eRecMenuState nextState) {
|
||||
activeMenu = new cRecMenuSearchConfirmTimer(ev, rmsFavoritesRecordConfirm);
|
||||
activeMenu->Display();
|
||||
break; }
|
||||
/**********************************************************************************************
|
||||
* SWITCH TIMER
|
||||
***********************************************************************************************/
|
||||
case rmsSwitchTimer:
|
||||
delete activeMenu;
|
||||
activeMenu = new cRecMenuSwitchTimer();
|
||||
activeMenu->Display();
|
||||
break;
|
||||
case rmsSwitchTimerCreate: {
|
||||
cSwitchTimer switchTimer;
|
||||
if (cRecMenuSwitchTimer *menu = dynamic_cast<cRecMenuSwitchTimer*>(activeMenu)) {
|
||||
switchTimer = menu->GetSwitchTimer();
|
||||
} else break;
|
||||
bool success = recManager->CreateSwitchTimer(event, switchTimer);
|
||||
delete activeMenu;
|
||||
activeMenu = new cRecMenuSwitchTimerConfirm(success);
|
||||
activeMenu->Display();
|
||||
break; }
|
||||
case rmsSwitchTimerDelete:
|
||||
recManager->DeleteSwitchTimer(event);
|
||||
delete activeMenu;
|
||||
activeMenu = new cRecMenuSwitchTimerDelete();
|
||||
activeMenu->Display();
|
||||
break;
|
||||
/**********************************************************************************************
|
||||
* RECORDINGS SEARCH
|
||||
***********************************************************************************************/
|
||||
case rmsRecordingSearch: {
|
||||
//caller: main menu or rmsRecordingSearchResult
|
||||
std::string searchString = event->Title();
|
||||
if (cRecMenuRecordingSearchResults *menu = dynamic_cast<cRecMenuRecordingSearchResults*>(activeMenu)) {
|
||||
searchString = menu->GetSearchString();
|
||||
};
|
||||
delete activeMenu;
|
||||
activeMenu = new cRecMenuRecordingSearch(searchString);
|
||||
activeMenu->Display();
|
||||
break; }
|
||||
case rmsRecordingSearchResult: {
|
||||
//caller: cRecMenuRecordingSearch
|
||||
std::string searchString;
|
||||
if (cRecMenuRecordingSearch *menu = dynamic_cast<cRecMenuRecordingSearch*>(activeMenu)) {
|
||||
searchString = menu->GetSearchString();
|
||||
} else break;
|
||||
delete activeMenu;
|
||||
if (searchString.size() < 4) {
|
||||
activeMenu = new cRecMenuRecordingSearch(searchString);
|
||||
} else {
|
||||
int numSearchResults = 0;
|
||||
const cRecording **searchResult = recManager->SearchForRecordings(searchString, numSearchResults);
|
||||
if (numSearchResults == 0) {
|
||||
activeMenu = new cRecMenuRecordingSearchNotFound(searchString);
|
||||
} else {
|
||||
activeMenu = new cRecMenuRecordingSearchResults(searchString, searchResult, numSearchResults);
|
||||
}
|
||||
}
|
||||
activeMenu->Display();
|
||||
break; }
|
||||
/**********************************************************************************************
|
||||
* SEARCH
|
||||
***********************************************************************************************/
|
||||
/**********************************************************************************************
|
||||
* SEARCH
|
||||
***********************************************************************************************/
|
||||
case rmsSearch:
|
||||
case rmsSearchWithOptions: {
|
||||
//caller: main menu, cRecMenuSearch, cRecMenuSearchResults
|
||||
@@ -587,9 +658,33 @@ eOSState cRecMenuManager::StateMachine(eRecMenuState nextState) {
|
||||
activeMenu->UpdateActiveMenuItem();
|
||||
activeMenu->Show();
|
||||
break;
|
||||
/**********************************************************************************************
|
||||
* CHECK FOR TIMER CONFLICTS
|
||||
***********************************************************************************************/
|
||||
/**********************************************************************************************
|
||||
* SWITCH TIMER
|
||||
***********************************************************************************************/
|
||||
case rmsSwitchTimer:
|
||||
delete activeMenu;
|
||||
activeMenu = new cRecMenuSwitchTimer();
|
||||
activeMenu->Display();
|
||||
break;
|
||||
case rmsSwitchTimerCreate: {
|
||||
cSwitchTimer switchTimer;
|
||||
if (cRecMenuSwitchTimer *menu = dynamic_cast<cRecMenuSwitchTimer*>(activeMenu)) {
|
||||
switchTimer = menu->GetSwitchTimer();
|
||||
} else break;
|
||||
bool success = recManager->CreateSwitchTimer(event, switchTimer);
|
||||
delete activeMenu;
|
||||
activeMenu = new cRecMenuSwitchTimerConfirm(success);
|
||||
activeMenu->Display();
|
||||
break; }
|
||||
case rmsSwitchTimerDelete:
|
||||
recManager->DeleteSwitchTimer(event);
|
||||
delete activeMenu;
|
||||
activeMenu = new cRecMenuSwitchTimerDelete();
|
||||
activeMenu->Display();
|
||||
break;
|
||||
/**********************************************************************************************
|
||||
* CHECK FOR TIMER CONFLICTS
|
||||
***********************************************************************************************/
|
||||
case rmsTimerConflicts: {
|
||||
//caller: main menu
|
||||
//Show timer conflict
|
||||
@@ -617,7 +712,7 @@ eOSState cRecMenuManager::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: {
|
||||
@@ -629,12 +724,18 @@ eOSState cRecMenuManager::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();
|
||||
@@ -645,13 +746,12 @@ eOSState cRecMenuManager::StateMachine(eRecMenuState nextState) {
|
||||
activeMenuBuffer = activeMenu;
|
||||
activeMenuBuffer->Hide();
|
||||
activeMenu = new cRecMenuRerunResults(event, reruns, numReruns);
|
||||
activeMenu->Display();
|
||||
} else {
|
||||
activeMenuBuffer = activeMenu;
|
||||
activeMenuBuffer->Hide();
|
||||
activeMenu = new cRecMenuNoRerunsFound((event->Title())?event->Title():"");
|
||||
activeMenu->Display();
|
||||
activeMenu = new cRecMenuNoRerunsFound((event->Title()) ? event->Title() : "");
|
||||
}
|
||||
activeMenu->Display();
|
||||
}
|
||||
}
|
||||
break; }
|
||||
@@ -677,12 +777,16 @@ eOSState cRecMenuManager::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);
|
||||
@@ -695,9 +799,9 @@ eOSState cRecMenuManager::StateMachine(eRecMenuState nextState) {
|
||||
activeMenu->Display();
|
||||
}
|
||||
break; }
|
||||
/**********************************************************************************************
|
||||
* TIMELINE
|
||||
***********************************************************************************************/
|
||||
/**********************************************************************************************
|
||||
* TIMELINE
|
||||
***********************************************************************************************/
|
||||
case rmsTimeline: {
|
||||
if (timerConflicts) {
|
||||
delete timerConflicts;
|
||||
@@ -719,7 +823,7 @@ eOSState cRecMenuManager::StateMachine(eRecMenuState nextState) {
|
||||
}
|
||||
break;}
|
||||
case rmsTimelineTimerSave: {
|
||||
cTimer timerModified;
|
||||
cTimer *timerModified;
|
||||
const cTimer *originalTimer;
|
||||
if (cRecMenuEditTimer *menu = dynamic_cast<cRecMenuEditTimer*>(activeMenu)) {
|
||||
timerModified = menu->GetTimer();
|
||||
@@ -739,14 +843,7 @@ eOSState cRecMenuManager::StateMachine(eRecMenuState nextState) {
|
||||
if (cRecMenuEditTimer *menu = dynamic_cast<cRecMenuEditTimer*>(activeMenu)) {
|
||||
timer = menu->GetOriginalTimer();
|
||||
} else break;
|
||||
#if VDRVERSNUM >= 20301
|
||||
{
|
||||
LOCK_TIMERS_WRITE;
|
||||
recManager->DeleteTimer(Timers->GetTimer(timer));
|
||||
}
|
||||
#else
|
||||
recManager->DeleteTimer(Timers.GetTimer((cTimer*)timer));
|
||||
#endif
|
||||
recManager->DeleteTimer(timer);
|
||||
delete activeMenu;
|
||||
if (timerConflicts) {
|
||||
delete timerConflicts;
|
||||
@@ -755,9 +852,42 @@ eOSState cRecMenuManager::StateMachine(eRecMenuState nextState) {
|
||||
activeMenu = new cRecMenuTimeline(timerConflicts);
|
||||
activeMenu->Display();
|
||||
break; }
|
||||
/**********************************************************************************************
|
||||
* FAVORITES
|
||||
*********************************************************************************************/
|
||||
/**********************************************************************************************
|
||||
* RECORDINGS SEARCH
|
||||
***********************************************************************************************/
|
||||
case rmsRecordingSearch: {
|
||||
//caller: main menu or rmsRecordingSearchResult
|
||||
std::string searchString = event->Title();
|
||||
if (cRecMenuRecordingSearchResults *menu = dynamic_cast<cRecMenuRecordingSearchResults*>(activeMenu)) {
|
||||
searchString = menu->GetSearchString();
|
||||
};
|
||||
delete activeMenu;
|
||||
activeMenu = new cRecMenuRecordingSearch(searchString);
|
||||
activeMenu->Display();
|
||||
break; }
|
||||
case rmsRecordingSearchResult: {
|
||||
//caller: cRecMenuRecordingSearch
|
||||
std::string searchString;
|
||||
if (cRecMenuRecordingSearch *menu = dynamic_cast<cRecMenuRecordingSearch*>(activeMenu)) {
|
||||
searchString = menu->GetSearchString();
|
||||
} else break;
|
||||
delete activeMenu;
|
||||
if (searchString.size() < 4) {
|
||||
activeMenu = new cRecMenuRecordingSearch(searchString);
|
||||
} else {
|
||||
int numSearchResults = 0;
|
||||
const cRecording **searchResult = recManager->SearchForRecordings(searchString, numSearchResults);
|
||||
if (numSearchResults == 0) {
|
||||
activeMenu = new cRecMenuRecordingSearchNotFound(searchString);
|
||||
} else {
|
||||
activeMenu = new cRecMenuRecordingSearchResults(searchString, searchResult, numSearchResults);
|
||||
}
|
||||
}
|
||||
activeMenu->Display();
|
||||
break; }
|
||||
/**********************************************************************************************
|
||||
* FAVORITES
|
||||
*********************************************************************************************/
|
||||
case rmsFavoritesRecord: {
|
||||
//caller: cRecMenuSearchTimerResults
|
||||
const cEvent *ev = NULL;
|
||||
@@ -797,27 +927,27 @@ eOSState cRecMenuManager::StateMachine(eRecMenuState nextState) {
|
||||
case rmsFavoritesUser1: {
|
||||
int numResults = 0;
|
||||
const cEvent **result = recManager->UserDefinedTime(1, numResults);
|
||||
DisplayFavoriteResults(tvguideConfig.descUser1, result, numResults);
|
||||
DisplayFavoriteResults(config.descUser1, result, numResults);
|
||||
break; }
|
||||
case rmsFavoritesUser2: {
|
||||
int numResults = 0;
|
||||
const cEvent **result = recManager->UserDefinedTime(2, numResults);
|
||||
DisplayFavoriteResults(tvguideConfig.descUser2, result, numResults);
|
||||
DisplayFavoriteResults(config.descUser2, result, numResults);
|
||||
break; }
|
||||
case rmsFavoritesUser3: {
|
||||
int numResults = 0;
|
||||
const cEvent **result = recManager->UserDefinedTime(3, numResults);
|
||||
DisplayFavoriteResults(tvguideConfig.descUser3, result, numResults);
|
||||
DisplayFavoriteResults(config.descUser3, result, numResults);
|
||||
break; }
|
||||
case rmsFavoritesUser4: {
|
||||
int numResults = 0;
|
||||
const cEvent **result = recManager->UserDefinedTime(4, numResults);
|
||||
DisplayFavoriteResults(tvguideConfig.descUser4, result, numResults);
|
||||
DisplayFavoriteResults(config.descUser4, result, numResults);
|
||||
break; }
|
||||
|
||||
/**********************************************************************************************
|
||||
* COMMON
|
||||
*********************************************************************************************/
|
||||
/**********************************************************************************************
|
||||
* COMMON
|
||||
*********************************************************************************************/
|
||||
case rmsClose: {
|
||||
if (activeMenuBuffer == NULL) {
|
||||
state = osEnd;
|
||||
@@ -837,71 +967,7 @@ eOSState cRecMenuManager::StateMachine(eRecMenuState nextState) {
|
||||
return state;
|
||||
}
|
||||
|
||||
void cRecMenuManager::DisplayFavoriteResults(std::string header, const cEvent **result, int numResults) {
|
||||
if (numResults) {
|
||||
activeMenuBuffer = activeMenu;
|
||||
activeMenuBuffer->Hide();
|
||||
activeMenu = new cRecMenuSearchTimerResults(header, result, numResults, "", rmsFavoritesRecord);
|
||||
activeMenu->Display();
|
||||
} else {
|
||||
activeMenuBuffer = activeMenu;
|
||||
activeMenuBuffer->Hide();
|
||||
activeMenu = new cRecMenuSearchTimerNothingFound(header);
|
||||
activeMenu->Display();
|
||||
}
|
||||
}
|
||||
|
||||
void cRecMenuManager::DisplaySearchTimerList(void) {
|
||||
delete activeMenu;
|
||||
std::vector<cTVGuideSearchTimer> searchTimers;
|
||||
recManager->GetSearchTimers(&searchTimers);
|
||||
activeMenu = new cRecMenuSearchTimers(searchTimers);
|
||||
activeMenu->Display();
|
||||
}
|
||||
|
||||
bool cRecMenuManager::DisplayTimerConflict(const cTimer *timer) {
|
||||
int timerID = 0;
|
||||
#if VDRVERSNUM >= 20301
|
||||
LOCK_TIMERS_READ;
|
||||
for (const cTimer *t = Timers->First(); t; t = Timers->Next(t)) {
|
||||
#else
|
||||
for (const cTimer *t = Timers.First(); t; t = Timers.Next(t)) {
|
||||
#endif
|
||||
if (t == timer)
|
||||
return DisplayTimerConflict(timerID);
|
||||
timerID++;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool cRecMenuManager::DisplayTimerConflict(int timerID) {
|
||||
if (timerConflicts)
|
||||
delete timerConflicts;
|
||||
timerConflicts = recManager->CheckTimerConflict();
|
||||
if (!timerConflicts)
|
||||
return false;
|
||||
int showTimerConflict = timerConflicts->GetCorrespondingConflict(timerID);
|
||||
if (showTimerConflict > -1) {
|
||||
timerConflicts->SetCurrentConflict(showTimerConflict);
|
||||
cTVGuideTimerConflict *conflict = timerConflicts->GetCurrentConflict();
|
||||
if (!conflict)
|
||||
return false;
|
||||
activeMenu = new cRecMenuTimerConflict(conflict);
|
||||
activeMenu->Display();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void cRecMenuManager::DisplayDetailedView(const cEvent *ev) {
|
||||
activeMenu->Hide();
|
||||
detailView = new cDetailView(ev, footer);
|
||||
footer->SetDetailedViewMode(true);
|
||||
detailView->Start();
|
||||
detailViewActive = true;
|
||||
}
|
||||
|
||||
eOSState cRecMenuManager::ProcessKey(eKeys Key) {
|
||||
eOSState cRecMenuView::ProcessKey(eKeys Key) {
|
||||
eOSState state = osContinue;
|
||||
eRecMenuState nextState = rmsContinue;
|
||||
if (!activeMenu)
|
@@ -1,13 +1,13 @@
|
||||
#ifndef __TVGUIDE_RECMENUMANAGER_H
|
||||
#define __TVGUIDE_RECMENUMANAGER_H
|
||||
#ifndef __TVGUIDE_RECMENUVIEW_H
|
||||
#define __TVGUIDE_RECMENUVIEW_H
|
||||
|
||||
#include "recmenu.h"
|
||||
#include "recmanager.h"
|
||||
#include "services/epgsearch.h"
|
||||
#include "footer.h"
|
||||
|
||||
// --- cRecMenuManager -------------------------------------------------------------
|
||||
class cRecMenuManager {
|
||||
// --- cRecMenuView -------------------------------------------------------------
|
||||
class cRecMenuView {
|
||||
private:
|
||||
cFooter *footer;
|
||||
bool active;
|
||||
@@ -30,8 +30,8 @@ private:
|
||||
void DisplayFavoriteResults(std::string header, const cEvent **result, int numResults);
|
||||
eOSState StateMachine(eRecMenuState nextState);
|
||||
public:
|
||||
cRecMenuManager(void);
|
||||
virtual ~cRecMenuManager(void);
|
||||
cRecMenuView(void);
|
||||
virtual ~cRecMenuView(void);
|
||||
void SetFooter(cFooter *footer) { this->footer = footer; };
|
||||
bool isActive(void) { return active; };
|
||||
void Start(const cEvent *event);
|
||||
@@ -40,4 +40,4 @@ public:
|
||||
eOSState ProcessKey(eKeys Key);
|
||||
};
|
||||
|
||||
#endif //__TVGUIDE_RECMENUMANAGER_H
|
||||
#endif //__TVGUIDE_RECMENUVIEW_H
|
@@ -97,31 +97,6 @@ void cTVGuideSearchTimer::SetTemplate(std::string tmpl) {
|
||||
strTimer = searchTimerString.str();
|
||||
}
|
||||
|
||||
int cTVGuideSearchTimer::DayOfWeek(void) {
|
||||
int vdrDayOfWeek = 0;
|
||||
if (dayOfWeek >= 0) {
|
||||
vdrDayOfWeek = pow(2, (dayOfWeek+6)%7);
|
||||
} else if (dayOfWeek < 0) {
|
||||
int absDayOfWeek = abs(dayOfWeek);
|
||||
for (int i=0; i < 7; i++) {
|
||||
if (absDayOfWeek & (1 << i)) {
|
||||
vdrDayOfWeek += pow(2, (i+6)%7);
|
||||
}
|
||||
}
|
||||
}
|
||||
return vdrDayOfWeek;
|
||||
}
|
||||
|
||||
void cTVGuideSearchTimer::SetDayOfWeek(int VDRDayOfWeek) {
|
||||
int epgSearchDayOfWeek = 0;
|
||||
for (int i=0; i < 7; i++) {
|
||||
if (VDRDayOfWeek & (1 << i)) {
|
||||
epgSearchDayOfWeek += pow(2, (i+1)%7);
|
||||
}
|
||||
}
|
||||
this->dayOfWeek = epgSearchDayOfWeek * (-1);
|
||||
}
|
||||
|
||||
/*
|
||||
0 - unique search timer id
|
||||
1 - the search term
|
||||
|
@@ -12,13 +12,8 @@ protected:
|
||||
int startTime;
|
||||
int stopTime;
|
||||
int useChannel;
|
||||
#if VDRVERSNUM >= 20301
|
||||
const cChannel *channelMin;
|
||||
const cChannel *channelMax;
|
||||
#else
|
||||
cChannel *channelMin;
|
||||
cChannel *channelMax;
|
||||
#endif
|
||||
std::string channelGroup;
|
||||
int useCase;
|
||||
int mode;
|
||||
@@ -79,54 +74,9 @@ public:
|
||||
//GETTER
|
||||
std::string GetSearchString(void) const { return searchString; };
|
||||
bool IsActive(void);
|
||||
int DayOfWeek(void);
|
||||
bool UseInFavorites(void) { return useInFavorites; };
|
||||
//SETTER
|
||||
void SetSearchString(std::string searchString) { this->searchString = searchString; };
|
||||
void SetSearchMode(int mode) { this->mode = mode; };
|
||||
void SetFuzzyTolerance(int fuzzyTolerance) { this->fuzzyTolerance = fuzzyTolerance; };
|
||||
void SetUseCase(bool useCase) { this->useCase = useCase; };
|
||||
void SetUseTitle(bool useTitle) { this->useTitle = useTitle; };
|
||||
void SetUseSubtitle(bool useSubtitle) { this->useSubtitle = useSubtitle; };
|
||||
void SetUseDesription(bool useDescription) { this->useDescription = useDescription; };
|
||||
void SetUseChannel(int useChannel) { this->useChannel = useChannel; };
|
||||
void SetStartChannel(const cChannel *channelMin) { this->channelMin = channelMin; };
|
||||
void SetStopChannel(const cChannel *channelMax) { this->channelMax = channelMax; };
|
||||
void SetChannelGroup(std::string channelGroup) { this->channelGroup = channelGroup; };
|
||||
void SetUseTime(bool useTime) { this->useTime = useTime; };
|
||||
void SetStartTime(int startTime) { this->startTime = startTime; };
|
||||
void SetStopTime(int stopTime) { this->stopTime = stopTime; };
|
||||
void SetUseDayOfWeek(bool useDayOfWeek) { this->useDayOfWeek = useDayOfWeek; };
|
||||
void SetDayOfWeek(int VDRDayOfWeek);
|
||||
void SetUseDuration(bool useDuration) { this->useDuration = useDuration; };
|
||||
void SetMinDuration(int minDuration) { this->minDuration = minDuration; };
|
||||
void SetMaxDuration(int maxDuration) { this->maxDuration = maxDuration; };
|
||||
void SetUseEpisode(int useEpisode) { this->useEpisode = useEpisode; };
|
||||
void SetDirectory(std::string directory) { this-> directory = directory; };
|
||||
void SetDelAfterDays(int delAfterDays) { this->delAfterDays = delAfterDays; };
|
||||
void SetRecordingsKeep(int recordingsKeep) { this->recordingsKeep = recordingsKeep; };
|
||||
void SetPauseOnNrRecordings(int pauseOnNrRecordings) { this-> pauseOnNrRecordings = pauseOnNrRecordings; };
|
||||
void SetPriority(int priority) { this->priority = priority; };
|
||||
void SetLifetime(int lifetime) { this->lifetime = lifetime; };
|
||||
void SetMarginStart(int marginStart) { this->marginStart = marginStart; };
|
||||
void SetMarginStop(int marginStop) { this->marginStop = marginStop; };
|
||||
void SetUseVPS(bool useVPS) { this->useVPS = useVPS; };
|
||||
void SetAvoidRepeats(bool avoidRepeats) { this->avoidRepeats = avoidRepeats; };
|
||||
void SetAllowedRepeats(int allowedRepeats) { this->allowedRepeats = allowedRepeats; };
|
||||
void SetRepeatsWithinDays(int repeatsWithinDays) { this-> repeatsWithinDays = repeatsWithinDays; };
|
||||
void SetCompareTitle(bool compareTitle) { this->compareTitle = compareTitle; };
|
||||
void SetCompareSubtitle(bool compareSubtitle) { this->compareSubtitle = compareSubtitle; };
|
||||
void SetCompareSummary(bool compareSummary) { this->compareSummary = compareSummary; };
|
||||
void SetCompareSummaryMatchInPercent(int compareSummaryMatchInPercent) { this->compareSummaryMatchInPercent = compareSummaryMatchInPercent; };
|
||||
void SetCompareDate(int compareDate) { this->compareDate = compareDate; };
|
||||
void SetUseInFavorites(bool useInFavorites) { this->useInFavorites = useInFavorites; };
|
||||
void SetUseAsSearchTimer(bool useAsSearchTimer) { this->useAsSearchTimer = useAsSearchTimer; };
|
||||
void SetAction(int action) { this->action = action; };
|
||||
void SetSwitchMinsBefore(int switchMinsBefore) { this->switchMinsBefore = switchMinsBefore; };
|
||||
void SetUnmuteSoundOnSwitch(bool unmuteSoundOnSwitch) { this->unmuteSoundOnSwitch = unmuteSoundOnSwitch; };
|
||||
void SetDelMode(bool delMode) { this->delMode = delMode; };
|
||||
void SetDelAfterCountRecs(bool delAfterCountRecs) { this->delAfterCountRecs = delAfterCountRecs; };
|
||||
void SetDelAfterDaysOfFirstRec(bool delAfterDaysOfFirstRec) { this->delAfterDaysOfFirstRec = delAfterDaysOfFirstRec; };
|
||||
//COMMON
|
||||
int GetNumTimers(void);
|
||||
int GetNumRecordings(void);
|
||||
|
@@ -1,33 +1,182 @@
|
||||
#ifndef REMOTETIMERSERVICES_INC
|
||||
#define REMOTETIMERSERVICES_INC
|
||||
/*
|
||||
* remotetimers.h: Public interface of the plugin's services
|
||||
*
|
||||
* Copyright (C) 2008-2013 Frank Schmirler <vdr@schmirler.de>
|
||||
*
|
||||
* This file is part of VDR Plugin remotetimers.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Or, point your browser to http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||
*/
|
||||
|
||||
#ifndef _SERVICE__H
|
||||
#define _SERVICE__H
|
||||
|
||||
#include <vdr/epg.h>
|
||||
#include <vdr/timers.h>
|
||||
#include <vdr/epg.h>
|
||||
#include <vdr/osdbase.h>
|
||||
|
||||
// RemoteTimers services
|
||||
struct RemoteTimers_Event_v1_0 {
|
||||
//in
|
||||
const cEvent *event;
|
||||
//out
|
||||
cTimer *timer;
|
||||
cString errorMsg;
|
||||
/*
|
||||
* If the Data argument is NULL, all service calls return true.
|
||||
* Otherwise the return value indicates success or failure of the service call.
|
||||
*
|
||||
* The service calls are not thread safe and must be called from the VDR main loop.
|
||||
*/
|
||||
|
||||
/*
|
||||
* RemoteTimers::InstantRecording-v1.0
|
||||
* Start an instant recording or pause live TV. VDR needs to be patched to support this.
|
||||
* The service returns false if a local timer should be used. An error occured if true is returned but the out parameters name and fileName are NULL.
|
||||
* Data points to the following structure where pause indicates if it is an instant recording or an attempt to pause live TV.
|
||||
*/
|
||||
|
||||
struct RemoteTimers_InstantRecording_v1_0 {
|
||||
//in
|
||||
const cTimer *timer;
|
||||
bool pause;
|
||||
const cEvent *event;
|
||||
//out
|
||||
cString name;
|
||||
cString fileName;
|
||||
};
|
||||
|
||||
/*
|
||||
* RemoteTimers::RefreshTimers-v1.0
|
||||
* Fetch timer list from remote VDR. You must call this service before you can use one of the service calls below.
|
||||
* Data points to a cString which in case of failure (service call returns false) contains an error message.
|
||||
*/
|
||||
|
||||
//out
|
||||
// cString errorMsg;
|
||||
|
||||
/*
|
||||
* RemoteTimers::ForEachConflict-v1.0
|
||||
* Iterates the list of remote timer conflicts.
|
||||
* The service call always returns true.
|
||||
* Data points to a const char* which must be NULL to return the first conflict. Pass the previously returned conflict to get the next one until const char* is NULL.
|
||||
*
|
||||
*/
|
||||
//in+out
|
||||
// const char* conflict;
|
||||
|
||||
/*
|
||||
* RemoteTimers::ForEach-v1.0
|
||||
* Iterates the list of remote timers.
|
||||
* The service call always returns true.
|
||||
* Data points to a cTimer* which must be NULL to return the first timer. Pass the previously returned timer to get the next one until cTimer* is NULL.
|
||||
*
|
||||
* RemoteTimers::GetTimer-v1.0
|
||||
* Test if the timer exists as either a remote or a local timer.
|
||||
* The service call always returns true.
|
||||
* Data points to a cTimer* which points to the timer you are looking for. If found, cTimer* will point to the timer, otherwise it will be NULL.
|
||||
*/
|
||||
|
||||
//in+out
|
||||
// cTimer* timer;
|
||||
|
||||
/*
|
||||
* RemoteTimers::GetMatch-v1.0
|
||||
* Find the remote or local timer which matches the event best.
|
||||
* The service call always returns true.
|
||||
* Data points to the following structure:
|
||||
*/
|
||||
|
||||
struct RemoteTimers_GetMatch_v1_0 {
|
||||
//in
|
||||
const cEvent *event;
|
||||
//out
|
||||
cTimer *timer;
|
||||
int timerMatch;
|
||||
int timerType;
|
||||
bool isRemote;
|
||||
//in
|
||||
const cEvent *event;
|
||||
//out
|
||||
cTimer *timer;
|
||||
int timerMatch;
|
||||
int timerType;
|
||||
bool isRemote;
|
||||
};
|
||||
|
||||
/*
|
||||
* RemoteTimers::GetTimerByEvent-v1.0
|
||||
* Find the remote or local timer matching the event.
|
||||
* If no timer matches, the service call returns false.
|
||||
* Data points to a RemoteTimers_Event_v1_0 struct.
|
||||
*
|
||||
* RemoteTimers::NewTimerByEvent-v1.0
|
||||
* Add a new timer for an event.
|
||||
* In case of an error, the service call returns false and the structure includes an error message.
|
||||
* Data points to a RemoteTimers_Event_v1_0 struct.
|
||||
*/
|
||||
|
||||
struct RemoteTimers_Event_v1_0 {
|
||||
//in
|
||||
const cEvent *event;
|
||||
//out
|
||||
cTimer *timer;
|
||||
cString errorMsg;
|
||||
};
|
||||
|
||||
/*
|
||||
* RemoteTimers::NewTimer-v1.0
|
||||
* Add a new timer.
|
||||
* In case of an error, the service call returns false and the structure includes an error message.
|
||||
* Data points to a RemoteTimers_Timer_v1_0 struct.
|
||||
*
|
||||
* RemoteTimers::ModTimer-v1.0
|
||||
* Change an existing timer.
|
||||
* In case of an error, the service call returns false and the structure includes an error message.
|
||||
* Data points to a RemoteTimers_Timer_v1_0 struct.
|
||||
*
|
||||
* RemoteTimers::DelTimer-v1.0
|
||||
* Delete an existing timer.
|
||||
* In case of an error, the service call returns false and the structure includes an error message.
|
||||
* Data points to a RemoteTimers_Timer_v1_0 struct.
|
||||
*/
|
||||
|
||||
struct RemoteTimers_Timer_v1_0 {
|
||||
//in+out
|
||||
cTimer *timer;
|
||||
//out
|
||||
cString errorMsg;
|
||||
//in+out
|
||||
cTimer *timer;
|
||||
//out
|
||||
cString errorMsg;
|
||||
};
|
||||
|
||||
#endif //REMOTETIMERSERVICES_INC
|
||||
/*
|
||||
* RemoteTimers::GetTimerById-v1.0
|
||||
* Get a remote timer by its id (i.e. timer->Index()+1 on remote machine).
|
||||
* The service call always returns true.
|
||||
* Data must point to a RemoteTimers_Timer_v1_1 structure. errorMsg is unused.
|
||||
* NULL is returned as timer if no remote timer exists for the given id locally.
|
||||
* Note that a timer with this id may exist remotely. This can happen if the
|
||||
* remote timer's channel doesn't exist on the local machine.
|
||||
*/
|
||||
|
||||
struct RemoteTimers_Timer_v1_1 {
|
||||
//in+out
|
||||
cTimer *timer;
|
||||
int id;
|
||||
//out
|
||||
cString errorMsg;
|
||||
};
|
||||
|
||||
/*
|
||||
* RemoteTimers::Menu-v1.0
|
||||
* Depending on the state parameter, open the Timers or Schedule menu.
|
||||
* In case of an error, menu is NULL.
|
||||
* Data points to a RemoteTimers_Menu_v1_0 struct.
|
||||
*/
|
||||
struct RemoteTimers_Menu_v1_0 {
|
||||
//in
|
||||
const char *serverIp;
|
||||
unsigned short serverPort;
|
||||
eOSState state;
|
||||
//out
|
||||
cOsdMenu *menu;
|
||||
};
|
||||
#endif //_SERVICE__H
|
||||
|
549
setup.c
549
setup.c
@@ -1,7 +1,7 @@
|
||||
#include "setup.h"
|
||||
|
||||
cTvguideSetup::cTvguideSetup() {
|
||||
tmpTvguideConfig = tvguideConfig;
|
||||
tmpConfig = config;
|
||||
Setup();
|
||||
}
|
||||
|
||||
@@ -9,8 +9,8 @@ cTvguideSetup::~cTvguideSetup() {
|
||||
geoManager.SetGeometry(cOsd::OsdWidth(), cOsd::OsdHeight(), true);
|
||||
fontManager.DeleteFonts();
|
||||
fontManager.SetFonts();
|
||||
tvguideConfig.LoadTheme();
|
||||
tvguideConfig.setDynamicValues();
|
||||
config.LoadTheme();
|
||||
config.setDynamicValues();
|
||||
imgCache.Clear();
|
||||
imgCache.CreateCache();
|
||||
}
|
||||
@@ -40,15 +40,15 @@ eOSState cTvguideSetup::ProcessKey(eKeys Key) {
|
||||
if ((Key == kOk && !hadSubMenu)) {
|
||||
const char* ItemText = Get(Current())->Text();
|
||||
if (strcmp(ItemText, tr("General Settings")) == 0)
|
||||
state = AddSubMenu(new cMenuSetupGeneral(&tmpTvguideConfig));
|
||||
state = AddSubMenu(new cMenuSetupGeneral(&tmpConfig));
|
||||
if (strcmp(ItemText, tr("Screen Presentation")) == 0)
|
||||
state = AddSubMenu(new cMenuSetupScreenLayout(&tmpTvguideConfig));
|
||||
state = AddSubMenu(new cMenuSetupScreenLayout(&tmpConfig));
|
||||
if (strcmp(ItemText, tr("Fonts and Fontsizes")) == 0)
|
||||
state = AddSubMenu(new cMenuSetupFont(&tmpTvguideConfig));
|
||||
state = AddSubMenu(new cMenuSetupFont(&tmpConfig));
|
||||
if (strcmp(ItemText, tr("Recording Menus and Favorites")) == 0)
|
||||
state = AddSubMenu(new cMenuSetupFavorites(&tmpTvguideConfig));
|
||||
state = AddSubMenu(new cMenuSetupFavorites(&tmpConfig));
|
||||
if (strcmp(ItemText, tr("Image Loading and Caching")) == 0)
|
||||
state = AddSubMenu(new cMenuSetupImageCache(&tmpTvguideConfig));
|
||||
state = AddSubMenu(new cMenuSetupImageCache(&tmpConfig));
|
||||
}
|
||||
}
|
||||
return state;
|
||||
@@ -56,108 +56,113 @@ eOSState cTvguideSetup::ProcessKey(eKeys Key) {
|
||||
|
||||
void cTvguideSetup::Store(void) {
|
||||
|
||||
tvguideConfig = tmpTvguideConfig;
|
||||
SetupStore("debugImageLoading", tvguideConfig.debugImageLoading);
|
||||
SetupStore("useNopacityTheme", tvguideConfig.useNopacityTheme);
|
||||
SetupStore("themeIndex", tvguideConfig.themeIndex);
|
||||
SetupStore("showMainMenuEntry", tvguideConfig.showMainMenuEntry);
|
||||
SetupStore("replaceOriginalSchedule", tvguideConfig.replaceOriginalSchedule);
|
||||
SetupStore("displayMode", tvguideConfig.displayMode);
|
||||
SetupStore("showTimeInGrid", tvguideConfig.showTimeInGrid);
|
||||
SetupStore("displayStatusHeader", tvguideConfig.displayStatusHeader);
|
||||
SetupStore("displayChannelGroups", tvguideConfig.displayChannelGroups);
|
||||
SetupStore("displayTimeBase", tvguideConfig.displayTimeBase);
|
||||
SetupStore("headerHeightPercent", tvguideConfig.headerHeightPercent);
|
||||
SetupStore("channelGroupsPercent", tvguideConfig.channelGroupsPercent);
|
||||
SetupStore("epgViewBorder", tvguideConfig.epgViewBorder);
|
||||
SetupStore("scaleVideo", tvguideConfig.scaleVideo);
|
||||
SetupStore("decorateVideo", tvguideConfig.decorateVideo);
|
||||
SetupStore("roundedCorners", tvguideConfig.roundedCorners);
|
||||
SetupStore("timeFormat", tvguideConfig.timeFormat);
|
||||
SetupStore("channelCols", tvguideConfig.channelCols);
|
||||
SetupStore("channelRows", tvguideConfig.channelRows);
|
||||
SetupStore("displayTime", tvguideConfig.displayTime);
|
||||
SetupStore("displayHorizontalTime", tvguideConfig.displayHorizontalTime);
|
||||
SetupStore("bigStepHours", tvguideConfig.bigStepHours);
|
||||
SetupStore("hugeStepHours", tvguideConfig.hugeStepHours);
|
||||
SetupStore("channelJumpMode", tvguideConfig.channelJumpMode);
|
||||
SetupStore("blueKeyMode", tvguideConfig.blueKeyMode);
|
||||
SetupStore("numkeyMode", tvguideConfig.numkeyMode);
|
||||
SetupStore("useRemoteTimers", tvguideConfig.useRemoteTimers);
|
||||
SetupStore("closeOnSwitch", tvguideConfig.closeOnSwitch);
|
||||
SetupStore("hideLastGroup", tvguideConfig.hideLastGroup);
|
||||
SetupStore("hideChannelLogos", tvguideConfig.hideChannelLogos);
|
||||
SetupStore("logoExtension", tvguideConfig.logoExtension);
|
||||
SetupStore("logoWidthRatio", tvguideConfig.logoWidthRatio);
|
||||
SetupStore("logoHeightRatio", tvguideConfig.logoHeightRatio);
|
||||
SetupStore("hideEpgImages", tvguideConfig.hideEpgImages);
|
||||
SetupStore("epgImageWidth", tvguideConfig.epgImageWidth);
|
||||
SetupStore("epgImageHeight", tvguideConfig.epgImageHeight);
|
||||
SetupStore("numAdditionalEPGPictures", tvguideConfig.numAdditionalEPGPictures);
|
||||
SetupStore("epgImageWidthLarge", tvguideConfig.epgImageWidthLarge);
|
||||
SetupStore("epgImageHeightLarge", tvguideConfig.epgImageHeightLarge);
|
||||
SetupStore("detailedViewScrollStep", tvguideConfig.detailedViewScrollStep);
|
||||
SetupStore("timeLineWidthPercent", tvguideConfig.timeLineWidthPercent);
|
||||
SetupStore("timeLineHeightPercent", tvguideConfig.timeLineHeightPercent);
|
||||
SetupStore("displayChannelName", tvguideConfig.displayChannelName);
|
||||
SetupStore("channelHeaderWidthPercent", tvguideConfig.channelHeaderWidthPercent);
|
||||
SetupStore("channelHeaderHeightPercent", tvguideConfig.channelHeaderHeightPercent);
|
||||
SetupStore("footerHeightPercent", tvguideConfig.footerHeightPercent);
|
||||
SetupStore("instRecFolderMode", tvguideConfig.instRecFolderMode);
|
||||
SetupStore("instRecFixedFolder", tvguideConfig.instRecFixedFolder.c_str());
|
||||
SetupStore("favWhatsOnNow", tvguideConfig.favWhatsOnNow);
|
||||
SetupStore("favWhatsOnNext", tvguideConfig.favWhatsOnNext);
|
||||
SetupStore("favUseTime1", tvguideConfig.favUseTime1);
|
||||
SetupStore("favUseTime2", tvguideConfig.favUseTime2);
|
||||
SetupStore("favUseTime3", tvguideConfig.favUseTime3);
|
||||
SetupStore("favUseTime4", tvguideConfig.favUseTime4);
|
||||
SetupStore("favTime1", tvguideConfig.favTime1);
|
||||
SetupStore("favTime2", tvguideConfig.favTime2);
|
||||
SetupStore("favTime3", tvguideConfig.favTime3);
|
||||
SetupStore("favTime4", tvguideConfig.favTime4);
|
||||
SetupStore("descUser1", tvguideConfig.descUser1.c_str());
|
||||
SetupStore("descUser2", tvguideConfig.descUser2.c_str());
|
||||
SetupStore("descUser3", tvguideConfig.descUser3.c_str());
|
||||
SetupStore("descUser4", tvguideConfig.descUser4.c_str());
|
||||
SetupStore("favLimitChannels", tvguideConfig.favLimitChannels);
|
||||
SetupStore("favStartChannel", tvguideConfig.favStartChannel);
|
||||
SetupStore("favStopChannel", tvguideConfig.favStopChannel);
|
||||
SetupStore("switchMode", tvguideConfig.switchMode);
|
||||
SetupStore("switchMinsBefore", tvguideConfig.switchMinsBefore);
|
||||
SetupStore("fontIndex", tvguideConfig.fontIndex);
|
||||
SetupStore("FontButtonDelta", tvguideConfig.FontButtonDelta);
|
||||
SetupStore("FontDetailViewDelta", tvguideConfig.FontDetailViewDelta);
|
||||
SetupStore("FontDetailHeaderDelta", tvguideConfig.FontDetailHeaderDelta);
|
||||
SetupStore("FontMessageBoxDelta", tvguideConfig.FontMessageBoxDelta);
|
||||
SetupStore("FontMessageBoxLargeDelta", tvguideConfig.FontMessageBoxLargeDelta);
|
||||
SetupStore("FontStatusHeaderDelta", tvguideConfig.FontStatusHeaderDelta);
|
||||
SetupStore("FontStatusHeaderLargeDelta", tvguideConfig.FontStatusHeaderLargeDelta);
|
||||
SetupStore("FontChannelHeaderDelta", tvguideConfig.FontChannelHeaderDelta);
|
||||
SetupStore("FontChannelGroupsDelta", tvguideConfig.FontChannelGroupsDelta);
|
||||
SetupStore("FontGridDelta", tvguideConfig.FontGridDelta);
|
||||
SetupStore("FontGridSmallDelta", tvguideConfig.FontGridSmallDelta);
|
||||
SetupStore("FontTimeLineWeekdayDelta", tvguideConfig.FontTimeLineWeekdayDelta);
|
||||
SetupStore("FontTimeLineDateDelta", tvguideConfig.FontTimeLineDateDelta);
|
||||
SetupStore("FontTimeLineTimeDelta", tvguideConfig.FontTimeLineTimeDelta);
|
||||
SetupStore("FontChannelHeaderHorizontalDelta", tvguideConfig.FontChannelHeaderHorizontalDelta);
|
||||
SetupStore("FontChannelGroupsHorizontalDelta", tvguideConfig.FontChannelGroupsHorizontalDelta);
|
||||
SetupStore("FontGridHorizontalDelta", tvguideConfig.FontGridHorizontalDelta);
|
||||
SetupStore("FontGridHorizontalSmallDelta", tvguideConfig.FontGridHorizontalSmallDelta);
|
||||
SetupStore("FontTimeLineDateHorizontalDelta", tvguideConfig.FontTimeLineDateHorizontalDelta);
|
||||
SetupStore("FontTimeLineTimeHorizontalDelta", tvguideConfig.FontTimeLineTimeHorizontalDelta);
|
||||
SetupStore("FontRecMenuItemDelta", tvguideConfig.FontRecMenuItemDelta);
|
||||
SetupStore("FontRecMenuItemSmallDelta", tvguideConfig.FontRecMenuItemSmallDelta);
|
||||
SetupStore("FontRecMenuItemLargeDelta", tvguideConfig.FontRecMenuItemLargeDelta);
|
||||
SetupStore("displayRerunsDetailEPGView", tvguideConfig.displayRerunsDetailEPGView);
|
||||
SetupStore("numReruns", tvguideConfig.numReruns);
|
||||
SetupStore("useSubtitleRerun", tvguideConfig.useSubtitleRerun);
|
||||
SetupStore("numLogosInitial", tvguideConfig.numLogosInitial);
|
||||
SetupStore("numLogosMax", tvguideConfig.numLogosMax);
|
||||
SetupStore("limitLogoCache", tvguideConfig.limitLogoCache);
|
||||
config = tmpConfig;
|
||||
SetupStore("debugImageLoading", config.debugImageLoading);
|
||||
SetupStore("useNopacityTheme", config.useNopacityTheme);
|
||||
SetupStore("themeIndex", config.themeIndex);
|
||||
SetupStore("useHWAccel", config.useHWAccel);
|
||||
SetupStore("showMainMenuEntry", config.showMainMenuEntry);
|
||||
SetupStore("replaceOriginalSchedule", config.replaceOriginalSchedule);
|
||||
SetupStore("displayMode", config.displayMode);
|
||||
SetupStore("showTimeInGrid", config.showTimeInGrid);
|
||||
SetupStore("displayStatusHeader", config.displayStatusHeader);
|
||||
SetupStore("displayChannelGroups", config.displayChannelGroups);
|
||||
SetupStore("displayTimeBase", config.displayTimeBase);
|
||||
SetupStore("headerHeightPercent", config.headerHeightPercent);
|
||||
SetupStore("channelGroupsPercent", config.channelGroupsPercent);
|
||||
SetupStore("epgViewBorder", config.epgViewBorder);
|
||||
SetupStore("scaleVideo", config.scaleVideo);
|
||||
SetupStore("decorateVideo", config.decorateVideo);
|
||||
SetupStore("roundedCorners", config.roundedCorners);
|
||||
SetupStore("timeFormat", config.timeFormat);
|
||||
SetupStore("channelCols", config.channelCols);
|
||||
SetupStore("channelRows", config.channelRows);
|
||||
SetupStore("displayTime", config.displayTime);
|
||||
SetupStore("displayHorizontalTime", config.displayHorizontalTime);
|
||||
SetupStore("bigStepHours", config.bigStepHours);
|
||||
SetupStore("bigStepHoursHorizontal", config.bigStepHoursHorizontal);
|
||||
SetupStore("hugeStepHours", config.hugeStepHours);
|
||||
SetupStore("hugeStepHoursHorizontal", config.hugeStepHoursHorizontal);
|
||||
SetupStore("channelJumpMode", config.channelJumpMode);
|
||||
SetupStore("blueKeyMode", config.blueKeyMode);
|
||||
SetupStore("numkeyMode", config.numkeyMode);
|
||||
SetupStore("useRemoteTimers", config.useRemoteTimers);
|
||||
SetupStore("closeOnSwitch", config.closeOnSwitch);
|
||||
SetupStore("hideLastGroup", config.hideLastGroup);
|
||||
SetupStore("hideChannelLogos", config.hideChannelLogos);
|
||||
SetupStore("logoExtension", config.logoExtension);
|
||||
SetupStore("logoWidthRatio", config.logoWidthRatio);
|
||||
SetupStore("logoHeightRatio", config.logoHeightRatio);
|
||||
SetupStore("hideEpgImages", config.hideEpgImages);
|
||||
SetupStore("epgImageWidth", config.epgImageWidth);
|
||||
SetupStore("epgImageHeight", config.epgImageHeight);
|
||||
SetupStore("numAdditionalEPGPictures", config.numAdditionalEPGPictures);
|
||||
SetupStore("epgImageWidthLarge", config.epgImageWidthLarge);
|
||||
SetupStore("epgImageHeightLarge", config.epgImageHeightLarge);
|
||||
SetupStore("detailedViewScrollStep", config.detailedViewScrollStep);
|
||||
SetupStore("timeLineWidthPercent", config.timeLineWidthPercent);
|
||||
SetupStore("timeLineHeightPercent", config.timeLineHeightPercent);
|
||||
SetupStore("displayChannelName", config.displayChannelName);
|
||||
SetupStore("channelHeaderWidthPercent", config.channelHeaderWidthPercent);
|
||||
SetupStore("channelHeaderHeightPercent", config.channelHeaderHeightPercent);
|
||||
SetupStore("footerHeightPercent", config.footerHeightPercent);
|
||||
SetupStore("instRecFolderMode", config.instRecFolderMode);
|
||||
SetupStore("instRecFixedFolder", config.instRecFixedFolder.c_str());
|
||||
SetupStore("addSubtitleToTimer", config.addSubtitleToTimer);
|
||||
SetupStore("timerMessage", config.timerMessage);
|
||||
SetupStore("favWhatsOnNow", config.favWhatsOnNow);
|
||||
SetupStore("favWhatsOnNext", config.favWhatsOnNext);
|
||||
SetupStore("favUseTime1", config.favUseTime1);
|
||||
SetupStore("favUseTime2", config.favUseTime2);
|
||||
SetupStore("favUseTime3", config.favUseTime3);
|
||||
SetupStore("favUseTime4", config.favUseTime4);
|
||||
SetupStore("favTime1", config.favTime1);
|
||||
SetupStore("favTime2", config.favTime2);
|
||||
SetupStore("favTime3", config.favTime3);
|
||||
SetupStore("favTime4", config.favTime4);
|
||||
SetupStore("descUser1", config.descUser1.c_str());
|
||||
SetupStore("descUser2", config.descUser2.c_str());
|
||||
SetupStore("descUser3", config.descUser3.c_str());
|
||||
SetupStore("descUser4", config.descUser4.c_str());
|
||||
SetupStore("favLimitChannels", config.favLimitChannels);
|
||||
SetupStore("favStartChannel", config.favStartChannel);
|
||||
SetupStore("favStopChannel", config.favStopChannel);
|
||||
SetupStore("switchMode", config.switchMode);
|
||||
SetupStore("switchMinsBefore", config.switchMinsBefore);
|
||||
SetupStore("fontIndex", config.fontIndex);
|
||||
SetupStore("FontButtonDelta", config.FontButtonDelta);
|
||||
SetupStore("FontDetailViewDelta", config.FontDetailViewDelta);
|
||||
SetupStore("FontDetailHeaderDelta", config.FontDetailHeaderDelta);
|
||||
SetupStore("FontMessageBoxDelta", config.FontMessageBoxDelta);
|
||||
SetupStore("FontMessageBoxLargeDelta", config.FontMessageBoxLargeDelta);
|
||||
SetupStore("FontStatusHeaderDelta", config.FontStatusHeaderDelta);
|
||||
SetupStore("FontStatusHeaderLargeDelta", config.FontStatusHeaderLargeDelta);
|
||||
SetupStore("FontChannelHeaderDelta", config.FontChannelHeaderDelta);
|
||||
SetupStore("FontChannelGroupsDelta", config.FontChannelGroupsDelta);
|
||||
SetupStore("FontGridDelta", config.FontGridDelta);
|
||||
SetupStore("FontGridSmallDelta", config.FontGridSmallDelta);
|
||||
SetupStore("FontTimeLineWeekdayDelta", config.FontTimeLineWeekdayDelta);
|
||||
SetupStore("FontTimeLineDateDelta", config.FontTimeLineDateDelta);
|
||||
SetupStore("FontTimeLineTimeDelta", config.FontTimeLineTimeDelta);
|
||||
SetupStore("FontChannelHeaderHorizontalDelta", config.FontChannelHeaderHorizontalDelta);
|
||||
SetupStore("FontChannelGroupsHorizontalDelta", config.FontChannelGroupsHorizontalDelta);
|
||||
SetupStore("FontGridHorizontalDelta", config.FontGridHorizontalDelta);
|
||||
SetupStore("FontGridHorizontalSmallDelta", config.FontGridHorizontalSmallDelta);
|
||||
SetupStore("FontTimeLineDateHorizontalDelta", config.FontTimeLineDateHorizontalDelta);
|
||||
SetupStore("FontTimeLineTimeHorizontalDelta", config.FontTimeLineTimeHorizontalDelta);
|
||||
SetupStore("FontRecMenuItemDelta", config.FontRecMenuItemDelta);
|
||||
SetupStore("FontRecMenuItemSmallDelta", config.FontRecMenuItemSmallDelta);
|
||||
SetupStore("FontRecMenuItemLargeDelta", config.FontRecMenuItemLargeDelta);
|
||||
SetupStore("displayRerunsDetailEPGView", config.displayRerunsDetailEPGView);
|
||||
SetupStore("numReruns", config.numReruns);
|
||||
SetupStore("useSubtitleRerun", config.useSubtitleRerun);
|
||||
SetupStore("numLogosInitial", config.numLogosInitial);
|
||||
SetupStore("numLogosMax", config.numLogosMax);
|
||||
SetupStore("limitLogoCache", config.limitLogoCache);
|
||||
}
|
||||
|
||||
cMenuSetupSubMenu::cMenuSetupSubMenu(const char* Title, cTvguideConfig* data) : cOsdMenu(Title, 40) {
|
||||
tmpTvguideConfig = data;
|
||||
cMenuSetupSubMenu::cMenuSetupSubMenu(const char* Title, cTVGuideConfig* data) : cOsdMenu(Title, 40) {
|
||||
tmpConfig = data;
|
||||
indent = " ";
|
||||
}
|
||||
|
||||
@@ -183,7 +188,7 @@ eOSState cMenuSetupSubMenu::ProcessKey(eKeys Key) {
|
||||
|
||||
//----- General Settings -------------------------------------------------------------------------------------------------------------
|
||||
|
||||
cMenuSetupGeneral::cMenuSetupGeneral(cTvguideConfig* data) : cMenuSetupSubMenu(tr("General Settings"), data) {
|
||||
cMenuSetupGeneral::cMenuSetupGeneral(cTVGuideConfig* data) : cMenuSetupSubMenu(tr("General Settings"), data) {
|
||||
themes.Load(*cString("tvguide"));
|
||||
timeFormatItems[0] = "12h";
|
||||
timeFormatItems[1] = "24h";
|
||||
@@ -203,47 +208,53 @@ cMenuSetupGeneral::cMenuSetupGeneral(cTvguideConfig* data) : cMenuSetupSubMenu(
|
||||
void cMenuSetupGeneral::Set(void) {
|
||||
int currentItem = Current();
|
||||
Clear();
|
||||
Add(new cMenuEditBoolItem(tr("Show Main Menu Entry"), &tmpTvguideConfig->showMainMenuEntry));
|
||||
Add(new cMenuEditBoolItem(tr("Replace VDR Schedules Menu"), &tmpTvguideConfig->replaceOriginalSchedule));
|
||||
Add(new cMenuEditBoolItem(tr("Use appropriate nOpacity Theme"), &tmpTvguideConfig->useNopacityTheme));
|
||||
if (!tmpTvguideConfig->useNopacityTheme) {
|
||||
Add(new cMenuEditBoolItem(tr("Use workaround for HWAccelerated OSD"), &tmpConfig->useHWAccel));
|
||||
Add(new cMenuEditBoolItem(tr("Show Main Menu Entry"), &tmpConfig->showMainMenuEntry));
|
||||
Add(new cMenuEditBoolItem(tr("Replace VDR Schedules Menu"), &tmpConfig->replaceOriginalSchedule));
|
||||
Add(new cMenuEditBoolItem(tr("Use appropriate nOpacity Theme"), &tmpConfig->useNopacityTheme));
|
||||
if (!tmpConfig->useNopacityTheme) {
|
||||
if (themes.NumThemes())
|
||||
Add(new cMenuEditStraItem(cString::sprintf("%s%s", *indent, tr("Theme")), &tmpTvguideConfig->themeIndex, themes.NumThemes(), themes.Descriptions()));
|
||||
Add(new cMenuEditStraItem(cString::sprintf("%s%s", *indent, tr("Theme")), &tmpConfig->themeIndex, themes.NumThemes(), themes.Descriptions()));
|
||||
}
|
||||
if (tmpTvguideConfig->displayMode == eVertical) {
|
||||
Add(new cMenuEditIntItem(tr("Time to display in minutes"), &tmpTvguideConfig->displayTime, 60, 320));
|
||||
} else if (tmpTvguideConfig->displayMode == eHorizontal) {
|
||||
Add(new cMenuEditIntItem(tr("Time to display in minutes"), &tmpTvguideConfig->displayHorizontalTime, 60, 320));
|
||||
if (tmpConfig->displayMode == eVertical) {
|
||||
Add(new cMenuEditIntItem(tr("Time to display in minutes"), &tmpConfig->displayTime, 60, 320));
|
||||
} else if (tmpConfig->displayMode == eHorizontal) {
|
||||
Add(new cMenuEditIntItem(tr("Time to display in minutes"), &tmpConfig->displayHorizontalTime, 60, 320));
|
||||
}
|
||||
Add(new cMenuEditBoolItem(tr("Rounded Corners"), &tmpTvguideConfig->roundedCorners));
|
||||
Add(new cMenuEditBoolItem(tr("Rounded Corners"), &tmpConfig->roundedCorners));
|
||||
|
||||
Add(new cMenuEditStraItem(tr("Channel Jump Mode (Keys Green / Yellow)"), &tmpTvguideConfig->channelJumpMode, 2, jumpMode));
|
||||
Add(new cMenuEditStraItem(tr("Keys Blue and OK"), &tmpTvguideConfig->blueKeyMode, 3, blueMode));
|
||||
Add(new cMenuEditBoolItem(tr("Close TVGuide after channel switch"), &tmpTvguideConfig->closeOnSwitch));
|
||||
Add(new cMenuEditStraItem(tr("Functionality of numeric Keys"), &tmpTvguideConfig->numkeyMode, 2, numMode));
|
||||
Add(new cMenuEditBoolItem(tr("Hide last Channel Group"), &tmpTvguideConfig->hideLastGroup));
|
||||
Add(new cMenuEditIntItem(tr("Big Step (Keys 1 / 3) in hours"), &tmpTvguideConfig->bigStepHours, 1, 12));
|
||||
Add(new cMenuEditIntItem(tr("Huge Step (Keys 4 / 6) in hours"), &tmpTvguideConfig->hugeStepHours, 13, 48));
|
||||
Add(new cMenuEditStraItem(tr("Time Format (12h/24h)"), &tmpTvguideConfig->timeFormat, 2, timeFormatItems));
|
||||
Add(new cMenuEditIntItem(tr("EPG Window Text Scrolling Speed"), &tmpTvguideConfig->detailedViewScrollStep, 1, 30));
|
||||
Add(new cMenuEditBoolItem(tr("Display Reruns in detailed EPG View"), &tmpTvguideConfig->displayRerunsDetailEPGView));
|
||||
if (tmpTvguideConfig->displayRerunsDetailEPGView) {
|
||||
Add(new cMenuEditIntItem(cString::sprintf("%s%s", *indent, tr("Number of reruns to display")), &tmpTvguideConfig->numReruns, 1, 10));
|
||||
Add(new cMenuEditStraItem(cString::sprintf("%s%s", *indent, tr("Use Subtitle for reruns")), &tmpTvguideConfig->useSubtitleRerun, 3, useSubtitleRerunTexts));
|
||||
Add(new cMenuEditStraItem(tr("Channel Jump Mode (Keys Green / Yellow)"), &tmpConfig->channelJumpMode, 2, jumpMode));
|
||||
Add(new cMenuEditStraItem(tr("Keys Blue and OK"), &tmpConfig->blueKeyMode, 3, blueMode));
|
||||
Add(new cMenuEditBoolItem(tr("Close TVGuide after channel switch"), &tmpConfig->closeOnSwitch));
|
||||
Add(new cMenuEditStraItem(tr("Functionality of numeric Keys"), &tmpConfig->numkeyMode, 2, numMode));
|
||||
Add(new cMenuEditBoolItem(tr("Hide last Channel Group"), &tmpConfig->hideLastGroup));
|
||||
if (tmpConfig->displayMode == eVertical) {
|
||||
Add(new cMenuEditIntItem(tr("Big Step (Keys 1 / 3) in hours"), &tmpConfig->bigStepHours, 1, 12));
|
||||
Add(new cMenuEditIntItem(tr("Huge Step (Keys 4 / 6) in hours"), &tmpConfig->hugeStepHours, 13, 48));
|
||||
} else if (tmpConfig->displayMode == eHorizontal) {
|
||||
Add(new cMenuEditIntItem(tr("Big Step (Keys 1 / 3) in hours"), &tmpConfig->bigStepHoursHorizontal, 1, 12));
|
||||
Add(new cMenuEditIntItem(tr("Huge Step (Keys 4 / 6) in hours"), &tmpConfig->hugeStepHoursHorizontal, 13, 48));
|
||||
}
|
||||
Add(new cMenuEditStraItem(tr("Time Format (12h/24h)"), &tmpConfig->timeFormat, 2, timeFormatItems));
|
||||
Add(new cMenuEditIntItem(tr("EPG Window Text Scrolling Speed"), &tmpConfig->detailedViewScrollStep, 1, 30));
|
||||
Add(new cMenuEditBoolItem(tr("Display Reruns in detailed EPG View"), &tmpConfig->displayRerunsDetailEPGView));
|
||||
if (tmpConfig->displayRerunsDetailEPGView) {
|
||||
Add(new cMenuEditIntItem(cString::sprintf("%s%s", *indent, tr("Number of reruns to display")), &tmpConfig->numReruns, 1, 10));
|
||||
Add(new cMenuEditStraItem(cString::sprintf("%s%s", *indent, tr("Use Subtitle for reruns")), &tmpConfig->useSubtitleRerun, 3, useSubtitleRerunTexts));
|
||||
}
|
||||
SetCurrent(Get(currentItem));
|
||||
Display();
|
||||
}
|
||||
|
||||
eOSState cMenuSetupGeneral::ProcessKey(eKeys Key) {
|
||||
bool olduseNopacityTheme = tmpTvguideConfig->useNopacityTheme;
|
||||
bool olddisplayRerunsDetailEPGView = tmpTvguideConfig->displayRerunsDetailEPGView;
|
||||
bool olduseNopacityTheme = tmpConfig->useNopacityTheme;
|
||||
bool olddisplayRerunsDetailEPGView = tmpConfig->displayRerunsDetailEPGView;
|
||||
eOSState state = cOsdMenu::ProcessKey(Key);
|
||||
if (Key == kOk) {
|
||||
state = osBack;
|
||||
} else if (Key != kNone) {
|
||||
if (tmpTvguideConfig->useNopacityTheme != olduseNopacityTheme ||
|
||||
tmpTvguideConfig->displayRerunsDetailEPGView != olddisplayRerunsDetailEPGView) {
|
||||
if (tmpConfig->useNopacityTheme != olduseNopacityTheme ||
|
||||
tmpConfig->displayRerunsDetailEPGView != olddisplayRerunsDetailEPGView) {
|
||||
Set();
|
||||
}
|
||||
}
|
||||
@@ -252,7 +263,7 @@ eOSState cMenuSetupGeneral::ProcessKey(eKeys Key) {
|
||||
|
||||
//----- Screen Presentation -------------------------------------------------------------------------------------------------------------
|
||||
|
||||
cMenuSetupScreenLayout::cMenuSetupScreenLayout(cTvguideConfig* data) : cMenuSetupSubMenu(tr("Screen Presentation"), data) {
|
||||
cMenuSetupScreenLayout::cMenuSetupScreenLayout(cTVGuideConfig* data) : cMenuSetupSubMenu(tr("Screen Presentation"), data) {
|
||||
displayModeItems[0] = "vertical";
|
||||
displayModeItems[1] = "horizontal";
|
||||
hideChannelLogosItems[0] = trVDR("yes");
|
||||
@@ -266,55 +277,55 @@ void cMenuSetupScreenLayout::Set(void) {
|
||||
int currentItem = Current();
|
||||
Clear();
|
||||
|
||||
Add(new cMenuEditStraItem(tr("Display Mode"), &tmpTvguideConfig->displayMode, 2, displayModeItems));
|
||||
if (tmpTvguideConfig->displayMode == eVertical) {
|
||||
Add(new cMenuEditIntItem(*cString::sprintf("%s%s", *indent, tr("Height of Channel Header (Perc. of osd height)")), &tmpTvguideConfig->channelHeaderHeightPercent, 5, 30));
|
||||
Add(new cMenuEditIntItem(*cString::sprintf("%s%s", *indent, tr("Width of Timeline (Perc. of osd width)")), &tmpTvguideConfig->timeLineWidthPercent, 5, 30));
|
||||
Add(new cMenuEditIntItem(*cString::sprintf("%s%s", *indent, tr("Number of Channels to display")), &tmpTvguideConfig->channelCols, 3, 12));
|
||||
} else if (tmpTvguideConfig->displayMode == eHorizontal) {
|
||||
Add(new cMenuEditIntItem(*cString::sprintf("%s%s", *indent, tr("Width of Channel Header (Perc. of osd width)")), &tmpTvguideConfig->channelHeaderWidthPercent, 5, 30));
|
||||
Add(new cMenuEditIntItem(*cString::sprintf("%s%s", *indent, tr("Height of Timeline (Perc. of osd height)")), &tmpTvguideConfig->timeLineHeightPercent, 5, 30));
|
||||
Add(new cMenuEditIntItem(*cString::sprintf("%s%s", *indent, tr("Number of Channels to display")), &tmpTvguideConfig->channelRows, 3, 12));
|
||||
Add(new cMenuEditBoolItem(*cString::sprintf("%s%s", *indent, tr("Display time in EPG Grids")), &tmpTvguideConfig->showTimeInGrid));
|
||||
Add(new cMenuEditStraItem(tr("Display Mode"), &tmpConfig->displayMode, 2, displayModeItems));
|
||||
if (tmpConfig->displayMode == eVertical) {
|
||||
Add(new cMenuEditIntItem(*cString::sprintf("%s%s", *indent, tr("Height of Channel Header (Perc. of osd height)")), &tmpConfig->channelHeaderHeightPercent, 5, 30));
|
||||
Add(new cMenuEditIntItem(*cString::sprintf("%s%s", *indent, tr("Width of Timeline (Perc. of osd width)")), &tmpConfig->timeLineWidthPercent, 5, 30));
|
||||
Add(new cMenuEditIntItem(*cString::sprintf("%s%s", *indent, tr("Number of Channels to display")), &tmpConfig->channelCols, 3, 12));
|
||||
} else if (tmpConfig->displayMode == eHorizontal) {
|
||||
Add(new cMenuEditIntItem(*cString::sprintf("%s%s", *indent, tr("Width of Channel Header (Perc. of osd width)")), &tmpConfig->channelHeaderWidthPercent, 5, 30));
|
||||
Add(new cMenuEditIntItem(*cString::sprintf("%s%s", *indent, tr("Height of Timeline (Perc. of osd height)")), &tmpConfig->timeLineHeightPercent, 5, 30));
|
||||
Add(new cMenuEditIntItem(*cString::sprintf("%s%s", *indent, tr("Number of Channels to display")), &tmpConfig->channelRows, 3, 12));
|
||||
}
|
||||
Add(new cMenuEditIntItem(tr("Height of Headers (Status Header and EPG View, Perc. of osd height)"), &tmpTvguideConfig->headerHeightPercent, 10, 50));
|
||||
Add(new cMenuEditIntItem(tr("Height of Footer (Perc. of osd height)"), &tmpTvguideConfig->footerHeightPercent, 3, 20));
|
||||
Add(new cMenuEditBoolItem(tr("Display time in EPG Grids"), &tmpConfig->showTimeInGrid));
|
||||
Add(new cMenuEditIntItem(tr("Height of Headers (Status Header and EPG View, Perc. of osd height)"), &tmpConfig->headerHeightPercent, 10, 50));
|
||||
Add(new cMenuEditIntItem(tr("Height of Footer (Perc. of osd height)"), &tmpConfig->footerHeightPercent, 3, 20));
|
||||
|
||||
Add(new cMenuEditBoolItem(tr("Display status header"), &tmpTvguideConfig->displayStatusHeader));
|
||||
if (tmpTvguideConfig->displayStatusHeader) {
|
||||
Add(new cMenuEditBoolItem(*cString::sprintf("%s%s", *indent, tr("Scale video to upper right corner")), &tmpTvguideConfig->scaleVideo));
|
||||
Add(new cMenuEditBoolItem(*cString::sprintf("%s%s", *indent, tr("Rounded corners around video frame")), &tmpTvguideConfig->decorateVideo));
|
||||
Add(new cMenuEditBoolItem(tr("Display status header"), &tmpConfig->displayStatusHeader));
|
||||
if (tmpConfig->displayStatusHeader) {
|
||||
Add(new cMenuEditBoolItem(*cString::sprintf("%s%s", *indent, tr("Scale video to upper right corner")), &tmpConfig->scaleVideo));
|
||||
Add(new cMenuEditBoolItem(*cString::sprintf("%s%s", *indent, tr("Rounded corners around video frame")), &tmpConfig->decorateVideo));
|
||||
}
|
||||
|
||||
Add(new cMenuEditBoolItem(tr("Display Channel Names in Header"), &tmpTvguideConfig->displayChannelName));
|
||||
Add(new cMenuEditBoolItem(tr("Display channel groups"), &tmpTvguideConfig->displayChannelGroups));
|
||||
if (tmpTvguideConfig->displayChannelGroups) {
|
||||
if (tmpTvguideConfig->displayMode == eVertical) {
|
||||
Add(new cMenuEditIntItem(*cString::sprintf("%s%s", *indent, tr("Height of channel groups (Perc. of osd height)")), &tmpTvguideConfig->channelGroupsPercent, 3, 30));
|
||||
} else if (tmpTvguideConfig->displayMode == eHorizontal) {
|
||||
Add(new cMenuEditIntItem(*cString::sprintf("%s%s", *indent, tr("Width of channel groups (Perc. of osd width)")), &tmpTvguideConfig->channelGroupsPercent, 3, 30));
|
||||
Add(new cMenuEditBoolItem(tr("Display Channel Names in Header"), &tmpConfig->displayChannelName));
|
||||
Add(new cMenuEditBoolItem(tr("Display channel groups"), &tmpConfig->displayChannelGroups));
|
||||
if (tmpConfig->displayChannelGroups) {
|
||||
if (tmpConfig->displayMode == eVertical) {
|
||||
Add(new cMenuEditIntItem(*cString::sprintf("%s%s", *indent, tr("Height of channel groups (Perc. of osd height)")), &tmpConfig->channelGroupsPercent, 3, 30));
|
||||
} else if (tmpConfig->displayMode == eHorizontal) {
|
||||
Add(new cMenuEditIntItem(*cString::sprintf("%s%s", *indent, tr("Width of channel groups (Perc. of osd width)")), &tmpConfig->channelGroupsPercent, 3, 30));
|
||||
}
|
||||
}
|
||||
|
||||
Add(new cMenuEditBoolItem(tr("Display current time baseline"), &tmpTvguideConfig->displayTimeBase));
|
||||
Add(new cMenuEditStraItem(tr("Show Channel Logos"), &tmpTvguideConfig->hideChannelLogos, 2, hideChannelLogosItems));
|
||||
if (!tmpTvguideConfig->hideChannelLogos) {
|
||||
Add(InfoItem(tr("Logo Path used"), *tvguideConfig.logoPath));
|
||||
Add(new cMenuEditStraItem(*cString::sprintf("%s%s", *indent, tr("Logo Extension")), &tmpTvguideConfig->logoExtension, 2, logoExtensionItems));
|
||||
Add(new cMenuEditIntItem(*cString::sprintf("%s%s", *indent, tr("Logo width ratio")), &tmpTvguideConfig->logoWidthRatio, 1, 1000));
|
||||
Add(new cMenuEditIntItem(*cString::sprintf("%s%s", *indent, tr("Logo height ratio")), &tmpTvguideConfig->logoHeightRatio, 1, 1000));
|
||||
Add(new cMenuEditBoolItem(tr("Display current time baseline"), &tmpConfig->displayTimeBase));
|
||||
Add(new cMenuEditStraItem(tr("Show Channel Logos"), &tmpConfig->hideChannelLogos, 2, hideChannelLogosItems));
|
||||
if (!tmpConfig->hideChannelLogos) {
|
||||
Add(InfoItem(tr("Logo Path used"), *config.logoPath));
|
||||
Add(new cMenuEditStraItem(*cString::sprintf("%s%s", *indent, tr("Logo Extension")), &tmpConfig->logoExtension, 2, logoExtensionItems));
|
||||
Add(new cMenuEditIntItem(*cString::sprintf("%s%s", *indent, tr("Logo width ratio")), &tmpConfig->logoWidthRatio, 1, 1000));
|
||||
Add(new cMenuEditIntItem(*cString::sprintf("%s%s", *indent, tr("Logo height ratio")), &tmpConfig->logoHeightRatio, 1, 1000));
|
||||
}
|
||||
|
||||
Add(new cMenuEditIntItem(tr("Text Border in Detailed View (pixel)"), &tmpTvguideConfig->epgViewBorder, 0, 300));
|
||||
Add(new cMenuEditIntItem(tr("Text Border in Detailed View (pixel)"), &tmpConfig->epgViewBorder, 0, 300));
|
||||
|
||||
Add(new cMenuEditStraItem(tr("Show EPG Images"), &tmpTvguideConfig->hideEpgImages, 2, hideChannelLogosItems));
|
||||
if (!tmpTvguideConfig->hideEpgImages) {
|
||||
Add(InfoItem(tr("EPG Images Path used"), *tvguideConfig.epgImagePath));
|
||||
Add(new cMenuEditIntItem(*cString::sprintf("%s%s", *indent, tr("EPG Image width")), &tmpTvguideConfig->epgImageWidth, 0, 800));
|
||||
Add(new cMenuEditIntItem(*cString::sprintf("%s%s", *indent, tr("EPG Image height")), &tmpTvguideConfig->epgImageHeight, 0, 800));
|
||||
Add(new cMenuEditIntItem(*cString::sprintf("%s%s", *indent, tr("Number of additional EPG Images")), &tmpTvguideConfig->numAdditionalEPGPictures, 0, 20));
|
||||
Add(new cMenuEditIntItem(*cString::sprintf("%s%s", *indent, tr("Additional EPG Image width")), &tmpTvguideConfig->epgImageWidthLarge, 1, 800));
|
||||
Add(new cMenuEditIntItem(*cString::sprintf("%s%s", *indent, tr("Additional EPG Image height")), &tmpTvguideConfig->epgImageHeightLarge, 0, 800));
|
||||
Add(new cMenuEditStraItem(tr("Show EPG Images"), &tmpConfig->hideEpgImages, 2, hideChannelLogosItems));
|
||||
if (!tmpConfig->hideEpgImages) {
|
||||
Add(InfoItem(tr("EPG Images Path used"), *config.epgImagePath));
|
||||
Add(new cMenuEditIntItem(*cString::sprintf("%s%s", *indent, tr("EPG Image width")), &tmpConfig->epgImageWidth, 0, 800));
|
||||
Add(new cMenuEditIntItem(*cString::sprintf("%s%s", *indent, tr("EPG Image height")), &tmpConfig->epgImageHeight, 0, 800));
|
||||
Add(new cMenuEditIntItem(*cString::sprintf("%s%s", *indent, tr("Number of additional EPG Images")), &tmpConfig->numAdditionalEPGPictures, 0, 20));
|
||||
Add(new cMenuEditIntItem(*cString::sprintf("%s%s", *indent, tr("Additional EPG Image width")), &tmpConfig->epgImageWidthLarge, 1, 800));
|
||||
Add(new cMenuEditIntItem(*cString::sprintf("%s%s", *indent, tr("Additional EPG Image height")), &tmpConfig->epgImageHeightLarge, 0, 800));
|
||||
}
|
||||
|
||||
SetCurrent(Get(currentItem));
|
||||
@@ -322,20 +333,20 @@ void cMenuSetupScreenLayout::Set(void) {
|
||||
}
|
||||
|
||||
eOSState cMenuSetupScreenLayout::ProcessKey(eKeys Key) {
|
||||
int olddisplayMode = tmpTvguideConfig->displayMode;
|
||||
bool olddisplayStatusHeader = tmpTvguideConfig->displayStatusHeader;
|
||||
bool olddisplayChannelGroups = tmpTvguideConfig->displayChannelGroups;
|
||||
int oldhideChannelLogos = tmpTvguideConfig->hideChannelLogos;
|
||||
int oldhideEpgImages = tmpTvguideConfig->hideEpgImages;
|
||||
int olddisplayMode = tmpConfig->displayMode;
|
||||
bool olddisplayStatusHeader = tmpConfig->displayStatusHeader;
|
||||
bool olddisplayChannelGroups = tmpConfig->displayChannelGroups;
|
||||
int oldhideChannelLogos = tmpConfig->hideChannelLogos;
|
||||
int oldhideEpgImages = tmpConfig->hideEpgImages;
|
||||
eOSState state = cOsdMenu::ProcessKey(Key);
|
||||
if (Key == kOk) {
|
||||
state = osBack;
|
||||
} else if (Key != kNone) {
|
||||
if (tmpTvguideConfig->displayMode != olddisplayMode ||
|
||||
tmpTvguideConfig->displayStatusHeader != olddisplayStatusHeader ||
|
||||
tmpTvguideConfig->displayChannelGroups != olddisplayChannelGroups ||
|
||||
tmpTvguideConfig->hideChannelLogos != oldhideChannelLogos ||
|
||||
tmpTvguideConfig->hideEpgImages != oldhideEpgImages) {
|
||||
if (tmpConfig->displayMode != olddisplayMode ||
|
||||
tmpConfig->displayStatusHeader != olddisplayStatusHeader ||
|
||||
tmpConfig->displayChannelGroups != olddisplayChannelGroups ||
|
||||
tmpConfig->hideChannelLogos != oldhideChannelLogos ||
|
||||
tmpConfig->hideEpgImages != oldhideEpgImages) {
|
||||
Set();
|
||||
}
|
||||
}
|
||||
@@ -344,9 +355,9 @@ eOSState cMenuSetupScreenLayout::ProcessKey(eKeys Key) {
|
||||
|
||||
//-----Fonts and Fontsizes -------------------------------------------------------------------------------------------------------
|
||||
|
||||
cMenuSetupFont::cMenuSetupFont(cTvguideConfig* data) : cMenuSetupSubMenu(tr("Fonts and Fontsizes"), data) {
|
||||
cMenuSetupFont::cMenuSetupFont(cTVGuideConfig* data) : cMenuSetupSubMenu(tr("Fonts and Fontsizes"), data) {
|
||||
cFont::GetAvailableFontNames(&fontNames);
|
||||
fontNames.Insert(strdup(tvguideConfig.fontNameDefault));
|
||||
fontNames.Insert(strdup(config.fontNameDefault));
|
||||
Set();
|
||||
}
|
||||
|
||||
@@ -354,37 +365,37 @@ void cMenuSetupFont::Set(void) {
|
||||
int currentItem = Current();
|
||||
Clear();
|
||||
|
||||
Add(new cMenuEditStraItem(tr("Font"), &tmpTvguideConfig->fontIndex, fontNames.Size(), &fontNames[0]));
|
||||
Add(new cMenuEditStraItem(tr("Font"), &tmpConfig->fontIndex, fontNames.Size(), &fontNames[0]));
|
||||
|
||||
Add(new cMenuEditIntItem(tr("Status Header Font Size"), &tmpTvguideConfig->FontStatusHeaderDelta, -30, 30));
|
||||
Add(new cMenuEditIntItem(tr("Status Header Large Font Size"), &tmpTvguideConfig->FontStatusHeaderLargeDelta, -30, 30));
|
||||
Add(new cMenuEditIntItem(tr("Detail EPG View Font Size"), &tmpTvguideConfig->FontDetailViewDelta, -30, 30));
|
||||
Add(new cMenuEditIntItem(tr("Detail EPG View Header Font Size"), &tmpTvguideConfig->FontDetailHeaderDelta, -30, 30));
|
||||
Add(new cMenuEditIntItem(tr("Message Font Size"), &tmpTvguideConfig->FontMessageBoxDelta, -30, 30));
|
||||
Add(new cMenuEditIntItem(tr("Message Large Font Size"), &tmpTvguideConfig->FontMessageBoxLargeDelta, -30, 30));
|
||||
Add(new cMenuEditIntItem(tr("Button Font Size"), &tmpTvguideConfig->FontButtonDelta, -30, 30));
|
||||
Add(new cMenuEditIntItem(tr("Status Header Font Size"), &tmpConfig->FontStatusHeaderDelta, -30, 30));
|
||||
Add(new cMenuEditIntItem(tr("Status Header Large Font Size"), &tmpConfig->FontStatusHeaderLargeDelta, -30, 30));
|
||||
Add(new cMenuEditIntItem(tr("Detail EPG View Font Size"), &tmpConfig->FontDetailViewDelta, -30, 30));
|
||||
Add(new cMenuEditIntItem(tr("Detail EPG View Header Font Size"), &tmpConfig->FontDetailHeaderDelta, -30, 30));
|
||||
Add(new cMenuEditIntItem(tr("Message Font Size"), &tmpConfig->FontMessageBoxDelta, -30, 30));
|
||||
Add(new cMenuEditIntItem(tr("Message Large Font Size"), &tmpConfig->FontMessageBoxLargeDelta, -30, 30));
|
||||
Add(new cMenuEditIntItem(tr("Button Font Size"), &tmpConfig->FontButtonDelta, -30, 30));
|
||||
|
||||
|
||||
if (tmpTvguideConfig->displayMode == eVertical) {
|
||||
Add(new cMenuEditIntItem(tr("Channel Header Font Size"), &tmpTvguideConfig->FontChannelHeaderDelta, -30, 30));
|
||||
Add(new cMenuEditIntItem(tr("Channel Groups Font Size"), &tmpTvguideConfig->FontChannelGroupsDelta, -30, 30));
|
||||
Add(new cMenuEditIntItem(tr("Grid Font Size"), &tmpTvguideConfig->FontGridDelta, -30, 30));
|
||||
Add(new cMenuEditIntItem(tr("Grid Font Small Size"), &tmpTvguideConfig->FontGridSmallDelta, -30, 30));
|
||||
Add(new cMenuEditIntItem(tr("Timeline Weekday Font Size"), &tmpTvguideConfig->FontTimeLineWeekdayDelta, -30, 30));
|
||||
Add(new cMenuEditIntItem(tr("Timeline Date Font Size"), &tmpTvguideConfig->FontTimeLineDateDelta, -30, 30));
|
||||
Add(new cMenuEditIntItem(tr("Timeline Time Font Size"), &tmpTvguideConfig->FontTimeLineTimeDelta, -30, 30));
|
||||
} else if (tmpTvguideConfig->displayMode == eHorizontal) {
|
||||
Add(new cMenuEditIntItem(tr("Channel Header Font Size"), &tmpTvguideConfig->FontChannelHeaderHorizontalDelta, -30, 30));
|
||||
Add(new cMenuEditIntItem(tr("Channel Groups Font Size"), &tmpTvguideConfig->FontChannelGroupsHorizontalDelta, -30, 30));
|
||||
Add(new cMenuEditIntItem(tr("Grid Font Size"), &tmpTvguideConfig->FontGridHorizontalDelta, -30, 30));
|
||||
Add(new cMenuEditIntItem(tr("Grid Font Small Size"), &tmpTvguideConfig->FontGridHorizontalSmallDelta, -30, 30));
|
||||
Add(new cMenuEditIntItem(tr("Timeline Date Font Size"), &tmpTvguideConfig->FontTimeLineDateHorizontalDelta, -30, 30));
|
||||
Add(new cMenuEditIntItem(tr("Timeline Time Font Size"), &tmpTvguideConfig->FontTimeLineTimeHorizontalDelta, -30, 30));
|
||||
if (tmpConfig->displayMode == eVertical) {
|
||||
Add(new cMenuEditIntItem(tr("Channel Header Font Size"), &tmpConfig->FontChannelHeaderDelta, -30, 30));
|
||||
Add(new cMenuEditIntItem(tr("Channel Groups Font Size"), &tmpConfig->FontChannelGroupsDelta, -30, 30));
|
||||
Add(new cMenuEditIntItem(tr("Grid Font Size"), &tmpConfig->FontGridDelta, -30, 30));
|
||||
Add(new cMenuEditIntItem(tr("Grid Font Small Size"), &tmpConfig->FontGridSmallDelta, -30, 30));
|
||||
Add(new cMenuEditIntItem(tr("Timeline Weekday Font Size"), &tmpConfig->FontTimeLineWeekdayDelta, -30, 30));
|
||||
Add(new cMenuEditIntItem(tr("Timeline Date Font Size"), &tmpConfig->FontTimeLineDateDelta, -30, 30));
|
||||
Add(new cMenuEditIntItem(tr("Timeline Time Font Size"), &tmpConfig->FontTimeLineTimeDelta, -30, 30));
|
||||
} else if (tmpConfig->displayMode == eHorizontal) {
|
||||
Add(new cMenuEditIntItem(tr("Channel Header Font Size"), &tmpConfig->FontChannelHeaderHorizontalDelta, -30, 30));
|
||||
Add(new cMenuEditIntItem(tr("Channel Groups Font Size"), &tmpConfig->FontChannelGroupsHorizontalDelta, -30, 30));
|
||||
Add(new cMenuEditIntItem(tr("Grid Font Size"), &tmpConfig->FontGridHorizontalDelta, -30, 30));
|
||||
Add(new cMenuEditIntItem(tr("Grid Font Small Size"), &tmpConfig->FontGridHorizontalSmallDelta, -30, 30));
|
||||
Add(new cMenuEditIntItem(tr("Timeline Date Font Size"), &tmpConfig->FontTimeLineDateHorizontalDelta, -30, 30));
|
||||
Add(new cMenuEditIntItem(tr("Timeline Time Font Size"), &tmpConfig->FontTimeLineTimeHorizontalDelta, -30, 30));
|
||||
}
|
||||
|
||||
Add(new cMenuEditIntItem(tr("Search & Recording Menu Font Size"), &tmpTvguideConfig->FontRecMenuItemDelta, -30, 30));
|
||||
Add(new cMenuEditIntItem(tr("Search & Recording Menu Small Font Size"), &tmpTvguideConfig->FontRecMenuItemSmallDelta, -30, 30));
|
||||
Add(new cMenuEditIntItem(tr("Search & Recording Menu Header Font Size"), &tmpTvguideConfig->FontRecMenuItemLargeDelta, -30, 30));
|
||||
Add(new cMenuEditIntItem(tr("Search & Recording Menu Font Size"), &tmpConfig->FontRecMenuItemDelta, -30, 30));
|
||||
Add(new cMenuEditIntItem(tr("Search & Recording Menu Small Font Size"), &tmpConfig->FontRecMenuItemSmallDelta, -30, 30));
|
||||
Add(new cMenuEditIntItem(tr("Search & Recording Menu Header Font Size"), &tmpConfig->FontRecMenuItemLargeDelta, -30, 30));
|
||||
|
||||
SetCurrent(Get(currentItem));
|
||||
Display();
|
||||
@@ -392,7 +403,7 @@ void cMenuSetupFont::Set(void) {
|
||||
|
||||
//----- Recording Menus and Favorites -------------------------------------------------------------------------------------------------------
|
||||
|
||||
cMenuSetupFavorites::cMenuSetupFavorites(cTvguideConfig* data) : cMenuSetupSubMenu(tr("Recording Menus and Favorites"), data) {
|
||||
cMenuSetupFavorites::cMenuSetupFavorites(cTVGuideConfig* data) : cMenuSetupSubMenu(tr("Recording Menus and Favorites"), data) {
|
||||
strn0cpy(description1, data->descUser1.c_str(), sizeof(description1));
|
||||
strn0cpy(description2, data->descUser2.c_str(), sizeof(description2));
|
||||
strn0cpy(description3, data->descUser3.c_str(), sizeof(description3));
|
||||
@@ -401,6 +412,9 @@ cMenuSetupFavorites::cMenuSetupFavorites(cTvguideConfig* data) : cMenuSetupSubM
|
||||
recFolderMode[1] = tr("Select from folder list");
|
||||
recFolderMode[2] = tr("Use fixed folder");
|
||||
strn0cpy(fixedFolder, data->instRecFixedFolder.c_str(), sizeof(fixedFolder));
|
||||
addSubtitleMode[0] = tr("never");
|
||||
addSubtitleMode[1] = tr("smart");
|
||||
addSubtitleMode[2] = tr("always");
|
||||
switchModeItems[0] = (tr("switch"));
|
||||
switchModeItems[1] = (tr("announce only"));
|
||||
switchModeItems[2] = (tr("ask for switch"));
|
||||
@@ -411,44 +425,47 @@ void cMenuSetupFavorites::Set(void) {
|
||||
int currentItem = Current();
|
||||
Clear();
|
||||
|
||||
Add(new cMenuEditStraItem(tr("Folder for instant Recordings"), &tmpTvguideConfig->instRecFolderMode, 3, recFolderMode));
|
||||
if (tmpTvguideConfig->instRecFolderMode == eFolderFixed) {
|
||||
Add(new cOsdItem(tr("Instant recording:"), osUnknown, false));
|
||||
Add(new cMenuEditStraItem(tr("Folder for instant Recordings"), &tmpConfig->instRecFolderMode, 3, recFolderMode));
|
||||
if (tmpConfig->instRecFolderMode == eFolderFixed) {
|
||||
Add(new cMenuEditStrItem(cString::sprintf("%s%s", *indent, tr("Folder")), fixedFolder, sizeof(fixedFolder), trVDR(FileNameChars)));
|
||||
}
|
||||
Add(new cMenuEditStraItem(tr("Add episode to manual timers"), &tmpConfig->addSubtitleToTimer, 3, addSubtitleMode));
|
||||
if (pRemoteTimers)
|
||||
Add(new cMenuEditBoolItem(tr("Use Remotetimers"), &tmpTvguideConfig->useRemoteTimers));
|
||||
|
||||
Add(new cMenuEditBoolItem(tr("Limit channels in favorites"), &tmpTvguideConfig->favLimitChannels));
|
||||
if (tmpTvguideConfig->favLimitChannels) {
|
||||
Add(new cMenuEditChanItem(tr("Start Channel"), &tmpTvguideConfig->favStartChannel));
|
||||
Add(new cMenuEditChanItem(tr("Stop Channel"), &tmpTvguideConfig->favStopChannel));
|
||||
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) {
|
||||
Add(new cMenuEditChanItem(tr("Start Channel"), &tmpConfig->favStartChannel));
|
||||
Add(new cMenuEditChanItem(tr("Stop Channel"), &tmpConfig->favStopChannel));
|
||||
}
|
||||
Add(new cMenuEditBoolItem(tr("Use \"What's on now\" in favorites"), &tmpTvguideConfig->favWhatsOnNow));
|
||||
Add(new cMenuEditBoolItem(tr("Use \"What's on next\" in favorites"), &tmpTvguideConfig->favWhatsOnNext));
|
||||
Add(new cMenuEditBoolItem(tr("Use \"What's on now\" in favorites"), &tmpConfig->favWhatsOnNow));
|
||||
Add(new cMenuEditBoolItem(tr("Use \"What's on next\" in favorites"), &tmpConfig->favWhatsOnNext));
|
||||
Add(new cOsdItem(tr("User defined times in favorites:"), osUnknown, false));
|
||||
Add(new cMenuEditBoolItem(tr("Use user defined time 1"), &tmpTvguideConfig->favUseTime1));
|
||||
if (tmpTvguideConfig->favUseTime1) {
|
||||
Add(new cMenuEditBoolItem(tr("Use user defined time 1"), &tmpConfig->favUseTime1));
|
||||
if (tmpConfig->favUseTime1) {
|
||||
Add(new cMenuEditStrItem(cString::sprintf("%s%s", *indent, tr("Description")), description1, sizeof(description1), trVDR(FileNameChars)));
|
||||
Add(new cMenuEditTimeItem(cString::sprintf("%s%s", *indent, tr("Time")), &tmpTvguideConfig->favTime1));
|
||||
Add(new cMenuEditTimeItem(cString::sprintf("%s%s", *indent, tr("Time")), &tmpConfig->favTime1));
|
||||
}
|
||||
Add(new cMenuEditBoolItem(tr("Use user defined time 2"), &tmpTvguideConfig->favUseTime2));
|
||||
if (tmpTvguideConfig->favUseTime2) {
|
||||
Add(new cMenuEditBoolItem(tr("Use user defined time 2"), &tmpConfig->favUseTime2));
|
||||
if (tmpConfig->favUseTime2) {
|
||||
Add(new cMenuEditStrItem(cString::sprintf("%s%s", *indent, tr("Description")), description2, sizeof(description2), trVDR(FileNameChars)));
|
||||
Add(new cMenuEditTimeItem(cString::sprintf("%s%s", *indent, tr("Time")), &tmpTvguideConfig->favTime2));
|
||||
Add(new cMenuEditTimeItem(cString::sprintf("%s%s", *indent, tr("Time")), &tmpConfig->favTime2));
|
||||
}
|
||||
Add(new cMenuEditBoolItem(tr("Use user defined time 3"), &tmpTvguideConfig->favUseTime3));
|
||||
if (tmpTvguideConfig->favUseTime3) {
|
||||
Add(new cMenuEditBoolItem(tr("Use user defined time 3"), &tmpConfig->favUseTime3));
|
||||
if (tmpConfig->favUseTime3) {
|
||||
Add(new cMenuEditStrItem(cString::sprintf("%s%s", *indent, tr("Description")), description3, sizeof(description3), trVDR(FileNameChars)));
|
||||
Add(new cMenuEditTimeItem(cString::sprintf("%s%s", *indent, tr("Time")), &tmpTvguideConfig->favTime3));
|
||||
Add(new cMenuEditTimeItem(cString::sprintf("%s%s", *indent, tr("Time")), &tmpConfig->favTime3));
|
||||
}
|
||||
Add(new cMenuEditBoolItem(tr("Use user defined time 4"), &tmpTvguideConfig->favUseTime4));
|
||||
if (tmpTvguideConfig->favUseTime4) {
|
||||
Add(new cMenuEditBoolItem(tr("Use user defined time 4"), &tmpConfig->favUseTime4));
|
||||
if (tmpConfig->favUseTime4) {
|
||||
Add(new cMenuEditStrItem(cString::sprintf("%s%s", *indent, tr("Description")), description4, sizeof(description4), trVDR(FileNameChars)));
|
||||
Add(new cMenuEditTimeItem(cString::sprintf("%s%s", *indent, tr("Time")), &tmpTvguideConfig->favTime4));
|
||||
Add(new cMenuEditTimeItem(cString::sprintf("%s%s", *indent, tr("Time")), &tmpConfig->favTime4));
|
||||
}
|
||||
Add(new cOsdItem(tr("Switchtimer:"), osUnknown, false));
|
||||
Add(new cMenuEditStraItem(tr("Switch Mode"), &tmpTvguideConfig->switchMode, 3, switchModeItems));
|
||||
Add(new cMenuEditIntItem(tr("Switch (x)min before start of the show"), &tmpTvguideConfig->switchMinsBefore, 0, 10));
|
||||
Add(new cMenuEditStraItem(tr("Switch Mode"), &tmpConfig->switchMode, 3, switchModeItems));
|
||||
Add(new cMenuEditIntItem(tr("Switch (x)min before start of the show"), &tmpConfig->switchMinsBefore, 0, 10));
|
||||
|
||||
|
||||
SetCurrent(Get(currentItem));
|
||||
@@ -457,21 +474,21 @@ void cMenuSetupFavorites::Set(void) {
|
||||
|
||||
eOSState cMenuSetupFavorites::ProcessKey(eKeys Key) {
|
||||
|
||||
int tmpFavUseTime1 = tmpTvguideConfig->favUseTime1;
|
||||
int tmpFavUseTime2 = tmpTvguideConfig->favUseTime2;
|
||||
int tmpFavUseTime3 = tmpTvguideConfig->favUseTime3;
|
||||
int tmpFavUseTime4 = tmpTvguideConfig->favUseTime4;
|
||||
int tmpFavLimitChannels = tmpTvguideConfig->favLimitChannels;
|
||||
int tmpFolderMode = tmpTvguideConfig->instRecFolderMode;
|
||||
int tmpFavUseTime1 = tmpConfig->favUseTime1;
|
||||
int tmpFavUseTime2 = tmpConfig->favUseTime2;
|
||||
int tmpFavUseTime3 = tmpConfig->favUseTime3;
|
||||
int tmpFavUseTime4 = tmpConfig->favUseTime4;
|
||||
int tmpFavLimitChannels = tmpConfig->favLimitChannels;
|
||||
int tmpFolderMode = tmpConfig->instRecFolderMode;
|
||||
|
||||
eOSState state = cOsdMenu::ProcessKey(Key);
|
||||
|
||||
if ((tmpFavUseTime1 != tmpTvguideConfig->favUseTime1) ||
|
||||
(tmpFavUseTime2 != tmpTvguideConfig->favUseTime2) ||
|
||||
(tmpFavUseTime3 != tmpTvguideConfig->favUseTime3) ||
|
||||
(tmpFavUseTime4 != tmpTvguideConfig->favUseTime4) ||
|
||||
(tmpFavLimitChannels != tmpTvguideConfig->favLimitChannels) ||
|
||||
(tmpFolderMode != tmpTvguideConfig->instRecFolderMode) ) {
|
||||
if ((tmpFavUseTime1 != tmpConfig->favUseTime1) ||
|
||||
(tmpFavUseTime2 != tmpConfig->favUseTime2) ||
|
||||
(tmpFavUseTime3 != tmpConfig->favUseTime3) ||
|
||||
(tmpFavUseTime4 != tmpConfig->favUseTime4) ||
|
||||
(tmpFavLimitChannels != tmpConfig->favLimitChannels) ||
|
||||
(tmpFolderMode != tmpConfig->instRecFolderMode) ) {
|
||||
Set();
|
||||
Display();
|
||||
}
|
||||
@@ -479,10 +496,10 @@ eOSState cMenuSetupFavorites::ProcessKey(eKeys Key) {
|
||||
if (state == osUnknown) {
|
||||
switch (Key) {
|
||||
case kOk: {
|
||||
tmpTvguideConfig->descUser1 = cString::sprintf("%s", description1);
|
||||
tmpTvguideConfig->descUser2 = cString::sprintf("%s", description2);
|
||||
tmpTvguideConfig->descUser3 = cString::sprintf("%s", description3);
|
||||
tmpTvguideConfig->descUser4 = cString::sprintf("%s", description4);
|
||||
tmpConfig->descUser1 = cString::sprintf("%s", description1);
|
||||
tmpConfig->descUser2 = cString::sprintf("%s", description2);
|
||||
tmpConfig->descUser3 = cString::sprintf("%s", description3);
|
||||
tmpConfig->descUser4 = cString::sprintf("%s", description4);
|
||||
return osBack; }
|
||||
default:
|
||||
break;
|
||||
@@ -493,26 +510,26 @@ eOSState cMenuSetupFavorites::ProcessKey(eKeys Key) {
|
||||
}
|
||||
|
||||
//-----Image Caching-------------------------------------------------------------------------------------------------------------
|
||||
cMenuSetupImageCache::cMenuSetupImageCache(cTvguideConfig* data) : cMenuSetupSubMenu(tr("Image Loading and Caching"), data) {
|
||||
cMenuSetupImageCache::cMenuSetupImageCache(cTVGuideConfig* data) : cMenuSetupSubMenu(tr("Image Loading and Caching"), data) {
|
||||
Set();
|
||||
}
|
||||
|
||||
void cMenuSetupImageCache::Set(void) {
|
||||
int currentItem = Current();
|
||||
Clear();
|
||||
Add(new cMenuEditBoolItem(tr("Create Log Messages for image loading"), &tmpTvguideConfig->debugImageLoading));
|
||||
Add(new cMenuEditBoolItem(tr("Limit Logo Cache"), &tmpTvguideConfig->limitLogoCache));
|
||||
if (&tmpTvguideConfig->limitLogoCache) {
|
||||
Add(new cMenuEditIntItem(cString::sprintf("%s%s", *indent, tr("Maximal number of logos to cache")), &tmpTvguideConfig->numLogosMax, 1, 9999));
|
||||
Add(new cMenuEditBoolItem(tr("Create Log Messages for image loading"), &tmpConfig->debugImageLoading));
|
||||
Add(new cMenuEditBoolItem(tr("Limit Logo Cache"), &tmpConfig->limitLogoCache));
|
||||
if (&tmpConfig->limitLogoCache) {
|
||||
Add(new cMenuEditIntItem(cString::sprintf("%s%s", *indent, tr("Maximal number of logos to cache")), &tmpConfig->numLogosMax, 1, 9999));
|
||||
}
|
||||
Add(new cMenuEditIntItem(tr("Number of logos to cache at start"), &tmpTvguideConfig->numLogosInitial, 0, 9999));
|
||||
Add(new cMenuEditIntItem(tr("Number of logos to cache at start"), &tmpConfig->numLogosInitial, 0, 9999));
|
||||
|
||||
Add(InfoItem(tr("Cache Sizes"), ""));
|
||||
Add(InfoItem(tr("OSD Element Cache"), (imgCache.GetCacheSize(ctOsdElement)).c_str()));
|
||||
Add(InfoItem(tr("Logo cache"), (imgCache.GetCacheSize(ctLogo)).c_str()));
|
||||
Add(InfoItem(tr("EPG Grid Cache"), (imgCache.GetCacheSize(ctGrid)).c_str()));
|
||||
Add(InfoItem(tr("Channel Groups Cache"), (imgCache.GetCacheSize(ctChannelGroup)).c_str()));
|
||||
Add(InfoItem(tr("Recording Menus Icon Cache"), (imgCache.GetCacheSize(ctIcon)).c_str()));
|
||||
Add(InfoItem(tr("OSD Element Cache"), cString::sprintf("\t%s", (imgCache.GetCacheSize(ctOsdElement)).c_str())));
|
||||
Add(InfoItem(tr("Logo cache"), cString::sprintf("\t%s", (imgCache.GetCacheSize(ctLogo)).c_str())));
|
||||
Add(InfoItem(tr("EPG Grid Cache"), cString::sprintf("\t%s", (imgCache.GetCacheSize(ctGrid)).c_str())));
|
||||
Add(InfoItem(tr("Channel Groups Cache"), cString::sprintf("\t%s", (imgCache.GetCacheSize(ctChannelGroup)).c_str())));
|
||||
Add(InfoItem(tr("Recording Menus Icon Cache"), cString::sprintf("\t%s", (imgCache.GetCacheSize(ctIcon)).c_str())));
|
||||
|
||||
SetCurrent(Get(currentItem));
|
||||
Display();
|
||||
|
19
setup.h
19
setup.h
@@ -4,12 +4,14 @@
|
||||
#include <vdr/menuitems.h>
|
||||
#include "config.h"
|
||||
|
||||
extern cTVGuideConfig config;
|
||||
|
||||
class cTvguideSetup : public cMenuSetupPage {
|
||||
public:
|
||||
cTvguideSetup(void);
|
||||
virtual ~cTvguideSetup();
|
||||
private:
|
||||
cTvguideConfig tmpTvguideConfig;
|
||||
cTVGuideConfig tmpConfig;
|
||||
void Setup(void);
|
||||
protected:
|
||||
virtual eOSState ProcessKey(eKeys Key);
|
||||
@@ -19,13 +21,13 @@ class cTvguideSetup : public cMenuSetupPage {
|
||||
|
||||
class cMenuSetupSubMenu : public cOsdMenu {
|
||||
protected:
|
||||
cTvguideConfig *tmpTvguideConfig;
|
||||
cTVGuideConfig *tmpConfig;
|
||||
virtual eOSState ProcessKey(eKeys Key);
|
||||
virtual void Set(void) = 0;
|
||||
cOsdItem *InfoItem(const char *label, const char *value);
|
||||
cString indent;
|
||||
public:
|
||||
cMenuSetupSubMenu(const char *Title, cTvguideConfig *data);
|
||||
cMenuSetupSubMenu(const char *Title, cTVGuideConfig *data);
|
||||
};
|
||||
|
||||
class cMenuSetupGeneral : public cMenuSetupSubMenu {
|
||||
@@ -39,7 +41,7 @@ class cMenuSetupGeneral : public cMenuSetupSubMenu {
|
||||
const char *useSubtitleRerunTexts[3];
|
||||
void Set(void);
|
||||
public:
|
||||
cMenuSetupGeneral(cTvguideConfig *data);
|
||||
cMenuSetupGeneral(cTVGuideConfig *data);
|
||||
};
|
||||
|
||||
class cMenuSetupScreenLayout : public cMenuSetupSubMenu {
|
||||
@@ -50,7 +52,7 @@ class cMenuSetupScreenLayout : public cMenuSetupSubMenu {
|
||||
const char * logoExtensionItems[2];
|
||||
void Set(void);
|
||||
public:
|
||||
cMenuSetupScreenLayout(cTvguideConfig *data);
|
||||
cMenuSetupScreenLayout(cTVGuideConfig *data);
|
||||
};
|
||||
|
||||
class cMenuSetupFont : public cMenuSetupSubMenu {
|
||||
@@ -58,7 +60,7 @@ class cMenuSetupFont : public cMenuSetupSubMenu {
|
||||
cStringList fontNames;
|
||||
void Set(void);
|
||||
public:
|
||||
cMenuSetupFont(cTvguideConfig *data);
|
||||
cMenuSetupFont(cTVGuideConfig *data);
|
||||
};
|
||||
|
||||
class cMenuSetupFavorites : public cMenuSetupSubMenu {
|
||||
@@ -68,19 +70,20 @@ class cMenuSetupFavorites : public cMenuSetupSubMenu {
|
||||
char description3[256];
|
||||
char description4[256];
|
||||
const char * recFolderMode[3];
|
||||
const char * addSubtitleMode[3];
|
||||
const char * switchModeItems[3];
|
||||
char fixedFolder[256];
|
||||
void Set(void);
|
||||
virtual eOSState ProcessKey(eKeys Key);
|
||||
public:
|
||||
cMenuSetupFavorites(cTvguideConfig *data);
|
||||
cMenuSetupFavorites(cTVGuideConfig *data);
|
||||
};
|
||||
|
||||
class cMenuSetupImageCache : public cMenuSetupSubMenu {
|
||||
protected:
|
||||
void Set(void);
|
||||
public:
|
||||
cMenuSetupImageCache(cTvguideConfig *data);
|
||||
cMenuSetupImageCache(cTVGuideConfig *data);
|
||||
};
|
||||
|
||||
#endif //__TVGUIDE_SETUP_H
|
||||
|
@@ -17,7 +17,7 @@ cStatusHeader::cStatusHeader(void) {
|
||||
cStatusHeader::~cStatusHeader(void) {
|
||||
osdManager.releasePixmap(pixmapText);
|
||||
osdManager.releasePixmap(pixmapTVFrame);
|
||||
if (tvguideConfig.scaleVideo) {
|
||||
if (config.scaleVideo) {
|
||||
cRect vidWin = cDevice::PrimaryDevice()->CanScaleVideo(cRect::Null);
|
||||
cDevice::PrimaryDevice()->ScaleVideo(vidWin);
|
||||
}
|
||||
@@ -26,8 +26,8 @@ cStatusHeader::~cStatusHeader(void) {
|
||||
void cStatusHeader::Draw(void) {
|
||||
pixmapText->Fill(clrTransparent);
|
||||
pixmapTVFrame->Fill(clrTransparent);
|
||||
if (tvguideConfig.style == eStyleGraphical) {
|
||||
if (tvguideConfig.scaleVideo) {
|
||||
if (config.style == eStyleGraphical) {
|
||||
if (config.scaleVideo) {
|
||||
drawBackgroundGraphical(bgStatusHeaderWindowed);
|
||||
cImage *tvFrameBack = imgCache.GetOsdElement(oeStatusHeaderTVFrame);
|
||||
if (tvFrameBack)
|
||||
@@ -36,7 +36,7 @@ void cStatusHeader::Draw(void) {
|
||||
drawBackgroundGraphical(bgStatusHeaderFull);
|
||||
}
|
||||
} else {
|
||||
if (tvguideConfig.decorateVideo) {
|
||||
if (config.decorateVideo) {
|
||||
DecorateVideoFrame();
|
||||
}
|
||||
drawBackground();
|
||||
@@ -45,7 +45,7 @@ void cStatusHeader::Draw(void) {
|
||||
}
|
||||
|
||||
void cStatusHeader::ScaleVideo(void) {
|
||||
if (tvguideConfig.scaleVideo) {
|
||||
if (config.scaleVideo) {
|
||||
int width = height * 16 / 9;
|
||||
int x = osdManager.Left() + geoManager.osdWidth - width;
|
||||
int y = osdManager.Top();
|
||||
@@ -55,11 +55,11 @@ void cStatusHeader::ScaleVideo(void) {
|
||||
}
|
||||
}
|
||||
|
||||
void cStatusHeader::DrawInfoText(cGrid *grid) {
|
||||
void cStatusHeader::DrawInfoText(cGridElement *grid) {
|
||||
int border = 10;
|
||||
int textWidth = 0;
|
||||
textWidth = width - 2 * border;
|
||||
tColor colorTextBack = (tvguideConfig.style == eStyleFlat)?color:clrTransparent;
|
||||
tColor colorTextBack = (config.style == eStyleFlat)?color:clrTransparent;
|
||||
pixmapText->Fill(clrTransparent);
|
||||
int x = border;
|
||||
int y = border;
|
||||
|
@@ -2,7 +2,7 @@
|
||||
#define __TVGUIDE_STATUSHEADER_H
|
||||
|
||||
#include "styledpixmap.h"
|
||||
#include "grid.h"
|
||||
#include "gridelement.h"
|
||||
|
||||
// --- cStatusHeader -------------------------------------------------------------
|
||||
|
||||
@@ -19,7 +19,7 @@ public:
|
||||
virtual ~cStatusHeader(void);
|
||||
void Draw(void);
|
||||
void ScaleVideo(void);
|
||||
void DrawInfoText(cGrid *grid);
|
||||
void DrawInfoText(cGridElement *grid);
|
||||
};
|
||||
|
||||
#endif //__TVGUIDE_STATUSHEADER_H
|
@@ -22,9 +22,9 @@ void cStyledPixmap::setPixmap(cPixmap *pixmap) {
|
||||
}
|
||||
|
||||
void cStyledPixmap::drawBackground() {
|
||||
if (tvguideConfig.style == eStyleBlendingDefault){
|
||||
if (config.style == eStyleBlendingDefault){
|
||||
drawBlendedBackground();
|
||||
} else if (tvguideConfig.style == eStyleBlendingMagick){
|
||||
} else if (config.style == eStyleBlendingMagick){
|
||||
drawSparsedBackground();
|
||||
} else {
|
||||
pixmap->Fill(color);
|
||||
@@ -129,7 +129,7 @@ void cStyledPixmap::drawBorder() {
|
||||
int height = pixmap->ViewPort().Height();
|
||||
|
||||
drawDefaultBorder(width, height);
|
||||
if (tvguideConfig.roundedCorners) {
|
||||
if (config.roundedCorners) {
|
||||
int borderRadius = 12;
|
||||
drawRoundedCorners(width, height, borderRadius);
|
||||
}
|
||||
|
@@ -3,7 +3,7 @@
|
||||
|
||||
#include <vdr/osd.h>
|
||||
#include <vdr/epg.h>
|
||||
#include "timer.h"
|
||||
#include "timemanager.h"
|
||||
#include "config.h"
|
||||
|
||||
enum eBackgroundType {
|
||||
|
@@ -6,15 +6,13 @@ cSwitchTimers SwitchTimers;
|
||||
cSwitchTimer::cSwitchTimer(void) {
|
||||
eventID = 0;
|
||||
startTime = 0;
|
||||
switchMinsBefore = tvguideConfig.switchMinsBefore;
|
||||
switchMode = tvguideConfig.switchMode;
|
||||
switchMinsBefore = config.switchMinsBefore;
|
||||
switchMode = config.switchMode;
|
||||
}
|
||||
|
||||
cSwitchTimer::cSwitchTimer(const cEvent* Event) {
|
||||
eventID = 0;
|
||||
startTime = 0;
|
||||
// switchMinsBefore = tvguideConfig.switchMinsBefore;
|
||||
// switchModes = tvguideConfig.switchModes;
|
||||
if (Event) {
|
||||
eventID = Event->EventID();
|
||||
channelID = Event->ChannelID();
|
||||
|
260
timeline.c
260
timeline.c
@@ -1,71 +1,51 @@
|
||||
#include "imageloader.h"
|
||||
#include "timeline.h"
|
||||
|
||||
cTimeLine::cTimeLine(cMyTime *myTime) {
|
||||
this->myTime = myTime;
|
||||
if (tvguideConfig.displayMode == eVertical) {
|
||||
dateViewer = new cStyledPixmap(osdManager.requestPixmap(1, cRect(0,
|
||||
geoManager.statusHeaderHeight + geoManager.clockHeight,
|
||||
geoManager.dateVieverWidth,
|
||||
geoManager.dateVieverHeight)));
|
||||
timeline = osdManager.requestPixmap(2, cRect(0,
|
||||
geoManager.statusHeaderHeight + geoManager.channelHeaderHeight + geoManager.channelGroupsHeight,
|
||||
geoManager.timeLineWidth,
|
||||
geoManager.osdHeight - geoManager.statusHeaderHeight - geoManager.channelHeaderHeight - geoManager.channelGroupsHeight - geoManager.footerHeight)
|
||||
, cRect(0,
|
||||
0,
|
||||
geoManager.timeLineWidth,
|
||||
1440*geoManager.minutePixel));
|
||||
timeBase = osdManager.requestPixmap(3, cRect(0,
|
||||
geoManager.statusHeaderHeight + geoManager.channelGroupsHeight + geoManager.channelHeaderHeight,
|
||||
geoManager.osdWidth,
|
||||
geoManager.timeLineGridHeight));
|
||||
} else if (tvguideConfig.displayMode == eHorizontal) {
|
||||
dateViewer = new cStyledPixmap(osdManager.requestPixmap(1, cRect(geoManager.clockWidth,
|
||||
geoManager.statusHeaderHeight,
|
||||
geoManager.dateVieverWidth,
|
||||
geoManager.dateVieverHeight)));
|
||||
timeline = osdManager.requestPixmap(2, cRect(geoManager.channelHeaderWidth + geoManager.channelGroupsWidth,
|
||||
geoManager.statusHeaderHeight,
|
||||
geoManager.osdWidth - geoManager.channelHeaderWidth - geoManager.channelGroupsWidth,
|
||||
geoManager.timeLineHeight)
|
||||
, cRect(0,
|
||||
0,
|
||||
1440*geoManager.minutePixel,
|
||||
geoManager.timeLineHeight));
|
||||
timeBase = osdManager.requestPixmap(3, cRect(geoManager.channelGroupsWidth + geoManager.channelHeaderWidth,
|
||||
geoManager.statusHeaderHeight,
|
||||
geoManager.timeLineGridWidth,
|
||||
geoManager.timeLineHeight + tvguideConfig.channelRows * geoManager.rowHeight));
|
||||
cTimeLine::cTimeLine(cTimeManager *timeManager) {
|
||||
this->timeManager = timeManager;
|
||||
lastClock = "";
|
||||
timeBase = NULL;
|
||||
int x11, x21, y11, y21, x12, x22, y12, y22;
|
||||
if (config.displayMode == eVertical) {
|
||||
x11 = 0;
|
||||
x21 = geoManager.dateVieverWidth;
|
||||
y11 = geoManager.statusHeaderHeight + geoManager.clockHeight;
|
||||
y21 = geoManager.dateVieverHeight;
|
||||
x12 = 0;
|
||||
x22 = geoManager.timeLineWidth;
|
||||
y12 = geoManager.statusHeaderHeight + geoManager.channelHeaderHeight + geoManager.channelGroupsHeight;
|
||||
y22 = geoManager.osdHeight - geoManager.statusHeaderHeight - geoManager.channelHeaderHeight - geoManager.channelGroupsHeight - geoManager.footerHeight;
|
||||
} else if (config.displayMode == eHorizontal) {
|
||||
x11 = geoManager.clockWidth;
|
||||
x21 = geoManager.dateVieverWidth;
|
||||
y11 = geoManager.statusHeaderHeight;
|
||||
y21 = geoManager.dateVieverHeight;
|
||||
x12 = geoManager.channelHeaderWidth + geoManager.channelGroupsWidth;
|
||||
x22 = geoManager.osdWidth - geoManager.channelHeaderWidth - geoManager.channelGroupsWidth;
|
||||
y12 = geoManager.statusHeaderHeight;
|
||||
y22 = geoManager.timeLineHeight;
|
||||
}
|
||||
timeBase->Fill(clrTransparent);
|
||||
int clockY;
|
||||
int clockX;
|
||||
if (tvguideConfig.displayMode == eVertical) {
|
||||
clockY = geoManager.statusHeaderHeight;
|
||||
clockX = 0;
|
||||
}
|
||||
else {
|
||||
clockY = geoManager.statusHeaderHeight;
|
||||
clockX = 0;
|
||||
}
|
||||
clock = new cStyledPixmap(osdManager.requestPixmap(3, cRect(clockX,
|
||||
clockY,
|
||||
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,
|
||||
geoManager.statusHeaderHeight,
|
||||
geoManager.clockWidth,
|
||||
geoManager.clockHeight)));
|
||||
}
|
||||
|
||||
cTimeLine::~cTimeLine(void) {
|
||||
delete dateViewer;
|
||||
osdManager.releasePixmap(timeline);
|
||||
if (clock)
|
||||
delete clock;
|
||||
osdManager.releasePixmap(timeBase);
|
||||
osdManager.releasePixmap(timeline);
|
||||
if (dateViewer)
|
||||
delete dateViewer;
|
||||
}
|
||||
|
||||
void cTimeLine::drawDateViewer() {
|
||||
cString weekDay = myTime->GetWeekday();
|
||||
cString date = myTime->GetDate();
|
||||
if (tvguideConfig.style != eStyleGraphical) {
|
||||
void cTimeLine::DrawDateViewer(void) {
|
||||
cString weekDay = timeManager->GetWeekday();
|
||||
cString date = timeManager->GetDate();
|
||||
if (config.style != eStyleGraphical) {
|
||||
dateViewer->setColor(theme.Color(clrHeader), theme.Color(clrHeaderBlending));
|
||||
dateViewer->drawBackground();
|
||||
dateViewer->drawBorder();
|
||||
@@ -78,9 +58,9 @@ void cTimeLine::drawDateViewer() {
|
||||
dateViewer->Fill(clrTransparent);
|
||||
}
|
||||
tColor colorFont = theme.Color(clrButtonYellow);
|
||||
tColor colorFontBack = (tvguideConfig.style == eStyleFlat) ? theme.Color(clrHeader) : clrTransparent;
|
||||
tColor colorFontBack = (config.style == eStyleFlat) ? theme.Color(clrHeader) : clrTransparent;
|
||||
|
||||
if (tvguideConfig.displayMode == eVertical) {
|
||||
if (config.displayMode == eVertical) {
|
||||
int textHeightWeekday = fontManager.FontTimeLineWeekday->Height();
|
||||
int textHeightDate = fontManager.FontTimeLineDate->Height();
|
||||
int weekdayWidth = fontManager.FontTimeLineWeekday->Width(*weekDay);
|
||||
@@ -88,7 +68,7 @@ void cTimeLine::drawDateViewer() {
|
||||
int y = ((geoManager.dateVieverHeight - textHeightWeekday - textHeightDate) / 2);
|
||||
dateViewer->DrawText(cPoint((geoManager.timeLineWidth - weekdayWidth) / 2, y), *weekDay, colorFont, colorFontBack, fontManager.FontTimeLineWeekday);
|
||||
dateViewer->DrawText(cPoint((geoManager.timeLineWidth - dateWidth) / 2, y + textHeightWeekday), *date, colorFont, colorFontBack, fontManager.FontTimeLineDate);
|
||||
} else if (tvguideConfig.displayMode == eHorizontal) {
|
||||
} else if (config.displayMode == eHorizontal) {
|
||||
cString strDate = cString::sprintf("%s %s", *weekDay, *date);
|
||||
int x = ((dateViewer->Width() - fontManager.FontTimeLineDateHorizontal->Width(*strDate)) / 2);
|
||||
int y = ((dateViewer->Height() - fontManager.FontTimeLineDateHorizontal->Height()) / 2);
|
||||
@@ -96,8 +76,8 @@ void cTimeLine::drawDateViewer() {
|
||||
}
|
||||
}
|
||||
|
||||
void cTimeLine::drawTimeline() {
|
||||
timeline->SetTile(true);
|
||||
void cTimeLine::DrawTimeline(void) {
|
||||
// timeline->SetTile(true);
|
||||
timeline->Fill(clrTransparent);
|
||||
tColor colorFont, colorBackground;
|
||||
|
||||
@@ -105,12 +85,12 @@ void cTimeLine::drawTimeline() {
|
||||
int imgHeight = geoManager.timeLineGridHeight;
|
||||
const cImage *img1 = NULL;
|
||||
const cImage *img2 = NULL;
|
||||
if (tvguideConfig.style == eStyleGraphical) {
|
||||
if (config.style == eStyleGraphical) {
|
||||
img1 = imgCache.GetOsdElement(oeTimeline1);
|
||||
img2 = imgCache.GetOsdElement(oeTimeline2);
|
||||
} else {
|
||||
img1 = createBackgroundImage(imgWidth, imgHeight, theme.Color(clrTimeline1), theme.Color(clrTimeline1Blending));
|
||||
img2 = createBackgroundImage(imgWidth, imgHeight, theme.Color(clrTimeline2), theme.Color(clrTimeline2Blending));
|
||||
img1 = CreateBackgroundImage(imgWidth, imgHeight, theme.Color(clrTimeline1), theme.Color(clrTimeline1Blending));
|
||||
img2 = CreateBackgroundImage(imgWidth, imgHeight, theme.Color(clrTimeline2), theme.Color(clrTimeline2Blending));
|
||||
}
|
||||
const cImage *img = NULL;
|
||||
if (!img1 || !img2)
|
||||
@@ -118,61 +98,72 @@ void cTimeLine::drawTimeline() {
|
||||
int textWidth, posX, posY;
|
||||
char timetext[10];
|
||||
|
||||
for (int i=0; i<48; i++) {
|
||||
if (i%2==0) {
|
||||
int halfHours;
|
||||
if (config.displayMode == eVertical)
|
||||
halfHours = config.displayTime / 30 + 1;
|
||||
else
|
||||
halfHours = config.displayHorizontalTime / 30 + 1;
|
||||
|
||||
time_t tStart = timeManager->GetStart();
|
||||
tm *t = localtime ( &tStart );
|
||||
|
||||
int x = 2 * t->tm_hour + ((t->tm_min == 0) ? 0 : 1);
|
||||
for (int j = x; j < (x + halfHours); j++) {
|
||||
int i = (j >= 48) ? (j - 48) : j;
|
||||
if (i % 2 == 0) {
|
||||
img = img1;
|
||||
colorFont = theme.Color(clrTimeline2);
|
||||
colorBackground = (tvguideConfig.style == eStyleFlat)?theme.Color(clrTimeline1):clrTransparent;
|
||||
if (tvguideConfig.timeFormat == e12Hours) {
|
||||
colorBackground = (config.style == eStyleFlat)?theme.Color(clrTimeline1):clrTransparent;
|
||||
if (config.timeFormat == e12Hours) {
|
||||
if (i == 0)
|
||||
sprintf(timetext, "12:00 PM");
|
||||
else if (i/2 < 13)
|
||||
sprintf(timetext, "%d:00 AM", i/2);
|
||||
sprintf(timetext, "%d:00 AM", i / 2);
|
||||
else
|
||||
sprintf(timetext, "%d:00 PM", i/2-12);
|
||||
sprintf(timetext, "%d:00 PM", i / 2 - 12);
|
||||
} else {
|
||||
sprintf(timetext, "%d:00", i/2);
|
||||
sprintf(timetext, "%d:00", i / 2);
|
||||
}
|
||||
} else {
|
||||
img = img2;
|
||||
colorFont = theme.Color(clrTimeline1);
|
||||
colorBackground = (tvguideConfig.style == eStyleFlat)?theme.Color(clrTimeline2):clrTransparent;
|
||||
if (tvguideConfig.timeFormat == e12Hours) {
|
||||
colorBackground = (config.style == eStyleFlat)?theme.Color(clrTimeline2):clrTransparent;
|
||||
if (config.timeFormat == e12Hours) {
|
||||
if (i == 1)
|
||||
sprintf(timetext, "12:30 PM");
|
||||
else if (i/2 < 13)
|
||||
sprintf(timetext, "%d:30 AM", i/2);
|
||||
sprintf(timetext, "%d:30 AM", i / 2);
|
||||
else
|
||||
sprintf(timetext, "%d:30 PM", i/2-12);
|
||||
sprintf(timetext, "%d:30 PM", i / 2 - 12);
|
||||
} else {
|
||||
sprintf(timetext, "%d:30", i/2);
|
||||
sprintf(timetext, "%d:30", i / 2);
|
||||
}
|
||||
}
|
||||
if (tvguideConfig.displayMode == eVertical) {
|
||||
posY = i*geoManager.minutePixel*30;
|
||||
if (config.displayMode == eVertical) {
|
||||
posY = (j - x) * geoManager.minutePixel * 30;
|
||||
timeline->DrawImage(cPoint(0, posY), *img);
|
||||
if (tvguideConfig.style != eStyleGraphical) {
|
||||
decorateTile(0, posY, imgWidth+2, imgHeight);
|
||||
if (config.style != eStyleGraphical) {
|
||||
DecorateTile(0, posY, imgWidth + 2, imgHeight);
|
||||
}
|
||||
textWidth = fontManager.FontTimeLineTime->Width(timetext);
|
||||
timeline->DrawText(cPoint((geoManager.timeLineWidth-textWidth)/2, posY + 5), timetext, colorFont, colorBackground, fontManager.FontTimeLineTime);
|
||||
} else if (tvguideConfig.displayMode == eHorizontal) {
|
||||
posX = i*geoManager.minutePixel*30;
|
||||
timeline->DrawText(cPoint((geoManager.timeLineWidth-textWidth) / 2, posY + 5), timetext, colorFont, colorBackground, fontManager.FontTimeLineTime);
|
||||
} else if (config.displayMode == eHorizontal) {
|
||||
posX = (j - x) * geoManager.minutePixel * 30;
|
||||
timeline->DrawImage(cPoint(posX, 0), *img);
|
||||
if (tvguideConfig.style != eStyleGraphical) {
|
||||
decorateTile(posX, 0, imgWidth, imgHeight+2);
|
||||
if (config.style != eStyleGraphical) {
|
||||
DecorateTile(posX, 0, imgWidth, imgHeight + 2);
|
||||
}
|
||||
timeline->DrawText(cPoint(posX + 15, (dateViewer->Height() - fontManager.FontTimeLineTimeHorizontal->Height())/2), timetext, colorFont, colorBackground, fontManager.FontTimeLineTimeHorizontal);
|
||||
timeline->DrawText(cPoint(posX + 15, (dateViewer->Height() - fontManager.FontTimeLineTimeHorizontal->Height()) / 2), timetext, colorFont, colorBackground, fontManager.FontTimeLineTimeHorizontal);
|
||||
}
|
||||
}
|
||||
setTimeline();
|
||||
if (tvguideConfig.style != eStyleGraphical) {
|
||||
DrawTimeIndicator();
|
||||
if (config.style != eStyleGraphical) {
|
||||
delete img1;
|
||||
delete img2;
|
||||
}
|
||||
}
|
||||
|
||||
void cTimeLine::decorateTile(int posX, int posY, int tileWidth, int tileHeight) {
|
||||
void cTimeLine::DecorateTile(int posX, int posY, int tileWidth, int tileHeight) {
|
||||
timeline->DrawRectangle(cRect(posX,posY,tileWidth,2), clrTransparent); //top
|
||||
timeline->DrawRectangle(cRect(posX,posY,2,tileHeight), clrTransparent); //left
|
||||
timeline->DrawRectangle(cRect(posX,posY + tileHeight-2,tileWidth,2), clrTransparent); //bottom
|
||||
@@ -183,13 +174,13 @@ void cTimeLine::decorateTile(int posX, int posY, int tileWidth, int tileHeight)
|
||||
timeline->DrawRectangle(cRect(2+posX,posY+tileHeight-3,tileWidth-4,1), theme.Color(clrBorder)); //bottom
|
||||
timeline->DrawRectangle(cRect(posX+tileWidth-3,posY+2,1,tileHeight-4), theme.Color(clrBorder)); //right
|
||||
|
||||
if (tvguideConfig.roundedCorners) {
|
||||
if (config.roundedCorners) {
|
||||
int borderRadius = 12;
|
||||
drawRoundedCorners(posX, posY, tileWidth, tileHeight, borderRadius);
|
||||
DrawRoundedCorners(posX, posY, tileWidth, tileHeight, borderRadius);
|
||||
}
|
||||
}
|
||||
|
||||
void cTimeLine::drawRoundedCorners(int posX, int posY, int width, int height, int radius) {
|
||||
void cTimeLine::DrawRoundedCorners(int posX, int posY, int width, int height, int radius) {
|
||||
timeline->DrawEllipse(cRect(posX+2,posY+2,radius,radius), theme.Color(clrBorder), -2);
|
||||
timeline->DrawEllipse(cRect(posX+1,posY+1,radius,radius), clrTransparent, -2);
|
||||
|
||||
@@ -205,23 +196,36 @@ void cTimeLine::drawRoundedCorners(int posX, int posY, int width, int height, in
|
||||
}
|
||||
}
|
||||
|
||||
void cTimeLine::drawCurrentTimeBase(void) {
|
||||
timeBase->Fill(clrTransparent);
|
||||
bool nowVisible = myTime->NowVisible();
|
||||
if (!nowVisible)
|
||||
void cTimeLine::DrawTimeIndicator(void) {
|
||||
if (!config.displayTimeBase)
|
||||
return;
|
||||
int deltaTime = (myTime->GetNow() - myTime->GetStart()) / 60 * geoManager.minutePixel;
|
||||
if (tvguideConfig.displayMode == eVertical) {
|
||||
timeBase->DrawRectangle(cRect(0, deltaTime - 2, timeBase->ViewPort().Width(), 4), theme.Color(clrTimeBase));
|
||||
} else {
|
||||
timeBase->DrawRectangle(cRect(deltaTime-2, 0, 4, timeBase->ViewPort().Height()), theme.Color(clrTimeBase));
|
||||
if (!timeManager->NowVisible()) {
|
||||
if (timeBase)
|
||||
timeBase->Fill(clrTransparent);
|
||||
return;
|
||||
}
|
||||
int deltaTime = (time(0) - timeManager->GetStart()) / 60 * geoManager.minutePixel;
|
||||
osdManager.releasePixmap(timeBase);
|
||||
int x1, x2, y1, y2;
|
||||
if (config.displayMode == eVertical) {
|
||||
x1 = 0;
|
||||
y1 = geoManager.statusHeaderHeight + geoManager.channelGroupsHeight + geoManager.channelHeaderHeight + deltaTime - 2;
|
||||
x2 = geoManager.osdWidth;
|
||||
y2 = 4;
|
||||
} else {
|
||||
x1 = geoManager.channelGroupsWidth + geoManager.channelHeaderWidth + deltaTime - 2;
|
||||
y1 = geoManager.statusHeaderHeight;
|
||||
x2 = 4;
|
||||
y2 = geoManager.timeLineHeight + config.channelRows * geoManager.rowHeight;
|
||||
}
|
||||
timeBase = osdManager.requestPixmap(3, cRect(x1, y1, x2, y2));
|
||||
timeBase->Fill(clrTransparent);
|
||||
timeBase->DrawRectangle(cRect(0, 0, timeBase->ViewPort().Width(), timeBase->ViewPort().Height()), theme.Color(clrTimeBase));
|
||||
}
|
||||
|
||||
|
||||
cImage *cTimeLine::createBackgroundImage(int width, int height, tColor clrBgr, tColor clrBlend) {
|
||||
cImage *cTimeLine::CreateBackgroundImage(int width, int height, tColor clrBgr, tColor clrBlend) {
|
||||
cImage *image = NULL;
|
||||
if (tvguideConfig.style == eStyleBlendingDefault) {
|
||||
if (config.style == eStyleBlendingDefault) {
|
||||
image = new cImage(cSize(width, height));
|
||||
image->Fill(clrBgr);
|
||||
int stepY = 0.5*height / 64;
|
||||
@@ -236,7 +240,7 @@ cImage *cTimeLine::createBackgroundImage(int width, int height, tColor clrBgr, t
|
||||
}
|
||||
alpha += 0x04;
|
||||
}
|
||||
} else if (tvguideConfig.style == eStyleBlendingMagick) {
|
||||
} else if (config.style == eStyleBlendingMagick) {
|
||||
cImageLoader imgLoader;
|
||||
if (imgLoader.DrawBackground(clrBgr, clrBlend, width, height)) {
|
||||
image = new cImage(imgLoader.GetImage());
|
||||
@@ -248,35 +252,25 @@ cImage *cTimeLine::createBackgroundImage(int width, int height, tColor clrBgr, t
|
||||
return image;
|
||||
}
|
||||
|
||||
void cTimeLine::setTimeline() {
|
||||
int offset = myTime->GetTimelineOffset();
|
||||
int xNew, yNew;
|
||||
if (tvguideConfig.displayMode == eVertical) {
|
||||
xNew = 0;
|
||||
yNew = -offset*geoManager.minutePixel;
|
||||
} else if (tvguideConfig.displayMode == eHorizontal) {
|
||||
xNew = -offset*geoManager.minutePixel;
|
||||
yNew = 0;
|
||||
}
|
||||
timeline->SetDrawPortPoint(cPoint(xNew, yNew));
|
||||
if (tvguideConfig.displayTimeBase)
|
||||
drawCurrentTimeBase();
|
||||
}
|
||||
|
||||
void cTimeLine::drawClock() {
|
||||
if (tvguideConfig.displayMode == eVertical)
|
||||
bool cTimeLine::DrawClock(void) {
|
||||
cString currentTime = timeManager->GetCurrentTime();
|
||||
if (strcmp(currentTime, lastClock)) {
|
||||
clock->Fill(clrTransparent);
|
||||
cString currentTime = myTime->GetCurrentTime();
|
||||
const cFont *font = (tvguideConfig.displayMode == eVertical)?fontManager.FontTimeLineTime:fontManager.FontTimeLineTimeHorizontal;
|
||||
int textHeight = font->Height();
|
||||
int clockTextWidth = font->Width(*currentTime);
|
||||
tColor colorFontBack = (tvguideConfig.style == eStyleFlat)?theme.Color(clrHeader):clrTransparent;
|
||||
if (tvguideConfig.style == eStyleGraphical) {
|
||||
clock->drawBackgroundGraphical(bgClock);
|
||||
} else {
|
||||
clock->setColor(theme.Color(clrHeader), theme.Color(clrHeaderBlending));
|
||||
clock->drawBackground();
|
||||
clock->drawBorder();
|
||||
const cFont *font = (config.displayMode == eVertical) ? fontManager.FontTimeLineTime : fontManager.FontTimeLineTimeHorizontal;
|
||||
int textHeight = font->Height();
|
||||
int clockTextWidth = font->Width(*currentTime);
|
||||
tColor colorFontBack = (config.style == eStyleFlat) ? theme.Color(clrHeader) : clrTransparent;
|
||||
if (config.style == eStyleGraphical) {
|
||||
clock->drawBackgroundGraphical(bgClock);
|
||||
} else {
|
||||
clock->setColor(theme.Color(clrHeader), theme.Color(clrHeaderBlending));
|
||||
clock->drawBackground();
|
||||
clock->drawBorder();
|
||||
}
|
||||
clock->DrawText(cPoint((geoManager.clockWidth - clockTextWidth) / 2, (geoManager.clockHeight - textHeight) / 2), *currentTime, theme.Color(clrFont), colorFontBack, font);
|
||||
lastClock = currentTime;
|
||||
DrawTimeIndicator();
|
||||
return true;
|
||||
}
|
||||
clock->DrawText(cPoint((geoManager.clockWidth-clockTextWidth)/2, (geoManager.clockHeight-textHeight)/2), *currentTime, theme.Color(clrFont), colorFontBack, font);
|
||||
return false;
|
||||
}
|
||||
|
22
timeline.h
22
timeline.h
@@ -1,29 +1,29 @@
|
||||
#ifndef __TVGUIDE_TIMELINE_H
|
||||
#define __TVGUIDE_TIMELINE_H
|
||||
|
||||
#include "timer.h"
|
||||
#include "timemanager.h"
|
||||
#include "styledpixmap.h"
|
||||
|
||||
// --- cTimeLine -------------------------------------------------------------
|
||||
|
||||
class cTimeLine {
|
||||
private:
|
||||
cMyTime *myTime;
|
||||
cTimeManager *timeManager;
|
||||
cStyledPixmap *dateViewer;
|
||||
cPixmap *timeline;
|
||||
cStyledPixmap *clock;
|
||||
cPixmap *timeBase;
|
||||
void decorateTile(int posX, int posY, int tileWidth, int tileHeight);
|
||||
void drawRoundedCorners(int posX, int posY, int width, int height, int radius);
|
||||
cImage *createBackgroundImage(int width, int height, tColor clrBgr, tColor clrBlend);
|
||||
void drawCurrentTimeBase(void);
|
||||
cString lastClock;
|
||||
void DecorateTile(int posX, int posY, int tileWidth, int tileHeight);
|
||||
void DrawRoundedCorners(int posX, int posY, int width, int height, int radius);
|
||||
cImage *CreateBackgroundImage(int width, int height, tColor clrBgr, tColor clrBlend);
|
||||
public:
|
||||
cTimeLine(cMyTime *myTime);
|
||||
cTimeLine(cTimeManager *timeManager);
|
||||
virtual ~cTimeLine(void);
|
||||
void setTimeline();
|
||||
void drawDateViewer();
|
||||
void drawTimeline();
|
||||
void drawClock();
|
||||
void DrawDateViewer(void);
|
||||
void DrawTimeline(void);
|
||||
void DrawTimeIndicator(void);
|
||||
bool DrawClock(void);
|
||||
};
|
||||
|
||||
#endif //__TVGUIDE_TIMELINE_H
|
@@ -1,12 +1,20 @@
|
||||
#include <time.h>
|
||||
#include <vdr/tools.h>
|
||||
#include "config.h"
|
||||
#include "timer.h"
|
||||
#include "timemanager.h"
|
||||
|
||||
cMyTime::~cMyTime(void) {
|
||||
cTimeManager::cTimeManager(void) {
|
||||
if (config.displayMode == eVertical) {
|
||||
displaySeconds = (geoManager.osdHeight - geoManager.statusHeaderHeight - geoManager.channelHeaderHeight - geoManager.channelGroupsHeight - geoManager.footerHeight) / geoManager.minutePixel * 60;
|
||||
} else if (config.displayMode == eHorizontal) {
|
||||
displaySeconds = (geoManager.osdWidth - geoManager.channelHeaderWidth - geoManager.channelGroupsWidth) / geoManager.minutePixel * 60;
|
||||
}
|
||||
}
|
||||
|
||||
cString cMyTime::printTime(time_t displayTime) {
|
||||
cTimeManager::~cTimeManager(void) {
|
||||
}
|
||||
|
||||
cString cTimeManager::printTime(time_t displayTime) {
|
||||
struct tm *ts;
|
||||
ts = localtime(&displayTime);
|
||||
cString strTime = cString::sprintf("%d.%d-%d:%d.%d", ts->tm_mday, ts->tm_mon+1, ts->tm_hour, ts->tm_min, ts->tm_sec);
|
||||
@@ -14,44 +22,36 @@ cString cMyTime::printTime(time_t displayTime) {
|
||||
}
|
||||
|
||||
|
||||
void cMyTime::Now() {
|
||||
void cTimeManager::Now() {
|
||||
t = time(0);
|
||||
tStart = t;
|
||||
tStart = GetRounded();
|
||||
if (tvguideConfig.displayMode == eVertical) {
|
||||
tEnd = tStart + (geoManager.osdHeight - geoManager.statusHeaderHeight - geoManager.channelHeaderHeight - geoManager.channelGroupsHeight - geoManager.footerHeight)/geoManager.minutePixel*60;
|
||||
} else if (tvguideConfig.displayMode == eHorizontal) {
|
||||
tEnd = tStart + (geoManager.osdWidth - geoManager.channelHeaderWidth - geoManager.channelGroupsWidth)/geoManager.minutePixel*60;
|
||||
tEnd = tStart + displaySeconds;
|
||||
}
|
||||
|
||||
void cTimeManager::AddStep(int step) {
|
||||
tStart += step * 60;
|
||||
tEnd = tStart + displaySeconds;
|
||||
}
|
||||
|
||||
void cTimeManager::DelStep(int step) {
|
||||
if ((tStart - step * 60) + 30 * 60 < t) {
|
||||
Now();
|
||||
} else {
|
||||
tStart -= step * 60;
|
||||
tEnd = tStart + displaySeconds;
|
||||
}
|
||||
}
|
||||
|
||||
void cMyTime::AddStep(int step) {
|
||||
tStart += step*60;
|
||||
tEnd += step*60;
|
||||
}
|
||||
|
||||
bool cMyTime::DelStep(int step) {
|
||||
if ((tStart - step*60)+30*60 < t) {
|
||||
return true;
|
||||
}
|
||||
tStart -= step*60;
|
||||
tEnd -= step*60;
|
||||
return false;
|
||||
}
|
||||
|
||||
void cMyTime::SetTime(time_t newTime) {
|
||||
void cTimeManager::SetTime(time_t newTime) {
|
||||
tStart = newTime;
|
||||
if (tvguideConfig.displayMode == eVertical) {
|
||||
tEnd = tStart + (geoManager.osdHeight - geoManager.statusHeaderHeight - geoManager.channelHeaderHeight - geoManager.channelGroupsHeight - geoManager.footerHeight)/geoManager.minutePixel*60;
|
||||
} else if (tvguideConfig.displayMode == eHorizontal) {
|
||||
tEnd = tStart + (geoManager.osdWidth - geoManager.channelHeaderWidth - geoManager.channelGroupsWidth)/geoManager.minutePixel*60;
|
||||
}
|
||||
tEnd = tStart + displaySeconds;
|
||||
}
|
||||
|
||||
time_t cMyTime::getPrevPrimetime(time_t current) {
|
||||
time_t cTimeManager::getPrevPrimetime(time_t current) {
|
||||
tm *st = localtime(¤t);
|
||||
if (st->tm_hour < 21) {
|
||||
current -= 24 * 60* 60;
|
||||
current -= 24 * 60 * 60;
|
||||
st = localtime(¤t);
|
||||
}
|
||||
st->tm_hour = 20;
|
||||
@@ -60,10 +60,10 @@ time_t cMyTime::getPrevPrimetime(time_t current) {
|
||||
return primeTime;
|
||||
}
|
||||
|
||||
time_t cMyTime::getNextPrimetime(time_t current){
|
||||
time_t cTimeManager::getNextPrimetime(time_t current){
|
||||
tm *st = localtime(¤t);
|
||||
if (st->tm_hour > 19) {
|
||||
current += 24 * 60* 60;
|
||||
current += 24 * 60 * 60;
|
||||
st = localtime(¤t);
|
||||
}
|
||||
st->tm_hour = 20;
|
||||
@@ -72,45 +72,45 @@ time_t cMyTime::getNextPrimetime(time_t current){
|
||||
return primeTime;
|
||||
}
|
||||
|
||||
bool cMyTime::tooFarInPast(time_t current) {
|
||||
bool cTimeManager::tooFarInPast(time_t current) {
|
||||
if (current < t) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
cString cMyTime::GetCurrentTime() {
|
||||
cString cTimeManager::GetCurrentTime() {
|
||||
char buf[25];
|
||||
t = time(0);
|
||||
tm *st = localtime(&t);
|
||||
//snprintf(text, sizeof(text), "%d:%02d", st->tm_hour, st->tm_min);
|
||||
if (tvguideConfig.timeFormat == e12Hours) {
|
||||
if (config.timeFormat == e12Hours) {
|
||||
strftime(buf, sizeof(buf), "%I:%M %p", st);
|
||||
} else if (tvguideConfig.timeFormat == e24Hours)
|
||||
} else if (config.timeFormat == e24Hours)
|
||||
strftime(buf, sizeof(buf), "%H:%M", st);
|
||||
return buf;
|
||||
|
||||
}
|
||||
|
||||
cString cMyTime::GetDate() {
|
||||
cString cTimeManager::GetDate() {
|
||||
char text[6];
|
||||
tm *st = localtime(&tStart);
|
||||
snprintf(text, sizeof(text), "%d.%d", st->tm_mday, st->tm_mon+1);
|
||||
return text;
|
||||
}
|
||||
|
||||
cString cMyTime::GetWeekday() {
|
||||
cString cTimeManager::GetWeekday() {
|
||||
return WeekDayName(tStart);
|
||||
}
|
||||
|
||||
int cMyTime::GetTimelineOffset() {
|
||||
int cTimeManager::GetTimelineOffset() {
|
||||
tm *st = localtime(&tStart);
|
||||
int offset = st->tm_hour*60;
|
||||
offset += st->tm_min;
|
||||
return offset;
|
||||
}
|
||||
|
||||
time_t cMyTime::GetRounded() {
|
||||
time_t cTimeManager::GetRounded() {
|
||||
tm *rounded = localtime ( &tStart );
|
||||
rounded->tm_sec = 0;
|
||||
if (rounded->tm_min > 29)
|
||||
@@ -120,14 +120,14 @@ time_t cMyTime::GetRounded() {
|
||||
return mktime(rounded);
|
||||
}
|
||||
|
||||
bool cMyTime::NowVisible(void) {
|
||||
bool cTimeManager::NowVisible(void) {
|
||||
if (t > tStart)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
void cMyTime::debug() {
|
||||
void cTimeManager::debug() {
|
||||
esyslog("t: %s, tStart: %s, tEnd: %s", *TimeString(t), *TimeString(tStart), *TimeString(tEnd));
|
||||
}
|
||||
|
@@ -1,23 +1,26 @@
|
||||
#ifndef __TVGUIDE_TIMER_H
|
||||
#define __TVGUIDE_TIMER_H
|
||||
#ifndef __TVGUIDE_TIMEMANAGER_H
|
||||
#define __TVGUIDE_TIMEMANAGER_H
|
||||
|
||||
#include <vdr/tools.h>
|
||||
#include "config.h"
|
||||
|
||||
// --- cMyTime -------------------------------------------------------------
|
||||
// --- cTimeManager -------------------------------------------------------------
|
||||
|
||||
class cMyTime {
|
||||
class cTimeManager {
|
||||
private:
|
||||
time_t t;
|
||||
time_t tStart;
|
||||
time_t tEnd;
|
||||
int displaySeconds;
|
||||
eTimeFormat timeFormat;
|
||||
public:
|
||||
cMyTime(){};
|
||||
virtual ~cMyTime(void);
|
||||
cTimeManager();
|
||||
virtual ~cTimeManager(void);
|
||||
static cString printTime(time_t displayTime);
|
||||
void Now();
|
||||
time_t GetNow() { return t; };
|
||||
void AddStep(int step);
|
||||
bool DelStep(int step);
|
||||
void DelStep(int step);
|
||||
void SetTime(time_t newTime);
|
||||
time_t Get() {return t;};
|
||||
time_t GetStart() {return tStart;};
|
||||
@@ -31,6 +34,7 @@ class cMyTime {
|
||||
int GetTimelineOffset();
|
||||
time_t GetRounded();
|
||||
bool NowVisible(void);
|
||||
int GetDisplaySeconds(void) { return displaySeconds; };
|
||||
void debug();
|
||||
};
|
||||
|
||||
@@ -49,4 +53,4 @@ class cTimeInterval {
|
||||
cTimeInterval *Union(cTimeInterval *interval);
|
||||
};
|
||||
|
||||
#endif //__TVGUIDE_TIMER_H
|
||||
#endif //__TVGUIDE_TIMEMANAGER_H
|
@@ -2,7 +2,7 @@
|
||||
#include <vector>
|
||||
#include <vdr/timers.h>
|
||||
#include "tools.h"
|
||||
#include "timer.h"
|
||||
#include "timemanager.h"
|
||||
#include "timerconflict.h"
|
||||
|
||||
cTVGuideTimerConflict::cTVGuideTimerConflict(void) {
|
||||
@@ -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]);
|
||||
|
69
tools.c
69
tools.c
@@ -10,7 +10,6 @@
|
||||
#include <vdr/plugin.h>
|
||||
#include <vdr/skins.h>
|
||||
#include "services/epgsearch.h"
|
||||
|
||||
#include "tools.h"
|
||||
|
||||
cPlugin *GetScraperPlugin(void) {
|
||||
@@ -23,32 +22,49 @@ cPlugin *GetScraperPlugin(void) {
|
||||
/****************************************************************************************
|
||||
* CUTTEXT
|
||||
****************************************************************************************/
|
||||
std::string CutText(std::string text, int width, const cFont *font) {
|
||||
if (width <= font->Size())
|
||||
return text.c_str();
|
||||
if (font->Width(text.c_str()) < width)
|
||||
return text.c_str();
|
||||
cTextWrapper twText;
|
||||
twText.Set(text.c_str(), font, width);
|
||||
std::string cuttedTextNative = twText.GetLine(0);
|
||||
std::stringstream sstrText;
|
||||
sstrText << cuttedTextNative << "...";
|
||||
std::string cuttedText = sstrText.str();
|
||||
int actWidth = font->Width(cuttedText.c_str());
|
||||
if (actWidth > width) {
|
||||
int overlap = actWidth - width;
|
||||
int charWidth = font->Width(".");
|
||||
if (charWidth == 0)
|
||||
charWidth = 1;
|
||||
int cutChars = overlap / charWidth;
|
||||
if (cutChars > 0) {
|
||||
cuttedTextNative = cuttedTextNative.substr(0, cuttedTextNative.length() - cutChars);
|
||||
std::stringstream sstrText2;
|
||||
sstrText2 << cuttedTextNative << "...";
|
||||
cuttedText = sstrText2.str();
|
||||
}
|
||||
std::string utf8_substr(const std::string& str, unsigned int start, long unsigned int leng) {
|
||||
if (leng==0) { return ""; }
|
||||
unsigned int c, i, ix, q;
|
||||
long unsigned int min=std::string::npos, max=std::string::npos;
|
||||
for (q=0, i=0, ix=str.length(); i < ix; i++, q++) {
|
||||
if (q==start){ min=i; }
|
||||
if (q<=start+leng || leng==std::string::npos){ max=i; }
|
||||
|
||||
c = (unsigned char) str[i];
|
||||
if (c>=0 && c<=127) i+=0;
|
||||
else if ((c & 0xE0) == 0xC0) i+=1;
|
||||
else if ((c & 0xF0) == 0xE0) i+=2;
|
||||
else if ((c & 0xF8) == 0xF0) i+=3;
|
||||
//else if (($c & 0xFC) == 0xF8) i+=4; // 111110bb //byte 5, unnecessary in 4 byte UTF-8
|
||||
//else if (($c & 0xFE) == 0xFC) i+=5; // 1111110b //byte 6, unnecessary in 4 byte UTF-8
|
||||
else return "";//invalid utf8
|
||||
}
|
||||
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-min);
|
||||
}
|
||||
|
||||
std::string CutText(std::string text, int width, const cFont *font) {
|
||||
int actWidth = font->Width(text.c_str());
|
||||
if (actWidth <= width) {
|
||||
return text.c_str();
|
||||
} else {
|
||||
int i = std::max(width / font->Size(), 1) - 1;
|
||||
std::string cuttext, oldtext;
|
||||
cuttext = utf8_substr(text, 0, i);
|
||||
do {
|
||||
oldtext = cuttext;
|
||||
i++;
|
||||
cuttext = utf8_substr(text, 0, i);
|
||||
std::stringstream sstrText;
|
||||
sstrText << cuttext << "...";
|
||||
actWidth = font->Width(sstrText.str().c_str());
|
||||
}
|
||||
while (actWidth < width);
|
||||
std::stringstream sstrText2;
|
||||
sstrText2 << oldtext << "...";
|
||||
return sstrText2.str();
|
||||
}
|
||||
return cuttedText;
|
||||
}
|
||||
|
||||
/****************************************************************************************
|
||||
@@ -113,7 +129,6 @@ void ReadRecordingDirectories(std::vector<std::string> *folders, cList<cNestedIt
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/****************************************************************************************
|
||||
* DrawRoundedCorners
|
||||
****************************************************************************************/
|
||||
|
1
tools.h
1
tools.h
@@ -9,6 +9,7 @@
|
||||
|
||||
cPlugin *GetScraperPlugin(void);
|
||||
|
||||
std::string utf8_substr(const std::string& str, unsigned int start=0, long unsigned int leng=std::string::npos);
|
||||
std::string CutText(std::string text, int width, const cFont *font);
|
||||
std::string StrToLowerCase(std::string str);
|
||||
std::string GetDirectoryFromTimer(std::string file);
|
||||
|
27
tvguide.c
27
tvguide.c
@@ -12,6 +12,7 @@
|
||||
#include <vdr/plugin.h>
|
||||
#include <vdr/device.h>
|
||||
#include <vdr/menu.h>
|
||||
#include <Magick++.h>
|
||||
|
||||
#define DEFINE_CONFIG 1
|
||||
#include "geometrymanager.h"
|
||||
@@ -26,7 +27,7 @@
|
||||
#error "VDR-2.0.0 API version or greater is required!"
|
||||
#endif
|
||||
|
||||
static const char *VERSION = "1.2.9";
|
||||
static const char *VERSION = "1.3.4";
|
||||
static const char *DESCRIPTION = tr("A fancy 2d EPG Viewer");
|
||||
static const char *MAINMENUENTRY = "Tvguide";
|
||||
|
||||
@@ -45,7 +46,7 @@ public:
|
||||
virtual void MainThreadHook(void);
|
||||
virtual cString Active(void);
|
||||
virtual time_t WakeupTime(void);
|
||||
virtual const char *MainMenuEntry(void) { return (tvguideConfig.showMainMenuEntry)?MAINMENUENTRY:NULL; }
|
||||
virtual const char *MainMenuEntry(void) { return (config.showMainMenuEntry) ? MAINMENUENTRY : NULL; }
|
||||
virtual cOsdObject *MainMenuAction(void);
|
||||
virtual cMenuSetupPage *SetupMenu(void);
|
||||
virtual bool SetupParse(const char *Name, const char *Value);
|
||||
@@ -78,13 +79,13 @@ bool cPluginTvguide::ProcessArgs(int argc, char *argv[]) {
|
||||
while ((c = getopt_long(argc, argv, "e:i:l:", long_options, NULL)) != -1) {
|
||||
switch (c) {
|
||||
case 'e':
|
||||
tvguideConfig.SetImagesPath(cString(optarg));
|
||||
config.SetImagesPath(cString(optarg));
|
||||
break;
|
||||
case 'i':
|
||||
tvguideConfig.SetIconsPath(cString(optarg));
|
||||
config.SetIconsPath(cString(optarg));
|
||||
break;
|
||||
case 'l':
|
||||
tvguideConfig.SetLogoPath(cString(optarg));
|
||||
config.SetLogoPath(cString(optarg));
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
@@ -93,11 +94,15 @@ bool cPluginTvguide::ProcessArgs(int argc, char *argv[]) {
|
||||
return true;
|
||||
}
|
||||
|
||||
__attribute__((constructor)) static void init(void) {
|
||||
Magick::InitializeMagick(NULL);
|
||||
}
|
||||
|
||||
bool cPluginTvguide::Initialize(void) {
|
||||
tvguideConfig.SetDefaultPathes();
|
||||
tvguideConfig.LoadTheme();
|
||||
tvguideConfig.SetStyle();
|
||||
tvguideConfig.setDynamicValues();
|
||||
config.SetDefaultPathes();
|
||||
config.LoadTheme();
|
||||
config.SetStyle();
|
||||
config.setDynamicValues();
|
||||
geoManager.SetGeometry(cOsd::OsdWidth(), cOsd::OsdHeight());
|
||||
fontManager.SetFonts();
|
||||
imgCache.CreateCache();
|
||||
@@ -134,11 +139,11 @@ cMenuSetupPage *cPluginTvguide::SetupMenu(void) {
|
||||
}
|
||||
|
||||
bool cPluginTvguide::SetupParse(const char *Name, const char *Value) {
|
||||
return tvguideConfig.SetupParse(Name, Value);
|
||||
return config.SetupParse(Name, Value);
|
||||
}
|
||||
|
||||
bool cPluginTvguide::Service(const char *Id, void *Data) {
|
||||
if (strcmp(Id, "MainMenuHooksPatch-v1.0::osSchedule") == 0 && tvguideConfig.replaceOriginalSchedule != 0) {
|
||||
if (strcmp(Id, "MainMenuHooksPatch-v1.0::osSchedule") == 0 && config.replaceOriginalSchedule != 0) {
|
||||
if (Data == NULL)
|
||||
return true;
|
||||
cOsdObject **guide = (cOsdObject**) Data;
|
||||
|
282
tvguideosd.c
282
tvguideosd.c
@@ -15,14 +15,14 @@ cTvGuideOsd::cTvGuideOsd(void) {
|
||||
detailViewActive = false;
|
||||
activeGrid = NULL;
|
||||
timeLine = NULL;
|
||||
recMenuManager = NULL;
|
||||
recMenuView = NULL;
|
||||
channelJumper = NULL;
|
||||
}
|
||||
|
||||
cTvGuideOsd::~cTvGuideOsd() {
|
||||
delete myTime;
|
||||
delete timeManager;
|
||||
columns.Clear();
|
||||
if (tvguideConfig.displayStatusHeader) {
|
||||
if (config.displayStatusHeader) {
|
||||
delete statusHeader;
|
||||
}
|
||||
if (detailView)
|
||||
@@ -30,7 +30,7 @@ cTvGuideOsd::~cTvGuideOsd() {
|
||||
delete timeLine;
|
||||
delete channelGroups;
|
||||
delete footer;
|
||||
delete recMenuManager;
|
||||
delete recMenuView;
|
||||
if (channelJumper)
|
||||
delete channelJumper;
|
||||
osdManager.deleteOsd();
|
||||
@@ -41,9 +41,9 @@ void cTvGuideOsd::Show(void) {
|
||||
bool ok = false;
|
||||
ok = osdManager.setOsd();
|
||||
if (ok) {
|
||||
bool themeChanged = tvguideConfig.LoadTheme();
|
||||
tvguideConfig.SetStyle();
|
||||
tvguideConfig.setDynamicValues();
|
||||
bool themeChanged = config.LoadTheme();
|
||||
config.SetStyle();
|
||||
config.setDynamicValues();
|
||||
bool geoChanged = geoManager.SetGeometry(cOsd::OsdWidth(), cOsd::OsdHeight());
|
||||
if (themeChanged || geoChanged) {
|
||||
fontManager.DeleteFonts();
|
||||
@@ -52,15 +52,15 @@ void cTvGuideOsd::Show(void) {
|
||||
imgCache.CreateCache();
|
||||
}
|
||||
osdManager.setBackground();
|
||||
myTime = new cMyTime();
|
||||
myTime->Now();
|
||||
timeManager = new cTimeManager();
|
||||
timeManager->Now();
|
||||
SwitchTimers.Load(AddDirectory(cPlugin::ConfigDirectory("epgsearch"), "epgsearchswitchtimers.conf"));
|
||||
recMenuManager = new cRecMenuManager();
|
||||
recMenuView = new cRecMenuView();
|
||||
pRemoteTimers = cPluginManager::CallFirstService("RemoteTimers::RefreshTimers-v1.0", NULL);
|
||||
if (pRemoteTimers) {
|
||||
isyslog("tvguide: remotetimers-plugin is available");
|
||||
}
|
||||
if (tvguideConfig.useRemoteTimers && pRemoteTimers) {
|
||||
if (config.useRemoteTimers && pRemoteTimers) {
|
||||
cString errorMsg;
|
||||
if (!pRemoteTimers->Service("RemoteTimers::RefreshTimers-v1.0", &errorMsg)) {
|
||||
esyslog("tvguide: %s", *errorMsg);
|
||||
@@ -73,7 +73,7 @@ void cTvGuideOsd::Show(void) {
|
||||
|
||||
void cTvGuideOsd::drawOsd() {
|
||||
cPixmap::Lock();
|
||||
int numBack = tvguideConfig.numGrids / 2;
|
||||
int numBack = config.numGrids / 2;
|
||||
int offset = 0;
|
||||
const cChannel *newStartChannel;
|
||||
#if VDRVERSNUM >= 20301
|
||||
@@ -106,21 +106,21 @@ void cTvGuideOsd::drawOsd() {
|
||||
if (offset < 0)
|
||||
offset = 0;
|
||||
|
||||
if (tvguideConfig.displayStatusHeader) {
|
||||
if (config.displayStatusHeader) {
|
||||
statusHeader = new cStatusHeader();
|
||||
statusHeader->Draw();
|
||||
statusHeader->ScaleVideo();
|
||||
}
|
||||
timeLine = new cTimeLine(myTime);
|
||||
timeLine->drawDateViewer();
|
||||
timeLine->drawTimeline();
|
||||
timeLine->drawClock();
|
||||
timeLine = new cTimeLine(timeManager);
|
||||
timeLine->DrawDateViewer();
|
||||
timeLine->DrawTimeline();
|
||||
timeLine->DrawClock();
|
||||
channelGroups = new cChannelGroups();
|
||||
channelGroups->ReadChannelGroups();
|
||||
footer = new cFooter(channelGroups);
|
||||
recMenuManager->SetFooter(footer);
|
||||
recMenuView->SetFooter(footer);
|
||||
footer->drawRedButton();
|
||||
if (tvguideConfig.channelJumpMode == eNumJump) {
|
||||
if (config.channelJumpMode == eNumJump) {
|
||||
footer->drawGreenButton();
|
||||
footer->drawYellowButton();
|
||||
}
|
||||
@@ -152,7 +152,7 @@ void cTvGuideOsd::readChannels(const cChannel *channelStart) {
|
||||
if (channelGroups->IsInLastGroup(channel)) {
|
||||
break;
|
||||
}
|
||||
cChannelColumn *column = new cChannelColumn(i, channel, myTime);
|
||||
cChannelEpg *column = new cChannelEpg(i, channel, timeManager);
|
||||
if (column->readGrids()) {
|
||||
columns.Add(column);
|
||||
i++;
|
||||
@@ -160,14 +160,14 @@ void cTvGuideOsd::readChannels(const cChannel *channelStart) {
|
||||
delete column;
|
||||
}
|
||||
}
|
||||
if (i == tvguideConfig.numGrids) {
|
||||
if (i == config.numGrids) {
|
||||
foundEnough = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!foundEnough) {
|
||||
int numCurrent = columns.Count();
|
||||
int numBack = tvguideConfig.numGrids - numCurrent;
|
||||
int numBack = config.numGrids - numCurrent;
|
||||
int newChannelNumber = columns.First()->getChannel()->Number() - numBack;
|
||||
const cChannel *newStart = channels->GetByNumber(newChannelNumber);
|
||||
readChannels(newStart);
|
||||
@@ -180,46 +180,46 @@ void cTvGuideOsd::drawGridsChannelJump(int offset) {
|
||||
activeGrid = columns.Get(offset)->getActive();
|
||||
if (activeGrid)
|
||||
activeGrid->SetActive();
|
||||
if (tvguideConfig.displayStatusHeader) {
|
||||
if (config.displayStatusHeader) {
|
||||
statusHeader->DrawInfoText(activeGrid);
|
||||
}
|
||||
if (activeGrid && (tvguideConfig.channelJumpMode == eGroupJump)) {
|
||||
if (activeGrid && (config.channelJumpMode == eGroupJump)) {
|
||||
footer->UpdateGroupButtons(activeGrid->column->getChannel());
|
||||
}
|
||||
if (tvguideConfig.displayChannelGroups) {
|
||||
if (config.displayChannelGroups) {
|
||||
channelGroups->DrawChannelGroups(columns.First()->getChannel(), columns.Last()->getChannel());
|
||||
}
|
||||
for (cChannelColumn *column = columns.First(); column; column = columns.Next(column)) {
|
||||
for (cChannelEpg *column = columns.First(); column; column = columns.Next(column)) {
|
||||
column->createHeader();
|
||||
column->drawGrids();
|
||||
}
|
||||
}
|
||||
|
||||
void cTvGuideOsd::drawGridsTimeJump() {
|
||||
void cTvGuideOsd::drawGridsTimeJump(bool last) {
|
||||
if (columns.Count() == 0)
|
||||
return;
|
||||
cChannelColumn *colActive = NULL;
|
||||
cChannelEpg *colActive = NULL;
|
||||
if (activeGrid) {
|
||||
colActive = activeGrid->column;
|
||||
} else {
|
||||
colActive = columns.First();
|
||||
}
|
||||
for (cChannelColumn *column = columns.First(); column; column = columns.Next(column)) {
|
||||
for (cChannelEpg *column = columns.First(); column; column = columns.Next(column)) {
|
||||
column->clearGrids();
|
||||
column->readGrids();
|
||||
column->drawGrids();
|
||||
}
|
||||
activeGrid = colActive->getActive();
|
||||
activeGrid = colActive->getActive(last);
|
||||
if (activeGrid) {
|
||||
activeGrid->SetActive();
|
||||
activeGrid->Draw();
|
||||
if (tvguideConfig.displayStatusHeader) {
|
||||
if (config.displayStatusHeader) {
|
||||
statusHeader->DrawInfoText(activeGrid);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void cTvGuideOsd::setNextActiveGrid(cGrid *next) {
|
||||
void cTvGuideOsd::setNextActiveGrid(cGridElement *next) {
|
||||
if (!next || !activeGrid) {
|
||||
return;
|
||||
}
|
||||
@@ -228,13 +228,13 @@ void cTvGuideOsd::setNextActiveGrid(cGrid *next) {
|
||||
activeGrid = next;
|
||||
activeGrid->SetActive();
|
||||
activeGrid->Draw();
|
||||
if (tvguideConfig.displayStatusHeader) {
|
||||
if (config.displayStatusHeader) {
|
||||
statusHeader->DrawInfoText(activeGrid);
|
||||
}
|
||||
}
|
||||
|
||||
void cTvGuideOsd::channelForward() {
|
||||
cChannelColumn *colRight = columns.Next(activeGrid->column);
|
||||
cChannelEpg *colRight = columns.Next(activeGrid->column);
|
||||
bool colAdded = false;
|
||||
if (!colRight) {
|
||||
const cChannel *channelRight = activeGrid->column->getChannel();
|
||||
@@ -252,7 +252,7 @@ void cTvGuideOsd::channelForward() {
|
||||
if (channelGroups->IsInLastGroup(channelRight)) {
|
||||
break;
|
||||
}
|
||||
colRight = new cChannelColumn(tvguideConfig.numGrids - 1, channelRight, myTime);
|
||||
colRight = new cChannelEpg(config.numGrids - 1, channelRight, timeManager);
|
||||
if (colRight->readGrids()) {
|
||||
break;
|
||||
} else {
|
||||
@@ -263,11 +263,11 @@ void cTvGuideOsd::channelForward() {
|
||||
}
|
||||
if (colRight) {
|
||||
colAdded = true;
|
||||
if (columns.Count() == tvguideConfig.numGrids) {
|
||||
cChannelColumn *cFirst = columns.First();
|
||||
if (columns.Count() == config.numGrids) {
|
||||
cChannelEpg *cFirst = columns.First();
|
||||
columns.Del(cFirst);
|
||||
}
|
||||
for (cChannelColumn *column = columns.First(); column; column = columns.Next(column)) {
|
||||
for (cChannelEpg *column = columns.First(); column; column = columns.Next(column)) {
|
||||
column->SetNum(column->GetNum() - 1);
|
||||
column->drawHeader();
|
||||
column->drawGrids();
|
||||
@@ -278,22 +278,22 @@ void cTvGuideOsd::channelForward() {
|
||||
}
|
||||
}
|
||||
if (colRight) {
|
||||
cGrid *right = colRight->getNeighbor(activeGrid);
|
||||
cGridElement *right = colRight->getNeighbor(activeGrid);
|
||||
if (right) {
|
||||
setNextActiveGrid(right);
|
||||
}
|
||||
}
|
||||
if (tvguideConfig.displayChannelGroups && colAdded) {
|
||||
if (config.displayChannelGroups && colAdded) {
|
||||
channelGroups->DrawChannelGroups(columns.First()->getChannel(), columns.Last()->getChannel());
|
||||
}
|
||||
if (activeGrid && (tvguideConfig.channelJumpMode == eGroupJump)) {
|
||||
if (activeGrid && (config.channelJumpMode == eGroupJump)) {
|
||||
footer->UpdateGroupButtons(activeGrid->column->getChannel());
|
||||
}
|
||||
osdManager.flush();
|
||||
}
|
||||
|
||||
void cTvGuideOsd::channelBack() {
|
||||
cChannelColumn *colLeft = columns.Prev(activeGrid->column);
|
||||
cChannelEpg *colLeft = columns.Prev(activeGrid->column);
|
||||
bool colAdded = false;
|
||||
if (!colLeft) {
|
||||
const cChannel *channelLeft = activeGrid->column->getChannel();
|
||||
@@ -308,7 +308,7 @@ void cTvGuideOsd::channelBack() {
|
||||
#endif
|
||||
while (channelLeft = channels->Prev(channelLeft)) {
|
||||
if (!channelLeft->GroupSep()) {
|
||||
colLeft = new cChannelColumn(0, channelLeft, myTime);
|
||||
colLeft = new cChannelEpg(0, channelLeft, timeManager);
|
||||
if (colLeft->readGrids()) {
|
||||
break;
|
||||
} else {
|
||||
@@ -319,11 +319,11 @@ void cTvGuideOsd::channelBack() {
|
||||
}
|
||||
if (colLeft) {
|
||||
colAdded = true;
|
||||
if (columns.Count() == tvguideConfig.numGrids) {
|
||||
cChannelColumn *cLast = columns.Last();
|
||||
if (columns.Count() == config.numGrids) {
|
||||
cChannelEpg *cLast = columns.Last();
|
||||
columns.Del(cLast);
|
||||
}
|
||||
for (cChannelColumn *column = columns.First(); column; column = columns.Next(column)) {
|
||||
for (cChannelEpg *column = columns.First(); column; column = columns.Next(column)) {
|
||||
column->SetNum(column->GetNum() + 1);
|
||||
column->drawHeader();
|
||||
column->drawGrids();
|
||||
@@ -335,16 +335,16 @@ void cTvGuideOsd::channelBack() {
|
||||
}
|
||||
|
||||
if (colLeft) {
|
||||
cGrid *left = colLeft->getNeighbor(activeGrid);
|
||||
cGridElement *left = colLeft->getNeighbor(activeGrid);
|
||||
if (left) {
|
||||
setNextActiveGrid(left);
|
||||
}
|
||||
}
|
||||
if (tvguideConfig.displayChannelGroups && colAdded) {
|
||||
if (config.displayChannelGroups && colAdded) {
|
||||
channelGroups->DrawChannelGroups(columns.First()->getChannel(), columns.Last()->getChannel());
|
||||
}
|
||||
|
||||
if (activeGrid && (tvguideConfig.channelJumpMode == eGroupJump)) {
|
||||
if (activeGrid && (config.channelJumpMode == eGroupJump)) {
|
||||
footer->UpdateGroupButtons(activeGrid->column->getChannel());
|
||||
}
|
||||
osdManager.flush();
|
||||
@@ -352,14 +352,14 @@ void cTvGuideOsd::channelBack() {
|
||||
|
||||
void cTvGuideOsd::timeForward() {
|
||||
bool actionDone = false;
|
||||
if ( (myTime->GetEnd() - activeGrid->EndTime())/60 < 30 ) {
|
||||
if ((timeManager->GetEnd() - activeGrid->EndTime())/60 < 30 ) {
|
||||
ScrollForward();
|
||||
actionDone = true;
|
||||
}
|
||||
cGrid *next = activeGrid->column->getNext(activeGrid);
|
||||
cGridElement *next = activeGrid->column->getNext(activeGrid);
|
||||
if (next) {
|
||||
if ( (next->EndTime() < myTime->GetEnd())
|
||||
|| ( (myTime->GetEnd() - next->StartTime())/60 > 30 ) ) {
|
||||
if ( (next->EndTime() < timeManager->GetEnd())
|
||||
|| ( (timeManager->GetEnd() - next->StartTime())/60 > 30 ) ) {
|
||||
setNextActiveGrid(next);
|
||||
actionDone = true;
|
||||
}
|
||||
@@ -371,27 +371,33 @@ void cTvGuideOsd::timeForward() {
|
||||
}
|
||||
|
||||
void cTvGuideOsd::ScrollForward() {
|
||||
myTime->AddStep(tvguideConfig.stepMinutes);
|
||||
timeLine->drawDateViewer();
|
||||
timeLine->drawClock();
|
||||
timeLine->setTimeline();
|
||||
for (cChannelColumn *column = columns.First(); column; column = columns.Next(column)) {
|
||||
column->AddNewGridsAtEnd();
|
||||
column->ClearOutdatedStart();
|
||||
column->drawGrids();
|
||||
timeManager->AddStep(config.stepMinutes);
|
||||
if (config.useHWAccel) {
|
||||
drawGridsTimeJump(true);
|
||||
timeLine->DrawDateViewer();
|
||||
timeLine->DrawClock();
|
||||
timeLine->DrawTimeline();
|
||||
} else {
|
||||
timeLine->DrawDateViewer();
|
||||
timeLine->DrawTimeline();
|
||||
for (cChannelEpg *column = columns.First(); column; column = columns.Next(column)) {
|
||||
column->AddNewGridsAtEnd();
|
||||
column->ClearOutdatedStart();
|
||||
column->drawGrids();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void cTvGuideOsd::timeBack() {
|
||||
bool actionDone = false;
|
||||
if ( (activeGrid->StartTime() - myTime->GetStart())/60 < 30 ) {
|
||||
if ((activeGrid->StartTime() - timeManager->GetStart())/60 < 30 ) {
|
||||
ScrollBack();
|
||||
actionDone = true;
|
||||
}
|
||||
cGrid *prev = activeGrid->column->getPrev(activeGrid);
|
||||
cGridElement *prev = activeGrid->column->getPrev(activeGrid);
|
||||
if (prev) {
|
||||
if ( (prev->StartTime() > myTime->GetStart())
|
||||
|| ( (prev->EndTime() - myTime->GetStart())/60 > 30 )
|
||||
if ( (prev->StartTime() > timeManager->GetStart())
|
||||
|| ( (prev->EndTime() - timeManager->GetStart())/60 > 30 )
|
||||
|| ( prev->isFirst()) ) {
|
||||
setNextActiveGrid(prev);
|
||||
actionDone = true;
|
||||
@@ -404,16 +410,20 @@ void cTvGuideOsd::timeBack() {
|
||||
}
|
||||
|
||||
void cTvGuideOsd::ScrollBack() {
|
||||
bool tooFarInPast = myTime->DelStep(tvguideConfig.stepMinutes);
|
||||
if (tooFarInPast)
|
||||
return;
|
||||
timeLine->drawDateViewer();
|
||||
timeLine->drawClock();
|
||||
timeLine->setTimeline();
|
||||
for (cChannelColumn *column = columns.First(); column; column = columns.Next(column)) {
|
||||
column->AddNewGridsAtStart();
|
||||
column->ClearOutdatedEnd();
|
||||
column->drawGrids();
|
||||
timeManager->DelStep(config.stepMinutes);
|
||||
if (config.useHWAccel) {
|
||||
drawGridsTimeJump();
|
||||
timeLine->DrawDateViewer();
|
||||
timeLine->DrawClock();
|
||||
timeLine->DrawTimeline();
|
||||
} else {
|
||||
timeLine->DrawDateViewer();
|
||||
timeLine->DrawTimeline();
|
||||
for (cChannelEpg *column = columns.First(); column; column = columns.Next(column)) {
|
||||
column->AddNewGridsAtStart();
|
||||
column->ClearOutdatedEnd();
|
||||
column->drawGrids();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -421,9 +431,9 @@ void cTvGuideOsd::processKeyUp() {
|
||||
if (!activeGrid) {
|
||||
return;
|
||||
}
|
||||
if (tvguideConfig.displayMode == eVertical) {
|
||||
if (config.displayMode == eVertical) {
|
||||
timeBack();
|
||||
} else if (tvguideConfig.displayMode == eHorizontal) {
|
||||
} else if (config.displayMode == eHorizontal) {
|
||||
channelBack();
|
||||
}
|
||||
}
|
||||
@@ -432,9 +442,9 @@ void cTvGuideOsd::processKeyDown() {
|
||||
if (!activeGrid) {
|
||||
return;
|
||||
}
|
||||
if (tvguideConfig.displayMode == eVertical) {
|
||||
if (config.displayMode == eVertical) {
|
||||
timeForward();
|
||||
} else if (tvguideConfig.displayMode == eHorizontal) {
|
||||
} else if (config.displayMode == eHorizontal) {
|
||||
channelForward();
|
||||
}
|
||||
}
|
||||
@@ -442,9 +452,9 @@ void cTvGuideOsd::processKeyDown() {
|
||||
void cTvGuideOsd::processKeyLeft() {
|
||||
if (activeGrid == NULL)
|
||||
return;
|
||||
if (tvguideConfig.displayMode == eVertical) {
|
||||
if (config.displayMode == eVertical) {
|
||||
channelBack();
|
||||
} else if (tvguideConfig.displayMode == eHorizontal) {
|
||||
} else if (config.displayMode == eHorizontal) {
|
||||
timeBack();
|
||||
}
|
||||
}
|
||||
@@ -452,9 +462,9 @@ void cTvGuideOsd::processKeyLeft() {
|
||||
void cTvGuideOsd::processKeyRight() {
|
||||
if (activeGrid == NULL)
|
||||
return;
|
||||
if (tvguideConfig.displayMode == eVertical) {
|
||||
if (config.displayMode == eVertical) {
|
||||
channelForward();
|
||||
} else if (tvguideConfig.displayMode == eHorizontal) {
|
||||
} else if (config.displayMode == eHorizontal) {
|
||||
timeForward();
|
||||
}
|
||||
}
|
||||
@@ -462,7 +472,7 @@ void cTvGuideOsd::processKeyRight() {
|
||||
void cTvGuideOsd::processKeyRed() {
|
||||
if ((activeGrid == NULL) || activeGrid->isDummy())
|
||||
return;
|
||||
recMenuManager->Start(activeGrid->GetEvent());
|
||||
recMenuView->Start(activeGrid->GetEvent());
|
||||
}
|
||||
|
||||
void cTvGuideOsd::processKeyGreen() {
|
||||
@@ -474,7 +484,7 @@ void cTvGuideOsd::processKeyGreen() {
|
||||
int currentCol = activeGrid->column->GetNum();
|
||||
const cChannel *prev = NULL;
|
||||
|
||||
if (tvguideConfig.channelJumpMode == eGroupJump) {
|
||||
if (config.channelJumpMode == eGroupJump) {
|
||||
int prevNum = channelGroups->GetPrevGroupChannelNumber(currentChannel);
|
||||
if (prevNum) {
|
||||
#if VDRVERSNUM >= 20301
|
||||
@@ -484,8 +494,8 @@ void cTvGuideOsd::processKeyGreen() {
|
||||
prev = Channels.GetByNumber(prevNum);
|
||||
#endif
|
||||
}
|
||||
} else if (tvguideConfig.channelJumpMode == eNumJump) {
|
||||
int i = tvguideConfig.jumpChannels + 1;
|
||||
} else if (config.channelJumpMode == eNumJump) {
|
||||
int i = config.jumpChannels + 1;
|
||||
#if VDRVERSNUM >= 20301
|
||||
LOCK_CHANNELS_READ;
|
||||
for (const cChannel *channel = firstChannel; channel; channel = Channels->Prev(channel)) {
|
||||
@@ -503,7 +513,7 @@ void cTvGuideOsd::processKeyGreen() {
|
||||
if (prev) {
|
||||
readChannels(prev);
|
||||
if (columns.Count() > 0) {
|
||||
if (tvguideConfig.channelJumpMode == eGroupJump)
|
||||
if (config.channelJumpMode == eGroupJump)
|
||||
drawGridsChannelJump();
|
||||
else
|
||||
drawGridsChannelJump(currentCol);
|
||||
@@ -520,7 +530,7 @@ void cTvGuideOsd::processKeyYellow() {
|
||||
const cChannel *firstChannel = columns.First()->getChannel();
|
||||
const cChannel *next = NULL;
|
||||
|
||||
if (tvguideConfig.channelJumpMode == eGroupJump) {
|
||||
if (config.channelJumpMode == eGroupJump) {
|
||||
int nextNum = channelGroups->GetNextGroupChannelNumber(currentChannel);
|
||||
if (nextNum) {
|
||||
#if VDRVERSNUM >= 20301
|
||||
@@ -530,7 +540,7 @@ void cTvGuideOsd::processKeyYellow() {
|
||||
next = Channels.GetByNumber(nextNum);
|
||||
#endif
|
||||
}
|
||||
} else if (tvguideConfig.channelJumpMode == eNumJump) {
|
||||
} else if (config.channelJumpMode == eNumJump) {
|
||||
int i=0;
|
||||
#if VDRVERSNUM >= 20301
|
||||
LOCK_CHANNELS_READ;
|
||||
@@ -545,7 +555,7 @@ void cTvGuideOsd::processKeyYellow() {
|
||||
next = channel;
|
||||
i++;
|
||||
}
|
||||
if (i == (tvguideConfig.jumpChannels+1)) {
|
||||
if (i == (config.jumpChannels+1)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -553,7 +563,7 @@ void cTvGuideOsd::processKeyYellow() {
|
||||
if (next) {
|
||||
readChannels(next);
|
||||
if (columns.Count() > 0) {
|
||||
if (tvguideConfig.channelJumpMode == eGroupJump)
|
||||
if (config.channelJumpMode == eGroupJump)
|
||||
drawGridsChannelJump();
|
||||
else
|
||||
drawGridsChannelJump(currentCol);
|
||||
@@ -563,22 +573,22 @@ void cTvGuideOsd::processKeyYellow() {
|
||||
}
|
||||
|
||||
eOSState cTvGuideOsd::processKeyBlue(bool *alreadyUnlocked) {
|
||||
if (tvguideConfig.blueKeyMode == eBlueKeySwitch) {
|
||||
if (config.blueKeyMode == eBlueKeySwitch) {
|
||||
return ChannelSwitch(alreadyUnlocked);
|
||||
} else if (tvguideConfig.blueKeyMode == eBlueKeyEPG) {
|
||||
} else if (config.blueKeyMode == eBlueKeyEPG) {
|
||||
DetailedEPG();
|
||||
} else if (tvguideConfig.blueKeyMode == eBlueKeyFavorites) {
|
||||
recMenuManager->StartFavorites();
|
||||
} else if (config.blueKeyMode == eBlueKeyFavorites) {
|
||||
recMenuView->StartFavorites();
|
||||
}
|
||||
return osContinue;
|
||||
}
|
||||
|
||||
eOSState cTvGuideOsd::processKeyOk(bool *alreadyUnlocked) {
|
||||
if (tvguideConfig.blueKeyMode == eBlueKeySwitch) {
|
||||
if (config.blueKeyMode == eBlueKeySwitch) {
|
||||
DetailedEPG();
|
||||
} else if (tvguideConfig.blueKeyMode == eBlueKeyEPG) {
|
||||
} else if (config.blueKeyMode == eBlueKeyEPG) {
|
||||
return ChannelSwitch(alreadyUnlocked);
|
||||
} else if (tvguideConfig.blueKeyMode == eBlueKeyFavorites) {
|
||||
} else if (config.blueKeyMode == eBlueKeyFavorites) {
|
||||
DetailedEPG();
|
||||
}
|
||||
return osContinue;
|
||||
@@ -592,7 +602,7 @@ eOSState cTvGuideOsd::ChannelSwitch(bool *alreadyUnlocked) {
|
||||
cPixmap::Unlock();
|
||||
*alreadyUnlocked = true;
|
||||
cDevice::PrimaryDevice()->SwitchChannel(currentChannel, true);
|
||||
if (tvguideConfig.closeOnSwitch) {
|
||||
if (config.closeOnSwitch) {
|
||||
if (detailView) {
|
||||
delete detailView;
|
||||
detailView = NULL;
|
||||
@@ -616,7 +626,7 @@ void cTvGuideOsd::DetailedEPG() {
|
||||
}
|
||||
|
||||
void cTvGuideOsd::processNumKey(int numKey) {
|
||||
if (tvguideConfig.numkeyMode == 0) {
|
||||
if (config.numkeyMode == 0) {
|
||||
//timely jumps with 1,3,4,6,7,9
|
||||
TimeJump(numKey);
|
||||
} else {
|
||||
@@ -628,53 +638,54 @@ void cTvGuideOsd::processNumKey(int numKey) {
|
||||
void cTvGuideOsd::TimeJump(int mode) {
|
||||
switch (mode) {
|
||||
case 1: {
|
||||
bool tooFarInPast = myTime->DelStep(tvguideConfig.bigStepHours*60);
|
||||
if (tooFarInPast)
|
||||
return;
|
||||
}
|
||||
timeManager->DelStep(((config.displayMode == eVertical) ? config.bigStepHours : config.bigStepHoursHorizontal) * 60);
|
||||
}
|
||||
break;
|
||||
case 3: {
|
||||
myTime->AddStep(tvguideConfig.bigStepHours*60);
|
||||
}
|
||||
timeManager->AddStep(((config.displayMode == eVertical) ? config.bigStepHours : config.bigStepHoursHorizontal) * 60);
|
||||
}
|
||||
break;
|
||||
case 4: {
|
||||
bool tooFarInPast = myTime->DelStep(tvguideConfig.hugeStepHours*60);
|
||||
if (tooFarInPast)
|
||||
return;
|
||||
}
|
||||
timeManager->DelStep(((config.displayMode == eVertical) ? config.hugeStepHours : config.hugeStepHoursHorizontal) * 60);
|
||||
}
|
||||
break;
|
||||
case 6: {
|
||||
myTime->AddStep(tvguideConfig.hugeStepHours*60);
|
||||
}
|
||||
timeManager->AddStep(((config.displayMode == eVertical) ? config.hugeStepHours : config.hugeStepHoursHorizontal) * 60);
|
||||
}
|
||||
break;
|
||||
case 7: {
|
||||
cMyTime primeChecker;
|
||||
cTimeManager primeChecker;
|
||||
primeChecker.Now();
|
||||
time_t prevPrime = primeChecker.getPrevPrimetime(myTime->GetStart());
|
||||
time_t prevPrime = primeChecker.getPrevPrimetime(timeManager->GetStart());
|
||||
if (primeChecker.tooFarInPast(prevPrime))
|
||||
return;
|
||||
myTime->SetTime(prevPrime);
|
||||
}
|
||||
timeManager->SetTime(prevPrime);
|
||||
}
|
||||
break;
|
||||
case 9: {
|
||||
cMyTime primeChecker;
|
||||
time_t nextPrime = primeChecker.getNextPrimetime(myTime->GetStart());
|
||||
myTime->SetTime(nextPrime);
|
||||
}
|
||||
cTimeManager primeChecker;
|
||||
time_t nextPrime = primeChecker.getNextPrimetime(timeManager->GetStart());
|
||||
timeManager->SetTime(nextPrime);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
drawGridsTimeJump();
|
||||
timeLine->drawDateViewer();
|
||||
timeLine->drawClock();
|
||||
timeLine->setTimeline();
|
||||
timeLine->DrawDateViewer();
|
||||
timeLine->DrawClock();
|
||||
timeLine->DrawTimeline();
|
||||
osdManager.flush();
|
||||
}
|
||||
|
||||
int cTvGuideOsd::GetLastValidChannel(void) {
|
||||
return channelGroups->GetLastValidChannel();
|
||||
}
|
||||
|
||||
void cTvGuideOsd::ChannelJump(int num) {
|
||||
if (!channelJumper) {
|
||||
channelJumper = new cChannelJump(channelGroups);
|
||||
int lastValidChannel = GetLastValidChannel();
|
||||
channelJumper = new cChannelJump(channelGroups, lastValidChannel);
|
||||
}
|
||||
channelJumper->Set(num);
|
||||
channelJumper->DrawText();
|
||||
@@ -708,7 +719,7 @@ void cTvGuideOsd::CheckTimeout(void) {
|
||||
}
|
||||
|
||||
void cTvGuideOsd::SetTimers() {
|
||||
for (cChannelColumn *column = columns.First(); column; column = columns.Next(column)) {
|
||||
for (cChannelEpg *column = columns.First(); column; column = columns.Next(column)) {
|
||||
column->SetTimers();
|
||||
}
|
||||
}
|
||||
@@ -717,8 +728,8 @@ eOSState cTvGuideOsd::ProcessKey(eKeys Key) {
|
||||
eOSState state = osContinue;
|
||||
cPixmap::Lock();
|
||||
bool alreadyUnlocked = false;
|
||||
if (recMenuManager->isActive()) {
|
||||
state = recMenuManager->ProcessKey(Key);
|
||||
if (recMenuView->isActive()) {
|
||||
state = recMenuView->ProcessKey(Key);
|
||||
if (state == osEnd) {
|
||||
SetTimers();
|
||||
osdManager.flush();
|
||||
@@ -734,13 +745,13 @@ eOSState cTvGuideOsd::ProcessKey(eKeys Key) {
|
||||
delete detailView;
|
||||
detailView = NULL;
|
||||
detailViewActive = false;
|
||||
if ((tvguideConfig.blueKeyMode == eBlueKeySwitch) || (tvguideConfig.blueKeyMode == eBlueKeyFavorites)) {
|
||||
if ((config.blueKeyMode == eBlueKeySwitch) || (config.blueKeyMode == eBlueKeyFavorites)) {
|
||||
state = ChannelSwitch(&alreadyUnlocked);
|
||||
} else {
|
||||
osdManager.flush();
|
||||
state = osContinue;
|
||||
}
|
||||
} else if ((Key & ~k_Repeat) == kOk && (tvguideConfig.blueKeyMode == eBlueKeyEPG)) {
|
||||
} else if ((Key & ~k_Repeat) == kOk && (config.blueKeyMode == eBlueKeyEPG)) {
|
||||
delete detailView;
|
||||
detailView = NULL;
|
||||
detailViewActive = false;
|
||||
@@ -766,11 +777,18 @@ eOSState cTvGuideOsd::ProcessKey(eKeys Key) {
|
||||
case kYellow: processKeyYellow(); break;
|
||||
case kBlue: state = processKeyBlue(&alreadyUnlocked); break;
|
||||
case kOk: state = processKeyOk(&alreadyUnlocked); break;
|
||||
case kBack: state=osEnd; break;
|
||||
case kBack: state = osEnd; break;
|
||||
case k0 ... k9: processNumKey(Key - k0); break;
|
||||
case kFastRew: TimeJump(1); break; // Doesnt work, if used from timeshiftmode
|
||||
case kFastFwd: TimeJump(3); break;
|
||||
case kPrev: TimeJump(4); break;
|
||||
case kNext: TimeJump(6); break;
|
||||
case kNone: if (channelJumper) CheckTimeout(); break;
|
||||
default: break;
|
||||
}
|
||||
if (timeLine->DrawClock()) {
|
||||
osdManager.flush();
|
||||
}
|
||||
}
|
||||
if (!alreadyUnlocked) {
|
||||
cPixmap::Unlock();
|
||||
@@ -782,7 +800,7 @@ void cTvGuideOsd::dump() {
|
||||
esyslog("tvguide: ------Dumping Content---------");
|
||||
activeGrid->debug();
|
||||
// int i=1;
|
||||
for (cChannelColumn *col = columns.First(); col; col = columns.Next(col)) {
|
||||
for (cChannelEpg *col = columns.First(); col; col = columns.Next(col)) {
|
||||
col->dumpGrids();
|
||||
}
|
||||
}
|
||||
|
21
tvguideosd.h
21
tvguideosd.h
@@ -1,36 +1,37 @@
|
||||
#ifndef __TVGUIDE_TVGUIDEOSD_H
|
||||
#define __TVGUIDE_TVGUIDEOSD_H
|
||||
|
||||
#include "timer.h"
|
||||
#include "grid.h"
|
||||
#include "channelcolumn.h"
|
||||
#include "timemanager.h"
|
||||
#include "gridelement.h"
|
||||
#include "channelepg.h"
|
||||
#include "statusheader.h"
|
||||
#include "detailview.h"
|
||||
#include "timeline.h"
|
||||
#include "channelgroups.h"
|
||||
#include "footer.h"
|
||||
#include "recmenumanager.h"
|
||||
#include "recmenuview.h"
|
||||
#include "channeljump.h"
|
||||
|
||||
// --- cTvGuideOsd -------------------------------------------------------------
|
||||
|
||||
class cTvGuideOsd : public cOsdObject {
|
||||
private:
|
||||
cMyTime *myTime;
|
||||
cList<cChannelColumn> columns;
|
||||
cGrid *activeGrid;
|
||||
cTimeManager *timeManager;
|
||||
cList<cChannelEpg> columns;
|
||||
cGridElement *activeGrid;
|
||||
cStatusHeader *statusHeader;
|
||||
cDetailView *detailView;
|
||||
cTimeLine *timeLine;
|
||||
cChannelGroups *channelGroups;
|
||||
cFooter *footer;
|
||||
cRecMenuManager *recMenuManager;
|
||||
cRecMenuView *recMenuView;
|
||||
cChannelJump *channelJumper;
|
||||
int GetLastValidChannel(void);
|
||||
bool detailViewActive;
|
||||
void drawOsd();
|
||||
void readChannels(const cChannel *channelStart);
|
||||
void drawGridsChannelJump(int offset = 0);
|
||||
void drawGridsTimeJump();
|
||||
void drawGridsTimeJump(bool last = false);
|
||||
void processKeyUp();
|
||||
void processKeyDown();
|
||||
void processKeyLeft();
|
||||
@@ -44,7 +45,7 @@ private:
|
||||
void TimeJump(int mode);
|
||||
void ChannelJump(int num);
|
||||
void CheckTimeout(void);
|
||||
void setNextActiveGrid(cGrid *next);
|
||||
void setNextActiveGrid(cGridElement *next);
|
||||
void channelForward();
|
||||
void channelBack();
|
||||
void timeForward();
|
||||
|
61
view.c
61
view.c
@@ -5,7 +5,7 @@
|
||||
* cView
|
||||
********************************************************************************************/
|
||||
|
||||
cView::cView(void) {
|
||||
cView::cView(void) : cThread("View") {
|
||||
activeView = 0;
|
||||
scrollable = false;
|
||||
tabbed = false;
|
||||
@@ -71,7 +71,7 @@ void cView::SetGeometry(void) {
|
||||
scrollbarWidth = 40;
|
||||
width = geoManager.osdWidth - scrollbarWidth;
|
||||
height = geoManager.osdHeight;
|
||||
border = tvguideConfig.epgViewBorder;
|
||||
border = config.epgViewBorder;
|
||||
headerWidth = geoManager.headerContentWidth;
|
||||
headerHeight = geoManager.epgViewHeaderHeight;
|
||||
if (tabbed)
|
||||
@@ -89,8 +89,8 @@ void cView::DrawHeader(void) {
|
||||
}
|
||||
pixmapHeader->Fill(clrTransparent);
|
||||
pixmapHeaderLogo->Fill(clrTransparent);
|
||||
if (tvguideConfig.style == eStyleGraphical) {
|
||||
if (tvguideConfig.scaleVideo) {
|
||||
if (config.style == eStyleGraphical) {
|
||||
if (config.scaleVideo) {
|
||||
pixmapHeader->drawBackgroundGraphical(bgStatusHeaderWindowed);
|
||||
} else {
|
||||
pixmapHeader->drawBackgroundGraphical(bgStatusHeaderFull);
|
||||
@@ -101,9 +101,9 @@ void cView::DrawHeader(void) {
|
||||
}
|
||||
//Channel Logo
|
||||
int logoHeight = 2 * headerHeight / 3;
|
||||
int logoWidth = logoHeight * tvguideConfig.logoWidthRatio / tvguideConfig.logoHeightRatio;
|
||||
int logoWidth = logoHeight * config.logoWidthRatio / config.logoHeightRatio;
|
||||
int xText = border / 2;
|
||||
if (channel && !tvguideConfig.hideChannelLogos) {
|
||||
if (channel && !config.hideChannelLogos) {
|
||||
cImageLoader imgLoader;
|
||||
if (imgLoader.LoadLogo(channel, logoWidth, logoHeight)) {
|
||||
cImage logo = imgLoader.GetImage();
|
||||
@@ -113,19 +113,25 @@ void cView::DrawHeader(void) {
|
||||
}
|
||||
}
|
||||
//Date and Time, Title, Subtitle
|
||||
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 - fontHeaderLarge->Height()) / 2;
|
||||
int yTitle = (headerHeight - textLines * lineHeight) / 2;
|
||||
int ySubtitle = headerHeight - fontHeader->Height() - border / 3;
|
||||
int textWidthMax = headerWidth - xText;
|
||||
|
||||
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;
|
||||
if (!event)
|
||||
return;
|
||||
const cTimer *ti;
|
||||
if (tvguideConfig.useRemoteTimers && pRemoteTimers) {
|
||||
if (config.useRemoteTimers && pRemoteTimers) {
|
||||
RemoteTimers_GetMatch_v1_0 rtMatch;
|
||||
rtMatch.event = event;
|
||||
pRemoteTimers->Service("RemoteTimers::GetMatch-v1.0", &rtMatch);
|
||||
@@ -216,7 +222,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,14 +252,14 @@ 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;
|
||||
}
|
||||
@@ -268,13 +274,13 @@ void cView::DrawFloatingContent(std::string *infoText, cTvMedia *img, cTvMedia *
|
||||
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;
|
||||
@@ -450,7 +456,7 @@ void cView::DrawScrollbar(void) {
|
||||
cImage *cView::CreateScrollbarImage(int width, int height, tColor clrBgr, tColor clrBlend) {
|
||||
cImage *image = new cImage(cSize(width, height));
|
||||
image->Fill(clrBgr);
|
||||
if (tvguideConfig.style != eStyleFlat) {
|
||||
if (config.style != eStyleFlat) {
|
||||
int numSteps = 64;
|
||||
int alphaStep = 0x03;
|
||||
if (height < 30)
|
||||
@@ -481,11 +487,10 @@ bool cView::KeyUp(void) {
|
||||
if (!scrollable)
|
||||
return false;
|
||||
int aktHeight = pixmapContent->DrawPort().Point().Y();
|
||||
// int lineHeight = font->Height();
|
||||
if (aktHeight >= 0) {
|
||||
return false;
|
||||
}
|
||||
int step = tvguideConfig.detailedViewScrollStep * font->Height();
|
||||
int step = config.detailedViewScrollStep * font->Height();
|
||||
int newY = aktHeight + step;
|
||||
if (newY > 0)
|
||||
newY = 0;
|
||||
@@ -503,7 +508,7 @@ bool cView::KeyDown(void) {
|
||||
if (totalHeight - ((-1)*aktHeight) == screenHeight) {
|
||||
return false;
|
||||
}
|
||||
int step = tvguideConfig.detailedViewScrollStep * font->Height();
|
||||
int step = config.detailedViewScrollStep * font->Height();
|
||||
int newY = aktHeight - step;
|
||||
if ((-1)*newY > totalHeight - screenHeight)
|
||||
newY = (-1)*(totalHeight - screenHeight);
|
||||
@@ -522,7 +527,7 @@ cEPGView::cEPGView(void) : cView() {
|
||||
}
|
||||
|
||||
cEPGView::~cEPGView(void) {
|
||||
Cancel(-1);
|
||||
Cancel(2);
|
||||
while (Active())
|
||||
cCondWait::SleepMs(10);
|
||||
}
|
||||
@@ -540,9 +545,9 @@ void cEPGView::SetTabs(void) {
|
||||
|
||||
void cEPGView::CheckEPGImages(void) {
|
||||
if (eventID > 0) {
|
||||
for (int i=1; i <= tvguideConfig.numAdditionalEPGPictures; i++) {
|
||||
for (int i=1; i <= config.numAdditionalEPGPictures; i++) {
|
||||
cString epgimage;
|
||||
epgimage = cString::sprintf("%s%d_%d.jpg", *tvguideConfig.epgImagePath, eventID, i);
|
||||
epgimage = cString::sprintf("%s%d_%d.jpg", *config.epgImagePath, eventID, i);
|
||||
FILE *fp = fopen(*epgimage, "r");
|
||||
if (fp) {
|
||||
std::stringstream ss;
|
||||
@@ -560,8 +565,8 @@ void cEPGView::CheckEPGImages(void) {
|
||||
}
|
||||
|
||||
void cEPGView::DrawImages(void) {
|
||||
int imgWidth = tvguideConfig.epgImageWidthLarge;
|
||||
int imgHeight = tvguideConfig.epgImageHeightLarge;
|
||||
int imgWidth = config.epgImageWidthLarge;
|
||||
int imgHeight = config.epgImageHeightLarge;
|
||||
|
||||
int totalHeight = numEPGPics * (imgHeight + border);
|
||||
|
||||
@@ -641,7 +646,7 @@ cSeriesView::cSeriesView(int seriesId, int episodeId) : cView() {
|
||||
}
|
||||
|
||||
cSeriesView::~cSeriesView(void) {
|
||||
Cancel(-1);
|
||||
Cancel(3);
|
||||
while (Active())
|
||||
cCondWait::SleepMs(10);
|
||||
}
|
||||
@@ -863,7 +868,7 @@ cMovieView::cMovieView(int movieId) : cView() {
|
||||
}
|
||||
|
||||
cMovieView::~cMovieView(void) {
|
||||
Cancel(-1);
|
||||
Cancel(3);
|
||||
while (Active())
|
||||
cCondWait::SleepMs(10);
|
||||
}
|
||||
|
Reference in New Issue
Block a user