void HystoryLineEdit::keyPressEvent(QKeyEvent* event) { switch (event->key()) { case Qt::Key_Up: { emit keyUpPressed(); break; } case Qt::Key_Down: { emit keyDownPressed(); break; } case Qt::Key_Escape: { emit keyEscPressed(); break; } case Qt::Key_Plus: case Qt::Key_Minus: case Qt::Key_Asterisk: case Qt::Key_Slash: case Qt::Key_Colon: { emit keyOperator(); break; } } QLineEdit::keyPressEvent(event); }
int CStringInput::exec( CMenuTarget* parent, const std::string & ) { neutrino_msg_t msg; neutrino_msg_data_t data; int res = menu_return::RETURN_REPAINT; std::string oldval = *valueString; std::string dispval = *valueString; if (parent) parent->hide(); if (size > (int) valueString->length()) valueString->append(size - valueString->length(), ' '); fb_pixel_t * pixbuf = NULL; if (!parent) { pixbuf = new fb_pixel_t[(width + SHADOW_OFFSET) * (height + SHADOW_OFFSET)]; if (pixbuf) frameBuffer->SaveScreen(x, y, width + SHADOW_OFFSET, height + SHADOW_OFFSET, pixbuf); } paint(); uint64_t timeoutEnd = CRCInput::calcTimeoutEnd(g_settings.timing[SNeutrinoSettings::TIMING_MENU] == 0 ? 0xFFFF : g_settings.timing[SNeutrinoSettings::TIMING_MENU]); bool loop=true; while (loop) { frameBuffer->blit(); if (*valueString != dispval) { CVFD::getInstance()->showMenuText(1,valueString->c_str() , selected+1); dispval = *valueString; } g_RCInput->getMsgAbsoluteTimeout(&msg, &data, &timeoutEnd, true ); if ( msg <= CRCInput::RC_MaxRC ) timeoutEnd = CRCInput::calcTimeoutEnd(g_settings.timing[SNeutrinoSettings::TIMING_MENU] == 0 ? 0xFFFF : g_settings.timing[SNeutrinoSettings::TIMING_MENU]); if ((msg == NeutrinoMessages::EVT_TIMER) && (data == smstimer)) msg = CRCInput::RC_right; if (msg < CRCInput::RC_nokey) g_RCInput->killTimer (smstimer); if (msg==CRCInput::RC_left) { keyLeftPressed(); } else if (msg==CRCInput::RC_right) { keyRightPressed(); } else if (*CRCInput::getUnicodeValue(msg)) { NormalKeyPressed(msg); } else if (msg==CRCInput::RC_backspace) { keyBackspacePressed(); } else if (msg==CRCInput::RC_red) { keyRedPressed(); } else if (msg==CRCInput::RC_yellow) { keyYellowPressed(); } else if ( (msg==CRCInput::RC_green) && (index(validchars, '.') != NULL)) { valueString->at(selected) = '.'; if (selected < (size - 1)) { selected++; paintChar(selected - 1); } paintChar(selected); } else if (msg== CRCInput::RC_blue) { keyBluePressed(); } else if (msg==CRCInput::RC_up) { keyUpPressed(); } else if (msg==CRCInput::RC_down) { keyDownPressed(); } else if (msg==(neutrino_msg_t)g_settings.key_volumeup) { keyPlusPressed(); } else if (msg==(neutrino_msg_t)g_settings.key_volumedown) { keyMinusPressed(); } else if (msg==CRCInput::RC_ok) { loop=false; } else if ( (msg==CRCInput::RC_home) || (msg==CRCInput::RC_timeout) ) { if ((*valueString != oldval) && (ShowMsg(name, LOCALE_MESSAGEBOX_DISCARD, CMessageBox::mbrYes, CMessageBox::mbYes | CMessageBox::mbCancel) == CMessageBox::mbrCancel)) { timeoutEnd = CRCInput::calcTimeoutEnd(g_settings.timing[SNeutrinoSettings::TIMING_MENU] == 0 ? 0xFFFF : g_settings.timing[SNeutrinoSettings::TIMING_MENU]); continue; } *valueString = oldval; loop=false; res = menu_return::RETURN_EXIT_REPAINT; } else if ((msg ==CRCInput::RC_sat) || (msg == CRCInput::RC_favorites)) { } else { int r = handleOthers( msg, data ); if (r & (messages_return::cancel_all | messages_return::cancel_info)) { res = (r & messages_return::cancel_all) ? menu_return::RETURN_EXIT_ALL : menu_return::RETURN_EXIT; loop = false; } else if ( r & messages_return::unhandled ) { if ( CNeutrinoApp::getInstance()->handleMsg( msg, data ) & messages_return::cancel_all ) { loop = false; res = menu_return::RETURN_EXIT_ALL; } } } } if (pixbuf) { frameBuffer->RestoreScreen(x, y, width + SHADOW_OFFSET, height + SHADOW_OFFSET, pixbuf); delete[] pixbuf;//Mismatching allocation and deallocation: pixbuf frameBuffer->blit(); } else hide(); *valueString = trim (*valueString); if ( (observ) && (msg==CRCInput::RC_ok) ) { observ->changeNotify(name, (void *) valueString->c_str()); } return res; }