QWidget* PredictiveKeyboard::widget(QWidget*) { if(!mKeyboard) { mKeyboard = new KeyboardWidget(createKeyboardConfig(), 0); //TODO: load layouts from config mKeyboard->addBoard("russian", QStringList() << "ЙЦУКЕНГШЩЗХЪ" << "ФЫВАПРОЛДЖЭ" << "ЯЧСМИТЬБЮ,", KeyboardWidget::UpperCase); mKeyboard->addBoard("russian", QStringList() << "йцукенгшщзхъ" << "фывапролджэ" << (QString("ячсмитьбю.") + QChar(0x21b5)), KeyboardWidget::LowerCase); mKeyboard->addBoard("english", QStringList() << "QWERTYUIOP" << "ASDFGHJKL" << "ZXCVBNM", KeyboardWidget::UpperCase); mKeyboard->addBoard("english", QStringList() << "qwertyuiop" << "asdfghjkl" << "zxcvbnm", KeyboardWidget::LowerCase); mKeyboard->addBoard("numeric", QStringList() << "12345" << "67890", KeyboardWidget::Numeric); mKeyboard->addBoard("symbol", QStringList() << "^#@!$()*&%" << "|,.;:'?\\`" << (QString("[]+=-/~\"_") + QChar(0x21b5)), KeyboardWidget::NonAlphabet); mKeyboard->setDefaultLayout("russian"); QObject::connect(mKeyboard, SIGNAL(preedit(QString)), this, SLOT(preedit(QString))); QObject::connect(mKeyboard, SIGNAL(commit(QString)), this, SLOT(submitWord(QString))); QObject::connect(mKeyboard, SIGNAL(commit(QString)), this, SLOT(checkMicroFocus())); QObject::connect(mKeyboard, SIGNAL(backspace()), this, SLOT(erase())); KeyboardWidget::instantiatePopupScreen(); } return mKeyboard; };
Keyboard::Keyboard(QWidget* parent, Qt::WFlags f) : QWSInputMethod() { // The keyboard frame is meaningless after the Keyboard IM is destroyed, // so keep control of it by never parenting KeyboardFrame; // This should also help keep the keyboard on top of other widgets. Q_UNUSED(parent); keyboardFrame = new KeyboardFrame(0, f); connect(keyboardFrame, SIGNAL(needsPositionConfirmation()), this, SLOT(checkMicroFocus())); };