mirror of
https://github.com/rofafor/vdr-plugin-femon.git
synced 2023-10-10 13:36:53 +02:00
132 lines
5.1 KiB
C
132 lines
5.1 KiB
C
/*
|
|
* Frontend Status Monitor plugin for the Video Disk Recorder
|
|
*
|
|
* See the README file for copyright information and how to reach the author.
|
|
*
|
|
*/
|
|
|
|
#include <vdr/menu.h>
|
|
#include "femonconfig.h"
|
|
#include "femontools.h"
|
|
#include "femonsetup.h"
|
|
|
|
cMenuFemonSetup::cMenuFemonSetup()
|
|
{
|
|
debug("%s()\n", __PRETTY_FUNCTION__);
|
|
dispModesM[eFemonModeBasic] = tr("basic");
|
|
dispModesM[eFemonModeTransponder] = tr("transponder");
|
|
dispModesM[eFemonModeStream] = tr("stream");
|
|
dispModesM[eFemonModeAC3] = tr("AC-3");
|
|
|
|
skinsM[eFemonSkinClassic] = tr("Classic");
|
|
skinsM[eFemonSkinElchi] = tr("Elchi");
|
|
|
|
themesM[eFemonThemeClassic] = tr("Classic");
|
|
themesM[eFemonThemeElchi] = tr("Elchi");
|
|
themesM[eFemonThemeSTTNG] = tr("ST:TNG");
|
|
themesM[eFemonThemeDeepBlue] = tr("DeepBlue");
|
|
themesM[eFemonThemeMoronimo] = tr("Moronimo");
|
|
themesM[eFemonThemeEnigma] = tr("Enigma");
|
|
themesM[eFemonThemeEgalsTry] = tr("EgalsTry");
|
|
themesM[eFemonThemeDuotone] = tr("Duotone");
|
|
themesM[eFemonThemeSilverGreen] = tr("SilverGreen");
|
|
themesM[eFemonThemePearlHD] = tr("PearlHD");
|
|
|
|
dataM = FemonConfig;
|
|
SetMenuCategory(mcSetupPlugins);
|
|
Setup();
|
|
}
|
|
|
|
void cMenuFemonSetup::Setup(void)
|
|
{
|
|
int current = Current();
|
|
|
|
Clear();
|
|
helpM.Clear();
|
|
|
|
Add(new cMenuEditBoolItem(tr("Hide main menu entry"), &dataM.hidemenu));
|
|
helpM.Append(tr("Define whether the main menu entry is hidden."));
|
|
|
|
Add(new cMenuEditStraItem(tr("Default display mode"), &dataM.displaymode, eFemonModeMaxNumber, dispModesM));
|
|
helpM.Append(tr("Define the default display mode at startup."));
|
|
|
|
Add(new cMenuEditStraItem(trVDR("Setup.OSD$Skin"), &dataM.skin, eFemonSkinMaxNumber, skinsM));
|
|
helpM.Append(tr("Define the used OSD skin."));
|
|
|
|
Add(new cMenuEditStraItem(trVDR("Setup.OSD$Theme"), &dataM.theme, eFemonThemeMaxNumber, themesM));
|
|
helpM.Append(tr("Define the used OSD theme."));
|
|
|
|
Add(new cMenuEditBoolItem(tr("Position"), &dataM.position, trVDR("bottom"), trVDR("top")));
|
|
helpM.Append(tr("Define the position of OSD."));
|
|
|
|
Add(new cMenuEditIntItem(tr("Downscale OSD size [%]"), &dataM.downscale, 0, 20));
|
|
helpM.Append(tr("Define the downscale ratio for OSD size."));
|
|
|
|
Add(new cMenuEditIntItem(tr("Red limit [%]"), &dataM.redlimit, 1, 50));
|
|
helpM.Append(tr("Define a limit for red bar, which is used to indicate a bad signal."));
|
|
|
|
Add(new cMenuEditIntItem(tr("Green limit [%]"), &dataM.greenlimit, 51, 100));
|
|
helpM.Append(tr("Define a limit for green bar, which is used to indicate a good signal."));
|
|
|
|
Add(new cMenuEditIntItem(tr("OSD update interval [0.1s]"), &dataM.updateinterval, 1, 100));
|
|
helpM.Append(tr("Define an interval for OSD updates. The smaller interval generates higher CPU load."));
|
|
|
|
Add(new cMenuEditBoolItem(tr("Analyze stream"), &dataM.analyzestream));
|
|
helpM.Append(tr("Define whether the DVB stream is analyzed and bitrates calculated."));
|
|
|
|
if (FemonConfig.analyzestream) {
|
|
Add(new cMenuEditIntItem(tr("Calculation interval [0.1s]"), &dataM.calcinterval, 1, 100));
|
|
helpM.Append(tr("Define an interval for calculation. The bigger interval generates more stable values."));
|
|
}
|
|
|
|
Add(new cMenuEditBoolItem(tr("Use SVDRP service"), &dataM.usesvdrp));
|
|
helpM.Append(tr("Define whether the SVDRP service is used in client/server setups."));
|
|
|
|
if (dataM.usesvdrp) {
|
|
Add(new cMenuEditIntItem(tr("SVDRP service port"), &dataM.svdrpport, 1, 65535));
|
|
helpM.Append(tr("Define the port number of SVDRP service."));
|
|
|
|
Add(new cMenuEditStrItem(tr("SVDRP service IP"), dataM.svdrpip, sizeof(dataM.svdrpip), ".1234567890"));
|
|
helpM.Append(tr("Define the IP address of SVDRP service."));
|
|
}
|
|
|
|
SetCurrent(Get(current));
|
|
Display();
|
|
}
|
|
|
|
void cMenuFemonSetup::Store(void)
|
|
{
|
|
debug("%s()\n", __PRETTY_FUNCTION__);
|
|
FemonConfig = dataM;
|
|
SetupStore("HideMenu", FemonConfig.hidemenu);
|
|
SetupStore("DisplayMode", FemonConfig.displaymode);
|
|
SetupStore("Skin", FemonConfig.skin);
|
|
SetupStore("Theme", FemonConfig.theme);
|
|
SetupStore("Position", FemonConfig.position);
|
|
SetupStore("Downscale", FemonConfig.downscale);
|
|
SetupStore("RedLimit", FemonConfig.redlimit);
|
|
SetupStore("GreenLimit", FemonConfig.greenlimit);
|
|
SetupStore("UpdateInterval", FemonConfig.updateinterval);
|
|
SetupStore("AnalStream", FemonConfig.analyzestream);
|
|
SetupStore("CalcInterval", FemonConfig.calcinterval);
|
|
SetupStore("UseSvdrp", FemonConfig.usesvdrp);
|
|
SetupStore("ServerPort", FemonConfig.svdrpport);
|
|
SetupStore("ServerIp", FemonConfig.svdrpip);
|
|
}
|
|
|
|
eOSState cMenuFemonSetup::ProcessKey(eKeys Key)
|
|
{
|
|
int oldUsesvdrp = dataM.usesvdrp;
|
|
int oldAnalyzestream = dataM.analyzestream;
|
|
|
|
eOSState state = cMenuSetupPage::ProcessKey(Key);
|
|
|
|
if (Key != kNone && (dataM.analyzestream != oldAnalyzestream || dataM.usesvdrp != oldUsesvdrp))
|
|
Setup();
|
|
|
|
if ((Key == kInfo) && (state == osUnknown) && (Current() < helpM.Size()))
|
|
return AddSubMenu(new cMenuText(cString::sprintf("%s - %s '%s'", tr("Help"), trVDR("Plugin"), PLUGIN_NAME_I18N), helpM[Current()]));
|
|
|
|
return state;
|
|
}
|