|
|
|
@@ -96,7 +96,7 @@ extern cVideo * videoDecoder;
|
|
|
|
|
|
|
|
|
|
#define ConnectLineBox_Width 16
|
|
|
|
|
|
|
|
|
|
CChannelList::CChannelList(const char * const pName, bool phistoryMode, bool _vlist, bool )
|
|
|
|
|
CChannelList::CChannelList(const char * const pName, bool phistoryMode, bool _vlist)
|
|
|
|
|
{
|
|
|
|
|
frameBuffer = CFrameBuffer::getInstance();
|
|
|
|
|
name = pName;
|
|
|
|
@@ -108,8 +108,8 @@ CChannelList::CChannelList(const char * const pName, bool phistoryMode, bool _vl
|
|
|
|
|
this->historyMode = phistoryMode;
|
|
|
|
|
vlist = _vlist;
|
|
|
|
|
selected_chid = 0;
|
|
|
|
|
this->new_mode_active = false;
|
|
|
|
|
footerHeight = g_Font[SNeutrinoSettings::FONT_TYPE_INFOBAR_SMALL]->getHeight()+6; //initial height value for buttonbar
|
|
|
|
|
previous_channellist_additional = -1;
|
|
|
|
|
//printf("************ NEW LIST %s : %x\n", name.c_str(), (int) this);fflush(stdout);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -304,6 +304,7 @@ int CChannelList::doChannelMenu(void)
|
|
|
|
|
{
|
|
|
|
|
int i = 0;
|
|
|
|
|
int select = -1;
|
|
|
|
|
int shortcut = 0;
|
|
|
|
|
static int old_selected = 0;
|
|
|
|
|
char cnt[5];
|
|
|
|
|
bool enabled = true;
|
|
|
|
@@ -333,9 +334,10 @@ int CChannelList::doChannelMenu(void)
|
|
|
|
|
menu->addItem(new CMenuForwarder(LOCALE_FAVORITES_MENUEADD, true, NULL, selector, cnt, CRCInput::RC_blue, NEUTRINO_ICON_BUTTON_BLUE), old_selected == i++);
|
|
|
|
|
snprintf(cnt, sizeof(cnt), "%d", i);
|
|
|
|
|
bool reset_enabled = chanlist[selected]->flags & CZapitChannel::NEW;
|
|
|
|
|
menu->addItem(new CMenuForwarder(LOCALE_CHANNELLIST_RESET_FLAGS, reset_enabled, NULL, selector, cnt, CRCInput::convertDigitToKey(0)), old_selected == i++);
|
|
|
|
|
menu->addItem(new CMenuForwarder(LOCALE_CHANNELLIST_RESET_FLAGS, reset_enabled, NULL, selector, cnt, CRCInput::convertDigitToKey(shortcut++)), old_selected == i++);
|
|
|
|
|
snprintf(cnt, sizeof(cnt), "%d", i);
|
|
|
|
|
menu->addItem(new CMenuForwarder(LOCALE_MAINMENU_SETTINGS, true, NULL, selector, cnt, CRCInput::convertDigitToKey(0)), old_selected == i++);
|
|
|
|
|
menu->addItem(new CMenuSeparator(CMenuSeparator::LINE));
|
|
|
|
|
menu->addItem(new CMenuForwarder(LOCALE_MAINMENU_SETTINGS, true, NULL, selector, cnt, CRCInput::convertDigitToKey(shortcut++)), old_selected == i++);
|
|
|
|
|
menu->exec(NULL, "");
|
|
|
|
|
delete menu;
|
|
|
|
|
delete selector;
|
|
|
|
@@ -431,6 +433,7 @@ int CChannelList::doChannelMenu(void)
|
|
|
|
|
break;
|
|
|
|
|
case 5: // settings
|
|
|
|
|
{
|
|
|
|
|
previous_channellist_additional = g_settings.channellist_additional;
|
|
|
|
|
COsdSetup osd_setup;
|
|
|
|
|
osd_setup.showContextChanlistMenu();
|
|
|
|
|
//FIXME check font/options changed ?
|
|
|
|
@@ -448,6 +451,7 @@ int CChannelList::doChannelMenu(void)
|
|
|
|
|
int CChannelList::exec()
|
|
|
|
|
{
|
|
|
|
|
displayNext = 0; // always start with current events
|
|
|
|
|
displayList = 1; // always start with event list
|
|
|
|
|
int nNewChannel = show();
|
|
|
|
|
if ( nNewChannel > -1 && nNewChannel < (int) chanlist.size()) {
|
|
|
|
|
if(this->historyMode && chanlist[nNewChannel]) {
|
|
|
|
@@ -464,12 +468,19 @@ int CChannelList::exec()
|
|
|
|
|
void CChannelList::calcSize()
|
|
|
|
|
{
|
|
|
|
|
const int pic_h = 39;
|
|
|
|
|
int fw = g_Font[SNeutrinoSettings::FONT_TYPE_INFOBAR_SMALL]->getWidth();
|
|
|
|
|
width = w_max (((g_settings.channellist_extended)?(frameBuffer->getScreenWidth() / 20 * (fw+6)):(frameBuffer->getScreenWidth() / 20 * (fw+5))), 100);
|
|
|
|
|
widthDetails = width;
|
|
|
|
|
height = h_max ((frameBuffer->getScreenHeight() / 20 * 16), (frameBuffer->getScreenHeight() / 20 * 2));
|
|
|
|
|
if (g_settings.channellist_minitv)
|
|
|
|
|
height = h_max ((frameBuffer->getScreenHeight() / 20 * 17), 0);
|
|
|
|
|
|
|
|
|
|
full_width = frameBuffer->getScreenWidth() - frameBuffer->getScreenX() - 2*ConnectLineBox_Width;
|
|
|
|
|
if (g_settings.channellist_additional)
|
|
|
|
|
width = full_width / 3 * 2;
|
|
|
|
|
else
|
|
|
|
|
width = full_width;
|
|
|
|
|
|
|
|
|
|
height = h_max ((frameBuffer->getScreenHeight() / 20 * 17), 0);
|
|
|
|
|
|
|
|
|
|
x = frameBuffer->getScreenX() + (frameBuffer->getScreenWidth() - full_width) / 2;
|
|
|
|
|
if (x < ConnectLineBox_Width)
|
|
|
|
|
x = ConnectLineBox_Width;
|
|
|
|
|
y = frameBuffer->getScreenY();
|
|
|
|
|
|
|
|
|
|
CVFD::getInstance()->setMode(CVFD::MODE_MENU_UTF8, name.c_str());
|
|
|
|
|
|
|
|
|
@@ -501,24 +512,13 @@ void CChannelList::calcSize()
|
|
|
|
|
height = theight + footerHeight + listmaxshow * fheight;
|
|
|
|
|
info_height = 2*fheight + g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST_DESCR]->getHeight() + 10;
|
|
|
|
|
|
|
|
|
|
if (g_settings.channellist_minitv)
|
|
|
|
|
{
|
|
|
|
|
width = frameBuffer->getScreenWidth() / 3 * 2;
|
|
|
|
|
widthDetails = frameBuffer->getScreenWidth() - frameBuffer->getScreenX() - 2*ConnectLineBox_Width;
|
|
|
|
|
x = frameBuffer->getScreenX() + (frameBuffer->getScreenWidth() - widthDetails) / 2;
|
|
|
|
|
if (x < ConnectLineBox_Width)
|
|
|
|
|
x = ConnectLineBox_Width;
|
|
|
|
|
y = frameBuffer->getScreenY();
|
|
|
|
|
infozone_width = widthDetails - width;
|
|
|
|
|
pig_width = infozone_width;
|
|
|
|
|
infozone_width = full_width - width;
|
|
|
|
|
pig_width = infozone_width;
|
|
|
|
|
if (g_settings.channellist_additional == 2) // with miniTV
|
|
|
|
|
pig_height = (pig_width * 9) / 16;
|
|
|
|
|
infozone_height = height - theight - pig_height - footerHeight;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
x = frameBuffer->getScreenX() + (frameBuffer->getScreenWidth() - width) / 2;
|
|
|
|
|
y = frameBuffer->getScreenY() + (frameBuffer->getScreenHeight() - (height+ info_height)) / 2;
|
|
|
|
|
}
|
|
|
|
|
pig_height = 0;
|
|
|
|
|
infozone_height = height - theight - pig_height - footerHeight;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool CChannelList::updateSelection(int newpos)
|
|
|
|
@@ -538,7 +538,7 @@ bool CChannelList::updateSelection(int newpos)
|
|
|
|
|
showChannelLogo();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(this->new_mode_active && SameTP()) {
|
|
|
|
|
if((g_settings.channellist_new_zap_mode == 2 /* active */) && SameTP()) {
|
|
|
|
|
actzap = true;
|
|
|
|
|
zapTo(selected);
|
|
|
|
|
}
|
|
|
|
@@ -562,15 +562,13 @@ int CChannelList::show()
|
|
|
|
|
return res;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
this->new_mode_active = 0;
|
|
|
|
|
|
|
|
|
|
calcSize();
|
|
|
|
|
displayNext = false;
|
|
|
|
|
|
|
|
|
|
COSDFader fader(g_settings.menu_Content_alpha);
|
|
|
|
|
fader.StartFadeIn();
|
|
|
|
|
|
|
|
|
|
if (g_settings.channellist_minitv)
|
|
|
|
|
if (g_settings.channellist_additional)
|
|
|
|
|
{
|
|
|
|
|
frameBuffer->paintBoxRel(x+width,y+theight,infozone_width,pig_height+infozone_height,COL_MENUCONTENT_PLUS_0);
|
|
|
|
|
}
|
|
|
|
@@ -698,6 +696,7 @@ int CChannelList::show()
|
|
|
|
|
}
|
|
|
|
|
else if (msg == CRCInput::RC_up || (int) msg == g_settings.key_channelList_pageup)
|
|
|
|
|
{
|
|
|
|
|
displayList = 1;
|
|
|
|
|
int step = ((int) msg == g_settings.key_channelList_pageup) ? listmaxshow : 1; // browse or step 1
|
|
|
|
|
int new_selected = selected - step;
|
|
|
|
|
if (new_selected < 0) {
|
|
|
|
@@ -710,6 +709,7 @@ int CChannelList::show()
|
|
|
|
|
}
|
|
|
|
|
else if (msg == CRCInput::RC_down || (int) msg == g_settings.key_channelList_pagedown)
|
|
|
|
|
{
|
|
|
|
|
displayList = 1;
|
|
|
|
|
int step = ((int) msg == g_settings.key_channelList_pagedown) ? listmaxshow : 1; // browse or step 1
|
|
|
|
|
int new_selected = selected + step;
|
|
|
|
|
if (new_selected >= (int) chanlist.size()) {
|
|
|
|
@@ -774,7 +774,17 @@ int CChannelList::show()
|
|
|
|
|
}
|
|
|
|
|
else if (( msg == CRCInput::RC_spkr ) && g_settings.channellist_new_zap_mode ) {
|
|
|
|
|
if(CNeutrinoApp::getInstance()->getMode() != NeutrinoMessages::mode_ts) {
|
|
|
|
|
this->new_mode_active = (this->new_mode_active ? 0 : 1);
|
|
|
|
|
switch (g_settings.channellist_new_zap_mode) {
|
|
|
|
|
case 2: /* active */
|
|
|
|
|
g_settings.channellist_new_zap_mode = 1; /* allow */
|
|
|
|
|
break;
|
|
|
|
|
case 1: /* allow */
|
|
|
|
|
g_settings.channellist_new_zap_mode = 2; /* active */
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
paintHead();
|
|
|
|
|
showChannelLogo();
|
|
|
|
|
}
|
|
|
|
@@ -840,9 +850,16 @@ int CChannelList::show()
|
|
|
|
|
}
|
|
|
|
|
else if ( msg == CRCInput::RC_blue )
|
|
|
|
|
{
|
|
|
|
|
displayNext = !displayNext;
|
|
|
|
|
if (g_settings.channellist_additional)
|
|
|
|
|
displayList = !displayList;
|
|
|
|
|
else
|
|
|
|
|
displayNext = !displayNext;
|
|
|
|
|
|
|
|
|
|
paintHead(); // update button bar
|
|
|
|
|
paint();
|
|
|
|
|
|
|
|
|
|
if (!displayList && g_settings.channellist_additional)
|
|
|
|
|
showdescription(selected);
|
|
|
|
|
}
|
|
|
|
|
else if ( msg == CRCInput::RC_green )
|
|
|
|
|
{
|
|
|
|
@@ -890,7 +907,6 @@ int CChannelList::show()
|
|
|
|
|
res = bouquetList->exec(true);
|
|
|
|
|
printf("CChannelList:: bouquetList->exec res %d\n", res);
|
|
|
|
|
}
|
|
|
|
|
this->new_mode_active = 0;
|
|
|
|
|
|
|
|
|
|
if(NeutrinoMessages::mode_ts == CNeutrinoApp::getInstance()->getMode())
|
|
|
|
|
return -1;
|
|
|
|
@@ -906,12 +922,11 @@ int CChannelList::show()
|
|
|
|
|
|
|
|
|
|
void CChannelList::hide()
|
|
|
|
|
{
|
|
|
|
|
if (g_settings.channellist_minitv)
|
|
|
|
|
if ((g_settings.channellist_additional == 2) || (previous_channellist_additional == 2)) // with miniTV
|
|
|
|
|
{
|
|
|
|
|
// widthDetails = frameBuffer->getScreenWidth() - frameBuffer->getScreenX();
|
|
|
|
|
videoDecoder->Pig(-1, -1, -1, -1);
|
|
|
|
|
}
|
|
|
|
|
frameBuffer->paintBackgroundBoxRel(x, y, widthDetails, height+ info_height+ 5);
|
|
|
|
|
frameBuffer->paintBackgroundBoxRel(x, y, full_width, height+ info_height+ 5);
|
|
|
|
|
clearItem2DetailsLine();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -1142,7 +1157,7 @@ void CChannelList::zapTo(int pos, bool /* forceStoreToLastChannels */)
|
|
|
|
|
|
|
|
|
|
zapToChannel(chan);
|
|
|
|
|
tuned = pos;
|
|
|
|
|
if(this->new_mode_active)
|
|
|
|
|
if(g_settings.channellist_new_zap_mode == 2 /* active */)
|
|
|
|
|
selected_in_new_mode = pos;
|
|
|
|
|
else
|
|
|
|
|
selected = pos;
|
|
|
|
@@ -1178,7 +1193,7 @@ void CChannelList::zapToChannel(CZapitChannel *channel)
|
|
|
|
|
g_RemoteControl->zapTo_ChannelID(channel->getChannelID(), channel->getName(), !channel->bAlwaysLocked);
|
|
|
|
|
CNeutrinoApp::getInstance()->channelList->adjustToChannelID(channel->getChannelID());
|
|
|
|
|
}
|
|
|
|
|
if(!this->new_mode_active) {
|
|
|
|
|
if(g_settings.channellist_new_zap_mode != 2 /* not active */) {
|
|
|
|
|
/* remove recordModeActive from infobar */
|
|
|
|
|
if(g_settings.auto_timeshift && !CNeutrinoApp::getInstance()->recordingstatus) {
|
|
|
|
|
g_InfoViewer->handleMsg(NeutrinoMessages::EVT_RECORDMODE, 0);
|
|
|
|
@@ -1500,7 +1515,7 @@ void CChannelList::paintDetails(int index)
|
|
|
|
|
p_event = &chanlist[index]->currentEvent;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
frameBuffer->paintBoxRel(x+2, y + height + 2, widthDetails-4, info_height - 4, COL_MENUCONTENTDARK_PLUS_0, RADIUS_LARGE);//round
|
|
|
|
|
frameBuffer->paintBoxRel(x+2, y + height + 2, full_width-4, info_height - 4, COL_MENUCONTENTDARK_PLUS_0, RADIUS_LARGE);//round
|
|
|
|
|
|
|
|
|
|
if (!p_event->description.empty()) {
|
|
|
|
|
char cNoch[50] = {0}; // UTF-8
|
|
|
|
@@ -1524,7 +1539,7 @@ void CChannelList::paintDetails(int index)
|
|
|
|
|
std::string text2= p_event->text;
|
|
|
|
|
|
|
|
|
|
int xstart = 10;
|
|
|
|
|
if (g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST]->getRenderWidth(text1, true) > (widthDetails - 30 - seit_len) )
|
|
|
|
|
if (g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST]->getRenderWidth(text1, true) > (full_width - 30 - seit_len) )
|
|
|
|
|
{
|
|
|
|
|
// zu breit, Umbruch versuchen...
|
|
|
|
|
int pos;
|
|
|
|
@@ -1532,7 +1547,7 @@ void CChannelList::paintDetails(int index)
|
|
|
|
|
pos = text1.find_last_of("[ -.]+");
|
|
|
|
|
if ( pos!=-1 )
|
|
|
|
|
text1 = text1.substr( 0, pos );
|
|
|
|
|
} while ( ( pos != -1 ) && (g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST]->getRenderWidth(text1, true) > (widthDetails - 30 - seit_len) ) );
|
|
|
|
|
} while ( ( pos != -1 ) && (g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST]->getRenderWidth(text1, true) > (full_width - 30 - seit_len) ) );
|
|
|
|
|
|
|
|
|
|
std::string text3 = ""; /* not perfect, but better than crashing... */
|
|
|
|
|
if (p_event->description.length() > text1.length())
|
|
|
|
@@ -1542,7 +1557,7 @@ void CChannelList::paintDetails(int index)
|
|
|
|
|
text3= text3+ " - ";
|
|
|
|
|
|
|
|
|
|
xstart += g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST]->getRenderWidth(text3, true);
|
|
|
|
|
g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST]->RenderString(x+ 10, y+ height+ 5+ 2* fheight, widthDetails - 30- noch_len, text3, colored_event_C ? COL_COLORED_EVENTS_CHANNELLIST : COL_MENUCONTENTDARK, 0, true);
|
|
|
|
|
g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST]->RenderString(x+ 10, y+ height+ 5+ 2* fheight, full_width - 30- noch_len, text3, colored_event_C ? COL_COLORED_EVENTS_CHANNELLIST : COL_MENUCONTENTDARK, 0, true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!(text2.empty())) {
|
|
|
|
@@ -1551,7 +1566,7 @@ void CChannelList::paintDetails(int index)
|
|
|
|
|
text2 = text2.substr( 0, text2.find('\n') );
|
|
|
|
|
#if 0 //FIXME: to discuss, eat too much cpu time if string long enough
|
|
|
|
|
int pos = 0;
|
|
|
|
|
while ( ( pos != -1 ) && (g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST]->getRenderWidth(text2, true) > (widthDetails - 30 - noch_len) ) ) {
|
|
|
|
|
while ( ( pos != -1 ) && (g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST]->getRenderWidth(text2, true) > (full_width - 30 - noch_len) ) ) {
|
|
|
|
|
pos = text2.find_last_of(" ");
|
|
|
|
|
|
|
|
|
|
if ( pos!=-1 ) {
|
|
|
|
@@ -1559,12 +1574,12 @@ void CChannelList::paintDetails(int index)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST_DESCR]->RenderString(x+ xstart, y+ height+ 5+ 2* fheight, widthDetails- xstart- 30- noch_len, text2, colored_event_C ? COL_COLORED_EVENTS_CHANNELLIST : COL_MENUCONTENTDARK, 0, true);
|
|
|
|
|
g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST_DESCR]->RenderString(x+ xstart, y+ height+ 5+ 2* fheight, full_width- xstart- 30- noch_len, text2, colored_event_C ? COL_COLORED_EVENTS_CHANNELLIST : COL_MENUCONTENTDARK, 0, true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST]->RenderString(x+ 10, y+ height+ 5+ fheight, widthDetails - 30 - seit_len, text1, colored_event_C ? COL_COLORED_EVENTS_CHANNELLIST : COL_MENUCONTENTDARK, 0, true);
|
|
|
|
|
g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST_DESCR]->RenderString(x+ widthDetails- 10- seit_len, y+ height+ 5+ fheight, seit_len, cSeit, colored_event_C ? COL_COLORED_EVENTS_CHANNELLIST : COL_MENUCONTENTDARK, 0, true); // UTF-8
|
|
|
|
|
g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST_DESCR]->RenderString(x+ widthDetails- 10- noch_len, y+ height+ 5+ 2* fheight, noch_len, cNoch, colored_event_C ? COL_COLORED_EVENTS_CHANNELLIST : COL_MENUCONTENTDARK, 0, true); // UTF-8
|
|
|
|
|
g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST]->RenderString(x+ 10, y+ height+ 5+ fheight, full_width - 30 - seit_len, text1, colored_event_C ? COL_COLORED_EVENTS_CHANNELLIST : COL_MENUCONTENTDARK, 0, true);
|
|
|
|
|
g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST_DESCR]->RenderString(x+ full_width- 10- seit_len, y+ height+ 5+ fheight, seit_len, cSeit, colored_event_C ? COL_COLORED_EVENTS_CHANNELLIST : COL_MENUCONTENTDARK, 0, true); // UTF-8
|
|
|
|
|
g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST_DESCR]->RenderString(x+ full_width- 10- noch_len, y+ height+ 5+ 2* fheight, noch_len, cNoch, colored_event_C ? COL_COLORED_EVENTS_CHANNELLIST : COL_MENUCONTENTDARK, 0, true); // UTF-8
|
|
|
|
|
}
|
|
|
|
|
if(g_settings.channellist_foot == 0) {
|
|
|
|
|
transponder t;
|
|
|
|
@@ -1576,7 +1591,7 @@ void CChannelList::paintDetails(int index)
|
|
|
|
|
else
|
|
|
|
|
desc = desc + " (" + CServiceManager::getInstance()->GetSatelliteName(chanlist[index]->getSatellitePosition()) + ")";
|
|
|
|
|
|
|
|
|
|
g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST]->RenderString(x+ 10, y+ height+ 5+ 3*fheight, widthDetails - 30, desc.c_str(), COL_MENUCONTENTDARK, 0, true);
|
|
|
|
|
g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST]->RenderString(x+ 10, y+ height+ 5+ 3*fheight, full_width - 30, desc.c_str(), COL_MENUCONTENTDARK, 0, true);
|
|
|
|
|
}
|
|
|
|
|
else if( !displayNext && g_settings.channellist_foot == 1) { // next Event
|
|
|
|
|
char buf[128] = {0};
|
|
|
|
@@ -1589,11 +1604,11 @@ void CChannelList::paintDetails(int index)
|
|
|
|
|
snprintf(buf, sizeof(buf), "%s", CurrentNext.next_name.c_str());
|
|
|
|
|
int from_len = g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST_DESCR]->getRenderWidth(cFrom, true); // UTF-8
|
|
|
|
|
|
|
|
|
|
g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST]->RenderString(x+ 10, y+ height+ 5+ 3*fheight, widthDetails - 30 - from_len, buf, colored_event_N ? COL_COLORED_EVENTS_CHANNELLIST :COL_MENUCONTENTDARK, 0, true);
|
|
|
|
|
g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST_DESCR]->RenderString(x+ widthDetails- 10- from_len, y+ height+ 5+ 3*fheight, from_len, cFrom, colored_event_N ? COL_COLORED_EVENTS_CHANNELLIST : COL_MENUCONTENTDARK, 0, true); // UTF-8
|
|
|
|
|
g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST]->RenderString(x+ 10, y+ height+ 5+ 3*fheight, full_width - 30 - from_len, buf, colored_event_N ? COL_COLORED_EVENTS_CHANNELLIST :COL_MENUCONTENTDARK, 0, true);
|
|
|
|
|
g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST_DESCR]->RenderString(x+ full_width- 10- from_len, y+ height+ 5+ 3*fheight, from_len, cFrom, colored_event_N ? COL_COLORED_EVENTS_CHANNELLIST : COL_MENUCONTENTDARK, 0, true); // UTF-8
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if ((g_settings.channellist_minitv) && (p_event != NULL))
|
|
|
|
|
if ((g_settings.channellist_additional) && (p_event != NULL))
|
|
|
|
|
paint_events(index);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -1622,7 +1637,7 @@ void CChannelList::paintItem2DetailsLine (int pos, int /*ch_index*/)
|
|
|
|
|
details_line.paint();
|
|
|
|
|
|
|
|
|
|
//info box frame
|
|
|
|
|
frameBuffer->paintBoxFrame(x, ypos2, widthDetails, info_height, 2, col1, RADIUS_LARGE);
|
|
|
|
|
frameBuffer->paintBoxFrame(x, ypos2, full_width, info_height, 2, col1, RADIUS_LARGE);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@@ -1632,14 +1647,14 @@ void CChannelList::showChannelLogo()
|
|
|
|
|
if(g_settings.infobar_show_channellogo){
|
|
|
|
|
static int logo_w = 0;
|
|
|
|
|
static int logo_h = 0;
|
|
|
|
|
int logo_w_max = widthDetails / 4;
|
|
|
|
|
frameBuffer->paintBoxRel(x + widthDetails - logo_off - logo_w, y+(theight-logo_h)/2, logo_w, logo_h, COL_MENUHEAD_PLUS_0);
|
|
|
|
|
int logo_w_max = full_width / 4;
|
|
|
|
|
frameBuffer->paintBoxRel(x + full_width - logo_off - logo_w, y+(theight-logo_h)/2, logo_w, logo_h, COL_MENUHEAD_PLUS_0);
|
|
|
|
|
|
|
|
|
|
std::string lname;
|
|
|
|
|
if(g_PicViewer->GetLogoName(chanlist[selected]->channel_id, chanlist[selected]->getName(), lname, &logo_w, &logo_h)) {
|
|
|
|
|
if((logo_h > theight) || (logo_w > logo_w_max))
|
|
|
|
|
g_PicViewer->rescaleImageDimensions(&logo_w, &logo_h, logo_w_max, theight);
|
|
|
|
|
g_PicViewer->DisplayImage(lname, x + widthDetails - logo_off - logo_w, y+(theight-logo_h)/2, logo_w, logo_h);
|
|
|
|
|
g_PicViewer->DisplayImage(lname, x + full_width - logo_off - logo_w, y+(theight-logo_h)/2, logo_w, logo_h);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@@ -1684,10 +1699,20 @@ void CChannelList::paintButtonBar(bool is_current)
|
|
|
|
|
int Bindex = 2 + (smode ? 1:0);
|
|
|
|
|
|
|
|
|
|
//manage now/next button
|
|
|
|
|
if (displayNext)
|
|
|
|
|
Button[Bindex].locale = LOCALE_INFOVIEWER_NOW;
|
|
|
|
|
if (g_settings.channellist_additional)
|
|
|
|
|
{
|
|
|
|
|
if (displayList)
|
|
|
|
|
Button[Bindex].locale = LOCALE_FONTSIZE_CHANNELLIST_DESCR;
|
|
|
|
|
else
|
|
|
|
|
Button[Bindex].locale = LOCALE_FONTMENU_EVENTLIST;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
Button[Bindex].locale = LOCALE_INFOVIEWER_NEXT;
|
|
|
|
|
{
|
|
|
|
|
if (displayNext)
|
|
|
|
|
Button[Bindex].locale = LOCALE_INFOVIEWER_NOW;
|
|
|
|
|
else
|
|
|
|
|
Button[Bindex].locale = LOCALE_INFOVIEWER_NEXT;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Bindex++;
|
|
|
|
|
//manage record button
|
|
|
|
@@ -1728,7 +1753,7 @@ void CChannelList::paintButtonBar(bool is_current)
|
|
|
|
|
|
|
|
|
|
//paint buttons
|
|
|
|
|
int y_foot = y + (height - footerHeight);
|
|
|
|
|
::paintButtons(x, y_foot, widthDetails,num_buttons, Button, footerHeight,0,false,COL_INFOBAR_SHADOW,NULL,0,true, buttonID_rest);
|
|
|
|
|
::paintButtons(x, y_foot, full_width,num_buttons, Button, footerHeight,0,false,COL_INFOBAR_SHADOW,NULL,0,true, buttonID_rest);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CChannelList::paintItem(int pos)
|
|
|
|
@@ -1970,18 +1995,18 @@ void CChannelList::paintHead()
|
|
|
|
|
frameBuffer->getIconSize(NEUTRINO_ICON_BUTTON_MUTE_ZAP_ACTIVE, &iw3, &ih);
|
|
|
|
|
|
|
|
|
|
// head
|
|
|
|
|
frameBuffer->paintBoxRel(x,y, widthDetails,theight+0, COL_MENUHEAD_PLUS_0, RADIUS_LARGE, CORNER_TOP);//round
|
|
|
|
|
frameBuffer->paintBoxRel(x,y, full_width,theight+0, COL_MENUHEAD_PLUS_0, RADIUS_LARGE, CORNER_TOP);//round
|
|
|
|
|
|
|
|
|
|
frameBuffer->paintIcon(NEUTRINO_ICON_BUTTON_INFO, x + widthDetails - iw1 - 10, y, theight); //y+ 5 );
|
|
|
|
|
frameBuffer->paintIcon(NEUTRINO_ICON_BUTTON_MENU, x + widthDetails - iw1 - iw2 - 14, y, theight);//y + 5); // icon for bouquet list button
|
|
|
|
|
frameBuffer->paintIcon(NEUTRINO_ICON_BUTTON_INFO, x + full_width - iw1 - 10, y, theight); //y+ 5 );
|
|
|
|
|
frameBuffer->paintIcon(NEUTRINO_ICON_BUTTON_MENU, x + full_width - iw1 - iw2 - 14, y, theight);//y + 5); // icon for bouquet list button
|
|
|
|
|
if (g_settings.channellist_new_zap_mode)
|
|
|
|
|
frameBuffer->paintIcon(this->new_mode_active ?
|
|
|
|
|
frameBuffer->paintIcon((g_settings.channellist_new_zap_mode == 2 /* active */) ?
|
|
|
|
|
NEUTRINO_ICON_BUTTON_MUTE_ZAP_ACTIVE : NEUTRINO_ICON_BUTTON_MUTE_ZAP_INACTIVE,
|
|
|
|
|
x + widthDetails - iw1 - iw2 - iw3 - 18, y, theight);
|
|
|
|
|
x + full_width - iw1 - iw2 - iw3 - 18, y, theight);
|
|
|
|
|
|
|
|
|
|
if (gotTime) {
|
|
|
|
|
int iw3x = (g_settings.channellist_new_zap_mode) ? iw3 : -4;
|
|
|
|
|
g_Font[SNeutrinoSettings::FONT_TYPE_MENU_TITLE]->RenderString(x + widthDetails - iw1 - iw2 - iw3x - 28 -timestr_len,
|
|
|
|
|
g_Font[SNeutrinoSettings::FONT_TYPE_MENU_TITLE]->RenderString(x + full_width - iw1 - iw2 - iw3x - 28 -timestr_len,
|
|
|
|
|
y+theight, timestr_len, timestr, COL_MENUHEAD, 0, true); // UTF-8
|
|
|
|
|
timestr_len += 4;
|
|
|
|
|
}
|
|
|
|
@@ -1990,14 +2015,15 @@ void CChannelList::paintHead()
|
|
|
|
|
if (g_settings.channellist_new_zap_mode)
|
|
|
|
|
timestr_len += iw3 + 10;
|
|
|
|
|
logo_off = timestr_len + 10;
|
|
|
|
|
g_Font[SNeutrinoSettings::FONT_TYPE_MENU_TITLE]->RenderString(x+10,y+theight+0, widthDetails - timestr_len, name, COL_MENUHEAD, 0, true); // UTF-8
|
|
|
|
|
g_Font[SNeutrinoSettings::FONT_TYPE_MENU_TITLE]->RenderString(x+10,y+theight+0, full_width - timestr_len, name, COL_MENUHEAD, 0, true); // UTF-8
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CChannelList::paint()
|
|
|
|
|
{
|
|
|
|
|
if (g_settings.channellist_minitv)
|
|
|
|
|
if (g_settings.channellist_additional == 2) // with miniTV
|
|
|
|
|
{
|
|
|
|
|
paint_pig(x+width, y+theight+1, pig_width, pig_height);
|
|
|
|
|
// 5px offset - same value as in list below
|
|
|
|
|
paint_pig(x+width+5, y+theight+5, pig_width-10, pig_height-10);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
numwidth = g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST_NUMBER]->getRenderWidth(MaxChanNr().c_str());
|
|
|
|
@@ -2096,7 +2122,8 @@ void CChannelList::paint_events(int index)
|
|
|
|
|
readEvents(chanlist[index]->channel_id);
|
|
|
|
|
frameBuffer->paintBoxRel(x+ width,y+ theight+pig_height, infozone_width, infozone_height,COL_MENUCONTENT_PLUS_0);
|
|
|
|
|
|
|
|
|
|
char text1[10];
|
|
|
|
|
char startTime[10];
|
|
|
|
|
int startTimeWidth = 0;
|
|
|
|
|
CChannelEventList::iterator e;
|
|
|
|
|
time_t azeit;
|
|
|
|
|
time(&azeit);
|
|
|
|
@@ -2130,15 +2157,20 @@ void CChannelList::paint_events(int index)
|
|
|
|
|
}
|
|
|
|
|
if (e == evtlist.end())
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
//Display the remaining events
|
|
|
|
|
struct tm *tmStartZeit = localtime(&e->startTime);
|
|
|
|
|
strftime(text1, sizeof(text1), "%H:%M", tmStartZeit );
|
|
|
|
|
//printf("%s %s\n", text1, e->description.c_str());
|
|
|
|
|
int timewidth = g_Font[SNeutrinoSettings::FONT_TYPE_EPG_INFO1]->getRenderWidth(text1, true);
|
|
|
|
|
if ((y+ theight+ pig_height + i*ffheight) < (y+ theight+ pig_height + infozone_height))
|
|
|
|
|
{
|
|
|
|
|
g_Font[SNeutrinoSettings::FONT_TYPE_EPG_INFO1]->RenderString(x+ width+5, y+ theight+ pig_height + i*ffheight, timewidth, text1, COL_MENUCONTENTDARK, 0, true);
|
|
|
|
|
g_Font[SNeutrinoSettings::FONT_TYPE_EPG_INFO1]->RenderString(x+ width+5+timewidth+5, y+ theight+ pig_height + i*ffheight, infozone_width - timewidth - 20, e->description, COL_MENUCONTENTDARK, 0, true);
|
|
|
|
|
if (e->eventID)
|
|
|
|
|
{
|
|
|
|
|
struct tm *tmStartZeit = localtime(&e->startTime);
|
|
|
|
|
strftime(startTime, sizeof(startTime), "%H:%M", tmStartZeit );
|
|
|
|
|
//printf("%s %s\n", startTime, e->description.c_str());
|
|
|
|
|
startTimeWidth = g_Font[SNeutrinoSettings::FONT_TYPE_EPG_INFO1]->getRenderWidth("88:88"); // use a fixed value
|
|
|
|
|
g_Font[SNeutrinoSettings::FONT_TYPE_EPG_INFO1]->RenderString(x+ width+5, y+ theight+ pig_height + i*ffheight, startTimeWidth, startTime, COL_MENUCONTENTINACTIVE, 0, true);
|
|
|
|
|
startTimeWidth = startTimeWidth +5;
|
|
|
|
|
}
|
|
|
|
|
g_Font[SNeutrinoSettings::FONT_TYPE_EPG_INFO1]->RenderString(x+ width+5+startTimeWidth, y+ theight+ pig_height + i*ffheight, infozone_width - startTimeWidth - 20, e->description, COL_MENUCONTENTDARK, 0, true);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
@@ -2171,3 +2203,90 @@ void CChannelList::readEvents(const t_channel_id channel_id)
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CChannelList::showdescription(int index)
|
|
|
|
|
{
|
|
|
|
|
CZapitChannel* chan = chanlist[index];
|
|
|
|
|
CChannelEvent *p_event=NULL;
|
|
|
|
|
p_event = &chan->currentEvent;
|
|
|
|
|
epgData.info2.clear();
|
|
|
|
|
epgText.clear();
|
|
|
|
|
CEitManager::getInstance()->getEPGid(p_event->eventID, p_event->startTime, &epgData);
|
|
|
|
|
if (!(epgData.info2.empty()))
|
|
|
|
|
{
|
|
|
|
|
int ffheight = g_Font[SNeutrinoSettings::FONT_TYPE_EPG_INFO1]->getHeight();
|
|
|
|
|
frameBuffer->paintBoxRel(x+ width,y+ theight+pig_height, infozone_width, infozone_height,COL_MENUCONTENT_PLUS_0);
|
|
|
|
|
processTextToArray(epgData.info2);
|
|
|
|
|
for (unsigned int i = 1; (i < epgText.size()+1) && ((y+ theight+ pig_height + i*ffheight) < (y+ theight+ pig_height + infozone_height)); i++)
|
|
|
|
|
{
|
|
|
|
|
g_Font[SNeutrinoSettings::FONT_TYPE_EPG_INFO1]->RenderString(x+ width+5, y+ theight+ pig_height + i*ffheight, infozone_width - 20, epgText[i-1].first, COL_MENUCONTENTDARK , 0, true);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CChannelList::addTextToArray(const std::string & text, int screening) // UTF-8
|
|
|
|
|
{
|
|
|
|
|
//printf("line: >%s<\n", text.c_str() );
|
|
|
|
|
if (text==" ")
|
|
|
|
|
{
|
|
|
|
|
emptyLineCount ++;
|
|
|
|
|
if (emptyLineCount<2)
|
|
|
|
|
{
|
|
|
|
|
epgText.push_back(epg_pair(text,screening));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
emptyLineCount = 0;
|
|
|
|
|
epgText.push_back(epg_pair(text,screening));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CChannelList::processTextToArray(std::string text, int screening) // UTF-8
|
|
|
|
|
{
|
|
|
|
|
std::string aktLine = "";
|
|
|
|
|
std::string aktWord = "";
|
|
|
|
|
int aktWidth = 0;
|
|
|
|
|
text += ' ';
|
|
|
|
|
char* text_= (char*) text.c_str();
|
|
|
|
|
|
|
|
|
|
while (*text_!=0)
|
|
|
|
|
{
|
|
|
|
|
if ( (*text_==' ') || (*text_=='\n') || (*text_=='-') || (*text_=='.') )
|
|
|
|
|
{
|
|
|
|
|
if (*text_!='\n')
|
|
|
|
|
aktWord += *text_;
|
|
|
|
|
|
|
|
|
|
int aktWordWidth = g_Font[SNeutrinoSettings::FONT_TYPE_EPG_INFO1]->getRenderWidth(aktWord, true);
|
|
|
|
|
if ((aktWordWidth+aktWidth)<(infozone_width - 20))
|
|
|
|
|
{//space ok, add
|
|
|
|
|
aktWidth += aktWordWidth;
|
|
|
|
|
aktLine += aktWord;
|
|
|
|
|
|
|
|
|
|
if (*text_=='\n')
|
|
|
|
|
{ //enter-handler
|
|
|
|
|
addTextToArray( aktLine, screening );
|
|
|
|
|
aktLine = "";
|
|
|
|
|
aktWidth= 0;
|
|
|
|
|
}
|
|
|
|
|
aktWord = "";
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{//new line needed
|
|
|
|
|
addTextToArray( aktLine, screening);
|
|
|
|
|
aktLine = aktWord;
|
|
|
|
|
aktWidth = aktWordWidth;
|
|
|
|
|
aktWord = "";
|
|
|
|
|
if (*text_=='\n')
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
aktWord += *text_;
|
|
|
|
|
}
|
|
|
|
|
text_++;
|
|
|
|
|
}
|
|
|
|
|
//add the rest
|
|
|
|
|
addTextToArray( aktLine + aktWord, screening );
|
|
|
|
|
}
|
|
|
|
|