summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile3
-rw-r--r--skinnopacity.c5
-rw-r--r--status.c14
-rw-r--r--status.h24
4 files changed, 44 insertions, 2 deletions
diff --git a/Makefile b/Makefile
index ea4e754..0490701 100644
--- a/Makefile
+++ b/Makefile
@@ -65,7 +65,8 @@ endif
### The object files (add further files here):
OBJS = $(PLUGIN).o config.o detailview.o displaychannel.o displaymenu.o displaymenuview.o displaymessage.o displayreplay.o displaytracks.o displayvolume.o displaychannelview.o fontmanager.o \
- geometrymanager.o imagecache.o imagemagickwrapper.o imagescaler.o helpers.o imageloader.o menudetailview.o menuitem.o messagebox.o nopacity.o setup.o textwindow.o timers.o volumebox.o
+ geometrymanager.o imagecache.o imagemagickwrapper.o imagescaler.o helpers.o imageloader.o menudetailview.o menuitem.o messagebox.o nopacity.o setup.o status.o textwindow.o timers.o \
+ volumebox.o
### The main target:
diff --git a/skinnopacity.c b/skinnopacity.c
index ece13bb..205af1b 100644
--- a/skinnopacity.c
+++ b/skinnopacity.c
@@ -10,7 +10,7 @@
#include "config.h"
#include "nopacity.h"
#include "setup.h"
-
+#include "status.h"
#if defined(APIVERSNUM) && APIVERSNUM < 10734
#error "VDR-1.7.34 API version or greater is required!"
@@ -49,10 +49,12 @@ public:
cPluginNopacity::cPluginNopacity(void)
{
+ statusMonitor = NULL;
}
cPluginNopacity::~cPluginNopacity()
{
+ delete statusMonitor;
}
const char *cPluginNopacity::CommandLineHelp(void)
@@ -106,6 +108,7 @@ bool cPluginNopacity::Start(void) {
} else
dsyslog("nopacity: TrueColor OSD found");
+ statusMonitor = new cNopacityStatusMonitor;
return new cNopacity();
}
diff --git a/status.c b/status.c
new file mode 100644
index 0000000..2464a49
--- /dev/null
+++ b/status.c
@@ -0,0 +1,14 @@
+/*
+ * status.c: Keeping track of several VDR status settings
+ */
+
+#include "status.h"
+
+cNopacityStatusMonitor *statusMonitor;
+
+void cNopacityStatusMonitor::SetVolume(int volume, bool absolute)
+{ // The volume has been set to the given value, either
+ // absolutely or relative to the current volume.
+
+ Volume = absolute ? volume : Volume + volume;
+}
diff --git a/status.h b/status.h
new file mode 100644
index 0000000..2484006
--- /dev/null
+++ b/status.h
@@ -0,0 +1,24 @@
+/*
+ * status.h: Keeping track of several VDR status settings
+ */
+
+#ifndef __STATUS_H_
+#define __STATUS_H_
+
+#include <vdr/status.h>
+
+class cNopacityStatusMonitor : public cStatus
+{
+private:
+ int Volume = 0;
+protected:
+ virtual void SetVolume(int Volume, bool Absolute);
+public:
+ cNopacityStatusMonitor(void) {};
+ ~cNopacityStatusMonitor(void) {};
+ int GetVolume(void) { return Volume; };
+};
+
+extern cNopacityStatusMonitor *statusMonitor;
+
+#endif