qskinny/src/inputpanel/QskInputContext.h

76 lines
1.8 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>
2017-07-21 18:21:34 +02:00
#include <memory>
class QskTextPredictor;
2018-04-27 13:48:51 +02:00
class QskInputPanel;
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
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();
virtual QRectF panelRect() const;
2018-04-01 12:47:44 +02:00
virtual void setActive( bool );
virtual bool isActive() const;
2017-07-21 18:21:34 +02:00
virtual QLocale locale() const;
virtual QQuickItem* inputItem() const;
virtual QskInputPanel* inputPanel() const;
2018-04-03 20:15:20 +02:00
static QskInputContext* instance();
static void setInstance( QskInputContext* );
2018-04-04 12:05:01 +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 bool eventFilter( QObject*, QEvent* ) override;
2018-04-30 10:03:51 +02:00
virtual QskPopup* createEmbeddingPopup( QskInputPanel* );
virtual QskWindow* createEmbeddingWindow( QskInputPanel* );
virtual void showPanel();
virtual void hidePanel();
virtual QskTextPredictor* textPredictor( const QLocale& ) const;
2017-07-21 18:21:34 +02:00
private:
friend class QskPlatformInputContext;
// called from QskPlatformInputContext
virtual void setFocusObject( QObject* );
virtual void update( Qt::InputMethodQueries );
virtual void processClickAt( int cursorPosition );
virtual void commitPrediction( bool );
void updateLocale();
void updatePredictor();
2018-04-01 12:47:44 +02:00
class PrivateData;
std::unique_ptr< PrivateData > m_data;
2017-07-21 18:21:34 +02:00
};
2018-04-27 13:48:51 +02:00
#endif