merge changes from downstream (#56)
* keyboard: Rename some classes * keyboard: adapt some files from downstream
This commit is contained in:
parent
63795d21b0
commit
b497b776ae
@ -8,7 +8,7 @@
|
||||
#include "QskInputCompositionModel.h"
|
||||
#include "QskPinyinCompositionModel.h"
|
||||
|
||||
#include <QskInputPanel.h>
|
||||
#include <QskVirtualKeyboard.h>
|
||||
#include <QskDialog.h>
|
||||
#include <QskWindow.h>
|
||||
#include <QskSetup.h>
|
||||
@ -121,7 +121,7 @@ void QskInputContext::update( Qt::InputMethodQueries queries )
|
||||
{
|
||||
QObject::connect(
|
||||
m_inputCompositionModel.get(), &QskInputCompositionModel::groupsChanged,
|
||||
m_inputPanel.data(), &QskInputPanel::setPreeditGroups );
|
||||
m_inputPanel.data(), &QskVirtualKeyboard::setPreeditGroups );
|
||||
QObject::connect(
|
||||
m_inputCompositionModel.get(), &QskInputCompositionModel::candidatesChanged,
|
||||
this, &QskInputContext::handleCandidatesChanged );
|
||||
@ -154,7 +154,7 @@ void QskInputContext::showInputPanel()
|
||||
{
|
||||
if ( !m_inputPanel )
|
||||
{
|
||||
setInputPanel( new QskInputPanel );
|
||||
setInputPanel( new QskVirtualKeyboard );
|
||||
|
||||
if ( QskDialog::instance()->policy() == QskDialog::TopLevelWindow )
|
||||
{
|
||||
@ -253,15 +253,15 @@ void QskInputContext::invokeAction( QInputMethod::Action action, int cursorPosit
|
||||
if ( !m_inputPanel )
|
||||
return;
|
||||
|
||||
switch ( static_cast< QskInputPanel::Action >( action ) )
|
||||
switch ( static_cast< QskVirtualKeyboard::Action >( action ) )
|
||||
{
|
||||
case QskInputPanel::Compose:
|
||||
case QskVirtualKeyboard::Compose:
|
||||
m_inputCompositionModel->composeKey( static_cast< Qt::Key >( cursorPosition ) );
|
||||
break;
|
||||
case QskInputPanel::SelectGroup:
|
||||
case QskVirtualKeyboard::SelectGroup:
|
||||
m_inputCompositionModel->setGroupIndex( cursorPosition );
|
||||
break;
|
||||
case QskInputPanel::SelectCandidate:
|
||||
case QskVirtualKeyboard::SelectCandidate:
|
||||
m_inputCompositionModel->commitCandidate( cursorPosition );
|
||||
break;
|
||||
}
|
||||
@ -283,18 +283,18 @@ void QskInputContext::handleCandidatesChanged()
|
||||
m_inputPanel->setPreeditCandidates( candidates );
|
||||
}
|
||||
|
||||
void QskInputContext::setInputPanel( QskInputPanel* inputPanel )
|
||||
void QskInputContext::setInputPanel( QskVirtualKeyboard* inputPanel )
|
||||
{
|
||||
if ( m_inputPanel == inputPanel )
|
||||
return;
|
||||
|
||||
if ( m_inputPanel )
|
||||
{
|
||||
QObject::disconnect( m_inputPanel.data(), &QskInputPanel::visibleChanged,
|
||||
QObject::disconnect( m_inputPanel.data(), &QskVirtualKeyboard::visibleChanged,
|
||||
this, &QskInputContext::emitInputPanelVisibleChanged );
|
||||
QObject::disconnect( m_inputPanel.data(), &QskInputPanel::keyboardRectChanged,
|
||||
QObject::disconnect( m_inputPanel.data(), &QskVirtualKeyboard::keyboardRectChanged,
|
||||
this, &QskInputContext::emitKeyboardRectChanged );
|
||||
QObject::disconnect( m_inputPanel.data(), &QskInputPanel::localeChanged,
|
||||
QObject::disconnect( m_inputPanel.data(), &QskVirtualKeyboard::localeChanged,
|
||||
this, &QskInputContext::emitLocaleChanged );
|
||||
if ( m_inputCompositionModel )
|
||||
m_inputPanel->disconnect( m_inputCompositionModel.get() );
|
||||
@ -304,17 +304,17 @@ void QskInputContext::setInputPanel( QskInputPanel* inputPanel )
|
||||
if ( !m_inputPanel )
|
||||
return;
|
||||
|
||||
QObject::connect( m_inputPanel.data(), &QskInputPanel::visibleChanged,
|
||||
QObject::connect( m_inputPanel.data(), &QskVirtualKeyboard::visibleChanged,
|
||||
this, &QskInputContext::emitInputPanelVisibleChanged );
|
||||
QObject::connect( m_inputPanel.data(), &QskInputPanel::keyboardRectChanged,
|
||||
QObject::connect( m_inputPanel.data(), &QskVirtualKeyboard::keyboardRectChanged,
|
||||
this, &QskInputContext::emitKeyboardRectChanged );
|
||||
QObject::connect( m_inputPanel.data(), &QskInputPanel::localeChanged,
|
||||
QObject::connect( m_inputPanel.data(), &QskVirtualKeyboard::localeChanged,
|
||||
this, &QskInputContext::emitLocaleChanged );
|
||||
if ( m_inputCompositionModel )
|
||||
{
|
||||
QObject::connect(
|
||||
m_inputCompositionModel.get(), &QskInputCompositionModel::groupsChanged,
|
||||
m_inputPanel.data(), &QskInputPanel::setPreeditGroups );
|
||||
m_inputPanel.data(), &QskVirtualKeyboard::setPreeditGroups );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -12,7 +12,7 @@
|
||||
|
||||
#include <memory>
|
||||
|
||||
class QskInputPanel;
|
||||
class QskVirtualKeyboard;
|
||||
class QskInputCompositionModel;
|
||||
|
||||
class QskInputContext : public QPlatformInputContext
|
||||
@ -39,12 +39,12 @@ public:
|
||||
private Q_SLOTS:
|
||||
void emitAnimatingChanged();
|
||||
void handleCandidatesChanged();
|
||||
void setInputPanel( QskInputPanel* );
|
||||
void setInputPanel( QskVirtualKeyboard* );
|
||||
|
||||
private:
|
||||
QPointer< QObject > m_focusObject;
|
||||
QPointer< QQuickItem > m_inputItem;
|
||||
QPointer< QskInputPanel > m_inputPanel;
|
||||
QPointer< QskVirtualKeyboard > m_inputPanel;
|
||||
std::unique_ptr< QskInputCompositionModel > m_inputCompositionModel;
|
||||
};
|
||||
|
||||
|
@ -8,7 +8,7 @@
|
||||
#include <SkinnyFont.h>
|
||||
#include <SkinnyShortcut.h>
|
||||
|
||||
#include <QskInputPanel.h>
|
||||
#include <QskVirtualKeyboard.h>
|
||||
#include <QskDialog.h>
|
||||
#include <QskFocusIndicator.h>
|
||||
#include <QskLinearBox.h>
|
||||
@ -44,7 +44,7 @@ public:
|
||||
textInput->setText( "I am a line edit. Press and edit Me." );
|
||||
|
||||
#if LOCAL_PANEL
|
||||
auto* inputPanel = new QskInputPanel( this );
|
||||
auto* inputPanel = new QskVirtualKeyboard( this );
|
||||
|
||||
/*
|
||||
QskInputContext is connected to QskSetup::inputPanelChanged,
|
||||
|
@ -16,7 +16,7 @@
|
||||
#include <QskTabButton.h>
|
||||
#include <QskTabBar.h>
|
||||
#include <QskTabView.h>
|
||||
#include <QskInputPanel.h>
|
||||
#include <QskVirtualKeyboard.h>
|
||||
#include <QskScrollView.h>
|
||||
#include <QskListView.h>
|
||||
#include <QskSubWindow.h>
|
||||
@ -521,12 +521,12 @@ void QskMaterialSkin::initTabViewHints()
|
||||
void QskMaterialSkin::initInputPanelHints()
|
||||
{
|
||||
using namespace QskAspect;
|
||||
using Q = QskKeyButton;
|
||||
using Q = QskVirtualKeyboardButton;
|
||||
|
||||
const ColorPalette& pal = m_data->palette;
|
||||
|
||||
// key panel
|
||||
setMargins( QskInputPanel::Panel | Margin, 2 );
|
||||
setMargins( QskVirtualKeyboard::Panel | Margin, 2 );
|
||||
|
||||
setBoxShape( Q::Panel, 20.0, Qt::RelativeSize );
|
||||
setBoxBorderMetrics( Q::Panel, 2 );
|
||||
|
@ -16,7 +16,7 @@
|
||||
#include <QskTabButton.h>
|
||||
#include <QskTabBar.h>
|
||||
#include <QskTabView.h>
|
||||
#include <QskInputPanel.h>
|
||||
#include <QskVirtualKeyboard.h>
|
||||
#include <QskScrollView.h>
|
||||
#include <QskListView.h>
|
||||
#include <QskSubWindow.h>
|
||||
@ -554,13 +554,13 @@ void QskSquiekSkin::initTabViewHints()
|
||||
void QskSquiekSkin::initInputPanelHints()
|
||||
{
|
||||
using namespace QskAspect;
|
||||
using Q = QskKeyButton;
|
||||
using Q = QskVirtualKeyboardButton;
|
||||
|
||||
const ColorPalette& pal = m_data->palette;
|
||||
|
||||
// key panel
|
||||
setMargins( QskInputPanel::Panel | Padding, 5 );
|
||||
setPanel( QskInputPanel::Panel, Raised );
|
||||
setMargins( QskVirtualKeyboard::Panel | Padding, 5 );
|
||||
setPanel( QskVirtualKeyboard::Panel, Raised );
|
||||
|
||||
setButton( Q::Panel, Raised );
|
||||
setButton( Q::Panel | Q::Pressed, Sunken );
|
||||
|
@ -19,7 +19,7 @@
|
||||
#include "QskGradient.h"
|
||||
#include "QskGraphicLabel.h"
|
||||
#include "QskGridBox.h"
|
||||
#include "QskInputPanel.h"
|
||||
#include "QskVirtualKeyboard.h"
|
||||
#include "QskRgbValue.h"
|
||||
#include "QskScrollView.h"
|
||||
#include "QskScrollArea.h"
|
||||
@ -159,7 +159,7 @@ public:
|
||||
|
||||
Q_PROPERTY( QStringList skinList READ skinList NOTIFY skinListChanged )
|
||||
|
||||
Q_PRIVATE_PROPERTY( setup(), QskInputPanel* inputPanel READ inputPanel
|
||||
Q_PRIVATE_PROPERTY( setup(), QskVirtualKeyboard* inputPanel READ inputPanel
|
||||
WRITE setInputPanel NOTIFY inputPanelChanged )
|
||||
|
||||
Q_PRIVATE_PROPERTY( setup(), QskSetupFlagsProvider controlFlags
|
||||
@ -253,7 +253,7 @@ void QskModule::registerTypes()
|
||||
|
||||
QSK_REGISTER( QskControl, "Control" );
|
||||
QSK_REGISTER( QskGraphicLabel, "GraphicLabel" );
|
||||
QSK_REGISTER( QskInputPanel, "InputPanel" );
|
||||
QSK_REGISTER( QskVirtualKeyboard, "InputPanel" );
|
||||
QSK_REGISTER( QskTextLabel, "TextLabel" );
|
||||
QSK_REGISTER( QskTabButton, "TabButton" );
|
||||
QSK_REGISTER( QskTabBar, "TabBar" );
|
||||
|
@ -8,7 +8,7 @@
|
||||
#include "QskSkinManager.h"
|
||||
#include "QskGraphicProviderMap.h"
|
||||
#include "QskControl.h"
|
||||
#include "QskInputPanel.h"
|
||||
#include "QskVirtualKeyboard.h"
|
||||
#include "QskWindow.h"
|
||||
#include "QskObjectTree.h"
|
||||
|
||||
@ -127,7 +127,7 @@ public:
|
||||
|
||||
QskGraphicProviderMap graphicProviders;
|
||||
|
||||
QPointer< QskInputPanel > inputPanel;
|
||||
QPointer< QskVirtualKeyboard > inputPanel;
|
||||
QskSetup::Flags controlFlags;
|
||||
};
|
||||
|
||||
@ -262,7 +262,7 @@ QskGraphicProvider* QskSetup::graphicProvider( const QString& providerId ) const
|
||||
return m_data->graphicProviders.provider( providerId );
|
||||
}
|
||||
|
||||
void QskSetup::setInputPanel( QskInputPanel* inputPanel )
|
||||
void QskSetup::setInputPanel( QskVirtualKeyboard* inputPanel )
|
||||
{
|
||||
if ( m_data->inputPanel == inputPanel )
|
||||
return;
|
||||
@ -271,7 +271,7 @@ void QskSetup::setInputPanel( QskInputPanel* inputPanel )
|
||||
Q_EMIT inputPanelChanged( m_data->inputPanel );
|
||||
}
|
||||
|
||||
QskInputPanel* QskSetup::inputPanel()
|
||||
QskVirtualKeyboard* QskSetup::inputPanel()
|
||||
{
|
||||
return m_data->inputPanel;
|
||||
}
|
||||
|
@ -11,7 +11,7 @@
|
||||
#include <qqml.h>
|
||||
#include <memory>
|
||||
|
||||
class QskInputPanel;
|
||||
class QskVirtualKeyboard;
|
||||
class QskSkin;
|
||||
class QskSkinlet;
|
||||
class QskControl;
|
||||
@ -60,8 +60,8 @@ public:
|
||||
|
||||
QskSkin* skin();
|
||||
|
||||
void setInputPanel( QskInputPanel* );
|
||||
QskInputPanel* inputPanel();
|
||||
void setInputPanel( QskVirtualKeyboard* );
|
||||
QskVirtualKeyboard* inputPanel();
|
||||
|
||||
void addGraphicProvider( const QString& providerId, QskGraphicProvider* );
|
||||
QskGraphicProvider* graphicProvider( const QString& providerId ) const;
|
||||
@ -76,7 +76,7 @@ public:
|
||||
|
||||
Q_SIGNALS:
|
||||
void skinChanged( QskSkin* );
|
||||
void inputPanelChanged( QskInputPanel* );
|
||||
void inputPanelChanged( QskVirtualKeyboard* );
|
||||
void controlFlagsChanged();
|
||||
|
||||
private:
|
||||
|
@ -3,7 +3,7 @@
|
||||
* This file may be used under the terms of the QSkinny License, Version 1.0
|
||||
*****************************************************************************/
|
||||
|
||||
#include "QskInputPanel.h"
|
||||
#include "QskVirtualKeyboard.h"
|
||||
|
||||
#include "QskAspect.h"
|
||||
|
||||
@ -24,25 +24,25 @@ namespace
|
||||
{
|
||||
struct KeyTable
|
||||
{
|
||||
using Row = QskInputPanel::KeyData[ QskInputPanel::KeyCount ];
|
||||
Row data[ QskInputPanel::RowCount ];
|
||||
using Row = QskVirtualKeyboard::KeyData[ QskVirtualKeyboard::KeyCount ];
|
||||
Row data[ QskVirtualKeyboard::RowCount ];
|
||||
|
||||
int indexOf( const QskInputPanel::KeyData* value ) const
|
||||
int indexOf( const QskVirtualKeyboard::KeyData* value ) const
|
||||
{
|
||||
return int( intptr_t( value - data[0] ) );
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
struct QskInputPanelLayouts
|
||||
struct QskVirtualKeyboardLayouts
|
||||
{
|
||||
struct KeyCodes
|
||||
{
|
||||
using Row = Qt::Key[ QskInputPanel::KeyCount ];
|
||||
Row data[ QskInputPanel::RowCount ];
|
||||
using Row = Qt::Key[ QskVirtualKeyboard::KeyCount ];
|
||||
Row data[ QskVirtualKeyboard::RowCount ];
|
||||
};
|
||||
|
||||
using Layout = KeyCodes[ QskInputPanel::ModeCount ];
|
||||
using Layout = KeyCodes[ QskVirtualKeyboard::ModeCount ];
|
||||
|
||||
Layout bg; // Bulgarian
|
||||
Layout cs; // Czech
|
||||
@ -72,9 +72,9 @@ struct QskInputPanelLayouts
|
||||
};
|
||||
|
||||
#define LOWER(x) Qt::Key(x + 32) // Convert an uppercase key to lowercase
|
||||
static constexpr const QskInputPanelLayouts qskInputPanelLayouts =
|
||||
static constexpr const QskVirtualKeyboardLayouts qskKeyboardLayouts =
|
||||
{
|
||||
#include "QskInputPanelLayouts.cpp"
|
||||
#include "QskVirtualKeyboardLayouts.cpp"
|
||||
};
|
||||
#undef LOWER
|
||||
|
||||
@ -106,7 +106,7 @@ static qreal qskKeyStretch( Qt::Key key )
|
||||
return 1.0;
|
||||
}
|
||||
|
||||
static qreal qskRowStretch( const QskInputPanel::KeyRow& keyRow )
|
||||
static qreal qskRowStretch( const QskVirtualKeyboard::KeyRow& keyRow )
|
||||
{
|
||||
qreal stretch = 0;
|
||||
|
||||
@ -122,7 +122,7 @@ static qreal qskRowStretch( const QskInputPanel::KeyRow& keyRow )
|
||||
|
||||
if( stretch == 0.0 )
|
||||
{
|
||||
stretch = QskInputPanel::KeyCount;
|
||||
stretch = QskVirtualKeyboard::KeyCount;
|
||||
}
|
||||
|
||||
return stretch;
|
||||
@ -145,13 +145,13 @@ namespace
|
||||
};
|
||||
}
|
||||
|
||||
QSK_SUBCONTROL( QskInputPanel, Panel )
|
||||
QSK_SUBCONTROL( QskVirtualKeyboard, Panel )
|
||||
|
||||
QSK_SUBCONTROL( QskKeyButton, Panel )
|
||||
QSK_SUBCONTROL( QskKeyButton, Text )
|
||||
QSK_SUBCONTROL( QskKeyButton, TextCancelButton )
|
||||
QSK_SUBCONTROL( QskVirtualKeyboardButton, Panel )
|
||||
QSK_SUBCONTROL( QskVirtualKeyboardButton, Text )
|
||||
QSK_SUBCONTROL( QskVirtualKeyboardButton, TextCancelButton )
|
||||
|
||||
QskKeyButton::QskKeyButton( int keyIndex, QskInputPanel* inputPanel, QQuickItem* parent ) :
|
||||
QskVirtualKeyboardButton::QskVirtualKeyboardButton( int keyIndex, QskVirtualKeyboard* inputPanel, QQuickItem* parent ) :
|
||||
Inherited( parent ),
|
||||
m_keyIndex( keyIndex ),
|
||||
m_inputPanel( inputPanel )
|
||||
@ -174,36 +174,36 @@ QskKeyButton::QskKeyButton( int keyIndex, QskInputPanel* inputPanel, QQuickItem*
|
||||
|
||||
updateText();
|
||||
|
||||
connect( this, &QskKeyButton::pressed, this, [ this ]()
|
||||
connect( this, &QskVirtualKeyboardButton::pressed, this, [ this ]()
|
||||
{
|
||||
m_inputPanel->handleKey( m_keyIndex );
|
||||
} );
|
||||
|
||||
connect( m_inputPanel, &QskInputPanel::modeChanged, this, &QskKeyButton::updateText );
|
||||
connect( m_inputPanel, &QskVirtualKeyboard::modeChanged, this, &QskVirtualKeyboardButton::updateText );
|
||||
}
|
||||
|
||||
QskAspect::Subcontrol QskKeyButton::effectiveSubcontrol( QskAspect::Subcontrol subControl ) const
|
||||
QskAspect::Subcontrol QskVirtualKeyboardButton::effectiveSubcontrol( QskAspect::Subcontrol subControl ) const
|
||||
{
|
||||
if( subControl == QskPushButton::Panel )
|
||||
{
|
||||
return QskKeyButton::Panel;
|
||||
return QskVirtualKeyboardButton::Panel;
|
||||
}
|
||||
|
||||
if( subControl == QskPushButton::Text )
|
||||
{
|
||||
// ### we could also introduce a state to not always query the button
|
||||
return isCancelButton() ? QskKeyButton::TextCancelButton : QskKeyButton::Text;
|
||||
return isCancelButton() ? QskVirtualKeyboardButton::TextCancelButton : QskVirtualKeyboardButton::Text;
|
||||
}
|
||||
|
||||
return subControl;
|
||||
}
|
||||
|
||||
int QskKeyButton::keyIndex() const
|
||||
int QskVirtualKeyboardButton::keyIndex() const
|
||||
{
|
||||
return m_keyIndex;
|
||||
}
|
||||
|
||||
void QskKeyButton::updateText()
|
||||
void QskVirtualKeyboardButton::updateText()
|
||||
{
|
||||
QString text = m_inputPanel->currentTextForKeyIndex( m_keyIndex );
|
||||
|
||||
@ -218,19 +218,19 @@ void QskKeyButton::updateText()
|
||||
}
|
||||
}
|
||||
|
||||
bool QskKeyButton::isCancelButton() const
|
||||
bool QskVirtualKeyboardButton::isCancelButton() const
|
||||
{
|
||||
auto keyData = m_inputPanel->keyDataAt( m_keyIndex );
|
||||
bool isCancel = ( keyData.key == 0x2716 );
|
||||
return isCancel;
|
||||
}
|
||||
|
||||
class QskInputPanel::PrivateData
|
||||
class QskVirtualKeyboard::PrivateData
|
||||
{
|
||||
public:
|
||||
PrivateData():
|
||||
currentLayout( nullptr ),
|
||||
mode( QskInputPanel::LowercaseMode ),
|
||||
mode( QskVirtualKeyboard::LowercaseMode ),
|
||||
selectedGroup( -1 ),
|
||||
candidateOffset( 0 ),
|
||||
buttonsBox( nullptr ),
|
||||
@ -239,8 +239,8 @@ class QskInputPanel::PrivateData
|
||||
}
|
||||
|
||||
public:
|
||||
const QskInputPanelLayouts::Layout* currentLayout;
|
||||
QskInputPanel::Mode mode;
|
||||
const QskVirtualKeyboardLayouts::Layout* currentLayout;
|
||||
QskVirtualKeyboard::Mode mode;
|
||||
|
||||
qint16 selectedGroup;
|
||||
qint32 candidateOffset;
|
||||
@ -254,11 +254,11 @@ class QskInputPanel::PrivateData
|
||||
KeyTable keyTable[ ModeCount ];
|
||||
|
||||
QskLinearBox* buttonsBox;
|
||||
QList< QskKeyButton* > keyButtons;
|
||||
QList< QskVirtualKeyboardButton* > keyButtons;
|
||||
bool isUIInitialized;
|
||||
};
|
||||
|
||||
QskInputPanel::QskInputPanel( QQuickItem* parent ):
|
||||
QskVirtualKeyboard::QskVirtualKeyboard( QQuickItem* parent ):
|
||||
Inherited( parent ),
|
||||
m_data( new PrivateData )
|
||||
{
|
||||
@ -269,15 +269,10 @@ QskInputPanel::QskInputPanel( QQuickItem* parent ):
|
||||
|
||||
initSizePolicy( QskSizePolicy::Expanding, QskSizePolicy::Expanding );
|
||||
|
||||
setAutoFillBackground( true );
|
||||
|
||||
auto margins = marginsHint( Panel | QskAspect::Margin );
|
||||
setMargins( margins );
|
||||
|
||||
updateLocale( locale() );
|
||||
|
||||
QObject::connect( this, &QskControl::localeChanged,
|
||||
this, &QskInputPanel::updateLocale );
|
||||
this, &QskVirtualKeyboard::updateLocale );
|
||||
|
||||
setFlag( ItemIsFocusScope, true );
|
||||
|
||||
@ -305,47 +300,47 @@ QskInputPanel::QskInputPanel( QQuickItem* parent ):
|
||||
}
|
||||
|
||||
int keyIndex = m_data->keyTable[ m_data->mode ].indexOf( &keyData );
|
||||
QskKeyButton* button = new QskKeyButton( keyIndex, this, rowBox );
|
||||
QskVirtualKeyboardButton* button = new QskVirtualKeyboardButton( keyIndex, this, rowBox );
|
||||
rowBox->setRetainSizeWhenHidden( button, true );
|
||||
|
||||
m_data->keyButtons.append( button );
|
||||
}
|
||||
}
|
||||
|
||||
connect( this, &QskInputPanel::modeChanged, this, [ this ]() {
|
||||
connect( this, &QskVirtualKeyboard::modeChanged, this, [ this ]() {
|
||||
updateLayout();
|
||||
});
|
||||
}
|
||||
|
||||
QskInputPanel::~QskInputPanel()
|
||||
QskVirtualKeyboard::~QskVirtualKeyboard()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
QskAspect::Subcontrol QskInputPanel::effectiveSubcontrol( QskAspect::Subcontrol subControl ) const
|
||||
QskAspect::Subcontrol QskVirtualKeyboard::effectiveSubcontrol( QskAspect::Subcontrol subControl ) const
|
||||
{
|
||||
if( subControl == QskBox::Panel )
|
||||
{
|
||||
return QskInputPanel::Panel;
|
||||
return QskVirtualKeyboard::Panel;
|
||||
}
|
||||
|
||||
return subControl;
|
||||
}
|
||||
|
||||
|
||||
QskInputPanel::Mode QskInputPanel::mode() const
|
||||
QskVirtualKeyboard::Mode QskVirtualKeyboard::mode() const
|
||||
{
|
||||
return m_data->mode;
|
||||
}
|
||||
|
||||
const QskInputPanel::KeyDataSet& QskInputPanel::keyData( Mode mode ) const
|
||||
const QskVirtualKeyboard::KeyDataSet& QskVirtualKeyboard::keyData( Mode mode ) const
|
||||
{
|
||||
mode = mode == CurrentMode ? m_data->mode : mode;
|
||||
Q_ASSERT( mode >= 0 && mode < ModeCount );
|
||||
return m_data->keyTable[ mode ].data;
|
||||
}
|
||||
|
||||
QString QskInputPanel::textForKey( int key ) const
|
||||
QString QskVirtualKeyboard::textForKey( int key ) const
|
||||
{
|
||||
key &= ~KeyStates;
|
||||
|
||||
@ -393,7 +388,7 @@ QString QskInputPanel::textForKey( int key ) const
|
||||
return QChar( key );
|
||||
}
|
||||
|
||||
QString QskInputPanel::displayLanguageName() const
|
||||
QString QskVirtualKeyboard::displayLanguageName() const
|
||||
{
|
||||
const auto locale = this->locale();
|
||||
|
||||
@ -486,7 +481,7 @@ QString QskInputPanel::displayLanguageName() const
|
||||
return QLocale::languageToString( locale.language() );
|
||||
}
|
||||
|
||||
void QskInputPanel::setPreeditGroups( const QVector< Qt::Key >& groups )
|
||||
void QskVirtualKeyboard::setPreeditGroups( const QVector< Qt::Key >& groups )
|
||||
{
|
||||
auto& topRow = m_data->keyTable[ LowercaseMode ].data[ 0 ];
|
||||
|
||||
@ -505,7 +500,7 @@ void QskInputPanel::setPreeditGroups( const QVector< Qt::Key >& groups )
|
||||
}
|
||||
}
|
||||
|
||||
void QskInputPanel::setPreeditCandidates( const QVector< Qt::Key >& candidates )
|
||||
void QskVirtualKeyboard::setPreeditCandidates( const QVector< Qt::Key >& candidates )
|
||||
{
|
||||
if( m_data->candidates == candidates )
|
||||
{
|
||||
@ -516,7 +511,7 @@ void QskInputPanel::setPreeditCandidates( const QVector< Qt::Key >& candidates )
|
||||
setCandidateOffset( 0 );
|
||||
}
|
||||
|
||||
void QskInputPanel::setCandidateOffset( int candidateOffset )
|
||||
void QskVirtualKeyboard::setCandidateOffset( int candidateOffset )
|
||||
{
|
||||
m_data->candidateOffset = candidateOffset;
|
||||
|
||||
@ -559,13 +554,13 @@ void QskInputPanel::setCandidateOffset( int candidateOffset )
|
||||
}
|
||||
}
|
||||
|
||||
void QskInputPanel::registerCompositionModelForLocale( const QLocale& locale,
|
||||
void QskVirtualKeyboard::registerCompositionModelForLocale( const QLocale& locale,
|
||||
QskInputCompositionModel* model )
|
||||
{
|
||||
Q_EMIT inputMethodRegistered( locale, model );
|
||||
}
|
||||
|
||||
void QskInputPanel::geometryChanged(
|
||||
void QskVirtualKeyboard::geometryChanged(
|
||||
const QRectF& newGeometry, const QRectF& oldGeometry )
|
||||
{
|
||||
Inherited::geometryChanged( newGeometry, oldGeometry );
|
||||
@ -573,7 +568,7 @@ void QskInputPanel::geometryChanged(
|
||||
Q_EMIT keyboardRectChanged();
|
||||
}
|
||||
|
||||
void QskInputPanel::updateLayout()
|
||||
void QskVirtualKeyboard::updateLayout()
|
||||
{
|
||||
if( geometry().isNull() )
|
||||
return; // no need to calculate anything, will be called again
|
||||
@ -590,7 +585,7 @@ void QskInputPanel::updateLayout()
|
||||
const auto& rowChildren = rowBox->childItems();
|
||||
for( auto keyItem : rowChildren )
|
||||
{
|
||||
auto button = qobject_cast< QskKeyButton* >( keyItem );
|
||||
auto button = qobject_cast< QskVirtualKeyboardButton* >( keyItem );
|
||||
QRectF keyRect = keyDataAt( button->keyIndex() ).rect;
|
||||
qreal width = keyRect.width() * rect.width() - horizontalSpacing;
|
||||
qreal height = keyRect.height() * rect.height() - verticalSpacing;
|
||||
@ -600,22 +595,22 @@ void QskInputPanel::updateLayout()
|
||||
}
|
||||
}
|
||||
|
||||
void QskInputPanel::updateUI()
|
||||
void QskVirtualKeyboard::updateUI()
|
||||
{
|
||||
for( QskKeyButton* button : qskAsConst( m_data->keyButtons ) )
|
||||
for( QskVirtualKeyboardButton* button : qskAsConst( m_data->keyButtons ) )
|
||||
{
|
||||
button->updateText();
|
||||
}
|
||||
}
|
||||
|
||||
QskInputPanel::KeyData& QskInputPanel::keyDataAt( int keyIndex ) const
|
||||
QskVirtualKeyboard::KeyData& QskVirtualKeyboard::keyDataAt( int keyIndex ) const
|
||||
{
|
||||
const auto row = keyIndex / KeyCount;
|
||||
const auto col = keyIndex % KeyCount;
|
||||
return m_data->keyTable[ m_data->mode ].data[ row ][ col ];
|
||||
}
|
||||
|
||||
void QskInputPanel::handleKey( int keyIndex )
|
||||
void QskVirtualKeyboard::handleKey( int keyIndex )
|
||||
{
|
||||
KeyData keyData = keyDataAt( keyIndex );
|
||||
const auto key = keyData.key & ~KeyStates;
|
||||
@ -666,8 +661,8 @@ void QskInputPanel::handleKey( int keyIndex )
|
||||
return;
|
||||
|
||||
case Qt::Key_Mode_switch: // Cycle through modes, but skip caps
|
||||
setMode( static_cast< QskInputPanel::Mode >(
|
||||
m_data->mode ? ( ( m_data->mode + 1 ) % QskInputPanel::ModeCount )
|
||||
setMode( static_cast< QskVirtualKeyboard::Mode >(
|
||||
m_data->mode ? ( ( m_data->mode + 1 ) % QskVirtualKeyboard::ModeCount )
|
||||
: SpecialCharacterMode ) );
|
||||
return;
|
||||
|
||||
@ -690,20 +685,20 @@ void QskInputPanel::handleKey( int keyIndex )
|
||||
}
|
||||
}
|
||||
|
||||
QString QskInputPanel::currentTextForKeyIndex( int keyIndex ) const
|
||||
QString QskVirtualKeyboard::currentTextForKeyIndex( int keyIndex ) const
|
||||
{
|
||||
auto keyData = keyDataAt( keyIndex );
|
||||
QString text = textForKey( keyData.key );
|
||||
return text;
|
||||
}
|
||||
|
||||
void QskInputPanel::compose( int key )
|
||||
void QskVirtualKeyboard::compose( int key )
|
||||
{
|
||||
QGuiApplication::inputMethod()->invokeAction(
|
||||
static_cast< QInputMethod::Action >( Compose ), key );
|
||||
}
|
||||
|
||||
void QskInputPanel::selectGroup( int index )
|
||||
void QskVirtualKeyboard::selectGroup( int index )
|
||||
{
|
||||
auto& topRow = m_data->keyTable[ m_data->mode ].data[ 0 ];
|
||||
|
||||
@ -730,34 +725,34 @@ void QskInputPanel::selectGroup( int index )
|
||||
topRow[ m_data->selectedGroup ].key |= KeyLocked;
|
||||
}
|
||||
|
||||
void QskInputPanel::selectCandidate( int index )
|
||||
void QskVirtualKeyboard::selectCandidate( int index )
|
||||
{
|
||||
QGuiApplication::inputMethod()->invokeAction(
|
||||
static_cast< QInputMethod::Action >( SelectCandidate ), index );
|
||||
}
|
||||
|
||||
void QskInputPanel::updateLocale( const QLocale& locale )
|
||||
void QskVirtualKeyboard::updateLocale( const QLocale& locale )
|
||||
{
|
||||
switch( locale.language() )
|
||||
{
|
||||
case QLocale::Bulgarian:
|
||||
m_data->currentLayout = &qskInputPanelLayouts.bg;
|
||||
m_data->currentLayout = &qskKeyboardLayouts.bg;
|
||||
break;
|
||||
|
||||
case QLocale::Czech:
|
||||
m_data->currentLayout = &qskInputPanelLayouts.cs;
|
||||
m_data->currentLayout = &qskKeyboardLayouts.cs;
|
||||
break;
|
||||
|
||||
case QLocale::German:
|
||||
m_data->currentLayout = &qskInputPanelLayouts.de;
|
||||
m_data->currentLayout = &qskKeyboardLayouts.de;
|
||||
break;
|
||||
|
||||
case QLocale::Danish:
|
||||
m_data->currentLayout = &qskInputPanelLayouts.da;
|
||||
m_data->currentLayout = &qskKeyboardLayouts.da;
|
||||
break;
|
||||
|
||||
case QLocale::Greek:
|
||||
m_data->currentLayout = &qskInputPanelLayouts.el;
|
||||
m_data->currentLayout = &qskKeyboardLayouts.el;
|
||||
break;
|
||||
|
||||
case QLocale::English:
|
||||
@ -768,11 +763,11 @@ void QskInputPanel::updateLocale( const QLocale& locale )
|
||||
case QLocale::UnitedStates:
|
||||
case QLocale::UnitedStatesMinorOutlyingIslands:
|
||||
case QLocale::UnitedStatesVirginIslands:
|
||||
m_data->currentLayout = &qskInputPanelLayouts.en_US;
|
||||
m_data->currentLayout = &qskKeyboardLayouts.en_US;
|
||||
break;
|
||||
|
||||
default:
|
||||
m_data->currentLayout = &qskInputPanelLayouts.en_GB;
|
||||
m_data->currentLayout = &qskKeyboardLayouts.en_GB;
|
||||
break;
|
||||
}
|
||||
|
||||
@ -780,72 +775,77 @@ void QskInputPanel::updateLocale( const QLocale& locale )
|
||||
}
|
||||
|
||||
case QLocale::Spanish:
|
||||
m_data->currentLayout = &qskInputPanelLayouts.es;
|
||||
m_data->currentLayout = &qskKeyboardLayouts.es;
|
||||
break;
|
||||
|
||||
case QLocale::Finnish:
|
||||
m_data->currentLayout = &qskInputPanelLayouts.fi;
|
||||
m_data->currentLayout = &qskKeyboardLayouts.fi;
|
||||
break;
|
||||
|
||||
case QLocale::French:
|
||||
m_data->currentLayout = &qskInputPanelLayouts.fr;
|
||||
m_data->currentLayout = &qskKeyboardLayouts.fr;
|
||||
break;
|
||||
|
||||
case QLocale::Hungarian:
|
||||
m_data->currentLayout = &qskInputPanelLayouts.hu;
|
||||
m_data->currentLayout = &qskKeyboardLayouts.hu;
|
||||
break;
|
||||
|
||||
case QLocale::Italian:
|
||||
m_data->currentLayout = &qskInputPanelLayouts.it;
|
||||
m_data->currentLayout = &qskKeyboardLayouts.it;
|
||||
break;
|
||||
|
||||
case QLocale::Japanese:
|
||||
m_data->currentLayout = &qskInputPanelLayouts.ja;
|
||||
m_data->currentLayout = &qskKeyboardLayouts.ja;
|
||||
break;
|
||||
|
||||
case QLocale::Latvian:
|
||||
m_data->currentLayout = &qskInputPanelLayouts.lv;
|
||||
m_data->currentLayout = &qskKeyboardLayouts.lv;
|
||||
break;
|
||||
|
||||
case QLocale::Lithuanian:
|
||||
m_data->currentLayout = &qskInputPanelLayouts.lt;
|
||||
m_data->currentLayout = &qskKeyboardLayouts.lt;
|
||||
break;
|
||||
|
||||
case QLocale::Dutch:
|
||||
m_data->currentLayout = &qskInputPanelLayouts.nl;
|
||||
m_data->currentLayout = &qskKeyboardLayouts.nl;
|
||||
break;
|
||||
|
||||
case QLocale::Portuguese:
|
||||
m_data->currentLayout = &qskInputPanelLayouts.pt;
|
||||
m_data->currentLayout = &qskKeyboardLayouts.pt;
|
||||
break;
|
||||
|
||||
case QLocale::Romanian:
|
||||
m_data->currentLayout = &qskInputPanelLayouts.ro;
|
||||
m_data->currentLayout = &qskKeyboardLayouts.ro;
|
||||
break;
|
||||
|
||||
case QLocale::Russia:
|
||||
m_data->currentLayout = &qskInputPanelLayouts.ru;
|
||||
m_data->currentLayout = &qskKeyboardLayouts.ru;
|
||||
break;
|
||||
|
||||
case QLocale::Slovenian:
|
||||
m_data->currentLayout = &qskInputPanelLayouts.sl;
|
||||
m_data->currentLayout = &qskKeyboardLayouts.sl;
|
||||
break;
|
||||
|
||||
case QLocale::Slovak:
|
||||
m_data->currentLayout = &qskInputPanelLayouts.sk;
|
||||
m_data->currentLayout = &qskKeyboardLayouts.sk;
|
||||
break;
|
||||
|
||||
case QLocale::Turkish:
|
||||
m_data->currentLayout = &qskInputPanelLayouts.tr;
|
||||
m_data->currentLayout = &qskKeyboardLayouts.tr;
|
||||
break;
|
||||
|
||||
case QLocale::Chinese:
|
||||
m_data->currentLayout = &qskInputPanelLayouts.zh;
|
||||
m_data->currentLayout = &qskKeyboardLayouts.zh;
|
||||
break;
|
||||
|
||||
#if 1
|
||||
case QLocale::C:
|
||||
m_data->currentLayout = &qskKeyboardLayouts.en_US;
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
qWarning() << "QskInputPanel: unsupported locale:" << locale;
|
||||
m_data->currentLayout = &qskInputPanelLayouts.en_US;
|
||||
m_data->currentLayout = &qskKeyboardLayouts.en_US;
|
||||
|
||||
}
|
||||
|
||||
Q_EMIT displayLanguageNameChanged();
|
||||
@ -854,7 +854,7 @@ void QskInputPanel::updateLocale( const QLocale& locale )
|
||||
setMode( LowercaseMode );
|
||||
}
|
||||
|
||||
void QskInputPanel::updateKeyData()
|
||||
void QskVirtualKeyboard::updateKeyData()
|
||||
{
|
||||
// Key data is in normalized coordinates
|
||||
const auto keyHeight = 1.0f / RowCount;
|
||||
@ -889,11 +889,10 @@ void QskInputPanel::updateKeyData()
|
||||
}
|
||||
}
|
||||
|
||||
void QskInputPanel::setMode( QskInputPanel::Mode mode )
|
||||
void QskVirtualKeyboard::setMode( QskVirtualKeyboard::Mode mode )
|
||||
{
|
||||
m_data->mode = mode;
|
||||
Q_EMIT modeChanged( m_data->mode );
|
||||
}
|
||||
|
||||
#include "QskInputPanel.moc"
|
||||
#include "moc_QskInputPanel.cpp"
|
||||
#include "moc_QskVirtualKeyboard.cpp"
|
@ -3,8 +3,8 @@
|
||||
* This file may be used under the terms of the QSkinny License, Version 1.0
|
||||
*****************************************************************************/
|
||||
|
||||
#ifndef QSK_INPUT_PANEL_H
|
||||
#define QSK_INPUT_PANEL_H
|
||||
#ifndef QSK_VIRTUAL_KEYBOARD_H
|
||||
#define QSK_VIRTUAL_KEYBOARD_H
|
||||
|
||||
#include "QskBox.h"
|
||||
#include "QskPushButton.h"
|
||||
@ -12,9 +12,9 @@
|
||||
#include <QRectF>
|
||||
|
||||
class QskInputCompositionModel;
|
||||
class QskInputPanel;
|
||||
class QskVirtualKeyboard;
|
||||
|
||||
class QskKeyButton : public QskPushButton // ### rename to QskInputButton or so?
|
||||
class QSK_EXPORT QskVirtualKeyboardButton : public QskPushButton
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
@ -22,7 +22,7 @@ class QskKeyButton : public QskPushButton // ### rename to QskInputButton or so?
|
||||
|
||||
public:
|
||||
QSK_SUBCONTROLS( Panel, Text, TextCancelButton )
|
||||
QskKeyButton( int keyIndex, QskInputPanel* inputPanel, QQuickItem* parent = nullptr );
|
||||
QskVirtualKeyboardButton( int keyIndex, QskVirtualKeyboard* inputPanel, QQuickItem* parent = nullptr );
|
||||
|
||||
virtual QskAspect::Subcontrol effectiveSubcontrol( QskAspect::Subcontrol subControl ) const override;
|
||||
|
||||
@ -35,10 +35,10 @@ class QskKeyButton : public QskPushButton // ### rename to QskInputButton or so?
|
||||
bool isCancelButton() const;
|
||||
|
||||
const int m_keyIndex;
|
||||
QskInputPanel* m_inputPanel;
|
||||
QskVirtualKeyboard* m_inputPanel;
|
||||
};
|
||||
|
||||
class QSK_EXPORT QskInputPanel : public QskBox
|
||||
class QSK_EXPORT QskVirtualKeyboard : public QskBox
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
@ -86,17 +86,17 @@ public:
|
||||
using KeyDataRow = KeyData[KeyCount];
|
||||
using KeyDataSet = KeyDataRow[RowCount];
|
||||
|
||||
QskInputPanel( QQuickItem* parent = nullptr );
|
||||
virtual ~QskInputPanel() override;
|
||||
QskVirtualKeyboard( QQuickItem* parent = nullptr );
|
||||
virtual ~QskVirtualKeyboard() override;
|
||||
|
||||
virtual QskAspect::Subcontrol effectiveSubcontrol( QskAspect::Subcontrol subControl ) const override;
|
||||
|
||||
void updateLocale( const QLocale& locale );
|
||||
|
||||
void setMode( QskInputPanel::Mode index );
|
||||
void setMode( QskVirtualKeyboard::Mode index );
|
||||
Mode mode() const;
|
||||
|
||||
const KeyDataSet& keyData( QskInputPanel::Mode = CurrentMode ) const;
|
||||
const KeyDataSet& keyData( QskVirtualKeyboard::Mode = CurrentMode ) const;
|
||||
|
||||
QString textForKey( int ) const;
|
||||
QString displayLanguageName() const;
|
||||
@ -107,14 +107,14 @@ public:
|
||||
void registerCompositionModelForLocale( const QLocale& locale,
|
||||
QskInputCompositionModel* model );
|
||||
|
||||
public Q_SLOTS:
|
||||
void setPreeditGroups( const QVector< Qt::Key >& );
|
||||
void setPreeditCandidates( const QVector< Qt::Key >& );
|
||||
|
||||
void handleKey( int keyIndex );
|
||||
KeyData& keyDataAt( int ) const;
|
||||
QString currentTextForKeyIndex( int keyIndex ) const;
|
||||
|
||||
public Q_SLOTS:
|
||||
void setPreeditGroups( const QVector< Qt::Key >& );
|
||||
void setPreeditCandidates( const QVector<Qt::Key> & );
|
||||
|
||||
protected:
|
||||
virtual void geometryChanged( const QRectF&, const QRectF& ) override;
|
||||
virtual void updateLayout() override;
|
||||
@ -136,14 +136,14 @@ Q_SIGNALS:
|
||||
void inputMethodRegistered( const QLocale& locale, QskInputCompositionModel* model );
|
||||
void inputMethodEventReceived( QInputMethodEvent* inputMethodEvent );
|
||||
void keyEventReceived( QKeyEvent* keyEvent );
|
||||
void modeChanged( QskInputPanel::Mode mode );
|
||||
void modeChanged( QskVirtualKeyboard::Mode mode );
|
||||
void cancelPressed();
|
||||
|
||||
public:
|
||||
private:
|
||||
class PrivateData;
|
||||
std::unique_ptr< PrivateData > m_data;
|
||||
};
|
||||
|
||||
Q_DECLARE_TYPEINFO( QskInputPanel::KeyData, Q_PRIMITIVE_TYPE );
|
||||
Q_DECLARE_TYPEINFO( QskVirtualKeyboard::KeyData, Q_PRIMITIVE_TYPE );
|
||||
|
||||
#endif
|
@ -135,7 +135,6 @@ HEADERS += \
|
||||
controls/QskGraphicLabel.h \
|
||||
controls/QskGraphicLabelSkinlet.h \
|
||||
controls/QskHintAnimator.h \
|
||||
controls/QskInputPanel.h \
|
||||
controls/QskListView.h \
|
||||
controls/QskListViewSkinlet.h \
|
||||
controls/QskObjectTree.h \
|
||||
@ -181,6 +180,7 @@ HEADERS += \
|
||||
controls/QskTextLabel.h \
|
||||
controls/QskTextLabelSkinlet.h \
|
||||
controls/QskVariantAnimator.h \
|
||||
controls/QskVirtualKeyboard.h \
|
||||
controls/QskWindow.h
|
||||
|
||||
SOURCES += \
|
||||
@ -199,7 +199,6 @@ SOURCES += \
|
||||
controls/QskGraphicLabel.cpp \
|
||||
controls/QskGraphicLabelSkinlet.cpp \
|
||||
controls/QskHintAnimator.cpp \
|
||||
controls/QskInputPanel.cpp \
|
||||
controls/QskListView.cpp \
|
||||
controls/QskListViewSkinlet.cpp \
|
||||
controls/QskObjectTree.cpp \
|
||||
@ -245,6 +244,7 @@ SOURCES += \
|
||||
controls/QskTextLabel.cpp \
|
||||
controls/QskTextLabelSkinlet.cpp \
|
||||
controls/QskVariantAnimator.cpp \
|
||||
controls/QskVirtualKeyboard.cpp \
|
||||
controls/QskWindow.cpp
|
||||
|
||||
HEADERS += \
|
||||
|
Loading…
x
Reference in New Issue
Block a user