diff --git a/src/driver/volume.cpp b/src/driver/volume.cpp index ae5b0abcf..73167b4b6 100644 --- a/src/driver/volume.cpp +++ b/src/driver/volume.cpp @@ -87,16 +87,8 @@ void CVolume::setVolume(const neutrino_msg_t key) } } - if (volscale){ - volscale->hide(); - delete volscale; - volscale = NULL; - } - - if (volscale == NULL){ - volscale = new CVolumeBar(); - volscale->paint(); - } + hideVolscale(); + showVolscale(); neutrino_msg_data_t data; uint64_t timeoutEnd; @@ -111,12 +103,7 @@ void CVolume::setVolume(const neutrino_msg_t key) (sub_chan_keybind && (msg == CRCInput::RC_right || msg == CRCInput::RC_left))) { int dir = (msg == CRCInput::RC_plus || msg == CRCInput::RC_right) ? 1 : -1; if (CNeutrinoApp::getInstance()->isMuted() && (dir > 0 || g_settings.current_volume > 0)) { - if (volscale){ - if (volscale->isPainted()) - volscale->hide(); - delete volscale; - volscale = NULL; - } + hideVolscale(); CAudioMute::getInstance()->AudioMute(false, true); if (mode == CNeutrinoApp::mode_audio) { CAudioPlayerGui *cap = CMediaPlayerMenu::getInstance()->getPlayerInstance(); @@ -137,12 +124,7 @@ void CVolume::setVolume(const neutrino_msg_t key) v = 0; g_settings.current_volume = 0; if (g_settings.show_mute_icon) { - if (volscale) { - if (volscale->isPainted()) - volscale->hide(); - delete volscale; - volscale = NULL; - } + hideVolscale(); CAudioMute::getInstance()->AudioMute(true, true); if (mode == CNeutrinoApp::mode_audio) { CAudioPlayerGui *cap = CMediaPlayerMenu::getInstance()->getPlayerInstance(); @@ -187,12 +169,29 @@ void CVolume::setVolume(const neutrino_msg_t key) } } while (msg != CRCInput::RC_timeout); + hideVolscale(); +} + +bool CVolume::hideVolscale() +{ + bool ret = false; if (volscale) { - if (volscale->isPainted()) + if (volscale->isPainted()) { volscale->hide(); + ret = true; + } delete volscale; volscale = NULL; } + return ret; +} + +void CVolume::showVolscale() +{ + if (volscale == NULL){ + volscale = new CVolumeBar(); + volscale->paint(); + } } bool CVolume::changeNotify(const neutrino_locale_t OptionName, void * data) diff --git a/src/driver/volume.h b/src/driver/volume.h index 4c901c779..ecf019734 100644 --- a/src/driver/volume.h +++ b/src/driver/volume.h @@ -51,6 +51,8 @@ class CVolume : public CChangeObserver void SetCurrentPid(int pid) { apid = pid; } void SetCurrentChannel(t_channel_id id) { channel_id = id; } + bool hideVolscale(); + void showVolscale(); bool changeNotify(const neutrino_locale_t OptionName, void *); }; diff --git a/src/gui/infoviewer.cpp b/src/gui/infoviewer.cpp index f3c27290e..f6aa75332 100644 --- a/src/gui/infoviewer.cpp +++ b/src/gui/infoviewer.cpp @@ -61,6 +61,7 @@ #include #include +#include #include #include @@ -115,6 +116,7 @@ CInfoViewer::CInfoViewer () infoViewerBB->Init(); oldinfo.current_uniqueKey = 0; oldinfo.next_uniqueKey = 0; + isVolscale = false; } CInfoViewer::~CInfoViewer() @@ -475,6 +477,14 @@ void CInfoViewer::showMovieTitle(const int playState, const std::string &Channel const std::string &g_file_epg, const std::string &g_file_epg1, const int duration, const int curr_pos) { + if (g_settings.volume_pos == CVolumeBar::VOLUMEBAR_POS_BOTTOM_LEFT || + g_settings.volume_pos == CVolumeBar::VOLUMEBAR_POS_BOTTOM_RIGHT || + g_settings.volume_pos == CVolumeBar::VOLUMEBAR_POS_BOTTOM_CENTER || + g_settings.volume_pos == CVolumeBar::VOLUMEBAR_POS_HIGHER_CENTER) + isVolscale = CVolume::getInstance()->hideVolscale(); + else + isVolscale = false; + check_channellogo_ca_SettingsChange(); aspectRatio = 0; last_curr_id = last_next_id = 0; @@ -615,6 +625,14 @@ void CInfoViewer::showTitle(t_channel_id chid, const bool calledFromNumZap, int void CInfoViewer::showTitle (const int ChanNum, const std::string & Channel, const t_satellite_position satellitePosition, const t_channel_id new_channel_id, const bool calledFromNumZap, int epgpos, char *pname) { + if (g_settings.volume_pos == CVolumeBar::VOLUMEBAR_POS_BOTTOM_LEFT || + g_settings.volume_pos == CVolumeBar::VOLUMEBAR_POS_BOTTOM_RIGHT || + g_settings.volume_pos == CVolumeBar::VOLUMEBAR_POS_BOTTOM_CENTER || + g_settings.volume_pos == CVolumeBar::VOLUMEBAR_POS_HIGHER_CENTER) + isVolscale = CVolume::getInstance()->hideVolscale(); + else + isVolscale = false; + check_channellogo_ca_SettingsChange(); aspectRatio = 0; last_curr_id = last_next_id = 0; @@ -822,6 +840,9 @@ void CInfoViewer::loop(bool show_dot) neutrino_msg_t msg; neutrino_msg_data_t data; + if (isVolscale) + CVolume::getInstance()->showVolscale(); + while (!(res & (messages_return::cancel_info | messages_return::cancel_all))) { g_RCInput->getMsgAbsoluteTimeout (&msg, &data, &timeoutEnd); @@ -933,8 +954,10 @@ void CInfoViewer::loop(bool show_dot) } } - if (hideIt) + if (hideIt) { + CVolume::getInstance()->hideVolscale(); killTitle (); + } g_RCInput->killTimer (sec_timer_id); fader.Stop(); diff --git a/src/gui/infoviewer.h b/src/gui/infoviewer.h index 2fe467131..d14bbc11c 100644 --- a/src/gui/infoviewer.h +++ b/src/gui/infoviewer.h @@ -151,6 +151,7 @@ class CInfoViewer int BoxEndY; int ChanInfoX; bool showButtonBar; + bool isVolscale; CInfoViewer(); ~CInfoViewer(); diff --git a/src/gui/infoviewer_bb.cpp b/src/gui/infoviewer_bb.cpp index 4d020dc42..3a1c0deaa 100644 --- a/src/gui/infoviewer_bb.cpp +++ b/src/gui/infoviewer_bb.cpp @@ -52,6 +52,7 @@ #include #include #include +#include #include #include @@ -351,6 +352,14 @@ void CInfoViewerBB::showBBButtons(const int modus) int i; bool paint = false; + if (g_settings.volume_pos == CVolumeBar::VOLUMEBAR_POS_BOTTOM_LEFT || + g_settings.volume_pos == CVolumeBar::VOLUMEBAR_POS_BOTTOM_RIGHT || + g_settings.volume_pos == CVolumeBar::VOLUMEBAR_POS_BOTTOM_CENTER || + g_settings.volume_pos == CVolumeBar::VOLUMEBAR_POS_HIGHER_CENTER) + g_InfoViewer->isVolscale = CVolume::getInstance()->hideVolscale(); + else + g_InfoViewer->isVolscale = false; + getBBButtonInfo(); for (i = 0; i < CInfoViewerBB::BUTTON_MAX; i++) { if (tmp_bbButtonInfoText[i] != bbButtonInfo[i].text) { @@ -389,6 +398,8 @@ void CInfoViewerBB::showBBButtons(const int modus) tmp_bbButtonInfoText[i] = bbButtonInfo[i].text; } } + if (g_InfoViewer->isVolscale) + CVolume::getInstance()->showVolscale(); } void CInfoViewerBB::showBBIcons(const int modus, const std::string & icon)