diff options
Diffstat (limited to 'vdrboblight.c')
| -rw-r--r-- | vdrboblight.c | 257 |
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 |
