diff --git a/.gitignore b/.gitignore index bbd35a839..70c4a6ac3 100644 --- a/.gitignore +++ b/.gitignore @@ -26,6 +26,10 @@ INSTALL *.la .*.swp +### editor crap +*.rej +*~ + ### binaries that fall out of the build lib/sectionsdclient/sectionsdcontrol src/neutrino diff --git a/data/cables.xml b/data/cables.xml index 2a3ed0c75..ce0008bf5 100644 --- a/data/cables.xml +++ b/data/cables.xml @@ -515,6 +515,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/Makefile.am b/data/icons/Makefile.am index b8b41539d..6d2b7b202 100644 --- a/data/icons/Makefile.am +++ b/data/icons/Makefile.am @@ -69,7 +69,6 @@ install_DATA += \ dd.png \ dd_avail.png \ dd_gray.png \ - ddfill.png \ down.png \ error.png \ features.png \ @@ -110,6 +109,7 @@ install_DATA += \ hint_reboot.png \ hint_recording.png \ hint_reload.png \ + hint_restart.png \ hint_save.png \ hint_scan.png \ hint_scripts.png \ @@ -162,6 +162,7 @@ install_DATA += \ mp3-5.jpg \ mp3-6.jpg \ mp3-7.jpg \ + multimedia.png \ mute.png \ mute_small.png \ mute_zap_gray.png \ diff --git a/data/icons/ddfill.png b/data/icons/ddfill.png deleted file mode 100644 index 88e3fc272..000000000 Binary files a/data/icons/ddfill.png and /dev/null differ diff --git a/data/icons/hint_restart.png b/data/icons/hint_restart.png new file mode 100644 index 000000000..2ac75bd1b Binary files /dev/null and b/data/icons/hint_restart.png differ diff --git a/data/icons/multimedia.png b/data/icons/multimedia.png new file mode 100644 index 000000000..72ea0c77c Binary files /dev/null and b/data/icons/multimedia.png differ diff --git a/data/icons/radio.jpg b/data/icons/radio.jpg deleted file mode 100644 index 4a9072c53..000000000 Binary files a/data/icons/radio.jpg and /dev/null differ diff --git a/data/locale/deutsch.locale b/data/locale/deutsch.locale index 2af2a5e7f..54e51f09d 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 @@ -221,6 +225,9 @@ 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.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! @@ -516,6 +523,7 @@ fontmenu.sizes Schriftgrössen fontsize.channel_num_zap Direktauswahl fontsize.channellist Kanalliste fontsize.channellist_descr Beschreibung +fontsize.channellist_event Eventliste fontsize.channellist_number Nummer fontsize.epg_date EPG Datum fontsize.epg_info1 EPG Info 1 @@ -733,6 +741,7 @@ 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 @@ -794,6 +803,7 @@ menu.hint_infobar_fonts Ändern Sie in der Infobar die Schriftgrößen menu.hint_infobar_logo Logo- und Signal-Optionen menu.hint_infobar_logo_dir Hier wählen Sie das Verzeichnis für die Senderlogos menu.hint_infobar_on_epg Zeigt einen Hinweis bei EPG-Änderungen +menu.hint_infobar_progressbar Wählt die Optionen des Fortschrittsbalken in der Infobar menu.hint_infobar_radiotext Zeigt Radiotext in einen Fenster, wenn verfügbar menu.hint_infobar_res Zeige die gesendete Auflösung in Symbolen menu.hint_infobar_sat Zeigt die aktuellen Satelliten- oder Kabel-Provider @@ -1123,6 +1133,11 @@ miscsettings.infobar_disp_5 Logo/Signalbalken miscsettings.infobar_disp_6 Logo+Kanalnummer/Signalbalken miscsettings.infobar_disp_log Logo miscsettings.infobar_logo_hdd_dir Logo Verz. +miscsettings.infobar_progressbar Fortschrittsbalken Opt. +miscsettings.infobar_progressbar_0 Standard +miscsettings.infobar_progressbar_1 unterhalb Kanalname +miscsettings.infobar_progressbar_2 unterhalb Kanalname schmal +miscsettings.infobar_progressbar_3 zwischen EPG-Events schmal miscsettings.infobar_sat_display Kabel-/Satellitenanbieter miscsettings.infobar_show Info bei EPG Änderungen miscsettings.infobar_show_dd_available DD-Verfügbarkeit anzeigen diff --git a/data/locale/english.locale b/data/locale/english.locale index 7534161c2..bb4531ad6 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 @@ -221,6 +225,9 @@ 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.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! @@ -516,12 +523,13 @@ fontmenu.sizes Font sizes fontsize.channel_num_zap direct selection fontsize.channellist Channellist fontsize.channellist_descr Description +fontsize.channellist_event Event list fontsize.channellist_number Number fontsize.epg_date EPG Date fontsize.epg_info1 EPG Info 1 fontsize.epg_info2 EPG Info 2 fontsize.epg_title EPG Title -fontsize.eventlist_datetime Date / Dime +fontsize.eventlist_datetime Date / Time fontsize.eventlist_itemlarge Large fontsize.eventlist_itemsmall Small fontsize.eventlist_title Title @@ -733,6 +741,7 @@ 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 @@ -794,6 +803,7 @@ menu.hint_infobar_fonts Change infobar font sizes menu.hint_infobar_logo Logo / signal options menu.hint_infobar_logo_dir Select directory to search for channels logo menu.hint_infobar_on_epg Show infobar on current EPG event change +menu.hint_infobar_progressbar Selects the options of Progressbar in the Infobar menu.hint_infobar_radiotext Show radiotext window menu.hint_infobar_res Show channel resolution icons menu.hint_infobar_sat Show current satellite or cable provider @@ -1123,6 +1133,11 @@ miscsettings.infobar_disp_5 Logo+signal miscsettings.infobar_disp_6 Logo+channel number+signal miscsettings.infobar_disp_log Logo miscsettings.infobar_logo_hdd_dir Logo dir +miscsettings.infobar_progressbar progressbar options +miscsettings.infobar_progressbar_0 standard +miscsettings.infobar_progressbar_1 below channel name +miscsettings.infobar_progressbar_2 small below channel name +miscsettings.infobar_progressbar_3 narrow between EPG-Events miscsettings.infobar_sat_display Satellite display on infobar miscsettings.infobar_show show Info on EPG change miscsettings.infobar_show_dd_available show DD availability diff --git a/src/eitd/sectionsd.cpp b/src/eitd/sectionsd.cpp index 3344aa424..623279768 100644 --- a/src/eitd/sectionsd.cpp +++ b/src/eitd/sectionsd.cpp @@ -1379,8 +1379,10 @@ void CTimeThread::run() if(!scanning) sleep_time = 0; real_pause(); +#ifndef DEBUG_TIME_THREAD + Sleep(); +#else int rs = Sleep(); -#ifdef DEBUG_TIME_THREAD xprintf("%s: wakeup, running %d scanning %d channel %" PRIx64 " reason %d\n", name.c_str(), running, scanning, current_service, rs); #endif @@ -1572,8 +1574,19 @@ bool CEventsThread::addEvents() for (SIevents::const_iterator e = eit.events().begin(); e != eit.events().end(); ++e) { if (!(e->times.empty())) { +#if 0 if ( ( e->times.begin()->startzeit < zeit + secondsToCache ) && - ( ( e->times.begin()->startzeit + (long)e->times.begin()->dauer ) > zeit - oldEventsAre ) ) + ( ( e->times.begin()->startzeit + (long)e->times.begin()->dauer ) > zeit - oldEventsAre ) && + ( e->times.begin()->dauer < 60 ) ) { + char x_startTime[10]; + struct tm *x_tmStartTime = localtime(&e->times.begin()->startzeit); + strftime(x_startTime, sizeof(x_startTime)-1, "%H:%M", x_tmStartTime ); + printf("####[%s - #%d] - startzeit: %s, dauer: %d, channel_id: 0x%llX\n", __FUNCTION__, __LINE__, x_startTime, e->times.begin()->dauer, e->get_channel_id()); + } +#endif + if ( ( e->times.begin()->startzeit < zeit + secondsToCache ) && + ( ( e->times.begin()->startzeit + (long)e->times.begin()->dauer ) > zeit - oldEventsAre ) && + ( e->times.begin()->dauer > 1 ) ) { addEvent(*e, wait_for_time ? zeit: 0, e->table_id == 0x4e); event_count++; diff --git a/src/gui/audioplayer.cpp b/src/gui/audioplayer.cpp index 8d48c12ab..268146208 100644 --- a/src/gui/audioplayer.cpp +++ b/src/gui/audioplayer.cpp @@ -275,7 +275,7 @@ int CAudioPlayerGui::exec(CMenuTarget* parent, const std::string &actionKey) m_current = 0; m_selected = 0; - m_width=(g_settings.screen_EndX - g_settings.screen_StartX) - ConnectLineBox_Width - 5; + m_width=(g_settings.screen_EndX - g_settings.screen_StartX) - 2*ConnectLineBox_Width - 5; m_height = (g_settings.screen_EndY - g_settings.screen_StartY - 5); m_sheight = g_Font[SNeutrinoSettings::FONT_TYPE_INFOBAR_SMALL]->getHeight(); @@ -293,7 +293,9 @@ int CAudioPlayerGui::exec(CMenuTarget* parent, const std::string &actionKey) m_listmaxshow = (m_height - m_info_height - m_title_height - m_theight - 2*m_buttonHeight) / (m_fheight); m_height = m_theight + m_info_height + m_title_height + 2*m_buttonHeight + m_listmaxshow * m_fheight; // recalc height - m_x = getScreenStartX( m_width + ConnectLineBox_Width ) + ConnectLineBox_Width; + m_x = getScreenStartX( m_width ); + if (m_x < ConnectLineBox_Width) + m_x = ConnectLineBox_Width; m_y = getScreenStartY( m_height ); m_idletime=time(NULL); @@ -360,6 +362,9 @@ int CAudioPlayerGui::show() int ret = menu_return::RETURN_REPAINT; + // clear whole screen + m_frameBuffer->paintBackground(); + CVFD::getInstance()->setMode(CVFD::MODE_AUDIO); paintLCD(); @@ -420,8 +425,6 @@ int CAudioPlayerGui::show() videoDecoder->ShowPicture(fname); } else if (pic_index) { pic_index = 0; - videoDecoder->StopPicture(); - videoDecoder->ShowPicture(DATADIR "/neutrino/icons/mp3.jpg"); } } else pic_index = 0; @@ -434,6 +437,11 @@ int CAudioPlayerGui::show() if (m_screensaver) { screensaver(false); + if (msg < CRCInput::RC_MaxRC) { + // ignore first keypress - just quit the screensaver + g_RCInput->clearRCMsg(); + continue; + } } } @@ -895,9 +903,6 @@ int CAudioPlayerGui::show() ret = menu_return::RETURN_EXIT_ALL; loop = false; } - // update mute icon - //paintHead(); - //paintLCD(); } m_frameBuffer->blit(); } @@ -1592,6 +1597,7 @@ void CAudioPlayerGui::paintItem(int pos) c_rad_small = 0; } + m_frameBuffer->paintBoxRel(m_x, ypos, m_width - 15, m_fheight, COL_MENUCONTENT_PLUS_0); m_frameBuffer->paintBoxRel(m_x, ypos, m_width - 15, m_fheight, bgcolor, c_rad_small); if ((pos + m_liststart) < m_playlist.size()) @@ -1666,20 +1672,6 @@ void CAudioPlayerGui::paintHead() xpos -= (iw + 10); } //m_frameBuffer->paintIcon(NEUTRINO_ICON_BUTTON_MENU, m_x + m_width - 30, ypos); -#endif -#if 1 - if ( CNeutrinoApp::getInstance()->isMuted() ) - { -#if 0 - int xpos = m_x + m_width - 75; - ypos = m_y + m_title_height; - if (m_theight > 32) - ypos = (m_theight - 32) / 2 + m_y + m_title_height; - m_frameBuffer->paintIcon(NEUTRINO_ICON_BUTTON_MUTE, xpos, ypos); -#endif - m_frameBuffer->getIconSize(NEUTRINO_ICON_BUTTON_MUTE, &iw, &ih); - m_frameBuffer->paintIcon(NEUTRINO_ICON_BUTTON_MUTE, xpos - iw, ypos, m_theight); - } #endif m_frameBuffer->blit(); } @@ -1734,7 +1726,9 @@ const struct button_label AudioPlayerButtons[][4] = void CAudioPlayerGui::paintFoot() { - // printf("paintFoot{\n"); + if (m_screensaver) + return; + const struct button_label ScondLineButtons[3] = { { NEUTRINO_ICON_BUTTON_OKAY , LOCALE_AUDIOPLAYER_PLAY }, @@ -1750,8 +1744,8 @@ const struct button_label ScondLineButtons[3] = top = m_y + (m_height - 2 * m_buttonHeight); //int ButtonWidth2 = (m_width - 50) / 2; - m_frameBuffer->paintBoxRel(m_x, top, m_width, 2 * m_buttonHeight, COL_INFOBAR_SHADOW_PLUS_1, c_rad_mid, CORNER_BOTTOM); - m_frameBuffer->paintHLine(m_x, m_x + m_width, top, COL_INFOBAR_SHADOW_PLUS_1); + m_frameBuffer->paintBoxRel(m_x, top, m_width, 2 * m_buttonHeight, COL_INFOBAR_SHADOW_PLUS_1, c_rad_mid, (m_show_playlist ? CORNER_BOTTOM : CORNER_ALL)); + // why? m_frameBuffer->paintHLine(m_x, m_x + m_width, top, COL_INFOBAR_SHADOW_PLUS_1); if (!m_playlist.empty()) ::paintButtons(m_x, top+m_buttonHeight, m_width, 3, ScondLineButtons, m_width, m_buttonHeight); @@ -1799,6 +1793,9 @@ const struct button_label ScondLineButtons[3] = //------------------------------------------------------------------------ void CAudioPlayerGui::paintInfo() { + if (m_screensaver) + return; + int c_rad_mid = RADIUS_MID; if (m_state == CAudioPlayerGui::STOP && m_show_playlist) m_frameBuffer->paintBackgroundBoxRel(m_x, m_y, m_width, m_title_height); @@ -1896,8 +1893,8 @@ void CAudioPlayerGui::paint() m_frameBuffer->paintBoxRel(m_x + m_width - 13, ypos + 2 + sbs*(sb-4)/sbc , 11, (sb-4)/sbc, COL_MENUCONTENT_PLUS_3, RADIUS_SMALL); } - paintFoot(); paintInfo(); + paintFoot(); m_frameBuffer->blit(); m_visible = true; @@ -2115,11 +2112,9 @@ void CAudioPlayerGui::play(unsigned int pos) //LCD paintLCD(); // Display - if (!m_screensaver) - paintInfo(); + paintInfo(); m_key_level = 1; - if (!m_screensaver) - paintFoot(); + paintFoot(); } } //------------------------------------------------------------------------ @@ -2338,11 +2333,8 @@ void CAudioPlayerGui::screensaver(bool on) { g_RCInput->killTimer(stimer); m_screensaver = false; -#if 0 - m_frameBuffer->loadPal("radiomode.pal", 18, COL_MAXFREE); - m_frameBuffer->useBackground(m_frameBuffer->loadBackground(NEUTRINO_ICON_RADIOMODE));// set useBackground true or false - m_frameBuffer->paintBackground(); -#endif + videoDecoder->StopPicture(); + videoDecoder->ShowPicture(DATADIR "/neutrino/icons/mp3.jpg"); paint(); m_idletime = time(NULL); } diff --git a/src/gui/audioplayer.h b/src/gui/audioplayer.h index 8f9d4bdfc..74284ed4a 100644 --- a/src/gui/audioplayer.h +++ b/src/gui/audioplayer.h @@ -260,7 +260,7 @@ class CAudioPlayerGui : public CMenuTarget void stop(); bool playNext(bool allow_rotate = false); bool playPrev(bool allow_rotate = false); - int getAdioPayerM_currend() {return m_current;} + int getAudioPlayerM_current() {return m_current;} }; diff --git a/src/gui/channellist.cpp b/src/gui/channellist.cpp index 00eae9237..cf10dc85f 100644 --- a/src/gui/channellist.cpp +++ b/src/gui/channellist.cpp @@ -73,6 +73,8 @@ #include +#include + extern CBouquetList * bouquetList; /* neutrino.cpp */ extern CRemoteControl * g_RemoteControl; /* neutrino.cpp */ extern CPictureViewer * g_PicViewer; @@ -90,7 +92,11 @@ extern bool autoshift; extern CBouquetManager *g_bouquetManager; extern int old_b_id; -CChannelList::CChannelList(const char * const pName, bool phistoryMode, bool _vlist, bool ) +extern cVideo * videoDecoder; + +#define ConnectLineBox_Width 16 + +CChannelList::CChannelList(const char * const pName, bool phistoryMode, bool _vlist) { frameBuffer = CFrameBuffer::getInstance(); name = pName; @@ -101,9 +107,11 @@ CChannelList::CChannelList(const char * const pName, bool phistoryMode, bool _vl zapProtection = NULL; this->historyMode = phistoryMode; vlist = _vlist; + new_zap_mode = 0; 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; + eventFont = SNeutrinoSettings::FONT_TYPE_CHANNELLIST_EVENT; //printf("************ NEW LIST %s : %x\n", name.c_str(), (int) this);fflush(stdout); } @@ -298,6 +306,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; @@ -335,9 +344,10 @@ int CChannelList::doChannelMenu(void) menu->addItem(new CMenuForwarder(LOCALE_FAVORITES_MENUEADD, unlocked, 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; @@ -433,6 +443,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 ? @@ -450,6 +461,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]) { @@ -466,9 +478,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); - height = h_max ((frameBuffer->getScreenHeight() / 20 * 16), (frameBuffer->getScreenHeight() / 20 * 2)); + + 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()); @@ -486,7 +508,7 @@ void CChannelList::calcSize() frameBuffer->getIconSize(NEUTRINO_ICON_BUTTON_MENU, &icol_w, &icol_h); theight = std::max(theight, icol_h); - if(g_settings.channellist_new_zap_mode) + if(new_zap_mode) { frameBuffer->getIconSize(NEUTRINO_ICON_BUTTON_MUTE_ZAP_ACTIVE, &icol_w, &icol_h); theight = std::max(theight, icol_h); @@ -499,9 +521,15 @@ void CChannelList::calcSize() listmaxshow = (height - theight - footerHeight -0)/fheight; height = theight + footerHeight + listmaxshow * fheight; info_height = 2*fheight + g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST_DESCR]->getHeight() + 10; + y += (frameBuffer->getScreenHeight() - height - info_height) / 2; - x = frameBuffer->getScreenX() + (frameBuffer->getScreenWidth() - width) / 2; - y = frameBuffer->getScreenY() + (frameBuffer->getScreenHeight() - (height+ info_height)) / 2; + infozone_width = full_width - width; + pig_width = infozone_width; + if (g_settings.channellist_additional == 2) // with miniTV + pig_height = (pig_width * 9) / 16; + else + pig_height = 0; + infozone_height = height - theight - pig_height - footerHeight; } bool CChannelList::updateSelection(int newpos) @@ -521,7 +549,7 @@ bool CChannelList::updateSelection(int newpos) showChannelLogo(); } - if(this->new_mode_active && SameTP()) { + if((new_zap_mode == 2 /* active */) && SameTP()) { actzap = true; zapTo(selected); } @@ -545,7 +573,7 @@ int CChannelList::show() return res; } - this->new_mode_active = 0; + new_zap_mode = g_settings.channellist_new_zap_mode; calcSize(); displayNext = false; @@ -677,6 +705,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) { @@ -689,6 +718,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()) { @@ -751,9 +781,19 @@ int CChannelList::show() loop=false; } } - else if (( msg == CRCInput::RC_spkr ) && g_settings.channellist_new_zap_mode ) { + else if (( msg == CRCInput::RC_spkr ) && new_zap_mode ) { if(CNeutrinoApp::getInstance()->getMode() != NeutrinoMessages::mode_ts) { - this->new_mode_active = (this->new_mode_active ? 0 : 1); + switch (new_zap_mode) { + case 2: /* active */ + new_zap_mode = 1; /* allow */ + break; + case 1: /* allow */ + new_zap_mode = 2; /* active */ + break; + default: + break; + + } paintHead(); showChannelLogo(); } @@ -819,9 +859,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 ) { @@ -862,6 +909,10 @@ int CChannelList::show() } frameBuffer->blit(); } + if (g_settings.channellist_new_zap_mode != new_zap_mode) + g_settings.channellist_new_zap_mode = new_zap_mode; + new_zap_mode = 0; + hide(); fader.Stop(); @@ -870,7 +921,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; @@ -886,7 +936,11 @@ int CChannelList::show() void CChannelList::hide() { - frameBuffer->paintBackgroundBoxRel(x, y, width, height+ info_height+ 5); + if ((g_settings.channellist_additional == 2) || (previous_channellist_additional == 2)) // with miniTV + { + videoDecoder->Pig(-1, -1, -1, -1); + } + frameBuffer->paintBackgroundBoxRel(x, y, full_width, height+ info_height+ 5); clearItem2DetailsLine(); frameBuffer->blit(); } @@ -1118,7 +1172,7 @@ void CChannelList::zapTo(int pos, bool /* forceStoreToLastChannels */) zapToChannel(chan); tuned = pos; - if(this->new_mode_active) + if(new_zap_mode == 2 /* active */) selected_in_new_mode = pos; else selected = pos; @@ -1154,7 +1208,7 @@ void CChannelList::zapToChannel(CZapitChannel *channel) g_RemoteControl->zapTo_ChannelID(selected_chid, channel->getName(), (channel->bAlwaysLocked == g_settings.parentallock_defaultlocked)); CNeutrinoApp::getInstance()->channelList->adjustToChannelID(channel->getChannelID()); } - if(!this->new_mode_active) { + if(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); @@ -1477,7 +1531,7 @@ void CChannelList::paintDetails(int index) p_event = &chanlist[index]->currentEvent; } - frameBuffer->paintBoxRel(x+2, y + height + 2, width-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 @@ -1501,7 +1555,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) > (width - 30 - seit_len) ) + if (g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST]->getRenderWidth(text1, true) > (full_width - 30 - seit_len) ) { // zu breit, Umbruch versuchen... int pos; @@ -1509,7 +1563,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) > (width - 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()) @@ -1519,7 +1573,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, width - 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())) { @@ -1528,7 +1582,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) > (width - 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 ) { @@ -1536,12 +1590,12 @@ void CChannelList::paintDetails(int index) } } #endif - g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST_DESCR]->RenderString(x+ xstart, y+ height+ 5+ 2* fheight, width- 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, 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+ 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+ 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 + 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; @@ -1553,7 +1607,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, width - 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}; @@ -1566,10 +1620,12 @@ 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, 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+ 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 + 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_additional) && (p_event != NULL)) + paint_events(index); } void CChannelList::clearItem2DetailsLine() @@ -1579,15 +1635,12 @@ void CChannelList::clearItem2DetailsLine() void CChannelList::paintItem2DetailsLine (int pos, int /*ch_index*/) { -#define ConnectLineBox_Width 16 - int xpos = x - ConnectLineBox_Width; int ypos1 = y + theight+0 + pos*fheight; int ypos2 = y + height; int ypos1a = ypos1 + (fheight/2)-2; int ypos2a = ypos2 + (info_height/2)-2; fb_pixel_t col1 = COL_MENUCONTENT_PLUS_6; - // Clear frameBuffer->paintBackgroundBoxRel(xpos,y, ConnectLineBox_Width, height+info_height + 1); @@ -1600,7 +1653,7 @@ void CChannelList::paintItem2DetailsLine (int pos, int /*ch_index*/) details_line.paint(); //info box frame - frameBuffer->paintBoxFrame(x, ypos2, width, info_height, 2, col1, RADIUS_LARGE); + frameBuffer->paintBoxFrame(x, ypos2, full_width, info_height, 2, col1, RADIUS_LARGE); } } } @@ -1610,14 +1663,14 @@ void CChannelList::showChannelLogo() if(g_settings.infobar_show_channellogo){ static int logo_w = 0; static int logo_h = 0; - int logo_w_max = width / 4; - frameBuffer->paintBoxRel(x + width - 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 + width - 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); } } } @@ -1662,10 +1715,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 @@ -1707,9 +1770,9 @@ void CChannelList::paintButtonBar(bool is_current) //paint buttons int y_foot = y + (height - footerHeight); #if 0 - ::paintButtons(x, y_foot, width,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); #endif - ::paintButtons(x, y_foot, width, num_buttons, Button, width, footerHeight); + ::paintButtons(x, y_foot, full_width, num_buttons, Button, full_width, footerHeight); } void CChannelList::paintItem(int pos) @@ -1947,31 +2010,31 @@ void CChannelList::paintHead() int iw1, iw2, iw3, ih = 0; frameBuffer->getIconSize(NEUTRINO_ICON_BUTTON_INFO, &iw1, &ih); frameBuffer->getIconSize(NEUTRINO_ICON_BUTTON_MENU, &iw2, &ih); - if (g_settings.channellist_new_zap_mode) + if (new_zap_mode) frameBuffer->getIconSize(NEUTRINO_ICON_BUTTON_MUTE_ZAP_ACTIVE, &iw3, &ih); // head - frameBuffer->paintBoxRel(x,y, width,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 + width - iw1 - 4, y, theight); //y+ 5 ); - frameBuffer->paintIcon(NEUTRINO_ICON_BUTTON_MENU, x + width - iw1 - iw2 - 8, y, theight);//y + 5); // icon for bouquet list button - if (g_settings.channellist_new_zap_mode) - frameBuffer->paintIcon(this->new_mode_active ? + 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 (new_zap_mode) + frameBuffer->paintIcon((new_zap_mode == 2 /* active */) ? NEUTRINO_ICON_BUTTON_MUTE_ZAP_ACTIVE : NEUTRINO_ICON_BUTTON_MUTE_ZAP_INACTIVE, - x + width - iw1 - iw2 - iw3 - 12, 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 + width - iw1 - iw2 - iw3x - 16 -timestr_len, + int iw3x = (new_zap_mode) ? iw3 : -10; + 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; } timestr_len += iw1 + iw2 + 12; - if (g_settings.channellist_new_zap_mode) - timestr_len += iw3 + 4; - logo_off = timestr_len + 4; - g_Font[SNeutrinoSettings::FONT_TYPE_MENU_TITLE]->RenderString(x+10,y+theight+0, width - timestr_len, name, COL_MENUHEAD, 0, true); // UTF-8 + if (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, full_width - timestr_len, name, COL_MENUHEAD, 0, true); // UTF-8 } void CChannelList::paint() @@ -1981,7 +2044,12 @@ void CChannelList::paint() liststart = (selected/listmaxshow)*listmaxshow; updateEvents(this->historyMode ? 0:liststart, this->historyMode ? 0:(liststart + listmaxshow)); - frameBuffer->paintBoxRel(x, y+theight, width, height-footerHeight-theight, COL_MENUCONTENT_PLUS_0, 0, CORNER_BOTTOM); + // paint background for main box + frameBuffer->paintBoxRel(x, y+theight, width, height-footerHeight-theight, COL_MENUCONTENT_PLUS_0); + if (g_settings.channellist_additional) + // paint background for right box + frameBuffer->paintBoxRel(x+width,y+theight,infozone_width,pig_height+infozone_height,COL_MENUCONTENT_PLUS_0); + for(unsigned int count = 0; count < listmaxshow; count++) { paintItem(count); } @@ -1994,6 +2062,19 @@ void CChannelList::paint() frameBuffer->paintBoxRel(x+ width- 13, ypos+ 2+ sbs*(sb-4)/sbc, 11, (sb-4)/sbc, COL_MENUCONTENT_PLUS_3); showChannelLogo(); + + if (g_settings.channellist_additional == 2) // with miniTV + { + // paint box for miniTV again - important! + frameBuffer->paintBoxRel(x+width, y+theight , pig_width, pig_height, COL_MENUCONTENT_PLUS_0); + // 5px offset - same value as in list below + if(CNeutrinoApp::getInstance()->getMode() == NeutrinoMessages::mode_tv) { + paint_pig(x+width+5, y+theight+5, pig_width-10, pig_height-10); + } + else if(CNeutrinoApp::getInstance()->getMode() == NeutrinoMessages::mode_radio) { + g_PicViewer->DisplayImage(DATADIR "/neutrino/icons/radiomode.jpg", x+width+5, y+theight+5, pig_width-10, pig_height-10, frameBuffer->TM_NONE); + } + } } bool CChannelList::isEmpty() const @@ -2059,3 +2140,182 @@ std::string CChannelList::MaxChanNr() ss >> maxchansize; return maxchansize; } + +void CChannelList::paint_pig (int _x, int _y, int w, int h) +{ + frameBuffer->paintBackgroundBoxRel (_x, _y, w, h); + //printf("CChannelList::paint_pig x %d y %d w %d h %d osd_w %d osd_w %d\n", _x, _y, w, h, frameBuffer->getScreenWidth(true), frameBuffer->getScreenHeight(true)); + videoDecoder->Pig(_x, _y, w, h, frameBuffer->getScreenWidth(true), frameBuffer->getScreenHeight(true)); +} + +void CChannelList::paint_events(int index) +{ + ffheight = g_Font[eventFont]->getHeight(); + readEvents(chanlist[index]->channel_id); + frameBuffer->paintBoxRel(x+ width,y+ theight+pig_height, infozone_width, infozone_height,COL_MENUCONTENT_PLUS_0); + + char startTime[10]; + int eventStartTimeWidth = g_Font[eventFont]->getRenderWidth("22:22") + 5; // use a fixed value + int startTimeWidth = 0; + CChannelEventList::iterator e; + time_t azeit; + time(&azeit); + + if ( evtlist.empty() ) + { + CChannelEvent evt; + + evt.description = g_Locale->getText(LOCALE_EPGLIST_NOEVENTS); + evt.eventID = 0; + evtlist.push_back(evt); + } + + int i=1; + for (e=evtlist.begin(); e!=evtlist.end(); ++e ) + { + //Remove events in the past + time_t dif = azeit - e->startTime; + if ( (dif > 0) && (!(e->eventID == 0))) + { + do + { + //printf("%d seconds in the past - deleted %s\n", dif, e->description.c_str()); + e = evtlist.erase( e ); + if (e == evtlist.end()) + break; + dif = azeit - e->startTime; + } + while ( dif > 0 ); + } + if (e == evtlist.end()) + break; + + //Display the remaining events + if ((y+ theight+ pig_height + i*ffheight) < (y+ theight+ pig_height + infozone_height)) + { + 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 = eventStartTimeWidth; + g_Font[eventFont]->RenderString(x+ width+5, y+ theight+ pig_height + i*ffheight, startTimeWidth, startTime, (g_settings.colored_events_channellist == 2 /* next */) ? COL_COLORED_EVENTS_CHANNELLIST : COL_MENUCONTENTINACTIVE, 0, true); + } + g_Font[eventFont]->RenderString(x+ width+5+startTimeWidth, y+ theight+ pig_height + i*ffheight, infozone_width - startTimeWidth - 20, e->description, COL_MENUCONTENTDARK, 0, true); + } + else + { + break; + } + i++; + } + if ( !evtlist.empty() ) + evtlist.clear(); +} + +static bool sortByDateTime (const CChannelEvent& a, const CChannelEvent& b) +{ + return a.startTime < b.startTime; +} + +void CChannelList::readEvents(const t_channel_id channel_id) +{ + CEitManager::getInstance()->getEventsServiceKey(channel_id , evtlist); + + if ( evtlist.empty() ) + { + CChannelEvent evt; + evt.description = g_Locale->getText(LOCALE_EPGLIST_NOEVENTS); + evt.eventID = 0; + evtlist.push_back(evt); + } + else + sort(evtlist.begin(),evtlist.end(),sortByDateTime); + + return; +} + +void CChannelList::showdescription(int index) +{ + ffheight = g_Font[eventFont]->getHeight(); + 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())) + { + frameBuffer->paintBoxRel(x+ width,y+ theight+pig_height, infozone_width, infozone_height,COL_MENUCONTENT_PLUS_0); + processTextToArray(epgData.info2); + for (int i = 1; (i < (int)epgText.size()+1) && ((y+ theight+ pig_height + i*ffheight) < (y+ theight+ pig_height + infozone_height)); i++) + g_Font[eventFont]->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[eventFont]->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 d96e22a3a..61bfed57a 100644 --- a/src/gui/channellist.h +++ b/src/gui/channellist.h @@ -64,26 +64,36 @@ private: unsigned int liststart; unsigned int listmaxshow; unsigned int numwidth; + int new_zap_mode; int fheight; // Fonthoehe Channellist-Inhalt int theight; // Fonthoehe Channellist-Titel int footerHeight; + int eventFont; + int ffheight; std::string name; ZapitChannelList chanlist; CZapProtection* zapProtection; - int width; - 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 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); @@ -98,9 +108,19 @@ private: void showChannelLogo(); void calcSize(); std::string MaxChanNr(); + void paint_pig(int x, int y, int w, int h); + 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/components/Makefile.am b/src/gui/components/Makefile.am index 362e4b4c6..a05598e44 100644 --- a/src/gui/components/Makefile.am +++ b/src/gui/components/Makefile.am @@ -1,4 +1,4 @@ -AM_CPPFLAGS = -fno-rtti -fno-exceptions -D__STDC_FORMAT_MACROS +AM_CPPFLAGS = -fno-rtti -fno-exceptions INCLUDES = \ -I$(top_builddir) \ @@ -6,8 +6,9 @@ INCLUDES = \ -I$(top_srcdir)/src \ -I$(top_srcdir)/src/zapit/include \ -I$(top_srcdir)/lib \ - -I$(top_srcdir)/lib/libnet \ + -I$(top_srcdir)/lib/libeventserver \ -I$(top_srcdir)/lib/libconfigfile \ + -I$(top_srcdir)/lib/xmltree \ @FREETYPE_CFLAGS@ if BOXTYPE_COOL diff --git a/src/gui/components/cc.h b/src/gui/components/cc.h index 07b3adfc1..522146dfc 100644 --- a/src/gui/components/cc.h +++ b/src/gui/components/cc.h @@ -1,9 +1,9 @@ /* - GUI window component classes - Neutrino-GUI + Based up Neutrino-GUI - Tuxbox-Project + Copyright (C) 2001 by Steffen Hehn 'McClean' - Copyright(C) 2012, 2013, Thilo Graf - - This class contains generic components for GUI-related parts. + Classes for generic for GUI-related components. + Copyright (C) 2012, 2013, Thilo Graf 'dbt' License: GPL diff --git a/src/gui/components/components.cpp b/src/gui/components/components.cpp index 596c5c024..63893826f 100644 --- a/src/gui/components/components.cpp +++ b/src/gui/components/components.cpp @@ -1,10 +1,10 @@ /* - GUI window component classes - Neutrino-GUI + Based up Neutrino-GUI - Tuxbox-Project + Copyright (C) 2001 by Steffen Hehn 'McClean' - Copyright(C) 2012, 2013, Thilo Graf - Copyright(C) 2012, Michael Liebmann - - This class contains generic components for GUI-related parts. + Classes for generic for GUI-related components. + Copyright (C) 2012, 2013, Thilo Graf 'dbt' + Copyright (C) 2012, Michael Liebmann 'micha-bbg' License: GPL diff --git a/src/gui/infoviewer.cpp b/src/gui/infoviewer.cpp index 345328e1e..f8e412ba3 100644 --- a/src/gui/infoviewer.cpp +++ b/src/gui/infoviewer.cpp @@ -459,6 +459,22 @@ void CInfoViewer::show_current_next(bool new_chan, int epgpos) // nicht gefunden / noch nicht geladen /* see the comment in display_Info() for a reasoning for this calculation */ int CurrInfoY = (BoxEndY + ChanNameY + time_height) / 2; // lower end of current info box + if(g_settings.infobar_progressbar){ + int pb_h = g_Font[SNeutrinoSettings::FONT_TYPE_INFOBAR_SMALL]->getHeight() - 4; + switch(g_settings.infobar_progressbar) + { + case 1: + case 2: + CurrInfoY += (pb_h/3); + break; + case 3: + CurrInfoY -= (pb_h/3); + break; + default: + break; + } + } + neutrino_locale_t loc; if (! gotTime) loc = LOCALE_INFOVIEWER_WAITTIME; @@ -726,8 +742,11 @@ void CInfoViewer::showTitle (const int ChanNum, const std::string & Channel, con std::string prov_name = pname; prov_name=prov_name.substr(prov_name.find_first_of("]")+1); - int chname_width = g_Font[SNeutrinoSettings::FONT_TYPE_INFOBAR_CHANNAME]->getRenderWidth (ChannelName); - chname_width += (chname_width/(ChannelName.size()-1)/2); + int chname_width = g_Font[SNeutrinoSettings::FONT_TYPE_INFOBAR_CHANNAME]->getRenderWidth (ChannelName, true);// UTF-8 + unsigned int chann_size = ChannelName.size(); + if(ChannelName.empty()) + chann_size = 1; + chname_width += (chname_width/chann_size/2); g_Font[SNeutrinoSettings::FONT_TYPE_INFOBAR_INFO]->RenderString( ChanNameX + 10 + ChanNumWidth + chname_width, ChanNameY + time_height -SHADOW_OFFSET/2, BoxEndX - (ChanNameX + 20) - time_width - LEFT_OFFSET - 5 - ChanNumWidth - chname_width, @@ -1435,30 +1454,67 @@ void CInfoViewer::display_Info(const char *current, const char *next, int height = g_Font[SNeutrinoSettings::FONT_TYPE_INFOBAR_INFO]->getHeight(); int CurrInfoY = (BoxEndY + ChanNameY + time_height) / 2; int NextInfoY = CurrInfoY + height; // lower end of next info box - int xStart; int InfoX = ChanInfoX + 10; - xStart = InfoX; + int xStart = InfoX; if (starttimes) xStart += info_time_width + 10; - //colored_events init - bool colored_event_C = false; - bool colored_event_N = false; - if (g_settings.colored_events_infobar == 1) - colored_event_C = true; - if (g_settings.colored_events_infobar == 2) - colored_event_N = true; + int pb_h = g_Font[SNeutrinoSettings::FONT_TYPE_INFOBAR_SMALL]->getHeight() - 4; + switch(g_settings.infobar_progressbar) + { + case 1: + case 2: + CurrInfoY += (pb_h/3); + NextInfoY += (pb_h/3); + break; + case 3: + CurrInfoY -= (pb_h/3); + NextInfoY += (pb_h/3); + break; + default: + break; + } if (pb_pos > -1) { int pb_w = 112; + int pb_startx = BoxEndX - pb_w - SHADOW_OFFSET; + int pb_starty = ChanNameY - (pb_h + 10); + int pb_shadow = COL_INFOBAR_SHADOW_PLUS_0; + int pb_color = g_settings.progressbar_color ? COL_INFOBAR_SHADOW_PLUS_0 : COL_INFOBAR_PLUS_0; + if(g_settings.infobar_progressbar){ + pb_startx = xStart; + pb_w = BoxEndX - 10 - xStart; + pb_shadow = 0; + } + switch(g_settings.infobar_progressbar) + { + case 1: + + pb_starty = CurrInfoY - ((pb_h * 2) + (pb_h / 6)) ; + pb_h = (pb_h/3); + pb_color = COL_INFOBAR_SHADOW_PLUS_0; + break; + case 2: + pb_starty = CurrInfoY - ((pb_h * 2) + (pb_h / 5)) ; + pb_h = (pb_h/5); + pb_color = COL_INFOBAR_SHADOW_PLUS_0; + break; + case 3: + pb_starty = CurrInfoY + ((pb_h / 3)-(pb_h/5)) ; + pb_h = (pb_h/5); + break; + default: + break; + } + int pb_p = pb_pos * pb_w / 100; - int pb_h = g_Font[SNeutrinoSettings::FONT_TYPE_INFOBAR_SMALL]->getHeight() - 4; if (pb_p > pb_w) pb_p = pb_w; - timescale->paintProgressBar(BoxEndX - pb_w - SHADOW_OFFSET, ChanNameY - (pb_h + 10) , pb_w, pb_h, pb_p, pb_w, - 0, 0, g_settings.progressbar_color ? COL_INFOBAR_SHADOW_PLUS_0 : COL_INFOBAR_PLUS_0, COL_INFOBAR_SHADOW_PLUS_0, "", COL_INFOBAR); + + timescale->paintProgressBar(pb_startx, pb_starty, pb_w, pb_h, pb_p, pb_w, + 0, 0, pb_color, pb_shadow, "", COL_INFOBAR); //printf("paintProgressBar(%d, %d, %d, %d)\n", BoxEndX - pb_w - SHADOW_OFFSET, ChanNameY - (pb_h + 10) , pb_w, pb_h); } @@ -1472,6 +1528,14 @@ void CInfoViewer::display_Info(const char *current, const char *next, int nextTimeX = BoxEndX - nextTimeW - 10; static int oldCurrTimeX = currTimeX; // remember the last pos. of remaining time, in case we change from 20/100min to 21/99min + //colored_events init + bool colored_event_C = false; + bool colored_event_N = false; + if (g_settings.colored_events_infobar == 1) + colored_event_C = true; + if (g_settings.colored_events_infobar == 2) + colored_event_N = true; + if (current != NULL && update_current) { frameBuffer->paintBox(InfoX, CurrInfoY - height, currTimeX, CurrInfoY, COL_INFOBAR_PLUS_0); @@ -1722,7 +1786,7 @@ void CInfoViewer::showInfoFile() /*if (recordModeActive) return;*/ char infotext[80]; - int fd, xStart, xOffset, yStart, width, height, tWidth, tIndent; + int fd, xStart, yStart, width, height, iOffset, oOffset, tWidth, tIndent, pb_w; ssize_t cnt; fd = open("/tmp/infobar.txt", O_RDONLY); //read textcontent from this file @@ -1738,14 +1802,16 @@ void CInfoViewer::showInfoFile() } infotext[cnt-1] = '\0'; - xStart = BoxStartX + ChanWidth + 140; //140px space for the little rec/ts-bar - xOffset = 5; //same value as the used RADIUS_SMALL + iOffset = RADIUS_SMALL; // inner left/right offset + oOffset = 140; // outer left/right offset + pb_w = 112; // same value as int pb_w in display_Info() + xStart = BoxStartX + ChanWidth + oOffset; yStart = BoxStartY; - width = BoxEndX - xStart - 225; //225px space for the progress-bar + width = BoxEndX - xStart - (g_settings.infobar_progressbar ? oOffset : oOffset + pb_w); height = g_Font[SNeutrinoSettings::FONT_TYPE_INFOBAR_INFO]->getHeight() + 2; tWidth = g_Font[SNeutrinoSettings::FONT_TYPE_INFOBAR_INFO]->getRenderWidth(infotext); - if (tWidth < (width - (xOffset * 2)) ) - tIndent = (width - (xOffset * 2) - tWidth) / 2; + if (tWidth < (width - (iOffset * 2)) ) + tIndent = (width - (iOffset * 2) - tWidth) / 2; else tIndent = 0; //shadow @@ -1754,7 +1820,7 @@ void CInfoViewer::showInfoFile() frameBuffer->paintBoxRel(xStart, yStart, width, height, COL_INFOBAR_PLUS_0, RADIUS_SMALL, CORNER_ALL); //content g_Font[SNeutrinoSettings::FONT_TYPE_INFOBAR_INFO]->RenderString( - xStart + xOffset + tIndent, yStart + height, width - xOffset, (std::string)infotext, COL_INFOBAR, height, false); + xStart + iOffset + tIndent, yStart + height, width - iOffset, (std::string)infotext, COL_INFOBAR, height, false); } void CInfoViewer::killTitle() diff --git a/src/gui/miscsettings_menu.cpp b/src/gui/miscsettings_menu.cpp index cde8bfbe1..278323b6e 100644 --- a/src/gui/miscsettings_menu.cpp +++ b/src/gui/miscsettings_menu.cpp @@ -132,6 +132,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 @@ -399,7 +406,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 738b9dcb0..db43a3236 100644 --- a/src/gui/osd_setup.cpp +++ b/src/gui/osd_setup.cpp @@ -82,11 +82,12 @@ COsdSetup::~COsdSetup() } //font settings -const SNeutrinoSettings::FONT_TYPES channellist_font_sizes[4] = +const SNeutrinoSettings::FONT_TYPES channellist_font_sizes[5] = { SNeutrinoSettings::FONT_TYPE_CHANNELLIST, SNeutrinoSettings::FONT_TYPE_CHANNELLIST_DESCR, SNeutrinoSettings::FONT_TYPE_CHANNELLIST_NUMBER, + SNeutrinoSettings::FONT_TYPE_CHANNELLIST_EVENT, SNeutrinoSettings::FONT_TYPE_CHANNEL_NUM_ZAP }; @@ -132,7 +133,7 @@ const SNeutrinoSettings::FONT_TYPES other_font_sizes[5] = font_sizes_groups font_sizes_groups[6] = { {LOCALE_FONTMENU_MENU , 5, other_font_sizes , "fontsize.doth", LOCALE_MENU_HINT_MENU_FONTS }, - {LOCALE_FONTMENU_CHANNELLIST, 4, channellist_font_sizes, "fontsize.dcha", LOCALE_MENU_HINT_CHANNELLIST_FONTS }, + {LOCALE_FONTMENU_CHANNELLIST, 5, channellist_font_sizes, "fontsize.dcha", LOCALE_MENU_HINT_CHANNELLIST_FONTS }, {LOCALE_FONTMENU_EVENTLIST , 4, eventlist_font_sizes , "fontsize.deve", LOCALE_MENU_HINT_EVENTLIST_FONTS }, {LOCALE_FONTMENU_EPG , 4, epg_font_sizes , "fontsize.depg", LOCALE_MENU_HINT_EPG_FONTS }, {LOCALE_FONTMENU_INFOBAR , 4, infobar_font_sizes , "fontsize.dinf", LOCALE_MENU_HINT_INFOBAR_FONTS }, @@ -161,6 +162,7 @@ font_sizes_struct neutrino_font[FONT_TYPE_COUNT] = {LOCALE_FONTSIZE_CHANNELLIST , 20, FONT_STYLE_BOLD , 1}, {LOCALE_FONTSIZE_CHANNELLIST_DESCR , 20, FONT_STYLE_REGULAR, 1}, {LOCALE_FONTSIZE_CHANNELLIST_NUMBER , 14, FONT_STYLE_BOLD , 2}, + {LOCALE_FONTSIZE_CHANNELLIST_EVENT , 17, FONT_STYLE_REGULAR, 2}, {LOCALE_FONTSIZE_CHANNEL_NUM_ZAP , 40, FONT_STYLE_BOLD , 0}, {LOCALE_FONTSIZE_INFOBAR_NUMBER , 50, FONT_STYLE_BOLD , 0}, {LOCALE_FONTSIZE_INFOBAR_CHANNAME , 30, FONT_STYLE_BOLD , 0}, @@ -355,6 +357,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]= { @@ -722,6 +732,14 @@ const CMenuOptionChooser::keyval LOCALE_MISCSETTINGS_INFOBAR_DISP_OPTIONS[LOCAL { 5 , LOCALE_MISCSETTINGS_INFOBAR_DISP_5 }, { 6 , LOCALE_MISCSETTINGS_INFOBAR_DISP_6 } }; +#define LOCALE_MISCSETTINGS_INFOBAR_PROGRESSBAR_COUNT 4 +const CMenuOptionChooser::keyval LOCALE_MISCSETTINGS_INFOBAR_PROGRESSBAR_OPTIONS[LOCALE_MISCSETTINGS_INFOBAR_PROGRESSBAR_COUNT]= +{ + { 0 , LOCALE_MISCSETTINGS_INFOBAR_PROGRESSBAR_0 }, + { 1 , LOCALE_MISCSETTINGS_INFOBAR_PROGRESSBAR_1 }, + { 2 , LOCALE_MISCSETTINGS_INFOBAR_PROGRESSBAR_2 }, + { 3 , LOCALE_MISCSETTINGS_INFOBAR_PROGRESSBAR_3 } +}; //infobar void COsdSetup::showOsdInfobarSetup(CMenuWidget *menu_infobar) @@ -750,6 +768,11 @@ void COsdSetup::showOsdInfobarSetup(CMenuWidget *menu_infobar) mc->setHint("", LOCALE_MENU_HINT_INFOBAR_SAT); menu_infobar->addItem(mc); + // infobar progress + mc = new CMenuOptionChooser(LOCALE_MISCSETTINGS_INFOBAR_PROGRESSBAR, &g_settings.infobar_progressbar, LOCALE_MISCSETTINGS_INFOBAR_PROGRESSBAR_OPTIONS, LOCALE_MISCSETTINGS_INFOBAR_PROGRESSBAR_COUNT, true); + mc->setHint("", LOCALE_MENU_HINT_INFOBAR_PROGRESSBAR); + menu_infobar->addItem(mc); + // flash/hdd progress mc = new CMenuOptionChooser(LOCALE_MISCSETTINGS_INFOBAR_SHOW_SYSFS_HDD, &g_settings.infobar_show_sysfs_hdd, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true); mc->setHint("", LOCALE_MENU_HINT_INFOBAR_FILESYS); @@ -801,6 +824,12 @@ void COsdSetup::showOsdChanlistSetup(CMenuWidget *menu_chanlist) CMenuOptionChooser * mc; menu_chanlist->addIntroItems(LOCALE_MISCSETTINGS_CHANNELLIST); + + // 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 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); @@ -893,9 +922,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 +946,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 +962,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/pictureviewer.cpp b/src/gui/pictureviewer.cpp index 730705e69..fb4c6dd57 100644 --- a/src/gui/pictureviewer.cpp +++ b/src/gui/pictureviewer.cpp @@ -235,7 +235,7 @@ int CPictureViewerGui::show() bool update=true; if (audioplayer) - m_currentTitle = m_audioPlayer->getAdioPayerM_currend(); + m_currentTitle = m_audioPlayer->getAudioPlayerM_current(); while (loop) { @@ -564,17 +564,17 @@ int CPictureViewerGui::show() // control keys for audioplayer else if (audioplayer && msg==CRCInput::RC_pause) { - m_currentTitle = m_audioPlayer->getAdioPayerM_currend(); + m_currentTitle = m_audioPlayer->getAudioPlayerM_current(); m_audioPlayer->pause(); } else if (audioplayer && msg==CRCInput::RC_stop) { - m_currentTitle = m_audioPlayer->getAdioPayerM_currend(); + m_currentTitle = m_audioPlayer->getAudioPlayerM_current(); m_audioPlayer->stop(); } else if (audioplayer && msg==CRCInput::RC_play) { - m_currentTitle = m_audioPlayer->getAdioPayerM_currend(); + m_currentTitle = m_audioPlayer->getAudioPlayerM_current(); if (m_currentTitle > -1) m_audioPlayer->play((unsigned int)m_currentTitle); } 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/gui/upnpbrowser.cpp b/src/gui/upnpbrowser.cpp index ebe682849..225a1d9dd 100644 --- a/src/gui/upnpbrowser.cpp +++ b/src/gui/upnpbrowser.cpp @@ -130,7 +130,7 @@ int CUpnpBrowserGui::exec(CMenuTarget* parent, const std::string & /*actionKey*/ #endif m_LastMode=(CNeutrinoApp::getInstance()->getLastMode()); - m_width=(g_settings.screen_EndX - g_settings.screen_StartX) - ConnectLineBox_Width; + m_width=(g_settings.screen_EndX - g_settings.screen_StartX) - 2*ConnectLineBox_Width; m_height = (g_settings.screen_EndY - g_settings.screen_StartY); m_sheight = g_Font[SNeutrinoSettings::FONT_TYPE_INFOBAR_SMALL]->getHeight(); @@ -143,7 +143,9 @@ int CUpnpBrowserGui::exec(CMenuTarget* parent, const std::string & /*actionKey*/ m_listmaxshow = (m_height - m_info_height - m_title_height - m_theight - 2*m_buttonHeight) / (m_fheight); m_height = m_theight + m_info_height + m_title_height + 2*m_buttonHeight + m_listmaxshow * m_fheight; // recalc height - m_x=getScreenStartX( m_width + ConnectLineBox_Width ) + ConnectLineBox_Width; + m_x=getScreenStartX( m_width ); + if (m_x < ConnectLineBox_Width) + m_x = ConnectLineBox_Width; m_y=getScreenStartY( m_height ); // Stop sectionsd diff --git a/src/neutrino.cpp b/src/neutrino.cpp index 3ecf1133f..c743e92c4 100644 --- a/src/neutrino.cpp +++ b/src/neutrino.cpp @@ -413,6 +413,7 @@ int CNeutrinoApp::loadSetup(const char * fname) g_settings.progressbar_color = configfile.getBool("progressbar_color", true ); g_settings.infobar_show = configfile.getInt32("infobar_show", 1); g_settings.infobar_show_channellogo = configfile.getInt32("infobar_show_channellogo" , 3 ); + g_settings.infobar_progressbar = configfile.getInt32("infobar_progressbar" , 0 ); g_settings.casystem_display = configfile.getInt32("casystem_display", 2 );//mini ca mode default g_settings.scrambled_message = configfile.getBool("scrambled_message", true ); g_settings.volume_pos = configfile.getInt32("volume_pos", 0 ); @@ -635,6 +636,7 @@ 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 @@ -876,6 +878,7 @@ void CNeutrinoApp::saveSetup(const char * fname) configfile.setBool("progressbar_color" , g_settings.progressbar_color ); configfile.setInt32("infobar_show", g_settings.infobar_show); configfile.setInt32("infobar_show_channellogo" , g_settings.infobar_show_channellogo ); + configfile.setInt32("infobar_progressbar" , g_settings.infobar_progressbar ); configfile.setInt32("casystem_display" , g_settings.casystem_display ); configfile.setBool("scrambled_message" , g_settings.scrambled_message ); configfile.setInt32("volume_pos" , g_settings.volume_pos ); @@ -1063,6 +1066,7 @@ 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); diff --git a/src/nhttpd/doc/nhttpd_controlapi.html b/src/nhttpd/doc/nhttpd_controlapi.html index e87fa6c56..2632352cc 100644 --- a/src/nhttpd/doc/nhttpd_controlapi.html +++ b/src/nhttpd/doc/nhttpd_controlapi.html @@ -1829,11 +1829,17 @@ Die Pluginliste wird neu geladen.
42. Screenshot erstellen
Handler: http://dbox/control/screenshot

-Parameter: keine
-Rükgabe: ok
+Parameter: name=<dateiname>&osd=1|0&video=1|0

+Rückgabe: ok

-Screenshot mit TV Bild und OSD wird erstellt und unter /tmp/screenshot.png abgelegt. +Screenshot mit TV Bild und OSD wird erstellt und unter /tmp/<dateiname>.png abgelegt.
+
+Beispiel:
+
+>>>http://dbox/control/screenshot?osd=0&video=1
+ok
  

diff --git a/src/nhttpd/tuxboxapi/coolstream/controlapi.cpp b/src/nhttpd/tuxboxapi/coolstream/controlapi.cpp index a3beb60b7..8df655346 100644 --- a/src/nhttpd/tuxboxapi/coolstream/controlapi.cpp +++ b/src/nhttpd/tuxboxapi/coolstream/controlapi.cpp @@ -1466,10 +1466,23 @@ void CControlAPI::ReloadPluginsCGI(CyhookHandler *hh) #ifdef SCREENSHOT void CControlAPI::ScreenshotCGI(CyhookHandler *hh) { - CScreenShot * sc = new CScreenShot("/tmp/screenshot.png", (CScreenShot::screenshot_format_t)0 /*PNG*/); - sc->EnableOSD(true); + bool enableOSD = true; + bool enableVideo = true; + std::string filename = "screenshot"; + + if(hh->ParamList["osd"] == "0") + enableOSD = false; + if(hh->ParamList["video"] == "0") + enableVideo = false; + if(hh->ParamList["name"] != "") + filename = hh->ParamList["name"]; + + CScreenShot * sc = new CScreenShot("/tmp/" + filename + ".png", (CScreenShot::screenshot_format_t)0 /*PNG*/); + sc->EnableOSD(enableOSD); + sc->EnableVideo(enableVideo); sc->Start(); - hh->SendOk(); + + hh->SendOk(); // FIXME what if sc->Start() failed? } #endif diff --git a/src/nhttpd/web/Makefile.am b/src/nhttpd/web/Makefile.am index 7a1a58268..858dbdf7d 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 \ @@ -83,7 +82,7 @@ install_DATA = channels.js \ Y_Tools_lcshot.yhtm \ Y_Tools_Menue.yhtm \ Y_Tools_Rcsim.yhtm \ - Y_Tools_remote_osd.yhtm \ + Y_Tools_Screenshot.yhtm \ Y_Tools_Timer_Sync.js \ Y_Tools_Timer_Sync.yhtm \ Y_Tools_tvshot.yhtm \ diff --git a/src/nhttpd/web/Y_Boxcontrol_Menue.yhtm b/src/nhttpd/web/Y_Boxcontrol_Menue.yhtm index c75361b24..536cd1dc7 100644 --- a/src/nhttpd/web/Y_Boxcontrol_Menue.yhtm +++ b/src/nhttpd/web/Y_Boxcontrol_Menue.yhtm @@ -72,8 +72,6 @@ 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=}=}=}

{=L:main.boxcontrol=}

@@ -102,21 +100,8 @@ function init(){ ~=}
  • - {=L:bc.menue.tv_screenshot=} -
  • -
  • - {=if-equal:{=var-get:fbshot=}~true~ - {=L:bc.menue.osd_screenshot=} - ~ - {=L:bc.menue.osd_screenshot=} - =} -
  • -
  • - {=if-equal:{=var-get:dboxshot=}~true~ - {=L:bc.menue.remote_osd=} - ~ - {=L:bc.menue.remote_osd=} - =} + OSD-{=L:bc.menue.screenshot=} + TV-{=L:bc.menue.screenshot=}
  • diff --git a/src/nhttpd/web/Y_Main.css b/src/nhttpd/web/Y_Main.css index 7f48c980d..705b64cad 100644 --- a/src/nhttpd/web/Y_Main.css +++ b/src/nhttpd/web/Y_Main.css @@ -12,6 +12,18 @@ button,input,select,form,td { font-family: Verdana, Geneva, Arial, 'Lucida Grande',Tahoma, Helvetica, sans-serif; color:#555555; } +.left { + float: left; +} +.right { + float: right; +} +.clear { + clear: both; + line-height: 0px; + height: 0; + overflow: hidden; +} /* buttons */ a img:hover { position:relative; @@ -37,8 +49,9 @@ button[ytype="zap"]{background-image:url(/images/zap.png);} button[ytype="timeup"]{background-image:url(/images/time_up.png);} 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="snapshot"]{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 +859,20 @@ a.timer { .lt_table td { white-space: pre-wrap; } + +/* screenshots */ +#screenshot_header { + height: 30px; +} +td.shot { + vertical-align: top; +} +img#shot { + width: 100%; + background-color: #ffffff; + border: 1px solid #f5f5f5; + margin: 10px 0; +} +img#shot:hover { + cursor: pointer; +} diff --git a/src/nhttpd/web/Y_Menue.yhtm b/src/nhttpd/web/Y_Menue.yhtm index b2965a68d..0ba6a9ad0 100644 --- a/src/nhttpd/web/Y_Menue.yhtm +++ b/src/nhttpd/web/Y_Menue.yhtm @@ -120,7 +120,7 @@ function vlc() { - + diff --git a/src/nhttpd/web/Y_Settings_nhttpd.yhtm b/src/nhttpd/web/Y_Settings_nhttpd.yhtm index 655e54b5b..5418e22a4 100644 --- a/src/nhttpd/web/Y_Settings_nhttpd.yhtm +++ b/src/nhttpd/web/Y_Settings_nhttpd.yhtm @@ -99,7 +99,7 @@ function do_submit() {=if-not-equal:{=global-var-get:boxtype=}~coolstream~ {=L:set.nhttpd.ips_without_keep_alive=}
    {=L:set.nhttpd.ips_without_keep_alive_desc=} - + =} diff --git a/src/nhttpd/web/Y_Tools_Rcsim.yhtm b/src/nhttpd/web/Y_Tools_Rcsim.yhtm index ff2157ed7..cad052b82 100644 --- a/src/nhttpd/web/Y_Tools_Rcsim.yhtm +++ b/src/nhttpd/web/Y_Tools_Rcsim.yhtm @@ -18,6 +18,12 @@ function rcsim(_key) -{=include-block:Y_Blocks.txt;remote=} +
    +
    + {=var-set:help_url==}{=var-set:menu={=L:bc.menue.remote=}=}{=include-block:Y_Blocks.txt;work_menu=}
    +
    + {=include-block:Y_Blocks.txt;remote=} +
    +
    diff --git a/src/nhttpd/web/Y_Tools_Screenshot.yhtm b/src/nhttpd/web/Y_Tools_Screenshot.yhtm new file mode 100644 index 000000000..2d6c836cc --- /dev/null +++ b/src/nhttpd/web/Y_Tools_Screenshot.yhtm @@ -0,0 +1,118 @@ +{=var-set:fbshot={=if-file-exists:/bin/fbshot~true~{=if-file-exists:/var/bin/fbshot~true~false=}=}=} + +{=include-block:Y_Blocks.txt;head=} + + + + + +
    +
    + {=var-set:help_url==}{=var-set:menu={=L:bc.menue.screenshot=}=}{=include-block:Y_Blocks.txt;work_menu=}
    +
    +
    +
    +
    +   +   +   +
    +
    +
    + {=L:filename=}: + OSD: + TV: +
    +
    +
    +
    + +
    + + + + + + +
    + {=include-block:Y_Blocks.txt;remote=} + + +
    +
    +
    + + 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 deleted file mode 100644 index f45c62466..000000000 --- a/src/nhttpd/web/Y_Tools_remote_osd.yhtm +++ /dev/null @@ -1,47 +0,0 @@ -{=include-block:Y_Blocks.txt;head=} - - - - - -
    -
    - {=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=}
    -
    -
    - - 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..c8ca664e0 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 @@ -84,14 +85,8 @@ bc.menue.remote=Fernbedienung bc.menue.lcd_screenshot_desc=LCD Screenshot erstellen bc.menue.lcd_screenshot=LCD Screenshot bc.menue.lcd_screenshot_desc_ni=lcshot nicht installiert in /bin oder /var/bin -bc.menue.osd_screenshot_desc=OSD Screenshot erstellen -bc.menue.osd_screenshot=OSD Screenshot -bc.menue.osd_screenshot_desc_ni=fbshot nicht installiert in /bin oder /var/bin -bc.menue.tv_screenshot_desc=TV Screenshot erstellen -bc.menue.tv_screenshot=TV Screenshot -bc.menue.remote_osd_desc=Fernbedienung und On Screen Display -bc.menue.remote_osd=Fernbed. & OSD -bc.menue.remote_osd_desc_ni=dboxshot nicht installiert in /bin oder /var/bin +bc.menue.screenshot=Screenshot +bc.menue.screenshot_desc=Screenshot des OSDs und/oder des TV-Bildes erstellen bc.menue.decrease_volume=Lautstärke verringern bc.menue.increase_volume=Lautstärke erhöhen @@ -125,15 +120,12 @@ bc.msg.message_to_screen=Meldung auf Bildschirm bc.msg.popup_to_screen=Popup auf Bildschirm bc.msg.send_message=Nachricht senden -======== Boxcontrol - Remote & OSD -bc.osd.shot=Schnappschuss -bc.osd.delete_shots=Schnappschuss löschen -bc.osd.shap_wait_text=Schnappschuss wird erstellt - -======== Boxcontrol - TV-Screenshot -bc.tv.shot=Schnappschuss -bc.tv.delete_shot=Schnappschuss löschen -bc.tv.shap_wait_text=Schnappschuss wird erstellt +======== Boxcontrol - Screenshot +bc.screenshot.create=Schnappschuss +bc.screenshot.delete=Schnappschuss löschen +bc.screenshot.zoom=Schnappschuss zoomen +bc.screenshot.wait_text=Schnappschuss wird erstellt +bc.screenshot.checkenable=OSD und/oder TV muss aktiviert sein! ========= Boxcontrol - Others bc.channels=Sender diff --git a/src/nhttpd/web/languages/English b/src/nhttpd/web/languages/English index b4a2e43e9..d49bac530 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 @@ -86,14 +87,8 @@ bc.menue.remote=Remote bc.menue.lcd_screenshot_desc=make lcd screenshot bc.menue.lcd_screenshot=LCD Screenshot bc.menue.lcd_screenshot_desc_ni=lcshot not installed at /bin or /var/bin -bc.menue.osd_screenshot_desc=make osd screenshot -bc.menue.osd_screenshot=OSD Screenshot -bc.menue.osd_screenshot_desc_ni=fbshot not installed at /bin or /var/bin -bc.menue.tv_screenshot_desc=make tv screenshot -bc.menue.tv_screenshot=TV Screenshot -bc.menue.remote_osd_desc=remote and osd -bc.menue.remote_osd=Remote & OSD -bc.menue.remote_osd_desc_ni=dboxshot not installed at /bin or /var/bin +bc.menue.screenshot=Screenshot +bc.menue.screenshot_desc=make screenshots from OSD and/or TV bc.menue.decrease_volume=decrease volumen bc.menue.increase_volume=increase volumen @@ -127,15 +122,12 @@ bc.msg.message_to_screen=Message on screen bc.msg.popup_to_screen=Message as popup bc.msg.send_message=send message -======== Boxcontrol - Remote & OSD -bc.osd.shot=Shot -bc.osd.delete_shots=Delete shots -bc.osd.shap_wait_text=Take Snapshot - -======== Boxcontrol - TV-Screenshot -bc.tv.shot=Shot -bc.tv.delete_shot=Delete shot -bc.tv.shap_wait_text=Take Snapshot +======== Boxcontrol - Screenshot +bc.screenshot.create=Screenshot +bc.screenshot.delete=Delete screenshot +bc.screenshot.zoom=Zoom screenshot +bc.screenshot.wait_text=Create screenshot +bc.screenshot.checkenable=OSD and/or TV must be enabled! ========= Boxcontrol - Others bc.channels=Channels diff --git a/src/nhttpd/web/scripts/Y_Tools.sh b/src/nhttpd/web/scripts/Y_Tools.sh index 5d5eb37e9..8f13589c2 100755 --- a/src/nhttpd/web/scripts/Y_Tools.sh +++ b/src/nhttpd/web/scripts/Y_Tools.sh @@ -480,7 +480,13 @@ do_fbshot_clear() rm /tmp/*.bmp rm /tmp/*.png } - +# ----------------------------------------------------------- +# delete screenshots +# ----------------------------------------------------------- +do_screenshot_clear() +{ + rm -f /tmp/*.png +} # ----------------------------------------------------------- # Settings Backup/Restore # ----------------------------------------------------------- @@ -547,7 +553,7 @@ case "$1" in lcshot) shift 1; do_lcshot $* ;; fbshot) shift 1; do_fbshot $* ;; fbshot_clear) do_fbshot_clear ;; - tvshot_clear) rm -f /tmp/screenshot.png ;; + screenshot_clear) do_screenshot_clear ;; get_update_version) wget -O /tmp/version.txt "http://git.coolstreamtech.de/?p=cst-public-gui-neutrino.git;a=blob_plain;f=src/nhttpd/web/Y_Version.txt" ;; settings_backup_restore) shift 1; do_settings_backup_restore $* ;; exec_cmd) shift 1; $* ;; diff --git a/src/system/locals.h b/src/system/locals.h index d0794dbd5..49d44162d 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, @@ -248,6 +252,9 @@ typedef enum LOCALE_CHANNELLIST_MAKE_NEWLIST, LOCALE_CHANNELLIST_MAKE_REMOVEDLIST, 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, @@ -543,6 +550,7 @@ typedef enum LOCALE_FONTSIZE_CHANNEL_NUM_ZAP, LOCALE_FONTSIZE_CHANNELLIST, LOCALE_FONTSIZE_CHANNELLIST_DESCR, + LOCALE_FONTSIZE_CHANNELLIST_EVENT, LOCALE_FONTSIZE_CHANNELLIST_NUMBER, LOCALE_FONTSIZE_EPG_DATE, LOCALE_FONTSIZE_EPG_INFO1, @@ -760,6 +768,7 @@ 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, @@ -821,6 +830,7 @@ typedef enum LOCALE_MENU_HINT_INFOBAR_LOGO, LOCALE_MENU_HINT_INFOBAR_LOGO_DIR, LOCALE_MENU_HINT_INFOBAR_ON_EPG, + LOCALE_MENU_HINT_INFOBAR_PROGRESSBAR, LOCALE_MENU_HINT_INFOBAR_RADIOTEXT, LOCALE_MENU_HINT_INFOBAR_RES, LOCALE_MENU_HINT_INFOBAR_SAT, @@ -1150,6 +1160,11 @@ typedef enum LOCALE_MISCSETTINGS_INFOBAR_DISP_6, LOCALE_MISCSETTINGS_INFOBAR_DISP_LOG, LOCALE_MISCSETTINGS_INFOBAR_LOGO_HDD_DIR, + LOCALE_MISCSETTINGS_INFOBAR_PROGRESSBAR, + LOCALE_MISCSETTINGS_INFOBAR_PROGRESSBAR_0, + LOCALE_MISCSETTINGS_INFOBAR_PROGRESSBAR_1, + LOCALE_MISCSETTINGS_INFOBAR_PROGRESSBAR_2, + LOCALE_MISCSETTINGS_INFOBAR_PROGRESSBAR_3, LOCALE_MISCSETTINGS_INFOBAR_SAT_DISPLAY, LOCALE_MISCSETTINGS_INFOBAR_SHOW, LOCALE_MISCSETTINGS_INFOBAR_SHOW_DD_AVAILABLE, diff --git a/src/system/locals_intern.h b/src/system/locals_intern.h index e37bf9216..7936b4424 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", @@ -248,6 +252,9 @@ const char * locale_real_names[] = "channellist.make_newlist", "channellist.make_removedlist", "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", @@ -543,6 +550,7 @@ const char * locale_real_names[] = "fontsize.channel_num_zap", "fontsize.channellist", "fontsize.channellist_descr", + "fontsize.channellist_event", "fontsize.channellist_number", "fontsize.epg_date", "fontsize.epg_info1", @@ -760,6 +768,7 @@ 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", @@ -821,6 +830,7 @@ const char * locale_real_names[] = "menu.hint_infobar_logo", "menu.hint_infobar_logo_dir", "menu.hint_infobar_on_epg", + "menu.hint_infobar_progressbar", "menu.hint_infobar_radiotext", "menu.hint_infobar_res", "menu.hint_infobar_sat", @@ -1150,6 +1160,11 @@ const char * locale_real_names[] = "miscsettings.infobar_disp_6", "miscsettings.infobar_disp_log", "miscsettings.infobar_logo_hdd_dir", + "miscsettings.infobar_progressbar", + "miscsettings.infobar_progressbar_0", + "miscsettings.infobar_progressbar_1", + "miscsettings.infobar_progressbar_2", + "miscsettings.infobar_progressbar_3", "miscsettings.infobar_sat_display", "miscsettings.infobar_show", "miscsettings.infobar_show_dd_available", diff --git a/src/system/settings.h b/src/system/settings.h index f89bccf1b..451b62f97 100644 --- a/src/system/settings.h +++ b/src/system/settings.h @@ -73,6 +73,7 @@ struct SNeutrinoSettings int fan_speed; int infobar_show; int infobar_show_channellogo; + int infobar_progressbar; int progressbar_color; int casystem_display; int scrambled_message; @@ -421,6 +422,7 @@ struct SNeutrinoSettings int pip_y; int bigFonts; int big_windows; + int channellist_additional; int channellist_epgtext_align_right; int channellist_extended; int channellist_foot; @@ -468,7 +470,7 @@ struct SNeutrinoSettings // Font sizes -#define FONT_TYPE_COUNT 23 +#define FONT_TYPE_COUNT 24 enum FONT_TYPES { FONT_TYPE_MENU = 0, FONT_TYPE_MENU_TITLE = 1, @@ -486,13 +488,14 @@ struct SNeutrinoSettings FONT_TYPE_CHANNELLIST = 13, FONT_TYPE_CHANNELLIST_DESCR = 14, FONT_TYPE_CHANNELLIST_NUMBER = 15, - FONT_TYPE_CHANNEL_NUM_ZAP = 16, - FONT_TYPE_INFOBAR_NUMBER = 17, - FONT_TYPE_INFOBAR_CHANNAME = 18, - FONT_TYPE_INFOBAR_INFO = 19, - FONT_TYPE_INFOBAR_SMALL = 20, - FONT_TYPE_FILEBROWSER_ITEM = 21, - FONT_TYPE_MENU_HINT = 22 + FONT_TYPE_CHANNELLIST_EVENT = 16, + FONT_TYPE_CHANNEL_NUM_ZAP = 17, + FONT_TYPE_INFOBAR_NUMBER = 18, + FONT_TYPE_INFOBAR_CHANNAME = 19, + FONT_TYPE_INFOBAR_INFO = 20, + FONT_TYPE_INFOBAR_SMALL = 21, + FONT_TYPE_FILEBROWSER_ITEM = 22, + FONT_TYPE_MENU_HINT = 23 }; // lcdd