diff --git a/data/locale/deutsch.locale b/data/locale/deutsch.locale index 589c8fef2..2fd253a77 100644 --- a/data/locale/deutsch.locale +++ b/data/locale/deutsch.locale @@ -200,6 +200,10 @@ bouquetname.new Neue Kanäle bouquetname.other Unbekannter Provider bouquetname.removed Gelöschte Kanäle cablesetup.provider Kabelanbieter +channellist.additional Zusatzinformationen +channellist.additional_off aus +channellist.additional_on ein +channellist.additional_on_minitv ein (mit MiniTV) channellist.current_tp Aktueller Transponder channellist.edit Bearbeiten channellist.epgtext_align_left links @@ -220,8 +224,10 @@ channellist.keep_numbers Dauerhafte Kanalnummern channellist.make_hdlist Erzeuge Bouquet mit HD-Kanälen channellist.make_newlist Erzeuge Bouquet mit neuen Kanälen channellist.make_removedlist Erzeuge Bouquet mit gelöschten Kanälen -channellist.minitv Kanalliste mit MiniTV channellist.new_zap_mode Quickzap in Liste +channellist.new_zap_mode_active aktiv +channellist.new_zap_mode_allow erlauben +channellist.new_zap_mode_off aus channellist.nonefound Es wurden keine Kanäle gefunden!\nFühren Sie bitte eine Kanalsuche durch\n(MENU-Taste -> Service) channellist.provs Anbieter channellist.recording_not_possible Aufnahme nicht möglich! @@ -734,12 +740,12 @@ menu.hint_cache_txt Startet das Zwischenspeichern des Teletext nach\nKanalwechse menu.hint_cec_mode CEC-Modus menu.hint_cec_standby CEC-Standby menu.hint_cec_view_on CEC view ON +menu.hint_channellist_additional Definiert, ob zusätzliche Informationen im Hauptfenster angezeigt werden sollen menu.hint_channellist_colored Definiert ob die aktuelle oder nächste Sendung in einer anderen Farbe dargestellt werden soll menu.hint_channellist_epg_align Hier kann man festlegen, wie der Text für das EPG in der Liste\nrechts vom Programmnamen ausgerichtet wird menu.hint_channellist_extended Bei aktivierter Funktion wird vor dem Sendernamen ein Balken eingeblendet,\nder den Sendungsfortschritt anzeigt menu.hint_channellist_fonts Ändern Sie in der Kanalliste die Schriftgrößen menu.hint_channellist_foot Definiert welche Informationen im unteren Sendungsfenster angezeigt werden sollen -menu.hint_channellist_minitv Schaltet den MiniTV Modus ein/aus menu.hint_channellist_setup Hier können Sie Anzeigeoptionen für die Kanalliste auswählen menu.hint_ci Conditional-Access-Menü zum Einrichten\nIhres CI-Moduls oder der eingebetteten Conax-Karte menu.hint_colors Konfigurieren Sie die Menü-Farben diff --git a/data/locale/english.locale b/data/locale/english.locale index f5194cd91..c4a6a514b 100644 --- a/data/locale/english.locale +++ b/data/locale/english.locale @@ -200,6 +200,10 @@ bouquetname.new New channels bouquetname.other Unknown provider bouquetname.removed Removed channels cablesetup.provider cable provider +channellist.additional Additional informations +channellist.additional_off off +channellist.additional_on on +channellist.additional_on_minitv on (with MiniTV) channellist.current_tp Current transponder channellist.edit Edit channellist.epgtext_align_left left @@ -220,8 +224,10 @@ channellist.keep_numbers Persistent channel numbers channellist.make_hdlist Create list of HD channels channellist.make_newlist Create list of new channels channellist.make_removedlist Create list of removed channels -channellist.minitv Channellist with MiniTV channellist.new_zap_mode Quickzap in list +channellist.new_zap_mode_active active +channellist.new_zap_mode_allow allow +channellist.new_zap_mode_off off channellist.nonefound No channels were found!\nPlease execute a scan\n(MENU-key -> service) channellist.provs Providers channellist.recording_not_possible Recording not possible! @@ -734,12 +740,12 @@ menu.hint_cache_txt Start teletext caching after channel switch menu.hint_cec_mode CEC mode menu.hint_cec_standby CEC standby menu.hint_cec_view_on CEC view ON +menu.hint_channellist_additional Show additional informations\nin main box menu.hint_channellist_colored Use different color for current or next event menu.hint_channellist_epg_align EPG event align menu.hint_channellist_extended Show current event progress bar menu.hint_channellist_fonts Change channel list font sizes menu.hint_channellist_foot Show additional information\nin bottom box -menu.hint_channellist_minitv Switches the MiniTV mode on/off menu.hint_channellist_setup Configure channe list GUI options menu.hint_ci Conditional access menu\nto setup your CI CAM or embeded Conax card menu.hint_colors Configure GUI colors diff --git a/src/Makefile.am b/src/Makefile.am index 2111f4ad4..6eeebea33 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -115,7 +115,6 @@ else neutrino_LDADD += -lnxp endif - bin_PROGRAMS += drivertool drivertool_SOURCES = drivertool.c diff --git a/src/gui/channellist.cpp b/src/gui/channellist.cpp index 7fbe6b0e3..c1e34f806 100644 --- a/src/gui/channellist.cpp +++ b/src/gui/channellist.cpp @@ -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 ); +} diff --git a/src/gui/channellist.h b/src/gui/channellist.h index 4cc43c068..567e9dce8 100644 --- a/src/gui/channellist.h +++ b/src/gui/channellist.h @@ -72,23 +72,25 @@ private: ZapitChannelList chanlist; CZapProtection* zapProtection; - int width; - int widthDetails; - int height; - int x; - int y; + int full_width; + int width; + int height; + int x; + int y; int logo_off; - int pig_width; - int pig_height; - int infozone_width; - int infozone_height; + int pig_width; + int pig_height; + int infozone_width; + int infozone_height; + int previous_channellist_additional; + CEPGData epgData; bool historyMode; bool vlist; // "virtual" list, not bouquet bool displayNext; + bool displayList; int info_height; - bool new_mode_active; int ChannelList_Rec; void paintDetails(int index); @@ -107,9 +109,15 @@ private: void paint_events(int index); CChannelEventList evtlist; void readEvents(const t_channel_id channel_id); + void showdescription(int index); + typedef std::pair epg_pair; + std::vector epgText; + int emptyLineCount; + void addTextToArray( const std::string & text, int screening ); + void processTextToArray(std::string text, int screening = 0); public: - CChannelList(const char * const Name, bool historyMode = false, bool _vlist = false, bool new_mode_active = false ); + CChannelList(const char * const Name, bool historyMode = false, bool _vlist = false); ~CChannelList(); void SetChannelList(ZapitChannelList* channels); diff --git a/src/gui/miscsettings_menu.cpp b/src/gui/miscsettings_menu.cpp index d2b46c07e..672ccf668 100644 --- a/src/gui/miscsettings_menu.cpp +++ b/src/gui/miscsettings_menu.cpp @@ -135,6 +135,13 @@ const CMenuOptionChooser::keyval MISCSETTINGS_FILESYSTEM_IS_UTF8_OPTIONS[MISCSET { 1, LOCALE_FILESYSTEM_IS_UTF8_OPTION_UTF8 } }; +#define CHANNELLIST_NEW_ZAP_MODE_OPTION_COUNT 3 +const CMenuOptionChooser::keyval CHANNELLIST_NEW_ZAP_MODE_OPTIONS[CHANNELLIST_NEW_ZAP_MODE_OPTION_COUNT] = +{ + { 0, LOCALE_CHANNELLIST_NEW_ZAP_MODE_OFF }, + { 1, LOCALE_CHANNELLIST_NEW_ZAP_MODE_ALLOW }, + { 2, LOCALE_CHANNELLIST_NEW_ZAP_MODE_ACTIVE } +}; #ifdef CPU_FREQ #define CPU_FREQ_OPTION_COUNT 13 @@ -393,7 +400,7 @@ void CMiscMenue::showMiscSettingsMenuChanlist(CMenuWidget *ms_chanlist) mc->setHint("", LOCALE_MENU_HINT_ZAP_CYCLE); ms_chanlist->addItem(mc); - mc = new CMenuOptionChooser(LOCALE_CHANNELLIST_NEW_ZAP_MODE, &g_settings.channellist_new_zap_mode, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true ); + mc = new CMenuOptionChooser(LOCALE_CHANNELLIST_NEW_ZAP_MODE, &g_settings.channellist_new_zap_mode, CHANNELLIST_NEW_ZAP_MODE_OPTIONS, CHANNELLIST_NEW_ZAP_MODE_OPTION_COUNT, true ); mc->setHint("", LOCALE_MENU_HINT_NEW_ZAP_MODE); ms_chanlist->addItem(mc); } diff --git a/src/gui/osd_setup.cpp b/src/gui/osd_setup.cpp index 3fd4e292d..a5e4e8fd6 100644 --- a/src/gui/osd_setup.cpp +++ b/src/gui/osd_setup.cpp @@ -354,6 +354,14 @@ const CMenuOptionChooser::keyval INFOBAR_SHOW_RES_MODE_OPTIONS[INFOBAR_SHOW_RES_ { 2, LOCALE_OPTIONS_OFF } }; +#define CHANNELLIST_ADDITIONAL_OPTION_COUNT 3 +const CMenuOptionChooser::keyval CHANNELLIST_ADDITIONAL_OPTIONS[CHANNELLIST_ADDITIONAL_OPTION_COUNT] = +{ + { 0, LOCALE_CHANNELLIST_ADDITIONAL_OFF }, + { 1, LOCALE_CHANNELLIST_ADDITIONAL_ON }, + { 2, LOCALE_CHANNELLIST_ADDITIONAL_ON_MINITV } +}; + #define CHANNELLIST_FOOT_OPTIONS_COUNT 3 const CMenuOptionChooser::keyval CHANNELLIST_FOOT_OPTIONS[CHANNELLIST_FOOT_OPTIONS_COUNT]= { @@ -796,9 +804,10 @@ void COsdSetup::showOsdChanlistSetup(CMenuWidget *menu_chanlist) CMenuOptionChooser * mc; menu_chanlist->addIntroItems(LOCALE_MISCSETTINGS_CHANNELLIST); - // channel list with minitv - mc = new CMenuOptionChooser(LOCALE_CHANNELLIST_MINITV, &g_settings.channellist_minitv, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true); - mc->setHint("", LOCALE_MENU_HINT_CHANNELLIST_MINITV); + + // channellist additional + mc = new CMenuOptionChooser(LOCALE_CHANNELLIST_ADDITIONAL, &g_settings.channellist_additional, CHANNELLIST_ADDITIONAL_OPTIONS, CHANNELLIST_ADDITIONAL_OPTION_COUNT, true); + mc->setHint("", LOCALE_MENU_HINT_CHANNELLIST_ADDITIONAL); menu_chanlist->addItem(mc); // epg align @@ -893,9 +902,15 @@ int COsdSetup::showContextChanlistMenu() menu_chanlist->enableFade(false); menu_chanlist->setSelected(cselected); + CMenuOptionChooser * mc; + menu_chanlist->addIntroItems(LOCALE_MISCSETTINGS_CHANNELLIST);//, NONEXISTANT_LOCALE, CMenuWidget::BTN_TYPE_CANCEL); - CMenuOptionChooser * mc = new CMenuOptionChooser(LOCALE_MISCSETTINGS_CHANNELLIST_EPGTEXT_ALIGN, &g_settings.channellist_epgtext_align_right, CHANNELLIST_EPGTEXT_ALIGN_RIGHT_OPTIONS, CHANNELLIST_EPGTEXT_ALIGN_RIGHT_OPTIONS_COUNT, true); + mc = new CMenuOptionChooser(LOCALE_CHANNELLIST_ADDITIONAL, &g_settings.channellist_additional, CHANNELLIST_ADDITIONAL_OPTIONS, CHANNELLIST_ADDITIONAL_OPTION_COUNT, true); + mc->setHint("", LOCALE_MENU_HINT_CHANNELLIST_ADDITIONAL); + menu_chanlist->addItem(mc); + + mc = new CMenuOptionChooser(LOCALE_MISCSETTINGS_CHANNELLIST_EPGTEXT_ALIGN, &g_settings.channellist_epgtext_align_right, CHANNELLIST_EPGTEXT_ALIGN_RIGHT_OPTIONS, CHANNELLIST_EPGTEXT_ALIGN_RIGHT_OPTIONS_COUNT, true); mc->setHint("", LOCALE_MENU_HINT_CHANNELLIST_EPG_ALIGN); menu_chanlist->addItem(mc); @@ -911,6 +926,8 @@ int COsdSetup::showContextChanlistMenu() mc->setHint("", LOCALE_MENU_HINT_CHANNELLIST_COLORED); menu_chanlist->addItem(mc); + menu_chanlist->addItem(new CMenuSeparator(CMenuSeparator::LINE)); + CMenuWidget *fontSettingsSubMenu = new CMenuWidget(LOCALE_FONTMENU_HEAD, NEUTRINO_ICON_KEYBINDING); fontSettingsSubMenu->enableSaveScreen(true); fontSettingsSubMenu->enableFade(false); @@ -925,7 +942,7 @@ int COsdSetup::showContextChanlistMenu() fontSettingsSubMenu->addItem(GenericMenuSeparatorLine); fontSettingsSubMenu->addItem(new CMenuForwarder(LOCALE_OPTIONS_DEFAULT, true, NULL, this, font_sizes_groups[i].actionkey)); - CMenuForwarder * mf = new CMenuDForwarder(LOCALE_FONTMENU_HEAD, true, NULL, fontSettingsSubMenu, NULL, CRCInput::RC_green, NEUTRINO_ICON_BUTTON_GREEN); + CMenuForwarder * mf = new CMenuDForwarder(LOCALE_FONTMENU_HEAD, true, NULL, fontSettingsSubMenu, NULL, CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED); mf->setHint("", LOCALE_MENU_HINT_FONTS); menu_chanlist->addItem(mf); diff --git a/src/gui/update_ext.cpp b/src/gui/update_ext.cpp index 50619921f..601b11647 100644 --- a/src/gui/update_ext.cpp +++ b/src/gui/update_ext.cpp @@ -596,13 +596,13 @@ bool CExtUpdate::readBackupList(const std::string & dstPath) // read DeleteList for(it = deleteList.begin(); it != deleteList.end(); ++it) { line = *it; - if (lstat(line.c_str(), &FileInfo) != -1) { - if ((line.find("*") != std::string::npos) || (line.find("?") != std::string::npos)) { - // Wildcards - WRITE_UPDATE_LOG("delete file list: %s\n", line.c_str()); - deleteFileList(line.c_str()); - } - else if (S_ISREG(FileInfo.st_mode)) { + if ((line.find("*") != std::string::npos) || (line.find("?") != std::string::npos)) { + // Wildcards + WRITE_UPDATE_LOG("delete file list: %s\n", line.c_str()); + deleteFileList(line.c_str()); + } + else if (lstat(line.c_str(), &FileInfo) != -1) { + if (S_ISREG(FileInfo.st_mode)) { // File WRITE_UPDATE_LOG("delete file: %s\n", line.c_str()); unlink(line.c_str()); diff --git a/src/neutrino.cpp b/src/neutrino.cpp index 9800f2103..911fe892f 100644 --- a/src/neutrino.cpp +++ b/src/neutrino.cpp @@ -610,12 +610,12 @@ int CNeutrinoApp::loadSetup(const char * fname) g_settings.mode_clock = configfile.getInt32( "mode_clock", 0); g_settings.zapto_pre_time = configfile.getInt32( "zapto_pre_time", 0); g_settings.spectrum = configfile.getBool("spectrum" , false); + g_settings.channellist_additional = configfile.getInt32("channellist_additional", 0); //default off g_settings.channellist_epgtext_align_right = configfile.getBool("channellist_epgtext_align_right" , false); g_settings.channellist_extended = configfile.getBool("channellist_extended" , true); g_settings.channellist_foot = configfile.getInt32("channellist_foot" , 1);//default next Event g_settings.channellist_new_zap_mode = configfile.getInt32("channellist_new_zap_mode", 1); g_settings.channellist_sort_mode = configfile.getInt32("channellist_sort_mode", 0);//sort mode: alpha, freq, sat - g_settings.channellist_minitv = configfile.getInt32("channellist_minitv", 0); //default off //screen configuration g_settings.screen_xres = configfile.getInt32("screen_xres", 100); @@ -1032,11 +1032,11 @@ void CNeutrinoApp::saveSetup(const char * fname) configfile.setInt32( "mode_clock", g_settings.mode_clock ); configfile.setInt32( "zapto_pre_time", g_settings.zapto_pre_time ); configfile.setBool("spectrum", g_settings.spectrum); + configfile.setInt32("channellist_additional", g_settings.channellist_additional); configfile.setBool("channellist_epgtext_align_right", g_settings.channellist_epgtext_align_right); configfile.setBool("channellist_extended" , g_settings.channellist_extended); configfile.setInt32("channellist_foot" , g_settings.channellist_foot); configfile.setInt32("channellist_new_zap_mode", g_settings.channellist_new_zap_mode); - configfile.setInt32("channellist_minitv", g_settings.channellist_minitv); configfile.setInt32("remote_control_hardware", g_settings.remote_control_hardware); configfile.setBool ( "audiochannel_up_down_enable", g_settings.audiochannel_up_down_enable ); configfile.setInt32("channellist_sort_mode", g_settings.channellist_sort_mode); @@ -1805,8 +1805,6 @@ TIMER_START(); cpuFreq->SetCpuFreq(g_settings.cpufreq * 1000 * 1000); g_info.delivery_system = CFEManager::getInstance()->getLiveFE()->getInfo()->type == FE_QPSK ? DVB_S : DVB_C; - - g_info.delivery_system = CFEManager::getInstance()->getLiveFE()->getInfo()->type == FE_QPSK ? DVB_S : DVB_C; #if HAVE_TRIPLEDRAGON /* only SAT-hd1 before rev 8 has fan, rev 1 is TD (compat hack) */ g_info.has_fan = (cs_get_revision() > 1 && cs_get_revision() < 8 && g_info.delivery_system == DVB_S); diff --git a/src/nhttpd/web/Makefile.am b/src/nhttpd/web/Makefile.am index 7a1a58268..094ff6968 100644 --- a/src/nhttpd/web/Makefile.am +++ b/src/nhttpd/web/Makefile.am @@ -75,7 +75,6 @@ install_DATA = channels.js \ Y_Tools_Boxcontrol.yhtm \ Y_Tools_Check_Install.yhtm \ Y_Tools_Cmd.yhtm \ - Y_Tools_fbshot.yhtm \ Y_Tools_Flash_Menue.yhtm \ Y_Tools_Flash_Upload.yhtm \ Y_Tools_Info_Menue.yhtm \ diff --git a/src/nhttpd/web/Y_Boxcontrol_Menue.yhtm b/src/nhttpd/web/Y_Boxcontrol_Menue.yhtm index c75361b24..88d93b977 100644 --- a/src/nhttpd/web/Y_Boxcontrol_Menue.yhtm +++ b/src/nhttpd/web/Y_Boxcontrol_Menue.yhtm @@ -72,8 +72,7 @@ function init(){ {=var-set:lcshot={=if-file-exists:/bin/lcshot~true~{=if-file-exists:/var/bin/lcshot~true~false=}=}=} -{=var-set:fbshot={=if-file-exists:/bin/fbshot~true~{=if-file-exists:/var/bin/fbshot~true~{=if-file-exists:/bin/dboxshot~true~{=if-file-exists:/var/bin/dboxshot~true~false=}=}=}=}=} -{=var-set:dboxshot={=if-file-exists:/bin/dboxshot~true~{=if-file-exists:/var/bin/dboxshot~true~false=}=}=} +{=var-set:fbshot={=if-file-exists:/bin/fbshot~true~{=if-file-exists:/var/bin/fbshot~true~false=}=}=}

{=L:main.boxcontrol=}

@@ -106,13 +105,13 @@ function init(){
  • {=if-equal:{=var-get:fbshot=}~true~ - {=L:bc.menue.osd_screenshot=} + {=L:bc.menue.osd_screenshot=} ~ {=L:bc.menue.osd_screenshot=} =}
  • - {=if-equal:{=var-get:dboxshot=}~true~ + {=if-equal:{=var-get:fbshot=}~true~ {=L:bc.menue.remote_osd=} ~ {=L:bc.menue.remote_osd=} diff --git a/src/nhttpd/web/Y_Main.css b/src/nhttpd/web/Y_Main.css index 7f48c980d..15a1b39f5 100644 --- a/src/nhttpd/web/Y_Main.css +++ b/src/nhttpd/web/Y_Main.css @@ -39,6 +39,7 @@ button[ytype="timedown"]{background-image:url(/images/time_down.png);} button[ytype="timeadd"]{background-image:url(/images/time_add.png);} button[ytype="shot"]{background-image:url(/images/snapshot.png);} button[ytype="clearshot"]{background-image:url(/images/remove.png);} +button[ytype="zoomshot"]{background-image:url(/images/fullscreen.png);} button[ytype="go"]{background-image:url(/images/accept.png);} button[ytype="download"]{background-image:url(/images/wget.gif);} button[ytype="clear"]{background-image:url(/images/remove.png);} @@ -846,3 +847,15 @@ a.timer { .lt_table td { white-space: pre-wrap; } + +/* screenshots */ +td.shot { + vertical-align: top; +} +img#shot { + width: 100%; + background-color: #ffffff; +} +img#shot:hover { + cursor: pointer; +} diff --git a/src/nhttpd/web/Y_Tools_fbshot.yhtm b/src/nhttpd/web/Y_Tools_fbshot.yhtm deleted file mode 100644 index 9b16935f4..000000000 --- a/src/nhttpd/web/Y_Tools_fbshot.yhtm +++ /dev/null @@ -1,56 +0,0 @@ -{=var-set:cancache=yPInstall=} -{=include-block:Y_Blocks.txt;head=} - - - - -{=var-set:wait_text={=L:bc.osd.shap_wait_text=}=}{=include-block:Y_Blocks.txt;snip_wait=} -
    -
    - {=var-set:help_url=Help-BoxControl-OSD_Screenshot=}{=var-set:menu={=L:bc.menue.osd_screenshot=}=}{=include-block:Y_Blocks.txt;work_menu=}
    -
    - - {=var-set:dboxshot={=if-file-exists:/bin/dboxshot~true~{=if-file-exists:/var/bin/dboxshot~true~false=}=}=} - -  Filename: -
    - -
    -
    - - diff --git a/src/nhttpd/web/Y_Tools_remote_osd.yhtm b/src/nhttpd/web/Y_Tools_remote_osd.yhtm index f45c62466..4a30ff29f 100644 --- a/src/nhttpd/web/Y_Tools_remote_osd.yhtm +++ b/src/nhttpd/web/Y_Tools_remote_osd.yhtm @@ -7,14 +7,16 @@ function rcsim(_key) { $('statusline').show(); $('buttons').hide(); dbox_rcsim(_key); - window.setTimeout("do_dboxshot()",750); + window.setTimeout("do_snapshot()",750); } -function do_dboxshot(){ - var res = dbox_exec_tools("fbshot fb /tmp/a.png"); +function do_snapshot(){ + var filename = id("filename").value; + var res = dbox_exec_tools("fbshot fb /tmp/"+filename+".png"); var _shot = document.getElementById("shot"); - _shot.src = "/tmp/a.png?"+Math.random(); + _shot.src = "/tmp/"+filename+".png?"+Math.random(); $('statusline').hide(); $('buttons').show(); + show_obj("shot", true); } function do_clearshot(){ window.setTimeout("do_clearshot2()", 500); @@ -22,23 +24,40 @@ function do_clearshot(){ function do_clearshot2(){ dbox_exec_tools("fbshot_clear"); } +function do_zoomshot(){ + // not a really zoom-function + var _remote = document.getElementById('remote'); + + if (_remote.style.display == 'none') + _remote.style.display='inline'; + else + _remote.style.display='none'; +} //]]> - -
    + +
    {=var-set:help_url=Help-BoxControl-Remote_OSD=}{=var-set:menu={=L:bc.menue.remote_osd=}=}{=include-block:Y_Blocks.txt;work_menu=}
    - + wait
    - - + +
    {=include-block:Y_Blocks.txt;remote=} + {=include-block:Y_Blocks.txt;remote=} + + +
    diff --git a/src/nhttpd/web/Y_Version.txt b/src/nhttpd/web/Y_Version.txt index e8859d88d..6e468eaee 100644 --- a/src/nhttpd/web/Y_Version.txt +++ b/src/nhttpd/web/Y_Version.txt @@ -1,4 +1,4 @@ -version=2.8.0.31 -date=19.11.2012 +version=2.8.0.33 +date=06.02.2013 type=Release info=Port Coolstream diff --git a/src/nhttpd/web/languages/Deutsch b/src/nhttpd/web/languages/Deutsch index 54c919d3e..95a5977ee 100644 --- a/src/nhttpd/web/languages/Deutsch +++ b/src/nhttpd/web/languages/Deutsch @@ -51,6 +51,7 @@ check=Prüfen help=Hilfe attention=Achtung! directory=Verzeichnis +filename=Dateiname restriced_by_management_ip=Zugriff verwehrt wg. ManagementIP # ==========Main Menue @@ -128,6 +129,7 @@ bc.msg.send_message=Nachricht senden ======== Boxcontrol - Remote & OSD bc.osd.shot=Schnappschuss bc.osd.delete_shots=Schnappschuss löschen +bc.osd.zoom_shot=Schnappschuss zoomen bc.osd.shap_wait_text=Schnappschuss wird erstellt ======== Boxcontrol - TV-Screenshot diff --git a/src/nhttpd/web/languages/English b/src/nhttpd/web/languages/English index b4a2e43e9..4bedd9afa 100644 --- a/src/nhttpd/web/languages/English +++ b/src/nhttpd/web/languages/English @@ -51,6 +51,7 @@ check=check help=Help attention=Attention! directory=Directory +filename=Filename restriced_by_management_ip=restricted by ManagementIP #========= MAIN Menue @@ -130,6 +131,7 @@ bc.msg.send_message=send message ======== Boxcontrol - Remote & OSD bc.osd.shot=Shot bc.osd.delete_shots=Delete shots +bc.osd.zoom_shot=Zoom shot bc.osd.shap_wait_text=Take Snapshot ======== Boxcontrol - TV-Screenshot diff --git a/src/system/locals.h b/src/system/locals.h index e1cb8d7d5..6abc7197f 100644 --- a/src/system/locals.h +++ b/src/system/locals.h @@ -227,6 +227,10 @@ typedef enum LOCALE_BOUQUETNAME_OTHER, LOCALE_BOUQUETNAME_REMOVED, LOCALE_CABLESETUP_PROVIDER, + LOCALE_CHANNELLIST_ADDITIONAL, + LOCALE_CHANNELLIST_ADDITIONAL_OFF, + LOCALE_CHANNELLIST_ADDITIONAL_ON, + LOCALE_CHANNELLIST_ADDITIONAL_ON_MINITV, LOCALE_CHANNELLIST_CURRENT_TP, LOCALE_CHANNELLIST_EDIT, LOCALE_CHANNELLIST_EPGTEXT_ALIGN_LEFT, @@ -247,8 +251,10 @@ typedef enum LOCALE_CHANNELLIST_MAKE_HDLIST, LOCALE_CHANNELLIST_MAKE_NEWLIST, LOCALE_CHANNELLIST_MAKE_REMOVEDLIST, - LOCALE_CHANNELLIST_MINITV, LOCALE_CHANNELLIST_NEW_ZAP_MODE, + LOCALE_CHANNELLIST_NEW_ZAP_MODE_ACTIVE, + LOCALE_CHANNELLIST_NEW_ZAP_MODE_ALLOW, + LOCALE_CHANNELLIST_NEW_ZAP_MODE_OFF, LOCALE_CHANNELLIST_NONEFOUND, LOCALE_CHANNELLIST_PROVS, LOCALE_CHANNELLIST_RECORDING_NOT_POSSIBLE, @@ -761,12 +767,12 @@ typedef enum LOCALE_MENU_HINT_CEC_MODE, LOCALE_MENU_HINT_CEC_STANDBY, LOCALE_MENU_HINT_CEC_VIEW_ON, + LOCALE_MENU_HINT_CHANNELLIST_ADDITIONAL, LOCALE_MENU_HINT_CHANNELLIST_COLORED, LOCALE_MENU_HINT_CHANNELLIST_EPG_ALIGN, LOCALE_MENU_HINT_CHANNELLIST_EXTENDED, LOCALE_MENU_HINT_CHANNELLIST_FONTS, LOCALE_MENU_HINT_CHANNELLIST_FOOT, - LOCALE_MENU_HINT_CHANNELLIST_MINITV, LOCALE_MENU_HINT_CHANNELLIST_SETUP, LOCALE_MENU_HINT_CI, LOCALE_MENU_HINT_COLORS, diff --git a/src/system/locals_intern.h b/src/system/locals_intern.h index e582f4e49..feed76535 100644 --- a/src/system/locals_intern.h +++ b/src/system/locals_intern.h @@ -227,6 +227,10 @@ const char * locale_real_names[] = "bouquetname.other", "bouquetname.removed", "cablesetup.provider", + "channellist.additional", + "channellist.additional_off", + "channellist.additional_on", + "channellist.additional_on_minitv", "channellist.current_tp", "channellist.edit", "channellist.epgtext_align_left", @@ -247,8 +251,10 @@ const char * locale_real_names[] = "channellist.make_hdlist", "channellist.make_newlist", "channellist.make_removedlist", - "channellist.minitv", "channellist.new_zap_mode", + "channellist.new_zap_mode_active", + "channellist.new_zap_mode_allow", + "channellist.new_zap_mode_off", "channellist.nonefound", "channellist.provs", "channellist.recording_not_possible", @@ -761,12 +767,12 @@ const char * locale_real_names[] = "menu.hint_cec_mode", "menu.hint_cec_standby", "menu.hint_cec_view_on", + "menu.hint_channellist_additional", "menu.hint_channellist_colored", "menu.hint_channellist_epg_align", "menu.hint_channellist_extended", "menu.hint_channellist_fonts", "menu.hint_channellist_foot", - "menu.hint_channellist_minitv", "menu.hint_channellist_setup", "menu.hint_ci", "menu.hint_colors", diff --git a/src/system/settings.h b/src/system/settings.h index 101ee4224..f84f44de8 100644 --- a/src/system/settings.h +++ b/src/system/settings.h @@ -416,12 +416,12 @@ struct SNeutrinoSettings int pip_y; int bigFonts; int big_windows; + int channellist_additional; int channellist_epgtext_align_right; int channellist_extended; int channellist_foot; int channellist_new_zap_mode; int channellist_sort_mode; - int channellist_minitv; char repeat_blocker[4]; char repeat_genericblocker[4]; int remote_control_hardware;