From 44fb2039e1f0fc6dd10352014bed69a66d217eae Mon Sep 17 00:00:00 2001 From: Jacek Jendrzej Date: Thu, 25 Apr 2019 18:49:57 +0200 Subject: [PATCH] add option to adzap: zap on timer activation --- data/locale/deutsch.locale | 5 +++++ data/locale/english.locale | 5 +++++ src/gui/adzap.cpp | 12 ++++++++++++ src/gui/epgview.cpp | 12 ++++++++++++ src/neutrino.cpp | 2 ++ src/system/locals.h | 5 +++++ src/system/locals_intern.h | 5 +++++ src/system/settings.h | 2 ++ 8 files changed, 48 insertions(+) diff --git a/data/locale/deutsch.locale b/data/locale/deutsch.locale index d5595f5d0..059243456 100644 --- a/data/locale/deutsch.locale +++ b/data/locale/deutsch.locale @@ -117,6 +117,10 @@ adzap.minutes Minuten adzap.monitor Ein (dauerhaft) adzap.switchback Zurückschalten nach adzap.writedata Schreibe Status-Daten +adzap.zap Zap bei der Timer Aktivierung auf +adzap.zap_off nicht +adzap.zap_to_last_channel Letzter-Kanal +adzap.zap_to_strat_channel Start-Kanal apidselector.head Sprachauswahl audio.srs_algo Art audio.srs_algo_heavy stark @@ -1041,6 +1045,7 @@ menu.hint_a_pic Konfigurieren Sie den Audioplayer und den Bildbetrachter menu.hint_adzap Der Werbezapper schaltet nach der eingestellten Zeit wieder auf den ursprünglichen Kanal zurück menu.hint_adzap_active Der Werbezapper ist aktiv. Mit einem erneuten Aufruf wird er deaktiviert. menu.hint_adzap_writedata Schreibe Daten über den Status des Werbezappers nach /tmp/adzap.data +menu.hint_adzap_zap Umschalten bei der Timer-Aktivierung auf Letzten oder Strat Kanal menu.hint_aplay Audioplayer menu.hint_aplay_setup Ändern Sie Audioplayer-Einstellungen wie Titel-Anzeige, Startverzeichnis oder Bildschirmschoner. menu.hint_audio Audio-Ausgang, Dolby Digital und SRS TruVolume Optionen usw. diff --git a/data/locale/english.locale b/data/locale/english.locale index dd6100764..adbd00125 100644 --- a/data/locale/english.locale +++ b/data/locale/english.locale @@ -117,6 +117,10 @@ adzap.minutes minutes adzap.monitor On (durable) adzap.switchback Switch back after adzap.writedata Write status data +adzap.zap zap on timer activation to +adzap.zap_off off +adzap.zap_to_last_channel last-channel +adzap.zap_to_strat_channel start-channel apidselector.head Select language audio.srs_algo Type audio.srs_algo_heavy Heavy @@ -1041,6 +1045,7 @@ menu.hint_a_pic Configure audio player and picture viewer menu.hint_adzap AdZap will switch back to the current channel when the selected time is up menu.hint_adzap_active AdZap is active. With a new call it will be deactivated. menu.hint_adzap_writedata Write data according to adzap status to /tmp/adzap.data +menu.hint_adzap_zap zap Switch to last or strat channel during timer activation menu.hint_aplay Audio player menu.hint_aplay_setup Change title display, start directory, screen saver and more menu.hint_audio Audio output, DD\nSRS True volume options diff --git a/src/gui/adzap.cpp b/src/gui/adzap.cpp index a651c6eed..c96ce7e1e 100644 --- a/src/gui/adzap.cpp +++ b/src/gui/adzap.cpp @@ -318,6 +318,14 @@ int CAdZapMenu::exec(CMenuTarget *parent, const std::string & actionKey) void CAdZapMenu::ShowMenu() { + #define ADZAP_ZAP_OPTION_COUNT 3 + const CMenuOptionChooser::keyval ADZAP_ZAP_OPTIONS[ADZAP_ZAP_OPTION_COUNT] = + { + { SNeutrinoSettings::ADZAP_ZAP_OFF,LOCALE_ADZAP_ZAP_OFF}, + { SNeutrinoSettings::ADZAP_ZAP_TO_LAST,LOCALE_ADZAP_ZAP_TO_LAST_CHANNEL}, + { SNeutrinoSettings::ADZAP_ZAP_TO_STRAT,LOCALE_ADZAP_ZAP_TO_STRAT_CHANNEL}, + }; + bool show_monitor = monitorLifeTime.tv_sec; CMenuWidget *menu = new CMenuWidget(LOCALE_ADZAP, NEUTRINO_ICON_SETTINGS, width); @@ -330,6 +338,10 @@ void CAdZapMenu::ShowMenu() oc->setHint(NEUTRINO_ICON_HINT_ADZAP, LOCALE_MENU_HINT_ADZAP_WRITEDATA); menu->addItem(oc); + CMenuOptionChooser *oc_zap = new CMenuOptionChooser(LOCALE_ADZAP_ZAP, &g_settings.adzap_zapOnActivation, ADZAP_ZAP_OPTIONS, ADZAP_ZAP_OPTION_COUNT, true); + oc_zap->setHint(NEUTRINO_ICON_HINT_ADZAP, LOCALE_MENU_HINT_ADZAP_ZAP); + menu->addItem(oc_zap); + menu->addItem(new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_ADZAP_SWITCHBACK)); neutrino_locale_t minute = LOCALE_ADZAP_MINUTE; diff --git a/src/gui/epgview.cpp b/src/gui/epgview.cpp index 7bdb7d709..70b36e165 100644 --- a/src/gui/epgview.cpp +++ b/src/gui/epgview.cpp @@ -1249,6 +1249,18 @@ int CEpgData::show(const t_channel_id channel_id, uint64_t a_id, time_t* a_start tmp_msg += " "; tmp_msg += g_Locale->getText(LOCALE_UNIT_SHORT_MINUTE); ShowMsg(LOCALE_ADZAP, tmp_msg, CMsgBox::mbrBack, CMsgBox::mbBack, NEUTRINO_ICON_INFO); + + if(g_settings.adzap_zapOnActivation == SNeutrinoSettings::ADZAP_ZAP_TO_LAST) + CNeutrinoApp::getInstance()->channelList->numericZap(g_settings.key_lastchannel); + else if(g_settings.adzap_zapOnActivation == SNeutrinoSettings::ADZAP_ZAP_TO_STRAT){ + int mode = CNeutrinoApp::getInstance()->getMode(); + bool isRadioMode = (mode == NeutrinoModes::mode_radio || mode == NeutrinoModes::mode_webradio); + const t_channel_id cur_channel_id = isRadioMode ? g_settings.startchannelradio_id : g_settings.startchanneltv_id; + if(cur_channel_id != channel_id) + CNeutrinoApp::getInstance()->channelList->zapTo_ChannelID(cur_channel_id, true); + else + CNeutrinoApp::getInstance()->channelList->numericZap(g_settings.key_lastchannel); + } } //CTimerdClient timerdclient; else if (g_Timerd->isTimerdAvailable()) diff --git a/src/neutrino.cpp b/src/neutrino.cpp index f22d48a1f..4b929816d 100644 --- a/src/neutrino.cpp +++ b/src/neutrino.cpp @@ -1032,6 +1032,7 @@ int CNeutrinoApp::loadSetup(const char * fname) g_settings.adzap_zapBackPeriod = configfile.getInt32("adzap_zapBackPeriod", 180); g_settings.adzap_writeData = configfile.getInt32("adzap_writeData", 0); + g_settings.adzap_zapOnActivation = configfile.getInt32("adzap_zapOnActivation", 0); // USERMENU -> in system/settings.h //------------------------------------------- @@ -1750,6 +1751,7 @@ void CNeutrinoApp::saveSetup(const char * fname) configfile.setInt32("uselastchannel", g_settings.uselastchannel); configfile.setInt32("adzap_zapBackPeriod", g_settings.adzap_zapBackPeriod); configfile.setInt32("adzap_writeData", g_settings.adzap_writeData); + configfile.setInt32("adzap_zapOnActivation", g_settings.adzap_zapOnActivation); //epg search g_settings.epg_search_history_size = g_settings.epg_search_history.size(); if (g_settings.epg_search_history_size > g_settings.epg_search_history_max) diff --git a/src/system/locals.h b/src/system/locals.h index 30aa94b37..196647dee 100644 --- a/src/system/locals.h +++ b/src/system/locals.h @@ -144,6 +144,10 @@ typedef enum LOCALE_ADZAP_MONITOR, LOCALE_ADZAP_SWITCHBACK, LOCALE_ADZAP_WRITEDATA, + LOCALE_ADZAP_ZAP, + LOCALE_ADZAP_ZAP_OFF, + LOCALE_ADZAP_ZAP_TO_LAST_CHANNEL, + LOCALE_ADZAP_ZAP_TO_STRAT_CHANNEL, LOCALE_APIDSELECTOR_HEAD, LOCALE_AUDIO_SRS_ALGO, LOCALE_AUDIO_SRS_ALGO_HEAVY, @@ -1068,6 +1072,7 @@ typedef enum LOCALE_MENU_HINT_ADZAP, LOCALE_MENU_HINT_ADZAP_ACTIVE, LOCALE_MENU_HINT_ADZAP_WRITEDATA, + LOCALE_MENU_HINT_ADZAP_ZAP, LOCALE_MENU_HINT_APLAY, LOCALE_MENU_HINT_APLAY_SETUP, LOCALE_MENU_HINT_AUDIO, diff --git a/src/system/locals_intern.h b/src/system/locals_intern.h index a6a65a400..14c1fffb2 100644 --- a/src/system/locals_intern.h +++ b/src/system/locals_intern.h @@ -144,6 +144,10 @@ const char * locale_real_names[] = "adzap.monitor", "adzap.switchback", "adzap.writedata", + "adzap.zap", + "adzap.zap_off", + "adzap.zap_to_last_channel", + "adzap.zap_to_strat_channel", "apidselector.head", "audio.srs_algo", "audio.srs_algo_heavy", @@ -1068,6 +1072,7 @@ const char * locale_real_names[] = "menu.hint_adzap", "menu.hint_adzap_active", "menu.hint_adzap_writedata", + "menu.hint_adzap_zap", "menu.hint_aplay", "menu.hint_aplay_setup", "menu.hint_audio", diff --git a/src/system/settings.h b/src/system/settings.h index 4cfd7f452..2a435c54e 100644 --- a/src/system/settings.h +++ b/src/system/settings.h @@ -884,6 +884,8 @@ struct SNeutrinoSettings //adzap int adzap_zapBackPeriod; int adzap_writeData; + int adzap_zapOnActivation; + enum{ADZAP_ZAP_OFF,ADZAP_ZAP_TO_LAST,ADZAP_ZAP_TO_STRAT}; int power_standby; int hdd_sleep;