From 469e110f8235d7c085a998a106037815cf2cf30e Mon Sep 17 00:00:00 2001 From: Uwe Rathmann Date: Fri, 6 Apr 2018 09:00:09 +0200 Subject: [PATCH] code simplified --- src/controls/QskVirtualKeyboard.cpp | 53 +++++++++++++---------------- src/controls/QskVirtualKeyboard.h | 5 +-- 2 files changed, 25 insertions(+), 33 deletions(-) diff --git a/src/controls/QskVirtualKeyboard.cpp b/src/controls/QskVirtualKeyboard.cpp index 8947af2c..0c1f9947 100644 --- a/src/controls/QskVirtualKeyboard.cpp +++ b/src/controls/QskVirtualKeyboard.cpp @@ -291,7 +291,11 @@ QskVirtualKeyboard::QskVirtualKeyboard( QQuickItem* parent ): qRegisterMetaType< Qt::Key >(); setFlag( ItemHasContents ); - setAcceptedMouseButtons( Qt::LeftButton ); + setFlag( ItemIsFocusScope, true ); +#if 0 + // TODO ... + setTabFence( true ); +#endif initSizePolicy( QskSizePolicy::Expanding, QskSizePolicy::Expanding ); @@ -300,12 +304,6 @@ QskVirtualKeyboard::QskVirtualKeyboard( QQuickItem* parent ): connect( this, &QskControl::localeChanged, this, &QskVirtualKeyboard::updateLocale ); - setFlag( ItemIsFocusScope, true ); - -#if 0 - setTabFence( true ); -#endif - setAutoLayoutChildren( true ); m_data->buttonsBox = new QskLinearBox( Qt::Vertical, this ); @@ -332,9 +330,6 @@ QskVirtualKeyboard::QskVirtualKeyboard( QQuickItem* parent ): m_data->keyButtons.append( button ); } } - - connect( this, &QskVirtualKeyboard::modeChanged, - this, [ this ]() { updateLayout(); } ); } QskVirtualKeyboard::~QskVirtualKeyboard() @@ -638,25 +633,33 @@ void QskVirtualKeyboard::handleKey( int keyIndex ) { case Qt::Key_CapsLock: case Qt::Key_Kana_Lock: + { setMode( UppercaseMode ); // Lock caps - return; + break; + } case Qt::Key_Shift: case Qt::Key_Kana_Shift: + { setMode( LowercaseMode ); // Unlock caps - return; + break; + } case Qt::Key_Mode_switch: // Cycle through modes, but skip caps + { setMode( static_cast< QskVirtualKeyboard::Mode >( m_data->mode ? ( ( m_data->mode + 1 ) % QskVirtualKeyboard::ModeCount ) : SpecialCharacterMode ) ); - return; + + break; + } default: - break; + { + QGuiApplication::inputMethod()->invokeAction( + static_cast< QInputMethod::Action >( Compose ), key ); + } } - - compose( key ); } void QskVirtualKeyboard::handleCandidateKey( int index, const QString& text ) @@ -671,7 +674,9 @@ void QskVirtualKeyboard::handleCandidateKey( int index, const QString& text ) } else { - selectCandidate( index ); + QGuiApplication::inputMethod()->invokeAction( + static_cast< QInputMethod::Action >( SelectCandidate ), index ); + setPreeditCandidates( QVector< QString >() ); } } @@ -691,18 +696,6 @@ QString QskVirtualKeyboard::currentTextForKeyIndex( int keyIndex ) const return text; } -void QskVirtualKeyboard::compose( int key ) -{ - QGuiApplication::inputMethod()->invokeAction( - static_cast< QInputMethod::Action >( Compose ), key ); -} - -void QskVirtualKeyboard::selectCandidate( int index ) -{ - QGuiApplication::inputMethod()->invokeAction( - static_cast< QInputMethod::Action >( SelectCandidate ), index ); -} - void QskVirtualKeyboard::updateLocale( const QLocale& locale ) { switch( locale.language() ) @@ -864,6 +857,8 @@ void QskVirtualKeyboard::updateKeyData() void QskVirtualKeyboard::setMode( QskVirtualKeyboard::Mode mode ) { m_data->mode = mode; + polish(); + Q_EMIT modeChanged( m_data->mode ); } diff --git a/src/controls/QskVirtualKeyboard.h b/src/controls/QskVirtualKeyboard.h index 824e9de6..b8c7fdd5 100644 --- a/src/controls/QskVirtualKeyboard.h +++ b/src/controls/QskVirtualKeyboard.h @@ -129,10 +129,10 @@ public: QString currentTextForKeyIndex( int keyIndex ) const; void handleCandidateKey( int index, const QString& text ); - void setCandidateBarVisible( bool visible ); public Q_SLOTS: void setPreeditCandidates( const QVector< QString >& ); + void setCandidateBarVisible( bool visible ); protected: virtual bool eventFilter( QObject*, QEvent* ) override; @@ -142,9 +142,6 @@ private: void createUI(); void updateUI(); // e.g. called when updating Pinyin suggestions - void compose( int ); - void selectGroup( int ); - void selectCandidate( int ); void setCandidateOffset( int ); void updateKeyData();