diff --git a/data/locale/deutsch.locale b/data/locale/deutsch.locale index 800665dcd..3c76e6207 100644 --- a/data/locale/deutsch.locale +++ b/data/locale/deutsch.locale @@ -445,6 +445,7 @@ extra.dboxinfo_uptime Uptime extra.dboxinfo_use Nutzung extra.dboxinfo_used Benutzt extra.east Osten +extra.external_volume Externe Lautstärke Regelung extra.fec_1_2 1/2 extra.fec_2_3 2/3 extra.fec_2_5 2/5 @@ -1055,6 +1056,7 @@ menu.hint_cache_txt Startet das Zwischenspeichern des Teletextes nach einem Kana menu.hint_cec_mode CEC-Modus menu.hint_cec_standby CEC-Standby menu.hint_cec_view_on CEC view ON +menu.hint_cec_volume Beim Betätigen der Lautstärketasten wird die Lautstärke an angeschlossenen Audiogerät reguliert menu.hint_channellist_additional Definiert, ob zusätzliche Informationen im Hauptfenster angezeigt werden sollen menu.hint_channellist_enablesdt Ermöglicht die dynamische Senderaktualisierung im laufenden Betrieb menu.hint_channellist_epg_align Legen Sie fest, wie der Text für das EPG in der Liste rechts vom Programmnamen ausgerichtet wird @@ -1108,6 +1110,7 @@ menu.hint_eventlist_epgplus Definiert, ob EPG Plus (Vorschau-Übersicht) mit der menu.hint_eventlist_fonts Ändern Sie die Schriftgröße in der Event-Liste menu.hint_eventlist_setup Wählen Sie die Anzeigeoptionen für die Event-Liste menu.hint_extended Energiespar-, EPG-Speicher- und Lade-Optionen, HDMI-CEC, Startkanal usw. +menu.hint_external_volume Beim Betätigen der Lautstärketasten werden ensprechenden Script-Events ausgelöst. menu.hint_factory Zurücksetzen der Box auf Werkseinstellungen.\nDie Box wird danach neu gestartet menu.hint_fade Bei aktivierter Funktion werden die GUI-Fenster 'weich' ein- bzw. ausgeblendet menu.hint_fan_speed Steuerung der Lüftergeschwindigkeit für die CPU @@ -2562,6 +2565,7 @@ videomenu.hdmi_cec_mode_recorder als Sat/Kabel PVR videomenu.hdmi_cec_mode_tuner als Sat/Kabel STB videomenu.hdmi_cec_standby Aktiviere CEC Standby videomenu.hdmi_cec_view_on Aktiviere CEC View on +videomenu.hdmi_cec_volume Aktiviere CEC Lautstärke Regelung videomenu.hue Farbton videomenu.letterbox Letterbox videomenu.panscan Pan & Scan diff --git a/data/locale/english.locale b/data/locale/english.locale index 689c86554..eb052bc0c 100644 --- a/data/locale/english.locale +++ b/data/locale/english.locale @@ -1055,6 +1055,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_cec_volume Pressing the volume buttons adjusts the volume on the connected audio device menu.hint_channellist_additional Show additional informations\nin main box menu.hint_channellist_enablesdt Enables dynamic channel updates during operation menu.hint_channellist_epg_align EPG event align @@ -2562,6 +2563,7 @@ videomenu.hdmi_cec_mode_recorder as Sat/Cable PVR videomenu.hdmi_cec_mode_tuner as Sat/Cable STB videomenu.hdmi_cec_standby Enable CEC standby videomenu.hdmi_cec_view_on Enable CEC View on +videomenu.hdmi_cec_volume Activate CEC volume control videomenu.hue Hue videomenu.letterbox Letterbox videomenu.panscan Pan & Scan diff --git a/src/gui/cec_setup.cpp b/src/gui/cec_setup.cpp index a45587f11..d3c35b1de 100644 --- a/src/gui/cec_setup.cpp +++ b/src/gui/cec_setup.cpp @@ -96,12 +96,19 @@ int CCECSetup::showMenu() cec1->setHint("", LOCALE_MENU_HINT_CEC_VIEW_ON); cec2 = new CMenuOptionChooser(LOCALE_VIDEOMENU_HDMI_CEC_STANDBY, &g_settings.hdmi_cec_standby, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, g_settings.hdmi_cec_mode != VIDEO_HDMI_CEC_MODE_OFF, this); cec2->setHint("", LOCALE_MENU_HINT_CEC_STANDBY); +#if HAVE_ARM_HARDWARE + cec3 = new CMenuOptionChooser(LOCALE_VIDEOMENU_HDMI_CEC_VOLUME, &g_settings.hdmi_cec_volume, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, g_settings.hdmi_cec_mode != VIDEO_HDMI_CEC_MODE_OFF, this); + cec3->setHint("", LOCALE_MENU_HINT_CEC_VOLUME); +#endif cec->addItem(cec_ch); cec->addItem(GenericMenuSeparatorLine); //------------------------------------------------------- cec->addItem(cec1); cec->addItem(cec2); +#if HAVE_ARM_HARDWARE + cec->addItem(cec3); +#endif int res = cec->exec(NULL, ""); delete cec; diff --git a/src/gui/cec_setup.h b/src/gui/cec_setup.h index 9f69672f9..c5aa3f1b5 100644 --- a/src/gui/cec_setup.h +++ b/src/gui/cec_setup.h @@ -36,7 +36,7 @@ class CCECSetup : public CMenuTarget, CChangeObserver { private: - CMenuOptionChooser *cec1, *cec2; + CMenuOptionChooser *cec1, *cec2, *cec3; int width; diff --git a/src/gui/osd_setup.cpp b/src/gui/osd_setup.cpp index f9d0f38e6..3a943ab12 100644 --- a/src/gui/osd_setup.cpp +++ b/src/gui/osd_setup.cpp @@ -1385,6 +1385,11 @@ void COsdSetup::showOsdVolumeSetup(CMenuWidget *menu_volume) mc = new CMenuOptionChooser(LOCALE_EXTRA_SHOW_MUTE_ICON, &g_settings.show_mute_icon, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true); mc->setHint("", LOCALE_MENU_HINT_SHOW_MUTE_ICON); menu_volume->addItem(mc); + + // volume_external + mc = new CMenuOptionChooser(LOCALE_EXTRA_EXTERNAL_VOLUME, &g_settings.volume_external, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true); + mc->setHint("", LOCALE_MENU_HINT_EXTERNAL_VOLUME); + menu_volume->addItem(mc); } //info clock diff --git a/src/neutrino.cpp b/src/neutrino.cpp index 7ed272c58..fe2eb65ff 100644 --- a/src/neutrino.cpp +++ b/src/neutrino.cpp @@ -377,6 +377,7 @@ int CNeutrinoApp::loadSetup(const char * fname) g_settings.hdmi_cec_mode = configfile.getInt32("hdmi_cec_mode", 0); // default off g_settings.hdmi_cec_view_on = configfile.getInt32("hdmi_cec_view_on", 0); // default off g_settings.hdmi_cec_standby = configfile.getInt32("hdmi_cec_standby", 0); // default off + g_settings.hdmi_cec_volume = configfile.getInt32("hdmi_cec_volume", 0); g_settings.video_Format = configfile.getInt32("video_Format", DISPLAY_AR_16_9); g_settings.video_43mode = configfile.getInt32("video_43mode", DISPLAY_AR_MODE_LETTERBOX); @@ -526,6 +527,8 @@ int CNeutrinoApp::loadSetup(const char * fname) g_settings.volume_pos = configfile.getInt32("volume_pos", CVolumeBar::VOLUMEBAR_POS_BOTTOM_CENTER); g_settings.volume_digits = configfile.getBool("volume_digits", true); g_settings.volume_size = configfile.getInt32("volume_size", 26 ); + g_settings.volume_external = configfile.getInt32("volume_external", 0); + g_settings.menu_pos = configfile.getInt32("menu_pos", CMenuWidget::MENU_POS_CENTER); g_settings.show_menu_hints = configfile.getBool("show_menu_hints", true); g_settings.infobar_show_sysfs_hdd = configfile.getBool("infobar_show_sysfs_hdd" , true ); @@ -1214,6 +1217,7 @@ void CNeutrinoApp::saveSetup(const char * fname) configfile.setInt32( "hdmi_cec_mode", g_settings.hdmi_cec_mode ); configfile.setInt32( "hdmi_cec_view_on", g_settings.hdmi_cec_view_on ); configfile.setInt32( "hdmi_cec_standby", g_settings.hdmi_cec_standby ); + configfile.setInt32( "hdmi_cec_volume", g_settings.hdmi_cec_volume ); configfile.setInt32( "current_volume", g_settings.current_volume ); configfile.setInt32( "current_volume_step", g_settings.current_volume_step ); @@ -1324,6 +1328,7 @@ void CNeutrinoApp::saveSetup(const char * fname) configfile.setInt32("volume_pos" , g_settings.volume_pos ); configfile.setBool("volume_digits", g_settings.volume_digits); configfile.setInt32("volume_size" , g_settings.volume_size); + configfile.setInt32("volume_external", g_settings.volume_external); configfile.setInt32("menu_pos" , g_settings.menu_pos); configfile.setBool("show_menu_hints" , g_settings.show_menu_hints); configfile.setInt32("infobar_show_sysfs_hdd" , g_settings.infobar_show_sysfs_hdd ); @@ -2840,6 +2845,13 @@ void CNeutrinoApp::RealRun() showInfo(); break; case SNeutrinoSettings::VOLUME: +#if HAVE_ARM_HARDWARE + if (g_settings.hdmi_cec_volume) + { + (msg == (neutrino_msg_t) g_settings.key_volumeup || msg == CRCInput::RC_right) ? hdmi_cec::getInstance()->vol_up() : hdmi_cec::getInstance()->vol_down(); + } + else +#endif g_volume->setVolume(msg); break; default: /* SNeutrinoSettings::ZAP */ @@ -2947,6 +2959,13 @@ void CNeutrinoApp::RealRun() showInfo(); break; case SNeutrinoSettings::VOLUME: +#if HAVE_ARM_HARDWARE + if (g_settings.hdmi_cec_volume) + { + (msg == (neutrino_msg_t) g_settings.key_volumeup || msg == CRCInput::RC_right) ? hdmi_cec::getInstance()->vol_up() : hdmi_cec::getInstance()->vol_down(); + } + else +#endif g_volume->setVolume(msg); break; default: /* SNeutrinoSettings::ZAP */ @@ -3447,7 +3466,15 @@ int CNeutrinoApp::handleMsg(const neutrino_msg_t _msg, neutrino_msg_data_t data) } else if ((msg == CRCInput::RC_plus) || (msg == CRCInput::RC_minus)) { +#if HAVE_ARM_HARDWARE + if (g_settings.hdmi_cec_volume) + { + (msg == (neutrino_msg_t) g_settings.key_volumeup || msg == CRCInput::RC_right) ? hdmi_cec::getInstance()->vol_up() : hdmi_cec::getInstance()->vol_down(); + } + else +#endif g_volume->setVolume(msg); + return messages_return::handled; } else if( msg == CRCInput::RC_spkr ) { @@ -3457,16 +3484,39 @@ int CNeutrinoApp::handleMsg(const neutrino_msg_t _msg, neutrino_msg_data_t data) } else { //mute +#if HAVE_ARM_HARDWARE + if (g_settings.hdmi_cec_volume) + { + hdmi_cec::getInstance()->toggle_mute(); + } + else +#endif g_audioMute->AudioMute(!current_muted, true); } return messages_return::handled; } else if( msg == CRCInput::RC_mute_on ) { +#if HAVE_ARM_HARDWARE + if (g_settings.hdmi_cec_volume) + { + hdmi_cec::getInstance()->toggle_mute(); + } + else +#endif g_audioMute->AudioMute(true, true); + return messages_return::handled; } else if( msg == CRCInput::RC_mute_off ) { +#if HAVE_ARM_HARDWARE + if (g_settings.hdmi_cec_volume) + { + hdmi_cec::getInstance()->toggle_mute(); + } + else +#endif g_audioMute->AudioMute(false, true); + return messages_return::handled; } else if( msg == CRCInput::RC_analog_on ) { diff --git a/src/system/locals.h b/src/system/locals.h index 06011d758..c573ef3e8 100644 --- a/src/system/locals.h +++ b/src/system/locals.h @@ -472,6 +472,7 @@ typedef enum LOCALE_EXTRA_DBOXINFO_USE, LOCALE_EXTRA_DBOXINFO_USED, LOCALE_EXTRA_EAST, + LOCALE_EXTRA_EXTERNAL_VOLUME, LOCALE_EXTRA_FEC_1_2, LOCALE_EXTRA_FEC_2_3, LOCALE_EXTRA_FEC_2_5, @@ -1082,6 +1083,7 @@ typedef enum LOCALE_MENU_HINT_CEC_MODE, LOCALE_MENU_HINT_CEC_STANDBY, LOCALE_MENU_HINT_CEC_VIEW_ON, + LOCALE_MENU_HINT_CEC_VOLUME, LOCALE_MENU_HINT_CHANNELLIST_ADDITIONAL, LOCALE_MENU_HINT_CHANNELLIST_ENABLESDT, LOCALE_MENU_HINT_CHANNELLIST_EPG_ALIGN, @@ -1135,6 +1137,7 @@ typedef enum LOCALE_MENU_HINT_EVENTLIST_FONTS, LOCALE_MENU_HINT_EVENTLIST_SETUP, LOCALE_MENU_HINT_EXTENDED, + LOCALE_MENU_HINT_EXTERNAL_VOLUME, LOCALE_MENU_HINT_FACTORY, LOCALE_MENU_HINT_FADE, LOCALE_MENU_HINT_FAN_SPEED, @@ -2589,6 +2592,7 @@ typedef enum LOCALE_VIDEOMENU_HDMI_CEC_MODE_TUNER, LOCALE_VIDEOMENU_HDMI_CEC_STANDBY, LOCALE_VIDEOMENU_HDMI_CEC_VIEW_ON, + LOCALE_VIDEOMENU_HDMI_CEC_VOLUME, LOCALE_VIDEOMENU_HUE, LOCALE_VIDEOMENU_LETTERBOX, LOCALE_VIDEOMENU_PANSCAN, diff --git a/src/system/locals_intern.h b/src/system/locals_intern.h index 83c00d917..2089b304c 100644 --- a/src/system/locals_intern.h +++ b/src/system/locals_intern.h @@ -472,6 +472,7 @@ const char * locale_real_names[] = "extra.dboxinfo_use", "extra.dboxinfo_used", "extra.east", + "extra.external_volume", "extra.fec_1_2", "extra.fec_2_3", "extra.fec_2_5", @@ -1082,6 +1083,7 @@ const char * locale_real_names[] = "menu.hint_cec_mode", "menu.hint_cec_standby", "menu.hint_cec_view_on", + "menu.hint_cec_volume", "menu.hint_channellist_additional", "menu.hint_channellist_enablesdt", "menu.hint_channellist_epg_align", @@ -1135,6 +1137,7 @@ const char * locale_real_names[] = "menu.hint_eventlist_fonts", "menu.hint_eventlist_setup", "menu.hint_extended", + "menu.hint_external_volume", "menu.hint_factory", "menu.hint_fade", "menu.hint_fan_speed", @@ -2589,6 +2592,7 @@ const char * locale_real_names[] = "videomenu.hdmi_cec_mode_tuner", "videomenu.hdmi_cec_standby", "videomenu.hdmi_cec_view_on", + "videomenu.hdmi_cec_volume", "videomenu.hue", "videomenu.letterbox", "videomenu.panscan", diff --git a/src/system/settings.h b/src/system/settings.h index a9e43578a..55103eb14 100644 --- a/src/system/settings.h +++ b/src/system/settings.h @@ -229,6 +229,7 @@ struct SNeutrinoSettings int volume_pos; int volume_digits; int volume_size; + int volume_external; int show_mute_icon; int menu_pos; int show_menu_hints; @@ -261,6 +262,7 @@ struct SNeutrinoSettings int hdmi_cec_mode; int hdmi_cec_view_on; int hdmi_cec_standby; + int hdmi_cec_volume; int enabled_video_modes[VIDEOMENU_VIDEOMODE_OPTION_COUNT]; int enabled_auto_modes[VIDEOMENU_VIDEOMODE_OPTION_COUNT]; int cpufreq;