Hallo alle miteinander,
ich wollte in meinem Plugin ein SubMenu erstellen, in welchem man verschiedene Eingaben machen kann. Unter anderem auch Texteingaben via cMenuEditStrItems.
Die Mimimale Klasse dafür sieht folgendermaßen aus:
class cMenuEditGroup : public cOsdMenu
{
private:
static char allowed[];
public:
char* m_item_name;
int m_item_name_len;
cMenuEditStrItem* m_item;
cMenuEditGroup();
virtual ~cMenuEditGroup();
virtual eOSState ProcessKey (eKeys Key);
virtual void Set();
};
Alles anzeigen
und die Implementierung
/*
* cMenuEditGroup
*/
char cMenuEditGroup::allowed[] = " abcdefghijklmnopqrstuvwxyz0123456789ß@!?()[]{}<>-_,;.:+*=#~&%$§\"'`";
cMenuEditGroup::cMenuEditGroup():
cOsdMenu(tr("edit"))
{
m_item_name_len = 255;
m_item_name = new char[m_item_name_len+1];
m_item = new cMenuEditStrItem("Name", m_item_name, 255, FileNameChars);
strcpy(m_item_name, "New Name");
Set();
}
cMenuEditGroup::~cMenuEditGroup()
{
delete m_item_name;
}
void cMenuEditGroup::Set()
{
Clear();
Add(m_item);
SetHelp(NULL);
Display();
}
eOSState cMenuEditGroup::ProcessKey(eKeys Key)
{
cout << "eOSState cMenuEditGroup::ProcessKey( " << cKey::ToString(Key)<< " )" << endl;
eOSState state = cOsdMenu::ProcessKey(Key);
if (state == osUnknown) {
switch (Key) {
case kOk:
cout << "Current m_item_name " << m_item_name << endl;
break;
default:
break;
}
}
return state;
}
Alles anzeigen
wobei der Inhalt von ProcessKey der MenuSetup Klasse entnommen ist.
Wenn ich das so nehme wie's hier steht, sehe ich zwar einen String Edit Eintrag mit dem Namen "Name", aber der hat keinen Wert( da sollte ja eigentlich "New Name" stehen) , bzw. sehe ich den nicht. Wenn ich nämlich nach Rechts drücke, erscheint für die Hilfe Buttons ABC/abc, Insert , usw... Und wenn ich da ein paar mal hoch und Runter drücke, und mittels Back Taste wieder zurückgehe, und mir mit Ok den Namen anzeigen lasse, dann steht da tatsächlich der geänderte Name. Aber warum sehe ich den Inhalt nicht? Im Setup Menü funktioniert das doch auch!?
Hat jemand schon mal das selbe Problem gehabt, oder selbst mit dem cMenuEditStr Feld ausserhalb des Setup Menüs gearbeitet?
P.S.
Ich verwende übrigens VDR 1.4.7, falls das eine Rolle spielt.