MoviePlayer: Rework enable/disable of osd time, file time and mute icon

This commit is contained in:
M. Liebmann
2016-12-05 14:19:06 +01:00
parent fd21f57406
commit 2045e91c47
2 changed files with 46 additions and 33 deletions

View File

@@ -83,6 +83,8 @@ extern CVolume* g_volume;
#define TIMESHIFT_SECONDS 3
#define ISO_MOUNT_POINT "/media/iso"
#define MUTE true
#define NO_MUTE false
CMoviePlayerGui* CMoviePlayerGui::instance_mp = NULL;
CMoviePlayerGui* CMoviePlayerGui::instance_bg = NULL;
@@ -204,6 +206,8 @@ void CMoviePlayerGui::Init(void)
blockedFromPlugin = false;
m_screensaver = false;
m_idletime = time(NULL);
m_mode = CTimeOSD::MODE_HIDE;
m_restore = false;
}
void CMoviePlayerGui::cutNeutrino()
@@ -458,10 +462,31 @@ void CMoviePlayerGui::ClearQueue()
milist.clear();
}
void CMoviePlayerGui::EnableClockAndMute(bool enable)
void CMoviePlayerGui::enableOsdElements(bool mute)
{
CAudioMute::getInstance()->enableMuteIcon(enable);
CInfoClock::getInstance()->enableInfoClock(enable);
if (mute)
CAudioMute::getInstance()->enableMuteIcon(true);
CInfoClock::getInstance()->enableInfoClock(true);
if (m_restore) {
FileTime.setMode(m_mode);
FileTime.update(position, duration);
}
}
void CMoviePlayerGui::disableOsdElements(bool mute)
{
if (mute)
CAudioMute::getInstance()->enableMuteIcon(false);
CInfoClock::getInstance()->enableInfoClock(false);
m_mode = FileTime.getMode();
m_restore = FileTime.IsVisible();
if (m_restore)
FileTime.kill();
}
void CMoviePlayerGui::makeFilename()
@@ -565,7 +590,7 @@ bool CMoviePlayerGui::SelectFile()
}
#endif
else if (isMovieBrowser) {
EnableClockAndMute(false);
disableOsdElements(MUTE);
if (moviebrowser->exec(Path_local.c_str())) {
Path_local = moviebrowser->getCurrentDir();
CFile *file = NULL;
@@ -585,9 +610,9 @@ bool CMoviePlayerGui::SelectFile()
ret = prepareFile(&p_movie_info->file);
} else
menu_ret = moviebrowser->getMenuRet();
EnableClockAndMute(true);
enableOsdElements(MUTE);
} else { // filebrowser
EnableClockAndMute(false);
disableOsdElements(MUTE);
while (ret == false && filebrowser->exec(Path_local.c_str()) == true) {
Path_local = filebrowser->getCurrentDir();
CFile *file = NULL;
@@ -609,7 +634,7 @@ bool CMoviePlayerGui::SelectFile()
}
}
menu_ret = filebrowser->getMenuRet();
EnableClockAndMute(true);
enableOsdElements(MUTE);
}
g_settings.network_nfs_moviedir = Path_local;
@@ -1199,7 +1224,7 @@ bool CMoviePlayerGui::PlayFileStart(void)
if (is_file_player)
selectAutoLang();
EnableClockAndMute(true);
enableOsdElements(MUTE);
return res;
}
@@ -1400,7 +1425,7 @@ void CMoviePlayerGui::PlayFileLoop(void)
if (timeshift == TSHIFT_MODE_OFF)
callInfoViewer();
} else if (!filelist.empty()) {
EnableClockAndMute(false);
disableOsdElements(MUTE);
CFileBrowser *playlist = new CFileBrowser();
CFile *pfile = NULL;
pfile = &(*filelist_it);
@@ -1423,7 +1448,7 @@ void CMoviePlayerGui::PlayFileLoop(void)
filelist_it = filelist.begin() + selected;
}
delete playlist;
EnableClockAndMute(true);
enableOsdElements(MUTE);
}
} else if (msg == (neutrino_msg_t) g_settings.mpkey_pause) {
if (playstate == CMoviePlayerGui::PAUSE) {
@@ -1524,14 +1549,12 @@ void CMoviePlayerGui::PlayFileLoop(void)
SetPosition(1000 * (hh * 3600 + mm * 60 + ss), true);
} else if (msg == CRCInput::RC_help) {
disableOsdElements(NO_MUTE);
showHelp();
enableOsdElements(NO_MUTE);
} else if (msg == CRCInput::RC_info) {
if (fromInfoviewer) {
CTimeOSD::mode m_mode = FileTime.getMode();
bool restore = FileTime.IsVisible();
if (restore)
FileTime.kill();
CInfoClock::getInstance()->enableInfoClock(false);
disableOsdElements(NO_MUTE);
#ifdef ENABLE_LUA
if (isLuaPlay && haveLuaInfoFunc) {
int xres = 0, yres = 0, aspectRatio = 0, framerate = -1;
@@ -1550,11 +1573,7 @@ void CMoviePlayerGui::PlayFileLoop(void)
}
#endif
fromInfoviewer = false;
CInfoClock::getInstance()->enableInfoClock(true);
if (restore) {
FileTime.setMode(m_mode);
FileTime.update(position, duration);
}
enableOsdElements(NO_MUTE);
}
else
callInfoViewer();
@@ -2167,19 +2186,9 @@ void CMoviePlayerGui::handleMovieBrowser(neutrino_msg_t msg, int /*position*/)
}
}
} else if (msg == NeutrinoMessages::SHOW_EPG && p_movie_info) {
CTimeOSD::mode m_mode = FileTime.getMode();
bool restore = FileTime.IsVisible();
if (restore)
FileTime.kill();
CInfoClock::getInstance()->enableInfoClock(false);
disableOsdElements(NO_MUTE);
g_EpgData->show_mp(p_movie_info, position, duration);
CInfoClock::getInstance()->enableInfoClock(true);
if (restore) {
FileTime.setMode(m_mode);
FileTime.update(position, duration);
}
enableOsdElements(NO_MUTE);
}
return;
}