diff --git a/data/locale/deutsch.locale b/data/locale/deutsch.locale index 355650eac..18562e1cd 100644 --- a/data/locale/deutsch.locale +++ b/data/locale/deutsch.locale @@ -873,8 +873,7 @@ keybindingmenu.volumedown Leiser keybindingmenu.volumeup Lauter keybindingmenu.zaphistory Zapping-History Bouquet keychooser.head Neue Taste einstellen -keychooser.text1 Bitte Taste drücken -keychooser.text2 Zum Abbrechen warten ... +keychooser.text Neue Taste drücken.\nZum Abbrechen ein paar Sekunden warten ... keychoosermenu.currentkey Derzeitige Taste keychoosermenu.setnew Neue Taste einstellen keychoosermenu.setnone Keine Taste diff --git a/data/locale/english.locale b/data/locale/english.locale index e539031e4..297774bf0 100644 --- a/data/locale/english.locale +++ b/data/locale/english.locale @@ -872,9 +872,8 @@ keybindingmenu.volume Volume keybindingmenu.volumedown Decrease keybindingmenu.volumeup Increase keybindingmenu.zaphistory Zapping History Bouquet -keychooser.head Setup new Key -keychooser.text1 Please press the new key -keychooser.text2 wait a few seconds for abort +keychooser.head Setup new key +keychooser.text Press new key.\nWait a few seconds to abort ... keychoosermenu.currentkey current key keychoosermenu.setnew setup new key keychoosermenu.setnone no key diff --git a/src/gui/widget/keychooser.cpp b/src/gui/widget/keychooser.cpp index 4daf7bce0..237d0db83 100644 --- a/src/gui/widget/keychooser.cpp +++ b/src/gui/widget/keychooser.cpp @@ -2,31 +2,21 @@ Neutrino-GUI - DBoxII-Project Copyright (C) 2001 Steffen Hehn 'McClean' - Homepage: http://dbox.cyberphoria.org/ - - Kommentar: - - Diese GUI wurde von Grund auf neu programmiert und sollte nun vom - Aufbau und auch den Ausbaumoeglichkeiten gut aussehen. Neutrino basiert - auf der Client-Server Idee, diese GUI ist also von der direkten DBox- - Steuerung getrennt. Diese wird dann von Daemons uebernommen. - License: GPL - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + along with this program. If not, see . */ #ifdef HAVE_CONFIG_H @@ -38,73 +28,36 @@ #include #include -#include -#include -#include - - -class CKeyValue : public CMenuSeparator -{ - std::string the_text; -public: - int keyvalue; - - CKeyValue(int k) : CMenuSeparator(CMenuSeparator::STRING, LOCALE_KEYCHOOSERMENU_CURRENTKEY) - { - keyvalue = k; - }; - - virtual const char * getName(void) - { - the_text = g_Locale->getText(LOCALE_KEYCHOOSERMENU_CURRENTKEY); - the_text += ": "; - the_text += CRCInput::getKeyName(keyvalue); - return the_text.c_str(); - }; -}; - - +#include CKeyChooser::CKeyChooser(unsigned int * const Key, const neutrino_locale_t title, const std::string & Icon) : CMenuWidget(title, Icon) { - frameBuffer = CFrameBuffer::getInstance(); key = Key; keyName = CRCInput::getKeyName(*key); - keyChooser = new CKeyChooserItem(LOCALE_KEYCHOOSER_HEAD, key); - keyDeleter = new CKeyChooserItemNoKey(key); - addItem(new CKeyValue(*key)); + addIntroItems(); + addItem(new CMenuForwarder(LOCALE_KEYCHOOSERMENU_SETNEW, true, NULL, new CKeyChooserItem(LOCALE_KEYCHOOSER_HEAD, key))); + addItem(new CMenuForwarder(LOCALE_KEYCHOOSERMENU_SETNONE, true, NULL, new CKeyChooserItemNoKey(key))); addItem(GenericMenuSeparatorLine); - addItem(GenericMenuBack); - addItem(GenericMenuSeparatorLine); - addItem(new CMenuForwarder(LOCALE_KEYCHOOSERMENU_SETNEW, true, NULL, keyChooser)); - addItem(new CMenuForwarder(LOCALE_KEYCHOOSERMENU_SETNONE, true, NULL, keyDeleter)); + addItem(new CMenuForwarder(LOCALE_KEYCHOOSERMENU_CURRENTKEY, false, keyName)); } - CKeyChooser::~CKeyChooser() { - delete keyChooser; - delete keyDeleter; } - void CKeyChooser::paint() { - (((CKeyValue *)(items[0]))->keyvalue) = *key; keyName = CRCInput::getKeyName(*key); CMenuWidget::paint(); } -//***************************** CKeyChooserItem::CKeyChooserItem(const neutrino_locale_t Name, unsigned int * Key) { name = Name; key = Key; - x = y = width = height = 0; } - int CKeyChooserItem::exec(CMenuTarget* parent, const std::string &) { neutrino_msg_t msg; @@ -117,21 +70,25 @@ int CKeyChooserItem::exec(CMenuTarget* parent, const std::string &) if (parent) parent->hide(); - paint(); + // 10 seconds to choose a new key + int timeout = 10; + + CHintBox * hintbox = new CHintBox(name, LOCALE_KEYCHOOSER_TEXT, HINTBOX_MIN_WIDTH, NEUTRINO_ICON_SETTINGS, NEUTRINO_ICON_HINT_KEYS); + //hintbox->setTimeOut(timeout); + hintbox->paint(); + CFrameBuffer::getInstance()->blit(); + g_RCInput->clearRCMsg(); g_RCInput->setLongPressAny(true); - timeoutEnd = CRCInput::calcTimeoutEnd(g_settings.timing[SNeutrinoSettings::TIMING_MENU] == 0 ? 0xFFFF : g_settings.timing[SNeutrinoSettings -::TIMING_MENU]); + timeoutEnd = CRCInput::calcTimeoutEnd(timeout); get_Message: g_RCInput->getMsgAbsoluteTimeout( &msg, &data, &timeoutEnd ); if (msg != CRCInput::RC_timeout) { -// comparing an unsigned int against >= 0 is senseless! -// if ((msg >= 0) && (msg <= CRCInput::RC_MaxRC)) if ((msg >0 ) && (msg <= CRCInput::RC_MaxRC)) *key = msg; else if (CNeutrinoApp::getInstance()->handleMsg(msg, data) & messages_return::cancel_all) @@ -141,45 +98,6 @@ int CKeyChooserItem::exec(CMenuTarget* parent, const std::string &) } g_RCInput->setLongPressAny(false); - hide(); + hintbox->hide(); return res; } - -void CKeyChooserItem::hide() -{ - CFrameBuffer::getInstance()->paintBackgroundBoxRel(x, y, width, height); - CFrameBuffer::getInstance()->blit(); -} - -void CKeyChooserItem::paint() -{ - int hheight = g_Font[SNeutrinoSettings::FONT_TYPE_MENU_TITLE]->getHeight(); - int mheight = g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getHeight(); - - CFrameBuffer * frameBuffer = CFrameBuffer::getInstance(); - - int tmp; - width = g_Font[SNeutrinoSettings::FONT_TYPE_MENU_TITLE]->getRenderWidth(g_Locale->getText(name)); - tmp = g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getRenderWidth(g_Locale->getText(LOCALE_KEYCHOOSER_TEXT1)); - if (tmp > width) - width = tmp; - tmp = g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getRenderWidth(g_Locale->getText(LOCALE_KEYCHOOSER_TEXT2)); - if (tmp > width) - width = tmp; - width += 20; - width = w_max(width, 0); - height = h_max(hheight + 2 * mheight, 0); - x = frameBuffer->getScreenX() + ((frameBuffer->getScreenWidth()-width) >> 1); - y = frameBuffer->getScreenY() + ((frameBuffer->getScreenHeight()-height) >> 1); - - //frameBuffer->paintBoxRel(x, y , width, hheight , COL_MENUHEAD_PLUS_0 ); - //frameBuffer->paintBoxRel(x, y + hheight, width, height - hheight, COL_MENUCONTENT_PLUS_0); - frameBuffer->paintBoxRel(x, y + hheight, width, height - hheight, COL_MENUCONTENT_PLUS_0, RADIUS_LARGE, CORNER_BOTTOM);//round - - CComponentsHeader header(x, y, width, hheight, g_Locale->getText(name)); - header.paint(CC_SAVE_SCREEN_NO); - - //paint msg... - g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->RenderString(x+ 10, y+ hheight+ mheight, width, g_Locale->getText(LOCALE_KEYCHOOSER_TEXT1), COL_MENUCONTENT_TEXT); - g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->RenderString(x+ 10, y+ hheight+ mheight* 2, width, g_Locale->getText(LOCALE_KEYCHOOSER_TEXT2), COL_MENUCONTENT_TEXT); -} diff --git a/src/gui/widget/keychooser.h b/src/gui/widget/keychooser.h index 8c89140c7..2e5852686 100644 --- a/src/gui/widget/keychooser.h +++ b/src/gui/widget/keychooser.h @@ -2,55 +2,39 @@ Neutrino-GUI - DBoxII-Project Copyright (C) 2001 Steffen Hehn 'McClean' - Homepage: http://dbox.cyberphoria.org/ - - Kommentar: - - Diese GUI wurde von Grund auf neu programmiert und sollte nun vom - Aufbau und auch den Ausbaumoeglichkeiten gut aussehen. Neutrino basiert - auf der Client-Server Idee, diese GUI ist also von der direkten DBox- - Steuerung getrennt. Diese wird dann von Daemons uebernommen. - License: GPL - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + along with this program. If not, see . */ - #ifndef __keychooser__ #define __keychooser__ #include #include -#include #include "menue.h" class CFrameBuffer; -class CKeyChooserItem; -class CKeyChooserItemNoKey; + class CKeyChooser : public CMenuWidget { private: - CFrameBuffer *frameBuffer; unsigned int * key; std::string keyName; - CKeyChooserItem *keyChooser; - CKeyChooserItemNoKey *keyDeleter; public: CKeyChooser(unsigned int * const Key, const neutrino_locale_t title, const std::string & Icon = ""); @@ -63,43 +47,28 @@ class CKeyChooser : public CMenuWidget class CKeyChooserItem : public CMenuTarget { private: - - int x; - int y; - int width; - int height; - neutrino_locale_t name; - unsigned int * key; - - void paint(); - + unsigned int *key; public: - CKeyChooserItem(const neutrino_locale_t Name, unsigned int *Key); - void hide(); int exec(CMenuTarget* parent, const std::string & actionKey); - }; class CKeyChooserItemNoKey : public CMenuTarget { - unsigned int * key; - + unsigned int *key; public: - CKeyChooserItemNoKey(unsigned int *Key) { - key=Key; + key = Key; }; int exec(CMenuTarget* /*parent*/, const std::string & /*actionKey*/) { - *key=(int)CRCInput::RC_nokey; + *key = (unsigned int)CRCInput::RC_nokey; return menu_return::RETURN_REPAINT; } - }; diff --git a/src/system/locals.h b/src/system/locals.h index fd8ad67c3..bede91c8d 100644 --- a/src/system/locals.h +++ b/src/system/locals.h @@ -900,8 +900,7 @@ typedef enum LOCALE_KEYBINDINGMENU_VOLUMEUP, LOCALE_KEYBINDINGMENU_ZAPHISTORY, LOCALE_KEYCHOOSER_HEAD, - LOCALE_KEYCHOOSER_TEXT1, - LOCALE_KEYCHOOSER_TEXT2, + LOCALE_KEYCHOOSER_TEXT, LOCALE_KEYCHOOSERMENU_CURRENTKEY, LOCALE_KEYCHOOSERMENU_SETNEW, LOCALE_KEYCHOOSERMENU_SETNONE, diff --git a/src/system/locals_intern.h b/src/system/locals_intern.h index a9e8544d2..7fc38979a 100644 --- a/src/system/locals_intern.h +++ b/src/system/locals_intern.h @@ -900,8 +900,7 @@ const char * locale_real_names[] = "keybindingmenu.volumeup", "keybindingmenu.zaphistory", "keychooser.head", - "keychooser.text1", - "keychooser.text2", + "keychooser.text", "keychoosermenu.currentkey", "keychoosermenu.setnew", "keychoosermenu.setnone",