1*4882a593Smuzhiyun /**************************************************************************** 2*4882a593Smuzhiyun ** 3*4882a593Smuzhiyun ** Copyright (C) 2016 The Qt Company Ltd. 4*4882a593Smuzhiyun ** Contact: https://www.qt.io/licensing/ 5*4882a593Smuzhiyun ** 6*4882a593Smuzhiyun ** This file is part of the Qt Virtual Keyboard module of the Qt Toolkit. 7*4882a593Smuzhiyun ** 8*4882a593Smuzhiyun ** $QT_BEGIN_LICENSE:GPL$ 9*4882a593Smuzhiyun ** Commercial License Usage 10*4882a593Smuzhiyun ** Licensees holding valid commercial Qt licenses may use this file in 11*4882a593Smuzhiyun ** accordance with the commercial license agreement provided with the 12*4882a593Smuzhiyun ** Software or, alternatively, in accordance with the terms contained in 13*4882a593Smuzhiyun ** a written agreement between you and The Qt Company. For licensing terms 14*4882a593Smuzhiyun ** and conditions see https://www.qt.io/terms-conditions. For further 15*4882a593Smuzhiyun ** information use the contact form at https://www.qt.io/contact-us. 16*4882a593Smuzhiyun ** 17*4882a593Smuzhiyun ** GNU General Public License Usage 18*4882a593Smuzhiyun ** Alternatively, this file may be used under the terms of the GNU 19*4882a593Smuzhiyun ** General Public License version 3 or (at your option) any later version 20*4882a593Smuzhiyun ** approved by the KDE Free Qt Foundation. The licenses are as published by 21*4882a593Smuzhiyun ** the Free Software Foundation and appearing in the file LICENSE.GPL3 22*4882a593Smuzhiyun ** included in the packaging of this file. Please review the following 23*4882a593Smuzhiyun ** information to ensure the GNU General Public License requirements will 24*4882a593Smuzhiyun ** be met: https://www.gnu.org/licenses/gpl-3.0.html. 25*4882a593Smuzhiyun ** 26*4882a593Smuzhiyun ** $QT_END_LICENSE$ 27*4882a593Smuzhiyun ** 28*4882a593Smuzhiyun ****************************************************************************/ 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun #ifndef INPUTVIEW_H 31*4882a593Smuzhiyun #define INPUTVIEW_H 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun #include <QDialog> 34*4882a593Smuzhiyun #include <QPushButton> 35*4882a593Smuzhiyun #include <QLineEdit> 36*4882a593Smuzhiyun #include <QLabel> 37*4882a593Smuzhiyun #include <QVBoxLayout> 38*4882a593Smuzhiyun #include <QListWidget> 39*4882a593Smuzhiyun #include <inputengine.h> 40*4882a593Smuzhiyun #include <dwkeyboard_global.h> 41*4882a593Smuzhiyun #include <QColor> 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun namespace QtVirtualKeyboard { 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun class DWKEYBOARDSHARED_EXPORT KeyBoardData : public QObjectUserData{ 46*4882a593Smuzhiyun public: KeyBoardData()47*4882a593Smuzhiyun KeyBoardData(){ value = 0; } KeyBoardData(int v)48*4882a593Smuzhiyun KeyBoardData(int v){ value = v; } 49*4882a593Smuzhiyun public: 50*4882a593Smuzhiyun int value; 51*4882a593Smuzhiyun }; 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun class DWKEYBOARDSHARED_EXPORT InputDialogView : public QWidget 54*4882a593Smuzhiyun { 55*4882a593Smuzhiyun Q_OBJECT 56*4882a593Smuzhiyun public: 57*4882a593Smuzhiyun explicit InputDialogView(QObject* main, QWidget *parent = 0); 58*4882a593Smuzhiyun ~InputDialogView(); 59*4882a593Smuzhiyun public: 60*4882a593Smuzhiyun enum ViewMode 61*4882a593Smuzhiyun { 62*4882a593Smuzhiyun ViewABC = 0, 63*4882a593Smuzhiyun ViewNum0 = 1, 64*4882a593Smuzhiyun ViewNum1 = 2, 65*4882a593Smuzhiyun ViewMask = 3 66*4882a593Smuzhiyun }; 67*4882a593Smuzhiyun private: 68*4882a593Smuzhiyun void InitControl(); 69*4882a593Smuzhiyun void InitTextAndIcon(); 70*4882a593Smuzhiyun bool SwitchInputMode(InputEngine::InputMode mode); 71*4882a593Smuzhiyun void SwitchShiftMode(); 72*4882a593Smuzhiyun void DoQuitView(); 73*4882a593Smuzhiyun void UpdateWordCandidate(); // 显示候选字 74*4882a593Smuzhiyun void ResetShiftStyle(bool bshift, bool bcaplock, InputEngine::InputMode mode); // Shift状态恢复 75*4882a593Smuzhiyun QString GetShowText(int key, bool bshift, bool bcaplock, InputEngine::InputMode mode); 76*4882a593Smuzhiyun QString GetValueText(int key, bool bshift, bool bcaplock, InputEngine::InputMode mode); 77*4882a593Smuzhiyun void Layout(); 78*4882a593Smuzhiyun void ResetButtonStyle(); 79*4882a593Smuzhiyun public: 80*4882a593Smuzhiyun QList<QPushButton*> GetButtonList(int key); GetViewMode()81*4882a593Smuzhiyun InputDialogView::ViewMode GetViewMode(){ return m_ViewMode; } 82*4882a593Smuzhiyun void SwitchViewMode(InputDialogView::ViewMode mode); 83*4882a593Smuzhiyun private: 84*4882a593Smuzhiyun QWidget* m_backgroud; // 背景 85*4882a593Smuzhiyun QPushButton* m_btnLine1[11];// 第一行按钮组 86*4882a593Smuzhiyun QPushButton* m_btnLine2[10];// 第一行按钮组 87*4882a593Smuzhiyun QPushButton* m_btnLine3[11];// 第一行按钮组 88*4882a593Smuzhiyun QPushButton* m_btnLine4[6]; // 第一行按钮组 89*4882a593Smuzhiyun QList<QPushButton*> m_AllbtnList; // 全部按钮集合 90*4882a593Smuzhiyun QListWidget* m_ListWidget; // 提示器 91*4882a593Smuzhiyun InputDialogView::ViewMode m_ViewMode; 92*4882a593Smuzhiyun 93*4882a593Smuzhiyun QColor m_backgroundClr; // 主窗体背景颜色 94*4882a593Smuzhiyun QColor m_btnbackgroundClr; // 按钮背景颜色 95*4882a593Smuzhiyun QColor m_btnHoverClr; // 按钮hover颜色 96*4882a593Smuzhiyun QColor m_btnPressedClr; // 按钮按下颜色 97*4882a593Smuzhiyun QColor m_btnTxtClr; // 按钮字体颜色 98*4882a593Smuzhiyun QColor m_btnTxtHoverClr; // 按钮字体Hover颜色 99*4882a593Smuzhiyun QColor m_btnTxtPressClr; // 按钮字体按下颜色 100*4882a593Smuzhiyun 101*4882a593Smuzhiyun QColor m_HanziClr; // 汉字背景颜色 102*4882a593Smuzhiyun QColor m_HanziHoverClr; // 汉字hover颜色 103*4882a593Smuzhiyun QColor m_HanziPressedClr; // 汉字按下颜色 104*4882a593Smuzhiyun QColor m_HanziTxtClr; // 汉字字体颜色 105*4882a593Smuzhiyun QColor m_HanziPressTxtClr; // 汉字字体颜色 106*4882a593Smuzhiyun signals: 107*4882a593Smuzhiyun void sendKeyToFocusItem(const QString &keyText); 108*4882a593Smuzhiyun bool virtualKeyPress(Qt::Key key, const QString &text, Qt::KeyboardModifiers modifiers, bool isAutoRepeat); 109*4882a593Smuzhiyun bool virtualKeyRelease(Qt::Key key, const QString &text, Qt::KeyboardModifiers modifiers); 110*4882a593Smuzhiyun public slots: 111*4882a593Smuzhiyun void press(); 112*4882a593Smuzhiyun void release(); 113*4882a593Smuzhiyun void OnListWidgetItemClick(QListWidgetItem * item); 114*4882a593Smuzhiyun signals: 115*4882a593Smuzhiyun void sizeChanged(); 116*4882a593Smuzhiyun protected: 117*4882a593Smuzhiyun void resizeEvent(QResizeEvent *event); 118*4882a593Smuzhiyun public: 119*4882a593Smuzhiyun QObject* main_object; 120*4882a593Smuzhiyun }; 121*4882a593Smuzhiyun 122*4882a593Smuzhiyun } // namespace QtVirtualKeyboard 123*4882a593Smuzhiyun 124*4882a593Smuzhiyun #endif // INPUTVIEW_H 125