summaryrefslogtreecommitdiff
path: root/play.cpp
diff options
context:
space:
mode:
authorJohns <johns98@gmx.net>2013-02-16 15:34:27 +0100
committerJohns <johns98@gmx.net>2013-02-16 15:34:27 +0100
commitad9601c8096044056617a248884774a98845dbcb (patch)
treec581c36561345580d79aadb93f9a01e6626569c8 /play.cpp
parenteb4b8437553ff7666eceadd09c6cb9dd8255380e (diff)
downloadvdr-plugin-play-ad9601c8096044056617a248884774a98845dbcb.tar.gz
vdr-plugin-play-ad9601c8096044056617a248884774a98845dbcb.tar.bz2
Add support to disable/enable VDR remotes.
Diffstat (limited to 'play.cpp')
-rw-r--r--play.cpp59
1 files changed, 46 insertions, 13 deletions
diff --git a/play.cpp b/play.cpp
index 8fc1808..04a63c0 100644
--- a/play.cpp
+++ b/play.cpp
@@ -60,6 +60,7 @@ static const char *MAINMENUENTRY = trNOOP("Play");
//////////////////////////////////////////////////////////////////////////////
static char ConfigHideMainMenuEntry; ///< hide main menu entry
+static char ConfigDisableRemote; ///< disable remote during external play
//////////////////////////////////////////////////////////////////////////////
// C Callbacks
@@ -132,6 +133,25 @@ extern "C" void FeedKeyPress(const char *keymap, const char *key, int repeat,
}
}
+/**
+** Disable remotes.
+*/
+void RemoteDisable(void)
+{
+ dsyslog("[play]: remote disabled\n");
+ cRemote::SetEnabled(false);
+}
+
+/**
+** Enable remotes.
+*/
+void RemoteEnable(void)
+{
+ dsyslog("[play]: remote enabled\n");
+ cRemote::SetEnabled(false);
+ cRemote::SetEnabled(true);
+}
+
//////////////////////////////////////////////////////////////////////////////
// C Callbacks for diashow
//////////////////////////////////////////////////////////////////////////////
@@ -206,12 +226,15 @@ class cMyPlayer:public cPlayer
cMyPlayer::cMyPlayer(const char *filename)
:cPlayer(pmExtern_THIS_SHOULD_BE_AVOIDED)
{
- dsyslog("play/%s: '%s'\n", __FUNCTION__, filename);
+ dsyslog("[play]%s: '%s'\n", __FUNCTION__, filename);
PlayerVolume = cDevice::CurrentVolume();
- dsyslog("play: initial volume %d\n", PlayerVolume);
+ dsyslog("{play]: initial volume %d\n", PlayerVolume);
FileName = strdup(filename);
+ if (ConfigDisableRemote) {
+ RemoteDisable();
+ }
}
/**
@@ -219,10 +242,13 @@ cMyPlayer::cMyPlayer(const char *filename)
*/
cMyPlayer::~cMyPlayer()
{
- dsyslog("%s: end\n", __FUNCTION__);
+ dsyslog("{play]%s: end\n", __FUNCTION__);
PlayerStop();
free(FileName);
+ if (ConfigDisableRemote) {
+ RemoteEnable();
+ }
}
/**
@@ -281,7 +307,7 @@ cMyStatus::cMyStatus(void)
*/
void cMyStatus::SetVolume(int volume, bool absolute)
{
- dsyslog("play: volume %d %s\n", volume, absolute ? "abs" : "rel");
+ dsyslog("[play]: volume %d %s\n", volume, absolute ? "abs" : "rel");
if (absolute) {
Volume = volume;
@@ -364,7 +390,7 @@ void cMyControl::ShowProgress(void)
*/
void cMyControl::Show(void)
{
- dsyslog("%s:\n", __FUNCTION__);
+ dsyslog("[play]%s:\n", __FUNCTION__);
if (!Display) {
ShowProgress();
}
@@ -394,7 +420,7 @@ cMyControl::cMyControl(const char *filename)
*/
cMyControl::~cMyControl()
{
- dsyslog("%s\n", __FUNCTION__);
+ dsyslog("[play]%s\n", __FUNCTION__);
delete Player;
delete Display;
@@ -410,7 +436,7 @@ cMyControl::~cMyControl()
*/
void cMyControl::Hide(void)
{
- dsyslog("%s:\n", __FUNCTION__);
+ dsyslog("[play]%s:\n", __FUNCTION__);
if (Display) {
delete Display;
@@ -429,10 +455,10 @@ eOSState cMyControl::ProcessKey(eKeys key)
{
eOSState state;
- dsyslog("%s: %d\n", __FUNCTION__, key);
+ dsyslog("[play]%s: %d\n", __FUNCTION__, key);
if (!PlayerIsRunning()) { // check if player is still alive
- dsyslog("play: player died\n");
+ dsyslog("[play]: player died\n");
Hide();
//FIXME: Stop();
return osEnd;
@@ -606,7 +632,7 @@ eOSState cMyControl::ProcessKey(eKeys key)
*/
static void PlayFile(const char *filename)
{
- dsyslog("play: play file '%s'\n", filename);
+ dsyslog("[play]: play file '%s'\n", filename);
cControl::Launch(new cMyControl(filename));
}
@@ -1127,7 +1153,7 @@ void cMyOsd::Flush(void)
if (OsdLevel >= OSD_LEVEL_SUBTITLES) {
OsdClear();
cMyOsd::Dirty = 1;
- dsyslog("[softhddev]%s: subtitle clear\n", __FUNCTION__);
+ dsyslog("[play]%s: subtitle clear\n", __FUNCTION__);
}
if (!IsTrueColor()) {
@@ -1287,6 +1313,7 @@ class cMyMenuSetupPage:public cMenuSetupPage
/// local copies of global setup variables:
/// @{
int HideMainMenuEntry;
+ int DisableRemote;
/// @}
virtual void Store(void);
@@ -1316,9 +1343,12 @@ eOSState cMyMenuSetupPage::ProcessKey(eKeys key)
cMyMenuSetupPage::cMyMenuSetupPage(void)
{
HideMainMenuEntry = ConfigHideMainMenuEntry;
+ DisableRemote = ConfigDisableRemote;
Add(new cMenuEditBoolItem(tr("Hide main menu entry"), &HideMainMenuEntry,
trVDR("no"), trVDR("yes")));
+ Add(new cMenuEditBoolItem(tr("Disable remote"), &DisableRemote,
+ trVDR("no"), trVDR("yes")));
}
/**
@@ -1328,6 +1358,7 @@ void cMyMenuSetupPage::Store(void)
{
SetupStore("HideMainMenuEntry", ConfigHideMainMenuEntry =
HideMainMenuEntry);
+ SetupStore("DisableRemote", ConfigDisableRemote = DisableRemote);
}
//////////////////////////////////////////////////////////////////////////////
@@ -1495,8 +1526,6 @@ bool cMyPlugin::Initialize(void)
*/
const char *cMyPlugin::MainMenuEntry(void)
{
- //dsyslog("[play]%s:\n", __FUNCTION__);
-
return ConfigHideMainMenuEntry ? NULL : tr(MAINMENUENTRY);
}
@@ -1620,6 +1649,10 @@ bool cMyPlugin::SetupParse(const char *name, const char *value)
ConfigHideMainMenuEntry = atoi(value);
return true;
}
+ if (!strcasecmp(name, "DisableRemote")) {
+ ConfigDisableRemote = atoi(value);
+ return true;
+ }
#if 0
if (!strncasecmp(name, "Dia.", 4)) {
return DiaConfigParse(name + 4, value);