#ifndef KEYBOARD_H #define KEYBOARD_H #include #include #include #include #include #include "InputModeMenu.h" #include "KeyButton.h" namespace Ui { class Keyboard; } class InputMethod; class SpellStringWatcher; class InputModeMenu; class Keyboard : public QWidget { Q_OBJECT public: explicit Keyboard(QWidget* aParent = nullptr); ~Keyboard(); void setEdit(QWidget* aEdit); public slots: void hideKeyboard(); signals: void keyboardHided(); private: void switchInputMode(InputMode aMode); void getCandidateList(const QString& aSpellString); bool isSingleChar(const QString& aSpellString); void initializeStyle(); void initializeHandWriteWidget(); void initializeInputModeMenu(); void initializeStaticButton(); void initializeAnimation(); void handleFirstCandidateString(QStringList& aCandidateList); void updateButtonShift(bool aIsCaps); protected slots: void showEvent(QShowEvent* aEvent); void handleKeyButtonPressed(int aKey, const QString& aValue); void handleBackspacePressed(int aKey, const QString& aValue); void handleStaticButtonPressed(int aKey, const QString& aValue); private slots: void candidateListItemClicked(QListWidgetItem* item); private: Ui::Keyboard* mUI; InputMode mInputMode; InputMethod* mInputMethod; InputModeMenu* mInputModeMenu; QWidget* mCurrentWidget; QList mKeyButtonList; QStringList mButtonValueListLow; QStringList mButtonValueListCapital; QStringList mButtonValueListMark; QList mKeyListNormal; QList mKeyListMark; SpellStringWatcher* mSpellStringWatcher; QPropertyAnimation* mShowAnimation; QPropertyAnimation* mHideAnimation; }; #endif // KEYBOARD_H