summaryrefslogtreecommitdiff
path: root/vdrboblight.c
diff options
context:
space:
mode:
Diffstat (limited to 'vdrboblight.c')
-rw-r--r--vdrboblight.c257
1 files changed, 35 insertions, 222 deletions
diff --git a/vdrboblight.c b/vdrboblight.c
index b9c0dc7..d48fe99 100644
--- a/vdrboblight.c
+++ b/vdrboblight.c
@@ -16,154 +16,11 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-
#include <vdr/plugin.h>
+#include "vdrboblight.h"
-#include "config.h"
-#include "ambiservice.h"
-#include "ambithread.h"
-
-//***************************************************************************
-//
-//***************************************************************************
-
-static const char *VERSION = "0.0.2";
-static const char *DESCRIPTION = "Boblight with data from softhddevice";
-static const char *MAINMENUENTRY = "Boblight";
-
-//***************************************************************************
-// Setup
-//***************************************************************************
-
-class cAmbiSetup : public cMenuSetupPage, public cAmbiService
-{
- public:
-
- cAmbiSetup();
-
- protected:
-
- virtual void Setup();
- virtual eOSState ProcessKey(eKeys Key);
- virtual void Store();
-
- const char* cineBars[cbCount];
- const char* seduRGBOrders[6];
- int rgbOrderIndex;
-};
-
-//***************************************************************************
-// Plugin
-//***************************************************************************
-
-class cPluginBoblight : public cPlugin
-{
- public:
-
- cPluginBoblight(void);
- virtual ~cPluginBoblight();
- virtual const char* Version(void) { return VERSION; }
- virtual const char* Description(void) { return DESCRIPTION; }
- virtual const char* CommandLineHelp(void) { return 0; }
- virtual bool ProcessArgs(int argc, char* argv[]);
- virtual bool Initialize(void);
- virtual bool Start(void);
- virtual void Stop(void);
- virtual void Housekeeping(void) { };
- virtual void MainThreadHook(void) { };
- virtual cString Active(void);
- virtual time_t WakeupTime(void);
- virtual const char* MainMenuEntry(void) { return cfg.showMainmenu ? MAINMENUENTRY : 0; }
- virtual cOsdObject* MainMenuAction(void);
- virtual cMenuSetupPage* SetupMenu(void) { return new cAmbiSetup; }
- virtual bool SetupParse(const char* Name, const char* Value);
- virtual bool Service(const char* Id, void* Data = NULL);
- virtual const char** SVDRPHelpPages(void);
- virtual cString SVDRPCommand(const char* Command, const char* Option, int &ReplyCode);
-
- int startAtmo();
- int stopAtmo();
- cAmbiThread* update;
-
- int isRunning()
- {
- if (!update)
- return no;
-
- return update->isRunning();
- }
-};
-
-//***************************************************************************
-// Plugins Main Menu
-//***************************************************************************
-
-class cSeduPluginMenu : public cMenuSetupPage
-{
- public:
-
- cSeduPluginMenu(const char* title, cPluginBoblight* aPlugin);
- virtual ~cSeduPluginMenu() { };
-
- virtual eOSState ProcessKey(eKeys key);
-
- protected:
-
- void Store() { }
- cPluginBoblight* plugin;
-};
-
-cSeduPluginMenu::cSeduPluginMenu(const char* title, cPluginBoblight* aPlugin)
-{
- SetTitle(title ? title : "");
- plugin = aPlugin;
-
- Clear();
-
- cOsdMenu::Add(new cMenuEditStraItem(tr("View Mode"),
- (int*)&cfg.viewMode,
- (int)cAmbiService::vmCount,
- cAmbiService::viewModes));
-
- Add(new cMenuEditIntItem(tr("Fixed Color Red"), &cfg.fixedR, 0, 255));
- Add(new cMenuEditIntItem(tr("Fixed Color Green"), &cfg.fixedG, 0, 255));
- Add(new cMenuEditIntItem(tr("Fixed Color Blue"), &cfg.fixedB, 0, 255));
-
- SetHelp(0, 0, 0, 0);
-
- Display();
-}
-
-//***************************************************************************
-// Process Key
-//***************************************************************************
-
-eOSState cSeduPluginMenu::ProcessKey(eKeys key)
-{
- eOSState state = cOsdMenu::ProcessKey(key);
-
- if (key == kLeft || key == kRight)
- {
- if (cfg.viewMode == cAmbiService::vmDetached && plugin->isRunning())
- plugin->stopAtmo();
- else if (cfg.viewMode != cAmbiService::vmDetached && !plugin->isRunning())
- plugin->startAtmo();
- }
-
- if (state != osUnknown)
- return state;
-
- if (key == kOk)
- {
- SetupStore("FixedColorRed", cfg.fixedR);
- SetupStore("FixedColorGreen", cfg.fixedG);
- SetupStore("FixedColorBlue", cfg.fixedB);
- SetupStore("ViewMode", (int)cfg.viewMode);
-
- return osEnd;
- }
- return state;
-}
+#include "setup_menu.h"
+#include "main_menu.h"
//***************************************************************************
// Plugin
@@ -221,6 +78,29 @@ int cPluginBoblight::stopAtmo()
return done;
}
+void cPluginBoblight::Save() {
+ cfg.dirty = 1;
+ SetupStore("LogLevel", cfg.loglevel);
+ SetupStore("ShowMainmenu", cfg.showMainmenu);
+ SetupStore("StartupViewMode", cfg.startupViewMode);
+
+ SetupStore("DetectCineBars", cfg.detectCineBars);
+
+ SetupStore("Updaterate", cfg.frequence);
+ SetupStore("Threshold", cfg.threshold);
+ SetupStore("Gamma", cfg.gamma);
+ SetupStore("Value", cfg.value);
+ SetupStore("Saturation", cfg.saturation);
+ SetupStore("Speed", cfg.speed);
+ SetupStore("Autospeed", cfg.autospeed);
+ SetupStore("Interpolation", cfg.interpolation);
+ SetupStore("Priority", cfg.priority);
+
+ SetupStore("FixedColorRed", cfg.fixedR);
+ SetupStore("FixedColorGreen", cfg.fixedG);
+ SetupStore("FixedColorBlue", cfg.fixedB);
+}
+
void cPluginBoblight::Stop(void)
{
stopAtmo();
@@ -236,16 +116,23 @@ time_t cPluginBoblight::WakeupTime(void)
return 0;
}
+cMenuSetupPage* cPluginBoblight::SetupMenu(void) {
+ return new cAmbiSetup(this);
+}
+
cOsdObject* cPluginBoblight::MainMenuAction(void)
{
- return new cSeduPluginMenu(MAINMENUENTRY, this);
+ return new cBoblightPluginMenu(MAINMENUENTRY, this);
}
bool cPluginBoblight::SetupParse(const char* Name, const char* Value)
{
if (!strcasecmp(Name, "LogLevel")) cfg.loglevel = atoi(Value);
else if (!strcasecmp(Name, "ShowMainmenu")) cfg.showMainmenu = atoi(Value);
- else if (!strcasecmp(Name, "ViewMode")) cfg.viewMode = (cAmbiService::ViewMode)atoi(Value);
+ else if (!strcasecmp(Name, "StartupViewMode")) {
+ cfg.startupViewMode = atoi(Value);
+ cfg.viewMode = cfg.startupViewMode;
+ }
else if (!strcasecmp(Name, "DetectCineBars")) cfg.detectCineBars = (cAmbiService::Cinebars)atoi(Value);
@@ -276,9 +163,6 @@ bool cPluginBoblight::Service(const char* Id, void* Data)
cString cPluginBoblight::SVDRPCommand(const char* Command, const char* Option, int &ReplyCode)
{
- if (!update)
- return "Error: Plugin not initialized!";
-
if (!strcasecmp(Command, "MODE"))
{
if (Option && strcasecmp(Option, "atmo") == 0)
@@ -333,77 +217,6 @@ const char** cPluginBoblight::SVDRPHelpPages(void)
return HelpPages;
}
-//***************************************************************************
-// Class Setup Menu
-//***************************************************************************
-//***************************************************************************
-// Object
-//***************************************************************************
-
-cAmbiSetup::cAmbiSetup()
-{
- cineBars[0] = "Horizontal";
- cineBars[1] = "Vertical";
- cineBars[2] = "Both";
-
- Setup();
-}
-
-//***************************************************************************
-// Setup
-//***************************************************************************
-
-void cAmbiSetup::Setup()
-{
- Clear();
-
- Add(new cMenuEditIntItem(tr("Log level"), &cfg.loglevel, 0, 3));
- Add(new cMenuEditBoolItem(tr("Show mainmenu"), &cfg.showMainmenu));
-
- Add(new cMenuEditIntItem(tr("Updaterate [Hz]"), &cfg.frequence, 1, 100));
-
- Add(new cMenuEditStraItem(tr("Detect cinema bars"), (int*)&cfg.detectCineBars, 3, cineBars));
-
- Add(new cMenuEditIntItem(tr("Threshold (0-255)"), &cfg.threshold, 0, 255));
- Add(new cMenuEditIntItem(tr("Gamma (0-10.0)"), &cfg.gamma, 0, 100));
- Add(new cMenuEditIntItem(tr("Value (0-20.0)"), &cfg.value, 0, 200));
- Add(new cMenuEditIntItem(tr("Saturation (0-20.0)"), &cfg.saturation, 0, 200));
- Add(new cMenuEditIntItem(tr("Speed (0-100)"), &cfg.speed, 0, 100));
- Add(new cMenuEditIntItem(tr("Autospeed (0-100)"), &cfg.autospeed, 0, 100));
- Add(new cMenuEditBoolItem(tr("Interpolation"), &cfg.interpolation));
- Add(new cMenuEditIntItem(tr("Priority 0=Highest, 255=Lowest"), &cfg.priority, 0, 255));
-}
-
-eOSState cAmbiSetup::ProcessKey(eKeys key)
-{
- eOSState state = cMenuSetupPage::ProcessKey(key);
-
- return state;
-}
-
-void cAmbiSetup::Store()
-{
- cfg.dirty = 1;
- SetupStore("LogLevel", cfg.loglevel);
- SetupStore("ShowMainmenu", cfg.showMainmenu);
- SetupStore("ViewMode", (int)cfg.viewMode);
-
- SetupStore("DetectCineBars", cfg.detectCineBars);
-
- SetupStore("Updaterate", cfg.frequence);
- SetupStore("Threshold", cfg.threshold);
- SetupStore("Gamma", cfg.gamma);
- SetupStore("Value", cfg.value);
- SetupStore("Saturation", cfg.saturation);
- SetupStore("Speed", cfg.speed);
- SetupStore("Autospeed", cfg.autospeed);
- SetupStore("Interpolation", cfg.interpolation);
- SetupStore("Priority", cfg.priority);
-
- SetupStore("FixedColorRed", cfg.fixedR);
- SetupStore("FixedColorGreen", cfg.fixedG);
- SetupStore("FixedColorBlue", cfg.fixedB);
-}
//***************************************************************************
// VDR Internal