Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qibustypes.cpp
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#include "qibustypes.h"
5
6#include <QHash>
7
9
10Q_LOGGING_CATEGORY(qtQpaInputMethods, "qt.qpa.input.methods")
11Q_LOGGING_CATEGORY(qtQpaInputMethodsSerialize, "qt.qpa.input.methods.serialize")
12
16
18{
19 argument >> name;
20
22 while (!argument.atEnd()) {
26 argument >> key;
27 argument >> value;
29 attachments[key] = qvariant_cast<QDBusArgument>(value.variant());
30 }
32}
33
35{
36 argument << name;
37
38 argument.beginMap(qMetaTypeId<QString>(), qMetaTypeId<QDBusVariant>());
39
40 for (auto i = attachments.begin(), end = attachments.end(); i != end; ++i) {
42 argument << i.key();
43
44 QDBusVariant variant(i.value().asVariant());
45
48 }
50}
51
53 : type(Invalid),
54 value(0),
55 start(0),
56 end(0)
57{
58 name = "IBusAttribute";
59}
60
75
91
93{
95 switch (type) {
96 case Invalid:
97 break;
98 case Underline: {
100
101 switch (value) {
102 case UnderlineNone:
103 break;
104 case UnderlineSingle:
106 break;
107 case UnderlineDouble:
109 break;
110 case UnderlineLow:
112 break;
113 case UnderlineError:
116 break;
117 }
118
119 fmt.setUnderlineStyle(style);
120 break;
121 }
122 case Foreground:
123 fmt.setForeground(QColor(value));
124 break;
125 case Background:
126 fmt.setBackground(QColor(value));
127 break;
128 }
129 return fmt;
130}
131
133{
134 name = "IBusAttrList";
135}
136
138{
140
142
143 argument.beginArray(qMetaTypeId<QDBusVariant>());
144 for (int i = 0; i < attributes.size(); ++i) {
148 }
150
152}
153
155{
156 qCDebug(qtQpaInputMethodsSerialize) << "QIBusAttributeList::fromDBusArgument()" << arg.currentSignature();
157
158 arg.beginStructure();
159
161
162 arg.beginArray();
163 while (!arg.atEnd()) {
165 arg >> var;
166
167 QIBusAttribute attr;
168 qvariant_cast<QDBusArgument>(var.variant()) >> attr;
169 attributes.append(std::move(attr));
170 }
171 arg.endArray();
172
173 arg.endStructure();
174}
175
176QList<QInputMethodEvent::Attribute> QIBusAttributeList::imAttributes() const
177{
178 QHash<QPair<int, int>, QTextCharFormat> rangeAttrs;
179 const int numAttributes = attributes.size();
180
181 // Merge text formats for identical ranges into a single QTextFormat.
182 for (int i = 0; i < numAttributes; ++i) {
183 const QIBusAttribute &attr = attributes.at(i);
184 const QTextCharFormat &format = attr.format();
185
186 if (format.isValid()) {
187 const QPair<int, int> range(attr.start, attr.end);
188 rangeAttrs[range].merge(format);
189 }
190 }
191
192 // Assemble list in original attribute order.
193 QList<QInputMethodEvent::Attribute> imAttrs;
194 imAttrs.reserve(numAttributes);
195
196 for (int i = 0; i < numAttributes; ++i) {
197 const QIBusAttribute &attr = attributes.at(i);
198 const QTextFormat &format = attr.format();
199
201 attr.start,
202 attr.end - attr.start,
203 format.isValid() ? rangeAttrs[QPair<int, int>(attr.start, attr.end)] : format);
204 }
205
206 return imAttrs;
207}
208
210{
211 name = "IBusText";
212}
213
223
225{
226 qCDebug(qtQpaInputMethodsSerialize) << "QIBusText::fromDBusArgument()" << argument.currentSignature();
227
229
231
232 argument >> text;
234 argument >> variant;
235 qvariant_cast<QDBusArgument>(variant.variant()) >> attributes;
236
238}
239
241 : rank(0)
242{
243 name = "IBusEngineDesc";
244}
245
272
274{
275 qCDebug(qtQpaInputMethodsSerialize) << "QIBusEngineDesc::fromDBusArgument()" << argument.currentSignature();
277
279
284 argument >> license;
285 argument >> author;
286 argument >> icon;
287 argument >> layout;
288 argument >> rank;
289 argument >> hotkeys;
290 argument >> symbol;
291 argument >> setup;
292 // Previous IBusEngineDesc supports the arguments between engine_name
293 // and setup.
294 if (argument.currentSignature() == "")
295 goto olderThanV2;
298 // Previous IBusEngineDesc supports the arguments between engine_name
299 // and layout_option.
300 if (argument.currentSignature() == "")
301 goto olderThanV3;
302 argument >> version;
303 if (argument.currentSignature() == "")
304 goto olderThanV4;
306 if (argument.currentSignature() == "")
307 goto olderThanV5;
309 // <-- insert new member streaming here (1/2)
310 goto newest;
311olderThanV2:
314olderThanV3:
315 version.clear();
316olderThanV4:
318olderThanV5:
320 // <-- insert new members here (2/2)
321newest:
323}
324
326 : clientCommitPreedit(inClientCommitPreedit)
327{
328}
329
336
343
344QIBusPropTypeContentType::QIBusPropTypeContentType(unsigned int inPurpose, unsigned int inHints)
345 : purpose(inPurpose)
346 , hints(inHints)
347{
348}
349
356
364
static JNINativeMethod methods[]
The QColor class provides colors based on RGB, HSV or CMYK values.
Definition qcolor.h:31
\inmodule QtDBus
void beginMapEntry()
Opens a D-Bus map entry suitable for appending the key and value entries.
void endArray()
Closes a D-Bus array opened with beginArray().
void endMapEntry()
Closes a D-Bus map entry opened with beginMapEntry().
void beginStructure()
Opens a new D-Bus structure suitable for appending new arguments.
void endMap()
Closes a D-Bus map opened with beginMap().
bool atEnd() const
Returns true if there are no more elements to be extracted from this QDBusArgument.
QString currentSignature() const
void endStructure()
Closes a D-Bus structure opened with beginStructure().
void beginArray(int elementMetaTypeId)
void beginMap(int keyMetaTypeId, int valueMetaTypeId)
\inmodule QtDBus
QList< QIBusAttribute > attributes
Definition qibustypes.h:71
QList< QInputMethodEvent::Attribute > imAttributes() const
void deserializeFrom(const QDBusArgument &argument)
void serializeTo(QDBusArgument &argument) const
QTextCharFormat format() const
quint32 start
Definition qibustypes.h:56
void deserializeFrom(const QDBusArgument &argument)
quint32 value
Definition qibustypes.h:55
void serializeTo(QDBusArgument &argument) const
unsigned int rank
Definition qibustypes.h:104
QString textdomain
Definition qibustypes.h:111
QString iconpropkey
Definition qibustypes.h:112
void serializeTo(QDBusArgument &argument) const
QString longname
Definition qibustypes.h:97
void deserializeFrom(const QDBusArgument &argument)
QString layout_variant
Definition qibustypes.h:108
QString language
Definition qibustypes.h:99
QString layout_option
Definition qibustypes.h:109
QString engine_name
Definition qibustypes.h:96
QString description
Definition qibustypes.h:98
void deserializeFrom(const QDBusArgument &argument)
void serializeTo(QDBusArgument &argument) const
void serializeTo(QDBusArgument &argument) const
void deserializeFrom(const QDBusArgument &argument)
void serializeTo(QDBusArgument &argument) const
void deserializeFrom(const QDBusArgument &argument)
void deserializeFrom(const QDBusArgument &argument)
QIBusAttributeList attributes
Definition qibustypes.h:84
QString text
Definition qibustypes.h:83
void serializeTo(QDBusArgument &argument) const
qsizetype size() const noexcept
Definition qlist.h:397
const_reference at(qsizetype i) const noexcept
Definition qlist.h:446
void append(parameter_type t)
Definition qlist.h:458
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
void clear()
Clears the contents of the string and makes it null.
Definition qstring.h:1252
UnderlineStyle
This enum describes the different ways drawing underlined text.
void setUnderlineColor(const QColor &color)
Sets the color used to draw underlines, overlines and strikeouts on the characters with this format t...
\reentrant
Definition qtextformat.h:90
\inmodule QtCore
Definition qvariant.h:65
void setValue(T &&avalue)
Definition qvariant.h:493
Combined button and popup list for selecting options.
@ red
Definition qnamespace.h:35
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
#define Q_LOGGING_CATEGORY(name,...)
#define qCDebug(category,...)
@ Invalid
GLuint64 key
GLuint GLuint end
GLsizei range
GLenum type
GLsizei const GLenum * attachments
GLuint start
GLuint name
GLint GLsizei GLsizei GLenum format
GLdouble GLdouble t
Definition qopenglext.h:243
GLenum GLenum GLenum input
SSL_CTX int void * arg
unsigned int quint32
Definition qtypes.h:50
QVideoFrameFormat::PixelFormat fmt
QVariant variant
[1]
QDBusArgument argument