Qt 4.8
Public Functions | Static Public Functions | List of all members
QWSInputContext Class Reference

#include <qwsinputcontext_p.h>

Inheritance diagram for QWSInputContext:
QInputContext QObject

Public Functions

QString identifierName ()
 This function must be implemented in any subclasses to return the identifier name of the input method. More...
 
bool isComposing () const
 This function indicates whether InputMethodStart event had been sent to the current focus widget. More...
 
QString language ()
 This function must be implemented in any subclasses to return a language code (e. More...
 
void mouseHandler (int x, QMouseEvent *event)
 This function can be reimplemented in a subclass to handle mouse press, release, double-click, and move events within the preedit text. More...
 
 QWSInputContext (QObject *parent=0)
 
void reset ()
 This function can be reimplemented in a subclass to reset the state of the input method. More...
 
void setFocusWidget (QWidget *w)
 Sets the widget that has an input focus for this input context. More...
 
void update ()
 This virtual function is called when a state in the focus widget has changed. More...
 
void widgetDestroyed (QWidget *w)
 This virtual function is called when the specified widget is destroyed. More...
 
 ~QWSInputContext ()
 
- Public Functions inherited from QInputContext
virtual QList< QAction * > actions ()
 This is a preliminary interface for Qt 4. More...
 
virtual bool filterEvent (const QEvent *event)
 This function can be reimplemented in a subclass to filter input events. More...
 
QWidgetfocusWidget () const
 Returns the widget that has an input focus for this input context. More...
 
virtual QFont font () const
 Returns the font of the current input widget. More...
 
 QInputContext (QObject *parent=0)
 Constructs an input context with the given parent. More...
 
void sendEvent (const QInputMethodEvent &event)
 Sends an input method event specified by event to the current focus widget. More...
 
QTextFormat standardFormat (StandardFormat s) const
 Returns a QTextFormat object that specifies the format for component s. More...
 
virtual bool x11FilterEvent (QWidget *keywidget, XEvent *event)
 This function may be overridden only if input method is depending on X11 and you need raw XEvent. More...
 
virtual ~QInputContext ()
 Destroys the input context. More...
 
- Public Functions inherited from QObject
bool blockSignals (bool b)
 If block is true, signals emitted by this object are blocked (i.e., emitting a signal will not invoke anything connected to it). More...
 
const QObjectListchildren () const
 Returns a list of child objects. More...
 
bool connect (const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoConnection) const
 
bool disconnect (const char *signal=0, const QObject *receiver=0, const char *member=0)
 
bool disconnect (const QObject *receiver, const char *member=0)
 
void dumpObjectInfo ()
 Dumps information about signal connections, etc. More...
 
void dumpObjectTree ()
 Dumps a tree of children to the debug output. More...
 
QList< QByteArraydynamicPropertyNames () const
 Returns the names of all properties that were dynamically added to the object using setProperty(). More...
 
virtual bool event (QEvent *)
 This virtual function receives events to an object and should return true if the event e was recognized and processed. More...
 
virtual bool eventFilter (QObject *, QEvent *)
 Filters events if this object has been installed as an event filter for the watched object. More...
 
template<typename T >
findChild (const QString &aName=QString()) const
 Returns the child of this object that can be cast into type T and that is called name, or 0 if there is no such object. More...
 
template<typename T >
QList< T > findChildren (const QString &aName=QString()) const
 Returns all children of this object with the given name that can be cast to type T, or an empty list if there are no such objects. More...
 
template<typename T >
QList< T > findChildren (const QRegExp &re) const
 
bool inherits (const char *classname) const
 Returns true if this object is an instance of a class that inherits className or a QObject subclass that inherits className; otherwise returns false. More...
 
void installEventFilter (QObject *)
 Installs an event filter filterObj on this object. More...
 
bool isWidgetType () const
 Returns true if the object is a widget; otherwise returns false. More...
 
void killTimer (int id)
 Kills the timer with timer identifier, id. More...
 
virtual const QMetaObjectmetaObject () const
 Returns a pointer to the meta-object of this object. More...
 
void moveToThread (QThread *thread)
 Changes the thread affinity for this object and its children. More...
 
QString objectName () const
 
QObjectparent () const
 Returns a pointer to the parent object. More...
 
QVariant property (const char *name) const
 Returns the value of the object's name property. More...
 
Q_INVOKABLE QObject (QObject *parent=0)
 Constructs an object with parent object parent. More...
 
void removeEventFilter (QObject *)
 Removes an event filter object obj from this object. More...
 
void setObjectName (const QString &name)
 
void setParent (QObject *)
 Makes the object a child of parent. More...
 
bool setProperty (const char *name, const QVariant &value)
 Sets the value of the object's name property to value. More...
 
void setUserData (uint id, QObjectUserData *data)
 
bool signalsBlocked () const
 Returns true if signals are blocked; otherwise returns false. More...
 
int startTimer (int interval)
 Starts a timer and returns a timer identifier, or returns zero if it could not start a timer. More...
 
QThreadthread () const
 Returns the thread in which the object lives. More...
 
QObjectUserDatauserData (uint id) const
 
virtual ~QObject ()
 Destroys the object, deleting all its child objects. More...
 

Static Public Functions

static QWidgetactiveWidget ()
 
static bool translateIMEvent (QWidget *w, const QWSIMEvent *e)
 
static bool translateIMInitEvent (const QWSIMInitEvent *e)
 
static bool translateIMQueryEvent (QWidget *w, const QWSIMQueryEvent *e)
 
static void updateImeStatus (QWidget *w, bool hasFocus)
 
- Static Public Functions inherited from QObject
static bool connect (const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
 Creates a connection of the given type from the signal in the sender object to the method in the receiver object. More...
 
static bool connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type=Qt::AutoConnection)
 
static bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *member)
 Disconnects signal in object sender from method in object receiver. More...
 
static bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &member)
 
static uint registerUserData ()
 
static QString tr (const char *sourceText, const char *comment=0, int n=-1)
 
static QString trUtf8 (const char *sourceText, const char *comment=0, int n=-1)
 

Additional Inherited Members

- Public Types inherited from QInputContext
enum  StandardFormat { PreeditFormat, SelectionFormat }
 
- Public Slots inherited from QObject
void deleteLater ()
 Schedules this object for deletion. More...
 
- Signals inherited from QObject
void destroyed (QObject *=0)
 This signal is emitted immediately before the object obj is destroyed, and can not be blocked. More...
 
- Static Public Variables inherited from QObject
static const QMetaObject staticMetaObject
 This variable stores the meta-object for the class. More...
 
- Protected Functions inherited from QObject
virtual void childEvent (QChildEvent *)
 This event handler can be reimplemented in a subclass to receive child events. More...
 
virtual void connectNotify (const char *signal)
 This virtual function is called when something has been connected to signal in this object. More...
 
virtual void customEvent (QEvent *)
 This event handler can be reimplemented in a subclass to receive custom events. More...
 
virtual void disconnectNotify (const char *signal)
 This virtual function is called when something has been disconnected from signal in this object. More...
 
 QObject (QObjectPrivate &dd, QObject *parent=0)
 
int receivers (const char *signal) const
 Returns the number of receivers connected to the signal. More...
 
QObjectsender () const
 Returns a pointer to the object that sent the signal, if called in a slot activated by a signal; otherwise it returns 0. More...
 
int senderSignalIndex () const
 
virtual void timerEvent (QTimerEvent *)
 This event handler can be reimplemented in a subclass to receive timer events for the object. More...
 
- Protected Variables inherited from QObject
QScopedPointer< QObjectDatad_ptr
 
- Static Protected Variables inherited from QObject
static const QMetaObject staticQtMetaObject
 

Detailed Description

Definition at line 66 of file qwsinputcontext_p.h.

Constructors and Destructors

◆ QWSInputContext()

QWSInputContext::QWSInputContext ( QObject parent = 0)
explicit

Definition at line 63 of file qwsinputcontext_qws.cpp.

64  :QInputContext(parent)
65 {
66 }
QInputContext(QObject *parent=0)
Constructs an input context with the given parent.

◆ ~QWSInputContext()

QWSInputContext::~QWSInputContext ( )
inline

Definition at line 71 of file qwsinputcontext_p.h.

71 {}

Functions

◆ activeWidget()

QWidget * QWSInputContext::activeWidget ( )
static

Definition at line 139 of file qwsinputcontext_qws.cpp.

Referenced by language().

140 {
142 }
static QWidget * activeWidget()
#define QT_PREPEND_NAMESPACE(name)
This macro qualifies identifier with the full namespace.
Definition: qglobal.h:87

◆ identifierName()

QString QWSInputContext::identifierName ( )
inlinevirtual

This function must be implemented in any subclasses to return the identifier name of the input method.

Return value is the name to identify and specify input methods for the input method switching mechanism and so on. The name has to be consistent with QInputContextPlugin::keys(). The name has to consist of ASCII characters only.

There are two different names with different responsibility in the input method domain. This function returns one of them. Another name is called 'display name' that stands for the name for endusers appeared in a menu and so on.

See also
QInputContextPlugin::keys(), QInputContextPlugin::displayName()

Implements QInputContext.

Definition at line 74 of file qwsinputcontext_p.h.

74 { return QString(); }
The QString class provides a Unicode character string.
Definition: qstring.h:83

◆ isComposing()

bool QWSInputContext::isComposing ( ) const
virtual

This function indicates whether InputMethodStart event had been sent to the current focus widget.

It is ensured that an input context can send InputMethodCompose or InputMethodEnd event safely if this function returned true.

The state is automatically being tracked through sendEvent().

See also
sendEvent()

Implements QInputContext.

Definition at line 145 of file qwsinputcontext_qws.cpp.

Referenced by language().

146 {
147  return QT_PREPEND_NAMESPACE(activeWidget) != 0;
148 }
static QWidget * activeWidget()
#define QT_PREPEND_NAMESPACE(name)
This macro qualifies identifier with the full namespace.
Definition: qglobal.h:87

◆ language()

QString QWSInputContext::language ( )
inlinevirtual

This function must be implemented in any subclasses to return a language code (e.

g. "zh_CN", "zh_TW", "zh_HK", "ja", "ko", ...) of the input context. If the input context can handle multiple languages, return the currently used one. The name has to be consistent with QInputContextPlugin::language().

This information will be used by language tagging feature in QInputMethodEvent. It is required to distinguish unified han characters correctly. It enables proper font and character code handling. Suppose CJK-awared multilingual web browser (that automatically modifies fonts in CJK-mixed text) and XML editor (that automatically inserts lang attr).

Implements QInputContext.

Definition at line 75 of file qwsinputcontext_p.h.

75 { return QString(); }
The QString class provides a Unicode character string.
Definition: qstring.h:83

◆ mouseHandler()

void QWSInputContext::mouseHandler ( int  x,
QMouseEvent event 
)
virtual

This function can be reimplemented in a subclass to handle mouse press, release, double-click, and move events within the preedit text.

You can use the function to implement mouse-oriented user interface such as text selection or popup menu for candidate selection.

The x parameter is the offset within the string that was sent with the InputMethodCompose event. The alteration boundary of x is ensured as character boundary of preedit string accurately.

The event parameter is the event that was sent to the editor widget. The event type is QEvent::MouseButtonPress, QEvent::MouseButtonRelease, QEvent::MouseButtonDblClick or QEvent::MouseMove. The event's button and state indicate the kind of operation that was performed.

Reimplemented from QInputContext.

Definition at line 133 of file qwsinputcontext_qws.cpp.

Referenced by language().

134 {
135  if (event->type() == QEvent::MouseButtonPress || event->type() == QEvent::MouseButtonRelease)
137 }
static QWSDisplay * qwsDisplay()
void sendIMMouseEvent(int index, bool isPress)
Type type() const
Returns the event type.
Definition: qcoreevent.h:303

◆ reset()

void QWSInputContext::reset ( )
virtual

This function can be reimplemented in a subclass to reset the state of the input method.

This function is called by several widgets to reset input state. For example, a text widget call this function before inserting a text to make widget ready to accept a text.

Default implementation is sufficient for simple input method. You can override this function to reset external input method engines in complex input method. In the case, call QInputContext::reset() to ensure proper termination of inputting.

In a reimplementation of reset(), you must not send any QInputMethodEvent containing preedit text. You can only commit string and attributes; otherwise, you risk breaking input state consistency.

Implements QInputContext.

Definition at line 68 of file qwsinputcontext_qws.cpp.

Referenced by language().

69 {
71 }
static QWSDisplay * qwsDisplay()

◆ setFocusWidget()

void QWSInputContext::setFocusWidget ( QWidget widget)
virtual

Sets the widget that has an input focus for this input context.

Warning
Ordinary input methods must not call this function directly.
See also
focusWidget()

Reimplemented from QInputContext.

Definition at line 74 of file qwsinputcontext_qws.cpp.

Referenced by language().

75 {
76  QWidget *oldFocus = focusWidget();
77  if (oldFocus == w)
78  return;
79 
80  if (w) {
82  } else {
83  if (oldFocus)
84  QWSInputContext::updateImeStatus(oldFocus, false);
85  }
86 
87  if (oldFocus) {
88  QWidget *tlw = oldFocus->window();
89  int winid = tlw->internalWinId();
90 
91  int widgetid = oldFocus->internalWinId();
93  }
94 
96 
97  if (!w)
98  return;
99 
100  QWidget *tlw = w->window();
101  int winid = tlw->winId();
102 
103  int widgetid = w->winId();
105 
106  //setfocus ???
107 
108  update();
109 }
static QWSDisplay * qwsDisplay()
The QWidget class is the base class of all user interface objects.
Definition: qwidget.h:150
void sendIMUpdate(int type, int winId, int widgetid)
QWidget * focusWidget() const
Returns the widget that has an input focus for this input context.
static void updateImeStatus(QWidget *w, bool hasFocus)
WId internalWinId() const
Returns the window system identifier of the widget, or 0 if the widget is not created yet...
Definition: qwidget.h:244
QWidget * window() const
Returns the window for this widget, i.e.
Definition: qwidget.cpp:4492
WId winId() const
Returns the window system identifier of the widget.
Definition: qwidget.cpp:2557
virtual void setFocusWidget(QWidget *w)
Sets the widget that has an input focus for this input context.
void update()
This virtual function is called when a state in the focus widget has changed.

◆ translateIMEvent()

bool QWSInputContext::translateIMEvent ( QWidget w,
const QWSIMEvent e 
)
static

Definition at line 176 of file qwsinputcontext_qws.cpp.

Referenced by language(), and QApplication::qwsProcessEvent().

177 {
179  QString preedit;
180  QString commit;
181 
182  stream >> preedit;
183  stream >> commit;
184 
185  if (preedit.isEmpty() && QT_PREPEND_NAMESPACE(activeWidget))
187 
188  QInputContext *qic = w->inputContext();
189  if (!qic)
190  return false;
191 
193 
194 
195  while (!stream.atEnd()) {
196  int type = -1;
197  int start = -1;
198  int length = -1;
199  QVariant data;
200  stream >> type >> start >> length >> data;
201  if (stream.status() != QDataStream::Ok) {
202  qWarning("corrupted QWSIMEvent");
203  //qic->reset(); //???
204  return false;
205  }
206  if (type == QInputMethodEvent::TextFormat)
207  data = qic->standardFormat(static_cast<QInputContext::StandardFormat>(data.toInt()));
208  attrs << QInputMethodEvent::Attribute(static_cast<QInputMethodEvent::AttributeType>(type), start, length, data);
209  }
210 #ifdef EXTRA_DEBUG
211  qDebug() << "preedit" << preedit << "len" << preedit.length() <<"commit" << commit << "len" << commit.length()
212  << "n attr" << attrs.count();
213 #endif
214 
215  if (preedit.isEmpty())
217  else
219 
220 
221  QInputMethodEvent ime(preedit, attrs);
222  if (!commit.isEmpty() || e->simpleData.replaceLength > 0)
223  ime.setCommitString(commit, e->simpleData.replaceFrom, e->simpleData.replaceLength);
224 
225 
226  extern bool qt_sendSpontaneousEvent(QObject *, QEvent *); //qapplication_qws.cpp
227  qt_sendSpontaneousEvent(w, &ime);
228 
229  return true;
230 }
The QVariant class acts like a union for the most common Qt data types.
Definition: qvariant.h:92
int type
Definition: qmetatype.cpp:239
static QWidget * activeWidget()
int count(const T &t) const
Returns the number of occurrences of value in the list.
Definition: qlist.h:891
The QString class provides a Unicode character string.
Definition: qstring.h:83
The QObject class is the base class of all Qt objects.
Definition: qobject.h:111
Q_CORE_EXPORT void qDebug(const char *,...)
static FILE * stream
QTextFormat standardFormat(StandardFormat s) const
Returns a QTextFormat object that specifies the format for component s.
QByteArray streamingData
Definition: qwsevent_qws.h:388
#define QT_PREPEND_NAMESPACE(name)
This macro qualifies identifier with the full namespace.
Definition: qglobal.h:87
Q_CORE_EXPORT void qWarning(const char *,...)
static const char * data(const QByteArray &arr)
QInputContext * inputContext()
This function returns the QInputContext for this widget.
Definition: qwidget.cpp:474
The QInputMethodEvent class provides parameters for input method events.
Definition: qevent.h:431
bool qt_sendSpontaneousEvent(QObject *, QEvent *)
The QDataStream class provides serialization of binary data to a QIODevice.
Definition: qdatastream.h:71
The QInputContext class abstracts the input method dependent data and composing state.
Definition: qinputcontext.h:83
The QEvent class is the base class of all event classes.
Definition: qcoreevent.h:56
struct QWSIMEvent::SimpleData simpleData

◆ translateIMInitEvent()

bool QWSInputContext::translateIMInitEvent ( const QWSIMInitEvent e)
static

Definition at line 169 of file qwsinputcontext_qws.cpp.

Referenced by language(), and QApplication::qwsProcessEvent().

170 {
171  Q_UNUSED(e);
172  qDebug("### QWSInputContext::translateIMInitEvent not implemented ###");
173  return false;
174 }
Q_CORE_EXPORT void qDebug(const char *,...)
#define Q_UNUSED(x)
Indicates to the compiler that the parameter with the specified name is not used in the body of a fun...
Definition: qglobal.h:1729

◆ translateIMQueryEvent()

bool QWSInputContext::translateIMQueryEvent ( QWidget w,
const QWSIMQueryEvent e 
)
static

Definition at line 150 of file qwsinputcontext_qws.cpp.

Referenced by language(), and QApplication::qwsProcessEvent().

151 {
153  QVariant result = w->inputMethodQuery(type);
154  QWidget *tlw = w->window();
155  int winId = tlw->winId();
156 
157  if ( type == Qt::ImMicroFocus ) {
158  // translate to relative to tlw
159  QRect mf = result.toRect();
160  mf.moveTopLeft(w->mapTo(tlw,mf.topLeft()));
161  result = mf;
162  }
163 
165 
166  return false;
167 }
The QVariant class acts like a union for the most common Qt data types.
Definition: qvariant.h:92
int type
Definition: qmetatype.cpp:239
QPoint mapTo(QWidget *, const QPoint &) const
Translates the widget coordinate pos to the coordinate system of parent.
Definition: qwidget.cpp:4409
static QWSDisplay * qwsDisplay()
void sendIMResponse(int winId, int property, const QVariant &result)
The QWidget class is the base class of all user interface objects.
Definition: qwidget.h:150
virtual QVariant inputMethodQuery(Qt::InputMethodQuery) const
This method is only relevant for input widgets.
Definition: qwidget.cpp:9683
struct QWSIMQueryEvent::SimpleData simpleData
void moveTopLeft(const QPoint &p)
Moves the rectangle, leaving the top-left corner at the given position.
Definition: qrect.h:368
InputMethodQuery
Definition: qnamespace.h:1541
QRect toRect() const
Returns the variant as a QRect if the variant has type() Rect ; otherwise returns an invalid QRect...
Definition: qvariant.cpp:2416
The QRect class defines a rectangle in the plane using integer precision.
Definition: qrect.h:58
QWidget * window() const
Returns the window for this widget, i.e.
Definition: qwidget.cpp:4492
WId winId() const
Returns the window system identifier of the widget.
Definition: qwidget.cpp:2557
QPoint topLeft() const
Returns the position of the rectangle&#39;s top-left corner.
Definition: qrect.h:288

◆ update()

void QWSInputContext::update ( )
virtual

This virtual function is called when a state in the focus widget has changed.

QInputContext can then use QWidget::inputMethodQuery() to query the new state of the widget.

Reimplemented from QInputContext.

Definition at line 119 of file qwsinputcontext_qws.cpp.

Referenced by language(), and setFocusWidget().

120 {
121  QWidget *w = focusWidget();
122  if (!w)
123  return;
124 
125  QWidget *tlw = w->window();
126  int winid = tlw->winId();
127 
128  int widgetid = w->winId();
130 
131 }
static QWSDisplay * qwsDisplay()
The QWidget class is the base class of all user interface objects.
Definition: qwidget.h:150
void sendIMUpdate(int type, int winId, int widgetid)
QWidget * focusWidget() const
Returns the widget that has an input focus for this input context.
QWidget * window() const
Returns the window for this widget, i.e.
Definition: qwidget.cpp:4492
WId winId() const
Returns the window system identifier of the widget.
Definition: qwidget.cpp:2557

◆ updateImeStatus()

void QWSInputContext::updateImeStatus ( QWidget w,
bool  hasFocus 
)
static

Definition at line 234 of file qwsinputcontext_qws.cpp.

Referenced by language(), and setFocusWidget().

235 {
236  Q_UNUSED(hasFocus);
237 
239  return;
241 }
Q_GUI_EXPORT void(* qt_qws_inputMethodStatusChanged)(QWidget *)=0
#define Q_UNUSED(x)
Indicates to the compiler that the parameter with the specified name is not used in the body of a fun...
Definition: qglobal.h:1729

◆ widgetDestroyed()

void QWSInputContext::widgetDestroyed ( QWidget widget)
virtual

This virtual function is called when the specified widget is destroyed.

The widget is a widget on which this input context is installed.

Reimplemented from QInputContext.

Definition at line 112 of file qwsinputcontext_qws.cpp.

Referenced by language().

113 {
117 }
static QWidget * activeWidget()
virtual void widgetDestroyed(QWidget *w)
This virtual function is called when the specified widget is destroyed.
#define QT_PREPEND_NAMESPACE(name)
This macro qualifies identifier with the full namespace.
Definition: qglobal.h:87

The documentation for this class was generated from the following files: