Compare commits
58 Commits
Author | SHA1 | Date |
---|---|---|
kamel5 | 79a95914f0 | |
kamel5 | 2f64512710 | |
kamel5 | d11d09ca6e | |
Peter Bieringer | 9690f6d8a0 | |
Peter Bieringer | 5e5e5c4fbc | |
kamel5 | 5b61c36484 | |
kamel5 | 7d269ffd85 | |
kamel5 | c6c89529a6 | |
kamel5 | da79cb71b4 | |
kamel5 | 8aeb848044 | |
kamel5 | b55994a8a6 | |
kamel5 | b47f544ad5 | |
kamel5 | 4a89d28f03 | |
kamel5 | 7c47c8e225 | |
kamel5 | ebd99e119c | |
kamel5 | 3c7e014dcc | |
kamel5 | b977e3582a | |
kamel5 | 9b63e8327f | |
kamel5 | a7fc762b3d | |
kamel5 | 596c86c780 | |
kamel5 | d6f5e6808b | |
Peter Bieringer | 0259d38d2f | |
Peter Bieringer | 0b2666f62d | |
Peter Bieringer | d4b1765aaf | |
Peter Bieringer | 3aae0169b4 | |
kamel5 | 0159d536d0 | |
kamel5 | ccba1c23fd | |
kamel5 | 6583c93a6f | |
Peter Bieringer | 2d7a9ab3a3 | |
Peter Bieringer | 4daec64480 | |
Peter Bieringer | 64658a1f56 | |
Peter Bieringer | fce870a315 | |
kamel5 | 09925e6113 | |
kamel5 | 4b2861e030 | |
Peter Bieringer | 39c1062353 | |
Peter Bieringer | 589749731f | |
Peter Bieringer | 1c9fd38cc7 | |
Peter Bieringer | 0ca96e8b3a | |
Peter Bieringer | 700798ba21 | |
kamel5 | 0aeb15d03a | |
kamel5 | 22b24eb455 | |
kamel5 | f5a29826cb | |
kamel5 | 50879fa931 | |
kamel5 | 894b5865cd | |
Peter Bieringer | fda2a4ec74 | |
Peter Bieringer | 4821574437 | |
kamel5 | dc617b52fa | |
kamel5 | cef6ca78a2 | |
kamel5 | 85df1e7f98 | |
kamel5 | 3334263a96 | |
Peter Bieringer | 4d3fa0bc71 | |
Peter Bieringer | cbce894c0c | |
kamel5 | 9a0eac1c4f | |
kamel5 | 5f7337b50c | |
Peter Bieringer | 105fe893a2 | |
Peter Bieringer | 764f657620 | |
Peter Bieringer | 4bebeda1b0 | |
Peter Bieringer | 7d63e95471 |
32
HISTORY
32
HISTORY
|
@ -497,3 +497,35 @@ Version 1.2.14
|
||||||
|
|
||||||
- [kamel5] Revert "Disabled timeshift display for non timeshift recordings"
|
- [kamel5] Revert "Disabled timeshift display for non timeshift recordings"
|
||||||
- [kamel5] Add a different display mode to timeshift for currently active timer recordings
|
- [kamel5] Add a different display mode to timeshift for currently active timer recordings
|
||||||
|
|
||||||
|
Version 1.2.15
|
||||||
|
|
||||||
|
- [kamel5] Update Update italian tanslation in metrixhd and estuary4vdr
|
||||||
|
- [pbiering] fix tuner device mapping in case tuners are not starting as first device
|
||||||
|
- [kamel5] Fix cutting marks wasn't updated
|
||||||
|
|
||||||
|
Version 1.2.16
|
||||||
|
- [pbiering] add additional recording flag {isInUse} - can be used in skins for e.g. records in cutting/copy(queue)
|
||||||
|
- [pbiering] add additional <vdrstatus> exposing {vdrIsRecordingsHandlersActive} and {vdrIsRecording} - can be used in skins for e.g. IDLE/BUSY REC/FREE
|
||||||
|
- [kamel5] Fix Incorrect detection of a recording that is currently running
|
||||||
|
- [kamel5] Fix segfault with mpv plugin (thx to @lnj at vdr-portal.de)
|
||||||
|
- [kamel5] Update skin estuary4vdr
|
||||||
|
- [pbiering] add {vdrHasTimers} to <vdrstatus> - can be used in skins for e.g. REC/SCHED/FREE (in combination with {vdrIsRecording})
|
||||||
|
- [pbiering] add <vdrstatus> also to displaymenu.xml to be able to display in header
|
||||||
|
- [kamel5] Fix display of recording sign in display channel
|
||||||
|
- [kamel5] Fix a device is currently recording
|
||||||
|
- [kamel5] Fix update timer in the main menu
|
||||||
|
|
||||||
|
Version 1.2.17
|
||||||
|
|
||||||
|
- [kamel5] Fix display of events in channel display
|
||||||
|
- [kamel5] Fix incorrect display of posters and banners in the recording menu
|
||||||
|
- [kamel5] Fix display of the background in the display channel
|
||||||
|
- [kamel5] Add token errors for recordings (VDR >= 2.5.4)
|
||||||
|
- [kamel5] Update Skin estuary4vdr to display errors in recording info
|
||||||
|
- [kamel5] Update Skin estuary4vdr
|
||||||
|
|
||||||
|
Version 1.2.18
|
||||||
|
|
||||||
|
- [pbiering] extend detection of isHD and isUHD in case of stored EPG info (event) is missing any information regarding video (e.g. if EPG is missing on a channel)
|
||||||
|
- [kamel5] Fix compiler error
|
||||||
|
|
|
@ -726,15 +726,15 @@ bool cNumericExpr::IsNumericExpression(const char *e) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool cNumericExpr::PercentValue(const char *e) {
|
bool cNumericExpr::PercentValue(const char *e) {
|
||||||
|
if (!e)
|
||||||
|
return e;
|
||||||
const char *hit = strchr(e, '%');
|
const char *hit = strchr(e, '%');
|
||||||
if (!hit)
|
if (!hit)
|
||||||
return false;
|
return false;
|
||||||
char buffer[20] = "";
|
int val;
|
||||||
if (strlen(e) > 20)
|
int r = sscanf(e, "%d%%", &val); // use sscanf to retrieve %-value to avoid -Wstringop-overflow
|
||||||
return false;
|
if (r != 1)
|
||||||
strncpy(buffer, e, strlen(e)-1);
|
return false; // sscanf parsing problem
|
||||||
buffer[strlen(e)-1] = '\0';
|
|
||||||
int val = atoi(buffer);
|
|
||||||
bool ok = false;
|
bool ok = false;
|
||||||
if (horizontal && container->Width() > 0) {
|
if (horizontal && container->Width() > 0) {
|
||||||
value = container->Width() * val / 100;
|
value = container->Width() * val / 100;
|
||||||
|
@ -747,22 +747,22 @@ bool cNumericExpr::PercentValue(const char *e) {
|
||||||
}
|
}
|
||||||
|
|
||||||
char *cNumericExpr::ReplacePercentValue(char *e) {
|
char *cNumericExpr::ReplacePercentValue(char *e) {
|
||||||
|
if (!e)
|
||||||
|
return e;
|
||||||
const char *hit = strchr(e, '%');
|
const char *hit = strchr(e, '%');
|
||||||
if (!hit)
|
if (!hit)
|
||||||
return e;
|
return e;
|
||||||
char buffer[20] = "";
|
int val;
|
||||||
if (strlen(e) > 20)
|
int r = sscanf(e, "%d%%", &val); // use sscanf to retrieve %-value to avoid -Wstringop-overflow
|
||||||
return e;
|
if (r != 1)
|
||||||
strncpy(buffer, e, strlen(e)-1);
|
return e; // sscanf parsing problem
|
||||||
buffer[strlen(e)-1] = '\0';
|
|
||||||
int val = atoi(buffer);
|
|
||||||
double percentVal = (double)val/100.0f;
|
double percentVal = (double)val/100.0f;
|
||||||
|
|
||||||
char replacement[50] = "";
|
char replacement[50] = "";
|
||||||
if (horizontal) {
|
if (horizontal) {
|
||||||
sprintf(replacement, "%.5f*{areawidth}", percentVal);
|
snprintf(replacement, sizeof(replacement), "%.5f*{areawidth}", percentVal);
|
||||||
} else {
|
} else {
|
||||||
sprintf(replacement, "%.5f*{areaheight}", percentVal);
|
snprintf(replacement, sizeof(replacement), "%.5f*{areaheight}", percentVal);
|
||||||
}
|
}
|
||||||
|
|
||||||
int len = strlen(replacement) + 1;
|
int len = strlen(replacement) + 1;
|
||||||
|
@ -774,16 +774,19 @@ char *cNumericExpr::ReplacePercentValue(char *e) {
|
||||||
}
|
}
|
||||||
|
|
||||||
char *cNumericExpr::ReplaceToken(char *e, const char* token, int val) {
|
char *cNumericExpr::ReplaceToken(char *e, const char* token, int val) {
|
||||||
|
if (!e)
|
||||||
|
return e;
|
||||||
char *tokenStart = strstr(e, token);
|
char *tokenStart = strstr(e, token);
|
||||||
if (!tokenStart) {
|
if (!tokenStart) {
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
char buffer[20] = "";
|
char buffer[20] = "";
|
||||||
sprintf(buffer, "%d", val);
|
snprintf(buffer, sizeof(buffer), "%d", val);
|
||||||
size_t newSize = strlen(e) - strlen(token) + strlen(buffer) + 1;
|
size_t newSize = strlen(e) - strlen(token) + strlen(buffer) + 1;
|
||||||
char *replaced = (char*)malloc(newSize);
|
char *replaced = (char*)malloc(newSize);
|
||||||
memset(replaced, 0, newSize);
|
memset(replaced, 0, newSize);
|
||||||
size_t beginning = strlen(e) - strlen(tokenStart);
|
size_t beginning = strlen(e) - strlen(tokenStart);
|
||||||
|
if (beginning >= newSize) beginning = newSize - 1; // will never happen but avoid -Wstringop-overflow
|
||||||
if (beginning > 0)
|
if (beginning > 0)
|
||||||
strncpy(replaced, e, beginning);
|
strncpy(replaced, e, beginning);
|
||||||
strcat(replaced, buffer);
|
strcat(replaced, buffer);
|
||||||
|
|
|
@ -62,6 +62,7 @@ enum class eVeDisplayMenu {
|
||||||
header,
|
header,
|
||||||
datetime,
|
datetime,
|
||||||
time,
|
time,
|
||||||
|
vdrstatus,
|
||||||
sortmode,
|
sortmode,
|
||||||
colorbuttons,
|
colorbuttons,
|
||||||
message,
|
message,
|
||||||
|
@ -79,6 +80,7 @@ enum class eVeDisplayMenuMain {
|
||||||
systemmemory,
|
systemmemory,
|
||||||
temperatures,
|
temperatures,
|
||||||
vdrstatistics,
|
vdrstatistics,
|
||||||
|
vdrstatus,
|
||||||
lastrecordings,
|
lastrecordings,
|
||||||
customtokens,
|
customtokens,
|
||||||
count
|
count
|
||||||
|
@ -735,6 +737,13 @@ enum class eDMVdrstatisticsIT {
|
||||||
count = 0
|
count = 0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum class eDMVdrstatusIT {
|
||||||
|
vdrIsRecordingsHandlersActive,
|
||||||
|
vdrIsRecording,
|
||||||
|
vdrHasTimers,
|
||||||
|
count
|
||||||
|
};
|
||||||
|
|
||||||
enum class eDMTemperaturesST {
|
enum class eDMTemperaturesST {
|
||||||
count = 0
|
count = 0
|
||||||
};
|
};
|
||||||
|
@ -1176,6 +1185,8 @@ enum class eLeMenuRecordingsIT {
|
||||||
isUHD,
|
isUHD,
|
||||||
isRadio,
|
isRadio,
|
||||||
isRecording,
|
isRecording,
|
||||||
|
isInUse,
|
||||||
|
errors,
|
||||||
count
|
count
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1226,6 +1237,8 @@ enum class eCeMenuRecordingsIT {
|
||||||
isUHD,
|
isUHD,
|
||||||
isRadio,
|
isRadio,
|
||||||
isRecording,
|
isRecording,
|
||||||
|
isInUse,
|
||||||
|
errors,
|
||||||
count
|
count
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1341,6 +1354,8 @@ enum class eDmDetailedHeaderRecIT {
|
||||||
isUHD,
|
isUHD,
|
||||||
isRadio,
|
isRadio,
|
||||||
isRecording,
|
isRecording,
|
||||||
|
isInUse,
|
||||||
|
errors,
|
||||||
count
|
count
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1453,6 +1468,8 @@ enum class eDmDetailedRecIT {
|
||||||
isUHD,
|
isUHD,
|
||||||
isRadio,
|
isRadio,
|
||||||
isRecording,
|
isRecording,
|
||||||
|
isInUse,
|
||||||
|
errors,
|
||||||
count
|
count
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1514,6 +1531,7 @@ enum class eDRRecInfoIT {
|
||||||
isHD,
|
isHD,
|
||||||
isUHD,
|
isUHD,
|
||||||
isRecording,
|
isRecording,
|
||||||
|
isInUse,
|
||||||
isWideScreen,
|
isWideScreen,
|
||||||
count
|
count
|
||||||
};
|
};
|
||||||
|
|
|
@ -1332,7 +1332,7 @@ int cFuncLoop::FuncWidth(void) {
|
||||||
eOverflowType overflow = (eOverflowType)GetValue((int)eLoopAttribs::overflow);
|
eOverflowType overflow = (eOverflowType)GetValue((int)eLoopAttribs::overflow);
|
||||||
if (overflow == eOverflowType::cut) {
|
if (overflow == eOverflowType::cut) {
|
||||||
int maxItems = GetValue((int)eLoopAttribs::maxitems);
|
int maxItems = GetValue((int)eLoopAttribs::maxitems);
|
||||||
numLoops = min(numLoops, maxItems);
|
numLoops = std::min(numLoops, maxItems);
|
||||||
}
|
}
|
||||||
if (numLoops > 0)
|
if (numLoops > 0)
|
||||||
return numLoops * columnWidth;
|
return numLoops * columnWidth;
|
||||||
|
@ -1357,7 +1357,7 @@ int cFuncLoop::FuncHeight(void) {
|
||||||
eOverflowType overflow = (eOverflowType)GetValue((int)eLoopAttribs::overflow);
|
eOverflowType overflow = (eOverflowType)GetValue((int)eLoopAttribs::overflow);
|
||||||
if (overflow == eOverflowType::cut) {
|
if (overflow == eOverflowType::cut) {
|
||||||
int maxItems = GetValue((int)eLoopAttribs::maxitems);
|
int maxItems = GetValue((int)eLoopAttribs::maxitems);
|
||||||
numLoops = min(numLoops, maxItems);
|
numLoops = std::min(numLoops, maxItems);
|
||||||
} else if (overflow == eOverflowType::wrap) {
|
} else if (overflow == eOverflowType::wrap) {
|
||||||
int loopWidth = Width();
|
int loopWidth = Width();
|
||||||
if (loopWidth <= 0)
|
if (loopWidth <= 0)
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -608,6 +608,8 @@ void cViewDetailRec::SetTokenContainer(void) {
|
||||||
tokenContainer->DefineIntToken("{isUHD}", (int)eDmDetailedRecIT::isUHD);
|
tokenContainer->DefineIntToken("{isUHD}", (int)eDmDetailedRecIT::isUHD);
|
||||||
tokenContainer->DefineIntToken("{isRadio}", (int)eDmDetailedRecIT::isRadio);
|
tokenContainer->DefineIntToken("{isRadio}", (int)eDmDetailedRecIT::isRadio);
|
||||||
tokenContainer->DefineIntToken("{isRecording}", (int)eDmDetailedRecIT::isRecording);
|
tokenContainer->DefineIntToken("{isRecording}", (int)eDmDetailedRecIT::isRecording);
|
||||||
|
tokenContainer->DefineIntToken("{isInUse}", (int)eDmDetailedRecIT::isInUse);
|
||||||
|
tokenContainer->DefineIntToken("{errors}", (int)eDmDetailedRecIT::errors);
|
||||||
tokenContainer->DefineIntToken("{ismovie}", (int)eScraperIT::ismovie);
|
tokenContainer->DefineIntToken("{ismovie}", (int)eScraperIT::ismovie);
|
||||||
tokenContainer->DefineIntToken("{moviebudget}", (int)eScraperIT::moviebudget);
|
tokenContainer->DefineIntToken("{moviebudget}", (int)eScraperIT::moviebudget);
|
||||||
tokenContainer->DefineIntToken("{movierevenue}", (int)eScraperIT::movierevenue);
|
tokenContainer->DefineIntToken("{movierevenue}", (int)eScraperIT::movierevenue);
|
||||||
|
@ -672,6 +674,12 @@ bool cViewDetailRec::Parse(bool forced) {
|
||||||
tokenContainer->AddStringToken((int)eDmDetailedRecST::shorttext, info->ShortText());
|
tokenContainer->AddStringToken((int)eDmDetailedRecST::shorttext, info->ShortText());
|
||||||
tokenContainer->AddStringToken((int)eDmDetailedRecST::description, info->Description());
|
tokenContainer->AddStringToken((int)eDmDetailedRecST::description, info->Description());
|
||||||
tokenContainer->AddIntToken((int)eDmDetailedRecIT::framesPerSecond, info->FramesPerSecond());
|
tokenContainer->AddIntToken((int)eDmDetailedRecIT::framesPerSecond, info->FramesPerSecond());
|
||||||
|
int errors = -1;
|
||||||
|
// ENABLE_ERRORS is only used in VDR-2.5.4 if the coresponding patch is installed, so it can be ignored in other versions
|
||||||
|
#if (defined (APIVERSNUM) && (APIVERSNUM >= 20505)) || defined (ENABLE_ERRORS)
|
||||||
|
errors = info->Errors();
|
||||||
|
#endif
|
||||||
|
tokenContainer->AddIntToken((int)eDmDetailedRecIT::errors, errors);
|
||||||
const cEvent *event = info->GetEvent();
|
const cEvent *event = info->GetEvent();
|
||||||
if (event) {
|
if (event) {
|
||||||
cString recDate = event->GetDateString();
|
cString recDate = event->GetDateString();
|
||||||
|
@ -697,10 +705,11 @@ bool cViewDetailRec::Parse(bool forced) {
|
||||||
tokenContainer->AddIntToken((int)eDmDetailedRecIT::durationevent, duration);
|
tokenContainer->AddIntToken((int)eDmDetailedRecIT::durationevent, duration);
|
||||||
tokenContainer->AddIntToken((int)eDmDetailedRecIT::durationeventhours, duration / 60);
|
tokenContainer->AddIntToken((int)eDmDetailedRecIT::durationeventhours, duration / 60);
|
||||||
tokenContainer->AddStringToken((int)eDmDetailedRecST::durationeventminutes, *cString::sprintf("%.2d", duration%60));
|
tokenContainer->AddStringToken((int)eDmDetailedRecST::durationeventminutes, *cString::sprintf("%.2d", duration%60));
|
||||||
tokenContainer->AddIntToken((int)eDmDetailedRecIT::isHD, RecordingIsHD(event)); // detect HD from 'info'
|
tokenContainer->AddIntToken((int)eDmDetailedRecIT::isHD, RecordingIsHD(event, tChannelID::InvalidID)); // detect HD from 'info', no fallback to channelID
|
||||||
tokenContainer->AddIntToken((int)eDmDetailedRecIT::isUHD, RecordingIsUHD(event)); // detect UHD from 'info'
|
tokenContainer->AddIntToken((int)eDmDetailedRecIT::isUHD, RecordingIsUHD(event, tChannelID::InvalidID)); // detect UHD from 'info', no fallback to channelID
|
||||||
tokenContainer->AddIntToken((int)eDmDetailedRecIT::isRadio, RecordingIsRadio(event, info->FramesPerSecond())); // detect Radio from 'info' and FPS
|
tokenContainer->AddIntToken((int)eDmDetailedRecIT::isRadio, RecordingIsRadio(event, info->FramesPerSecond())); // detect Radio from 'info' and FPS
|
||||||
tokenContainer->AddIntToken((int)eDmDetailedRecIT::isRecording, recording->IsInUse() & ruTimer);
|
tokenContainer->AddIntToken((int)eDmDetailedRecIT::isRecording, recording->IsInUse() & ruTimer);
|
||||||
|
tokenContainer->AddIntToken((int)eDmDetailedRecIT::isInUse, recording->IsInUse());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SetRecInfos();
|
SetRecInfos();
|
||||||
|
|
|
@ -261,9 +261,6 @@ void cViewChannel::SetEvents(const cEvent *present, const cEvent *following) {
|
||||||
if (veProgressBar)
|
if (veProgressBar)
|
||||||
veProgressBar->Set(present);
|
veProgressBar->Set(present);
|
||||||
|
|
||||||
if (!present && !following)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (veEpgInfo)
|
if (veEpgInfo)
|
||||||
veEpgInfo->Set(present, following);
|
veEpgInfo->Set(present, following);
|
||||||
|
|
||||||
|
@ -426,6 +423,7 @@ void cViewChannel::ClearExtended(void) {
|
||||||
Clear((int)eVeDisplayChannel::channellistdetail);
|
Clear((int)eVeDisplayChannel::channellistdetail);
|
||||||
SetDirty((int)eVeDisplayChannel::channellistback);
|
SetDirty((int)eVeDisplayChannel::channellistback);
|
||||||
initExtended = true;
|
initExtended = true;
|
||||||
|
init = true;
|
||||||
ShowBasic();
|
ShowBasic();
|
||||||
}
|
}
|
||||||
//exit from channellist info to channel list
|
//exit from channellist info to channel list
|
||||||
|
@ -439,6 +437,7 @@ void cViewChannel::ClearExtended(void) {
|
||||||
Clear((int)eVeDisplayChannel::grouplistback);
|
Clear((int)eVeDisplayChannel::grouplistback);
|
||||||
SetDirty((int)eVeDisplayChannel::grouplistback);
|
SetDirty((int)eVeDisplayChannel::grouplistback);
|
||||||
initExtended = true;
|
initExtended = true;
|
||||||
|
init = true;
|
||||||
ShowBasic();
|
ShowBasic();
|
||||||
}
|
}
|
||||||
//exit from group channel list to group list
|
//exit from group channel list to group list
|
||||||
|
@ -463,6 +462,7 @@ void cViewChannel::ClearExtended(void) {
|
||||||
SetDirty((int)eVeDisplayChannel::grouplistback);
|
SetDirty((int)eVeDisplayChannel::grouplistback);
|
||||||
SetDirty((int)eVeDisplayChannel::groupchannellistdetail);
|
SetDirty((int)eVeDisplayChannel::groupchannellistdetail);
|
||||||
initExtended = true;
|
initExtended = true;
|
||||||
|
init = true;
|
||||||
ShowBasic();
|
ShowBasic();
|
||||||
}
|
}
|
||||||
//exit from channel info to channel or group list
|
//exit from channel info to channel or group list
|
||||||
|
|
|
@ -108,6 +108,7 @@ void cViewMenu::SetViewElements(void) {
|
||||||
viewElementNames.insert(pair<string, int>("header", (int)eVeDisplayMenu::header));
|
viewElementNames.insert(pair<string, int>("header", (int)eVeDisplayMenu::header));
|
||||||
viewElementNames.insert(pair<string, int>("datetime", (int)eVeDisplayMenu::datetime));
|
viewElementNames.insert(pair<string, int>("datetime", (int)eVeDisplayMenu::datetime));
|
||||||
viewElementNames.insert(pair<string, int>("time", (int)eVeDisplayMenu::time));
|
viewElementNames.insert(pair<string, int>("time", (int)eVeDisplayMenu::time));
|
||||||
|
viewElementNames.insert(pair<string, int>("vdrstatus", (int)eVeDisplayMenu::vdrstatus));
|
||||||
viewElementNames.insert(pair<string, int>("colorbuttons", (int)eVeDisplayMenu::colorbuttons));
|
viewElementNames.insert(pair<string, int>("colorbuttons", (int)eVeDisplayMenu::colorbuttons));
|
||||||
viewElementNames.insert(pair<string, int>("message", (int)eVeDisplayMenu::message));
|
viewElementNames.insert(pair<string, int>("message", (int)eVeDisplayMenu::message));
|
||||||
viewElementNames.insert(pair<string, int>("scrollbar", (int)eVeDisplayMenu::scrollbar));
|
viewElementNames.insert(pair<string, int>("scrollbar", (int)eVeDisplayMenu::scrollbar));
|
||||||
|
@ -629,6 +630,7 @@ cSubView::cSubView(const char *name) {
|
||||||
header = NULL;
|
header = NULL;
|
||||||
datetime = NULL;
|
datetime = NULL;
|
||||||
time = NULL;
|
time = NULL;
|
||||||
|
vdrstatus = NULL;
|
||||||
message = NULL;
|
message = NULL;
|
||||||
sortmode = NULL;
|
sortmode = NULL;
|
||||||
colorbuttons = NULL;
|
colorbuttons = NULL;
|
||||||
|
@ -693,6 +695,10 @@ void cSubView::SetViewElement(eVeDisplayMenu ve, cViewElement *viewElement) {
|
||||||
if (!time)
|
if (!time)
|
||||||
time = dynamic_cast<cVeTime*>(viewElement);
|
time = dynamic_cast<cVeTime*>(viewElement);
|
||||||
break;
|
break;
|
||||||
|
case eVeDisplayMenu::vdrstatus:
|
||||||
|
if (!vdrstatus)
|
||||||
|
vdrstatus = dynamic_cast<cVeDmVdrstatus*>(viewElement);
|
||||||
|
break;
|
||||||
case eVeDisplayMenu::message:
|
case eVeDisplayMenu::message:
|
||||||
if (!message)
|
if (!message)
|
||||||
message = dynamic_cast<cVeMessage*>(viewElement);
|
message = dynamic_cast<cVeMessage*>(viewElement);
|
||||||
|
@ -735,6 +741,10 @@ void cSubView::SetViewElementHorizontal(eVeDisplayMenu ve, cViewElement *viewEle
|
||||||
if (!time)
|
if (!time)
|
||||||
time = dynamic_cast<cVeTime*>(viewElement);
|
time = dynamic_cast<cVeTime*>(viewElement);
|
||||||
break;
|
break;
|
||||||
|
case eVeDisplayMenu::vdrstatus:
|
||||||
|
if (!vdrstatus)
|
||||||
|
vdrstatus = dynamic_cast<cVeDmVdrstatus*>(viewElement);
|
||||||
|
break;
|
||||||
case eVeDisplayMenu::message:
|
case eVeDisplayMenu::message:
|
||||||
if (!message)
|
if (!message)
|
||||||
message = dynamic_cast<cVeMessage*>(viewElement);
|
message = dynamic_cast<cVeMessage*>(viewElement);
|
||||||
|
@ -866,6 +876,7 @@ void cSubView::Clear(void) {
|
||||||
if (background) background->Hide();
|
if (background) background->Hide();
|
||||||
if (datetime) datetime->Hide();
|
if (datetime) datetime->Hide();
|
||||||
if (time) time->Hide();
|
if (time) time->Hide();
|
||||||
|
if (vdrstatus) vdrstatus->Hide();
|
||||||
if (header) header->Hide();
|
if (header) header->Hide();
|
||||||
if (colorbuttons) colorbuttons->Hide();
|
if (colorbuttons) colorbuttons->Hide();
|
||||||
if (scrollbar) scrollbar->Hide();
|
if (scrollbar) scrollbar->Hide();
|
||||||
|
@ -902,6 +913,11 @@ void cSubView::DrawDynamicVEs(void) {
|
||||||
time->Render();
|
time->Render();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (vdrstatus) {
|
||||||
|
vdrstatus->Show();
|
||||||
|
if (vdrstatus->Parse())
|
||||||
|
vdrstatus->Render();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void cSubView::DrawList(void) {
|
void cSubView::DrawList(void) {
|
||||||
|
@ -949,6 +965,11 @@ void cSubView::SetViewElementObjects(void) {
|
||||||
else if (viewElements[(int)eVeDisplayMenu::time])
|
else if (viewElements[(int)eVeDisplayMenu::time])
|
||||||
time = dynamic_cast<cVeTime*>(viewElements[(int)eVeDisplayMenu::time]);
|
time = dynamic_cast<cVeTime*>(viewElements[(int)eVeDisplayMenu::time]);
|
||||||
|
|
||||||
|
if (orientation == eOrientation::horizontal && viewElementsHorizontal[(int)eVeDisplayMenu::vdrstatus])
|
||||||
|
vdrstatus = dynamic_cast<cVeDmVdrstatus*>(viewElementsHorizontal[(int)eVeDisplayMenu::vdrstatus]);
|
||||||
|
else if (viewElements[(int)eVeDisplayMenu::vdrstatus])
|
||||||
|
vdrstatus = dynamic_cast<cVeDmVdrstatus*>(viewElements[(int)eVeDisplayMenu::vdrstatus]);
|
||||||
|
|
||||||
if (orientation == eOrientation::horizontal && viewElementsHorizontal[(int)eVeDisplayMenu::message])
|
if (orientation == eOrientation::horizontal && viewElementsHorizontal[(int)eVeDisplayMenu::message])
|
||||||
message = dynamic_cast<cVeMessage*>(viewElementsHorizontal[(int)eVeDisplayMenu::message]);
|
message = dynamic_cast<cVeMessage*>(viewElementsHorizontal[(int)eVeDisplayMenu::message]);
|
||||||
else if (viewElements[(int)eVeDisplayMenu::message])
|
else if (viewElements[(int)eVeDisplayMenu::message])
|
||||||
|
@ -986,6 +1007,7 @@ void cSubView::SetViewElements(void) {
|
||||||
viewElementNames.insert(pair<string, int>("background", (int)eVeDisplayMenu::background));
|
viewElementNames.insert(pair<string, int>("background", (int)eVeDisplayMenu::background));
|
||||||
viewElementNames.insert(pair<string, int>("header", (int)eVeDisplayMenu::header));
|
viewElementNames.insert(pair<string, int>("header", (int)eVeDisplayMenu::header));
|
||||||
viewElementNames.insert(pair<string, int>("datetime", (int)eVeDisplayMenu::datetime));
|
viewElementNames.insert(pair<string, int>("datetime", (int)eVeDisplayMenu::datetime));
|
||||||
|
viewElementNames.insert(pair<string, int>("vdrstatus", (int)eVeDisplayMenu::vdrstatus));
|
||||||
viewElementNames.insert(pair<string, int>("time", (int)eVeDisplayMenu::time));
|
viewElementNames.insert(pair<string, int>("time", (int)eVeDisplayMenu::time));
|
||||||
viewElementNames.insert(pair<string, int>("colorbuttons", (int)eVeDisplayMenu::colorbuttons));
|
viewElementNames.insert(pair<string, int>("colorbuttons", (int)eVeDisplayMenu::colorbuttons));
|
||||||
viewElementNames.insert(pair<string, int>("message", (int)eVeDisplayMenu::message));
|
viewElementNames.insert(pair<string, int>("message", (int)eVeDisplayMenu::message));
|
||||||
|
@ -1059,6 +1081,7 @@ cViewMenuMain::cViewMenuMain(const char *name) : cSubView(name) {
|
||||||
load = NULL;
|
load = NULL;
|
||||||
memory = NULL;
|
memory = NULL;
|
||||||
vdrstats = NULL;
|
vdrstats = NULL;
|
||||||
|
vdrstatus = NULL;
|
||||||
temperatures = NULL;
|
temperatures = NULL;
|
||||||
currentSchedule = NULL;
|
currentSchedule = NULL;
|
||||||
lastRecordings = NULL;
|
lastRecordings = NULL;
|
||||||
|
@ -1084,6 +1107,7 @@ void cViewMenuMain::SetViewElements(void) {
|
||||||
viewElementNames.insert(pair<string, int>("systemload", (int)eVeDisplayMenuMain::systemload));
|
viewElementNames.insert(pair<string, int>("systemload", (int)eVeDisplayMenuMain::systemload));
|
||||||
viewElementNames.insert(pair<string, int>("systemmemory", (int)eVeDisplayMenuMain::systemmemory));
|
viewElementNames.insert(pair<string, int>("systemmemory", (int)eVeDisplayMenuMain::systemmemory));
|
||||||
viewElementNames.insert(pair<string, int>("vdrstatistics", (int)eVeDisplayMenuMain::vdrstatistics));
|
viewElementNames.insert(pair<string, int>("vdrstatistics", (int)eVeDisplayMenuMain::vdrstatistics));
|
||||||
|
viewElementNames.insert(pair<string, int>("vdrstatus", (int)eVeDisplayMenuMain::vdrstatus));
|
||||||
viewElementNames.insert(pair<string, int>("temperatures", (int)eVeDisplayMenuMain::temperatures));
|
viewElementNames.insert(pair<string, int>("temperatures", (int)eVeDisplayMenuMain::temperatures));
|
||||||
viewElementNames.insert(pair<string, int>("lastrecordings", (int)eVeDisplayMenuMain::lastrecordings));
|
viewElementNames.insert(pair<string, int>("lastrecordings", (int)eVeDisplayMenuMain::lastrecordings));
|
||||||
viewElementNames.insert(pair<string, int>("customtokens", (int)eVeDisplayMenuMain::customtokens));
|
viewElementNames.insert(pair<string, int>("customtokens", (int)eVeDisplayMenuMain::customtokens));
|
||||||
|
@ -1133,6 +1157,11 @@ void cViewMenuMain::SetViewElementObjects(void) {
|
||||||
else if (viewElements[(int)eVeDisplayMenuMain::vdrstatistics])
|
else if (viewElements[(int)eVeDisplayMenuMain::vdrstatistics])
|
||||||
vdrstats = dynamic_cast<cVeDmVdrstatistics*>(viewElements[(int)eVeDisplayMenuMain::vdrstatistics]);
|
vdrstats = dynamic_cast<cVeDmVdrstatistics*>(viewElements[(int)eVeDisplayMenuMain::vdrstatistics]);
|
||||||
|
|
||||||
|
if (orientation == eOrientation::horizontal && viewElementsHorizontal[(int)eVeDisplayMenuMain::vdrstatus])
|
||||||
|
vdrstatus = dynamic_cast<cVeDmVdrstatus*>(viewElementsHorizontal[(int)eVeDisplayMenuMain::vdrstatus]);
|
||||||
|
else if (viewElements[(int)eVeDisplayMenuMain::vdrstatus])
|
||||||
|
vdrstatus = dynamic_cast<cVeDmVdrstatus*>(viewElements[(int)eVeDisplayMenuMain::vdrstatus]);
|
||||||
|
|
||||||
if (orientation == eOrientation::horizontal && viewElementsHorizontal[(int)eVeDisplayMenuMain::temperatures])
|
if (orientation == eOrientation::horizontal && viewElementsHorizontal[(int)eVeDisplayMenuMain::temperatures])
|
||||||
temperatures = dynamic_cast<cVeDmTemperatures*>(viewElementsHorizontal[(int)eVeDisplayMenuMain::temperatures]);
|
temperatures = dynamic_cast<cVeDmTemperatures*>(viewElementsHorizontal[(int)eVeDisplayMenuMain::temperatures]);
|
||||||
else if (viewElements[(int)eVeDisplayMenuMain::temperatures])
|
else if (viewElements[(int)eVeDisplayMenuMain::temperatures])
|
||||||
|
@ -1154,6 +1183,7 @@ void cViewMenuMain::SetViewElementObjects(void) {
|
||||||
if (load) load->SetDetached();
|
if (load) load->SetDetached();
|
||||||
if (memory) memory->SetDetached();
|
if (memory) memory->SetDetached();
|
||||||
if (vdrstats) vdrstats->SetDetached();
|
if (vdrstats) vdrstats->SetDetached();
|
||||||
|
if (vdrstatus) vdrstatus->SetDetached();
|
||||||
if (temperatures) temperatures->SetDetached();
|
if (temperatures) temperatures->SetDetached();
|
||||||
if (timers) timers->SetDetached();
|
if (timers) timers->SetDetached();
|
||||||
if (currentSchedule) currentSchedule->SetDetached();
|
if (currentSchedule) currentSchedule->SetDetached();
|
||||||
|
@ -1190,6 +1220,10 @@ void cViewMenuMain::Clear(void) {
|
||||||
vdrstats->Reset();
|
vdrstats->Reset();
|
||||||
vdrstats->Hide();
|
vdrstats->Hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (vdrstatus) {
|
||||||
|
vdrstatus->Hide();
|
||||||
|
}
|
||||||
|
|
||||||
if (temperatures) {
|
if (temperatures) {
|
||||||
temperatures->Reset();
|
temperatures->Reset();
|
||||||
|
@ -1235,11 +1269,6 @@ void cViewMenuMain::DrawStaticVEs(void) {
|
||||||
if (discusage->Parse())
|
if (discusage->Parse())
|
||||||
discusage->Render();
|
discusage->Render();
|
||||||
}
|
}
|
||||||
if (timers) {
|
|
||||||
timers->Show();
|
|
||||||
if (timers->Parse())
|
|
||||||
timers->Render();
|
|
||||||
}
|
|
||||||
if (currentSchedule) {
|
if (currentSchedule) {
|
||||||
currentSchedule->Show();
|
currentSchedule->Show();
|
||||||
if (currentSchedule->Parse())
|
if (currentSchedule->Parse())
|
||||||
|
@ -1263,6 +1292,11 @@ void cViewMenuMain::DrawDynamicVEs(void) {
|
||||||
lastDrawDynamic = now;
|
lastDrawDynamic = now;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (timers) {
|
||||||
|
timers->Show();
|
||||||
|
if (timers->Parse())
|
||||||
|
timers->Render();
|
||||||
|
}
|
||||||
if (devices) {
|
if (devices) {
|
||||||
devices->Show();
|
devices->Show();
|
||||||
if (devices->Parse())
|
if (devices->Parse())
|
||||||
|
@ -1283,6 +1317,11 @@ void cViewMenuMain::DrawDynamicVEs(void) {
|
||||||
if (vdrstats->Parse())
|
if (vdrstats->Parse())
|
||||||
vdrstats->Render();
|
vdrstats->Render();
|
||||||
}
|
}
|
||||||
|
if (vdrstatus) {
|
||||||
|
vdrstatus->Show();
|
||||||
|
if (vdrstatus->Parse())
|
||||||
|
vdrstatus->Render();
|
||||||
|
}
|
||||||
if (temperatures) {
|
if (temperatures) {
|
||||||
temperatures->Show();
|
temperatures->Show();
|
||||||
if (temperatures->Parse())
|
if (temperatures->Parse())
|
||||||
|
@ -1608,6 +1647,11 @@ void cViewMenuDetail::DrawDynamicVEs(void) {
|
||||||
if (time->Parse())
|
if (time->Parse())
|
||||||
time->Render();
|
time->Render();
|
||||||
}
|
}
|
||||||
|
if (vdrstatus) {
|
||||||
|
vdrstatus->Show();
|
||||||
|
if (vdrstatus->Parse())
|
||||||
|
vdrstatus->Render();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void cViewMenuDetail::DrawDetailedView(void) {
|
void cViewMenuDetail::DrawDetailedView(void) {
|
||||||
|
|
|
@ -120,6 +120,7 @@ protected:
|
||||||
cVeDmHeader *header;
|
cVeDmHeader *header;
|
||||||
cVeDateTime *datetime;
|
cVeDateTime *datetime;
|
||||||
cVeTime *time;
|
cVeTime *time;
|
||||||
|
cVeDmVdrstatus *vdrstatus;
|
||||||
cVeMessage *message;
|
cVeMessage *message;
|
||||||
cVeDmSortmode *sortmode;
|
cVeDmSortmode *sortmode;
|
||||||
cVeDmColorbuttons *colorbuttons;
|
cVeDmColorbuttons *colorbuttons;
|
||||||
|
@ -188,6 +189,7 @@ private:
|
||||||
cVeDmSystemload *load;
|
cVeDmSystemload *load;
|
||||||
cVeDmSystemmemory *memory;
|
cVeDmSystemmemory *memory;
|
||||||
cVeDmVdrstatistics *vdrstats;
|
cVeDmVdrstatistics *vdrstats;
|
||||||
|
cVeDmVdrstatus *vdrstatus;
|
||||||
cVeDmTemperatures *temperatures;
|
cVeDmTemperatures *temperatures;
|
||||||
cVeDmCurrentschedule *currentSchedule;
|
cVeDmCurrentschedule *currentSchedule;
|
||||||
cVeDmLastrecordings *lastRecordings;
|
cVeDmLastrecordings *lastRecordings;
|
||||||
|
@ -322,4 +324,4 @@ public:
|
||||||
void SetTransparency(int transparency, bool forceDetached = false);
|
void SetTransparency(int transparency, bool forceDetached = false);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif //__VIEWDISPLAYMENU_H
|
#endif //__VIEWDISPLAYMENU_H
|
||||||
|
|
|
@ -165,8 +165,6 @@ void cViewReplay::ClearVariables(void) {
|
||||||
veTimeshiftTimes->Set(cString(""), cString(""), cString(""));
|
veTimeshiftTimes->Set(cString(""), cString(""), cString(""));
|
||||||
if (veEndTime)
|
if (veEndTime)
|
||||||
veEndTime->Set(cString(""));
|
veEndTime->Set(cString(""));
|
||||||
if (veCutMarks)
|
|
||||||
veCutMarks->Reset();
|
|
||||||
timersLoaded = false;
|
timersLoaded = false;
|
||||||
globalTimers.ClearTimers();
|
globalTimers.ClearTimers();
|
||||||
}
|
}
|
||||||
|
@ -179,9 +177,9 @@ void cViewReplay::GetGlobalTimers(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void cViewReplay::SetTimeShiftValues(int current, int total) {
|
void cViewReplay::SetTimeShiftValues(int current, int total) {
|
||||||
|
timeShiftActive = NoRec;
|
||||||
if (!recording)
|
if (!recording)
|
||||||
return;
|
return;
|
||||||
timeShiftActive = NoRec;
|
|
||||||
#if APIVERSNUM >= 20101
|
#if APIVERSNUM >= 20101
|
||||||
int usage = recording->IsInUse();
|
int usage = recording->IsInUse();
|
||||||
if (usage & ruTimer)
|
if (usage & ruTimer)
|
||||||
|
@ -315,8 +313,9 @@ void cViewReplay::SetProgressbar(int current, int total) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void cViewReplay::SetMarks(const cMarks *marks, int current, int total) {
|
void cViewReplay::SetMarks(const cMarks *marks, int current, int total) {
|
||||||
if (veCutMarks)
|
if (!veCutMarks)
|
||||||
veCutMarks->Set(marks, current, total, timeShiftActive, timeShiftFramesTotal);
|
return;
|
||||||
|
veCutMarks->Set(marks, current, total, timeShiftActive, timeShiftFramesTotal);
|
||||||
Render((int)eVeDisplayReplay::cutmarks);
|
Render((int)eVeDisplayReplay::cutmarks);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -147,6 +147,8 @@ cViewElement *cViewElement::CreateViewElement(const char *name, const char *view
|
||||||
e = new cVeDmTemperatures();
|
e = new cVeDmTemperatures();
|
||||||
else if (!strcmp(name, "vdrstatistics"))
|
else if (!strcmp(name, "vdrstatistics"))
|
||||||
e = new cVeDmVdrstatistics();
|
e = new cVeDmVdrstatistics();
|
||||||
|
else if (!strcmp(name, "vdrstatus"))
|
||||||
|
e = new cVeDmVdrstatus();
|
||||||
else if (!strcmp(name, "lastrecordings"))
|
else if (!strcmp(name, "lastrecordings"))
|
||||||
e = new cVeDmLastrecordings();
|
e = new cVeDmLastrecordings();
|
||||||
else if (!strcmp(name, "detailheaderepg"))
|
else if (!strcmp(name, "detailheaderepg"))
|
||||||
|
@ -585,77 +587,118 @@ void cViewElement::StopAnimation(void) {
|
||||||
/******************************************************************
|
/******************************************************************
|
||||||
* helper function (did not find any other common place)
|
* helper function (did not find any other common place)
|
||||||
******************************************************************/
|
******************************************************************/
|
||||||
bool RecordingIsHD(const cEvent* event) {
|
bool RecordingIsHD(const cEvent* event, const tChannelID channelID) {
|
||||||
// detect HD from 'info'
|
// detect HD from 'info'
|
||||||
bool isHD = false;
|
bool isHD = false;
|
||||||
cComponents *Components = (cComponents *)event->Components();
|
int type = -1;
|
||||||
if (Components) {
|
|
||||||
// detect HD (see also ETSI EN 300 468)
|
|
||||||
// Stream: 1 = MPEG2-Video, 2 = MPEG2 Audio, 3 = Untertitel, 4 = AC3-Audio, 5 = H.264-Video, 6 = HEAAC-Audio, 7 = DTS/DTS HD audio, 8 = SRM/CPCM data, 9 = HEVC Video, AC4 Audio
|
|
||||||
// Stream == Video(1|5): 01 = 05 = 4:3, 02 = 03 = 06 = 07 = 16:9, 04 = 08 = >16:9, 09 = 0D = HD 4:3, 0A = 0B = 0E = 0F = HD 16:9, 0C = 10 = HD >16:9
|
|
||||||
|
|
||||||
tComponent *Component;
|
if (event) {
|
||||||
int type = -1;
|
cComponents *Components = (cComponents *)event->Components();
|
||||||
|
if (Components) {
|
||||||
|
// detect HD (see also ETSI EN 300 468)
|
||||||
|
// Stream: 1 = MPEG2-Video, 2 = MPEG2 Audio, 3 = Untertitel, 4 = AC3-Audio, 5 = H.264-Video, 6 = HEAAC-Audio, 7 = DTS/DTS HD audio, 8 = SRM/CPCM data, 9 = HEVC Video, AC4 Audio
|
||||||
|
// Stream == Video(1|5): 01 = 05 = 4:3, 02 = 03 = 06 = 07 = 16:9, 04 = 08 = >16:9, 09 = 0D = HD 4:3, 0A = 0B = 0E = 0F = HD 16:9, 0C = 10 = HD >16:9
|
||||||
|
|
||||||
// #1: HVEC (stream content: 9)
|
tComponent *Component;
|
||||||
Component = Components->GetComponent(0, 9, 0); // recording info: "X 9 <type>"
|
// #1: HVEC (stream content: 9)
|
||||||
if (Component) {
|
Component = Components->GetComponent(0, 9, 0); // recording info: "X 9 <type>"
|
||||||
isHD = true; // HVEC is always HD, type 4|5|6|7 would be even UHD (see below dedicated detection function)
|
if (Component) {
|
||||||
} else {
|
isHD = true; // HVEC is always HD, type 4|5|6|7 would be even UHD (see below dedicated detection function)
|
||||||
// #2: H.264 (stream content: 5)
|
} else {
|
||||||
Component = Components->GetComponent(0, 5, 0); // recording info: "X 5 <type>"
|
// #2: H.264 (stream content: 5)
|
||||||
if (Component) {
|
Component = Components->GetComponent(0, 5, 0); // recording info: "X 5 <type>"
|
||||||
type = Component->type;
|
if (Component) {
|
||||||
} else {
|
type = Component->type;
|
||||||
// #3: MPEG2 (stream content: 1)
|
} else {
|
||||||
Component = Components->GetComponent(0, 1, 0); // recording info: "X 1 <type>"
|
// #3: MPEG2 (stream content: 1)
|
||||||
if (Component) {
|
Component = Components->GetComponent(0, 1, 0); // recording info: "X 1 <type>"
|
||||||
type = Component->type;
|
if (Component) {
|
||||||
};
|
type = Component->type;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
};
|
||||||
|
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case 0x09:
|
case 0x09:
|
||||||
case 0x0A:
|
case 0x0A:
|
||||||
case 0x0B:
|
case 0x0B:
|
||||||
case 0x0C:
|
case 0x0C:
|
||||||
case 0x0D:
|
case 0x0D:
|
||||||
case 0x0E:
|
case 0x0E:
|
||||||
case 0x0F:
|
case 0x0F:
|
||||||
case 0x10:
|
case 0x10:
|
||||||
isHD = true;
|
isHD = true;
|
||||||
};
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if ((isHD == false) && (type == -1) && (!(channelID == tChannelID::InvalidID))) {
|
||||||
|
// fallback to retrieve via channel (in case of EPG issues)
|
||||||
|
#if defined (APIVERSNUM) && (APIVERSNUM >= 20301)
|
||||||
|
LOCK_CHANNELS_READ;
|
||||||
|
const cChannel *channel = Channels->GetByChannelID(channelID);
|
||||||
|
#else
|
||||||
|
const cChannel *channel = Channels.GetByChannelID(channelID);
|
||||||
|
#endif
|
||||||
|
if (channel) {
|
||||||
|
switch (channel->Vtype()) {
|
||||||
|
case 0x1b: // H.264
|
||||||
|
case 0x24: // H.265
|
||||||
|
isHD = true;
|
||||||
|
break;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
return isHD;
|
return isHD;
|
||||||
};
|
};
|
||||||
|
|
||||||
bool RecordingIsUHD(const cEvent* event) {
|
bool RecordingIsUHD(const cEvent* event, const tChannelID channelID) {
|
||||||
// detect UHD from 'info'
|
// detect UHD from 'info'
|
||||||
bool isUHD = false;
|
bool isUHD = false;
|
||||||
cComponents *Components = (cComponents *)event->Components();
|
int type = -1;
|
||||||
if (Components) {
|
|
||||||
// detect UHD (see also ETSI EN 300 468)
|
|
||||||
// Stream: 9 = HEVC Video, AC4 Audio
|
|
||||||
// Stream == Video(9): 00|01|02|03 = HD, 04|05|06|07 = UHD
|
|
||||||
|
|
||||||
tComponent *Component;
|
if (event) {
|
||||||
int type = -1;
|
cComponents *Components = (cComponents *)event->Components();
|
||||||
|
if (Components) {
|
||||||
|
// detect UHD (see also ETSI EN 300 468)
|
||||||
|
// Stream: 9 = HEVC Video, AC4 Audio
|
||||||
|
// Stream == Video(9): 00|01|02|03 = HD, 04|05|06|07 = UHD
|
||||||
|
|
||||||
// HVEC (stream content: 9)
|
tComponent *Component;
|
||||||
Component = Components->GetComponent(0, 9, 0); // recording info: "X 9 <type>"
|
// HVEC (stream content: 9)
|
||||||
if (Component) {
|
Component = Components->GetComponent(0, 9, 0); // recording info: "X 9 <type>"
|
||||||
type = Component->type;
|
if (Component) {
|
||||||
};
|
type = Component->type;
|
||||||
|
};
|
||||||
|
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case 0x04:
|
case 0x04:
|
||||||
case 0x05:
|
case 0x05:
|
||||||
case 0x06:
|
case 0x06:
|
||||||
case 0x07:
|
case 0x07:
|
||||||
isUHD = true;
|
isUHD = true;
|
||||||
};
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if ((isUHD == false) && (type == -1) && (!(channelID == tChannelID::InvalidID))) {
|
||||||
|
// fallback to retrieve via channel (in case of EPG issues)
|
||||||
|
#if defined (APIVERSNUM) && (APIVERSNUM >= 20301)
|
||||||
|
LOCK_CHANNELS_READ;
|
||||||
|
const cChannel *channel = Channels->GetByChannelID(channelID);
|
||||||
|
#else
|
||||||
|
const cChannel *channel = Channels.GetByChannelID(channelID);
|
||||||
|
#endif
|
||||||
|
if (channel) {
|
||||||
|
switch (channel->Vtype()) {
|
||||||
|
case 0x24: // H.265
|
||||||
|
isUHD = true;
|
||||||
|
break;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
return isUHD;
|
return isUHD;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -667,50 +710,50 @@ bool RecordingIsRadio(const cEvent* event, const double FramesPerSecond) {
|
||||||
|
|
||||||
cComponents *Components = (cComponents *)event->Components();
|
cComponents *Components = (cComponents *)event->Components();
|
||||||
if (Components) {
|
if (Components) {
|
||||||
// Stream: 1 = MPEG2-Video, 2 = MPEG2 Audio, 3 = Untertitel, 4 = AC3-Audio, 5 = H.264-Video, 6 = HEAAC-Audio, 7 = DTS/DTS HD audio, 8 = SRM/CPCM data, 9 = HEVC Video, AC4 Audio
|
// Stream: 1 = MPEG2-Video, 2 = MPEG2 Audio, 3 = Untertitel, 4 = AC3-Audio, 5 = H.264-Video, 6 = HEAAC-Audio, 7 = DTS/DTS HD audio, 8 = SRM/CPCM data, 9 = HEVC Video, AC4 Audio
|
||||||
|
|
||||||
tComponent *Component;
|
tComponent *Component;
|
||||||
|
|
||||||
Component = Components->GetComponent(0, 2, 0); // recording info: "X 2 <type>"
|
Component = Components->GetComponent(0, 2, 0); // recording info: "X 2 <type>"
|
||||||
if (Component) {
|
if (Component) {
|
||||||
hasAudio = true;
|
hasAudio = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
Component = Components->GetComponent(0, 4, 0); // recording info: "X 4 <type>"
|
Component = Components->GetComponent(0, 4, 0); // recording info: "X 4 <type>"
|
||||||
if (Component) {
|
if (Component) {
|
||||||
hasAudio = true;
|
hasAudio = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
Component = Components->GetComponent(0, 6, 0); // recording info: "X 6 <type>"
|
Component = Components->GetComponent(0, 6, 0); // recording info: "X 6 <type>"
|
||||||
if (Component) {
|
if (Component) {
|
||||||
hasAudio = true;
|
hasAudio = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
Component = Components->GetComponent(0, 7, 0); // recording info: "X 7 <type>"
|
Component = Components->GetComponent(0, 7, 0); // recording info: "X 7 <type>"
|
||||||
if (Component) {
|
if (Component) {
|
||||||
hasAudio = true;
|
hasAudio = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
Component = Components->GetComponent(0, 1, 0); // recording info: "X 1 <type>"
|
Component = Components->GetComponent(0, 1, 0); // recording info: "X 1 <type>"
|
||||||
if (Component) {
|
if (Component) {
|
||||||
hasVideo = true;
|
hasVideo = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
Component = Components->GetComponent(0, 5, 0); // recording info: "X 5 <type>"
|
Component = Components->GetComponent(0, 5, 0); // recording info: "X 5 <type>"
|
||||||
if (Component) {
|
if (Component) {
|
||||||
hasVideo = true;
|
hasVideo = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
Component = Components->GetComponent(0, 9, 0); // recording info: "X 9 <type>"
|
Component = Components->GetComponent(0, 9, 0); // recording info: "X 9 <type>"
|
||||||
if (Component) {
|
if (Component) {
|
||||||
hasVideo = true;
|
hasVideo = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
if ((hasAudio == true) && (hasVideo == false)) {
|
if ((hasAudio == true) && (hasVideo == false)) {
|
||||||
if (FramesPerSecond < 24) { // workaround for issue of missing "X 1" on some SD channels (e.g. RTL)
|
if (FramesPerSecond < 24) { // workaround for issue of missing "X 1" on some SD channels (e.g. RTL)
|
||||||
isRadio = true;
|
isRadio = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
return isRadio;
|
return isRadio;
|
||||||
|
|
|
@ -113,8 +113,8 @@ public:
|
||||||
/******************************************************************
|
/******************************************************************
|
||||||
* helper function (did not find any other common place)
|
* helper function (did not find any other common place)
|
||||||
******************************************************************/
|
******************************************************************/
|
||||||
bool RecordingIsHD(const cEvent* event);
|
bool RecordingIsHD(const cEvent* event, const tChannelID channelID);
|
||||||
bool RecordingIsUHD(const cEvent* event);
|
bool RecordingIsUHD(const cEvent* event, const tChannelID channelID);
|
||||||
bool RecordingIsRadio(const cEvent* event, const double FramesPerSecond);
|
bool RecordingIsRadio(const cEvent* event, const double FramesPerSecond);
|
||||||
|
|
||||||
#endif //__VIEWELEMENT_H
|
#endif //__VIEWELEMENT_H
|
||||||
|
|
|
@ -160,12 +160,12 @@ bool cVeMessage::Parse(bool forced) {
|
||||||
* cVeDevices
|
* cVeDevices
|
||||||
******************************************************************/
|
******************************************************************/
|
||||||
cVeDevices::cVeDevices(void) {
|
cVeDevices::cVeDevices(void) {
|
||||||
lastRefresh = 0;
|
|
||||||
initial = true;
|
initial = true;
|
||||||
devicesIndex = -1;
|
devicesIndex = -1;
|
||||||
lastSignalStrength = NULL;
|
lastSignalStrength = NULL;
|
||||||
lastSignalQuality = NULL;
|
lastSignalQuality = NULL;
|
||||||
recDevices = NULL;
|
recDevices = NULL;
|
||||||
|
lastRecDevices = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
cVeDevices::~cVeDevices(void) {
|
cVeDevices::~cVeDevices(void) {
|
||||||
|
@ -176,6 +176,8 @@ cVeDevices::~cVeDevices(void) {
|
||||||
lastSignalQuality = NULL;
|
lastSignalQuality = NULL;
|
||||||
delete[] recDevices;
|
delete[] recDevices;
|
||||||
recDevices = NULL;
|
recDevices = NULL;
|
||||||
|
delete[] lastRecDevices;
|
||||||
|
lastRecDevices = NULL;
|
||||||
mutexDevices.Unlock();
|
mutexDevices.Unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -193,11 +195,13 @@ void cVeDevices::Init(void) {
|
||||||
lastSignalStrength = new int[numDevices];
|
lastSignalStrength = new int[numDevices];
|
||||||
lastSignalQuality = new int[numDevices];
|
lastSignalQuality = new int[numDevices];
|
||||||
recDevices = new bool[numDevices];
|
recDevices = new bool[numDevices];
|
||||||
|
lastRecDevices = new bool[numDevices];
|
||||||
mutexDevices.Lock();
|
mutexDevices.Lock();
|
||||||
for (int i=0; i<numDevices; i++) {
|
for (int i=0; i<numDevices; i++) {
|
||||||
lastSignalStrength[i] = 0;
|
lastSignalStrength[i] = 0;
|
||||||
lastSignalQuality[i] = 0;
|
lastSignalQuality[i] = 0;
|
||||||
recDevices[i] = false;
|
recDevices[i] = false;
|
||||||
|
lastRecDevices[i] = false;
|
||||||
}
|
}
|
||||||
mutexDevices.Unlock();
|
mutexDevices.Unlock();
|
||||||
}
|
}
|
||||||
|
@ -205,7 +209,6 @@ void cVeDevices::Init(void) {
|
||||||
void cVeDevices::Close(void) {
|
void cVeDevices::Close(void) {
|
||||||
devices.clear();
|
devices.clear();
|
||||||
initial = true;
|
initial = true;
|
||||||
lastRefresh = 0;
|
|
||||||
numDevices = 0;
|
numDevices = 0;
|
||||||
mutexDevices.Lock();
|
mutexDevices.Lock();
|
||||||
delete[] lastSignalStrength;
|
delete[] lastSignalStrength;
|
||||||
|
@ -214,6 +217,8 @@ void cVeDevices::Close(void) {
|
||||||
lastSignalQuality = NULL;
|
lastSignalQuality = NULL;
|
||||||
delete[] recDevices;
|
delete[] recDevices;
|
||||||
recDevices = NULL;
|
recDevices = NULL;
|
||||||
|
delete[] lastRecDevices;
|
||||||
|
lastRecDevices = NULL;
|
||||||
mutexDevices.Unlock();
|
mutexDevices.Unlock();
|
||||||
cViewElement::Close();
|
cViewElement::Close();
|
||||||
}
|
}
|
||||||
|
@ -243,17 +248,17 @@ void cVeDevices::SetTokenContainer(void) {
|
||||||
bool cVeDevices::Parse(bool forced) {
|
bool cVeDevices::Parse(bool forced) {
|
||||||
if (!cViewElement::Parse(forced))
|
if (!cViewElement::Parse(forced))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
bool changed = false;
|
||||||
if (initial) {
|
if (initial) {
|
||||||
Init();
|
Init();
|
||||||
initial = false;
|
initial = false;
|
||||||
|
changed = true;
|
||||||
} else {
|
} else {
|
||||||
//in light modus content is static
|
//in light modus content is static
|
||||||
if (light)
|
if (light)
|
||||||
return false;
|
return false;
|
||||||
//check if drawing is necessary
|
|
||||||
if (cTimeMs::Now() - lastRefresh < 500)
|
|
||||||
return false;
|
|
||||||
bool changed = false;
|
|
||||||
for (int i = 0; i < numDevices; i++) {
|
for (int i = 0; i < numDevices; i++) {
|
||||||
const cDevice *device = cDevice::GetDevice(devices[i]);
|
const cDevice *device = cDevice::GetDevice(devices[i]);
|
||||||
if (!device || !device->NumProvidedSystems()) {
|
if (!device || !device->NumProvidedSystems()) {
|
||||||
|
@ -272,22 +277,15 @@ bool cVeDevices::Parse(bool forced) {
|
||||||
if ((signalStrength != lastSigStr) || (signalQuality != lastSigQual)) {
|
if ((signalStrength != lastSigStr) || (signalQuality != lastSigQual)) {
|
||||||
changed = true;
|
changed = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if (!changed) {
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//check device which currently displays live tv
|
// reset recording devices
|
||||||
int deviceLiveTV = -1;
|
for (int i = 0; i < numDevices; i++) {
|
||||||
cDevice *primaryDevice = cDevice::PrimaryDevice();
|
recDevices[i] = false;
|
||||||
if (primaryDevice) {
|
|
||||||
if (!primaryDevice->Replaying() || primaryDevice->Transferring())
|
|
||||||
deviceLiveTV = cDevice::ActualDevice()->DeviceNumber();
|
|
||||||
else
|
|
||||||
deviceLiveTV = primaryDevice->DeviceNumber();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// check currently recording devices
|
// check currently recording devices
|
||||||
// BLOCK for LOCK_TIMERS_READ scope !!
|
// BLOCK for LOCK_TIMERS_READ scope !!
|
||||||
{
|
{
|
||||||
|
@ -305,12 +303,40 @@ bool cVeDevices::Parse(bool forced) {
|
||||||
const cDevice *recDevice = RecordControl->Device();
|
const cDevice *recDevice = RecordControl->Device();
|
||||||
if (recDevice) {
|
if (recDevice) {
|
||||||
mutexDevices.Lock();
|
mutexDevices.Lock();
|
||||||
if (recDevices)
|
if (recDevices) {
|
||||||
recDevices[recDevice->DeviceNumber()] = true;
|
int d = recDevice->DeviceNumber();
|
||||||
|
for (int i = 0; i < numDevices; i++) {
|
||||||
|
if (devices[i] == d) {
|
||||||
|
recDevices[i] = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
mutexDevices.Unlock();
|
mutexDevices.Unlock();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} // LOCK_TIMERS_READ
|
||||||
|
|
||||||
|
for (int i = 0; i < numDevices; i++) {
|
||||||
|
if (recDevices[i] != lastRecDevices[i]) {
|
||||||
|
lastRecDevices[i] = recDevices[i];
|
||||||
|
changed = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!changed) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//check device which currently displays live tv
|
||||||
|
int deviceLiveTV = -1;
|
||||||
|
cDevice *primaryDevice = cDevice::PrimaryDevice();
|
||||||
|
if (primaryDevice) {
|
||||||
|
if (!primaryDevice->Replaying() || primaryDevice->Transferring())
|
||||||
|
deviceLiveTV = cDevice::ActualDevice()->DeviceNumber();
|
||||||
|
else
|
||||||
|
deviceLiveTV = primaryDevice->DeviceNumber();
|
||||||
}
|
}
|
||||||
|
|
||||||
//create loop container
|
//create loop container
|
||||||
|
@ -347,14 +373,8 @@ bool cVeDevices::Parse(bool forced) {
|
||||||
}
|
}
|
||||||
tokenContainer->AddLoopToken(devicesIndex, i, (int)eDevicesLT::signalstrength, *cString::sprintf("%d", signalStrength));
|
tokenContainer->AddLoopToken(devicesIndex, i, (int)eDevicesLT::signalstrength, *cString::sprintf("%d", signalStrength));
|
||||||
tokenContainer->AddLoopToken(devicesIndex, i, (int)eDevicesLT::signalquality, *cString::sprintf("%d", signalQuality));
|
tokenContainer->AddLoopToken(devicesIndex, i, (int)eDevicesLT::signalquality, *cString::sprintf("%d", signalQuality));
|
||||||
tokenContainer->AddLoopToken(devicesIndex, i, (int)eDevicesLT::livetv, i == deviceLiveTV ? "1" : "0");
|
tokenContainer->AddLoopToken(devicesIndex, i, (int)eDevicesLT::livetv, devices[i] == deviceLiveTV ? "1" : "0");
|
||||||
|
tokenContainer->AddLoopToken(devicesIndex, i, (int)eDevicesLT::recording, (recDevices && recDevices[i]) ? "1" : "0");
|
||||||
bool isRecording = false;
|
|
||||||
mutexDevices.Lock();
|
|
||||||
if (recDevices && recDevices[i])
|
|
||||||
isRecording = true;
|
|
||||||
mutexDevices.Unlock();
|
|
||||||
tokenContainer->AddLoopToken(devicesIndex, i, (int)eDevicesLT::recording, isRecording ? "1" : "0");
|
|
||||||
|
|
||||||
const cChannel *channel = device->GetCurrentlyTunedTransponder();
|
const cChannel *channel = device->GetCurrentlyTunedTransponder();
|
||||||
const cSource *source = (channel) ? Sources.Get(channel->Source()) : NULL;
|
const cSource *source = (channel) ? Sources.Get(channel->Source()) : NULL;
|
||||||
|
@ -380,7 +400,6 @@ bool cVeDevices::Parse(bool forced) {
|
||||||
}
|
}
|
||||||
|
|
||||||
SetDirty();
|
SetDirty();
|
||||||
lastRefresh = cTimeMs::Now();
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
/******************************************************************
|
/******************************************************************
|
||||||
|
|
|
@ -51,7 +51,6 @@ public:
|
||||||
class cVeDevices : public cViewElement {
|
class cVeDevices : public cViewElement {
|
||||||
private:
|
private:
|
||||||
bool light;
|
bool light;
|
||||||
time_t lastRefresh;
|
|
||||||
vector<int> devices;
|
vector<int> devices;
|
||||||
bool initial;
|
bool initial;
|
||||||
int devicesIndex;
|
int devicesIndex;
|
||||||
|
@ -60,6 +59,7 @@ private:
|
||||||
int* lastSignalStrength;
|
int* lastSignalStrength;
|
||||||
int* lastSignalQuality;
|
int* lastSignalQuality;
|
||||||
bool* recDevices;
|
bool* recDevices;
|
||||||
|
bool* lastRecDevices;
|
||||||
void Init(void);
|
void Init(void);
|
||||||
public:
|
public:
|
||||||
cVeDevices(void);
|
cVeDevices(void);
|
||||||
|
@ -107,4 +107,4 @@ public:
|
||||||
void Set(int current, int total, bool mute);
|
void Set(int current, int total, bool mute);
|
||||||
bool Parse(bool forced = false);
|
bool Parse(bool forced = false);
|
||||||
};
|
};
|
||||||
#endif //__VIEWELEMENTSCOMMON_H
|
#endif //__VIEWELEMENTSCOMMON_H
|
||||||
|
|
|
@ -112,6 +112,8 @@ const char *cVeDcChannelGroup::GetChannelSep(const cChannel *c, bool prev) {
|
||||||
******************************************************************/
|
******************************************************************/
|
||||||
cVeDcEpgInfo::cVeDcEpgInfo(void) {
|
cVeDcEpgInfo::cVeDcEpgInfo(void) {
|
||||||
globalTimers = NULL;
|
globalTimers = NULL;
|
||||||
|
current = NULL;
|
||||||
|
next = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
cVeDcEpgInfo::~cVeDcEpgInfo(void) {
|
cVeDcEpgInfo::~cVeDcEpgInfo(void) {
|
||||||
|
@ -141,50 +143,74 @@ void cVeDcEpgInfo::SetTokenContainer(void) {
|
||||||
InheritTokenContainer();
|
InheritTokenContainer();
|
||||||
}
|
}
|
||||||
|
|
||||||
void cVeDcEpgInfo::Set(const cEvent *p, const cEvent *f) {
|
bool cVeDcEpgInfo::Parse(bool force) {
|
||||||
|
if (!cViewElement::Parse(force))
|
||||||
|
return false;
|
||||||
tokenContainer->Clear();
|
tokenContainer->Clear();
|
||||||
if (p) {
|
if (current) {
|
||||||
tokenContainer->AddStringToken((int)eDCEpgInfoST::currenttitle, p->Title());
|
tokenContainer->AddStringToken((int)eDCEpgInfoST::currenttitle, current->Title());
|
||||||
tokenContainer->AddStringToken((int)eDCEpgInfoST::currentsubtitle, p->ShortText());
|
tokenContainer->AddStringToken((int)eDCEpgInfoST::currentsubtitle, current->ShortText());
|
||||||
tokenContainer->AddStringToken((int)eDCEpgInfoST::currentstart, *p->GetTimeString());
|
tokenContainer->AddStringToken((int)eDCEpgInfoST::currentstart, *current->GetTimeString());
|
||||||
tokenContainer->AddStringToken((int)eDCEpgInfoST::currentstop, *p->GetEndTimeString());
|
tokenContainer->AddStringToken((int)eDCEpgInfoST::currentstop, *current->GetEndTimeString());
|
||||||
tokenContainer->AddIntToken((int)eDCEpgInfoIT::currentduration, p->Duration() / 60);
|
tokenContainer->AddIntToken((int)eDCEpgInfoIT::currentduration, current->Duration() / 60);
|
||||||
tokenContainer->AddIntToken((int)eDCEpgInfoIT::currentdurationhours, p->Duration() / 3600);
|
tokenContainer->AddIntToken((int)eDCEpgInfoIT::currentdurationhours, current->Duration() / 3600);
|
||||||
tokenContainer->AddIntToken((int)eDCEpgInfoIT::currentdurationminutes, (p->Duration() / 60) % 60);
|
tokenContainer->AddIntToken((int)eDCEpgInfoIT::currentdurationminutes, (current->Duration() / 60) % 60);
|
||||||
tokenContainer->AddIntToken((int)eDCEpgInfoIT::currentelapsed, (int)round((time(NULL) - p->StartTime())/60));
|
tokenContainer->AddIntToken((int)eDCEpgInfoIT::currentelapsed, (int)round((time(NULL) - current->StartTime())/60));
|
||||||
tokenContainer->AddIntToken((int)eDCEpgInfoIT::currentremaining, (int)round((p->EndTime() - time(NULL))/60));
|
tokenContainer->AddIntToken((int)eDCEpgInfoIT::currentremaining, (int)round((current->EndTime() - time(NULL))/60));
|
||||||
tokenContainer->AddIntToken((int)eDCEpgInfoIT::currentrecording, EventHasTimer(p));
|
tokenContainer->AddIntToken((int)eDCEpgInfoIT::currentrecording, EventHasTimer(current));
|
||||||
tokenContainer->AddIntToken((int)eDCEpgInfoIT::hasVPS, (bool)p->Vps());
|
tokenContainer->AddIntToken((int)eDCEpgInfoIT::hasVPS, (bool)current->Vps());
|
||||||
}
|
}
|
||||||
if (f) {
|
if (next) {
|
||||||
tokenContainer->AddStringToken((int)eDCEpgInfoST::nexttitle, f->Title());
|
tokenContainer->AddStringToken((int)eDCEpgInfoST::nexttitle, next->Title());
|
||||||
tokenContainer->AddStringToken((int)eDCEpgInfoST::nextsubtitle, f->ShortText());
|
tokenContainer->AddStringToken((int)eDCEpgInfoST::nextsubtitle, next->ShortText());
|
||||||
tokenContainer->AddStringToken((int)eDCEpgInfoST::nextstart, *f->GetTimeString());
|
tokenContainer->AddStringToken((int)eDCEpgInfoST::nextstart, *next->GetTimeString());
|
||||||
tokenContainer->AddStringToken((int)eDCEpgInfoST::nextstop, *f->GetEndTimeString());
|
tokenContainer->AddStringToken((int)eDCEpgInfoST::nextstop, *next->GetEndTimeString());
|
||||||
tokenContainer->AddIntToken((int)eDCEpgInfoIT::nextduration, f->Duration() / 60);
|
tokenContainer->AddIntToken((int)eDCEpgInfoIT::nextduration, next->Duration() / 60);
|
||||||
tokenContainer->AddIntToken((int)eDCEpgInfoIT::nextdurationhours, f->Duration() / 3600);
|
tokenContainer->AddIntToken((int)eDCEpgInfoIT::nextdurationhours, next->Duration() / 3600);
|
||||||
tokenContainer->AddIntToken((int)eDCEpgInfoIT::nextdurationminutes, (f->Duration() / 60) % 60);
|
tokenContainer->AddIntToken((int)eDCEpgInfoIT::nextdurationminutes, (next->Duration() / 60) % 60);
|
||||||
tokenContainer->AddIntToken((int)eDCEpgInfoIT::nextrecording, EventHasTimer(f));
|
tokenContainer->AddIntToken((int)eDCEpgInfoIT::nextrecording, EventHasTimer(next));
|
||||||
tokenContainer->AddIntToken((int)eDCEpgInfoIT::hasVPS, (bool)f->Vps());
|
tokenContainer->AddIntToken((int)eDCEpgInfoIT::hasVPS, (bool)next->Vps());
|
||||||
}
|
}
|
||||||
SetDirty();
|
SetDirty();
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void cVeDcEpgInfo::Close(void) {
|
void cVeDcEpgInfo::Close(void) {
|
||||||
|
current = NULL;
|
||||||
|
next = NULL;
|
||||||
tokenContainer->Clear();
|
tokenContainer->Clear();
|
||||||
cViewElement::Close();
|
cViewElement::Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool cVeDcEpgInfo::EventHasTimer(const cEvent *e) {
|
bool cVeDcEpgInfo::EventHasTimer(const cEvent *e) {
|
||||||
if (!e) return false;
|
if (!e) return false;
|
||||||
bool hasTimer = e->HasTimer();
|
eTimerMatch TimerMatch = tmNone;
|
||||||
|
const cTimers *timers;
|
||||||
|
#if defined (APIVERSNUM) && (APIVERSNUM >= 20301)
|
||||||
|
{
|
||||||
|
LOCK_TIMERS_READ;
|
||||||
|
timers = Timers;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
timers = &Timers;
|
||||||
|
#endif
|
||||||
|
const cTimer *Timer = timers->GetMatch(e, &TimerMatch);
|
||||||
|
if (Timer && Timer->HasFlags(tfActive)) {
|
||||||
|
if (TimerMatch == tmFull)
|
||||||
|
return true;
|
||||||
|
if (TimerMatch == tmPartial) {
|
||||||
|
const char *fileName = Timer->File();
|
||||||
|
if (fileName && *fileName == '@')
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
bool hasTimer = false;
|
||||||
for (int i = 0; i < globalTimers->Size() && !hasTimer; i++)
|
for (int i = 0; i < globalTimers->Size() && !hasTimer; i++)
|
||||||
if (const cTimer *Timer = globalTimers->At(i))
|
if (const cTimer *Timer = globalTimers->At(i))
|
||||||
if (Timer->Channel() && (Timer->Channel()->GetChannelID() == e->ChannelID()))
|
if (Timer->Channel() && (Timer->Channel()->GetChannelID() == e->ChannelID()))
|
||||||
if (const cEvent *timerEvent = Timer->Event())
|
if (const cEvent *timerEvent = Timer->Event())
|
||||||
if (e->EventID() == timerEvent->EventID())
|
if (e->EventID() == timerEvent->EventID())
|
||||||
hasTimer = true;
|
hasTimer = true;
|
||||||
|
|
||||||
return hasTimer;
|
return hasTimer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -204,6 +230,7 @@ void cVeDcProgressBar::Close(void) {
|
||||||
currentLast = -1;
|
currentLast = -1;
|
||||||
startTime = -1;
|
startTime = -1;
|
||||||
duration = -1;
|
duration = -1;
|
||||||
|
tokenContainer->Clear();
|
||||||
cViewElement::Close();
|
cViewElement::Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -593,7 +620,8 @@ void cVeDcScraperContent::SetTokenContainer(void) {
|
||||||
|
|
||||||
void cVeDcScraperContent::Set(const cEvent *e) {
|
void cVeDcScraperContent::Set(const cEvent *e) {
|
||||||
tokenContainer->Clear();
|
tokenContainer->Clear();
|
||||||
SetPosterBanner(tokenContainer, e, NULL);
|
if (e)
|
||||||
|
SetPosterBanner(tokenContainer, e, NULL);
|
||||||
SetDirty();
|
SetDirty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -34,6 +34,8 @@ public:
|
||||||
******************************************************************/
|
******************************************************************/
|
||||||
class cVeDcEpgInfo : public cViewElement {
|
class cVeDcEpgInfo : public cViewElement {
|
||||||
private:
|
private:
|
||||||
|
const cEvent *current;
|
||||||
|
const cEvent *next;
|
||||||
cGlobalTimers *globalTimers;
|
cGlobalTimers *globalTimers;
|
||||||
bool EventHasTimer(const cEvent *e);
|
bool EventHasTimer(const cEvent *e);
|
||||||
public:
|
public:
|
||||||
|
@ -41,8 +43,9 @@ public:
|
||||||
virtual ~cVeDcEpgInfo(void);
|
virtual ~cVeDcEpgInfo(void);
|
||||||
void SetGlobalTimers(cGlobalTimers *globalTimers) { this->globalTimers = globalTimers; };
|
void SetGlobalTimers(cGlobalTimers *globalTimers) { this->globalTimers = globalTimers; };
|
||||||
void SetTokenContainer(void);
|
void SetTokenContainer(void);
|
||||||
void Set(const cEvent *p, const cEvent *f);
|
void Set(const cEvent *p, const cEvent *f) { this->current = p; this->next = f; };
|
||||||
void Close(void);
|
void Close(void);
|
||||||
|
bool Parse(bool forced = false);
|
||||||
};
|
};
|
||||||
/******************************************************************
|
/******************************************************************
|
||||||
* cVeDcProgressBar
|
* cVeDcProgressBar
|
||||||
|
|
|
@ -391,7 +391,8 @@ bool cVeDmTimers::Parse(bool forced) {
|
||||||
tokenContainer->AddLoopToken(timerIndex, i, (int)eDMTimersLT::isremotetimer, globalTimers.IsRemoteTimer(i) ? "1" : "0");
|
tokenContainer->AddLoopToken(timerIndex, i, (int)eDMTimersLT::isremotetimer, globalTimers.IsRemoteTimer(i) ? "1" : "0");
|
||||||
tokenContainer->AddLoopToken(timerIndex, i, (int)eDMTimersLT::remotehost, globalTimers.RemoteHost(i));
|
tokenContainer->AddLoopToken(timerIndex, i, (int)eDMTimersLT::remotehost, globalTimers.RemoteHost(i));
|
||||||
const cEvent *event = Timer->Event();
|
const cEvent *event = Timer->Event();
|
||||||
if (event) {
|
const char *fileName = Timer->File();
|
||||||
|
if (event && fileName && !(*fileName == '@')) {
|
||||||
tokenContainer->AddLoopToken(timerIndex, i, (int)eDMTimersLT::title, event->Title());
|
tokenContainer->AddLoopToken(timerIndex, i, (int)eDMTimersLT::title, event->Title());
|
||||||
} else {
|
} else {
|
||||||
const char *File = Setup.FoldersInTimerMenu ? NULL : strrchr(Timer->File(), FOLDERDELIMCHAR);
|
const char *File = Setup.FoldersInTimerMenu ? NULL : strrchr(Timer->File(), FOLDERDELIMCHAR);
|
||||||
|
@ -867,6 +868,41 @@ bool cVeDmVdrstatistics::Parse(bool forced) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
/******************************************************************
|
/******************************************************************
|
||||||
|
* cVeDmVdrstatus
|
||||||
|
******************************************************************/
|
||||||
|
cVeDmVdrstatus::cVeDmVdrstatus(void) {
|
||||||
|
}
|
||||||
|
|
||||||
|
cVeDmVdrstatus::~cVeDmVdrstatus(void) {
|
||||||
|
}
|
||||||
|
|
||||||
|
void cVeDmVdrstatus::Close(void) {
|
||||||
|
cViewElement::Close();
|
||||||
|
}
|
||||||
|
|
||||||
|
void cVeDmVdrstatus::SetTokenContainer(void) {
|
||||||
|
tokenContainer = new skindesignerapi::cTokenContainer();
|
||||||
|
tokenContainer->DefineIntToken("{vdrIsRecordingsHandlersActive}", (int)eDMVdrstatusIT::vdrIsRecordingsHandlersActive);
|
||||||
|
tokenContainer->DefineIntToken("{vdrIsRecording}", (int)eDMVdrstatusIT::vdrIsRecording);
|
||||||
|
tokenContainer->DefineIntToken("{vdrHasTimers}", (int)eDMVdrstatusIT::vdrHasTimers);
|
||||||
|
InheritTokenContainer();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool cVeDmVdrstatus::Parse(bool forced) {
|
||||||
|
if (!cViewElement::Parse(forced))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
cGlobalTimers globalTimers;
|
||||||
|
globalTimers.LoadTimers();
|
||||||
|
|
||||||
|
tokenContainer->Clear();
|
||||||
|
tokenContainer->AddIntToken((int)eDMVdrstatusIT::vdrIsRecordingsHandlersActive, RecordingsHandler.Active());
|
||||||
|
tokenContainer->AddIntToken((int)eDMVdrstatusIT::vdrIsRecording, cRecordControls::Active());
|
||||||
|
tokenContainer->AddIntToken((int)eDMVdrstatusIT::vdrHasTimers, (globalTimers.Size() > 0));
|
||||||
|
SetDirty();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
/******************************************************************
|
||||||
* cVeDmLastrecordings
|
* cVeDmLastrecordings
|
||||||
******************************************************************/
|
******************************************************************/
|
||||||
cVeDmLastrecordings::cVeDmLastrecordings(void) {
|
cVeDmLastrecordings::cVeDmLastrecordings(void) {
|
||||||
|
@ -934,7 +970,7 @@ bool cVeDmLastrecordings::Parse(bool forced) {
|
||||||
|
|
||||||
int MAX_RECORDINGS = 10;
|
int MAX_RECORDINGS = 10;
|
||||||
int availableRecordings = orderedRecs.size();
|
int availableRecordings = orderedRecs.size();
|
||||||
int numRecordings = min(MAX_RECORDINGS, availableRecordings);
|
int numRecordings = std::min(MAX_RECORDINGS, availableRecordings);
|
||||||
if (!numRecordings)
|
if (!numRecordings)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
@ -1171,6 +1207,8 @@ void cVeDmDetailheaderRec::SetTokenContainer(void) {
|
||||||
tokenContainer->DefineIntToken("{isUHD}", (int)eDmDetailedHeaderRecIT::isUHD);
|
tokenContainer->DefineIntToken("{isUHD}", (int)eDmDetailedHeaderRecIT::isUHD);
|
||||||
tokenContainer->DefineIntToken("{isRadio}", (int)eDmDetailedHeaderRecIT::isRadio);
|
tokenContainer->DefineIntToken("{isRadio}", (int)eDmDetailedHeaderRecIT::isRadio);
|
||||||
tokenContainer->DefineIntToken("{isRecording}", (int)eDmDetailedHeaderRecIT::isRecording);
|
tokenContainer->DefineIntToken("{isRecording}", (int)eDmDetailedHeaderRecIT::isRecording);
|
||||||
|
tokenContainer->DefineIntToken("{isInUse}", (int)eDmDetailedHeaderRecIT::isInUse);
|
||||||
|
tokenContainer->DefineIntToken("{errors}", (int)eDmDetailedHeaderRecIT::errors);
|
||||||
InheritTokenContainer();
|
InheritTokenContainer();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1191,7 +1229,14 @@ bool cVeDmDetailheaderRec::Parse(bool forced) {
|
||||||
tokenContainer->AddStringToken((int)eDmDetailedHeaderRecST::epgname, info->Title());
|
tokenContainer->AddStringToken((int)eDmDetailedHeaderRecST::epgname, info->Title());
|
||||||
tokenContainer->AddStringToken((int)eDmDetailedHeaderRecST::shorttext, info->ShortText());
|
tokenContainer->AddStringToken((int)eDmDetailedHeaderRecST::shorttext, info->ShortText());
|
||||||
tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::framesPerSecond, info->FramesPerSecond());
|
tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::framesPerSecond, info->FramesPerSecond());
|
||||||
|
int errors = -1;
|
||||||
|
// ENABLE_ERRORS is only used in VDR-2.5.4 if the coresponding patch is installed, so it can be ignored in other versions
|
||||||
|
#if (defined (APIVERSNUM) && (APIVERSNUM >= 20505)) || defined (ENABLE_ERRORS)
|
||||||
|
errors = info->Errors();
|
||||||
|
#endif
|
||||||
|
tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::errors, errors);
|
||||||
const cEvent *event = info->GetEvent();
|
const cEvent *event = info->GetEvent();
|
||||||
|
tChannelID channelID = tChannelID::InvalidID;
|
||||||
if (event) {
|
if (event) {
|
||||||
cString recDate = event->GetDateString();
|
cString recDate = event->GetDateString();
|
||||||
cString recTime = event->GetTimeString();
|
cString recTime = event->GetTimeString();
|
||||||
|
@ -1216,17 +1261,17 @@ bool cVeDmDetailheaderRec::Parse(bool forced) {
|
||||||
tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::durationevent, duration);
|
tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::durationevent, duration);
|
||||||
tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::durationeventhours, duration / 60);
|
tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::durationeventhours, duration / 60);
|
||||||
tokenContainer->AddStringToken((int)eDmDetailedHeaderRecST::durationeventminutes, *cString::sprintf("%.2d", duration%60));
|
tokenContainer->AddStringToken((int)eDmDetailedHeaderRecST::durationeventminutes, *cString::sprintf("%.2d", duration%60));
|
||||||
tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::isHD, RecordingIsHD(event)); // detect HD from 'info'
|
|
||||||
tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::isUHD, RecordingIsUHD(event)); // detect UHD from 'info'
|
|
||||||
tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::isRadio, RecordingIsRadio(event, info->FramesPerSecond())); // detect Radio from 'info' and FPS
|
tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::isRadio, RecordingIsRadio(event, info->FramesPerSecond())); // detect Radio from 'info' and FPS
|
||||||
tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::isRecording, recording->IsInUse() & ruTimer);
|
tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::isRecording, recording->IsInUse() & ruTimer);
|
||||||
|
tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::isInUse, recording->IsInUse());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (info->ChannelName() && (strlen(info->ChannelName()) > 0)) {
|
if (info->ChannelName() && (strlen(info->ChannelName()) > 0)) {
|
||||||
tokenContainer->AddStringToken((int)eDmDetailedHeaderRecST::recchannelname, info->ChannelName());
|
tokenContainer->AddStringToken((int)eDmDetailedHeaderRecST::recchannelname, info->ChannelName());
|
||||||
tokenContainer->AddStringToken((int)eDmDetailedHeaderRecST::recchannelid, info->ChannelID().ToString());
|
tokenContainer->AddStringToken((int)eDmDetailedHeaderRecST::recchannelid, info->ChannelID().ToString());
|
||||||
tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::recchannelnumber, 0); // cannot be provided, for backward compatibility only
|
tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::recchannelnumber, 0); // cannot be provided, for backward compatibility only
|
||||||
} else {
|
channelID = info->ChannelID();
|
||||||
|
} else {
|
||||||
#if defined (APIVERSNUM) && (APIVERSNUM >= 20301)
|
#if defined (APIVERSNUM) && (APIVERSNUM >= 20301)
|
||||||
LOCK_CHANNELS_READ;
|
LOCK_CHANNELS_READ;
|
||||||
const cChannel *channel = Channels->GetByChannelID(info->ChannelID());
|
const cChannel *channel = Channels->GetByChannelID(info->ChannelID());
|
||||||
|
@ -1234,11 +1279,15 @@ bool cVeDmDetailheaderRec::Parse(bool forced) {
|
||||||
const cChannel *channel = Channels.GetByChannelID(info->ChannelID());
|
const cChannel *channel = Channels.GetByChannelID(info->ChannelID());
|
||||||
#endif
|
#endif
|
||||||
if (channel) {
|
if (channel) {
|
||||||
tokenContainer->AddStringToken((int)eDmDetailedHeaderRecST::recchannelname, channel->Name());
|
tokenContainer->AddStringToken((int)eDmDetailedHeaderRecST::recchannelname, channel->Name());
|
||||||
tokenContainer->AddStringToken((int)eDmDetailedHeaderRecST::recchannelid, *channel->GetChannelID().ToString());
|
tokenContainer->AddStringToken((int)eDmDetailedHeaderRecST::recchannelid, *channel->GetChannelID().ToString());
|
||||||
tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::recchannelnumber, channel->Number());
|
tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::recchannelnumber, channel->Number());
|
||||||
}
|
channelID = channel->GetChannelID();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::isHD, RecordingIsHD(event, channelID)); // detect HD from 'info'
|
||||||
|
tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::isUHD, RecordingIsUHD(event, channelID)); // detect UHD from 'info'
|
||||||
}
|
}
|
||||||
string recImage = "";
|
string recImage = "";
|
||||||
string path = recording->FileName() ? recording->FileName() : "";
|
string path = recording->FileName() ? recording->FileName() : "";
|
||||||
|
@ -1338,6 +1387,3 @@ bool cVeDmTablabels::Parse(bool forced) {
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -178,6 +178,18 @@ public:
|
||||||
bool Parse(bool forced = false);
|
bool Parse(bool forced = false);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/******************************************************************
|
||||||
|
* cVeDmVdrstatus
|
||||||
|
******************************************************************/
|
||||||
|
class cVeDmVdrstatus : public cViewElement {
|
||||||
|
public:
|
||||||
|
cVeDmVdrstatus(void);
|
||||||
|
virtual ~cVeDmVdrstatus(void);
|
||||||
|
void Close(void);
|
||||||
|
void SetTokenContainer(void);
|
||||||
|
bool Parse(bool forced = false);
|
||||||
|
};
|
||||||
|
|
||||||
/******************************************************************
|
/******************************************************************
|
||||||
* cVeDmLastrecordings
|
* cVeDmLastrecordings
|
||||||
******************************************************************/
|
******************************************************************/
|
||||||
|
@ -253,4 +265,4 @@ public:
|
||||||
void SetActiveTab(int activeTab) { SetDirty(); this->activeTab = activeTab; };
|
void SetActiveTab(int activeTab) { SetDirty(); this->activeTab = activeTab; };
|
||||||
bool Parse(bool forced = false);
|
bool Parse(bool forced = false);
|
||||||
};
|
};
|
||||||
#endif //__VIEWELEMENTSDM_H
|
#endif //__VIEWELEMENTSDM_H
|
||||||
|
|
|
@ -120,6 +120,7 @@ void cVeDrRecInfo::SetTokenContainer(void) {
|
||||||
tokenContainer->DefineIntToken("{isHD}", (int)eDRRecInfoIT::isHD);
|
tokenContainer->DefineIntToken("{isHD}", (int)eDRRecInfoIT::isHD);
|
||||||
tokenContainer->DefineIntToken("{isUHD}", (int)eDRRecInfoIT::isUHD);
|
tokenContainer->DefineIntToken("{isUHD}", (int)eDRRecInfoIT::isUHD);
|
||||||
tokenContainer->DefineIntToken("{isRecording}", (int)eDRRecInfoIT::isRecording);
|
tokenContainer->DefineIntToken("{isRecording}", (int)eDRRecInfoIT::isRecording);
|
||||||
|
tokenContainer->DefineIntToken("{isInUse}", (int)eDRRecInfoIT::isInUse);
|
||||||
tokenContainer->DefineIntToken("{isWideScreen}", (int)eDRRecInfoIT::isWideScreen);
|
tokenContainer->DefineIntToken("{isWideScreen}", (int)eDRRecInfoIT::isWideScreen);
|
||||||
InheritTokenContainer();
|
InheritTokenContainer();
|
||||||
}
|
}
|
||||||
|
@ -150,6 +151,7 @@ bool cVeDrRecInfo::Parse(bool force) {
|
||||||
tokenContainer->AddIntToken((int)eDRRecInfoIT::isHD, isHD);
|
tokenContainer->AddIntToken((int)eDRRecInfoIT::isHD, isHD);
|
||||||
tokenContainer->AddIntToken((int)eDRRecInfoIT::isUHD, isUHD);
|
tokenContainer->AddIntToken((int)eDRRecInfoIT::isUHD, isUHD);
|
||||||
tokenContainer->AddIntToken((int)eDRRecInfoIT::isRecording, recording->IsInUse() & ruTimer);
|
tokenContainer->AddIntToken((int)eDRRecInfoIT::isRecording, recording->IsInUse() & ruTimer);
|
||||||
|
tokenContainer->AddIntToken((int)eDRRecInfoIT::isInUse, recording->IsInUse());
|
||||||
tokenContainer->AddIntToken((int)eDRRecInfoIT::isWideScreen, isWideScreen);
|
tokenContainer->AddIntToken((int)eDRRecInfoIT::isWideScreen, isWideScreen);
|
||||||
tokenContainer->AddStringToken((int)eDRRecInfoST::resolution, resName.c_str());
|
tokenContainer->AddStringToken((int)eDRRecInfoST::resolution, resName.c_str());
|
||||||
tokenContainer->AddStringToken((int)eDRRecInfoST::aspect, aspectName.c_str());
|
tokenContainer->AddStringToken((int)eDRRecInfoST::aspect, aspectName.c_str());
|
||||||
|
@ -375,6 +377,7 @@ bool cVeDrProgressBar::Parse(bool force) {
|
||||||
tokenContainer->AddIntToken((int)eDRProgressbarIT::timeshifttotal, timeshiftTotal);
|
tokenContainer->AddIntToken((int)eDRProgressbarIT::timeshifttotal, timeshiftTotal);
|
||||||
|
|
||||||
SetDirty();
|
SetDirty();
|
||||||
|
changed = false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -383,13 +386,16 @@ bool cVeDrProgressBar::Parse(bool force) {
|
||||||
******************************************************************/
|
******************************************************************/
|
||||||
cVeDrCutMarks::cVeDrCutMarks(void) {
|
cVeDrCutMarks::cVeDrCutMarks(void) {
|
||||||
cutmarksIndex = -1;
|
cutmarksIndex = -1;
|
||||||
lastMarks = NULL;
|
changed = true;
|
||||||
|
marks = NULL;
|
||||||
|
current = -1;
|
||||||
|
total = -1;
|
||||||
|
numMarksLast = 0;
|
||||||
timeShiftActive = NoRec;
|
timeShiftActive = NoRec;
|
||||||
Reset();
|
timeshiftTotal = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
cVeDrCutMarks::~cVeDrCutMarks(void) {
|
cVeDrCutMarks::~cVeDrCutMarks(void) {
|
||||||
delete[] lastMarks;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void cVeDrCutMarks::SetTokenContainer(void) {
|
void cVeDrCutMarks::SetTokenContainer(void) {
|
||||||
|
@ -406,31 +412,22 @@ void cVeDrCutMarks::SetTokenContainer(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void cVeDrCutMarks::Set(const cMarks *marks, int current, int total, eRecType_t timeShiftActive, int timeshiftTotal) {
|
void cVeDrCutMarks::Set(const cMarks *marks, int current, int total, eRecType_t timeShiftActive, int timeshiftTotal) {
|
||||||
|
int numMarks = marks->Count();
|
||||||
|
if (!(this->current != current || this->total != total || this->marks != marks || numMarksLast != numMarks))
|
||||||
|
return;
|
||||||
this->marks = marks;
|
this->marks = marks;
|
||||||
|
numMarksLast = numMarks;
|
||||||
this->current = current;
|
this->current = current;
|
||||||
this->total = total;
|
this->total = total;
|
||||||
this->timeShiftActive = timeShiftActive;
|
this->timeShiftActive = timeShiftActive;
|
||||||
this->timeshiftTotal = timeshiftTotal;
|
this->timeshiftTotal = timeshiftTotal;
|
||||||
}
|
|
||||||
|
|
||||||
void cVeDrCutMarks::Reset(void) {
|
changed = true;
|
||||||
marks = NULL;
|
|
||||||
current = -1;
|
|
||||||
total = -1;
|
|
||||||
numMarksLast = 0;
|
|
||||||
delete[] lastMarks;
|
|
||||||
lastMarks = NULL;
|
|
||||||
markActive = -1;
|
|
||||||
timeShiftActive = NoRec;
|
|
||||||
timeshiftTotal = -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool cVeDrCutMarks::Parse(bool force) {
|
bool cVeDrCutMarks::Parse(bool force) {
|
||||||
if (!cViewElement::Parse(force))
|
if (!cViewElement::Parse(force) || !changed)
|
||||||
return false;
|
return false;
|
||||||
if (!marks || !MarksChanged()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
tokenContainer->Clear();
|
tokenContainer->Clear();
|
||||||
tokenContainer->AddIntToken((int)eDRCutmarksIT::timeshift, timeShiftActive);
|
tokenContainer->AddIntToken((int)eDRCutmarksIT::timeshift, timeShiftActive);
|
||||||
int numMarks = marks->Count();
|
int numMarks = marks->Count();
|
||||||
|
@ -459,61 +456,10 @@ bool cVeDrCutMarks::Parse(bool force) {
|
||||||
isStartMark = !isStartMark;
|
isStartMark = !isStartMark;
|
||||||
}
|
}
|
||||||
SetDirty();
|
SetDirty();
|
||||||
|
changed = false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool cVeDrCutMarks::MarksChanged(void) {
|
|
||||||
bool redraw = false;
|
|
||||||
//if mark was active, we redraw always
|
|
||||||
if (markActive >= 0) {
|
|
||||||
markActive = -1;
|
|
||||||
redraw = true;
|
|
||||||
}
|
|
||||||
//check if current position in recording hits mark exactly
|
|
||||||
for (const cMark *m = marks->First(); m; m = marks->Next(m)) {
|
|
||||||
if (m->Position() == current) {
|
|
||||||
markActive = current;
|
|
||||||
redraw = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (redraw)
|
|
||||||
return true;
|
|
||||||
//if number of marks has changed, redraw
|
|
||||||
int numMarks = marks->Count();
|
|
||||||
if (numMarks != numMarksLast) {
|
|
||||||
RememberMarks();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (!lastMarks)
|
|
||||||
return false;
|
|
||||||
//if position has changed, redraw
|
|
||||||
int i=0;
|
|
||||||
for (const cMark *m = marks->First(); m; m = marks->Next(m)) {
|
|
||||||
if (m->Position() != lastMarks[i]) {
|
|
||||||
RememberMarks();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
void cVeDrCutMarks::RememberMarks(void) {
|
|
||||||
if (!marks)
|
|
||||||
return;
|
|
||||||
numMarksLast = marks->Count();
|
|
||||||
if (numMarksLast < 1)
|
|
||||||
return;
|
|
||||||
delete[] lastMarks;
|
|
||||||
lastMarks = new int[numMarksLast];
|
|
||||||
int i=0;
|
|
||||||
for (const cMark *m = marks->First(); m; m = marks->Next(m)) {
|
|
||||||
lastMarks[i] = m->Position();
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/******************************************************************
|
/******************************************************************
|
||||||
* cVeDrControlIcons
|
* cVeDrControlIcons
|
||||||
******************************************************************/
|
******************************************************************/
|
||||||
|
|
|
@ -140,16 +140,12 @@ private:
|
||||||
eRecType_t timeShiftActive;
|
eRecType_t timeShiftActive;
|
||||||
int timeshiftTotal;
|
int timeshiftTotal;
|
||||||
int numMarksLast;
|
int numMarksLast;
|
||||||
int *lastMarks;
|
bool changed;
|
||||||
int markActive;
|
|
||||||
bool MarksChanged(void);
|
|
||||||
void RememberMarks(void);
|
|
||||||
public:
|
public:
|
||||||
cVeDrCutMarks(void);
|
cVeDrCutMarks(void);
|
||||||
virtual ~cVeDrCutMarks(void);
|
virtual ~cVeDrCutMarks(void);
|
||||||
void SetTokenContainer(void);
|
void SetTokenContainer(void);
|
||||||
void Set(const cMarks *marks, int current, int total, eRecType_t timeShiftActive = NoRec, int timeshiftTotal = 0);
|
void Set(const cMarks *marks, int current, int total, eRecType_t timeShiftActive = NoRec, int timeshiftTotal = 0);
|
||||||
void Reset(void);
|
|
||||||
bool Parse(bool forced = false);
|
bool Parse(bool forced = false);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -45,7 +45,8 @@ void cSDDisplayReplay::SetMode(bool Play, bool Forward, int Speed) {
|
||||||
void cSDDisplayReplay::SetProgress(int Current, int Total) {
|
void cSDDisplayReplay::SetProgress(int Current, int Total) {
|
||||||
if (ok) {
|
if (ok) {
|
||||||
view->SetProgressbar(Current, Total);
|
view->SetProgressbar(Current, Total);
|
||||||
view->SetMarks(marks, Current, Total);
|
if (marks)
|
||||||
|
view->SetMarks(marks, Current, Total);
|
||||||
view->SetTimeshiftTimes(Current, Total);
|
view->SetTimeshiftTimes(Current, Total);
|
||||||
view->SetEndTime(Current, Total);
|
view->SetEndTime(Current, Total);
|
||||||
view->DelayOnPause();
|
view->DelayOnPause();
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
<!ENTITY % functions SYSTEM "functions.dtd">
|
<!ENTITY % functions SYSTEM "functions.dtd">
|
||||||
|
|
||||||
<!ELEMENT displaymenu (background,header,datetime,time*,message,sortmode*,colorbuttons,scrollbar*,
|
<!ELEMENT displaymenu (background,header,datetime,time*,vdrstatus*,message,sortmode*,colorbuttons,scrollbar*,
|
||||||
menudefault,menumain*,menusetup*,menuschedules*,
|
menudefault,menumain*,menusetup*,menuschedules*,
|
||||||
menutimers*,menuchannels*,menurecordings*,
|
menutimers*,menuchannels*,menurecordings*,
|
||||||
menudetailedepg,menudetailedrecording,
|
menudetailedepg,menudetailedrecording,
|
||||||
|
@ -218,6 +218,20 @@
|
||||||
condition CDATA #IMPLIED
|
condition CDATA #IMPLIED
|
||||||
>
|
>
|
||||||
|
|
||||||
|
<!ELEMENT vdrstatus (areacontainer|area|areascroll)*>
|
||||||
|
<!ATTLIST vdrstatus
|
||||||
|
delay CDATA #IMPLIED
|
||||||
|
orientation CDATA #IMPLIED
|
||||||
|
fadetime CDATA #IMPLIED
|
||||||
|
shifttime CDATA #IMPLIED
|
||||||
|
shifttype CDATA #IMPLIED
|
||||||
|
shiftmode CDATA #IMPLIED
|
||||||
|
startx CDATA #IMPLIED
|
||||||
|
starty CDATA #IMPLIED
|
||||||
|
debug CDATA #IMPLIED
|
||||||
|
condition CDATA #IMPLIED
|
||||||
|
>
|
||||||
|
|
||||||
<!ELEMENT currentschedule (areacontainer|area|areascroll)*>
|
<!ELEMENT currentschedule (areacontainer|area|areascroll)*>
|
||||||
<!ATTLIST currentschedule
|
<!ATTLIST currentschedule
|
||||||
delay CDATA #IMPLIED
|
delay CDATA #IMPLIED
|
||||||
|
@ -316,7 +330,7 @@
|
||||||
>
|
>
|
||||||
|
|
||||||
<!ELEMENT menumain (background | header | datetime | time | colorbuttons | scrollbar | sortmode | timers |
|
<!ELEMENT menumain (background | header | datetime | time | colorbuttons | scrollbar | sortmode | timers |
|
||||||
discusage | devices | systemload | systemmemory | vdrstatistics | temperatures | currentschedule |
|
discusage | devices | systemload | systemmemory | vdrstatistics | vdrstatus | temperatures | currentschedule |
|
||||||
currentweather | lastrecordings | customtokens | menuitems)*>
|
currentweather | lastrecordings | customtokens | menuitems)*>
|
||||||
<!ATTLIST menumain
|
<!ATTLIST menumain
|
||||||
x CDATA #REQUIRED
|
x CDATA #REQUIRED
|
||||||
|
@ -501,4 +515,4 @@
|
||||||
debug (true|false) #IMPLIED
|
debug (true|false) #IMPLIED
|
||||||
>
|
>
|
||||||
|
|
||||||
%functions;
|
%functions;
|
||||||
|
|
|
@ -177,14 +177,18 @@ bool cGlobalTimers::IsRecording(const cRecording *rec) {
|
||||||
if (!rec || !rec->Name())
|
if (!rec || !rec->Name())
|
||||||
return false;
|
return false;
|
||||||
std::string recName = rec->Name();
|
std::string recName = rec->Name();
|
||||||
|
time_t recstart = rec->Start();
|
||||||
int size = Size();
|
int size = Size();
|
||||||
for (int i=0; i<size; i++) {
|
for (int i=0; i<size; i++) {
|
||||||
const cTimer *t = At(i);
|
const cTimer *t = At(i);
|
||||||
const char *timerFile = t->File();
|
const char *timerFile = t->File();
|
||||||
if (!t->Matches() || !timerFile)
|
if (!t->Matches() || !timerFile)
|
||||||
continue;
|
continue;
|
||||||
if (recName.find(timerFile) != std::string::npos)
|
if (recName.find(timerFile) != std::string::npos) {
|
||||||
return true;
|
time_t timerstart = t->StartTime();
|
||||||
|
if (recstart == timerstart)
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -178,14 +178,22 @@ cImageImporterSVG::cImageImporterSVG() {
|
||||||
|
|
||||||
cImageImporterSVG::~cImageImporterSVG() {
|
cImageImporterSVG::~cImageImporterSVG() {
|
||||||
if (handle) {
|
if (handle) {
|
||||||
rsvg_handle_close(handle, NULL); // deprecated since version 2.46
|
#if LIBRSVG_CHECK_VERSION (2, 46, 0)
|
||||||
|
// rsvg_handle_close is deprecated since version 2.46 and looks like even not required if used with rsvg_handle_new_from_file
|
||||||
|
#else
|
||||||
|
rsvg_handle_close(handle, NULL);
|
||||||
|
#endif
|
||||||
g_object_unref(handle);
|
g_object_unref(handle);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool cImageImporterSVG::LoadImage(const char *path) {
|
bool cImageImporterSVG::LoadImage(const char *path) {
|
||||||
if (handle) {
|
if (handle) {
|
||||||
rsvg_handle_close(handle, NULL); // deprecated since version 2.46
|
#if LIBRSVG_CHECK_VERSION (2, 46, 0)
|
||||||
|
// rsvg_handle_close is deprecated since version 2.46 and looks like even not required if used with rsvg_handle_new_from_file
|
||||||
|
#else
|
||||||
|
rsvg_handle_close(handle, NULL);
|
||||||
|
#endif
|
||||||
g_object_unref(handle);
|
g_object_unref(handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -521,3 +529,5 @@ void cSVGTemplate::ReplaceTokens(string &line, size_t tokenStart, size_t tokenEn
|
||||||
std::replace( svgAlpha.begin(), svgAlpha.end(), ',', '.');
|
std::replace( svgAlpha.begin(), svgAlpha.end(), ',', '.');
|
||||||
line.replace(hitAlpha, hitAlphaEnd - hitAlpha + 2, svgAlpha);
|
line.replace(hitAlpha, hitAlphaEnd - hitAlpha + 2, svgAlpha);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// vim: ts=4 sw=4 et
|
||||||
|
|
|
@ -20,8 +20,7 @@
|
||||||
#error "VDR-2.2.0 API version or greater is required!"
|
#error "VDR-2.2.0 API version or greater is required!"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static const char *VERSION = "1.2.18";
|
||||||
static const char *VERSION = "1.2.14";
|
|
||||||
static const char *DESCRIPTION = trNOOP("Skin Designer");
|
static const char *DESCRIPTION = trNOOP("Skin Designer");
|
||||||
|
|
||||||
class cPluginSkinDesigner : public cPlugin, public skindesignerapi::SkindesignerAPI {
|
class cPluginSkinDesigner : public cPlugin, public skindesignerapi::SkindesignerAPI {
|
||||||
|
|
|
@ -23,14 +23,14 @@
|
||||||
<trans lang="de_DE">Wiederholungen</trans>
|
<trans lang="de_DE">Wiederholungen</trans>
|
||||||
<trans lang="fi_FI">Uusinnat</trans>
|
<trans lang="fi_FI">Uusinnat</trans>
|
||||||
<trans lang="hu_HU">Ismétlés</trans>
|
<trans lang="hu_HU">Ismétlés</trans>
|
||||||
<trans lang="it_IT">Riavvii</trans>
|
<trans lang="it_IT">Repliche</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(rerunsof)">
|
<token name="tr(rerunsof)">
|
||||||
<trans lang="en_EN">Reruns of</trans>
|
<trans lang="en_EN">Reruns of</trans>
|
||||||
<trans lang="de_DE">Wiederholungen von</trans>
|
<trans lang="de_DE">Wiederholungen von</trans>
|
||||||
<trans lang="fi_FI">Uusinnat:</trans>
|
<trans lang="fi_FI">Uusinnat:</trans>
|
||||||
<trans lang="hu_HU">Ismétlés:</trans>
|
<trans lang="hu_HU">Ismétlés:</trans>
|
||||||
<trans lang="it_IT">Riavvi di</trans>
|
<trans lang="it_IT">Repliche:</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(actors)">
|
<token name="tr(actors)">
|
||||||
<trans lang="en_EN">Actors</trans>
|
<trans lang="en_EN">Actors</trans>
|
||||||
|
@ -156,7 +156,7 @@
|
||||||
<trans lang="de_DE">Nur für Erwachsene</trans>
|
<trans lang="de_DE">Nur für Erwachsene</trans>
|
||||||
<trans lang="fi_FI">Vain aikuisille</trans>
|
<trans lang="fi_FI">Vain aikuisille</trans>
|
||||||
<trans lang="hu_HU">Felnőtt</trans>
|
<trans lang="hu_HU">Felnőtt</trans>
|
||||||
<trans lang="it_IT">Adulti</trans>
|
<trans lang="it_IT">Adulto</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(releasedate)">
|
<token name="tr(releasedate)">
|
||||||
<trans lang="en_EN">Release Date</trans>
|
<trans lang="en_EN">Release Date</trans>
|
||||||
|
@ -170,7 +170,7 @@
|
||||||
<trans lang="de_DE">Laufzeit</trans>
|
<trans lang="de_DE">Laufzeit</trans>
|
||||||
<trans lang="fi_FI">Kesto</trans>
|
<trans lang="fi_FI">Kesto</trans>
|
||||||
<trans lang="hu_HU">Hossz</trans>
|
<trans lang="hu_HU">Hossz</trans>
|
||||||
<trans lang="it_IT">Runtime</trans>
|
<trans lang="it_IT">Durata</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(popularity)">
|
<token name="tr(popularity)">
|
||||||
<trans lang="en_EN">Popularity</trans>
|
<trans lang="en_EN">Popularity</trans>
|
||||||
|
@ -212,7 +212,7 @@
|
||||||
<trans lang="de_DE">Länge der Aufnahme</trans>
|
<trans lang="de_DE">Länge der Aufnahme</trans>
|
||||||
<trans lang="fi_FI">Tallenteen pituus</trans>
|
<trans lang="fi_FI">Tallenteen pituus</trans>
|
||||||
<trans lang="hu_HU">Felvétel hossza</trans>
|
<trans lang="hu_HU">Felvétel hossza</trans>
|
||||||
<trans lang="it_IT">Lnghezza registrazzione</trans>
|
<trans lang="it_IT">Lunghezza registrazione</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(reclengthcutted)">
|
<token name="tr(reclengthcutted)">
|
||||||
<trans lang="en_EN">Cutted Recording Length</trans>
|
<trans lang="en_EN">Cutted Recording Length</trans>
|
||||||
|
@ -235,6 +235,13 @@
|
||||||
<trans lang="hu_HU">Formátum</trans>
|
<trans lang="hu_HU">Formátum</trans>
|
||||||
<trans lang="it_IT">Formato</trans>
|
<trans lang="it_IT">Formato</trans>
|
||||||
</token>
|
</token>
|
||||||
|
<token name="tr(errors)">
|
||||||
|
<trans lang="en_EN">Errors</trans>
|
||||||
|
<trans lang="de_DE">Fehler</trans>
|
||||||
|
<trans lang="fi_FI">Virhe</trans>
|
||||||
|
<trans lang="hu_HU">Hiba</trans>
|
||||||
|
<trans lang="it_IT">Errore</trans>
|
||||||
|
</token>
|
||||||
<token name="tr(searchtimer)">
|
<token name="tr(searchtimer)">
|
||||||
<trans lang="en_EN">Searchtimer</trans>
|
<trans lang="en_EN">Searchtimer</trans>
|
||||||
<trans lang="de_DE">Suchtimer</trans>
|
<trans lang="de_DE">Suchtimer</trans>
|
||||||
|
@ -268,42 +275,42 @@
|
||||||
<trans lang="de_DE">Ende</trans>
|
<trans lang="de_DE">Ende</trans>
|
||||||
<trans lang="fi_FI">Loppu</trans>
|
<trans lang="fi_FI">Loppu</trans>
|
||||||
<trans lang="hu_HU">vég</trans>
|
<trans lang="hu_HU">vég</trans>
|
||||||
<trans lang="it_IT">Fine</trans>
|
<trans lang="it_IT">fine</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(activetimers)">
|
<token name="tr(activetimers)">
|
||||||
<trans lang="en_EN">active timers</trans>
|
<trans lang="en_EN">active timers</trans>
|
||||||
<trans lang="de_DE">aktive Timer</trans>
|
<trans lang="de_DE">aktive Timer</trans>
|
||||||
<trans lang="fi_FI">aktiivista ajastinta</trans>
|
<trans lang="fi_FI">aktiivista ajastinta</trans>
|
||||||
<trans lang="hu_HU">aktív időzítők</trans>
|
<trans lang="hu_HU">aktív időzítők</trans>
|
||||||
<trans lang="it_IT">Timer attivi</trans>
|
<trans lang="it_IT">timer attivi</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(activetimer)">
|
<token name="tr(activetimer)">
|
||||||
<trans lang="en_EN">active timer</trans>
|
<trans lang="en_EN">active timer</trans>
|
||||||
<trans lang="de_DE">aktiver Timer</trans>
|
<trans lang="de_DE">aktiver Timer</trans>
|
||||||
<trans lang="fi_FI">aktiivinen ajastin</trans>
|
<trans lang="fi_FI">aktiivinen ajastin</trans>
|
||||||
<trans lang="hu_HU">aktív időzítő</trans>
|
<trans lang="hu_HU">aktív időzítő</trans>
|
||||||
<trans lang="it_IT">Timer attivo</trans>
|
<trans lang="it_IT">timer attivo</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(lastrecs)">
|
<token name="tr(lastrecs)">
|
||||||
<trans lang="en_EN">last recordings</trans>
|
<trans lang="en_EN">last recordings</trans>
|
||||||
<trans lang="de_DE">Neueste Aufnahmen</trans>
|
<trans lang="de_DE">Neueste Aufnahmen</trans>
|
||||||
<trans lang="fi_FI">Uusimmat tallenteet</trans>
|
<trans lang="fi_FI">Uusimmat tallenteet</trans>
|
||||||
<trans lang="hu_HU">utolsó felvételek</trans>
|
<trans lang="hu_HU">utolsó felvételek</trans>
|
||||||
<trans lang="it_IT">Ultime registrazioni</trans>
|
<trans lang="it_IT">ultime registrazioni</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(sysinfo)">
|
<token name="tr(sysinfo)">
|
||||||
<trans lang="en_EN">system information</trans>
|
<trans lang="en_EN">system information</trans>
|
||||||
<trans lang="de_DE">System Informationen</trans>
|
<trans lang="de_DE">System Informationen</trans>
|
||||||
<trans lang="fi_FI">Järjestelmätiedot</trans>
|
<trans lang="fi_FI">Järjestelmätiedot</trans>
|
||||||
<trans lang="hu_HU">rendszer információ</trans>
|
<trans lang="hu_HU">rendszer információ</trans>
|
||||||
<trans lang="it_IT">Info di sistema</trans>
|
<trans lang="it_IT">info di sistema</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(disc)">
|
<token name="tr(disc)">
|
||||||
<trans lang="en_EN">disc</trans>
|
<trans lang="en_EN">disc</trans>
|
||||||
<trans lang="de_DE">HDD</trans>
|
<trans lang="de_DE">HDD</trans>
|
||||||
<trans lang="fi_FI">levy</trans>
|
<trans lang="fi_FI">levy</trans>
|
||||||
<trans lang="hu_HU">Lemez</trans>
|
<trans lang="hu_HU">Lemez</trans>
|
||||||
<trans lang="it_IT">Disco</trans>
|
<trans lang="it_IT">disco</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(free)">
|
<token name="tr(free)">
|
||||||
<trans lang="en_EN">free</trans>
|
<trans lang="en_EN">free</trans>
|
||||||
|
@ -394,7 +401,7 @@
|
||||||
<trans lang="de_DE">Windgeschwindigkeit</trans>
|
<trans lang="de_DE">Windgeschwindigkeit</trans>
|
||||||
<trans lang="fi_FI">Tuulen nopeus</trans>
|
<trans lang="fi_FI">Tuulen nopeus</trans>
|
||||||
<trans lang="hu_HU">Szélsebesség</trans>
|
<trans lang="hu_HU">Szélsebesség</trans>
|
||||||
<trans lang="it_IT">Velcità vento</trans>
|
<trans lang="it_IT">Velocità vento</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(cloudcover)">
|
<token name="tr(cloudcover)">
|
||||||
<trans lang="en_EN">Cloud Cover</trans>
|
<trans lang="en_EN">Cloud Cover</trans>
|
||||||
|
@ -485,7 +492,7 @@
|
||||||
<trans lang="de_DE">Unterstützte Plugins</trans>
|
<trans lang="de_DE">Unterstützte Plugins</trans>
|
||||||
<trans lang="fi_FI">Tuetut laajennokset</trans>
|
<trans lang="fi_FI">Tuetut laajennokset</trans>
|
||||||
<trans lang="hu_HU">Támogatott Beépülő Modulok</trans>
|
<trans lang="hu_HU">Támogatott Beépülő Modulok</trans>
|
||||||
<trans lang="it_IT">Plugin supportati</trans>
|
<trans lang="it_IT">Plugins supportati</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(usedfonts)">
|
<token name="tr(usedfonts)">
|
||||||
<trans lang="en_EN">Used Fonts</trans>
|
<trans lang="en_EN">Used Fonts</trans>
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
<parameter type="bool" name="scrollepg" displaytext="{tr(scrollepgtext)}">1</parameter>
|
<parameter type="bool" name="scrollepg" displaytext="{tr(scrollepgtext)}">1</parameter>
|
||||||
<parameter type="separator" name="sepzapcockpit" displaytext="{tr(sepzapcockpit)}"/>
|
<parameter type="separator" name="sepzapcockpit" displaytext="{tr(sepzapcockpit)}"/>
|
||||||
<parameter type="int" name="fadetimezapcockpit" displaytext="{tr(fadetimezapcockpit)}">0</parameter>
|
<parameter type="int" name="fadetimezapcockpit" displaytext="{tr(fadetimezapcockpit)}">0</parameter>
|
||||||
<parameter type="int" name="shifttimezapcockpit" displaytext="{tr(shifttimezapcockpit)}">200</parameter>
|
<parameter type="int" name="shifttimezapcockpit" displaytext="{tr(shifttimezapcockpit)}">0</parameter>
|
||||||
<parameter type="separator" name="sepzapcockpitdetail" displaytext="{tr(sepzapcockpitdetail)}"/>
|
<parameter type="separator" name="sepzapcockpitdetail" displaytext="{tr(sepzapcockpitdetail)}"/>
|
||||||
<parameter type="int" name="zapdetaildatetimefs" min="0" max="100" displaytext="{tr(zapdetaildatetimefs)}">80</parameter>
|
<parameter type="int" name="zapdetaildatetimefs" min="0" max="100" displaytext="{tr(zapdetaildatetimefs)}">80</parameter>
|
||||||
<parameter type="int" name="zapdetailheaderfs" min="0" max="100" displaytext="{tr(zapdetailheaderfs)}">80</parameter>
|
<parameter type="int" name="zapdetailheaderfs" min="0" max="100" displaytext="{tr(zapdetailheaderfs)}">80</parameter>
|
||||||
|
@ -227,7 +227,7 @@
|
||||||
<trans lang="de_DE">Aufzeichnungsmenü</trans>
|
<trans lang="de_DE">Aufzeichnungsmenü</trans>
|
||||||
<trans lang="fi_FI">Tallennevalikko</trans>
|
<trans lang="fi_FI">Tallennevalikko</trans>
|
||||||
<trans lang="hu_HU">Felvételek Menü</trans>
|
<trans lang="hu_HU">Felvételek Menü</trans>
|
||||||
<trans lang="it_IT">Menù timer</trans>
|
<trans lang="it_IT">Menù registrazioni</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(subdetailmenu)">
|
<token name="tr(subdetailmenu)">
|
||||||
<trans lang="en_EN">Detailed Views (EPG, Rec, text)</trans>
|
<trans lang="en_EN">Detailed Views (EPG, Rec, text)</trans>
|
||||||
|
@ -292,37 +292,41 @@
|
||||||
<trans lang="de_DE">Einblendzeit der Kanalanzeige in ms. Ist dieser Wert auf einen Wert > 0 gesetzt, werden alle OSD Elemente ausser dem VDR Menu ein- und ausgeblendet.</trans>
|
<trans lang="de_DE">Einblendzeit der Kanalanzeige in ms. Ist dieser Wert auf einen Wert > 0 gesetzt, werden alle OSD Elemente ausser dem VDR Menu ein- und ausgeblendet.</trans>
|
||||||
<trans lang="fi_FI">Häivytyksen kesto millisekunteina. Nollasta eriävä arvo aktivoi valikkojen häivytyksen.</trans>
|
<trans lang="fi_FI">Häivytyksen kesto millisekunteina. Nollasta eriävä arvo aktivoi valikkojen häivytyksen.</trans>
|
||||||
<trans lang="hu_HU">A csatorna kijelzés elhalványulás ms-ben. Ha ez az érték be van beállítva, hogy az érték > 0, az összes OSD elemek mellett a VDR menüt és elhalványulnak.</trans>
|
<trans lang="hu_HU">A csatorna kijelzés elhalványulás ms-ben. Ha ez az érték be van beállítva, hogy az érték > 0, az összes OSD elemek mellett a VDR menüt és elhalványulnak.</trans>
|
||||||
<trans lang="it_IT">Tempo di dissolvenza della visualizzazione del canale in ms. Se questo è settato ad un valore maggiore di 0 tutti gli elementi OSD dietro al menù Vdr si dissolvono in entrata ed uscita</trans>
|
<trans lang="it_IT">Tempo di dissolvenza della visualizzazione del canale in ms. Settato > di 0 tutti gli elementi OSD dietro al menù Vdr si dissolvono in entrata ed uscita</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(shifttext)">
|
<token name="tr(shifttext)">
|
||||||
<trans lang="en_EN">Shift time [ms]</trans>
|
<trans lang="en_EN">Shift time [ms]</trans>
|
||||||
<trans lang="de_DE">Einfahrzeit [ms]</trans>
|
<trans lang="de_DE">Einfahrzeit [ms]</trans>
|
||||||
<trans lang="fi_FI">Liukuman kesto [ms]</trans>
|
<trans lang="fi_FI">Liukuman kesto [ms]</trans>
|
||||||
<trans lang="hu_HU">Késleltetés ideje [ms]</trans>
|
<trans lang="hu_HU">Késleltetés ideje [ms]</trans>
|
||||||
<trans lang="it_IT">Tempo di dissolvenza [ms]</trans>
|
<trans lang="it_IT">Tempo di cambio [ms]</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(helpshift)">
|
<token name="tr(helpshift)">
|
||||||
<trans lang="en_EN">Shift time in ms. If this is set to a value larger 0 all OSD elements beside the VDR menu are shifted in and out from the bottom of the screen. If fadetime is also set to a value larger 0, still shifting is performed.</trans>
|
<trans lang="en_EN">Shift time in ms. If this is set to a value larger 0 all OSD elements beside the VDR menu are shifted in and out from the bottom of the screen. If fadetime is also set to a value larger 0, still shifting is performed.</trans>
|
||||||
<trans lang="de_DE">Einfahrzeit in ms. Ist dieser Wert auf einen Wert > 0 gesetzt, werden alle OSD Elemente ausser dem VDR Menu vom unteren Rand des Bildschirms herein- und herausgefahren. Falls fadetime ebenfalls auf einen Wert größer 0 gesetzt ist, wird das OSD trotzdem herein- und herausgefahren.</trans>
|
<trans lang="de_DE">Einfahrzeit in ms. Ist dieser Wert auf einen Wert > 0 gesetzt, werden alle OSD Elemente ausser dem VDR Menu vom unteren Rand des Bildschirms herein- und herausgefahren. Falls fadetime ebenfalls auf einen Wert größer 0 gesetzt ist, wird das OSD trotzdem herein- und herausgefahren.</trans>
|
||||||
<trans lang="fi_FI">Liukuman kesto millisekunteina. Nollasta eriävä arvo aktivoi valikkojen transitioefektit riippumatta häivytyksen kestosta.</trans>
|
<trans lang="fi_FI">Liukuman kesto millisekunteina. Nollasta eriävä arvo aktivoi valikkojen transitioefektit riippumatta häivytyksen kestosta.</trans>
|
||||||
<trans lang="hu_HU">Késleltetés idő ms-ben. Ha ez be van állítva, hogy az érték > 0, az összes OSD elemek mellett a VDR menü eltolódik, és ki a képernyő alján. Ha fadetime is ennek az értéke nagyobb 0, mindig eltolásával végezzük.</trans>
|
<trans lang="hu_HU">Késleltetés idő ms-ben. Ha ez be van állítva, hogy az érték > 0, az összes OSD elemek mellett a VDR menü eltolódik, és ki a képernyő alján. Ha fadetime is ennek az értéke nagyobb 0, mindig eltolásával végezzük.</trans>
|
||||||
<trans lang="it_IT">Tempo di cambio in ms. Se questo è settato ad un valore maggiore di 0 tutti gli elementi OSD dietro al menù Vdr cambiano dalla parte bassa dello schermo. Se il tempo di cambio fosse settato anche ad un valore maggiore di zero, comunque il cambio viene effettuato</trans>
|
<trans lang="it_IT">Tempo di cambio in ms. Settato > di 0 tutti gli elementi OSD di lato al menù Vdr cambiano dalla parte bassa dello schermo. Se il tempo di cambio fosse settato anche ad un valore > di zero, comunque il cambio viene effettuato</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(listfadetimetext)">
|
<token name="tr(listfadetimetext)">
|
||||||
<trans lang="en_EN">Fade time menus [ms]</trans>
|
<trans lang="en_EN">Fade time menus [ms]</trans>
|
||||||
<trans lang="de_DE">Überblendungszeit Menüs [ms]</trans>
|
<trans lang="de_DE">Überblendungszeit Menüs [ms]</trans>
|
||||||
|
<trans lang="it_IT">Menù tempo di dissolvenza [ms]</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(listshifttimetext)">
|
<token name="tr(listshifttimetext)">
|
||||||
<trans lang="en_EN">Shift time menus [ms]</trans>
|
<trans lang="en_EN">Shift time menus [ms]</trans>
|
||||||
<trans lang="de_DE">Übergangszeit Menüelemente [ms]</trans>
|
<trans lang="de_DE">Übergangszeit Menüelemente [ms]</trans>
|
||||||
|
<trans lang="it_IT">Menù Tempo di cambio [ms]</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(helplistfadetime)">
|
<token name="tr(helplistfadetime)">
|
||||||
<trans lang="en_EN">Fade time of menu elements when scrolling through the menus. If set to 0, this effect is disabled.</trans>
|
<trans lang="en_EN">Fade time of menu elements when scrolling through the menus. If set to 0, this effect is disabled.</trans>
|
||||||
<trans lang="de_DE">Überblendungszeit der Menüelemente beim Bewegen durch die Menüs. Steht dieser Wert auf 0, ist dieser Effekt deaktiviert.</trans>
|
<trans lang="de_DE">Überblendungszeit der Menüelemente beim Bewegen durch die Menüs. Steht dieser Wert auf 0, ist dieser Effekt deaktiviert.</trans>
|
||||||
|
<trans lang="it_IT">Tempo dissolvenza elementi del menù scorrendo i menù. Settato a 0, questo effetto è disabilitato</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(helplistshifttime)">
|
<token name="tr(helplistshifttime)">
|
||||||
<trans lang="en_EN">Shift time of menu elements when scrolling through the menus. If set to 0, this effect is disabled.</trans>
|
<trans lang="en_EN">Shift time of menu elements when scrolling through the menus. If set to 0, this effect is disabled.</trans>
|
||||||
<trans lang="de_DE">Übergangszeit der Menüelemente beim Bewegen durch die Menüs. Steht dieser Wert auf 0, ist dieser Effekt deaktiviert.</trans>
|
<trans lang="de_DE">Übergangszeit der Menüelemente beim Bewegen durch die Menüs. Steht dieser Wert auf 0, ist dieser Effekt deaktiviert.</trans>
|
||||||
|
<trans lang="it_IT">Tempo cambio elementi del menù scorrendo i menù. Settato a 0, questo effetto è disabilitato</trans>
|
||||||
</token>
|
</token>
|
||||||
<!-- displaychannel -->
|
<!-- displaychannel -->
|
||||||
<token name="tr(epgtextposy)">
|
<token name="tr(epgtextposy)">
|
||||||
|
@ -426,10 +430,12 @@
|
||||||
<token name="tr(zapclnumchannels)">
|
<token name="tr(zapclnumchannels)">
|
||||||
<trans lang="en_EN">Number of items in channels list</trans>
|
<trans lang="en_EN">Number of items in channels list</trans>
|
||||||
<trans lang="de_DE">Anzahl der Elemente in Kanalliste</trans>
|
<trans lang="de_DE">Anzahl der Elemente in Kanalliste</trans>
|
||||||
|
<trans lang="it_IT">Numero voci nella lista canali</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(zapglnumgroups)">
|
<token name="tr(zapglnumgroups)">
|
||||||
<trans lang="en_EN">Number of items in channel group list</trans>
|
<trans lang="en_EN">Number of items in channel group list</trans>
|
||||||
<trans lang="de_DE">Anzahl der Elemente in Kanalgruppenliste</trans>
|
<trans lang="de_DE">Anzahl der Elemente in Kanalgruppenliste</trans>
|
||||||
|
<trans lang="it_IT">Numero voci nella lista gruppo canali</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(zapclpresenttimefs)">
|
<token name="tr(zapclpresenttimefs)">
|
||||||
<trans lang="en_EN">Font size remaining time present event</trans>
|
<trans lang="en_EN">Font size remaining time present event</trans>
|
||||||
|
@ -494,7 +500,7 @@
|
||||||
<trans lang="en_EN">Font size description</trans>
|
<trans lang="en_EN">Font size description</trans>
|
||||||
<trans lang="de_DE">Schriftgröße Beschreibung</trans>
|
<trans lang="de_DE">Schriftgröße Beschreibung</trans>
|
||||||
<trans lang="fi_FI">Kirjasintyypin koko kuvaukselle</trans>
|
<trans lang="fi_FI">Kirjasintyypin koko kuvaukselle</trans>
|
||||||
<trans lang="it_IT">Dimensione carattere testo breve</trans>
|
<trans lang="it_IT">Dimensione carattere descrizione</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(zapcldetaildatetimefs)">
|
<token name="tr(zapcldetaildatetimefs)">
|
||||||
<trans lang="en_EN">Font size time in channel list detail view</trans>
|
<trans lang="en_EN">Font size time in channel list detail view</trans>
|
||||||
|
@ -548,13 +554,13 @@
|
||||||
<trans lang="en_EN">Height channel hints (% of screen height)</trans>
|
<trans lang="en_EN">Height channel hints (% of screen height)</trans>
|
||||||
<trans lang="de_DE">Höhe Kanal Hinweise (% der Bildschirmhöhe)</trans>
|
<trans lang="de_DE">Höhe Kanal Hinweise (% der Bildschirmhöhe)</trans>
|
||||||
<trans lang="fi_FI">Korkeus (% näytön korkeudesta)</trans>
|
<trans lang="fi_FI">Korkeus (% näytön korkeudesta)</trans>
|
||||||
<trans lang="it_IT">Altezza suggerimenti canale (% della altezza del video)</trans>
|
<trans lang="it_IT">Altezza suggerimenti canale (in % altezza dello schermo)</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(zapchannelhintswidth)">
|
<token name="tr(zapchannelhintswidth)">
|
||||||
<trans lang="en_EN">Width channel hints (% of screen width)</trans>
|
<trans lang="en_EN">Width channel hints (% of screen width)</trans>
|
||||||
<trans lang="de_DE">Breite Kanal Hinweise (% der Bildschirmbreite)</trans>
|
<trans lang="de_DE">Breite Kanal Hinweise (% der Bildschirmbreite)</trans>
|
||||||
<trans lang="fi_FI">Leveys (% näytön leveydestä)</trans>
|
<trans lang="fi_FI">Leveys (% näytön leveydestä)</trans>
|
||||||
<trans lang="it_IT">Larghezza suggerimenti canale (% della larghezza del video)</trans>
|
<trans lang="it_IT">Larghezza suggerimenti canale (in % larghezza dello schermo)</trans>
|
||||||
</token>
|
</token>
|
||||||
<!-- recording display -->
|
<!-- recording display -->
|
||||||
<token name="tr(replaytitlesize)">
|
<token name="tr(replaytitlesize)">
|
||||||
|
@ -606,7 +612,7 @@
|
||||||
<trans lang="de_DE">Schriftgröße Header</trans>
|
<trans lang="de_DE">Schriftgröße Header</trans>
|
||||||
<trans lang="fi_FI">Kirjasintyypin koko otsikkopalkille</trans>
|
<trans lang="fi_FI">Kirjasintyypin koko otsikkopalkille</trans>
|
||||||
<trans lang="hu_HU">Betűméret fejléc</trans>
|
<trans lang="hu_HU">Betűméret fejléc</trans>
|
||||||
<trans lang="it_IT">Dimensione del font del header</trans>
|
<trans lang="it_IT">Dimensione del font dell'intestazione</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(headerdatefontsize)">
|
<token name="tr(headerdatefontsize)">
|
||||||
<trans lang="en_EN">Font size date</trans>
|
<trans lang="en_EN">Font size date</trans>
|
||||||
|
@ -656,7 +662,7 @@
|
||||||
<trans lang="de_DE">Nummerierung der Listenelemente anzeigen</trans>
|
<trans lang="de_DE">Nummerierung der Listenelemente anzeigen</trans>
|
||||||
<trans lang="fi_FI">Näytä numeroinnit valikkoriveillä</trans>
|
<trans lang="fi_FI">Näytä numeroinnit valikkoriveillä</trans>
|
||||||
<trans lang="hu_HU">A listaelemek kijelzőszámozása</trans>
|
<trans lang="hu_HU">A listaelemek kijelzőszámozása</trans>
|
||||||
<trans lang="it_IT">Visualizzazione degli elementi della lista</trans>
|
<trans lang="it_IT">Visualizzazione numerica degli elementi della lista</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(numitemsmain)">
|
<token name="tr(numitemsmain)">
|
||||||
<trans lang="en_EN">Number of main menu items</trans>
|
<trans lang="en_EN">Number of main menu items</trans>
|
||||||
|
@ -734,7 +740,7 @@
|
||||||
<trans lang="de_DE">Schriftgröße Titel</trans>
|
<trans lang="de_DE">Schriftgröße Titel</trans>
|
||||||
<trans lang="fi_FI">Kirjasintyypin koko nimikkeelle</trans>
|
<trans lang="fi_FI">Kirjasintyypin koko nimikkeelle</trans>
|
||||||
<trans lang="hu_HU">Betűméret cím</trans>
|
<trans lang="hu_HU">Betűméret cím</trans>
|
||||||
<trans lang="it_IT">Posizione verticale del titolo EPG</trans>
|
<trans lang="it_IT">Dimensione font del titolo</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(schedulessizecurrenttext)">
|
<token name="tr(schedulessizecurrenttext)">
|
||||||
<trans lang="en_EN">Font size text</trans>
|
<trans lang="en_EN">Font size text</trans>
|
||||||
|
@ -877,11 +883,12 @@
|
||||||
<trans lang="de_DE">Anzahl Menüelemente</trans>
|
<trans lang="de_DE">Anzahl Menüelemente</trans>
|
||||||
<trans lang="fi_FI">Valikkorivien lukumäärä</trans>
|
<trans lang="fi_FI">Valikkorivien lukumäärä</trans>
|
||||||
<trans lang="hu_HU">menüpontok száma</trans>
|
<trans lang="hu_HU">menüpontok száma</trans>
|
||||||
<trans lang="it_IT">Numero delle voci</trans>
|
<trans lang="it_IT">Numero delle voci del menù</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(recusethumbs)">
|
<token name="tr(recusethumbs)">
|
||||||
<trans lang="en_EN">Show posters</trans>
|
<trans lang="en_EN">Show posters</trans>
|
||||||
<trans lang="de_DE">Poster anzeigen</trans>
|
<trans lang="de_DE">Poster anzeigen</trans>
|
||||||
|
<trans lang="it_IT">Mostra poster</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(recposydate)">
|
<token name="tr(recposydate)">
|
||||||
<trans lang="en_EN">Vertical position date</trans>
|
<trans lang="en_EN">Vertical position date</trans>
|
||||||
|
@ -909,7 +916,7 @@
|
||||||
<trans lang="de_DE">Schriftgröße Titel</trans>
|
<trans lang="de_DE">Schriftgröße Titel</trans>
|
||||||
<trans lang="fi_FI">Kirjasintyypin koko nimikkeelle</trans>
|
<trans lang="fi_FI">Kirjasintyypin koko nimikkeelle</trans>
|
||||||
<trans lang="hu_HU">Betűméret cím</trans>
|
<trans lang="hu_HU">Betűméret cím</trans>
|
||||||
<trans lang="it_IT">Posizione verticale del titolo</trans>
|
<trans lang="it_IT">Dimensione font del titolo</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(recposyfoldertitle)">
|
<token name="tr(recposyfoldertitle)">
|
||||||
<trans lang="en_EN">Vertical position folder name</trans>
|
<trans lang="en_EN">Vertical position folder name</trans>
|
||||||
|
@ -949,6 +956,7 @@
|
||||||
<token name="tr(sizewidesmall)">
|
<token name="tr(sizewidesmall)">
|
||||||
<trans lang="en_EN">Font size small wide menu</trans>
|
<trans lang="en_EN">Font size small wide menu</trans>
|
||||||
<trans lang="de_DE">Schriftgröße Klein breites Menü</trans>
|
<trans lang="de_DE">Schriftgröße Klein breites Menü</trans>
|
||||||
|
<trans lang="it_IT">Dimensione font del menù piccolo</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(showcurrent)">
|
<token name="tr(showcurrent)">
|
||||||
<trans lang="en_EN">Show info for selected list element</trans>
|
<trans lang="en_EN">Show info for selected list element</trans>
|
||||||
|
|
|
@ -16,10 +16,10 @@
|
||||||
</datetime>
|
</datetime>
|
||||||
|
|
||||||
<time>
|
<time>
|
||||||
<area x="80%" y="80%" width="14%" height="15%" layer="2">
|
<area x="80%" y="79%" width="14%" height="15%" layer="2">
|
||||||
<drawtext x="0" align="right" valign="center" fontsize="60%" font="{digital}" color="{fontdefault}" text="{hour}:{printf('%02d', min)}" />
|
<drawtext x="0" align="right" valign="center" fontsize="60%" font="{digital}" color="{fontdefault}" text="{hour}:{printf('%02d', min)}" />
|
||||||
</area>
|
</area>
|
||||||
<area x="94%" y="80%" width="5%" height="15%" layer="2">
|
<area x="94%" y="79%" width="5%" height="15%" layer="2">
|
||||||
<drawtext name="clock" x="0" align="right" valign="center" fontsize="60%" font="{digital}" color="clrTransparent" text="1" />
|
<drawtext name="clock" x="0" align="right" valign="center" fontsize="60%" font="{digital}" color="clrTransparent" text="1" />
|
||||||
<drawtext name="clocksec" x="0" y="{areaheight}/2 + {height(clock)}/2 - {height(clocksec)} - 5" fontsize="45%" font="{digital}" color="{fontdefault}" text=":{printf('%02d', sec)}" />
|
<drawtext name="clocksec" x="0" y="{areaheight}/2 + {height(clock)}/2 - {height(clocksec)} - 5" fontsize="45%" font="{digital}" color="{fontdefault}" text=":{printf('%02d', sec)}" />
|
||||||
</area>
|
</area>
|
||||||
|
@ -37,13 +37,12 @@
|
||||||
<epginfo>
|
<epginfo>
|
||||||
<!-- current schedule -->
|
<!-- current schedule -->
|
||||||
<area x="67%" y="76%" width="13%" height="10%" layer="2">
|
<area x="67%" y="76%" width="13%" height="10%" layer="2">
|
||||||
<drawtext align="right" valign="center" fontsize="{areaheight}*{startstopfontsize}/100" font="{bold}" color="{fontactive}" text="{currentstart} - {currentstop}" />
|
<drawtext condition="empty{currentsubtitle}" align="right" valign="center" fontsize="{areaheight}*{startstopfontsize}/100" font="{bold}" color="{fontactive}" text="{currentstart} - {currentstop}" />
|
||||||
|
<drawtext condition="isset{currentsubtitle}" align="right" y="{areaheight}*{epgtextposy}/100" fontsize="{areaheight}*{startstopfontsize}/100" font="{bold}" color="{fontactive}" text="{currentstart} - {currentstop}" />
|
||||||
</area>
|
</area>
|
||||||
<areascroll condition="{scrollepg}++empty{currentsubtitle}" scrollelement="title" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="fast" x="20%" y="76%" width="47%" height="10%" layer="2">
|
<areascroll condition="{scrollepg}" scrollelement="title" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="fast" x="20%" y="76%" width="47%" height="10%" layer="2">
|
||||||
<drawtext name="title" x="0" valign="center" fontsize="{areaheight}*{epgtextfontsizelarge}/100" width="100%" font="{regular}" color="{fontdefault}" text="{currenttitle}" />
|
<drawtext condition="empty{currentsubtitle}" name="title" x="0" valign="center" fontsize="{areaheight}*{epgtextfontsizelarge}/100" width="100%" font="{regular}" color="{fontdefault}" text="{currenttitle}" />
|
||||||
</areascroll>
|
<drawtext condition="isset{currentsubtitle}" name="title" x="0" y="{areaheight}*{epgtextposy}/100" fontsize="{areaheight}*{epgtextfontsize}/100" width="100%" font="{regular}" color="{fontdefault}" text="{currenttitle}" />
|
||||||
<areascroll condition="{scrollepg}++isset{currentsubtitle}" scrollelement="title" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="fast" x="20%" y="76%" width="47%" height="10%" layer="2">
|
|
||||||
<drawtext name="title" x="0" y="{areaheight}*{epgtextposy}/100" fontsize="{areaheight}*{epgtextfontsize}/100" width="100%" font="{regular}" color="{fontdefault}" text="{currenttitle}" />
|
|
||||||
</areascroll>
|
</areascroll>
|
||||||
<areascroll condition="{scrollepg}++isset{currentsubtitle}" scrollelement="subtitle" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="fast" x="20%" y="76%" width="50%" height="10%" layer="3">
|
<areascroll condition="{scrollepg}++isset{currentsubtitle}" scrollelement="subtitle" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="fast" x="20%" y="76%" width="50%" height="10%" layer="3">
|
||||||
<drawtext name="subtitle" x="0" y="{areaheight}*{epgsubtextposy}/100" fontsize="{areaheight}*{epgsubtextfontsize}/100" width="100%" font="{regular}" color="{fontdefault}" text="{currentsubtitle}" />
|
<drawtext name="subtitle" x="0" y="{areaheight}*{epgsubtextposy}/100" fontsize="{areaheight}*{epgsubtextfontsize}/100" width="100%" font="{regular}" color="{fontdefault}" text="{currentsubtitle}" />
|
||||||
|
@ -53,6 +52,13 @@
|
||||||
<drawtext condition="isset{currentsubtitle}" x="0" y="{areaheight}*{epgsubtextposy}/100" fontsize="{areaheight}*{epgsubtextfontsize}/100" width="{areawidth} - {width(startstop)} - 10" font="{regular}" color="{fontdefault}" text="{currentsubtitle}" />
|
<drawtext condition="isset{currentsubtitle}" x="0" y="{areaheight}*{epgsubtextposy}/100" fontsize="{areaheight}*{epgsubtextfontsize}/100" width="{areawidth} - {width(startstop)} - 10" font="{regular}" color="{fontdefault}" text="{currentsubtitle}" />
|
||||||
<drawtext condition="empty{currentsubtitle}" x="0" valign="center" fontsize="{areaheight}*{epgtextfontsizelarge}/100" width="{areawidth} - {width(startstop)} - 10" font="{regular}" color="{fontdefault}" text="{currenttitle}" />
|
<drawtext condition="empty{currentsubtitle}" x="0" valign="center" fontsize="{areaheight}*{epgtextfontsizelarge}/100" width="{areawidth} - {width(startstop)} - 10" font="{regular}" color="{fontdefault}" text="{currenttitle}" />
|
||||||
</area>
|
</area>
|
||||||
|
|
||||||
|
<!-- time remaining -->
|
||||||
|
<area x="70%" y="82%" width="10%" height="4%" layer="2">
|
||||||
|
<drawtext condition="isset{currentsubtitle}" align="right" y="0" fontsize="75%" font="{regular}" color="{fontactive}" text="+{currentremaining} min" />
|
||||||
|
<drawtext condition="empty{currentsubtitle}" align="right" y="25%" fontsize="75%" font="{regular}" color="{fontactive}" text="+{currentremaining} min" />
|
||||||
|
</area>
|
||||||
|
|
||||||
<!-- next schedule -->
|
<!-- next schedule -->
|
||||||
<area x="20%" y="88%" width="60%" height="10%" layer="2">
|
<area x="20%" y="88%" width="60%" height="10%" layer="2">
|
||||||
<drawtext name="startstop" align="right" valign="center" fontsize="{areaheight}*{startstopfontsize}/100" font="{bold}" color="{fontdefault}" text="{nextstart} - {nextstop}" />
|
<drawtext name="startstop" align="right" valign="center" fontsize="{areaheight}*{startstopfontsize}/100" font="{bold}" color="{fontdefault}" text="{nextstart} - {nextstop}" />
|
||||||
|
@ -71,10 +77,6 @@
|
||||||
<drawrectangle condition="{permashift}" x="{elapsed}/{duration}*{areawidth} - {livebuffer}/{duration}*{areawidth}" y="0" width="{livebuffer}/{duration}*{areawidth}" height="100%" color="{progressbartimeshift}" />
|
<drawrectangle condition="{permashift}" x="{elapsed}/{duration}*{areawidth} - {livebuffer}/{duration}*{areawidth}" y="0" width="{livebuffer}/{duration}*{areawidth}" height="100%" color="{progressbartimeshift}" />
|
||||||
<drawrectangle condition="{permashift}" x="0" y="{areaheight}*0.2" width="{areawidth}*{elapsed}/{duration} - 1" height="{areaheight}*0.6" color="{progressbar}" />
|
<drawrectangle condition="{permashift}" x="0" y="{areaheight}*0.2" width="{areawidth}*{elapsed}/{duration} - 1" height="{areaheight}*0.6" color="{progressbar}" />
|
||||||
</area>
|
</area>
|
||||||
<!-- time remaining -->
|
|
||||||
<area x="70%" y="83%" width="10%" height="3%" layer="2">
|
|
||||||
<drawtext align="right" y="0" fontsize="100%" font="{regular}" color="{fontactive}" text="+{currentremaining} min" />
|
|
||||||
</area>
|
|
||||||
</progressbar>
|
</progressbar>
|
||||||
|
|
||||||
<statusinfo>
|
<statusinfo>
|
||||||
|
@ -136,7 +138,7 @@
|
||||||
</channelgroup>
|
</channelgroup>
|
||||||
|
|
||||||
<currentweather>
|
<currentweather>
|
||||||
<area x="80%" y="76%" width="19%" height="5%" layer="2">
|
<area x="80%" y="91%" width="17%" height="4%" layer="2">
|
||||||
<drawtext name="temperature" align="right" y="0" fontsize="100%" font="{regular}" color="{fontdefault}" text="{temperature}°C" />
|
<drawtext name="temperature" align="right" y="0" fontsize="100%" font="{regular}" color="{fontdefault}" text="{temperature}°C" />
|
||||||
<drawimage imagetype="icon" path="{icon}" x="{posx(temperature)} - {areaheight}" valign="center" width="0.8*{areaheight}" height="0.8*{areaheight}"/>
|
<drawimage imagetype="icon" path="{icon}" x="{posx(temperature)} - {areaheight}" valign="center" width="0.8*{areaheight}" height="0.8*{areaheight}"/>
|
||||||
</area>
|
</area>
|
||||||
|
|
|
@ -23,10 +23,13 @@
|
||||||
<drawrectangle x="0" y="{areaheight}-1" width="100%" height="1" color="{menubackline}" />
|
<drawrectangle x="0" y="{areaheight}-1" width="100%" height="1" color="{menubackline}" />
|
||||||
</area>
|
</area>
|
||||||
<!-- Separators -->
|
<!-- Separators -->
|
||||||
<area x="1%" condition="{separator}" width="98%" layer="3">
|
<area x="1%" condition="{separator} ++ not{setup} ++ not{neutrinoepg} ++ not{systeminfo} ++ not{column2set}" width="98%" layer="3">
|
||||||
<drawtext align="center" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="98%" color="{fontactive}" text="{column1}" />
|
<drawtext valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="98%" color="{fontactive}" text="{column1}" />
|
||||||
</area>
|
</area>
|
||||||
<!-- Setup Menus -->
|
<!-- Setup Menus -->
|
||||||
|
<area x="1%" condition="{separator} ++ {setup}" width="98%" layer="3">
|
||||||
|
<drawtext align="center" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="98%" color="{fontactive}" text="{column1}" />
|
||||||
|
</area>
|
||||||
<areacontainer condition="not{separator} ++ {setup}">
|
<areacontainer condition="not{separator} ++ {setup}">
|
||||||
<area condition="{column2set}" x="1%" width="69%" layer="3">
|
<area condition="{column2set}" x="1%" width="69%" layer="3">
|
||||||
<drawtext condition="not{current}" x="0" width="99%" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" color="{fontdefault}" text="{column1}" />
|
<drawtext condition="not{current}" x="0" width="99%" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" color="{fontdefault}" text="{column1}" />
|
||||||
|
@ -42,6 +45,9 @@
|
||||||
</area>
|
</area>
|
||||||
</areacontainer>
|
</areacontainer>
|
||||||
<!-- Neutrino EPG Plugin -->
|
<!-- Neutrino EPG Plugin -->
|
||||||
|
<area x="1%" condition="{separator} ++ {neutrinoepg}" width="98%" layer="3">
|
||||||
|
<drawtext align="center" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="98%" color="{fontactive}" text="{column1}" />
|
||||||
|
</area>
|
||||||
<areacontainer condition="not{separator} ++ {neutrinoepg}">
|
<areacontainer condition="not{separator} ++ {neutrinoepg}">
|
||||||
<area condition="not{current}++{column5set}" x="1%" width="100%" layer="4">
|
<area condition="not{current}++{column5set}" x="1%" width="100%" layer="4">
|
||||||
<drawtext x="{column2x}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="{column2width}" color="{fontdefault}" text="{column2}" />
|
<drawtext x="{column2x}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="{column2width}" color="{fontdefault}" text="{column2}" />
|
||||||
|
@ -81,10 +87,14 @@
|
||||||
</area>
|
</area>
|
||||||
</areacontainer>
|
</areacontainer>
|
||||||
<!-- Systeminfo Plugin -->
|
<!-- Systeminfo Plugin -->
|
||||||
|
<area x="1%" condition="{separator} ++ {systeminfo}" width="98%" layer="3">
|
||||||
|
<drawtext align="center" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="98%" color="{fontactive}" text="{column1}" />
|
||||||
|
</area>
|
||||||
<areacontainer condition="not{separator} ++ {systeminfo}">
|
<areacontainer condition="not{separator} ++ {systeminfo}">
|
||||||
<area condition="not{current}" x="1%" width="100%" layer="4">
|
<area condition="not{current}" x="1%" width="100%" layer="4">
|
||||||
<drawtext x="{column1x}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="{column1width}" color="{fontdefault}" text="{column1}" />
|
<drawtext x="{column1x}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="{column1width}" color="{fontdefault}" text="{column1}" />
|
||||||
<drawtext x="{column2x}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="{column2width}" color="{fontdefault}" text="{column2}" />
|
<drawtext condition="not{column3set} ++ not{column3pb}" x="{column2x}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="{areawidth}-{column2x}-5" color="{fontdefault}" text="{column2}" />
|
||||||
|
<drawtext condition="{column3set} || {column3pb}" x="{column2x}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="{column2width}" color="{fontdefault}" text="{column2}" />
|
||||||
<drawtext condition="not{column3pb}" x="{column3x}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="{column3width}" color="{fontdefault}" text="{column3}" />
|
<drawtext condition="not{column3pb}" x="{column3x}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="{column3width}" color="{fontdefault}" text="{column3}" />
|
||||||
<drawrectangle condition="{column3pb}" x="{column3x}" y="{areaheight}*0.2" width="{column3width}" height="{areaheight}*0.6" color="{progressbar}" />
|
<drawrectangle condition="{column3pb}" x="{column3x}" y="{areaheight}*0.2" width="{column3width}" height="{areaheight}*0.6" color="{progressbar}" />
|
||||||
<drawrectangle condition="{column3pb}" x="{column3x}+1" y="{areaheight}*0.2+1" width="{column3width}-2" height="{areaheight}*0.6-2" color="{progressbarback}" />
|
<drawrectangle condition="{column3pb}" x="{column3x}+1" y="{areaheight}*0.2+1" width="{column3width}-2" height="{areaheight}*0.6-2" color="{progressbarback}" />
|
||||||
|
@ -92,7 +102,8 @@
|
||||||
</area>
|
</area>
|
||||||
<area condition="{current}" x="1%" width="100%" layer="4">
|
<area condition="{current}" x="1%" width="100%" layer="4">
|
||||||
<drawtext x="{column1x}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="{column1width}" color="{fontmenuactive}" text="{column1}" />
|
<drawtext x="{column1x}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="{column1width}" color="{fontmenuactive}" text="{column1}" />
|
||||||
<drawtext x="{column2x}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="{column2width}" color="{fontmenuactive}" text="{column2}" />
|
<drawtext condition="not{column3set} ++ not{column3pb}" x="{column2x}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="{areawidth}-{column2x}-2" color="{fontmenuactive}" text="{column2}" />
|
||||||
|
<drawtext condition="{column3set} || {column3pb}" x="{column2x}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="{column2width}" color="{fontmenuactive}" text="{column2}" />
|
||||||
<drawtext condition="not{column3pb}" x="{column3x}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="{column3width}" color="{fontdefault}" text="{column3}" />
|
<drawtext condition="not{column3pb}" x="{column3x}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="{column3width}" color="{fontdefault}" text="{column3}" />
|
||||||
<drawrectangle condition="{column3pb}" x="{column3x}" y="{areaheight}*0.2" width="{column3width}" height="{areaheight}*0.6" color="{progressbar}" />
|
<drawrectangle condition="{column3pb}" x="{column3x}" y="{areaheight}*0.2" width="{column3width}" height="{areaheight}*0.6" color="{progressbar}" />
|
||||||
<drawrectangle condition="{column3pb}" x="{column3x}+1" y="{areaheight}*0.2+1" width="{column3width}-2" height="{areaheight}*0.6-2" color="{progressbarback}" />
|
<drawrectangle condition="{column3pb}" x="{column3x}+1" y="{areaheight}*0.2+1" width="{column3width}-2" height="{areaheight}*0.6-2" color="{progressbarback}" />
|
||||||
|
@ -100,20 +111,32 @@
|
||||||
</area>
|
</area>
|
||||||
</areacontainer>
|
</areacontainer>
|
||||||
<!-- Default Menus -->
|
<!-- Default Menus -->
|
||||||
<areacontainer condition="not{separator} ++ not{setup} ++ not{neutrinoepg} ++ not{systeminfo}">
|
<areacontainer condition="not{separator} ++ not{setup} ++ not{neutrinoepg} ++ not{systeminfo} || {column2set} ++ not{setup} ++ not{neutrinoepg} ++ not{systeminfo}">
|
||||||
<areascroll scrollelement="column1" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium" x="1%" width="{column1width}" layer="3">
|
<areascroll condition="{column2set}" scrollelement="column1" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium" x="1%" width="{column1width}" layer="3">
|
||||||
<drawtext condition="not{current}" x="{column1x}" width="{column1width}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" color="{fontdefault}" text="{column1}" />
|
<drawtext condition="not{current} ++ not{separator}" x="{column1x}" width="{column1width}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" color="{fontdefault}" text="{column1}" />
|
||||||
|
<drawtext condition="not{current} ++ {separator}" x="{column1x}" width="{column1width}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" color="{fontactive}" text="{column1}" />
|
||||||
<drawtext condition="{current}" name="column1" x="{column1x}" width="{column1width}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" color="{fontmenuactive}" text="{column1}" />
|
<drawtext condition="{current}" name="column1" x="{column1x}" width="{column1width}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" color="{fontmenuactive}" text="{column1}" />
|
||||||
</areascroll>
|
</areascroll>
|
||||||
<area condition="not{current}" x="1%" width="100%" layer="4">
|
<area condition="not{current}" x="1%" width="100%" layer="4">
|
||||||
<drawtext condition="{column2set}" x="{column2x}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="{column2width}" color="{fontdefault}" text="{column2}" />
|
<drawtext condition="not{column2set} ++ not{separator}" x="{column1x}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="{areawidth}-{column1x}" color="{fontdefault}" text="{column1}" />
|
||||||
<drawtext condition="{column3set}" x="{column3x}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="{column3width}" color="{fontdefault}" text="{column3}" />
|
<drawtext condition="not{column2set} ++ {separator}" x="{column1x}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="{areawidth}-{column1x}" color="{fontactive}" text="{column1}" />
|
||||||
<drawtext condition="{column4set}" x="{column4x}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="{column4width}" color="{fontdefault}" text="{column4}" />
|
<drawtext condition="{column2set} ++ {column3set} ++ not{separator}" x="{column2x}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="{column2width}" color="{fontdefault}" text="{column2}" />
|
||||||
<drawtext condition="{column5set}" x="{column5x}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="{column5width}" color="{fontdefault}" text="{column5}" />
|
<drawtext condition="{column2set} ++ {column3set} ++ {separator}" x="{column2x}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="{column2width}" color="{fontactive}" text="{column2}" />
|
||||||
<drawtext condition="{column6set}" x="{column6x}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="{column6width}" color="{fontdefault}" text="{column6}" />
|
<drawtext condition="{column2set} ++ not{column3set} ++ not{separator}" x="{column2x}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="{areawidth}-{column2x}" color="{fontdefault}" text="{column2}" />
|
||||||
|
<drawtext condition="{column2set} ++ not{column3set} ++ {separator}" x="{column2x}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="{areawidth}-{column2x}" color="{fontactive}" text="{column2}" />
|
||||||
|
<drawtext condition="{column3set} ++ not{separator}" x="{column3x}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="{column3width}" color="{fontdefault}" text="{column3}" />
|
||||||
|
<drawtext condition="{column3set} ++ {separator}" x="{column3x}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="{column3width}" color="{fontactive}" text="{column3}" />
|
||||||
|
<drawtext condition="{column4set} ++ not{separator}" x="{column4x}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="{column4width}" color="{fontdefault}" text="{column4}" />
|
||||||
|
<drawtext condition="{column4set} ++ {separator}" x="{column4x}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="{column4width}" color="{fontactive}" text="{column4}" />
|
||||||
|
<drawtext condition="{column5set} ++ not{separator}" x="{column5x}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="{column5width}" color="{fontdefault}" text="{column5}" />
|
||||||
|
<drawtext condition="{column5set} ++ {separator}" x="{column5x}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="{column5width}" color="{fontactive}" text="{column5}" />
|
||||||
|
<drawtext condition="{column6set} ++ not{separator}" x="{column6x}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="{column6width}" color="{fontdefault}" text="{column6}" />
|
||||||
|
<drawtext condition="{column6set} ++ {separator}" x="{column6x}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="{column6width}" color="{fontactive}" text="{column6}" />
|
||||||
</area>
|
</area>
|
||||||
<area condition="{current}" x="1%" width="100%" layer="4">
|
<area condition="{current}" x="1%" width="100%" layer="4">
|
||||||
<drawtext condition="{column2set}" x="{column2x}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="{column2width}" color="{fontmenuactive}" text="{column2}" />
|
<drawtext condition="not{column2set}" x="{column1x}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="{areawidth}-{column1x}" color="{fontmenuactive}" text="{column1}" />
|
||||||
|
<drawtext condition="{column2set} ++ {column3set}" x="{column2x}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="{column2width}" color="{fontmenuactive}" text="{column2}" />
|
||||||
|
<drawtext condition="{column2set} ++ not{column3set}" x="{column2x}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="{areawidth}-{column2x}" color="{fontmenuactive}" text="{column2}" />
|
||||||
<drawtext condition="{column3set}" x="{column3x}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="{column3width}" color="{fontmenuactive}" text="{column3}" />
|
<drawtext condition="{column3set}" x="{column3x}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="{column3width}" color="{fontmenuactive}" text="{column3}" />
|
||||||
<drawtext condition="{column4set}" x="{column4x}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="{column4width}" color="{fontmenuactive}" text="{column4}" />
|
<drawtext condition="{column4set}" x="{column4x}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="{column4width}" color="{fontmenuactive}" text="{column4}" />
|
||||||
<drawtext condition="{column5set}" x="{column5x}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="{column5width}" color="{fontmenuactive}" text="{column5}" />
|
<drawtext condition="{column5set}" x="{column5x}" valign="center" font="{regular}" fontsize="{areaheight}*{defaultitemfontsize}/100" width="{column5width}" color="{fontmenuactive}" text="{column5}" />
|
||||||
|
|
|
@ -47,7 +47,8 @@
|
||||||
<drawtext name="line4" x="0" y="{posy(line3)} + {height(line3)} + 10" width="96%" font="{regular}" fontsize="{areaheight}*{detailtextsize}/100" color="{fontdefault}" text="{tr(reclengthcutted)}: {recordinglengthcutted}" />
|
<drawtext name="line4" x="0" y="{posy(line3)} + {height(line3)} + 10" width="96%" font="{regular}" fontsize="{areaheight}*{detailtextsize}/100" color="{fontdefault}" text="{tr(reclengthcutted)}: {recordinglengthcutted}" />
|
||||||
<drawtext name="line5" x="0" y="{posy(line4)} + {height(line4)} + 10" width="96%" font="{regular}" fontsize="{areaheight}*{detailtextsize}/100" color="{fontdefault}" text="{tr(bitrate)}: {recordingbitrate}" />
|
<drawtext name="line5" x="0" y="{posy(line4)} + {height(line4)} + 10" width="96%" font="{regular}" fontsize="{areaheight}*{detailtextsize}/100" color="{fontdefault}" text="{tr(bitrate)}: {recordingbitrate}" />
|
||||||
<drawtext name="line6" x="0" y="{posy(line5)} + {height(line5)} + 10" width="96%" font="{regular}" fontsize="{areaheight}*{detailtextsize}/100" color="{fontdefault}" text="{tr(format)}: {recordingformat}" />
|
<drawtext name="line6" x="0" y="{posy(line5)} + {height(line5)} + 10" width="96%" font="{regular}" fontsize="{areaheight}*{detailtextsize}/100" color="{fontdefault}" text="{tr(format)}: {recordingformat}" />
|
||||||
<drawtext x="0" y="{posy(line6)} + {height(line6)} + 10" width="96%" font="{regular}" fontsize="{areaheight}*{detailtextsize}/100" color="{fontdefault}" text="{tr(searchtimer)}: {searchtimer}" />
|
<drawtext condition="gt({errors}, -1)" name="line7" x="0" y="{posy(line6)} + {height(line6)} + 10" width="96%" font="{regular}" fontsize="{areaheight}*{detailtextsize}/100" color="{fontdefault}" text="{tr(errors)}: {errors}" />
|
||||||
|
<drawtext x="0" y="{posy(line6)} + 2 * {height(line6)} + 20" width="96%" font="{regular}" fontsize="{areaheight}*{detailtextsize}/100" color="{fontdefault}" text="{tr(searchtimer)}: {searchtimer}" />
|
||||||
</tab>
|
</tab>
|
||||||
|
|
||||||
<!-- TAB ACTORS -->
|
<!-- TAB ACTORS -->
|
||||||
|
|
|
@ -89,14 +89,14 @@
|
||||||
<trans lang="de_DE">Wiederholungen</trans>
|
<trans lang="de_DE">Wiederholungen</trans>
|
||||||
<trans lang="fi_FI">Uusinnat</trans>
|
<trans lang="fi_FI">Uusinnat</trans>
|
||||||
<trans lang="hu_HU">Ismétlés</trans>
|
<trans lang="hu_HU">Ismétlés</trans>
|
||||||
<trans lang="it_IT">Riavvii</trans>
|
<trans lang="it_IT">Repliche</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(rerunsof)">
|
<token name="tr(rerunsof)">
|
||||||
<trans lang="en_EN">Reruns of</trans>
|
<trans lang="en_EN">Reruns of</trans>
|
||||||
<trans lang="de_DE">Wiederholungen von</trans>
|
<trans lang="de_DE">Wiederholungen von</trans>
|
||||||
<trans lang="fi_FI">Uusinnat:</trans>
|
<trans lang="fi_FI">Uusinnat:</trans>
|
||||||
<trans lang="hu_HU">Ismétlés:</trans>
|
<trans lang="hu_HU">Ismétlés:</trans>
|
||||||
<trans lang="it_IT">Riavvi di</trans>
|
<trans lang="it_IT">Repliche di</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(actors)">
|
<token name="tr(actors)">
|
||||||
<trans lang="en_EN">Actors</trans>
|
<trans lang="en_EN">Actors</trans>
|
||||||
|
@ -215,14 +215,14 @@
|
||||||
<trans lang="de_DE">Einnahmen</trans>
|
<trans lang="de_DE">Einnahmen</trans>
|
||||||
<trans lang="fi_FI">Tuotto</trans>
|
<trans lang="fi_FI">Tuotto</trans>
|
||||||
<trans lang="hu_HU">Bevétel</trans>
|
<trans lang="hu_HU">Bevétel</trans>
|
||||||
<trans lang="it_IT">Incassi</trans>
|
<trans lang="it_IT">Incasso</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(adult)">
|
<token name="tr(adult)">
|
||||||
<trans lang="en_EN">Adult</trans>
|
<trans lang="en_EN">Adult</trans>
|
||||||
<trans lang="de_DE">Nur für Erwachsene</trans>
|
<trans lang="de_DE">Nur für Erwachsene</trans>
|
||||||
<trans lang="fi_FI">Vain aikuisille</trans>
|
<trans lang="fi_FI">Vain aikuisille</trans>
|
||||||
<trans lang="hu_HU">Felnőtt</trans>
|
<trans lang="hu_HU">Felnőtt</trans>
|
||||||
<trans lang="it_IT">Adulti</trans>
|
<trans lang="it_IT">Adulto</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(releasedate)">
|
<token name="tr(releasedate)">
|
||||||
<trans lang="en_EN">Release Date</trans>
|
<trans lang="en_EN">Release Date</trans>
|
||||||
|
@ -236,7 +236,7 @@
|
||||||
<trans lang="de_DE">Laufzeit</trans>
|
<trans lang="de_DE">Laufzeit</trans>
|
||||||
<trans lang="fi_FI">Kesto</trans>
|
<trans lang="fi_FI">Kesto</trans>
|
||||||
<trans lang="hu_HU">Hossz</trans>
|
<trans lang="hu_HU">Hossz</trans>
|
||||||
<trans lang="it_IT">Runtime</trans>
|
<trans lang="it_IT">Durata</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(popularity)">
|
<token name="tr(popularity)">
|
||||||
<trans lang="en_EN">Popularity</trans>
|
<trans lang="en_EN">Popularity</trans>
|
||||||
|
@ -278,7 +278,7 @@
|
||||||
<trans lang="de_DE">Länge der Aufnahme</trans>
|
<trans lang="de_DE">Länge der Aufnahme</trans>
|
||||||
<trans lang="fi_FI">Tallenteen pituus</trans>
|
<trans lang="fi_FI">Tallenteen pituus</trans>
|
||||||
<trans lang="hu_HU">Felvétel hossza</trans>
|
<trans lang="hu_HU">Felvétel hossza</trans>
|
||||||
<trans lang="it_IT">Lnghezza registrazzione</trans>
|
<trans lang="it_IT">Lunghezza registrazione</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(reclengthcutted)">
|
<token name="tr(reclengthcutted)">
|
||||||
<trans lang="en_EN">Cutted Recording Length</trans>
|
<trans lang="en_EN">Cutted Recording Length</trans>
|
||||||
|
@ -383,7 +383,7 @@
|
||||||
<trans lang="de_DE">Windgeschwindigkeit</trans>
|
<trans lang="de_DE">Windgeschwindigkeit</trans>
|
||||||
<trans lang="fi_FI">Tuulen nopeus</trans>
|
<trans lang="fi_FI">Tuulen nopeus</trans>
|
||||||
<trans lang="hu_HU">Szélsebesség</trans>
|
<trans lang="hu_HU">Szélsebesség</trans>
|
||||||
<trans lang="it_IT">Velcità vento</trans>
|
<trans lang="it_IT">Velocità vento</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(cloudcover)">
|
<token name="tr(cloudcover)">
|
||||||
<trans lang="en_EN">Cloud Cover</trans>
|
<trans lang="en_EN">Cloud Cover</trans>
|
||||||
|
@ -465,22 +465,27 @@
|
||||||
<token name="tr(lastrecs)">
|
<token name="tr(lastrecs)">
|
||||||
<trans lang="en_EN">last recordings</trans>
|
<trans lang="en_EN">last recordings</trans>
|
||||||
<trans lang="de_DE">Neueste Aufnahmen</trans>
|
<trans lang="de_DE">Neueste Aufnahmen</trans>
|
||||||
|
<trans lang="it_IT">ultime registrazioni</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(sysinfo)">
|
<token name="tr(sysinfo)">
|
||||||
<trans lang="en_EN">system information</trans>
|
<trans lang="en_EN">system information</trans>
|
||||||
<trans lang="de_DE">System Informationen</trans>
|
<trans lang="de_DE">System Informationen</trans>
|
||||||
|
<trans lang="it_IT">info di sistema</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(load)">
|
<token name="tr(load)">
|
||||||
<trans lang="en_EN">System load:</trans>
|
<trans lang="en_EN">System load:</trans>
|
||||||
<trans lang="de_DE">Systemlast:</trans>
|
<trans lang="de_DE">Systemlast:</trans>
|
||||||
|
<trans lang="it_IT">Utilizzo del sistema</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(vdrcpu)">
|
<token name="tr(vdrcpu)">
|
||||||
<trans lang="en_EN">VDR CPU</trans>
|
<trans lang="en_EN">VDR CPU</trans>
|
||||||
<trans lang="de_DE">VDR CPU</trans>
|
<trans lang="de_DE">VDR CPU</trans>
|
||||||
|
<trans lang="it_IT">VDR CPU</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(new)">
|
<token name="tr(new)">
|
||||||
<trans lang="en_EN">new</trans>
|
<trans lang="en_EN">new</trans>
|
||||||
<trans lang="de_DE">neu</trans>
|
<trans lang="de_DE">neu</trans>
|
||||||
|
<trans lang="it_IT">nuovo</trans>
|
||||||
</token>
|
</token>
|
||||||
</translations>
|
</translations>
|
||||||
<fonts>
|
<fonts>
|
||||||
|
|
|
@ -40,79 +40,98 @@
|
||||||
<token name="tr(sepmainmenu)">
|
<token name="tr(sepmainmenu)">
|
||||||
<trans lang="en_EN">Main Menu</trans>
|
<trans lang="en_EN">Main Menu</trans>
|
||||||
<trans lang="de_DE">Hauptmenü</trans>
|
<trans lang="de_DE">Hauptmenü</trans>
|
||||||
|
<trans lang="it_IT">Menù principale</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(mainmenusmall)">
|
<token name="tr(mainmenusmall)">
|
||||||
<trans lang="en_EN">Small Main Menu</trans>
|
<trans lang="en_EN">Small Main Menu</trans>
|
||||||
<trans lang="de_DE">Schmales Hauptmenü</trans>
|
<trans lang="de_DE">Schmales Hauptmenü</trans>
|
||||||
|
<trans lang="it_IT">Menù principale piccolo</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(fadecurrenttext)">
|
<token name="tr(fadecurrenttext)">
|
||||||
<trans lang="en_EN">Fade time of current element [ms]</trans>
|
<trans lang="en_EN">Fade time of current element [ms]</trans>
|
||||||
<trans lang="de_DE">Einblendzeit des aktiven Elements [ms]</trans>
|
<trans lang="de_DE">Einblendzeit des aktiven Elements [ms]</trans>
|
||||||
|
<trans lang="it_IT">Tempo di dissolvenza dell'elemento attuale</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(helpfadecurrent)">
|
<token name="tr(helpfadecurrent)">
|
||||||
<trans lang="en_EN">Fade time in ms. If this is set to a value larger 0 the current OSD element fade in and out.</trans>
|
<trans lang="en_EN">Fade time in ms. If this is set to a value larger 0 the current OSD element fade in and out.</trans>
|
||||||
<trans lang="de_DE">Einblendzeit in ms. Ist dieser Wert auf einen Wert > 0 gesetzt, wird das aktive OSD Element ein- und ausgeblendet</trans>
|
<trans lang="de_DE">Einblendzeit in ms. Ist dieser Wert auf einen Wert > 0 gesetzt, wird das aktive OSD Element ein- und ausgeblendet</trans>
|
||||||
|
<trans lang="it_IT">Tempo di dissolvenza in ms. Settato a valore > 0 l'attuale OSD si dissolve in entrata e uscita</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(helpshowinformation)">
|
<token name="tr(helpshowinformation)">
|
||||||
<trans lang="en_EN">Show information about timers, newest recordings, system load... 'oldstyle' showes the wide timer element but lacks some other infos.</trans>
|
<trans lang="en_EN">Show information about timers, newest recordings, system load... 'oldstyle' showes the wide timer element but lacks some other infos.</trans>
|
||||||
<trans lang="de_DE">Zeige Informationen über Timer, neuste Aufnahmen, Systemlast... 'oldstyle' zeigt dabei des breite Timer-Element, nutzt dafür aber nicht alle Infos.</trans>
|
<trans lang="de_DE">Zeige Informationen über Timer, neuste Aufnahmen, Systemlast... 'oldstyle' zeigt dabei des breite Timer-Element, nutzt dafür aber nicht alle Infos.</trans>
|
||||||
|
<trans lang="it_IT">Mostra info su timers, nuove registrazioni, carico sistema... 'oldstyle mostra l'elemento timer ampio ma mancano altre info </trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(helpshowscrollbar)">
|
<token name="tr(helpshowscrollbar)">
|
||||||
<trans lang="en_EN">Show Scrollbar in Main Menu. Auto hides the scrollbar if its not needed.</trans>
|
<trans lang="en_EN">Show Scrollbar in Main Menu. Auto hides the scrollbar if its not needed.</trans>
|
||||||
<trans lang="de_DE">Zeige die Scroll-Leiste im Hauptmenü. Auto versteckt die Leiste, wenn sie nicht benötigt wird.</trans>
|
<trans lang="de_DE">Zeige die Scroll-Leiste im Hauptmenü. Auto versteckt die Leiste, wenn sie nicht benötigt wird.</trans>
|
||||||
|
<trans lang="it_IT">Mostra barra scorrimento in menù principale. Auto disabilita la barra se non necessaria</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(helpshowweather)">
|
<token name="tr(helpshowweather)">
|
||||||
<trans lang="en_EN">Off, main menu only or main menu and channelinfo</trans>
|
<trans lang="en_EN">Off, main menu only or main menu and channelinfo</trans>
|
||||||
<trans lang="de_DE">Aus, nur Hauptmenü oder Haputmenü und Kanalinformationen</trans>
|
<trans lang="de_DE">Aus, nur Hauptmenü oder Haputmenü und Kanalinformationen</trans>
|
||||||
|
<trans lang="it_IT">Spento, solo menù principale o menù princ. e info canale</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(infolistitemsmaxtext)">
|
<token name="tr(infolistitemsmaxtext)">
|
||||||
<trans lang="en_EN">Number of Information lists items (max)</trans>
|
<trans lang="en_EN">Number of Information lists items (max)</trans>
|
||||||
<trans lang="de_DE">Elemente in den Info-Listen (max)</trans>
|
<trans lang="de_DE">Elemente in den Info-Listen (max)</trans>
|
||||||
|
<trans lang="it_IT">Numero voci lista Informazioni (max)</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(chlistitemsmaxtext)">
|
<token name="tr(chlistitemsmaxtext)">
|
||||||
<trans lang="en_EN">Number of Channel list items (max)</trans>
|
<trans lang="en_EN">Number of Channel list items (max)</trans>
|
||||||
<trans lang="de_DE">Elemente in der Kanalliste (max)</trans>
|
<trans lang="de_DE">Elemente in der Kanalliste (max)</trans>
|
||||||
|
<trans lang="it_IT">Numero voci lista canali (max)</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(listitemsmaxtext)">
|
<token name="tr(listitemsmaxtext)">
|
||||||
<trans lang="en_EN">Number of list items (max)</trans>
|
<trans lang="en_EN">Number of list items (max)</trans>
|
||||||
<trans lang="de_DE">Elemente in andern Listen (max)</trans>
|
<trans lang="de_DE">Elemente in andern Listen (max)</trans>
|
||||||
|
<trans lang="it_IT">Numero voci lista (max)</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(menuitemsmaxtext)">
|
<token name="tr(menuitemsmaxtext)">
|
||||||
<trans lang="en_EN">Number of Main Menu items (max)</trans>
|
<trans lang="en_EN">Number of Main Menu items (max)</trans>
|
||||||
<trans lang="de_DE">Elemente im Hauptmenü (max)</trans>
|
<trans lang="de_DE">Elemente im Hauptmenü (max)</trans>
|
||||||
|
<trans lang="it_IT">Numero voci Menù principale (max)</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(menu)">
|
<token name="tr(menu)">
|
||||||
<trans lang="en_EN">main menu</trans>
|
<trans lang="en_EN">main menu</trans>
|
||||||
<trans lang="de_DE">im Hauptmenü</trans>
|
<trans lang="de_DE">im Hauptmenü</trans>
|
||||||
|
<trans lang="it_IT">menù principale</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(no)">
|
<token name="tr(no)">
|
||||||
<trans lang="en_EN">no</trans>
|
<trans lang="en_EN">no</trans>
|
||||||
<trans lang="de_DE">nein</trans>
|
<trans lang="de_DE">nein</trans>
|
||||||
|
<trans lang="it_IT">no</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(yes)">
|
<token name="tr(yes)">
|
||||||
<trans lang="en_EN">yes</trans>
|
<trans lang="en_EN">yes</trans>
|
||||||
<trans lang="de_DE">ja</trans>
|
<trans lang="de_DE">ja</trans>
|
||||||
|
<trans lang="it_IT">si</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(auto)">
|
<token name="tr(auto)">
|
||||||
<trans lang="en_EN">automatic</trans>
|
<trans lang="en_EN">automatic</trans>
|
||||||
<trans lang="de_DE">automatisch</trans>
|
<trans lang="de_DE">automatisch</trans>
|
||||||
|
<trans lang="it_IT">automatico</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(oldstyle)">
|
<token name="tr(oldstyle)">
|
||||||
<trans lang="en_EN">oldsytle</trans>
|
<trans lang="en_EN">oldsytle</trans>
|
||||||
<trans lang="de_DE">oldstyle</trans>
|
<trans lang="de_DE">oldstyle</trans>
|
||||||
|
<trans lang="it_IT">oldstyle</trans>
|
||||||
</token>
|
</token>
|
||||||
|
|
||||||
<token name="tr(showscrollbar)">
|
<token name="tr(showscrollbar)">
|
||||||
<trans lang="en_EN">Show Scrollbar</trans>
|
<trans lang="en_EN">Show Scrollbar</trans>
|
||||||
<trans lang="de_DE">Zeige Scrollbar</trans>
|
<trans lang="de_DE">Zeige Scrollbar</trans>
|
||||||
|
<trans lang="it_IT">Mostra barra scorrimento</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(showweather)">
|
<token name="tr(showweather)">
|
||||||
<trans lang="en_EN">Show Weather info</trans>
|
<trans lang="en_EN">Show Weather info</trans>
|
||||||
<trans lang="de_DE">Wetter Info anzeigen</trans>
|
<trans lang="de_DE">Wetter Info anzeigen</trans>
|
||||||
|
<trans lang="it_IT">Mostra info Meteo</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(showinformation)">
|
<token name="tr(showinformation)">
|
||||||
<trans lang="en_EN">Show Information in main menu</trans>
|
<trans lang="en_EN">Show Information in main menu</trans>
|
||||||
<trans lang="de_DE">Zeige Informationen im Hauptmenü</trans>
|
<trans lang="de_DE">Zeige Informationen im Hauptmenü</trans>
|
||||||
|
<trans lang="it_IT">Mostra info nel menù principale</trans>
|
||||||
</token>
|
</token>
|
||||||
<!-- displaychannel / zapcockpit -->
|
<!-- displaychannel / zapcockpit -->
|
||||||
<token name="tr(sepzapcockpit)">
|
<token name="tr(sepzapcockpit)">
|
||||||
|
@ -142,18 +161,19 @@
|
||||||
<token name="tr(doitsimple)">
|
<token name="tr(doitsimple)">
|
||||||
<trans lang="en_EN">Disable text scolling</trans>
|
<trans lang="en_EN">Disable text scolling</trans>
|
||||||
<trans lang="de_DE">Text-Scrolling abschalten</trans>
|
<trans lang="de_DE">Text-Scrolling abschalten</trans>
|
||||||
|
<trans lang="it_IT">Disabilita scorrimento testo</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(zapchannelhintsheight)">
|
<token name="tr(zapchannelhintsheight)">
|
||||||
<trans lang="en_EN">Height channel hints (% of screen height)</trans>
|
<trans lang="en_EN">Height channel hints (% of screen height)</trans>
|
||||||
<trans lang="de_DE">Höhe Kanal Hinweise (% der Bildschirmhöhe)</trans>
|
<trans lang="de_DE">Höhe Kanal Hinweise (% der Bildschirmhöhe)</trans>
|
||||||
<trans lang="fi_FI">Korkeus (% näytön korkeudesta)</trans>
|
<trans lang="fi_FI">Korkeus (% näytön korkeudesta)</trans>
|
||||||
<trans lang="it_IT">Altezza suggerimenti canale (% della altezza del video)</trans>
|
<trans lang="it_IT">Altezza suggerimenti canale (in % altezza dello schermo)</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(zapchannelhintswidth)">
|
<token name="tr(zapchannelhintswidth)">
|
||||||
<trans lang="en_EN">Width channel hints (% of screen width)</trans>
|
<trans lang="en_EN">Width channel hints (% of screen width)</trans>
|
||||||
<trans lang="de_DE">Breite Kanal Hinweise (% der Bildschirmbreite)</trans>
|
<trans lang="de_DE">Breite Kanal Hinweise (% der Bildschirmbreite)</trans>
|
||||||
<trans lang="fi_FI">Leveys (% näytön leveydestä)</trans>
|
<trans lang="fi_FI">Leveys (% näytön leveydestä)</trans>
|
||||||
<trans lang="it_IT">Larghezza suggerimenti canale (% della larghezza del video)</trans>
|
<trans lang="it_IT">Larghezza suggerimenti canale (in % larghezza dello schermo)</trans>
|
||||||
</token>
|
</token>
|
||||||
<!-- metrixhd -->
|
<!-- metrixhd -->
|
||||||
<token name="tr(fadetext)">
|
<token name="tr(fadetext)">
|
||||||
|
@ -166,7 +186,7 @@
|
||||||
<trans lang="en_EN">Fade time in ms. If this is set to a value larger 0 all OSD elements beside the VDR menu fade in and out.</trans>
|
<trans lang="en_EN">Fade time in ms. If this is set to a value larger 0 all OSD elements beside the VDR menu fade in and out.</trans>
|
||||||
<trans lang="de_DE">Einblendzeit in ms. Ist dieser Wert auf einen Wert > 0 gesetzt, werden alle OSD Elemente ausser dem VDR Menu ein- und ausgeblendet</trans>
|
<trans lang="de_DE">Einblendzeit in ms. Ist dieser Wert auf einen Wert > 0 gesetzt, werden alle OSD Elemente ausser dem VDR Menu ein- und ausgeblendet</trans>
|
||||||
<trans lang="fi_FI">Häivytyksen kesto millisekunteina. Nollasta eriävä arvo aktivoi häivytyksen.</trans>
|
<trans lang="fi_FI">Häivytyksen kesto millisekunteina. Nollasta eriävä arvo aktivoi häivytyksen.</trans>
|
||||||
<trans lang="it_IT">Tempo di dissolvenza in ms. Se settato su un valore maggiore di 0 tutti gli elementi OSD accanto al menu di VDR si dissolvono in entrata ed uscita.</trans>
|
<trans lang="it_IT">Tempo di dissolvenza in ms. Settato > di 0 tutti gli elementi OSD accanto al menu di VDR si dissolvono in entrata ed uscita.</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(shifttimechanneltext)">
|
<token name="tr(shifttimechanneltext)">
|
||||||
<trans lang="en_EN">Shift time Channel Display [ms]</trans>
|
<trans lang="en_EN">Shift time Channel Display [ms]</trans>
|
||||||
|
@ -178,7 +198,7 @@
|
||||||
<trans lang="en_EN">Shifting time in ms. If this is set to a value larger 0 all OSD elements beside the VDR menu are shifted in and out from the bottom of the screen. If fadetime is also set to a value larger 0, still shifting is performed</trans>
|
<trans lang="en_EN">Shifting time in ms. If this is set to a value larger 0 all OSD elements beside the VDR menu are shifted in and out from the bottom of the screen. If fadetime is also set to a value larger 0, still shifting is performed</trans>
|
||||||
<trans lang="de_DE">Einfahrzeit in ms. Ist dieser Wert auf einen Wert > 0 gesetzt, werden alle OSD Elemente ausser dem VDR Menu vom unteren Rand des Bildschirms herein- und herausgefahren. Falls fadetime ebenfalls auf einen Wert größer 0 gesetzt ist, wird das OSD trotzdem herein- und herausgefahren.</trans>
|
<trans lang="de_DE">Einfahrzeit in ms. Ist dieser Wert auf einen Wert > 0 gesetzt, werden alle OSD Elemente ausser dem VDR Menu vom unteren Rand des Bildschirms herein- und herausgefahren. Falls fadetime ebenfalls auf einen Wert größer 0 gesetzt ist, wird das OSD trotzdem herein- und herausgefahren.</trans>
|
||||||
<trans lang="fi_FI">Liukuman kesto millisekunteina. Nollasta eriävä arvo aktivoi valikkojen transitioefektit riippumatta häivytyksen kestosta.</trans>
|
<trans lang="fi_FI">Liukuman kesto millisekunteina. Nollasta eriävä arvo aktivoi valikkojen transitioefektit riippumatta häivytyksen kestosta.</trans>
|
||||||
<trans lang="it_IT">Tempi cambio canale in ms. Se settato su un valore maggiore di 0 tutti gli elementi OSD accanto al menu di VDR vengono spostati in e out dal basso dello schermo. Lo spostamento è effettuato anche con tempo di dissolvenza maggiore di 0</trans>
|
<trans lang="it_IT">Tempi cambio canale in ms. Settato su un valore > di 0 tutti gli elementi OSD accanto al menu di VDR vengono spostati in e out dal basso dello schermo. Lo spostamento è effettuato anche con tempo di dissolvenza > di 0</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(shifttimedatetimetext)">
|
<token name="tr(shifttimedatetimetext)">
|
||||||
<trans lang="en_EN">Shift time Channel Date, Time, Weather [ms]</trans>
|
<trans lang="en_EN">Shift time Channel Date, Time, Weather [ms]</trans>
|
||||||
|
@ -190,7 +210,7 @@
|
||||||
<trans lang="en_EN">Shifting time of OSD Elements date, time and weather when switching in ms. If set to 0, the elements are shown immediately.</trans>
|
<trans lang="en_EN">Shifting time of OSD Elements date, time and weather when switching in ms. If set to 0, the elements are shown immediately.</trans>
|
||||||
<trans lang="de_DE">Einfahrzeit der OSD Elemente Datum, Zeit und Wetter während des Umschaltens in ms. Steht dieser Wert auf 0, werden die Elemente sofort angezeigt.</trans>
|
<trans lang="de_DE">Einfahrzeit der OSD Elemente Datum, Zeit und Wetter während des Umschaltens in ms. Steht dieser Wert auf 0, werden die Elemente sofort angezeigt.</trans>
|
||||||
<trans lang="fi_FI">Liukuman kesto millisekunteina. Nollasta eriävä arvo aktivoi päivämäärän, kellonajan ja säätietojen transitioefektit.</trans>
|
<trans lang="fi_FI">Liukuman kesto millisekunteina. Nollasta eriävä arvo aktivoi päivämäärän, kellonajan ja säätietojen transitioefektit.</trans>
|
||||||
<trans lang="it_IT">Tempi di cambio degli elemti OSD, Canale, Data, Tempo, Previsioni espressi in ms. Se impostato a0 gli elementi sono mostrati immediatamente.</trans>
|
<trans lang="it_IT">Tempi di cambio degli elemti OSD, Canale, Data, Tempo, Previsioni espressi in ms. Settato a 0 gli elementi sono mostrati immediatamente.</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(shifttimetimerstext)">
|
<token name="tr(shifttimetimerstext)">
|
||||||
<trans lang="en_EN">Shift time Timers Main Menu [ms]</trans>
|
<trans lang="en_EN">Shift time Timers Main Menu [ms]</trans>
|
||||||
|
@ -202,23 +222,27 @@
|
||||||
<trans lang="en_EN">Shifting time of timers display in main menu in ms. If set to 0, the timers are shown immediately.</trans>
|
<trans lang="en_EN">Shifting time of timers display in main menu in ms. If set to 0, the timers are shown immediately.</trans>
|
||||||
<trans lang="de_DE">Einfahrzeit der Timer im Hauptmenü in ms. Steht dieser Wert auf 0, werden die Timer sofort angezeigt.</trans>
|
<trans lang="de_DE">Einfahrzeit der Timer im Hauptmenü in ms. Steht dieser Wert auf 0, werden die Timer sofort angezeigt.</trans>
|
||||||
<trans lang="fi_FI">Liukuman kesto millisekunteina. Nollasta eriävä arvo aktivoi transitioefektit päävalikon ajastimille.</trans>
|
<trans lang="fi_FI">Liukuman kesto millisekunteina. Nollasta eriävä arvo aktivoi transitioefektit päävalikon ajastimille.</trans>
|
||||||
<trans lang="it_IT">Tempi di cambio del display dei Timer nel menù principale in ms. Se impostati a 0, i timers sono mostrati immediatamente.</trans>
|
<trans lang="it_IT">Tempi di cambio del display dei Timer nel menù principale in ms. Impostati a 0, i timers sono mostrati immediatamente.</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(listfadetimetext)">
|
<token name="tr(listfadetimetext)">
|
||||||
<trans lang="en_EN">Fade time menus [ms]</trans>
|
<trans lang="en_EN">Fade time menus [ms]</trans>
|
||||||
<trans lang="de_DE">Überblendungszeit Menüs [ms]</trans>
|
<trans lang="de_DE">Überblendungszeit Menüs [ms]</trans>
|
||||||
|
<trans lang="it_IT">Menù tempo dissolvenza [ms]</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(listshifttimetext)">
|
<token name="tr(listshifttimetext)">
|
||||||
<trans lang="en_EN">Shift time menus [ms]</trans>
|
<trans lang="en_EN">Shift time menus [ms]</trans>
|
||||||
<trans lang="de_DE">Übergangszeit Menüelemente [ms]</trans>
|
<trans lang="de_DE">Übergangszeit Menüelemente [ms]</trans>
|
||||||
|
<trans lang="it_IT">Menù tempo cambio [ms]</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(helplistfadetime)">
|
<token name="tr(helplistfadetime)">
|
||||||
<trans lang="en_EN">Fade time of menu elements when scrolling through the menus. If set to 0, this effect is disabled.</trans>
|
<trans lang="en_EN">Fade time of menu elements when scrolling through the menus. If set to 0, this effect is disabled.</trans>
|
||||||
<trans lang="de_DE">Überblendungszeit der Menüelemente beim Bewegen durch die Menüs. Steht dieser Wert auf 0, ist dieser Effekt deaktiviert.</trans>
|
<trans lang="de_DE">Überblendungszeit der Menüelemente beim Bewegen durch die Menüs. Steht dieser Wert auf 0, ist dieser Effekt deaktiviert.</trans>
|
||||||
|
<trans lang="it_IT">Tempo dissolvenza menù elementi scorrendo i menù. Settato a 0, questo effetto è disabilitato</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(helplistshifttime)">
|
<token name="tr(helplistshifttime)">
|
||||||
<trans lang="en_EN">Shift time of menu elements when scrolling through the menus. If set to 0, this effect is disabled.</trans>
|
<trans lang="en_EN">Shift time of menu elements when scrolling through the menus. If set to 0, this effect is disabled.</trans>
|
||||||
<trans lang="de_DE">Übergangszeit der Menüelemente beim Bewegen durch die Menüs. Steht dieser Wert auf 0, ist dieser Effekt deaktiviert.</trans>
|
<trans lang="de_DE">Übergangszeit der Menüelemente beim Bewegen durch die Menüs. Steht dieser Wert auf 0, ist dieser Effekt deaktiviert.</trans>
|
||||||
|
<trans lang="it_IT">Tempo cambio menù elementi scorrendo i menù. Settato a 0, questo effetto è disabilitato</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(showdevices)">
|
<token name="tr(showdevices)">
|
||||||
<trans lang="en_EN">Show DVB device info</trans>
|
<trans lang="en_EN">Show DVB device info</trans>
|
||||||
|
@ -230,7 +254,7 @@
|
||||||
<trans lang="en_EN">If set to true, information about usage of each available DVB device is displayed during channel switching and in the main menu</trans>
|
<trans lang="en_EN">If set to true, information about usage of each available DVB device is displayed during channel switching and in the main menu</trans>
|
||||||
<trans lang="de_DE">Falls diese Option aktiviert ist, werden beim Umschalten und im Hauptmenü Informationen über alle verfügbaren DVB Devices ausgegeben.</trans>
|
<trans lang="de_DE">Falls diese Option aktiviert ist, werden beim Umschalten und im Hauptmenü Informationen über alle verfügbaren DVB Devices ausgegeben.</trans>
|
||||||
<trans lang="fi_FI">Näytetään DVB-laitteiden käyttötiedot päävalikossa ja kanavanvaihdossa.</trans>
|
<trans lang="fi_FI">Näytetään DVB-laitteiden käyttötiedot päävalikossa ja kanavanvaihdossa.</trans>
|
||||||
<trans lang="it_IT">Se settata su true, sono mostrate info riguardo l'uso di ciascun device DVB durante i cambi canale e nel menù principale.</trans>
|
<trans lang="it_IT">Settata su true, sono mostrate info riguardo l'uso di ciascun device DVB durante i cambi canale e nel menù principale.</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(mainmenuorientation)">
|
<token name="tr(mainmenuorientation)">
|
||||||
<trans lang="en_EN">Orientation of main menu</trans>
|
<trans lang="en_EN">Orientation of main menu</trans>
|
||||||
|
@ -242,7 +266,7 @@
|
||||||
<trans lang="en_EN">Orientation of main menu. If orientation is set to horizontal, only the current list element is displayed. If set to vertical, 8 elements are shown in the list.</trans>
|
<trans lang="en_EN">Orientation of main menu. If orientation is set to horizontal, only the current list element is displayed. If set to vertical, 8 elements are shown in the list.</trans>
|
||||||
<trans lang="de_DE">Ausrichtung des Hauptmenüs. Falls die Ausrichtung auf horizontal gesetzt ist, wird nur das aktuelle Listenelement ausgegeben. Ist die Ausrichtung vertikal, werden 8 Listenelemente angezeigt.</trans>
|
<trans lang="de_DE">Ausrichtung des Hauptmenüs. Falls die Ausrichtung auf horizontal gesetzt ist, wird nur das aktuelle Listenelement ausgegeben. Ist die Ausrichtung vertikal, werden 8 Listenelemente angezeigt.</trans>
|
||||||
<trans lang="fi_FI">Päävalikon orientaatio. Vaakasuuntainen: näytetään ainoastaan aktiivinen listaelementti. Pystysuuntainen: näytetään 8 elementtiä listana.</trans>
|
<trans lang="fi_FI">Päävalikon orientaatio. Vaakasuuntainen: näytetään ainoastaan aktiivinen listaelementti. Pystysuuntainen: näytetään 8 elementtiä listana.</trans>
|
||||||
<trans lang="it_IT">Orientamento menù principale. Se l'orientamento è su orizzontale, è mostrato solo l'attuale lista degli elementi. Se settata su verticale, nella lista sono mostrati 8 elementi.</trans>
|
<trans lang="it_IT">Orientamento menù principale. Settato su orizzontale, è mostrato solo l'attuale lista degli elementi. Se settata su verticale, nella lista sono mostrati 8 elementi.</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(recmenuorientation)">
|
<token name="tr(recmenuorientation)">
|
||||||
<trans lang="en_EN">Orientation of recordings menu</trans>
|
<trans lang="en_EN">Orientation of recordings menu</trans>
|
||||||
|
@ -259,6 +283,7 @@
|
||||||
<token name="tr(setupmenuorientation)">
|
<token name="tr(setupmenuorientation)">
|
||||||
<trans lang="en_EN">Orientation of setup menu</trans>
|
<trans lang="en_EN">Orientation of setup menu</trans>
|
||||||
<trans lang="de_DE">Ausrichtung des Einstellungsmenüs</trans>
|
<trans lang="de_DE">Ausrichtung des Einstellungsmenüs</trans>
|
||||||
|
<trans lang="it_IT">Orientamento Menù setup</trans>
|
||||||
</token>
|
</token>
|
||||||
<token name="tr(horizontal)">
|
<token name="tr(horizontal)">
|
||||||
<trans lang="en_EN">horizontal menu</trans>
|
<trans lang="en_EN">horizontal menu</trans>
|
||||||
|
|
|
@ -55,6 +55,15 @@
|
||||||
-->
|
-->
|
||||||
<time>
|
<time>
|
||||||
</time>
|
</time>
|
||||||
|
|
||||||
|
<!-- Available Variables vdrstatus
|
||||||
|
{vdrIsRecordingsHandlersActive} true if active RecordingsHandlers (cut,copy,move) aka "busy"
|
||||||
|
{vdrIsRecording} true if active recording
|
||||||
|
{vdrHasTimers} true if numtimers > 0
|
||||||
|
-->
|
||||||
|
<vdrstatus>
|
||||||
|
</vdrstatus>
|
||||||
|
|
||||||
<!-- Available Variables sortmode:
|
<!-- Available Variables sortmode:
|
||||||
{sortnumber} true if menu is sorted by number
|
{sortnumber} true if menu is sorted by number
|
||||||
{sortname} true if menu is sorted alphabetical
|
{sortname} true if menu is sorted alphabetical
|
||||||
|
|
|
@ -33,6 +33,7 @@
|
||||||
{isHD} true if recording is HD/UHD (from EPG info)
|
{isHD} true if recording is HD/UHD (from EPG info)
|
||||||
{isUHD} true if recording is UHD (from EPG info)
|
{isUHD} true if recording is UHD (from EPG info)
|
||||||
{isRadio} true if recording is AudioOnly (from EPG info)
|
{isRadio} true if recording is AudioOnly (from EPG info)
|
||||||
|
{errors} recording errors (-1 if not available)
|
||||||
-->
|
-->
|
||||||
<detailheader>
|
<detailheader>
|
||||||
</detailheader>
|
</detailheader>
|
||||||
|
@ -57,6 +58,7 @@
|
||||||
{isHD} true if recording is HD/UHD (from EPG info)
|
{isHD} true if recording is HD/UHD (from EPG info)
|
||||||
{isUHD} true if recording is HD (from EPG info)
|
{isUHD} true if recording is HD (from EPG info)
|
||||||
{isRadio} true if recording is AudioOnly (from EPG info)
|
{isRadio} true if recording is AudioOnly (from EPG info)
|
||||||
|
{errors} recording errors (-1 if not available)
|
||||||
|
|
||||||
{recordingsize} size of recording (automatically in GB / MB)
|
{recordingsize} size of recording (automatically in GB / MB)
|
||||||
{recordingsizecutted} size of cutted recording (automatically in GB / MB)
|
{recordingsizecutted} size of cutted recording (automatically in GB / MB)
|
||||||
|
|
|
@ -91,6 +91,14 @@
|
||||||
<vdrstatistics>
|
<vdrstatistics>
|
||||||
</vdrstatistics>
|
</vdrstatistics>
|
||||||
|
|
||||||
|
<!-- Available Variables vdrstatus
|
||||||
|
{vdrIsRecordingsHandlersActive} true if active RecordingsHandlers (cut,copy,move) aka "busy"
|
||||||
|
{vdrIsRecording} true if active recording
|
||||||
|
{vdrHasTimers} true if numtimers > 0
|
||||||
|
-->
|
||||||
|
<vdrstatus>
|
||||||
|
</vdrstatus>
|
||||||
|
|
||||||
<!-- Available Variables tempreatures:
|
<!-- Available Variables tempreatures:
|
||||||
{cputemp} current cpu temperature in °C
|
{cputemp} current cpu temperature in °C
|
||||||
{gputemp} current gpu temperature in °C
|
{gputemp} current gpu temperature in °C
|
||||||
|
|
|
@ -39,6 +39,7 @@
|
||||||
{isHD} true if recording is HD/UHD (from EPG info)
|
{isHD} true if recording is HD/UHD (from EPG info)
|
||||||
{isUHD} true if recording is UHD (from EPG info)
|
{isUHD} true if recording is UHD (from EPG info)
|
||||||
{isRadio} true if recording is AudioOnly (from EPG info)
|
{isRadio} true if recording is AudioOnly (from EPG info)
|
||||||
|
{errors} recording errors (-1 if not available)
|
||||||
-->
|
-->
|
||||||
<listelement>
|
<listelement>
|
||||||
</listelement>
|
</listelement>
|
||||||
|
@ -84,6 +85,7 @@
|
||||||
{isHD} true if recording is HD/UHD (from EPG info)
|
{isHD} true if recording is HD/UHD (from EPG info)
|
||||||
{isUHD} true if recording is UHD (from EPG info)
|
{isUHD} true if recording is UHD (from EPG info)
|
||||||
{isRadio} true if recording is AudioOnly (from EPG info)
|
{isRadio} true if recording is AudioOnly (from EPG info)
|
||||||
|
{errors} recording errors (-1 if not available)
|
||||||
-->
|
-->
|
||||||
<currentelement delay="500" fadetime="0">
|
<currentelement delay="500" fadetime="0">
|
||||||
</currentelement>
|
</currentelement>
|
||||||
|
|
Loading…
Reference in New Issue