qskinny/src/inputpanel/QskInputContext.h

84 lines
2.0 KiB
C
Raw Normal View History

2018-02-06 14:55:35 +01:00
/******************************************************************************
* QSkinny - Copyright (C) 2016 Uwe Rathmann
* This file may be used under the terms of the QSkinny License, Version 1.0
*****************************************************************************/
2017-07-21 18:21:34 +02:00
#ifndef QSK_INPUT_CONTEXT_H
#define QSK_INPUT_CONTEXT_H
#include "QskGlobal.h"
#include <QObject>
#include <Qt>
#include <QInputMethod>
2017-07-21 18:21:34 +02:00
#include <memory>
class QskTextPredictor;
2018-06-12 08:20:48 +02:00
class QskInputPanel;
class QskInputEngine;
2018-04-30 10:03:51 +02:00
class QskPopup;
class QskWindow;
2018-04-03 20:15:20 +02:00
class QQuickItem;
2018-04-20 08:52:26 +02:00
2018-06-12 08:20:48 +02:00
class QSK_EXPORT QskInputContextFactory : public QObject
{
Q_OBJECT
public:
QskInputContextFactory( QObject* parent = nullptr );
virtual ~QskInputContextFactory();
virtual QskTextPredictor* createPredictor( const QLocale& ) const;
virtual QskInputPanel* createPanel() const;
};
class QSK_EXPORT QskInputContext : public QObject
2017-07-21 18:21:34 +02:00
{
Q_OBJECT
using Inherited = QObject;
2017-07-21 18:21:34 +02:00
public:
QskInputContext();
2018-04-01 12:47:44 +02:00
virtual ~QskInputContext();
2018-06-12 08:20:48 +02:00
void setFactory( QskInputContextFactory* );
QskInputContextFactory* factory() const;
2018-04-01 12:47:44 +02:00
2018-06-01 12:00:31 +02:00
QRectF panelRect() const;
2017-07-21 18:21:34 +02:00
void setInputPanelVisible( const QQuickItem*, bool );
bool isInputPanelVisible() const;
2018-06-01 12:00:31 +02:00
QLocale locale() const;
QQuickItem* inputItem() const;
2018-04-03 20:15:20 +02:00
static QskInputContext* instance();
static void setInstance( QskInputContext* );
2018-04-04 12:05:01 +02:00
2018-06-12 08:20:48 +02:00
QskTextPredictor* textPredictor( const QLocale& locale );
2018-06-01 12:00:31 +02:00
Q_SIGNALS:
void activeChanged();
void panelRectChanged();
2017-07-21 18:21:34 +02:00
2018-04-27 13:48:51 +02:00
protected:
virtual void showPanel( const QQuickItem* );
virtual void hidePanel( const QQuickItem* );
2017-07-21 18:21:34 +02:00
private:
friend class QskPlatformInputContext;
// called from QskPlatformInputContext
virtual void setFocusObject( QObject* );
virtual void update( const QQuickItem*, Qt::InputMethodQueries );
virtual void invokeAction( QInputMethod::Action, int cursorPosition );
void commitPrediction( bool );
2018-06-12 08:20:48 +02:00
2018-04-01 12:47:44 +02:00
class PrivateData;
std::unique_ptr< PrivateData > m_data;
2017-07-21 18:21:34 +02:00
};
#endif