From 09beeabc34e16800f700c652c0e61f8f16bdfbe5 Mon Sep 17 00:00:00 2001 From: Thilo Graf Date: Sat, 5 Nov 2016 21:13:58 +0100 Subject: [PATCH 1/4] CComponentsInfoBox: ensure matching object height after assigned image Images are not defined with constructor, so it is possible we must consider the image height after called setPicture() methode. This is important if an infobox sould be added into a cc form object. This avoids overlapping of dynamic added items. Origin commit data ------------------ Branch: ni/coolstream Commit: https://github.com/neutrino-images/ni-neutrino/commit/18695fb0c94884907bfe9d7d0c1e2b7d10dd7673 Author: Thilo Graf Date: 2016-11-05 (Sat, 05 Nov 2016) ------------------ This commit was generated by Migit --- src/gui/components/cc_item_infobox.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/gui/components/cc_item_infobox.cpp b/src/gui/components/cc_item_infobox.cpp index a2a6b6cbb..bc41347b0 100644 --- a/src/gui/components/cc_item_infobox.cpp +++ b/src/gui/components/cc_item_infobox.cpp @@ -83,6 +83,11 @@ CComponentsInfoBox::~CComponentsInfoBox() void CComponentsInfoBox::setPicture(const std::string& picture_name) { pic_name = picture_name; + if (!pic_name.empty()){ + int w, h; + frameBuffer->getIconSize(pic_name.c_str(), &w, &h); + height = max(h, height); + } } void CComponentsInfoBox::setPicture(const char* picture_name) From ccc9e0c65dece5d3fb4136601386f7383a39bee6 Mon Sep 17 00:00:00 2001 From: vanhofen Date: Sat, 5 Nov 2016 22:15:49 +0100 Subject: [PATCH 2/4] locale: update slovak; thx to Pr0metheus Origin commit data ------------------ Branch: ni/coolstream Commit: https://github.com/neutrino-images/ni-neutrino/commit/7cbe38e249ceb9d87f2b96953438e3656b7a214f Author: vanhofen Date: 2016-11-05 (Sat, 05 Nov 2016) Origin message was: ------------------ - locale: update slovak; thx to Pr0metheus ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- data/locale/slovak.locale | 47 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/data/locale/slovak.locale b/data/locale/slovak.locale index 9088325c2..c277576ed 100644 --- a/data/locale/slovak.locale +++ b/data/locale/slovak.locale @@ -255,6 +255,7 @@ channellist.foot_sort_freq Triediť [frekvencia] channellist.foot_sort_sat Triediť [satelit] channellist.head Všetky kanály channellist.history História +channellist.history_clear Vymazať históriu channellist.keep_numbers Zachovať čísla predvolieb channellist.make_hdlist Vytvoriť zoznam pre HD kanály channellist.make_newlist Vytvoriť zoznam pre nové kanály @@ -332,6 +333,7 @@ colormenu.timing Čas zobrazenia OSD colormenusetup.menucontent Obsahové okno colormenusetup.menucontent_inactive Neaktívne v obsahovom okne colormenusetup.menucontent_selected Vybrané v obsahovom okne +colormenusetup.menufoot Päta colormenusetup.menuhead Hlavička colorstatusbar.text Text stavového riadku colorthememenu.head Výber vzhľadu @@ -387,6 +389,7 @@ epgviewer.genre Žáner epgviewer.length Dĺžka (min.) epgviewer.nodetailed Detailné informácie sú nedostupné epgviewer.notfound EPG nenájdené +epgviewer.select_screening Voľba relácie eventfinder.fsk Filter hodnotenia veku eventfinder.genre Filter žánru eventfinder.head Hľadať v EPG @@ -400,6 +403,7 @@ eventfinder.search_within_list Hľadať v zozname eventfinder.searching Hľadám slovo v EPG... eventfinder.start_search Spustiť hľadanie eventlist.additional Podrobnejšie informácie EPG +eventlist.epgplus Zobraziť EPG Plus eventlist.name Zoznam udalostí EPG eventlistbar.channelswitch Prepnúť eventlistbar.eventsort Triediť @@ -699,6 +703,7 @@ fontmenu.eventlist Programový sprievodca fontmenu.head Nastavenie písma fontmenu.infobar Informačná lišta fontmenu.menu Menu +fontmenu.moviebrowser Prehliadač filmov fontmenu.other Iné fontmenu.scaling Faktor zoomu globálneho fontu fontmenu.scaling_x Vodorovne (v %) @@ -727,9 +732,13 @@ fontsize.infobar_info Informácia na informačnej lište fontsize.infobar_ng_ecminfo ECM Informácia fontsize.infobar_number Kanál na informačnej lište fontsize.menu Text menu +fontsize.menu_foot Päta (vo všetkých grafických elementoch) fontsize.menu_hint Popis menu fontsize.menu_info Informačné menu fontsize.menu_title Titulok menu +fontsize.moviebrowser_head Hlavičky +fontsize.moviebrowser_info Informačné okno +fontsize.moviebrowser_list Zoznam položiek fontsize.subtitles Text titulkov fsk.all vyp fsk.from_12 od 12 @@ -1035,6 +1044,7 @@ menu.hint_epg_save_standby Uložiť EPG pred prechodom do pohotovostného režim menu.hint_epg_scan Povolenie prehľadávania EPG na pozadí ak je voľný tuner menu.hint_epg_scan_mode Výber výsledku prijímača pre spustenie prehľadania EPG menu.hint_eventlist_additional Zobrazí podrobnejšie informácie\nv hlavnom okne +menu.hint_eventlist_epgplus Zobraziť EPG Plus (prehľad udalostí) pri stlačení klávesy EPG menu.hint_eventlist_fonts Zmena veľkosti písma zoznamu udalostí menu.hint_eventlist_setup Konfigurácia GUI volieb zoznamu udalostí v EPG menu.hint_extended Správa napájania, voľby ukladania/nahrania EPG \nHDMI-CEC, štartovací kanál, voľby prepínania @@ -1049,6 +1059,8 @@ menu.hint_font_gui Výber súboru písma pre GUI menu.hint_font_scaling Zvislé a vodorovné nastavenie globálnej mierky písma menu.hint_font_ttx Výber písma pre teletext menu.hint_fonts Konfigurácia písma GUI +menu.hint_foot_back Zmena farby pozadia grafického užívateľského rozhrania (GUI) +menu.hint_foot_textcolor Zmena farby textu päty v okne grafického užívateľského rozhrania GUI menu.hint_games Zobrazenie zoznamu inštalovaných hier menu.hint_hdd Formátovanie/kontrola pevného disku menu.hint_hdd_apply Použitie parametrov uspania/stíšenia @@ -1176,8 +1188,10 @@ menu.hint_misc_energy Použitie pohotovostného režimu, oneskorené vypnutie\n menu.hint_misc_epg Voľby uloženia/načítania EPG, voľby ukladania EPG,\nEPG zložka uloženia menu.hint_misc_filebrowser Kódovanie súborového systemu, oprávnenia súboru,\nzákaz odstrániť zložky menu.hint_misc_general Spustenie do pohotovostného režimu, vyrovnávacia pamäť teletextu, hdd zložka doplnkov,\núroveň debugovania +menu.hint_misc_onlineservices Konfigurácia a ovládanie online služieb ako YouTube, SHOUTCast a TMDb menu.hint_misc_zapit Východzie TV/Radio kanály menu.hint_movie Prehrávanie filmov +menu.hint_moviebrowser_fonts Zmena veľkosti písma prehliadača filmov (Moje nahrávky) menu.hint_moviebrowser_setup Nastavenie výberu a volieb zobrazenia menu.hint_movieplayer_plugin Výber doplnku pre overenie s jedným potvrdením klávesy v režime prehrávača menu.hint_net_broadcast Zadanie adresy vysielania, ak netušíte použite IP adresu s koncom .255 @@ -1257,6 +1271,7 @@ menu.hint_progressbar_timescale_yellow Výber množstva žltej vo farebnosti inf menu.hint_protection Ochrana obsahu PIN kódom\nVýchodzí PIN 0000 menu.hint_radiomode Prepne prijímač do režimu Rádio menu.hint_reboot Reštart prijímača - bez potvrdzovania +menu.hint_record_already_found_check Kontrola pred nastavením novej nahrávky časovača na prítomnosť zhody rovnakého titulu menu.hint_record_apid_ac3 Nahrá AC3 zvukové pidy menu.hint_record_apid_alt Nahrá ostatné zvukové pidy menu.hint_record_apid_std Nahrá prvý zvukový pid @@ -1388,6 +1403,8 @@ menu.hint_service Nastavenie tuneru, vyhľadanie služieb,\núprava buketov, akt menu.hint_service_scan Automatické / manuálne vyhľadávanie staníc, FastScan, Test signálu menu.hint_settings Konfigurácia Neutrino-HD, sieť, zvuk, obraz, OSD a iné menu.hint_show_mute_icon Zobrazenie ikony umlčania, ak nastavenie hlasitosťi bude 0 +menu.hint_shoutcast_dev_id Vložte vaše SHOUTcast údaje. Neuvedením údajov sa vypne podpora SHOUTcast. +menu.hint_shoutcast_enabled Povoliť alebo zakázať podporu SHOUTcast menu.hint_shutdown Vypnutie prijímača - bez potvrdzovania menu.hint_shutdown_count Čas prepnutia prijímača z pohotovostného režimu do stavu vypnutia menu.hint_shutdown_menu Prepne prijímač do pohotovostného režimu alebo ho vypne, nastaví časovač vypnutia @@ -1414,6 +1431,8 @@ menu.hint_theme Výber prednastavených farebných vzhľadov\nUloženie alebo na menu.hint_timeouts Konfigurácia času zmiznutia GUI okien\nv sekundách menu.hint_timers Pridanie/Odstránenie/Upravenie plánovaného\nnahrávania, pripomienky atď. menu.hint_timezone Výber časového pásma +menu.hint_tmdb_api_key Vložte váš TMDb API kľúč. Neuvedením údajov sa vypne podpora TMDb +menu.hint_tmdb_enabled Povoliť alebo zakázať podporu TMDb (themoviedb.org) menu.hint_tools Spustenie nástrojov menu.hint_tvmode Prepne prijímač do režimu TV menu.hint_tvradio_switch Prepínanie medzi TV a Rádio režimom @@ -1451,6 +1470,8 @@ menu.hint_volume_pos Výber pozície indikátora hlasitosti menu.hint_volume_size Výber výšky indikátora hlasitosti menu.hint_webtv_setup Tu nakonfigurované WebTV kanály budú k dispozícii v štandartnom zozname kanálov menu.hint_window_size Zoznam kanálov, EPG-Infp a niektoré iné okná sú zmenšené týmto faktorom +menu.hint_youtube_dev_id Vložte vaše YouTube údaje. Neuvedením údajov sa vypne podpora YouTube +menu.hint_youtube_enabled Povoliť alebo zakázať podporu YouTube menu.hint_ytplay Prehrávanie vybraných youtube videí menu.hint_ytplay_setup Konfigurácia špecifických volieb YouTube, napr. horný limit výsledkov vyhľadávania menu.hint_zap_cycle Pri prepínaní kanálov zotrvať v aktuálnom bukete @@ -1529,6 +1550,7 @@ miscsettings.infobar_show_res_simple jednoduché miscsettings.infobar_show_sysfs_hdd Indikátor zaplnenia (sysFS a HDD) miscsettings.infobar_show_tuner Zobraziť aktívny tuner miscsettings.infoclock Informačné hodiny +miscsettings.onlineservices Online služby miscsettings.progressbar Ukazateľ miscsettings.progressbar_color Farba miscsettings.progressbar_design Vzhľad @@ -1612,6 +1634,7 @@ moviebrowser.book_position Pozícia: moviebrowser.book_type Skok (<0 vzad , >0 vpred): moviebrowser.book_type_backward Opakovať moviebrowser.book_type_forward Skok za +moviebrowser.browser_additional Doplnkové informácie moviebrowser.browser_frame_high Výška prehliadača [%] moviebrowser.browser_row_head Nastavenia riadku moviebrowser.browser_row_item Položka stĺpca @@ -1697,6 +1720,7 @@ moviebrowser.info_rating Hodnotenie moviebrowser.info_recorddate Dátum nahrávky moviebrowser.info_serie Seriál moviebrowser.info_size Veľkosť (MB) +moviebrowser.info_spacer Medzera moviebrowser.info_title Titul moviebrowser.info_videoformat Obraz moviebrowser.last_play_max_items Počet posledných prehrávaní v zozname @@ -1745,8 +1769,9 @@ moviebrowser.short_prodyear Rok moviebrowser.short_quality * (kvalita) moviebrowser.short_rating Hlasy moviebrowser.short_recorddate Dátum -moviebrowser.short_serie Serial +moviebrowser.short_serie Seriál moviebrowser.short_size Veľkosť +moviebrowser.short_spacer moviebrowser.short_title Titul moviebrowser.start_head Pozerať film od: moviebrowser.start_record_start Začiatok filmu @@ -2027,6 +2052,8 @@ rclock.locked Uzamknuté rclock.lockmsg Diaľkový ovládač uzamknutý.\n\nPre odblokovanie stlačte [ČERVENÉ] \na [MENU] na Vašom ovládači. rclock.title Uzamknutie diaľkového ovládača rclock.unlockmsg Diaľkové ovládanie funkčné... +recording.already_found %s\nuž bola nájdená. Napriek tomu spustiť nahrávanie? +recording.already_found_check Kontrola nahrávky recording.is_running Tento kanál sa nahráva. Spustiť nové nahrávanie? recording.start Spúšťanie nahrávania, čakajte prosím...! recording.startstop_msg Upozorniť o začatí / ukončení nahrávania @@ -2034,6 +2061,7 @@ recording.stop Zastavenie nahrávania, čakajte prosím...! recording.time_hour Hodina recording.time_hours Hodín recording.time_min Min +recordingmenu.already_found_check Kontrola na prítomnosť rovnakého titulu recordingmenu.apids Predvolené zvukové stopy recordingmenu.apids_ac3 Nahrať zvuk AC3 recordingmenu.apids_alt Nahrať ostatné zvukové stopy @@ -2069,6 +2097,16 @@ recordingmenu.vcr Videorekordér recordingmenu.vtxt_pid Nahrať teletext recordingmenu.zap_on_announce Prepnúť na kanál pred začatím nahrávania recordtimer.announce Začatie nahrávania za pár minút. +remotebox_add Pridať +remotebox_channel_na Kanál na vzdialenom zariadení nedostupný +remotebox_del Vymazať +remotebox_head Vzdialené zariadnia +remotebox_mod Upraviť +remotebox_pass Heslo +remotebox_port Port +remotebox_rbaddr Adresa +remotebox_rbname Názov +remotebox_user Užívateľ reset_all Továrenské nastavenia reset_channels Zmazanie všetkych kanálov reset_confirm Skutočne? @@ -2238,6 +2276,8 @@ settings.pos_top_left vľavo hore settings.pos_top_right vpravo hore settings.restore Záloha: Obnovenie nastavení settings.restore_warn Všetky nastavenia budú nahradené a vykoná sa reštart.\nPokračovať? +shoutcast.dev_id SHOUTcast ID +shoutcast.enabled SHOUTcast podpora shutdown.recording_query Skutočne prerušiť nahrávanie? shutdowntimer.announce Vypnutie boxu za minútu.\nZrušiť vypnutie? sleeptimerbox.announce Do vypnutia zostáva minúta. @@ -2331,6 +2371,7 @@ timerlist.type.execplugin Spustenie doplnku timerlist.type.nextprogram Nasledujúci program timerlist.type.record Nahrávanie timerlist.type.remind Pripomenutie +timerlist.type.remotebox Vzdialená nahrávka timerlist.type.shutdown Vypnutie timerlist.type.sleeptimer Časové vypnutie timerlist.type.standby Akcia @@ -2357,6 +2398,8 @@ timing.infobar_radio Stavový riadok (rádio mód) timing.menu Ponuka timing.numericzap Prepínanie číslami timing.volumebar Ukazateľ hlasitosti +tmdb.api_key TMDb API kľúč +tmdb.enabled TMDb podpora tmdb.read_data Vyhľadávanie údajov TMDB... unicable.lnb Vstup Unicable unicable.qrg Frekvencia Unicable @@ -2464,6 +2507,8 @@ wizard.welcome_head Vitajte v sprievodcovi nastavení wizard.welcome_text Nasledujúce kroky vás prevedú počiatočnou inštaláciou nastavenia prístroja.\nInformácia: Váš prijímač môžete pohodlne ovládať\ncez webové rozhranie pre správu časovača alebo živé vysielanie cez internetový prehliadač.\nPrístupové heslo nie je zatiaľ nastavené!\nNastavte ho za pomoci použitia príkazu "passwd" cez telnet rozhranie.\nChcete pokračovať? word.from z word.in v +youtube.dev_id YouTube ID +youtube.enabled YouTube podpora zapit.scantype Vyhľadávanie kanálov zapit.scantype.all Všetky zapit.scantype.radio Len Rádio From 13f171b6a5123bae05cca8df0625eac7fc367d73 Mon Sep 17 00:00:00 2001 From: vanhofen Date: Sun, 6 Nov 2016 20:54:26 +0100 Subject: [PATCH 3/4] epgview: use movie-info's channelname in movieplayer mode to get channellogo Origin commit data ------------------ Branch: ni/coolstream Commit: https://github.com/neutrino-images/ni-neutrino/commit/3b2569498376656c0e0321054d8774432db916f6 Author: vanhofen Date: 2016-11-06 (Sun, 06 Nov 2016) Origin message was: ------------------ - epgview: use movie-info's channelname in movieplayer mode to get channellogo ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- src/gui/epgview.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/gui/epgview.cpp b/src/gui/epgview.cpp index 521d9b3d7..33af8c90b 100644 --- a/src/gui/epgview.cpp +++ b/src/gui/epgview.cpp @@ -713,10 +713,15 @@ int CEpgData::show(const t_channel_id channel_id, uint64_t a_id, time_t* a_start int logo_w = 0; int logo_h = 0; int logo_w_max = ox / 4; - if(g_settings.infobar_show_channellogo && g_PicViewer->GetLogoName(channel_id, g_Zapit->getChannelName(channel_id), lname, &logo_w, &logo_h)) { - if((logo_h > (toph-4)) || (logo_w > logo_w_max)) { + std::string channel_name; + if (mp_info) + channel_name = mp_movie_info->channelName; + else + channel_name = g_Zapit->getChannelName(channel_id); + if (g_settings.infobar_show_channellogo && g_PicViewer->GetLogoName(channel_id, channel_name, lname, &logo_w, &logo_h)) + { + if ((logo_h > (toph-4)) || (logo_w > logo_w_max)) g_PicViewer->rescaleImageDimensions(&logo_w, &logo_h, logo_w_max, toph-4); - } pic_offx = logo_w + 10; } From 64bf5d349486a1480612d2b216005c6413af59ae Mon Sep 17 00:00:00 2001 From: vanhofen Date: Mon, 7 Nov 2016 10:13:04 +0100 Subject: [PATCH 4/4] timerlist: just small code cosmetics Origin commit data ------------------ Branch: ni/coolstream Commit: https://github.com/neutrino-images/ni-neutrino/commit/8ac3b64e755f19a8f6955cb3fd78944b4bb75486 Author: vanhofen Date: 2016-11-07 (Mon, 07 Nov 2016) Origin message was: ------------------ - timerlist: just small code cosmetics ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- src/gui/timerlist.cpp | 471 +++++++++++++++++++++++------------------- 1 file changed, 262 insertions(+), 209 deletions(-) diff --git a/src/gui/timerlist.cpp b/src/gui/timerlist.cpp index 60b6ce892..ce8a84bf9 100644 --- a/src/gui/timerlist.cpp +++ b/src/gui/timerlist.cpp @@ -181,11 +181,13 @@ public: bool changeNotify(const neutrino_locale_t /*OptionName*/, void *) { - if (*iRepeat >= (int)CTimerd::TIMERREPEAT_WEEKDAYS) { + if (*iRepeat >= (int)CTimerd::TIMERREPEAT_WEEKDAYS) + { m1->setActive (true); *weekdays = "XXXXX--"; } - else { + else + { m1->setActive (false); *weekdays = "-------"; } @@ -294,18 +296,19 @@ int CTimerList::exec(CMenuTarget* parent, const std::string & actionKey) { const char * key = actionKey.c_str(); - if(actionKey == "add_ip") { + if (actionKey == "add_ip") + { std::string rbname,rbaddress,user,pass = ""; std::string port = "80"; - CKeyboardInput remotebox_name(LOCALE_REMOTEBOX_RBNAME , &rbname, 25); + CKeyboardInput remotebox_name(LOCALE_REMOTEBOX_RBNAME, &rbname, 25); remotebox_name.forceSaveScreen(true); - CKeyboardInput remotebox_address(LOCALE_REMOTEBOX_RBADDR , &rbaddress, 50); + CKeyboardInput remotebox_address(LOCALE_REMOTEBOX_RBADDR, &rbaddress, 50); remotebox_address.forceSaveScreen(true); - CStringInput remotebox_port(LOCALE_REMOTEBOX_PORT , &port, 5); + CStringInput remotebox_port(LOCALE_REMOTEBOX_PORT, &port, 5); remotebox_port.forceSaveScreen(true); - CKeyboardInput remotebox_user(LOCALE_REMOTEBOX_USER , &user, 15); + CKeyboardInput remotebox_user(LOCALE_REMOTEBOX_USER, &user, 15); remotebox_user.forceSaveScreen(true); - CKeyboardInput remotebox_pass(LOCALE_REMOTEBOX_PASS , &pass, 15); + CKeyboardInput remotebox_pass(LOCALE_REMOTEBOX_PASS, &pass, 15); remotebox_pass.forceSaveScreen(true); CMenuWidget * rbsetup = new CMenuWidget(LOCALE_REMOTEBOX_HEAD, NEUTRINO_ICON_TIMER); rbsetup->addItem(new CMenuForwarder(LOCALE_REMOTEBOX_RBNAME, true, rbname, &remotebox_name)); @@ -314,30 +317,34 @@ int CTimerList::exec(CMenuTarget* parent, const std::string & actionKey) rbsetup->addItem(new CMenuForwarder(LOCALE_REMOTEBOX_USER, true, user, &remotebox_user)); rbsetup->addItem(new CMenuForwarder(LOCALE_REMOTEBOX_PASS, true, pass, &remotebox_pass)); rbsetup->enableSaveScreen(true); - if ((rbsetup->exec(NULL,"") == true) && (!rbaddress.empty())) { + if ((rbsetup->exec(NULL,"") == true) && (!rbaddress.empty())) + { remboxmenu->addItem(new CMenuForwarder(rbname, true, NULL, this, "cha_ip")); rbsetup->hide(); remboxmenu->enableSaveScreen(false); remboxmenu->hide(); timer_remotebox_item timer_rb; timer_rb.rbaddress = rbaddress; - if (!timer_rb.rbaddress.empty()) { - timer_rb.port = atoi(port); - timer_rb.user = user; - timer_rb.pass = pass; - timer_rb.rbname = rbname; - if (timer_rb.rbname.empty()) - timer_rb.rbname = timer_rb.rbaddress; - g_settings.timer_remotebox_ip.push_back(timer_rb); + if (!timer_rb.rbaddress.empty()) + { + timer_rb.port = atoi(port); + timer_rb.user = user; + timer_rb.pass = pass; + timer_rb.rbname = rbname; + if (timer_rb.rbname.empty()) + timer_rb.rbname = timer_rb.rbaddress; + g_settings.timer_remotebox_ip.push_back(timer_rb); } changed = true; } return menu_return::RETURN_REPAINT; } - if(actionKey == "del_ip") { + if (actionKey == "del_ip") + { bselected = remboxmenu->getSelected(); - if (bselected >= item_offset) { + if (bselected >= item_offset) + { remboxmenu->removeItem(bselected); remboxmenu->enableSaveScreen(false); remboxmenu->hide(); @@ -347,22 +354,23 @@ int CTimerList::exec(CMenuTarget* parent, const std::string & actionKey) return menu_return::RETURN_REPAINT; } - if(actionKey == "cha_ip") { + if (actionKey == "cha_ip") + { bselected = remboxmenu->getSelected(); CMenuItem* item = remboxmenu->getItem(bselected); CMenuForwarder *f = static_cast(item); std::vector::iterator it = g_settings.timer_remotebox_ip.begin(); std::advance(it,bselected-item_offset); std::string port = to_string(it->port); - CKeyboardInput remotebox_name(LOCALE_REMOTEBOX_RBNAME , &it->rbname, 25); + CKeyboardInput remotebox_name(LOCALE_REMOTEBOX_RBNAME, &it->rbname, 25); remotebox_name.forceSaveScreen(true); - CKeyboardInput remotebox_address(LOCALE_REMOTEBOX_RBADDR , &it->rbaddress, 50); + CKeyboardInput remotebox_address(LOCALE_REMOTEBOX_RBADDR, &it->rbaddress, 50); remotebox_address.forceSaveScreen(true); - CStringInput remotebox_port(LOCALE_REMOTEBOX_PORT , &port, 5); + CStringInput remotebox_port(LOCALE_REMOTEBOX_PORT, &port, 5); remotebox_port.forceSaveScreen(true); - CKeyboardInput remotebox_user(LOCALE_REMOTEBOX_USER , &it->user, 15); + CKeyboardInput remotebox_user(LOCALE_REMOTEBOX_USER, &it->user, 15); remotebox_user.forceSaveScreen(true); - CKeyboardInput remotebox_pass(LOCALE_REMOTEBOX_PASS , &it->pass, 15); + CKeyboardInput remotebox_pass(LOCALE_REMOTEBOX_PASS, &it->pass, 15); remotebox_pass.forceSaveScreen(true); CMenuWidget * rbsetup = new CMenuWidget(LOCALE_REMOTEBOX_HEAD, NEUTRINO_ICON_TIMER); rbsetup->addItem(new CMenuForwarder(LOCALE_REMOTEBOX_RBNAME, true, it->rbname, &remotebox_name)); @@ -371,7 +379,8 @@ int CTimerList::exec(CMenuTarget* parent, const std::string & actionKey) rbsetup->addItem(new CMenuForwarder(LOCALE_REMOTEBOX_USER, true, it->user, &remotebox_user)); rbsetup->addItem(new CMenuForwarder(LOCALE_REMOTEBOX_PASS, true, it->pass, &remotebox_pass)); rbsetup->enableSaveScreen(true); - if ((rbsetup->exec(NULL,"") == true) && (!it->rbaddress.empty())) { + if ((rbsetup->exec(NULL,"") == true) && (!it->rbaddress.empty())) + { it->port = atoi(port); f->setName(it->rbname); rbsetup->hide(); @@ -393,18 +402,18 @@ int CTimerList::exec(CMenuTarget* parent, const std::string & actionKey) if (timer_apids_dflt) timerlist[selected].apids = TIMERD_APIDS_CONF; else - timerlist[selected].apids = (unsigned char)((timer_apids_std * TIMERD_APIDS_STD) | (timer_apids_ac3 * TIMERD_APIDS_AC3) | - (timer_apids_alt * TIMERD_APIDS_ALT)); + timerlist[selected].apids = (unsigned char)((timer_apids_std * TIMERD_APIDS_STD) | (timer_apids_ac3 * TIMERD_APIDS_AC3) | (timer_apids_alt * TIMERD_APIDS_ALT)); Timer->modifyTimerAPid(timerlist[selected].eventID,timerlist[selected].apids); Timer->modifyRecordTimerEvent(timerlist[selected].eventID, timerlist[selected].announceTime, timerlist[selected].alarmTime, timerlist[selected].stopTime, timerlist[selected].eventRepeat, timerlist[selected].repeatCount,timerlist[selected].recordingDir); - } else if (timerlist[selected].eventType == CTimerd::TIMER_REMOTEBOX) + } + else if (timerlist[selected].eventType == CTimerd::TIMER_REMOTEBOX) { CHTTPTool httpTool; std::string r_url; - r_url = "http://"; + r_url = "http://"; r_url += RemoteBoxConnectUrl(timerlist[selected].remotebox_name); r_url += "/control/timer?action=new&update=1"; r_url += "&alarm=" + to_string((int)timerlist[selected].alarmTime); @@ -417,7 +426,8 @@ int CTimerList::exec(CMenuTarget* parent, const std::string & actionKey) //printf("[remotetimer] url:%s\n",r_url.c_str()); r_url = httpTool.downloadString(r_url, -1, httpConnectTimeout); //printf("[remotetimer] status:%s\n",r_url.c_str()); - } else + } + else { Timer->modifyTimerEvent(timerlist[selected].eventID, timerlist[selected].announceTime, timerlist[selected].alarmTime, @@ -430,7 +440,7 @@ int CTimerList::exec(CMenuTarget* parent, const std::string & actionKey) { CHTTPTool httpTool; std::string r_url; - r_url = "http://"; + r_url = "http://"; r_url += RemoteBoxConnectUrl(timerlist[selected].remotebox_name); r_url += "/control/timer?action=new"; r_url += "&alarm=" + to_string((int)timerlist[selected].alarmTime + timerlist[selected].rem_pre); @@ -470,7 +480,7 @@ int CTimerList::exec(CMenuTarget* parent, const std::string & actionKey) CHTTPTool httpTool; std::string r_url; - r_url = "http://"; + r_url = "http://"; r_url += RemoteBoxConnectUrl(remotebox_name); r_url += "/control/timer?action=remove"; r_url += "&id=" + eventID; @@ -483,7 +493,7 @@ int CTimerList::exec(CMenuTarget* parent, const std::string & actionKey) { CHTTPTool httpTool; std::string r_url; - r_url = "http://"; + r_url = "http://"; r_url += RemoteBoxConnectUrl(timerlist[selected].remotebox_name); r_url += "/control/timer?action=remove"; r_url += "&id=" + to_string((int)timerlist[selected].eventID); @@ -495,7 +505,7 @@ int CTimerList::exec(CMenuTarget* parent, const std::string & actionKey) { CHTTPTool httpTool; std::string r_url; - r_url = "http://"; + r_url = "http://"; r_url += RemoteBoxConnectUrl(timerlist[selected].remotebox_name); r_url += "/control/timer?action=new&update=1"; r_url += "&alarm=" + to_string((int)timerlist[selected].alarmTime); @@ -541,7 +551,8 @@ int CTimerList::exec(CMenuTarget* parent, const std::string & actionKey) timerNew.announceTime-= 120; // 2 more mins for rec timer strncpy(recinfo.recordingDir,timerNew.recordingDir,sizeof(recinfo.recordingDir)-1); data = &recinfo; - } else + } + else data= &eventinfo; } else if (timerNew.eventType==CTimerd::TIMER_REMIND) @@ -576,30 +587,34 @@ int CTimerList::exec(CMenuTarget* parent, const std::string & actionKey) { int delta; sscanf(&(key[3]), - SCANF_CHANNEL_ID_TYPE - "%n", - &timerNew.channel_id, - &delta); + SCANF_CHANNEL_ID_TYPE + "%n", + &timerNew.channel_id, + &delta); timerNew_channel_name = std::string(key + 3 + delta + 1); g_RCInput->postMsg(CRCInput::RC_timeout, 0); // leave underlying menu also g_RCInput->postMsg(CRCInput::RC_timeout, 0); // leave underlying menu also return menu_return::RETURN_EXIT; } - else if(actionKey == "rec_dir1") { + else if (actionKey == "rec_dir1") + { if (parent) parent->hide(); const char *action_str = "RecDir1"; - if(chooserDir(timerlist[selected].recordingDir, true, action_str, sizeof(timerlist[selected].recordingDir)-1)) { + if (chooserDir(timerlist[selected].recordingDir, true, action_str, sizeof(timerlist[selected].recordingDir)-1)) + { printf("[timerlist] new %s dir %s\n", action_str, timerlist[selected].recordingDir); } timer_recordingDir = timerlist[selected].recordingDir; return menu_return::RETURN_REPAINT; } - else if(actionKey == "rec_dir2") { + else if (actionKey == "rec_dir2") + { if (parent) parent->hide(); const char *action_str = "RecDir2"; - if(chooserDir(timerNew.recordingDir, true, action_str, sizeof(timerNew.recordingDir)-1)) { + if (chooserDir(timerNew.recordingDir, true, action_str, sizeof(timerNew.recordingDir)-1)) + { printf("[timerlist] new %s dir %s\n", action_str, timerNew.recordingDir); } timerNew_recordingDir = timerNew.recordingDir; @@ -615,11 +630,11 @@ int CTimerList::exec(CMenuTarget* parent, const std::string & actionKey) return ret; /* - if( ret > -1) + if (ret > -1) { return menu_return::RETURN_REPAINT; } - else if( ret == -1) + else if (ret == -1) { // -1 bedeutet nur REPAINT return menu_return::RETURN_REPAINT; @@ -703,8 +718,8 @@ void CTimerList::RemoteBoxSelect() std::advance(it,select); if (askUserOnRemoteTimerConflict(timerlist[selected].announceTime, timerlist[selected].stopTime, (char*) it->rbname.c_str())) { - strncpy(timerlist[selected].remotebox_name,it->rbname.c_str(),sizeof(timerlist[selected].remotebox_name)); - timerlist[selected].remotebox_name[sizeof(timerlist[selected].remotebox_name) - 1] = 0; + strncpy(timerlist[selected].remotebox_name,it->rbname.c_str(),sizeof(timerlist[selected].remotebox_name)); + timerlist[selected].remotebox_name[sizeof(timerlist[selected].remotebox_name) - 1] = 0; } } @@ -715,7 +730,7 @@ bool CTimerList::RemoteBoxChanExists(t_channel_id channel_id) CHTTPTool httpTool; std::string r_url; - r_url = "http://"; + r_url = "http://"; r_url += RemoteBoxConnectUrl(timerlist[selected].remotebox_name); r_url += "/control/getchannel?format=json&id="; r_url += string_printf_helper(PRINTF_CHANNEL_ID_TYPE_NO_LEADING_ZEROS, channel_id); @@ -750,9 +765,10 @@ bool CTimerList::LocalBoxChanExists(t_channel_id channel_id) std::string CTimerList::RemoteBoxConnectUrl(std::string _rbname) { std::string c_url = ""; - for (std::vector::iterator it = g_settings.timer_remotebox_ip.begin(); - it != g_settings.timer_remotebox_ip.end(); ++it) { - if (it->rbname == _rbname) { + for (std::vector::iterator it = g_settings.timer_remotebox_ip.begin(); it != g_settings.timer_remotebox_ip.end(); ++it) + { + if (it->rbname == _rbname) + { if (!it->user.empty() && !it->pass.empty()) c_url += it->user + ":" + it->pass +"@"; c_url += it->rbaddress; @@ -770,37 +786,40 @@ void CTimerList::RemoteBoxTimerList(CTimerd::TimerList &rtimerlist) CHTTPTool httpTool; std::string r_url; - for (std::vector::iterator it = g_settings.timer_remotebox_ip.begin(); - it != g_settings.timer_remotebox_ip.end(); ++it) { - r_url = "http://"; + for (std::vector::iterator it = g_settings.timer_remotebox_ip.begin(); it != g_settings.timer_remotebox_ip.end(); ++it) + { + r_url = "http://"; r_url += RemoteBoxConnectUrl(it->rbname); - r_url += "/control/timer?format=json"; - r_url = httpTool.downloadString(r_url, -1, httpConnectTimeout); - //printf("[remotetimer] timers:%s\n",r_url.c_str()); + r_url += "/control/timer?format=json"; + r_url = httpTool.downloadString(r_url, -1, httpConnectTimeout); + //printf("[remotetimer] timers:%s\n",r_url.c_str()); - Json::Value root; - Json::Reader reader; - bool parsedSuccess = reader.parse(r_url, root, false); - if (!parsedSuccess) { - printf("Failed to parse JSON\n"); - printf("%s\n", reader.getFormattedErrorMessages().c_str()); - } - Json::Value delays = root["data"]["timer"][0]; + Json::Value root; + Json::Reader reader; + bool parsedSuccess = reader.parse(r_url, root, false); + if (!parsedSuccess) + { + printf("Failed to parse JSON\n"); + printf("%s\n", reader.getFormattedErrorMessages().c_str()); + } + Json::Value delays = root["data"]["timer"][0]; rem_pre = atoi(delays["config"].get("pre_delay","0").asString()); rem_post = atoi(delays["config"].get("post_delay","0").asString()); - //printf("[remotetimer] pre:%d - post:%d\n", rem_pre, rem_post); + //printf("[remotetimer] pre:%d - post:%d\n", rem_pre, rem_post); - Json::Value remotetimers = root["data"]["timer"][0]["timer_list"]; + Json::Value remotetimers = root["data"]["timer"][0]["timer_list"]; - for (unsigned int i= 0; irbname.c_str(),sizeof(rtimer.remotebox_name)); - rtimer.remotebox_name[sizeof(rtimer.remotebox_name) - 1] = 0; - rtimer.rem_pre = rem_pre; - rtimer.rem_post = rem_post; + if ( atoi(remotetimers[i].get("type_number","").asString()) == 5) + { + strncpy(rtimer.remotebox_name,it->rbname.c_str(),sizeof(rtimer.remotebox_name)); + rtimer.remotebox_name[sizeof(rtimer.remotebox_name) - 1] = 0; + rtimer.rem_pre = rem_pre; + rtimer.rem_post = rem_post; rtimer.eventID = atoi(remotetimers[i].get("id","").asString()); rtimer.eventType = CTimerd::TIMER_REMOTEBOX; rtimer.eventState = (CTimerd::CTimerEventStates) atoi(remotetimers[i].get("state","").asString()); @@ -822,13 +841,13 @@ void CTimerList::RemoteBoxTimerList(CTimerd::TimerList &rtimerlist) //printf("[remotetimer] r-timer:%s - %s\n", remotetimers[i].get("channel_id","").asString().c_str(), remotetimers[i].get("title","").asString().c_str()); rtimerlist.push_back(rtimer); } - } + } } } int CTimerList::show() { - neutrino_msg_t msg; + neutrino_msg_t msg; neutrino_msg_data_t data; int res = menu_return::RETURN_REPAINT; @@ -853,32 +872,42 @@ int CTimerList::show() g_RCInput->getMsgAbsoluteTimeout( &msg, &data, &timeoutEnd ); //ignore numeric keys - if (g_RCInput->isNumeric(msg)){ + if (g_RCInput->isNumeric(msg)) + { msg = CRCInput::RC_nokey; } if ( msg <= CRCInput::RC_MaxRC ) - timeoutEnd = CRCInput::calcTimeoutEnd(g_settings.timing[SNeutrinoSettings::TIMING_MENU] == 0 ? 0xFFFF : g_settings.timing[SNeutrinoSettings - ::TIMING_MENU]); + timeoutEnd = CRCInput::calcTimeoutEnd(g_settings.timing[SNeutrinoSettings::TIMING_MENU] == 0 ? 0xFFFF : g_settings.timing[SNeutrinoSettings::TIMING_MENU]); - if((msg == NeutrinoMessages::EVT_TIMER) && (data == fader.GetFadeTimer())) { - if(fader.FadeDone()) + if ((msg == NeutrinoMessages::EVT_TIMER) && (data == fader.GetFadeTimer())) + { + if (fader.FadeDone()) loop = false; } - else if ( ( msg == CRCInput::RC_timeout ) || - ( msg == CRCInput::RC_home) || (msg == CRCInput::RC_left) || - (( msg == CRCInput::RC_ok) && (timerlist.empty())) ) + else if ( + (msg == CRCInput::RC_timeout) + || (msg == CRCInput::RC_home) + || (msg == CRCInput::RC_left) + || (msg == CRCInput::RC_ok && timerlist.empty()) + ) { //Exit after timeout or cancel key - if(fader.StartFadeOut()) { + if (fader.StartFadeOut()) + { timeoutEnd = CRCInput::calcTimeoutEnd( 1 ); msg = 0; - } else + } + else loop=false; } - else if (!timerlist.empty() && - (msg == CRCInput::RC_up || (int)msg == g_settings.key_pageup || - msg == CRCInput::RC_down || (int)msg == g_settings.key_pagedown)) + else if (!timerlist.empty() && ( + msg == CRCInput::RC_up + || msg == CRCInput::RC_down + || (int)msg == g_settings.key_pageup + || (int)msg == g_settings.key_pagedown + ) + ) { int prev_selected = selected; int oldliststart = liststart; @@ -888,13 +917,19 @@ int CTimerList::show() liststart = (selected / listmaxshow) * listmaxshow; if (oldliststart != liststart) paint(); - else { + else + { paintItem(prev_selected - liststart); paintItem(selected - liststart); } paintFoot(); } - else if ((msg == CRCInput::RC_right || msg == CRCInput::RC_ok || msg==CRCInput::RC_blue) && !(timerlist.empty())) + else if (!timerlist.empty() && ( + msg == CRCInput::RC_ok + || msg == CRCInput::RC_right + || msg == CRCInput::RC_blue + ) + ) { if (modifyTimer()==menu_return::RETURN_EXIT_ALL) { @@ -904,84 +939,92 @@ int CTimerList::show() else update=true; } - else if ((msg == CRCInput::RC_play) && !(timerlist.empty()) && (g_settings.timer_remotebox_ip.size() > 0)) + else if (!timerlist.empty() && (msg == CRCInput::RC_play && g_settings.timer_remotebox_ip.size() > 0)) { - if (timerlist[selected].eventType == CTimerd::TIMER_RECORD ) { + if (timerlist[selected].eventType == CTimerd::TIMER_RECORD ) + { RemoteBoxSelect(); if (exec(this,"send_remotetimer")) { - res=menu_return::RETURN_EXIT_ALL; - loop=false; + res = menu_return::RETURN_EXIT_ALL; + loop = false; } else update=true; - } else if (timerlist[selected].eventType == CTimerd::TIMER_REMOTEBOX ) { + } + else if (timerlist[selected].eventType == CTimerd::TIMER_REMOTEBOX ) + { if (exec(this,"fetch_remotetimer")) { - res=menu_return::RETURN_EXIT_ALL; - loop=false; + res = menu_return::RETURN_EXIT_ALL; + loop = false; } else - update=true; + update = true; } } - else if ((msg == CRCInput::RC_red) && !(timerlist.empty())) + else if (!timerlist.empty() && msg == CRCInput::RC_red) { - if ((timerlist[selected].eventType == CTimerd::TIMER_REMOTEBOX) && (timerlist[selected].eventState < CTimerd::TIMERSTATE_ISRUNNING)) { - if (exec(this,"del_remotetimer")) - { - res=menu_return::RETURN_EXIT_ALL; - loop=false; - } - } else { - bool killTimer = true; - if (CRecordManager::getInstance()->RecordingStatus(timerlist[selected].channel_id)) { - CTimerd::RecordingStopInfo recinfo; - recinfo.channel_id = timerlist[selected].channel_id; - recinfo.eventID = timerlist[selected].eventID; - if (CRecordManager::getInstance()->IsRecording(&recinfo)) { - std::string title = ""; - char buf1[1024]; - CEPGData epgdata; - CEitManager::getInstance()->getEPGid(timerlist[selected].epgID, timerlist[selected].epg_starttime, &epgdata); - memset(buf1, '\0', sizeof(buf1)); - if (!epgdata.title.empty()) - title = "(" + epgdata.title + ")\n"; - snprintf(buf1, sizeof(buf1)-1, g_Locale->getText(LOCALE_TIMERLIST_ASK_TO_DELETE), title.c_str()); - if(ShowMsg(LOCALE_RECORDINGMENU_RECORD_IS_RUNNING, buf1, - CMessageBox::mbrYes, CMessageBox::mbYes | CMessageBox::mbNo, NULL, 450, 30, false) == CMessageBox::mbrNo) { - killTimer = false; - update = false; - } + if ((timerlist[selected].eventType == CTimerd::TIMER_REMOTEBOX) && (timerlist[selected].eventState < CTimerd::TIMERSTATE_ISRUNNING)) + { + if (exec(this,"del_remotetimer")) + { + res = menu_return::RETURN_EXIT_ALL; + loop = false; } } - if (killTimer) { + else + { + bool killTimer = true; + if (CRecordManager::getInstance()->RecordingStatus(timerlist[selected].channel_id)) + { + CTimerd::RecordingStopInfo recinfo; + recinfo.channel_id = timerlist[selected].channel_id; + recinfo.eventID = timerlist[selected].eventID; + if (CRecordManager::getInstance()->IsRecording(&recinfo)) + { + std::string title = ""; + char buf1[1024]; + CEPGData epgdata; + CEitManager::getInstance()->getEPGid(timerlist[selected].epgID, timerlist[selected].epg_starttime, &epgdata); + memset(buf1, '\0', sizeof(buf1)); + if (!epgdata.title.empty()) + title = "(" + epgdata.title + ")\n"; + snprintf(buf1, sizeof(buf1)-1, g_Locale->getText(LOCALE_TIMERLIST_ASK_TO_DELETE), title.c_str()); + if (ShowMsg(LOCALE_RECORDINGMENU_RECORD_IS_RUNNING, buf1, CMessageBox::mbrYes, CMessageBox::mbYes | CMessageBox::mbNo, NULL, 450, 30, false) == CMessageBox::mbrNo) + { + killTimer = false; + update = false; + } + } + } + if (killTimer) + { Timer->removeTimerEvent(timerlist[selected].eventID); - update = true; + update = true; + } } } - } - else if (msg==CRCInput::RC_green) + else if (msg == CRCInput::RC_green) { - if (newTimer()==menu_return::RETURN_EXIT_ALL) + if (newTimer() == menu_return::RETURN_EXIT_ALL) { - res=menu_return::RETURN_EXIT_ALL; - loop=false; + res = menu_return::RETURN_EXIT_ALL; + loop = false; } else - update=true; + update = true; } - else if (msg==CRCInput::RC_setup) + else if (msg == CRCInput::RC_setup) { update = RemoteBoxSetup(); } - else if (msg==CRCInput::RC_yellow) + else if (msg == CRCInput::RC_yellow) { - update=true; + update = true; } #if 0 - else if ((msg==CRCInput::RC_blue)|| - (CRCInput::isNumeric(msg)) ) + else if (msg==CRCInput::RC_blue || CRCInput::isNumeric(msg)) { //pushback key if... g_RCInput->postMsg( msg, data ); @@ -996,26 +1039,29 @@ int CTimerList::show() if (timer->eventType == CTimerd::TIMER_RECORD || timer->eventType == CTimerd::TIMER_REMOTEBOX || timer->eventType == CTimerd::TIMER_ZAPTO) { hide(); - if (timer->epgID != 0){ + if (timer->epgID != 0) + { res = g_EpgData->show(timer->channel_id, timer->epgID, &timer->epg_starttime); - update=true; - }else + update = true; + } + else ShowHint(LOCALE_MESSAGEBOX_INFO, LOCALE_EPGVIEWER_NOTFOUND); - if (res==menu_return::RETURN_EXIT_ALL) - loop=false; + if (res == menu_return::RETURN_EXIT_ALL) + loop = false; else paint(); } } } - else if (CNeutrinoApp::getInstance()->listModeKey(msg)) { - g_RCInput->postMsg (msg, 0); + else if (CNeutrinoApp::getInstance()->listModeKey(msg)) + { + g_RCInput->postMsg(msg, 0); loop = false; res = menu_return::RETURN_EXIT_ALL; } else { - if ( CNeutrinoApp::getInstance()->handleMsg( msg, data ) & messages_return::cancel_all ) + if (CNeutrinoApp::getInstance()->handleMsg(msg, data) & messages_return::cancel_all) { loop = false; res = menu_return::RETURN_EXIT_ALL; @@ -1047,27 +1093,29 @@ bool CTimerList::RemoteBoxSetup() remboxmenu->addIntroItems(); item_offset = remboxmenu->getItemsCount(); - for (std::vector::iterator it = g_settings.timer_remotebox_ip.begin(); - it != g_settings.timer_remotebox_ip.end(); ++it) + for (std::vector::iterator it = g_settings.timer_remotebox_ip.begin(); it != g_settings.timer_remotebox_ip.end(); ++it) remboxmenu->addItem(new CMenuForwarder(it->rbname, true, NULL, this, "cha_ip")); remboxmenu->setFooter(RemoteBoxFooterButtons, RemoteBoxFooterButtonCount); remboxmenu->enableSaveScreen(true); remboxmenu->exec(NULL, ""); - if (changed) { - std::vector old_timer_remotebox_ip = g_settings.timer_remotebox_ip; - g_settings.timer_remotebox_ip.clear(); - for (int i = item_offset; i < remboxmenu->getItemsCount(); i++) { - CMenuItem *item = remboxmenu->getItem(i); - CMenuForwarder *f = static_cast(item); - for (std::vector::iterator it = old_timer_remotebox_ip.begin(); - it != old_timer_remotebox_ip.end(); ++it) - if (it->rbname == f->getName()) { - g_settings.timer_remotebox_ip.push_back(*it);} - } - changed = false; - ret = true; + if (changed) + { + std::vector old_timer_remotebox_ip = g_settings.timer_remotebox_ip; + g_settings.timer_remotebox_ip.clear(); + for (int i = item_offset; i < remboxmenu->getItemsCount(); i++) + { + CMenuItem *item = remboxmenu->getItem(i); + CMenuForwarder *f = static_cast(item); + for (std::vector::iterator it = old_timer_remotebox_ip.begin(); it != old_timer_remotebox_ip.end(); ++it) + if (it->rbname == f->getName()) + { + g_settings.timer_remotebox_ip.push_back(*it); + } + } + changed = false; + ret = true; } delete remboxmenu; return ret; @@ -1125,9 +1173,11 @@ void CTimerList::paintItem(int pos) { char srepeatcount[25] = {0}; if (timer.repeatCount == 0) -// Unicode 8734 (hex: 221E) not available in all fonts -// sprintf(srepeatcount,"∞"); + { + // Unicode 8734 (hex: 221E) not available in all fonts + //sprintf(srepeatcount,"∞"); sprintf(srepeatcount,"00"); + } else sprintf(srepeatcount,"%ux",timer.repeatCount); g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->RenderString(x+fw*13+(real_width-fw*23)/2,ypos+fheight, (real_width-fw*13)/2-5, srepeatcount, color, fheight); @@ -1136,23 +1186,28 @@ void CTimerList::paintItem(int pos) g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->RenderString(x+fw*13+(real_width-fw*13)/2,ypos+fheight, (real_width-fw*13)/2-5, t_type, color, fheight); // paint rec icon when recording in progress - if ((timer.eventType == CTimerd::TIMER_RECORD) && (CRecordManager::getInstance()->RecordingStatus(timer.channel_id))) { + if ((timer.eventType == CTimerd::TIMER_RECORD) && (CRecordManager::getInstance()->RecordingStatus(timer.channel_id))) + { CTimerd::RecordingStopInfo recinfo; recinfo.channel_id = timer.channel_id; recinfo.eventID = timer.eventID; - if (CRecordManager::getInstance()->IsRecording(&recinfo)) { + if (CRecordManager::getInstance()->IsRecording(&recinfo)) + { int icol_w, icol_h; frameBuffer->getIconSize(NEUTRINO_ICON_REC, &icol_w, &icol_h); - if ((icol_w > 0) && (icol_h > 0)) { + if ((icol_w > 0) && (icol_h > 0)) + { frameBuffer->paintIcon(NEUTRINO_ICON_REC, (x + real_width) - (icol_w + 8), ypos, 2*fheight); } } } - if ((timer.eventType == CTimerd::TIMER_REMOTEBOX) && timer.eventState == CTimerd::TIMERSTATE_ISRUNNING) { + if ((timer.eventType == CTimerd::TIMER_REMOTEBOX) && timer.eventState == CTimerd::TIMERSTATE_ISRUNNING) + { int icol_w, icol_h; frameBuffer->getIconSize(NEUTRINO_ICON_REC, &icol_w, &icol_h); - if ((icol_w > 0) && (icol_h > 0)) { + if ((icol_w > 0) && (icol_h > 0)) + { frameBuffer->paintIcon(NEUTRINO_ICON_REC, (x + real_width) - (icol_w + 8), ypos, 2*fheight); } } @@ -1213,7 +1268,7 @@ void CTimerList::paintItem(int pos) { CHTTPTool httpTool; std::string r_url; - r_url = "http://"; + r_url = "http://"; r_url += RemoteBoxConnectUrl(timer.remotebox_name); r_url += "/control/getchannel?format=json&id="; r_url += string_printf_helper(PRINTF_CHANNEL_ID_TYPE_NO_LEADING_ZEROS, timer.channel_id); @@ -1222,7 +1277,8 @@ void CTimerList::paintItem(int pos) Json::Value root; Json::Reader reader; bool parsedSuccess = reader.parse(r_url, root, false); - if (!parsedSuccess) { + if (!parsedSuccess) + { printf("Failed to parse JSON\n"); printf("%s\n", reader.getFormattedErrorMessages().c_str()); } @@ -1364,10 +1420,10 @@ void CTimerList::paint() int ypos = y+ theight; int sb = 2*fheight* listmaxshow; frameBuffer->paintBoxRel(x+ width- 15,ypos, 15, sb, COL_SCROLLBAR_PASSIVE_PLUS_0); - unsigned int tmp_max = listmaxshow; - if(!tmp_max) - tmp_max = 1; - int sbc= ((timerlist.size()- 1)/ tmp_max)+ 1; + unsigned int tmp_max = listmaxshow; + if (!tmp_max) + tmp_max = 1; + int sbc = ((timerlist.size()- 1)/ tmp_max)+ 1; frameBuffer->paintBoxRel(x+ width- 13, ypos+ 2+ page_nr * (sb-4)/sbc, 11, (sb-4)/sbc, COL_SCROLLBAR_ACTIVE_PLUS_0, RADIUS_SMALL); } @@ -1396,8 +1452,8 @@ const char * CTimerList::convertTimerType2String(const CTimerd::CTimerEventTypes return g_Locale->getText(LOCALE_TIMERLIST_TYPE_SLEEPTIMER ); case CTimerd::TIMER_EXEC_PLUGIN : return g_Locale->getText(LOCALE_TIMERLIST_TYPE_EXECPLUGIN ); - case CTimerd::TIMER_REMOTEBOX : - return g_Locale->getText(LOCALE_TIMERLIST_TYPE_REMOTEBOX ); + case CTimerd::TIMER_REMOTEBOX : + return g_Locale->getText(LOCALE_TIMERLIST_TYPE_REMOTEBOX ); default : return g_Locale->getText(LOCALE_TIMERLIST_TYPE_UNKNOWN ); } @@ -1520,13 +1576,13 @@ int CTimerList::modifyTimer() timerSettings.addItem( m0); CDateInput timerSettings_alarmTime(LOCALE_TIMERLIST_ALARMTIME, &timer->alarmTime , LOCALE_IPSETUP_HINT_1, LOCALE_IPSETUP_HINT_2); - CMenuForwarder *m1 = new CMenuForwarder(LOCALE_TIMERLIST_ALARMTIME, true, timerSettings_alarmTime.getValue (), &timerSettings_alarmTime ); + CMenuForwarder *m1 = new CMenuForwarder(LOCALE_TIMERLIST_ALARMTIME, true, timerSettings_alarmTime.getValue(), &timerSettings_alarmTime ); timerSettings.addItem( m1); CDateInput timerSettings_stopTime(LOCALE_TIMERLIST_STOPTIME, &timer->stopTime , LOCALE_IPSETUP_HINT_1, LOCALE_IPSETUP_HINT_2); if (timer->stopTime != 0) { - CMenuForwarder *m2 = new CMenuForwarder(LOCALE_TIMERLIST_STOPTIME, true, timerSettings_stopTime.getValue (), &timerSettings_stopTime ); + CMenuForwarder *m2 = new CMenuForwarder(LOCALE_TIMERLIST_STOPTIME, true, timerSettings_stopTime.getValue(), &timerSettings_stopTime ); timerSettings.addItem( m2); } @@ -1579,7 +1635,7 @@ int CTimerList::modifyTimer() CMenuOptionChooser* ma4 = new CMenuOptionChooser(LOCALE_RECORDINGMENU_APIDS_AC3, &timer_apids_ac3, MESSAGEBOX_NO_YES_OPTIONS, MESSAGEBOX_NO_YES_OPTION_COUNT, !timer_apids_dflt, &apid_notifier); timerSettings_apids.addItem(ma4); apid_notifier.setItems(ma1,ma2,ma3,ma4); - if (timer->eventType == CTimerd::TIMER_RECORD) + if (timer->eventType == CTimerd::TIMER_RECORD) { timerSettings.addItem( new CMenuForwarder(LOCALE_TIMERLIST_APIDS, true, NULL, &timerSettings_apids )); } @@ -1630,20 +1686,19 @@ int CTimerList::newTimer() timerNew_standby_on =false; strncpy(timerNew.recordingDir,g_settings.network_nfs_recordingdir.c_str(),sizeof(timerNew.recordingDir)-1); - CMenuWidget timerSettings(LOCALE_TIMERLIST_MENUNEW, NEUTRINO_ICON_SETTINGS); timerSettings.addIntroItems(); timerSettings.addItem(new CMenuForwarder(LOCALE_TIMERLIST_SAVE, true, NULL, this, "newtimer", CRCInput::RC_red)); timerSettings.addItem(GenericMenuSeparatorLine); CDateInput timerSettings_alarmTime(LOCALE_TIMERLIST_ALARMTIME, &(timerNew.alarmTime) , LOCALE_IPSETUP_HINT_1, LOCALE_IPSETUP_HINT_2); - CMenuForwarder *m1 = new CMenuForwarder(LOCALE_TIMERLIST_ALARMTIME, true, timerSettings_alarmTime.getValue (), &timerSettings_alarmTime ); + CMenuForwarder *m1 = new CMenuForwarder(LOCALE_TIMERLIST_ALARMTIME, true, timerSettings_alarmTime.getValue(), &timerSettings_alarmTime ); CDateInput timerSettings_stopTime(LOCALE_TIMERLIST_STOPTIME, &(timerNew.stopTime) , LOCALE_IPSETUP_HINT_1, LOCALE_IPSETUP_HINT_2); - CMenuForwarder *m2 = new CMenuForwarder(LOCALE_TIMERLIST_STOPTIME, true, timerSettings_stopTime.getValue (), &timerSettings_stopTime ); + CMenuForwarder *m2 = new CMenuForwarder(LOCALE_TIMERLIST_STOPTIME, true, timerSettings_stopTime.getValue(), &timerSettings_stopTime ); CStringInput timerSettings_weekdays(LOCALE_TIMERLIST_WEEKDAYS, &m_weekdaysStr, 7, LOCALE_TIMERLIST_WEEKDAYS_HINT_1, LOCALE_TIMERLIST_WEEKDAYS_HINT_2, "-X"); - CMenuForwarder *m4 = new CMenuForwarder(LOCALE_TIMERLIST_WEEKDAYS, false, m_weekdaysStr, &timerSettings_weekdays); + CMenuForwarder *m4 = new CMenuForwarder(LOCALE_TIMERLIST_WEEKDAYS, false, m_weekdaysStr, &timerSettings_weekdays); CIntInput timerSettings_repeatCount(LOCALE_TIMERLIST_REPEATCOUNT, (int*)&timerNew.repeatCount,3, LOCALE_TIMERLIST_REPEATCOUNT_HELP1, LOCALE_TIMERLIST_REPEATCOUNT_HELP2); CMenuForwarder *m5 = new CMenuForwarder(LOCALE_TIMERLIST_REPEATCOUNT, false,timerSettings_repeatCount.getValue() , &timerSettings_repeatCount); @@ -1652,12 +1707,13 @@ int CTimerList::newTimer() m_weekdaysStr = "XXXXX--"; CMenuOptionChooser* m3 = new CMenuOptionChooser(LOCALE_TIMERLIST_REPEAT, (int *)&timerNew.eventRepeat, TIMERLIST_REPEAT_OPTIONS, TIMERLIST_REPEAT_OPTION_COUNT, true, ¬ifier); - CMenuWidget mctv(LOCALE_TIMERLIST_BOUQUETSELECT, NEUTRINO_ICON_SETTINGS); CMenuWidget mcradio(LOCALE_TIMERLIST_BOUQUETSELECT, NEUTRINO_ICON_SETTINGS); - for (int i = 0; i < (int) g_bouquetManager->Bouquets.size(); i++) { - if (!g_bouquetManager->Bouquets[i]->bHidden) { + for (int i = 0; i < (int) g_bouquetManager->Bouquets.size(); i++) + { + if (!g_bouquetManager->Bouquets[i]->bHidden) + { CMenuWidget* mwtv = new CMenuWidget(LOCALE_TIMERLIST_CHANNELSELECT, NEUTRINO_ICON_SETTINGS); toDelete.push_back(mwtv); CMenuWidget* mwradio = new CMenuWidget(LOCALE_TIMERLIST_CHANNELSELECT, NEUTRINO_ICON_SETTINGS); @@ -1665,18 +1721,19 @@ int CTimerList::newTimer() ZapitChannelList channels; g_bouquetManager->Bouquets[i]->getTvChannels(channels); - for (int j = 0; j < (int) channels.size(); j++) { + for (int j = 0; j < (int) channels.size(); j++) + { char cChannelId[3+16+1+1]; sprintf(cChannelId, "SC:" PRINTF_CHANNEL_ID_TYPE_NO_LEADING_ZEROS ",", channels[j]->getChannelID()); mwtv->addItem(new CMenuForwarder(channels[j]->getName(), true, NULL, this, (std::string(cChannelId) + channels[j]->getName()).c_str(), CRCInput::RC_nokey, NULL, channels[j]->scrambled ? NEUTRINO_ICON_SCRAMBLED : (channels[j]->getUrl().empty() ? NULL : NEUTRINO_ICON_STREAMING))); - } if (!channels.empty()) mctv.addItem(new CMenuForwarder(g_bouquetManager->Bouquets[i]->bFav ? g_Locale->getText(LOCALE_FAVORITES_BOUQUETNAME) : g_bouquetManager->Bouquets[i]->Name.c_str() /*g_bouquetManager->Bouquets[i]->Name.c_str()*/, true, NULL, mwtv)); g_bouquetManager->Bouquets[i]->getRadioChannels(channels); - for (int j = 0; j < (int) channels.size(); j++) { + for (int j = 0; j < (int) channels.size(); j++) + { char cChannelId[3+16+1+1]; sprintf(cChannelId, "SC:" PRINTF_CHANNEL_ID_TYPE_NO_LEADING_ZEROS ",", channels[j]->getChannelID()); mwradio->addItem(new CMenuForwarder(channels[j]->getName(), true, NULL, this, (std::string(cChannelId) + channels[j]->getName()).c_str(), CRCInput::RC_nokey, NULL, channels[j]->scrambled ? NEUTRINO_ICON_SCRAMBLED : (channels[j]->getUrl().empty() ? NULL : NEUTRINO_ICON_STREAMING))); @@ -1752,34 +1809,31 @@ bool CTimerList::askUserOnRemoteTimerConflict(time_t announceTime, time_t stopTi int pre,post; Timer->getRecordingSafety(pre,post); - for (CTimerd::TimerList::iterator it = timerlist.begin(); - it != timerlist.end();++it) + for (CTimerd::TimerList::iterator it = timerlist.begin(); it != timerlist.end();++it) { - - if (strcmp(it->remotebox_name,remotebox_name) == 0) { - - if(it->stopTime != 0 && stopTime != 0) + if (strcmp(it->remotebox_name,remotebox_name) == 0) { - // Check if both timers have start and end. In this case do not show conflict, if endtime is the same than the starttime of the following timer - if ((stopTime+post > it->alarmTime) && (announceTime-pre < it->stopTime)) + if (it->stopTime != 0 && stopTime != 0) { - overlappingTimers.push_back(*it); + // Check if both timers have start and end. In this case do not show conflict, if endtime is the same than the starttime of the following timer + if ((stopTime+post > it->alarmTime) && (announceTime-pre < it->stopTime)) + { + overlappingTimers.push_back(*it); + } } - } - else - { - if (!((stopTime < it->announceTime) || (announceTime > it->stopTime))) + else { - overlappingTimers.push_back(*it); + if (!((stopTime < it->announceTime) || (announceTime > it->stopTime))) + { + overlappingTimers.push_back(*it); + } } } - } } std::string timerbuf = g_Locale->getText(LOCALE_TIMERLIST_OVERLAPPING_TIMER); timerbuf += "\n"; - for (CTimerd::TimerList::iterator it = overlappingTimers.begin(); - it != overlappingTimers.end(); ++it) + for (CTimerd::TimerList::iterator it = overlappingTimers.begin(); it != overlappingTimers.end(); ++it) { timerbuf += CTimerList::convertTimerType2String(it->eventType); timerbuf += " ("; @@ -1831,8 +1885,7 @@ bool askUserOnTimerConflict(time_t announceTime, time_t stopTime, t_channel_id c std::string timerbuf = g_Locale->getText(LOCALE_TIMERLIST_OVERLAPPING_TIMER); timerbuf += "\n"; - for (CTimerd::TimerList::iterator it = overlappingTimers.begin(); - it != overlappingTimers.end(); ++it) + for (CTimerd::TimerList::iterator it = overlappingTimers.begin(); it != overlappingTimers.end(); ++it) { timerbuf += CTimerList::convertTimerType2String(it->eventType); timerbuf += " (";