summaryrefslogtreecommitdiff
path: root/setup.c
diff options
context:
space:
mode:
authorlouis <louis.braun@gmx.de>2015-08-14 17:23:12 +0200
committerlouis <louis.braun@gmx.de>2015-08-14 17:23:12 +0200
commita5d7d6437dbc5a72279b1f5fbfb21d4c337dedc9 (patch)
tree70178c268fdaf46deb55f454e00240b3916cedb9 /setup.c
parentf44aabb7ac97f329645bab102849150f5bc30983 (diff)
downloadvdr-plugin-skindesigner-a5d7d6437dbc5a72279b1f5fbfb21d4c337dedc9.tar.gz
vdr-plugin-skindesigner-a5d7d6437dbc5a72279b1f5fbfb21d4c337dedc9.tar.bz2
added possibility to define help texts for skin setup parameters
Diffstat (limited to 'setup.c')
-rw-r--r--setup.c47
1 files changed, 40 insertions, 7 deletions
diff --git a/setup.c b/setup.c
index f8fae07..3b6c432 100644
--- a/setup.c
+++ b/setup.c
@@ -1,5 +1,6 @@
#include <vdr/interface.h>
#include "libcore/curlfuncs.h"
+#include <vdr/menu.h>
#include "setup.h"
// --- cInstallManager -----------------------------------------------------------
@@ -386,6 +387,12 @@ cOsdMenu(*cString::sprintf("%s: %s \"%s\" %s", trVDR("Setup"), tr("Skin"), skin.
SetMenuCategory(mcPluginSetup);
this->skin = skin;
this->menu = menu;
+ buttonRed = tr("Update");
+ buttonGreen = tr("Help");
+ buttonYellow = tr("Delete Skin");
+ showRed = false;
+ showYellow = false;
+ hadHelp = false;
Set();
}
@@ -397,6 +404,9 @@ eOSState cSkindesignerSkinSetup::ProcessKey(eKeys Key) {
if (state == osEnd)
return osEnd;
state = cOsdMenu::ProcessKey(Key);
+ if (Key == kUp || Key == kDown) {
+ ShowButtons(Current());
+ }
if (state == osUnknown) {
switch (Key) {
case kOk: {
@@ -443,6 +453,17 @@ eOSState cSkindesignerSkinSetup::ProcessKey(eKeys Key) {
state = osContinue;
break;
}
+ case kGreen: {
+ string helpText = helpTexts[Current()];
+ if (helpText.size() == 0) {
+ state = osContinue;
+ break;
+ }
+ const char* ItemText = Get(Current())->Text();
+ string title = *cString::sprintf("%s - %s", buttonGreen.c_str(), ItemText);
+ state = AddSubMenu(new cMenuText(title.c_str(), helpText.c_str()));
+ break;
+ }
default:
break;
}
@@ -457,13 +478,11 @@ void cSkindesignerSkinSetup::Set(void) {
}
cSkinRepo *repo = config.GetSkinRepo(skin);
- if (repo) {
- if (repo->Type() == rtGit)
- SetHelp(tr("Update"), NULL, tr("Delete Skin"), NULL);
- else
- SetHelp(NULL, NULL, tr("Delete Skin"), NULL);
- }
-
+ if (repo && repo->Type() == rtGit)
+ showRed = true;
+ if (repo)
+ showYellow = true;
+
setupMenu->InitParameterIterator();
cSkinSetupParameter *param = NULL;
while (param = setupMenu->GetNextParameter(false)) {
@@ -474,13 +493,27 @@ void cSkindesignerSkinSetup::Set(void) {
} else if (param->type == sptString) {
Add(new cMenuEditStraItem(param->displayText.c_str(), &param->value, param->numOptions, param->optionsTranslated));
}
+ helpTexts.push_back(param->helpText);
}
setupMenu->InitSubmenuIterator();
cSkinSetupMenu *subMenu = NULL;
while (subMenu = setupMenu->GetNextSubMenu(false)) {
Add(new cSkinSetupSubMenu(subMenu->GetName(), subMenu->GetDisplayText()));
+ helpTexts.push_back("");
}
+
+ ShowButtons(0, true);
+}
+
+void cSkindesignerSkinSetup::ShowButtons(int current, bool force) {
+ bool showGreen = helpTexts[current].size() > 0 ? true : false;
+ bool changed = false;
+ if ((hadHelp && !showGreen) || (!hadHelp && showGreen))
+ changed = true;
+ hadHelp = showGreen;
+ if (changed || force)
+ SetHelp(showRed ? buttonRed.c_str() : "", showGreen ? buttonGreen.c_str() : "", showYellow ? buttonYellow.c_str() : "", NULL);
}
// --- cSkindesignerSkinPreview -----------------------------------------------------------