summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforminputcontexts/ibus/qibustypes.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/platforminputcontexts/ibus/qibustypes.cpp')
-rw-r--r--src/plugins/platforminputcontexts/ibus/qibustypes.cpp209
1 files changed, 209 insertions, 0 deletions
diff --git a/src/plugins/platforminputcontexts/ibus/qibustypes.cpp b/src/plugins/platforminputcontexts/ibus/qibustypes.cpp
new file mode 100644
index 0000000000..8d8c61afb7
--- /dev/null
+++ b/src/plugins/platforminputcontexts/ibus/qibustypes.cpp
@@ -0,0 +1,209 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the plugins of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qibustypes.h"
+#include <qtextformat.h>
+#include <QtDBus>
+
+QIBusSerializable::QIBusSerializable()
+{
+}
+
+QIBusSerializable::~QIBusSerializable()
+{
+}
+
+void QIBusSerializable::fromDBusArgument(const QDBusArgument &arg)
+{
+ arg >> name;
+ arg.beginMap();
+ while (!arg.atEnd()) {
+ arg.beginMapEntry();
+ QString key;
+ QDBusVariant value;
+ arg >> key;
+ arg >> value;
+ arg.endMapEntry();
+ attachments[key] = value.variant().value<QDBusArgument>();
+ }
+ arg.endMap();
+}
+
+
+
+QIBusAttribute::QIBusAttribute()
+ : type(Invalid),
+ value(0),
+ start(0),
+ end(0)
+{
+}
+
+QIBusAttribute::~QIBusAttribute()
+{
+
+}
+
+void QIBusAttribute::fromDBusArgument(const QDBusArgument &arg)
+{
+// qDebug() << "QIBusAttribute::fromDBusArgument()" << arg.currentSignature();
+ arg.beginStructure();
+
+ QIBusSerializable::fromDBusArgument(arg);
+
+ quint32 t;
+ arg >> t;
+ type = (Type)t;
+ arg >> value;
+ arg >> start;
+ arg >> end;
+
+ arg.endStructure();
+}
+
+QTextFormat QIBusAttribute::format() const
+{
+ QTextCharFormat fmt;
+ switch (type) {
+ case Invalid:
+ break;
+ case Underline: {
+ QTextCharFormat::UnderlineStyle style = QTextCharFormat::NoUnderline;
+
+ switch (value) {
+ case UnderlineNone:
+ break;
+ case UnderlineSingle:
+ style = QTextCharFormat::SingleUnderline;
+ break;
+ case UnderlineDouble:
+ style = QTextCharFormat::DashUnderline;
+ break;
+ case UnderlineLow:
+ style = QTextCharFormat::DashDotLine;
+ break;
+ case UnderlineError:
+ style = QTextCharFormat::WaveUnderline;
+ fmt.setUnderlineColor(Qt::red);
+ break;
+ }
+
+ fmt.setUnderlineStyle(style);
+ break;
+ }
+ case Foreground:
+ fmt.setForeground(QColor(value));
+ break;
+ case Background:
+ fmt.setBackground(QColor(value));
+ break;
+ }
+ return fmt;
+}
+
+
+QIBusAttributeList::QIBusAttributeList()
+{
+
+}
+
+QIBusAttributeList::~QIBusAttributeList()
+{
+
+}
+
+void QIBusAttributeList::fromDBusArgument(const QDBusArgument &arg)
+{
+// qDebug() << "QIBusAttributeList::fromDBusArgument()" << arg.currentSignature();
+ arg.beginStructure();
+
+ QIBusSerializable::fromDBusArgument(arg);
+
+ arg.beginArray();
+ while(!arg.atEnd()) {
+ QDBusVariant var;
+ arg >> var;
+
+ QIBusAttribute attr;
+ attr.fromDBusArgument(var.variant().value<QDBusArgument>());
+ attributes.append(attr);
+ }
+ arg.endArray();
+
+ arg.endStructure();
+}
+
+QList<QInputMethodEvent::Attribute> QIBusAttributeList::imAttributes() const
+{
+ QList<QInputMethodEvent::Attribute> imAttrs;
+ for (int i = 0; i < attributes.size(); ++i) {
+ const QIBusAttribute &attr = attributes.at(i);
+ imAttrs += QInputMethodEvent::Attribute(QInputMethodEvent::TextFormat, attr.start, attr.end - attr.start, attr.format());
+ }
+ return imAttrs;
+}
+
+
+QIBusText::QIBusText()
+{
+
+}
+
+QIBusText::~QIBusText()
+{
+
+}
+
+void QIBusText::fromDBusArgument(const QDBusArgument &arg)
+{
+// qDebug() << "QIBusText::fromDBusArgument()" << arg.currentSignature();
+ arg.beginStructure();
+
+ QIBusSerializable::fromDBusArgument(arg);
+
+ arg >> text;
+ QDBusVariant variant;
+ arg >> variant;
+ attributes.fromDBusArgument(variant.variant().value<QDBusArgument>());
+
+ arg.endStructure();
+}
+