From edbf2bfc109ce94b2604ea20328fda25542e4383 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Sun, 4 Jun 2006 15:52:05 +0000 Subject: * qt/: Update to Subversion r548032. This includes a big reorganisation of the files inside the subdir. We really need a version control system that supports moving of files. I'm not bothering with history anyways anymore, since the bindings will be moved out to git. The history should be restored from Subversion when that happens. --- qt/Doxyfile | 18 +- qt/Makefile.am | 81 +- qt/dbuscpp2xml.cpp | 404 - qt/dbusidl2cpp.cpp | 960 - qt/examples/Makefile.am | 8 +- qt/examples/complexpong.h | 2 +- qt/qdbusabstractadaptor.cpp | 336 - qt/qdbusabstractadaptor.h | 50 - qt/qdbusabstractadaptor_p.h | 127 - qt/qdbusabstractinterface.cpp | 389 - qt/qdbusabstractinterface.h | 257 - qt/qdbusabstractinterface_p.h | 72 - qt/qdbusbus.cpp | 302 - qt/qdbusbus.h | 158 - qt/qdbusconnection.cpp | 753 - qt/qdbusconnection.h | 124 - qt/qdbusconnection_p.h | 248 - qt/qdbuserror.cpp | 244 - qt/qdbuserror.h | 93 - qt/qdbusintegrator.cpp | 1550 - qt/qdbusinterface.cpp | 203 - qt/qdbusinterface.h | 63 - qt/qdbusinterface_p.h | 65 - qt/qdbusinternalfilters.cpp | 235 - qt/qdbusintrospection.cpp | 403 - qt/qdbusintrospection_p.h | 147 - qt/qdbusmacros.h | 50 - qt/qdbusmarshall.cpp | 554 - qt/qdbusmarshall_p.h | 57 - qt/qdbusmessage.cpp | 706 - qt/qdbusmessage.h | 99 - qt/qdbusmessage_p.h | 50 - qt/qdbusmetaobject.cpp | 689 - qt/qdbusmetaobject_p.h | 96 - qt/qdbusmisc.cpp | 156 - qt/qdbusreply.h | 132 - qt/qdbusserver.cpp | 61 - qt/qdbusserver.h | 48 - qt/qdbusthread.cpp | 116 - qt/qdbustype.cpp | 847 - qt/qdbustype_p.h | 109 - qt/qdbustypehelper_p.h | 231 - qt/qdbusutil.cpp | 235 - qt/qdbusutil.h | 55 - qt/qdbusxmlgenerator.cpp | 192 - qt/qdbusxmlparser.cpp | 308 - qt/qdbusxmlparser_p.h | 53 - qt/qt.tag | 66720 ++++++++++++++++++++++++++++++++++++ qt/src/.cvsignore | 11 + qt/src/Makefile.am | 70 + qt/src/qdbus.h | 52 + qt/src/qdbusabstractadaptor.cpp | 336 + qt/src/qdbusabstractadaptor.h | 50 + qt/src/qdbusabstractadaptor_p.h | 127 + qt/src/qdbusabstractinterface.cpp | 389 + qt/src/qdbusabstractinterface.h | 257 + qt/src/qdbusabstractinterface_p.h | 72 + qt/src/qdbusbus.cpp | 302 + qt/src/qdbusbus.h | 158 + qt/src/qdbusconnection.cpp | 753 + qt/src/qdbusconnection.h | 124 + qt/src/qdbusconnection_p.h | 245 + qt/src/qdbuserror.cpp | 244 + qt/src/qdbuserror.h | 93 + qt/src/qdbusintegrator.cpp | 1552 + qt/src/qdbusinterface.cpp | 203 + qt/src/qdbusinterface.h | 63 + qt/src/qdbusinterface_p.h | 65 + qt/src/qdbusinternalfilters.cpp | 235 + qt/src/qdbusintrospection.cpp | 403 + qt/src/qdbusintrospection_p.h | 147 + qt/src/qdbusmacros.h | 60 + qt/src/qdbusmarshall.cpp | 554 + qt/src/qdbusmarshall_p.h | 57 + qt/src/qdbusmessage.cpp | 706 + qt/src/qdbusmessage.h | 99 + qt/src/qdbusmessage_p.h | 50 + qt/src/qdbusmetaobject.cpp | 689 + qt/src/qdbusmetaobject_p.h | 96 + qt/src/qdbusmisc.cpp | 156 + qt/src/qdbusreply.h | 132 + qt/src/qdbusserver.cpp | 61 + qt/src/qdbusserver.h | 48 + qt/src/qdbusthread.cpp | 116 + qt/src/qdbustype.cpp | 847 + qt/src/qdbustype_p.h | 109 + qt/src/qdbustypehelper_p.h | 231 + qt/src/qdbusutil.cpp | 235 + qt/src/qdbusutil.h | 55 + qt/src/qdbusxmlgenerator.cpp | 194 + qt/src/qdbusxmlparser.cpp | 308 + qt/src/qdbusxmlparser_p.h | 53 + qt/tools/.cvsignore | 11 + qt/tools/Makefile.am | 10 + qt/tools/dbuscpp2xml.cpp | 409 + qt/tools/dbusidl2cpp.cpp | 960 + 96 files changed, 78934 insertions(+), 12119 deletions(-) delete mode 100644 qt/dbuscpp2xml.cpp delete mode 100644 qt/dbusidl2cpp.cpp delete mode 100644 qt/qdbusabstractadaptor.cpp delete mode 100644 qt/qdbusabstractadaptor.h delete mode 100644 qt/qdbusabstractadaptor_p.h delete mode 100644 qt/qdbusabstractinterface.cpp delete mode 100644 qt/qdbusabstractinterface.h delete mode 100644 qt/qdbusabstractinterface_p.h delete mode 100644 qt/qdbusbus.cpp delete mode 100644 qt/qdbusbus.h delete mode 100644 qt/qdbusconnection.cpp delete mode 100644 qt/qdbusconnection.h delete mode 100644 qt/qdbusconnection_p.h delete mode 100644 qt/qdbuserror.cpp delete mode 100644 qt/qdbuserror.h delete mode 100644 qt/qdbusintegrator.cpp delete mode 100644 qt/qdbusinterface.cpp delete mode 100644 qt/qdbusinterface.h delete mode 100644 qt/qdbusinterface_p.h delete mode 100644 qt/qdbusinternalfilters.cpp delete mode 100644 qt/qdbusintrospection.cpp delete mode 100644 qt/qdbusintrospection_p.h delete mode 100644 qt/qdbusmacros.h delete mode 100644 qt/qdbusmarshall.cpp delete mode 100644 qt/qdbusmarshall_p.h delete mode 100644 qt/qdbusmessage.cpp delete mode 100644 qt/qdbusmessage.h delete mode 100644 qt/qdbusmessage_p.h delete mode 100644 qt/qdbusmetaobject.cpp delete mode 100644 qt/qdbusmetaobject_p.h delete mode 100644 qt/qdbusmisc.cpp delete mode 100644 qt/qdbusreply.h delete mode 100644 qt/qdbusserver.cpp delete mode 100644 qt/qdbusserver.h delete mode 100644 qt/qdbusthread.cpp delete mode 100644 qt/qdbustype.cpp delete mode 100644 qt/qdbustype_p.h delete mode 100644 qt/qdbustypehelper_p.h delete mode 100644 qt/qdbusutil.cpp delete mode 100644 qt/qdbusutil.h delete mode 100644 qt/qdbusxmlgenerator.cpp delete mode 100644 qt/qdbusxmlparser.cpp delete mode 100644 qt/qdbusxmlparser_p.h create mode 100644 qt/qt.tag create mode 100644 qt/src/.cvsignore create mode 100644 qt/src/Makefile.am create mode 100644 qt/src/qdbus.h create mode 100644 qt/src/qdbusabstractadaptor.cpp create mode 100644 qt/src/qdbusabstractadaptor.h create mode 100644 qt/src/qdbusabstractadaptor_p.h create mode 100644 qt/src/qdbusabstractinterface.cpp create mode 100644 qt/src/qdbusabstractinterface.h create mode 100644 qt/src/qdbusabstractinterface_p.h create mode 100644 qt/src/qdbusbus.cpp create mode 100644 qt/src/qdbusbus.h create mode 100644 qt/src/qdbusconnection.cpp create mode 100644 qt/src/qdbusconnection.h create mode 100644 qt/src/qdbusconnection_p.h create mode 100644 qt/src/qdbuserror.cpp create mode 100644 qt/src/qdbuserror.h create mode 100644 qt/src/qdbusintegrator.cpp create mode 100644 qt/src/qdbusinterface.cpp create mode 100644 qt/src/qdbusinterface.h create mode 100644 qt/src/qdbusinterface_p.h create mode 100644 qt/src/qdbusinternalfilters.cpp create mode 100644 qt/src/qdbusintrospection.cpp create mode 100644 qt/src/qdbusintrospection_p.h create mode 100644 qt/src/qdbusmacros.h create mode 100644 qt/src/qdbusmarshall.cpp create mode 100644 qt/src/qdbusmarshall_p.h create mode 100644 qt/src/qdbusmessage.cpp create mode 100644 qt/src/qdbusmessage.h create mode 100644 qt/src/qdbusmessage_p.h create mode 100644 qt/src/qdbusmetaobject.cpp create mode 100644 qt/src/qdbusmetaobject_p.h create mode 100644 qt/src/qdbusmisc.cpp create mode 100644 qt/src/qdbusreply.h create mode 100644 qt/src/qdbusserver.cpp create mode 100644 qt/src/qdbusserver.h create mode 100644 qt/src/qdbusthread.cpp create mode 100644 qt/src/qdbustype.cpp create mode 100644 qt/src/qdbustype_p.h create mode 100644 qt/src/qdbustypehelper_p.h create mode 100644 qt/src/qdbusutil.cpp create mode 100644 qt/src/qdbusutil.h create mode 100644 qt/src/qdbusxmlgenerator.cpp create mode 100644 qt/src/qdbusxmlparser.cpp create mode 100644 qt/src/qdbusxmlparser_p.h create mode 100644 qt/tools/.cvsignore create mode 100644 qt/tools/Makefile.am create mode 100644 qt/tools/dbuscpp2xml.cpp create mode 100644 qt/tools/dbusidl2cpp.cpp (limited to 'qt') diff --git a/qt/Doxyfile b/qt/Doxyfile index c9e25476..a57ca5c6 100644 --- a/qt/Doxyfile +++ b/qt/Doxyfile @@ -23,14 +23,14 @@ PROJECT_NAME = QtDBus # This could be handy for archiving the generated documentation or # if some version control system is used. -PROJECT_NUMBER = 0.60 +PROJECT_NUMBER = 0.62 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. # If a relative path is entered, it will be relative to the location # where doxygen was started. If left blank the current directory will be used. -OUTPUT_DIRECTORY = ../doc/api +OUTPUT_DIRECTORY = doc/api # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create # 4096 sub-directories (in 2 levels) under the output directory of each output @@ -287,7 +287,7 @@ HIDE_IN_BODY_DOCS = NO # to NO (the default) then the documentation will be excluded. # Set it to YES to include the internal documentation. -INTERNAL_DOCS = NO +INTERNAL_DOCS = YES # If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate # file names in lower-case letters. If set to YES upper-case letters are also @@ -459,7 +459,7 @@ WARN_LOGFILE = # directories like "/usr/src/myproject". Separate the files or directories # with spaces. -INPUT = . +INPUT = src # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp @@ -512,14 +512,13 @@ EXCLUDE_PATTERNS = Makefile.* \ magic \ NOTES \ TODO \ - THANKS \ - *_p.h + THANKS # The EXAMPLE_PATH tag can be used to specify one or more files or # directories that contain example code fragments that are included (see # the \include command). -EXAMPLE_PATH = +EXAMPLE_PATH = examples # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp @@ -1029,7 +1028,8 @@ PREDEFINED = DBUS_BEGIN_DECLS= \ DOXYGEN_SHOULD_SKIP_THIS \ _DBUS_DEFINE_GLOBAL_LOCK(name)= \ _DBUS_GNUC_PRINTF(from,to)= \ - Q_DECLARE_FLAGS(flags,theenum)= + Q_DECLARE_FLAGS(flags,theenum)= \ + Q_QDOC # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then # this tag can be used to specify a list of macro names that should be expanded. @@ -1065,7 +1065,7 @@ SKIP_FUNCTION_MACROS = YES # If a tag file is not located in the directory in which doxygen # is run, you must also specify the path to the tagfile here. -TAGFILES = /home/tjmaciei/troll/qt-4.1/doc/qt.tag=http://doc.trolltech.com/4.1 +TAGFILES = ./qt.tag=http://doc.trolltech.com/4.1 # When a file name is specified after GENERATE_TAGFILE, doxygen will create # a tag file that is based on the input files it reads. diff --git a/qt/Makefile.am b/qt/Makefile.am index c91c3422..e09fd1e5 100644 --- a/qt/Makefile.am +++ b/qt/Makefile.am @@ -1,80 +1,7 @@ -SUBDIRS = . examples +DIST_SUBDIRS = src tools examples if HAVE_QT -INCLUDES=-I$(top_srcdir) $(DBUS_CLIENT_CFLAGS) $(DBUS_QT_CFLAGS) -DDBUS_COMPILATION - -lib_LTLIBRARIES=libdbus-qt4-1.la - -dbusincludedir=$(includedir)/dbus-1.0/dbus -dbusinclude_HEADERS= \ - qdbusbus.h \ - qdbusmacros.h \ - qdbuserror.h \ - qdbusmessage.h \ - qdbusserver.h \ - qdbusconnection.h \ - qdbusabstractinterface.h \ - qdbusinterface.h \ - qdbusutil.h \ - qdbusabstractadaptor.h \ - qdbusreply.h \ - qdbustypehelper_p.h - -noinst_HEADERS= \ - qdbusabstractadaptor_p.h \ - qdbusabstractinterface_p.h \ - qdbusconnection_p.h \ - qdbusinterface_p.h \ - qdbusintrospection_p.h \ - qdbusmarshall_p.h \ - qdbusmessage_p.h \ - qdbusmetaobject_p.h \ - qdbustype_p.h \ - qdbusxmlparser_p.h - -libdbus_qt4_1_la_SOURCES = \ - qdbusbus.cpp \ - qdbusconnection.cpp \ - qdbuserror.cpp \ - qdbusintegrator.cpp \ - qdbusmarshall.cpp \ - qdbusmessage.cpp \ - qdbusserver.cpp \ - qdbustype.cpp \ - qdbusabstractinterface.cpp \ - qdbusinterface.cpp \ - qdbusxmlparser.cpp \ - qdbusutil.cpp \ - qdbusintrospection.cpp \ - qdbusabstractadaptor.cpp \ - qdbusthread.cpp \ - qdbusinternalfilters.cpp \ - qdbusmetaobject.cpp \ - qdbusmisc.cpp \ - qdbusxmlgenerator.cpp - -bin_PROGRAMS = dbusidl2cpp dbuscpp2xml -dbusidl2cpp_SOURCES = dbusidl2cpp.cpp -dbusidl2cpp_LDFLAGS = -no-undefined -dbusidl2cpp_LDADD = $(DBUS_QT_LIBS) libdbus-qt4-1.la -dbuscpp2xml_SOURCES = dbuscpp2xml.cpp -dbuscpp2xml_LDFLAGS = -no-undefined -dbuscpp2xml_LDADD = $(DBUS_QT_LIBS) libdbus-qt4-1.la - -qdbusabstractadaptor.lo: qdbusabstractadaptor.moc qdbusabstractadaptor_p.moc -qdbusabstractinterface.lo: qdbusabstractinterface.moc -qdbusbus.lo: qdbusbus.moc -qdbusserver.lo: qdbusserver.moc -qdbusintegrator.lo: qdbusconnection_p.moc - -CLEANFILES=qdbusabstractadaptor.moc qdbusserver.moc qdbusconnection_p.moc qdbusconnection_p.moc qdbusabstractadaptor_p.moc qdbusbus.moc qdbusabstractinterface.moc - -libdbus_qt4_1_la_LIBADD= $(DBUS_QT_LIBS) $(top_builddir)/dbus/libdbus-1.la -libdbus_qt4_1_la_LDFLAGS= -version-info 1:0 -no-undefined -libdbus_qt4_1_la_CPPFLAGS= -DQDBUS_MAKEDLL - -EXTRA_DIST = qt-dbus.qdocconf - -%.moc: %.h - $(QT_MOC) $< > $@ +QT_SUBDIRS = src tools examples endif + +SUBDIRS = $(QT_SUBDIRS) diff --git a/qt/dbuscpp2xml.cpp b/qt/dbuscpp2xml.cpp deleted file mode 100644 index e111f113..00000000 --- a/qt/dbuscpp2xml.cpp +++ /dev/null @@ -1,404 +0,0 @@ -/* -*- C++ -*- - * - * Copyright (C) 2006 Trolltech AS. All rights reserved. - * Author: Thiago Macieira - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include "qdbusconnection.h" // for the Export* flags -#include // for the XML DOCTYPE declaration - -// in qdbusxmlgenerator.cpp -extern QDBUS_EXPORT QString qDBusGenerateMetaObjectXml(QString interface, const QMetaObject *mo, - const QMetaObject *base, int flags); - -#define PROGRAMNAME "dbuscpp2xml" -#define PROGRAMVERSION "0.1" -#define PROGRAMCOPYRIGHT "Copyright (C) 2006 Trolltech AS. All rights reserved." - -static const char cmdlineOptions[] = "psmaPSMAo:"; -static const char *outputFile; -static int flags; - -static const char help[] = - "Usage: " PROGRAMNAME " [options...] [files...]\n" - "Parses the C++ source or header file containing a QObject-derived class and\n" - "produces the D-Bus Introspection XML." - "\n" - "Options:\n" - " -p|-s|-m Only parse scriptable Properties, Signals and Methods (slots)\n" - " -P|-S|-M Parse all Properties, Signals and Methods (slots)\n" - " -a Output all scriptable contents (equivalent to -psm)\n" - " -A Output all contents (equivalent to -PSM)\n" - " -o Write the output to file \n" - " -h Show this information\n" - " -V Show the program version and quit.\n" - "\n"; - -class MocParser -{ - void parseError(); - QByteArray readLine(); - void loadIntData(uint *&data); - void loadStringData(char *&stringdata); - - QIODevice *input; - const char *filename; - int line; -public: - ~MocParser(); - void parse(const char *filename, QIODevice *input, int lineNumber = 0); - - QList objects; -}; - -void MocParser::parseError() -{ - fprintf(stderr, PROGRAMNAME ": error parsing input file '%s' line %d \n", filename, line); - exit(1); -} - -QByteArray MocParser::readLine() -{ - ++line; - return input->readLine(); -} - -void MocParser::loadIntData(uint *&data) -{ - data = 0; // initialise - QVarLengthArray array; - QRegExp rx("(\\d+|0x[0-9abcdef]+)", Qt::CaseInsensitive); - - while (!input->atEnd()) { - QString line = QLatin1String(readLine()); - int pos = line.indexOf("//"); - if (pos != -1) - line.truncate(pos); // drop comments - - if (line == "};\n") { - // end of data - data = new uint[array.count()]; - memcpy(data, array.data(), array.count() * sizeof(*data)); - return; - } - - pos = 0; - while ((pos = rx.indexIn(line, pos)) != -1) { - QString num = rx.cap(1); - if (num.startsWith("0x")) - array.append(num.mid(2).toUInt(0, 16)); - else - array.append(num.toUInt()); - pos += rx.matchedLength(); - } - } - - parseError(); -} - -void MocParser::loadStringData(char *&stringdata) -{ - stringdata = 0; - QVarLengthArray array; - - while (!input->atEnd()) { - QByteArray line = readLine(); - if (line == "};\n") { - // end of data - stringdata = new char[array.count()]; - memcpy(stringdata, array.data(), array.count() * sizeof(*stringdata)); - return; - } - - int start = line.indexOf('"'); - if (start == -1) - parseError(); - - int len = line.length() - 1; - line.truncate(len); // drop ending \n - if (line.at(len - 1) != '"') - parseError(); - - --len; - ++start; - for ( ; start < len; ++start) - if (line.at(start) == '\\') { - // parse escaped sequence - ++start; - if (start == len) - parseError(); - - QChar c(QLatin1Char(line.at(start))); - if (!c.isDigit()) { - switch (c.toLatin1()) { - case 'a': - array.append('\a'); - break; - case 'b': - array.append('\b'); - break; - case 'f': - array.append('\f'); - break; - case 'n': - array.append('\n'); - break; - case 'r': - array.append('\r'); - break; - case 't': - array.append('\t'); - break; - case 'v': - array.append('\v'); - break; - case '\\': - case '?': - case '\'': - case '"': - array.append(c.toLatin1()); - break; - - case 'x': - if (start + 2 <= len) - parseError(); - array.append(char(line.mid(start + 1, 2).toInt(0, 16))); - break; - - default: - array.append(c.toLatin1()); - fprintf(stderr, PROGRAMNAME ": warning: invalid escape sequence '\\%c' found in input", - c.toLatin1()); - } - } else { - // octal - QRegExp octal("([0-7]+)"); - if (octal.indexIn(QLatin1String(line), start) == -1) - parseError(); - array.append(char(octal.cap(1).toInt(0, 8))); - } - } else { - array.append(line.at(start)); - } - } - - parseError(); -} - -void MocParser::parse(const char *fname, QIODevice *io, int lineNumber) -{ - filename = fname; - input = io; - line = lineNumber; - - while (!input->atEnd()) { - QByteArray line = readLine(); - if (line.startsWith("static const uint qt_meta_data_")) { - // start of new class data - uint *data; - loadIntData(data); - - // find the start of the string data - do { - line = readLine(); - if (input->atEnd()) - parseError(); - } while (!line.startsWith("static const char qt_meta_stringdata_")); - - char *stringdata; - loadStringData(stringdata); - - QMetaObject mo; - mo.d.superdata = &QObject::staticMetaObject; - mo.d.stringdata = stringdata; - mo.d.data = data; - mo.d.extradata = 0; - objects.append(mo); - } - } - - fname = 0; - input = 0; -} - -MocParser::~MocParser() -{ - foreach (QMetaObject mo, objects) { - delete const_cast(mo.d.stringdata); - delete const_cast(mo.d.data); - } -} - -static void showHelp() -{ - printf("%s", help); - exit(0); -} - -static void showVersion() -{ - printf("%s version %s\n", PROGRAMNAME, PROGRAMVERSION); - printf("D-Bus QObject-to-XML converter\n"); - exit(0); -} - -static void parseCmdLine(int argc, char **argv) -{ - int c; - opterr = true; - while ((c = getopt(argc, argv, cmdlineOptions)) != -1) - switch (c) - { - case 'p': - flags |= QDBusConnection::ExportProperties; - break; - - case 's': - flags |= QDBusConnection::ExportSignals; - break; - - case 'm': - flags |= QDBusConnection::ExportSlots; - break; - - case 'a': - flags |= QDBusConnection::ExportContents; - break; - - case 'P': - flags |= QDBusConnection::ExportAllProperties; - break; - - case 'S': - flags |= QDBusConnection::ExportAllSignals; - break; - - case 'M': - flags |= QDBusConnection::ExportAllSlots; - break; - - case 'A': - flags |= QDBusConnection::ExportAllContents; - break; - - case 'o': - outputFile = optarg; - break; - - case 'h': - showHelp(); - break; - - case 'V': - showVersion(); - break; - - case '?': - exit(1); - default: - abort(); - } - - if (flags == 0) - flags = QDBusConnection::ExportAllContents; -} - -int main(int argc, char **argv) -{ - MocParser parser; - parseCmdLine(argc, argv); - - for (int i = 1; i < argc; ++i) { - FILE *in = fopen(argv[i], "r"); - if (in == 0) { - fprintf(stderr, PROGRAMNAME ": could not open '%s': %s\n", - argv[i], strerror(errno)); - return 1; - } - - QFile f; - f.open(in, QIODevice::ReadOnly); - f.readLine(); - - QByteArray line = f.readLine(); - if (line.contains("Meta object code from reading C++ file")) - // this is a moc-generated file - parser.parse(argv[i], &f, 3); - else { - // run moc on this file - QProcess proc; - proc.start("moc", QStringList() << QFile::encodeName(argv[i])); - - if (!proc.waitForStarted()) { - fprintf(stderr, PROGRAMNAME ": could not execute moc! Aborting.\n"); - return 1; - } - - proc.closeWriteChannel(); - - if (!proc.waitForFinished() || proc.exitStatus() != QProcess::NormalExit || - proc.exitCode() != 0) { - // output the moc errors: - fprintf(stderr, "%s", proc.readAllStandardError().constData()); - fprintf(stderr, PROGRAMNAME ": exit code %d from moc. Aborting\n", proc.exitCode()); - return 1; - } - fprintf(stderr, "%s", proc.readAllStandardError().constData()); - - parser.parse(argv[i], &proc, 1); - } - - f.close(); - fclose(in); - } - - FILE *output = stdout; - if (outputFile != 0) { - output = fopen(outputFile, "w"); - if (output == 0) { - fprintf(stderr, PROGRAMNAME ": could not open output file '%s': %s", - outputFile, strerror(errno)); - return 1; - } - } - - fprintf(output, "%s\n", DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE); - foreach (QMetaObject mo, parser.objects) { - QString xml = qDBusGenerateMetaObjectXml(QString(), &mo, &QObject::staticMetaObject, - flags); - fprintf(output, "%s", qPrintable(xml)); - } - fprintf(output, "\n"); - - if (output != stdout) - fclose(output); -} - diff --git a/qt/dbusidl2cpp.cpp b/qt/dbusidl2cpp.cpp deleted file mode 100644 index d329c18e..00000000 --- a/qt/dbusidl2cpp.cpp +++ /dev/null @@ -1,960 +0,0 @@ -/* -*- C++ -*- - * - * Copyright (C) 2006 Trolltech AS. All rights reserved. - * Author: Thiago Macieira - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include "qdbusmetaobject_p.h" -#include "qdbusintrospection_p.h" - -#define PROGRAMNAME "dbusidl2cpp" -#define PROGRAMVERSION "0.4" -#define PROGRAMCOPYRIGHT "Copyright (C) 2006 Trolltech AS. All rights reserved." - -#define ANNOTATION_NO_WAIT "org.freedesktop.DBus.Method.NoReply" - -static const char cmdlineOptions[] = "a:c:hmNp:vV"; -static const char *globalClassName; -static const char *proxyFile; -static const char *adaptorFile; -static const char *inputFile; -static bool skipNamespaces; -static bool verbose; -static bool includeMocs; -static QStringList wantedInterfaces; - -static const char help[] = - "Usage: " PROGRAMNAME " [options...] [idl-or-xml-file] [interfaces...]\n" - "Produces the C++ code to implement the interfaces defined in the input file.\n" - "If no options are given, the code is written to the standard output.\n" - "\n" - "Options:\n" - " -a Write the adaptor code to \n" - " -c Use as the class name for the generated classes\n" - " -h Show this information\n" - " -m Generate #include \"filename.moc\" statements in the .cpp files\n" - " -N Don't use namespaces\n" - " -p Write the proxy code to \n" - " -v Be verbose.\n" - " -V Show the program version and quit.\n" - "\n" - "If the file name given to the options -a and -p does not end in .cpp or .h, the\n" - "program will automatically append the suffixes and produce both files.\n"; - -static const char includeList[] = - "#include \n" - "#include \n" - "#include \n" - "#include \n" - "#include \n" - "#include \n"; - -static const char forwardDeclarations[] = - "class QByteArray;\n" - "template class QList;\n" - "template class QMap;\n" - "class QString;\n" - "class QStringList;\n" - "class QVariant;\n"; - -static void showHelp() -{ - printf("%s", help); - exit(0); -} - -static void showVersion() -{ - printf("%s version %s\n", PROGRAMNAME, PROGRAMVERSION); - printf("D-Bus binding tool for Qt\n"); - exit(0); -} - -static void parseCmdLine(int argc, char **argv) -{ - int c; - opterr = true; - while ((c = getopt(argc, argv, cmdlineOptions)) != -1) - switch (c) - { - case 'a': - adaptorFile = optarg; - break; - - case 'c': - globalClassName = optarg; - break; - - case 'v': - verbose = true; - break; - - case 'm': - includeMocs = true; - break; - - case 'N': - skipNamespaces = true; - break; - - case 'h': - showHelp(); - break; - - case 'V': - showVersion(); - break; - - case 'p': - proxyFile = optarg; - break; - - case '?': - exit(1); - default: - abort(); - } - - if (optind != argc) - inputFile = argv[optind++]; - - while (optind != argc) - wantedInterfaces << QString::fromLocal8Bit(argv[optind++]); -} - -static QDBusIntrospection::Interfaces readInput() -{ - QFile input(QFile::decodeName(inputFile)); - if (inputFile && QLatin1String("-") != inputFile) - input.open(QIODevice::ReadOnly); - else - input.open(stdin, QIODevice::ReadOnly); - - QByteArray data = input.readAll(); - - // check if the input is already XML - data = data.trimmed(); - if (data.startsWith("") << endl - << " *" << endl - << " * " PROGRAMNAME " is " PROGRAMCOPYRIGHT << endl - << " *" << endl - << " * This is an auto-generated file." << endl; - - if (changesWillBeLost) - ts << " * Do not edit! All changes made to it will be lost." << endl; - - ts << " */" << endl - << endl; - - return ts; -} - -enum ClassType { Proxy, Adaptor }; -static QString classNameForInterface(const QString &interface, ClassType classType) -{ - if (globalClassName) - return QLatin1String(globalClassName); - - QStringList parts = interface.split('.'); - - QString retval; - if (classType == Proxy) - foreach (QString part, parts) { - part[0] = part[0].toUpper(); - retval += part; - } - else { - retval = parts.last(); - retval[0] = retval[0].toUpper(); - } - - if (classType == Proxy) - retval += "Interface"; - else - retval += "Adaptor"; - - return retval; -} - -static QByteArray qtTypeName(const QString &signature) -{ - QVariant::Type type = QDBusUtil::signatureToType(signature); - if (type == QVariant::Invalid) - qFatal("Got unknown type `%s'", qPrintable(signature)); - - return QVariant::typeToName(type); -} - -static QString nonConstRefArg(const QByteArray &arg) -{ - return QLatin1String(arg + " &"); -} - -static QString templateArg(const QByteArray &arg) -{ - if (!arg.endsWith('>')) - return QLatin1String(arg); - - return QLatin1String(arg + ' '); -} - -static QString constRefArg(const QByteArray &arg) -{ - if (!arg.startsWith('Q')) - return QLatin1String(arg + ' '); - else - return QString("const %1 &").arg( QLatin1String(arg) ); -} - -static QStringList makeArgNames(const QDBusIntrospection::Arguments &inputArgs, - const QDBusIntrospection::Arguments &outputArgs = - QDBusIntrospection::Arguments()) -{ - QStringList retval; - for (int i = 0; i < inputArgs.count(); ++i) { - const QDBusIntrospection::Argument &arg = inputArgs.at(i); - QString name = arg.name; - if (name.isEmpty()) - name = QString("in%1").arg(i); - while (retval.contains(name)) - name += "_"; - retval << name; - } - for (int i = 0; i < outputArgs.count(); ++i) { - const QDBusIntrospection::Argument &arg = outputArgs.at(i); - QString name = arg.name; - if (name.isEmpty()) - name = QString("out%1").arg(i); - while (retval.contains(name)) - name += "_"; - retval << name; - } - return retval; -} - -static void writeArgList(QTextStream &ts, const QStringList &argNames, - const QDBusIntrospection::Arguments &inputArgs, - const QDBusIntrospection::Arguments &outputArgs = QDBusIntrospection::Arguments()) -{ - // input args: - bool first = true; - int argPos = 0; - for (int i = 0; i < inputArgs.count(); ++i) { - const QDBusIntrospection::Argument &arg = inputArgs.at(i); - QString type = constRefArg(qtTypeName(arg.type)); - - if (!first) - ts << ", "; - ts << type << argNames.at(argPos++); - first = false; - } - - argPos++; - - // output args - // yes, starting from 1 - for (int i = 1; i < outputArgs.count(); ++i) { - const QDBusIntrospection::Argument &arg = outputArgs.at(i); - QString name = arg.name; - - if (!first) - ts << ", "; - ts << nonConstRefArg(qtTypeName(arg.type)) << argNames.at(argPos++); - first = false; - } -} - -static QString propertyGetter(const QDBusIntrospection::Property &property) -{ - QString getter = property.annotations.value("com.trolltech.QtDBus.propertyGetter"); - if (getter.isEmpty()) { - getter = property.name; - getter[0] = getter[0].toLower(); - } - return getter; -} - -static QString propertySetter(const QDBusIntrospection::Property &property) -{ - QString setter = property.annotations.value("com.trolltech.QtDBus.propertySetter"); - if (setter.isEmpty()) { - setter = "set" + property.name; - setter[3] = setter[3].toUpper(); - } - return setter; -} - -static QString stringify(const QString &data) -{ - QString retval; - int i; - for (i = 0; i < data.length(); ++i) { - retval += '\"'; - for ( ; i < data.length() && data[i] != QChar('\n'); ++i) - if (data[i] == '\"') - retval += "\\\""; - else - retval += data[i]; - retval += "\\n\"\n"; - } - return retval; -} - -static void writeProxy(const char *proxyFile, const QDBusIntrospection::Interfaces &interfaces) -{ - // open the file - QString headerName = header(proxyFile); - QFile file(headerName); - if (!headerName.isEmpty()) - file.open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text); - else - file.open(stdout, QIODevice::WriteOnly | QIODevice::Text); - QTextStream hs(&file); - - QString cppName = cpp(proxyFile); - QByteArray cppData; - QTextStream cs(&cppData); - - // write the header: - writeHeader(hs, true); - - // include guards: - QString includeGuard; - if (!headerName.isEmpty()) { - includeGuard = headerName.toUpper().replace(QChar('.'), QChar('_')); - int pos = includeGuard.lastIndexOf('/'); - if (pos != -1) - includeGuard = includeGuard.mid(pos + 1); - } else { - includeGuard = QString("QDBUSIDL2CPP_PROXY"); - } - includeGuard = QString("%1_%2%3") - .arg(includeGuard) - .arg(getpid()) - .arg(QDateTime::currentDateTime().toTime_t()); - hs << "#ifndef " << includeGuard << endl - << "#define " << includeGuard << endl - << endl; - - // include our stuff: - hs << "#include " << endl - << includeList - << "#include " << endl - << endl; - - if (cppName != headerName) { - writeHeader(cs, false); - cs << "#include \"" << headerName << "\"" << endl - << endl; - } - - foreach (const QDBusIntrospection::Interface *interface, interfaces) { - QString className = classNameForInterface(interface->name, Proxy); - - // comment: - hs << "/*" << endl - << " * Proxy class for interface " << interface->name << endl - << " */" << endl; - cs << "/*" << endl - << " * Implementation of interface class " << className << endl - << " */" << endl - << endl; - - // class header: - hs << "class " << className << ": public QDBusAbstractInterface" << endl - << "{" << endl - << " Q_OBJECT" << endl; - - // the interface name - hs << "public:" << endl - << " static inline const char *staticInterfaceName()" << endl - << " { return \"" << interface->name << "\"; }" << endl - << endl; - - // constructors/destructors: - hs << "public:" << endl - << " explicit " << className << "(QDBusAbstractInterfacePrivate *p);" << endl - << endl - << " ~" << className << "();" << endl - << endl; - cs << className << "::" << className << "(QDBusAbstractInterfacePrivate *p)" << endl - << " : QDBusAbstractInterface(p)" << endl - << "{" << endl - << "}" << endl - << endl - << className << "::~" << className << "()" << endl - << "{" << endl - << "}" << endl - << endl; - - // properties: - foreach (const QDBusIntrospection::Property &property, interface->properties) { - QByteArray type = qtTypeName(property.type); - QString templateType = templateArg(type); - QString constRefType = constRefArg(type); - QString getter = propertyGetter(property); - QString setter = propertySetter(property); - - hs << " Q_PROPERTY(" << type << " " << property.name; - - // getter: - if (property.access != QDBusIntrospection::Property::Write) - // it's readble - hs << " READ " << getter; - - // setter - if (property.access != QDBusIntrospection::Property::Read) - // it's writeable - hs << " WRITE " << setter; - - hs << ")" << endl; - - // getter: - if (property.access != QDBusIntrospection::Property::Write) { - hs << " inline " << type << " " << getter << "() const" << endl; - if (type != "QVariant") - hs << " { return qvariant_cast< " << type << " >(internalPropGet(\"" - << property.name << "\")); }" << endl; - else - hs << " { return internalPropGet(\"" << property.name << "\"); }" << endl; - } - - // setter: - if (property.access != QDBusIntrospection::Property::Read) { - hs << " inline void " << setter << "(" << constRefArg(type) << "value)" << endl - << " { internalPropSet(\"" << property.name - << "\", qVariantFromValue(value)); }" << endl; - } - - hs << endl; - } - - // methods: - hs << "public Q_SLOTS: // METHODS" << endl; - foreach (const QDBusIntrospection::Method &method, interface->methods) { - bool isAsync = method.annotations.value(ANNOTATION_NO_WAIT) == "true"; - if (isAsync && !method.outputArgs.isEmpty()) { - fprintf(stderr, "warning: method %s in interface %s is marked 'async' but has output arguments.\n", - qPrintable(method.name), qPrintable(interface->name)); - continue; - } - - hs << " inline "; - - if (method.annotations.value("org.freedesktop.DBus.Deprecated") == "true") - hs << "Q_DECL_DEPRECATED "; - - if (isAsync) - hs << "Q_ASYNC void "; - else if (method.outputArgs.isEmpty()) - hs << "QDBusReply "; - else { - hs << "QDBusReply<" << templateArg(qtTypeName(method.outputArgs.first().type)) << "> "; - } - - hs << method.name << "("; - - QStringList argNames = makeArgNames(method.inputArgs, method.outputArgs); - writeArgList(hs, argNames, method.inputArgs, method.outputArgs); - - hs << ")" << endl - << " {" << endl; - - if (method.outputArgs.count() > 1) - hs << " QDBusMessage reply = call(QLatin1String(\""; - else if (!isAsync) - hs << " return call(QLatin1String(\""; - else - hs << " call(NoWaitForReply, QLatin1String(\""; - - // rebuild the method input signature: - QString signature = QChar('.'); - foreach (const QDBusIntrospection::Argument &arg, method.inputArgs) - signature += arg.type; - if (signature.length() == 1) - signature.clear(); - hs << method.name << signature << "\")"; - - int argPos = 0; - for (int i = 0; i < method.inputArgs.count(); ++i) - hs << ", " << argNames.at(argPos++); - - // close the QDBusIntrospection::call call - hs << ");" << endl; - - argPos++; - if (method.outputArgs.count() > 1) { - hs << " if (reply.type() == QDBusMessage::ReplyMessage) {" << endl; - - // yes, starting from 1 - for (int i = 1; i < method.outputArgs.count(); ++i) - hs << " " << argNames.at(argPos++) << " = qvariant_cast<" - << templateArg(qtTypeName(method.outputArgs.at(i).type)) - << ">(reply.at(" << i << "));" << endl; - hs << " }" << endl - << " return reply;" << endl; - } - - // close the function: - hs << " }" << endl - << endl; - } - - hs << "Q_SIGNALS: // SIGNALS" << endl; - foreach (const QDBusIntrospection::Signal &signal, interface->signals_) { - hs << " "; - if (signal.annotations.value("org.freedesktop.DBus.Deprecated") == "true") - hs << "Q_DECL_DEPRECATED "; - - hs << "void " << signal.name << "("; - - QStringList argNames = makeArgNames(signal.outputArgs); - writeArgList(hs, argNames, signal.outputArgs); - - hs << ");" << endl; // finished for header - } - - // close the class: - hs << "};" << endl - << endl; - } - - if (!skipNamespaces) { - QStringList last; - QDBusIntrospection::Interfaces::ConstIterator it = interfaces.constBegin(); - do - { - QStringList current; - QString name; - if (it != interfaces.constEnd()) { - current = it->constData()->name.split('.'); - name = current.takeLast(); - } - - int i = 0; - while (i < current.count() && i < last.count() && current.at(i) == last.at(i)) - ++i; - - // i parts matched - // close last.count() - i namespaces: - for (int j = i; j < last.count(); ++j) - hs << QString((last.count() - j - 1 + i) * 2, ' ') << "}" << endl; - - // open current.count() - i namespaces - for (int j = i; j < current.count(); ++j) - hs << QString(j * 2, ' ') << "namespace " << current.at(j) << " {" << endl; - - // add this class: - if (!name.isEmpty()) { - hs << QString(current.count() * 2, ' ') - << "typedef ::" << classNameForInterface(it->constData()->name, Proxy) - << " " << name << ";" << endl; - } - - if (it == interfaces.constEnd()) - break; - ++it; - last = current; - } while (true); - } - - // close the include guard - hs << "#endif" << endl; - - if (includeMocs) - cs << endl - << "#include \"" << proxyFile << ".moc\"" << endl; - - cs.flush(); - hs.flush(); - if (headerName == cppName) - file.write(cppData); - else { - // write to cpp file - QFile f(cppName); - f.open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text); - f.write(cppData); - } -} - -static void writeAdaptor(const char *adaptorFile, const QDBusIntrospection::Interfaces &interfaces) -{ - // open the file - QString headerName = header(adaptorFile); - QFile file(headerName); - if (!headerName.isEmpty()) - file.open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text); - else - file.open(stdout, QIODevice::WriteOnly | QIODevice::Text); - QTextStream hs(&file); - - QString cppName = cpp(adaptorFile); - QByteArray cppData; - QTextStream cs(&cppData); - - // write the headers - writeHeader(hs, false); - - // include guards: - QString includeGuard; - if (!headerName.isEmpty()) { - includeGuard = headerName.toUpper().replace(QChar('.'), QChar('_')); - int pos = includeGuard.lastIndexOf('/'); - if (pos != -1) - includeGuard = includeGuard.mid(pos + 1); - } else { - includeGuard = QString("QDBUSIDL2CPP_ADAPTOR"); - } - includeGuard = QString("%1_%2%3") - .arg(includeGuard) - .arg(getpid()) - .arg(QDateTime::currentDateTime().toTime_t()); - hs << "#ifndef " << includeGuard << endl - << "#define " << includeGuard << endl - << endl; - - // include our stuff: - hs << "#include " << endl; - if (cppName == headerName) - hs << "#include " << endl - << "#include " << endl; - hs << "#include " << endl; - - if (cppName != headerName) { - writeHeader(cs, false); - cs << "#include \"" << headerName << "\"" << endl - << "#include " << endl - << includeList - << endl; - hs << forwardDeclarations; - } else { - hs << includeList; - } - - hs << endl; - - foreach (const QDBusIntrospection::Interface *interface, interfaces) { - QString className = classNameForInterface(interface->name, Adaptor); - - // comment: - hs << "/*" << endl - << " * Adaptor class for interface " << interface->name << endl - << " */" << endl; - cs << "/*" << endl - << " * Implementation of adaptor class " << className << endl - << " */" << endl - << endl; - - // class header: - hs << "class " << className << ": public QDBusAbstractAdaptor" << endl - << "{" << endl - << " Q_OBJECT" << endl - << " Q_CLASSINFO(\"D-Bus Interface\", \"" << interface->name << "\")" << endl - << " Q_CLASSINFO(\"D-Bus Introspection\", \"\"" << endl - << stringify(interface->introspection) - << " \"\")" << endl - << "public:" << endl - << " " << className << "(QObject *parent);" << endl - << " virtual ~" << className << "();" << endl - << endl; - - // constructor/destructor - cs << className << "::" << className << "(QObject *parent)" << endl - << " : QDBusAbstractAdaptor(parent)" << endl - << "{" << endl - << " // constructor" << endl - << " setAutoRelaySignals(true);" << endl - << "}" << endl - << endl - << className << "::~" << className << "()" << endl - << "{" << endl - << " // destructor" << endl - << "}" << endl - << endl; - - hs << "public: // PROPERTIES" << endl; - foreach (const QDBusIntrospection::Property &property, interface->properties) { - QByteArray type = qtTypeName(property.type); - QString constRefType = constRefArg(type); - QString getter = propertyGetter(property); - QString setter = propertySetter(property); - - hs << " Q_PROPERTY(" << type << " " << property.name; - if (property.access != QDBusIntrospection::Property::Write) - hs << " READ " << getter; - if (property.access != QDBusIntrospection::Property::Read) - hs << " WRITE " << setter; - hs << ")" << endl; - - // getter: - if (property.access != QDBusIntrospection::Property::Write) { - hs << " " << type << " " << getter << "() const;" << endl; - cs << type << " " - << className << "::" << getter << "() const" << endl - << "{" << endl - << " // get the value of property " << property.name << endl - << " return qvariant_cast< " << type <<" >(parent()->property(\"" << property.name << "\"));" << endl - << "}" << endl - << endl; - } - - // setter - if (property.access != QDBusIntrospection::Property::Read) { - hs << " void " << setter << "(" << constRefType << "value);" << endl; - cs << "void " << className << "::" << setter << "(" << constRefType << "value)" << endl - << "{" << endl - << " // set the value of property " << property.name << endl - << " parent()->setProperty(\"" << property.name << "\", value);" << endl - << "}" << endl - << endl; - } - - hs << endl; - } - - hs << "public Q_SLOTS: // METHODS" << endl; - foreach (const QDBusIntrospection::Method &method, interface->methods) { - bool isAsync = method.annotations.value(ANNOTATION_NO_WAIT) == "true"; - if (isAsync && !method.outputArgs.isEmpty()) { - fprintf(stderr, "warning: method %s in interface %s is marked 'async' but has output arguments.\n", - qPrintable(method.name), qPrintable(interface->name)); - continue; - } - - hs << " "; - if (method.annotations.value("org.freedesktop.DBus.Deprecated") == "true") - hs << "Q_DECL_DEPRECATED "; - - QByteArray returnType; - if (isAsync) { - hs << "Q_ASYNC void "; - cs << "void "; - } else if (method.outputArgs.isEmpty()) { - hs << "void "; - cs << "void "; - } else { - returnType = qtTypeName(method.outputArgs.first().type); - hs << returnType << " "; - cs << returnType << " "; - } - - QString name = method.name; - hs << name << "("; - cs << className << "::" << name << "("; - - QStringList argNames = makeArgNames(method.inputArgs, method.outputArgs); - writeArgList(hs, argNames, method.inputArgs, method.outputArgs); - writeArgList(cs, argNames, method.inputArgs, method.outputArgs); - - hs << ");" << endl; // finished for header - cs << ")" << endl - << "{" << endl - << " // handle method call " << interface->name << "." << method.name << endl; - - // create the return type - int j = method.inputArgs.count(); - if (!returnType.isEmpty()) - cs << " " << returnType << " " << argNames.at(j) << ";" << endl; - - // make the call - if (method.inputArgs.count() <= 10 && method.outputArgs.count() <= 1) { - // we can use QMetaObject::invokeMethod - static const char invoke[] = " QMetaObject::invokeMethod(parent(), \""; - cs << invoke << name << "\""; - - if (!method.outputArgs.isEmpty()) - cs << ", Q_RETURN_ARG(" - << qtTypeName(method.outputArgs.at(0).type) - << ", " - << argNames.at(method.inputArgs.count()) - << ")"; - - for (int i = 0; i < method.inputArgs.count(); ++i) - cs << ", Q_ARG(" - << qtTypeName(method.inputArgs.at(i).type) - << ", " - << argNames.at(i) - << ")"; - - cs << ");" << endl; - } - - cs << endl - << " // Alternative:" << endl - << " //"; - if (!method.outputArgs.isEmpty()) - cs << argNames.at(method.inputArgs.count()) << " = "; - cs << "static_cast(parent())->" << name << "("; - - int argPos = 0; - bool first = true; - for (int i = 0; i < method.inputArgs.count(); ++i) { - cs << (first ? "" : ", ") << argNames.at(argPos++); - first = false; - } - ++argPos; // skip retval, if any - for (int i = 1; i < method.outputArgs.count(); ++i) { - cs << (first ? "" : ", ") << argNames.at(argPos++); - first = false; - } - - cs << ");" << endl; - if (!method.outputArgs.isEmpty()) - cs << " return " << argNames.at(method.inputArgs.count()) << ";" << endl; - cs << "}" << endl - << endl; - } - - hs << "Q_SIGNALS: // SIGNALS" << endl; - foreach (const QDBusIntrospection::Signal &signal, interface->signals_) { - hs << " "; - if (signal.annotations.value("org.freedesktop.DBus.Deprecated") == "true") - hs << "Q_DECL_DEPRECATED "; - - hs << "void " << signal.name << "("; - - QStringList argNames = makeArgNames(signal.outputArgs); - writeArgList(hs, argNames, signal.outputArgs); - - hs << ");" << endl; // finished for header - } - - // close the class: - hs << "};" << endl - << endl; - } - - // close the include guard - hs << "#endif" << endl; - - if (includeMocs) - cs << endl - << "#include \"" << adaptorFile << ".moc\"" << endl; - - cs.flush(); - hs.flush(); - if (headerName == cppName) - file.write(cppData); - else { - // write to cpp file - QFile f(cppName); - f.open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text); - f.write(cppData); - } -} - -int main(int argc, char **argv) -{ - parseCmdLine(argc, argv); - - QDBusIntrospection::Interfaces interfaces = readInput(); - cleanInterfaces(interfaces); - - writeProxy(proxyFile, interfaces); - - if (adaptorFile) - writeAdaptor(adaptorFile, interfaces); - - return 0; -} - -/*! - \page dbusidl2cpp.html - \title QtDBus IDL compiler (dbusidl2cpp) - - The QtDBus IDL compiler is a tool that can be used to parse interface descriptions and produce - static code representing those interfaces, which can then be used to make calls to remote - objects or implement said interfaces. - - \c dbusidl2dcpp has two modes of operation, that correspond to the two possible outputs it can - produce: the interface (proxy) class or the adaptor class.The latter consists of both a C++ - header and a source file, which are meant to be edited and adapted to your needs. - - The \c dbusidl2dcpp tool is not meant to be run every time you compile your - application. Instead, it's meant to be used when developing the code or when the interface - changes. - - The adaptor classes generated by \c dbusidl2cpp are just a skeleton that must be completed. It - generates, by default, calls to slots with the same name on the object the adaptor is attached - to. However, you may modify those slots or the property accessor functions to suit your needs. -*/ diff --git a/qt/examples/Makefile.am b/qt/examples/Makefile.am index 7906f28b..5d1e0542 100644 --- a/qt/examples/Makefile.am +++ b/qt/examples/Makefile.am @@ -1,6 +1,5 @@ -if HAVE_QT -INCLUDES=-I$(top_srcdir) $(DBUS_CLIENT_CFLAGS) $(DBUS_QT_CFLAGS) -DDBUS_COMPILATION -LDADD = ../libdbus-qt4-1.la +INCLUDES=-I$(top_srcdir)/qt $(DBUS_CLIENT_CFLAGS) $(DBUS_QT_CFLAGS) -DDBUS_COMPILATION +LDADD = ../src/libdbus-qt4-1.la if HAVE_QT_GUI chat_LDADD = $(LDADD) $(DBUS_QT_GUI_LIBS) @@ -10,7 +9,7 @@ chat.o: chatmainwindow.h chatsetnickname.h chatinterface.h chatadaptor.h chat.mo chatmainwindow.h: chatmainwindow.ui chatsetnickname.h: chatsetnickname.ui chatinterface.cpp chatinterface.h: com.trolltech.ChatInterface.xml - ../dbusidl2cpp -m -p chatinterface $? + ../tools/dbusidl2cpp -m -p chatinterface $? $(QT_MOC) -o chatinterface.moc chatinterface.h CHAT=chat @@ -41,5 +40,4 @@ CLEANFILES = chat.moc chatadaptor.moc complexping.moc complexpong.moc pong.moc \ $(QT_MOC) $< > $@ %.h: %.ui $(QT_UIC) -o $@ $? -endif diff --git a/qt/examples/complexpong.h b/qt/examples/complexpong.h index eaf5065f..c6ad2dbb 100644 --- a/qt/examples/complexpong.h +++ b/qt/examples/complexpong.h @@ -28,7 +28,7 @@ class Pong: public QDBusAbstractAdaptor { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "com.trolltech.QtDBus.ComplexPong.Pong") - Q_PROPERTY(QString value READ value WRITE setValue); + Q_PROPERTY(QString value READ value WRITE setValue) public: QString m_value; QString value() const; diff --git a/qt/qdbusabstractadaptor.cpp b/qt/qdbusabstractadaptor.cpp deleted file mode 100644 index b7c41888..00000000 --- a/qt/qdbusabstractadaptor.cpp +++ /dev/null @@ -1,336 +0,0 @@ -/* -*- mode: C++ -*- - * - * Copyright (C) 2006 Trolltech AS. All rights reserved. - * Author: Thiago Macieira - * - * Licensed under the Academic Free License version 2.1 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#include "qdbusabstractadaptor.h" - -#include -#include - -#include "qdbusconnection.h" - -#include "qdbusconnection_p.h" // for qDBusParametersForMethod -#include "qdbusabstractadaptor_p.h" - -struct QDBusAdaptorInit -{ - QSignalSpyCallbackSet callbacks; - QDBusAdaptorInit() - { - extern void qt_register_signal_spy_callbacks(const QSignalSpyCallbackSet &callback_set); - callbacks.signal_begin_callback = QDBusAdaptorConnector::signalBeginCallback; - callbacks.signal_end_callback = QDBusAdaptorConnector::signalEndCallback; - callbacks.slot_begin_callback = 0; - callbacks.slot_end_callback = 0; - qt_register_signal_spy_callbacks(callbacks); - - //QDBusAdaptorConnector::id = QObject::registerUserData(); - } -}; - -Q_GLOBAL_STATIC(QDBusAdaptorInit, qAdaptorInit) - -QDBusAdaptorConnector *qDBusFindAdaptorConnector(QObject *obj) -{ - (void)qAdaptorInit(); - - if (!obj) - return 0; - QDBusAdaptorConnector *connector = qFindChild(obj); - if (connector) - connector->polish(); - return connector; -} - -QDBusAdaptorConnector *qDBusFindAdaptorConnector(QDBusAbstractAdaptor *adaptor) -{ - return qDBusFindAdaptorConnector(adaptor->parent()); -} - -QDBusAdaptorConnector *qDBusCreateAdaptorConnector(QObject *obj) -{ - (void)qAdaptorInit(); - - QDBusAdaptorConnector *connector = qDBusFindAdaptorConnector(obj); - if (connector) - return connector; - return new QDBusAdaptorConnector(obj); -} - -QString QDBusAbstractAdaptorPrivate::retrieveIntrospectionXml(QDBusAbstractAdaptor *adaptor) -{ - return adaptor->d->xml; -} - -void QDBusAbstractAdaptorPrivate::saveIntrospectionXml(QDBusAbstractAdaptor *adaptor, - const QString &xml) -{ - adaptor->d->xml = xml; -} - -/*! - \page usingannotations.html - \title Using annotations in adaptors - - It is currently not possible to specify arbitrary annotations in adaptors. -*/ - -/*! - \class QDBusAbstractAdaptor - \brief Abstract adaptor for D-Bus adaptor classes. - - The QDBusAbstractAdaptor class is the starting point for all objects intending to provide - interfaces to the external world using D-Bus. This is accomplished by attaching a one or more - classes derived from QDBusAbstractAdaptor to a normal QObject and then registering that QObject - with QDBusConnection::registerObject. QDBusAbstractAdaptor objects are intended to be - light-weight wrappers, mostly just relaying calls into the real object (see object()) and the - signals from it. - - Each QDBusAbstractAdaptor-derived class should define the D-Bus interface it is implementing - using the Q_CLASSINFO macro in the class definition. - - QDBusAbstractAdaptor uses the standard QObject mechanism of signals, slots and properties to - determine what signals, methods and properties to export to the bus. Any signal emitted by - QDBusAbstractAdaptor-derived classes will be automatically be relayed through any D-Bus - connections the object is registered on. - - Classes derived from QDBusAbstractAdaptor must be created on the heap using the \a new operator - and must not be deleted by the user (they will be deleted automatically when the object they are - connected to is also deleted). - - \sa {usingadaptors.html}{Using adaptors}, QDBusConnection -*/ - -/*! - Constructs a QDBusAbstractAdaptor with \a parent as the object we refer to. -*/ -QDBusAbstractAdaptor::QDBusAbstractAdaptor(QObject* parent) - : QObject(parent), d(new QDBusAbstractAdaptorPrivate) -{ - QDBusAdaptorConnector *connector = qDBusCreateAdaptorConnector(parent); - - connector->waitingForPolish = true; - QTimer::singleShot(0, connector, SLOT(polish())); -} - -/*! - Destroys the adaptor. - - \warning Adaptors are destroyed automatically when the real object they refer to is - destroyed. Do not delete the adaptors yourself. -*/ -QDBusAbstractAdaptor::~QDBusAbstractAdaptor() -{ - delete d; -} - -/*! - Returns the QObject that we're the adaptor for. This is the same object that was passed as an - argument to the QDBusAbstractAdaptor constructor. -*/ -QObject* QDBusAbstractAdaptor::object() const -{ - return parent(); -} - -/*! - Toggles automatic signal relaying from the real object (see object()). - - Automatic signal relaying consists of signal-to-signal connection of the signals on the parent - that have the exact same method signatue in both classes. - - If \a enable is set to true, connect the signals; if set to false, disconnect all signals. -*/ -void QDBusAbstractAdaptor::setAutoRelaySignals(bool enable) -{ - const QMetaObject *us = metaObject(); - const QMetaObject *them = parent()->metaObject(); - for (int idx = staticMetaObject.methodCount(); idx < us->methodCount(); ++idx) { - QMetaMethod mm = us->method(idx); - - if (mm.methodType() != QMetaMethod::Signal) - continue; - - // try to connect/disconnect to a signal on the parent that has the same method signature - QByteArray sig = QMetaObject::normalizedSignature(mm.signature()); - if (them->indexOfSignal(sig) == -1) - continue; - sig.prepend(QSIGNAL_CODE + '0'); - parent()->disconnect(sig, this, sig); - if (enable) - connect(parent(), sig, sig); - } -} - -QDBusAdaptorConnector::QDBusAdaptorConnector(QObject *parent) - : QObject(parent), waitingForPolish(false), lastSignalIdx(0), argv(0) -{ -} - -QDBusAdaptorConnector::~QDBusAdaptorConnector() -{ -} - -void QDBusAdaptorConnector::addAdaptor(QDBusAbstractAdaptor *adaptor) -{ - // find the interface name - const QMetaObject *mo = adaptor->metaObject(); - while (mo != &QDBusAbstractAdaptor::staticMetaObject) { - int ciend = mo->classInfoCount(); - for (int i = mo->classInfoOffset(); i < ciend; ++i) { - QMetaClassInfo mci = mo->classInfo(i); - if (strcmp(mci.name(), QCLASSINFO_DBUS_INTERFACE) == 0 && *mci.value()) { - // find out if this interface exists first - QString interface = QString::fromUtf8(mci.value()); - AdaptorMap::Iterator it = qLowerBound(adaptors.begin(), adaptors.end(), interface); - if (it != adaptors.end() && it->interface == interface) { - // exists. Replace it (though it's probably the same) - it->adaptor = adaptor; - it->metaObject = mo; - } else { - // create a new one - AdaptorData entry; - entry.interface = interface; - entry.adaptor = adaptor; - entry.metaObject = mo; - adaptors << entry; - } - } - } - - mo = mo->superClass(); - } - - // connect the adaptor's signals to our relaySlot slot - mo = adaptor->metaObject(); - for (int i = QDBusAbstractAdaptor::staticMetaObject.methodCount(); - i < mo->methodCount(); ++i) { - QMetaMethod mm = mo->method(i); - - if (mm.methodType() != QMetaMethod::Signal) - continue; - - QByteArray sig = mm.signature(); - sig.prepend(QSIGNAL_CODE + '0'); - disconnect(adaptor, sig, this, SLOT(relaySlot())); - connect(adaptor, sig, this, SLOT(relaySlot())); - } -} - -void QDBusAdaptorConnector::polish() -{ - if (!waitingForPolish) - return; // avoid working multiple times if multiple adaptors were added - - waitingForPolish = false; - const QObjectList &objs = parent()->children(); - foreach (QObject *obj, objs) { - QDBusAbstractAdaptor *adaptor = qobject_cast(obj); - if (adaptor) - addAdaptor(adaptor); - } - - // sort the adaptor list - qSort(adaptors); -} - -void QDBusAdaptorConnector::relaySlot() -{ - relay(sender()); -} - -void QDBusAdaptorConnector::relay(QObject *sender) -{ - // we're being called because there is a signal being emitted that we must relay - Q_ASSERT(lastSignalIdx); - Q_ASSERT(argv); - Q_ASSERT(senderMetaObject); - - if (senderMetaObject != sender->metaObject()) { - qWarning("Inconsistency detected: QDBusAdaptorConnector::relay got called with unexpected sender object!"); - } else { - QMetaMethod mm = senderMetaObject->method(lastSignalIdx); - QObject *object = static_cast(sender)->parent(); - - // break down the parameter list - QList types; - int inputCount = qDBusParametersForMethod(mm, types); - if (inputCount == -1) - // invalid signal signature - // qDBusParametersForMethod has already complained - return; - if (inputCount + 1 != types.count() || - types.at(inputCount) == QDBusConnectionPrivate::messageMetaType) { - // invalid signal signature - // qDBusParametersForMethod has not yet complained about this one - qWarning("Cannot relay signal %s::%s", senderMetaObject->className(), mm.signature()); - return; - } - - QByteArray signature = QMetaObject::normalizedSignature(mm.signature()); - signature.truncate(signature.indexOf('(')); // remove parameter decoration - - QVariantList args; - for (int i = 1; i < types.count(); ++i) - args << QVariant(types.at(i), argv[i]); - - // find all the interfaces this signal belongs to - for (const QMetaObject *mo = senderMetaObject; mo != &QDBusAbstractAdaptor::staticMetaObject; - mo = mo->superClass()) { - if (lastSignalIdx < mo->methodOffset()) - break; - - for (int i = mo->classInfoOffset(); i < mo->classInfoCount(); ++i) { - QMetaClassInfo mci = mo->classInfo(i); - if (qstrcmp(mci.name(), QCLASSINFO_DBUS_INTERFACE) == 0 && *mci.value()) - // now emit the signal with all the information - emit relaySignal(object, mci.value(), signature.constData(), args); - } - } - } -} - -void QDBusAdaptorConnector::signalBeginCallback(QObject *caller, int method_index, void **argv) -{ - QDBusAbstractAdaptor *adaptor = qobject_cast(caller); - if (adaptor) { - QDBusAdaptorConnector *data = qDBusFindAdaptorConnector(adaptor); - data->lastSignalIdx = method_index; - data->argv = argv; - data->senderMetaObject = caller->metaObject(); - data->polish(); // make sure it's polished - } -} - -void QDBusAdaptorConnector::signalEndCallback(QObject *caller, int) -{ - QDBusAbstractAdaptor *adaptor = qobject_cast(caller); - if (adaptor) { - QDBusAdaptorConnector *data = qDBusFindAdaptorConnector(adaptor); - data->lastSignalIdx = 0; - data->argv = 0; - data->senderMetaObject = 0; - } -} - -#include "qdbusabstractadaptor.moc" -#include "qdbusabstractadaptor_p.moc" diff --git a/qt/qdbusabstractadaptor.h b/qt/qdbusabstractadaptor.h deleted file mode 100644 index 16fbf5d9..00000000 --- a/qt/qdbusabstractadaptor.h +++ /dev/null @@ -1,50 +0,0 @@ -/* -*- mode: C++ -*- - * - * Copyright (C) 2006 Trolltech AS. All rights reserved. - * Author: Thiago Macieira - * - * Licensed under the Academic Free License version 2.1 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#ifndef QDBUSABSTRACTADAPTOR_H -#define QDBUSABSTRACTADAPTOR_H - -#include -#include "qdbusmacros.h" - -class QDBusAbstractAdaptorPrivate; -class QDBUS_EXPORT QDBusAbstractAdaptor: public QObject -{ - Q_OBJECT -protected: - QDBusAbstractAdaptor(QObject *parent); - -public: - ~QDBusAbstractAdaptor(); - - Q_DECL_DEPRECATED QObject *object() const; - -protected: - void setAutoRelaySignals(bool enable); - -private: - friend class QDBusAbstractAdaptorPrivate; - QDBusAbstractAdaptorPrivate *d; -}; - -#endif diff --git a/qt/qdbusabstractadaptor_p.h b/qt/qdbusabstractadaptor_p.h deleted file mode 100644 index 71bfb582..00000000 --- a/qt/qdbusabstractadaptor_p.h +++ /dev/null @@ -1,127 +0,0 @@ -/* -*- mode: C++; set-fill-width: 100 -*- - * - * Copyright (C) 2006 Trolltech AS. All rights reserved. - * Author: Thiago Macieira - * - * Licensed under the Academic Free License version 2.1 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -// -// W A R N I N G -// ------------- -// -// This file is not part of the public API. This header file may -// change from version to version without notice, or even be -// removed. -// -// We mean it. -// -// - -#ifndef QDBUSABSTRACTADAPTORPRIVATE_H -#define QDBUSABSTRACTADAPTORPRIVATE_H - -#include -#include -#include -#include -#include -#include - -#define QCLASSINFO_DBUS_INTERFACE "D-Bus Interface" -#define QCLASSINFO_DBUS_INTROSPECTION "D-Bus Introspection" - -class QDBusAbstractAdaptor; -class QDBusAdaptorConnector; -class QDBusAdaptorManager; -class QDBusConnectionPrivate; - -#if QT_VERSION < 0x040200 -/* mirrored in qobject_p.h, DON'T CHANGE without prior warning */ -struct QSignalSpyCallbackSet -{ - typedef void (*BeginCallback)(QObject *caller, int method_index, void **argv); - typedef void (*EndCallback)(QObject *caller, int method_index); - BeginCallback signal_begin_callback, - slot_begin_callback; - EndCallback signal_end_callback, - slot_end_callback; -}; -#else -# error Qt 4.2.0 is supposed to have a better solution! - CHOKE! -#endif // Qt 4.2.0 - -class QDBusAbstractAdaptorPrivate -{ -public: - QString xml; - - static QString retrieveIntrospectionXml(QDBusAbstractAdaptor *adaptor); - static void saveIntrospectionXml(QDBusAbstractAdaptor *adaptor, const QString &xml); -}; - -class QDBusAdaptorConnector: public QObject -{ - Q_OBJECT -public: // typedefs - struct AdaptorData - { - QString interface; - QDBusAbstractAdaptor *adaptor; - const QMetaObject *metaObject; - - inline bool operator<(const AdaptorData &other) const - { return interface < other.interface; } - inline bool operator<(const QString &other) const - { return interface < other; } - }; - typedef QVector AdaptorMap; - -public: // methods - explicit QDBusAdaptorConnector(QObject *parent); - ~QDBusAdaptorConnector(); - - void addAdaptor(QDBusAbstractAdaptor *adaptor); - void relay(QObject *sender); - -public slots: - void relaySlot(); - void polish(); - -signals: - void relaySignal(QObject *obj, const char *interface, const char *name, const QVariantList &args); - -public: // member variables - AdaptorMap adaptors; - bool waitingForPolish : 1; - - int lastSignalIdx; - void **argv; - const QMetaObject *senderMetaObject; - -public: // static members - static void signalBeginCallback(QObject *caller, int method_index, void **argv); - static void signalEndCallback(QObject *caller, int method_index); - //static int id; -}; - -extern QDBusAdaptorConnector *qDBusFindAdaptorConnector(QObject *object); -extern QDBusAdaptorConnector *qDBusCreateAdaptorConnector(QObject *object); - -#endif // QDBUSABSTRACTADAPTORPRIVATE_H diff --git a/qt/qdbusabstractinterface.cpp b/qt/qdbusabstractinterface.cpp deleted file mode 100644 index 2a6bcf04..00000000 --- a/qt/qdbusabstractinterface.cpp +++ /dev/null @@ -1,389 +0,0 @@ -/* -*- C++ -*- - * - * Copyright (C) 2005 Thiago Macieira - * Copyright (C) 2006 Trolltech AS. All rights reserved. - * Author: Thiago Macieira - * - * Licensed under the Academic Free License version 2.1 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#include "qdbusabstractinterface.h" - -#include "qdbusabstractinterface_p.h" -#include "qdbusmetaobject_p.h" -#include "qdbusconnection_p.h" - -QVariant QDBusAbstractInterfacePrivate::property(const QMetaProperty &mp) const -{ - // try to read this property - QDBusMessage msg = QDBusMessage::methodCall(service, path, DBUS_INTERFACE_PROPERTIES, - QLatin1String("Get")); - msg << interface << QString::fromUtf8(mp.name()); - QDBusMessage reply = connp->sendWithReply(msg, QDBusConnection::NoUseEventLoop); - - if (reply.type() == QDBusMessage::ReplyMessage && reply.count() == 1 && - reply.signature() == QLatin1String("v")) { - QVariant value = QDBusTypeHelper::fromVariant(reply.at(0)); - - // make sure the type is right - if (qstrcmp(mp.typeName(), value.typeName()) == 0) { - if (mp.type() == QVariant::LastType) - // QVariant is special in this context - return QDBusTypeHelper::fromVariant(value); - - return value; - } - } - - // there was an error... - if (reply.type() == QDBusMessage::ErrorMessage) - lastError = reply; - else if (reply.signature() != QLatin1String("v")) { - QString errmsg = QLatin1String("Invalid signature `%1' in return from call to " - DBUS_INTERFACE_PROPERTIES); - lastError = QDBusError(QDBusError::InvalidSignature, errmsg.arg(reply.signature())); - } else { - QString errmsg = QLatin1String("Unexpected type `%1' when retrieving property " - "`%2 %3.%4'"); - lastError = QDBusError(QDBusError::InvalidSignature, - errmsg.arg(QLatin1String(reply.at(0).typeName()), - QLatin1String(mp.typeName()), - interface, QString::fromUtf8(mp.name()))); - } - - return QVariant(); -} - -void QDBusAbstractInterfacePrivate::setProperty(const QMetaProperty &mp, const QVariant &value) -{ - // send the value - QDBusMessage msg = QDBusMessage::methodCall(service, path, DBUS_INTERFACE_PROPERTIES, - QLatin1String("Set")); - msg.setSignature(QLatin1String("ssv")); - msg << interface << QString::fromUtf8(mp.name()) << value; - QDBusMessage reply = connp->sendWithReply(msg, QDBusConnection::NoUseEventLoop); - - if (reply.type() != QDBusMessage::ReplyMessage) - lastError = reply; -} - -/*! - \class QDBusAbstractInterface - \brief Base class for all D-Bus interfaces in the QtDBus binding, allowing access to remote interfaces. - - Generated-code classes also derive from QDBusAbstractInterface, all methods described here are also - valid for generated-code classes. In addition to those described here, generated-code classes - provide member functions for the remote methods, which allow for compile-time checking of the - correct parameters and return values, as well as property type-matching and signal - parameter-matching. - - \sa {dbusidl2cpp.html}{The dbusidl2cpp compiler}, QDBusInterface -*/ - -/*! - \enum QDBusAbstractInterface::CallMode - - Specifies how a call should be placed. The valid options are: - \value NoWaitForReply place the call but don't wait for the reply (the reply's contents - will be discarded) - \value NoUseEventLoop don't use an event loop to wait for a reply, but instead block on - network operations while waiting. This option means the - user-interface may not be updated for the duration of the call. - \value UseEventLoop use the Qt event loop to wait for a reply. This option means the - user-interface will update, but it also means other events may - happen, like signal delivery and other D-Bus method calls. - - When using UseEventLoop, applications must be prepared for reentrancy in any function. -*/ - -/*! - \internal -*/ -QDBusAbstractInterface::QDBusAbstractInterface(QDBusAbstractInterfacePrivate* d) -#if QT_VERSION < 0x040200 - : d_ptr(d) -{ - d_ptr->q_ptr = this; -} -#endif - -/*! - Releases this object's resources. -*/ -QDBusAbstractInterface::~QDBusAbstractInterface() -{ - delete d_ptr; -} - -/*! - Returns true if this is a valid reference to a remote object. It returns false if - there was an error during the creation of this interface (for instance, if the remote - application does not exist). - - Note: when dealing with remote objects, it is not always possible to determine if it - exists when creating a QDBusInterface or QDBusInterfacePtr object. -*/ -bool QDBusAbstractInterface::isValid() const -{ - return d_func()->isValid; -} - -/*! - Returns the connection this interface is assocated with. -*/ -QDBusConnection QDBusAbstractInterface::connection() const -{ - return d_func()->conn; -} - -/*! - Returns the name of the service this interface is associated with. -*/ -QString QDBusAbstractInterface::service() const -{ - return d_func()->service; -} - -/*! - Returns the object path that this interface is associated with. -*/ -QString QDBusAbstractInterface::path() const -{ - return d_func()->path; -} - -/*! - Returns the name of this interface. -*/ -QString QDBusAbstractInterface::interface() const -{ - return d_func()->interface; -} - -/*! - Returns the error the last operation produced, or an invalid error if the last operation did not - produce an error. -*/ -QDBusError QDBusAbstractInterface::lastError() const -{ - return d_func()->lastError; -} - -/*! - \threadsafe - Places a call to the remote method specified by \a method on this interface, using \a args as - arguments. This function returns the message that was received as a reply, which can be a normal - QDBusMessage::ReplyMessage (indicating success) or QDBusMessage::ErrorMessage (if the call - failed). The \a mode parameter specifies how this call should be placed. - - If the call succeeds, lastError() will be cleared; otherwise, it will contain the error this - call produced. - - Normally, you should place calls using call(). - - \warning If you use \c UseEventLoop, your code must be prepared to deal with any reentrancy: - other method calls and signals may be delivered before this function returns, as well - as other Qt queued signals and events. -*/ -QDBusMessage QDBusAbstractInterface::callWithArgs(const QString& method, const QList& args, - CallMode mode) -{ - Q_D(QDBusAbstractInterface); - - QString m = method, sig; - // split out the signature from the method - int pos = method.indexOf(QLatin1Char('.')); - if (pos != -1) { - m.truncate(pos); - sig = method.mid(pos + 1); - } - - if (mode == AutoDetect) { - // determine if this a sync or async call - mode = NoUseEventLoop; - const QMetaObject *mo = metaObject(); - QByteArray match = method.toLatin1() + '('; - - for (int i = staticMetaObject.methodCount(); i < mo->methodCount(); ++i) { - QMetaMethod mm = mo->method(i); - if (QByteArray(mm.signature()).startsWith(match)) { - // found a method with the same name as what we're looking for - // hopefully, nobody is overloading asynchronous and synchronous methods with - // the same name - - QList tags = QByteArray(mm.tag()).split(' '); - if (tags.contains("async") || tags.contains("Q_ASYNC")) - mode = NoWaitForReply; - - break; - } - } - } - - QDBusMessage msg = QDBusMessage::methodCall(service(), path(), interface(), m); - msg.setSignature(sig); - msg.QList::operator=(args); - - QDBusMessage reply; - if (mode != NoWaitForReply) - reply = d->conn.sendWithReply(msg, mode == UseEventLoop ? - QDBusConnection::UseEventLoop : QDBusConnection::NoUseEventLoop); - else - d->conn.send(msg); - - d->lastError = reply; // will clear if reply isn't an error - - // ensure that there is at least one element - if (reply.isEmpty()) - reply << QVariant(); - - return reply; -} - -/*! - \overload - Places a call to the remote method specified by \a method on this interface, using \a args as - arguments. This function will return immediately after queueing the call. The reply from the - remote function or any errors emitted by it will be delivered to the \a slot slot on object \a - receiver. - - This function returns true if the queueing succeeded: it does not indicate that the call - succeeded. If it failed, the slot will be called with an error message. lastError() will not be - set under those circumstances. - - \sa QDBusError, QDBusMessage -*/ -bool QDBusAbstractInterface::callWithArgs(const QString &method, QObject *receiver, const char *slot, - const QList &args) -{ - Q_D(QDBusAbstractInterface); - - QString m = method, sig; - // split out the signature from the method - int pos = method.indexOf(QLatin1Char('.')); - if (pos != -1) { - m.truncate(pos); - sig = method.mid(pos + 1); - } - - QDBusMessage msg = QDBusMessage::methodCall(service(), path(), interface(), m); - msg.setSignature(sig); - msg.QList::operator=(args); - - d->lastError = 0; // clear - return d->conn.sendWithReplyAsync(msg, receiver, slot); -} - -/*! - \internal - Catch signal connections. -*/ -void QDBusAbstractInterface::connectNotify(const char *signal) -{ - // someone connecting to one of our signals - Q_D(QDBusAbstractInterface); - - d->connp->connectRelay(d->service, d->path, d->interface, this, signal); -} - -/*! - \internal - Catch signal disconnections. -*/ -void QDBusAbstractInterface::disconnectNotify(const char *signal) -{ - // someone disconnecting from one of our signals - Q_D(QDBusAbstractInterface); - - d->connp->disconnectRelay(d->service, d->path, d->interface, this, signal); -} - -/*! - \internal - Get the value of the property \a propname. -*/ -QVariant QDBusAbstractInterface::internalPropGet(const char *propname) const -{ - // assume this property exists and is readable - // we're only called from generated code anyways - - int idx = metaObject()->indexOfProperty(propname); - if (idx != -1) - return d_func()->property(metaObject()->property(idx)); - qWarning("QDBusAbstractInterface::internalPropGet called with unknown property '%s'", propname); - return QVariant(); // error -} - -/*! - \internal - Set the value of the property \a propname to \a value. -*/ -void QDBusAbstractInterface::internalPropSet(const char *propname, const QVariant &value) -{ - Q_D(QDBusAbstractInterface); - - // assume this property exists and is writeable - // we're only called from generated code anyways - - int idx = metaObject()->indexOfProperty(propname); - if (idx != -1) - d->setProperty(metaObject()->property(idx), value); - else - qWarning("QDBusAbstractInterface::internalPropGet called with unknown property '%s'", propname); -} - -/*! - \overload - \fn QDBusMessage QDBusAbstractInterface::call(const QString &method) - - Calls the method \a method on this interface and passes the parameters to this function to the - method. - - The parameters to \c call are passed on to the remote function via D-Bus as input - arguments. Output arguments are returned in the QDBusMessage reply. If the reply is an error - reply, lastError() will also be set to the contents of the error message. - - This function is implemented by actually 9 different function overloads called \c call, so you - can pass up to 8 parameters to your function call, which can be of any type accepted by QtDBus - (see the \l {allowedparameters.html}{allowed parameters} page for information on what types are - accepted). - - It can be used the following way: - - \code - QString value = retrieveValue(); - QDBusMessage reply; - - QDBusReply api = interface->call(QLatin1String("GetAPIVersion")); - if (api >= 14) - reply = interface->call(QLatin1String("ProcessWorkUnicode"), value); - else - reply = interface->call(QLatin1String("ProcessWork"), QLatin1String("UTF-8"), value.toUtf8()); - \endcode - - This example illustrates function calling with 0, 1 and 2 parameters and illustrates different - parameter types passed in each (the first call to \c "ProcessWorkUnicode" will contain one - Unicode string, the second call to \c "ProcessWork" will contain one string and one byte array). - - \warning This function reenters the Qt event loop in order to wait for the reply, excluding user - input. During the wait, it may deliver signals and other method calls to your - application. Therefore, it must be prepared to handle a reentrancy whenever a call is - placed with call(). -*/ - -#include "qdbusabstractinterface.moc" diff --git a/qt/qdbusabstractinterface.h b/qt/qdbusabstractinterface.h deleted file mode 100644 index aa6d00d7..00000000 --- a/qt/qdbusabstractinterface.h +++ /dev/null @@ -1,257 +0,0 @@ -/* -*- C++ -*- - * - * Copyright (C) 2005 Thiago Macieira - * Copyright (C) 2006 Trolltech AS. All rights reserved. - * Author: Thiago Macieira - * - * Licensed under the Academic Free License version 2.1 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#ifndef QDBUSABSTRACTINTERFACE_H -#define QDBUSABSTRACTINTERFACE_H - -#include -#include -#include -#include - -#include "qdbusmessage.h" -#include "qdbustypehelper_p.h" - -class QDBusConnection; -class QDBusError; - -class QDBusAbstractInterfacePrivate; -class QDBUS_EXPORT QDBusAbstractInterface: public QObject -{ - Q_OBJECT - -public: - enum CallMode { - NoWaitForReply, - UseEventLoop, - NoUseEventLoop, - AutoDetect - }; - -public: - virtual ~QDBusAbstractInterface(); - bool isValid() const; - - QDBusConnection connection() const; - - QString service() const; - QString path() const; - QString interface() const; - - QDBusError lastError() const; - - QDBusMessage callWithArgs(const QString &method, const QList &args = QList(), - CallMode mode = AutoDetect); - bool callWithArgs(const QString &method, QObject *receiver, const char *slot, - const QList &args = QList()); - - inline QDBusMessage call(const QString &m) - { - return callWithArgs(m); - } - - inline QDBusMessage call(CallMode mode, const QString &m) - { - return callWithArgs(m, QList(), mode); - } - -#ifndef Q_QDOC -private: - template inline QVariant qvfv(const T &t) - { return QDBusTypeHelper::toVariant(t); } - -public: - template - inline QDBusMessage call(const QString &m, const T1 &t1) - { - QList args; - args << qvfv(t1); - return callWithArgs(m, args); - } - - template - inline QDBusMessage call(const QString &m, const T1 &t1, const T2 &t2) - { - QList args; - args << qvfv(t1) << qvfv(t2); - return callWithArgs(m, args); - } - - template - inline QDBusMessage call(const QString &m, const T1 &t1, const T2 &t2, const T3 &t3) - { - QList args; - args << qvfv(t1) << qvfv(t2) << qvfv(t3); - return callWithArgs(m, args); - } - - template - inline QDBusMessage call(const QString &m, const T1 &t1, const T2 &t2, const T3 &t3, - const T4 &t4) - { - QList args; - args << qvfv(t1) << qvfv(t2) << qvfv(t3) - << qvfv(t4); - return callWithArgs(m, args); - } - - template - inline QDBusMessage call(const QString &m, const T1 &t1, const T2 &t2, const T3 &t3, - const T4 &t4, const T5 &t5) - { - QList args; - args << qvfv(t1) << qvfv(t2) << qvfv(t3) - << qvfv(t4) << qvfv(t5); - return callWithArgs(m, args); - } - - template - inline QDBusMessage call(const QString &m, const T1 &t1, const T2 &t2, const T3 &t3, - const T4 &t4, const T5 &t5, const T6 &t6) - { - QList args; - args << qvfv(t1) << qvfv(t2) << qvfv(t3) - << qvfv(t4) << qvfv(t5) << qvfv(t6); - return callWithArgs(m, args); - } - - template - inline QDBusMessage call(const QString &m, const T1 &t1, const T2 &t2, const T3 &t3, - const T4 &t4, const T5 &t5, const T6 &t6, const T7 &t7) - { - QList args; - args << qvfv(t1) << qvfv(t2) << qvfv(t3) - << qvfv(t4) << qvfv(t5) << qvfv(t6) - << qvfv(t7); - return callWithArgs(m, args); - } - - template - inline QDBusMessage call(const QString &m, const T1 &t1, const T2 &t2, const T3 &t3, - const T4 &t4, const T5 &t5, const T6 &t6, const T7 &t7, const T8 &t8) - { - QList args; - args << qvfv(t1) << qvfv(t2) << qvfv(t3) - << qvfv(t4) << qvfv(t5) << qvfv(t6) - << qvfv(t7) << qvfv(t8); - return callWithArgs(m, args); - } - - template - inline QDBusMessage call(CallMode mode, const QString &m, const T1 &t1) - { - QList args; - args << qvfv(t1); - return callWithArgs(m, args, mode); - } - - template - inline QDBusMessage call(CallMode mode, const QString &m, const T1 &t1, const T2 &t2) - { - QList args; - args << qvfv(t1) << qvfv(t2); - return callWithArgs(m, args, mode); - } - - template - inline QDBusMessage call(CallMode mode, const QString &m, const T1 &t1, const T2 &t2, - const T3 &t3) - { - QList args; - args << qvfv(t1) << qvfv(t2) << qvfv(t3); - return callWithArgs(m, args, mode); - } - - template - inline QDBusMessage call(CallMode mode, const QString &m, const T1 &t1, const T2 &t2, - const T3 &t3, const T4 &t4) - { - QList args; - args << qvfv(t1) << qvfv(t2) << qvfv(t3) - << qvfv(t4); - return callWithArgs(m, args, mode); - } - - template - inline QDBusMessage call(CallMode mode, const QString &m, const T1 &t1, const T2 &t2, - const T3 &t3, const T4 &t4, const T5 &t5) - { - QList args; - args << qvfv(t1) << qvfv(t2) << qvfv(t3) - << qvfv(t4) << qvfv(t5); - return callWithArgs(m, args, mode); - } - - template - inline QDBusMessage call(CallMode mode, const QString &m, const T1 &t1, const T2 &t2, - const T3 &t3, const T4 &t4, const T5 &t5, const T6 &t6) - { - QList args; - args << qvfv(t1) << qvfv(t2) << qvfv(t3) - << qvfv(t4) << qvfv(t5) << qvfv(t6); - return callWithArgs(m, args, mode); - } - - template - inline QDBusMessage call(CallMode mode, const QString &m, const T1 &t1, const T2 &t2, - const T3 &t3, const T4 &t4, const T5 &t5, const T6 &t6, const T7 &t7) - { - QList args; - args << qvfv(t1) << qvfv(t2) << qvfv(t3) - << qvfv(t4) << qvfv(t5) << qvfv(t6) - << qvfv(t7); - return callWithArgs(m, args, mode); - } - - template - inline QDBusMessage call(CallMode mode, const QString &m, const T1 &t1, const T2 &t2, - const T3 &t3, const T4 &t4, const T5 &t5, const T6 &t6, const T7 &t7, - const T8 &t8) - { - QList args; - args << qvfv(t1) << qvfv(t2) << qvfv(t3) - << qvfv(t4) << qvfv(t5) << qvfv(t6) - << qvfv(t7) << qvfv(t8); - return callWithArgs(m, args, mode); - } -#endif - -protected: - QDBusAbstractInterface(QDBusAbstractInterfacePrivate *); - void connectNotify(const char *signal); - void disconnectNotify(const char *signal); - QVariant internalPropGet(const char *propname) const; - void internalPropSet(const char *propname, const QVariant &value); - -private: - friend class QDBusInterface; - QDBusAbstractInterfacePrivate *d_ptr; // remove for Qt 4.2.0 - - Q_DECLARE_PRIVATE(QDBusAbstractInterface) - Q_DISABLE_COPY(QDBusAbstractInterface) -}; - -#endif diff --git a/qt/qdbusabstractinterface_p.h b/qt/qdbusabstractinterface_p.h deleted file mode 100644 index 43807071..00000000 --- a/qt/qdbusabstractinterface_p.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - * - * Copyright (C) 2006 Thiago José Macieira - * Copyright (C) 2006 Trolltech AS. All rights reserved. - * Author: Thiago Macieira - * - * Licensed under the Academic Free License version 2.1 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -// -// W A R N I N G -// ------------- -// -// This file is not part of the public API. This header file may -// change from version to version without notice, or even be -// removed. -// -// We mean it. -// -// - -#ifndef QDBUSABSTRACTINTERFACEPRIVATE_H -#define QDBUSABSTRACTINTERFACEPRIVATE_H - -#include "qdbusabstractinterface.h" -#include "qdbusconnection.h" -#include "qdbuserror.h" - -#define ANNOTATION_NO_WAIT "org.freedesktop.DBus.Method.NoReply" - -class QDBusAbstractInterfacePrivate//: public QObjectPrivate -{ -public: - Q_DECLARE_PUBLIC(QDBusAbstractInterface) - - QDBusAbstractInterface *q_ptr; // remove in Qt 4.2 - QDBusConnection conn; - QDBusConnectionPrivate *connp; - QString service; - QString path; - QString interface; - mutable QDBusError lastError; - bool isValid; - - inline QDBusAbstractInterfacePrivate(const QDBusConnection& con, QDBusConnectionPrivate *conp, - const QString &serv, const QString &p, const QString &iface) - : conn(con), connp(conp), service(serv), path(p), interface(iface), isValid(true) - { } - virtual ~QDBusAbstractInterfacePrivate() { } - - // these functions do not check if the property is valid - QVariant property(const QMetaProperty &mp) const; - void setProperty(const QMetaProperty &mp, const QVariant &value); -}; - - -#endif diff --git a/qt/qdbusbus.cpp b/qt/qdbusbus.cpp deleted file mode 100644 index 02c231eb..00000000 --- a/qt/qdbusbus.cpp +++ /dev/null @@ -1,302 +0,0 @@ -/* -*- C++ -*- - * - * Copyright (C) 2006 Trolltech AS. All rights reserved. - * Author: Thiago Macieira - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -/* - * This file was generated by dbusidl2cpp version 0.3 - * when processing input file - - * - * dbusidl2cpp is Copyright (C) 2006 Trolltech AS. All rights reserved. - * - * This file has been hand-edited! Be careful when re-generating it! - * - */ - -#include "qdbusbus.h" - -#include -#include -#include -#include -#include -#include - -/* - * Implementation of interface class QDBusBusService - */ - -/*! - \class QDBusBusService - \brief Provides access to the D-Bus bus daemon service. - -*/ - -/*! - \enum QDBusBusService::RequestNameOption - - Flags for requesting a name on the bus. - - \value AllowReplacingName Allow another application requesting the same name to take the name - from this application. - \value ReplaceExistingName If another application already has the name and allows replacing, - take the name and assign it to us. - \value DoNotQueueName Without this flag, if an application requests a name that is already - owned and does not allow replacing, it will be queued until the - name is given up. If this flag is given, no queueing will be - performed and the requestName() call will simply fail. -*/ - -/*! - \enum QDBusBusService::RequestNameReply - - The possible return values from requestName(): - - \value PrimaryOwnerReply The caller is now the primary owner of the name. - \value InQueueReply The caller is in queue for the name, but does not own it. - \value NameExistsReply The name exists and could not be replaced, or the caller did - specify DoNotQueueName. - \value AlreadyOwnerReply The caller tried to request a name that it already owns. -*/ - -/*! - \enum QDBusBusService::ReleaseNameReply - - The possible return values from releaseName(): - - \value NameReleasedReply The caller released his claim on the name. - \value NameNonExistentReply The caller tried to release a name that did not exist. - \value NotOwnerReply The caller tried to release a name that it did not own or was not in - queue for. -*/ - -/*! - \enum QDBusBusService::StartServiceReply - - The possible return values from startServiceByName(): - - \value Success The service was successfully started. - \value AlreadyRunning The service was already running. -*/ - -/*! - \internal -*/ -const char *QDBusBusService::staticInterfaceName() -{ return "org.freedesktop.DBus"; } - - -/*! - \internal -*/ -QDBusBusService::QDBusBusService(QDBusAbstractInterfacePrivate *p) - : QDBusAbstractInterface(p) -{ - connect(this, SIGNAL(NameAcquired(QString)), this, SIGNAL(nameAcquired(QString))); - connect(this, SIGNAL(NameLost(QString)), this, SIGNAL(nameLost(QString))); - connect(this, SIGNAL(NameOwnerChanged(QString,QString,QString)), - this, SIGNAL(nameOwnerChanged(QString,QString,QString))); -} - -/*! - \internal -*/ -QDBusBusService::~QDBusBusService() -{ -} - -/*! - \fn QDBusBusService::hello() - \internal - Sends a "Hello" request to the bus service. You do not want to call this. -*/ -QDBusReply QDBusBusService::Hello() -{ - return call(QLatin1String("Hello")); -} - -/*! - \fn QDBusBusService::nameOwner(const QString &name) - Returns the unique connection name of the primary owner of the name \a name. If the requested - name doesn't have an owner, returns a org.freedesktop.DBus.Error.NameHasNoOwner error. -*/ -QDBusReply QDBusBusService::GetNameOwner(const QString &name) -{ - return call(QLatin1String("GetNameOwner.s"), name); -} - -/*! - \fn QDBusBusService::listNames() - Lists all names currently existing on the bus. -*/ -QDBusReply QDBusBusService::ListNames() -{ - return call(QLatin1String("ListNames")); -} - -/*! - \fn QDBusBusService::listQueuedOwners(const QString &service) - Returns a list of all unique connection names in queue for the service name \a service. -*/ -QDBusReply QDBusBusService::ListQueuedOwners(const QString &service) -{ - return call(QLatin1String("ListQueuedOwners.s"), service); -} - -/*! - \fn QDBusBusService::nameHasOwner(const QString &service) - Returns true if the service name \a service has an owner. -*/ -QDBusReply QDBusBusService::NameHasOwner(const QString &service) -{ - return call(QLatin1String("NameHasOwner.s"), service); -} - -/*! - \fn QDBusBusService::addMatch(const QString &rule) - Adds the rule \a rule for requesting messages from the bus. - - \sa removeMatch() -*/ -QDBusReply QDBusBusService::AddMatch(const QString &rule) -{ - return call(QLatin1String("AddMatch.s"), rule); -} - -/*! - \fn QDBusBusService::removeMatch(const QString &rule) - Removes the rule \a rule, that had previously been added with addMatch(). -*/ -QDBusReply QDBusBusService::RemoveMatch(const QString &rule) -{ - return call(QLatin1String("RemoveMatch.s"), rule); -} - -/*! - \fn QDBusBusService::connectionSELinuxSecurityContext(const QString &service) - Returns the SELinux security context of the process currently holding the bus service \a - service. -*/ -QDBusReply QDBusBusService::GetConnectionSELinuxSecurityContext(const QString &service) -{ - return call(QLatin1String("GetConnectionSELinuxSecurityContext.s"), service); -} - -/*! - \fn QDBusBusService::connectionUnixProcessID(const QString &service) - Returns the Unix Process ID (PID) for the process currently holding the bus service \a service. -*/ -QDBusReply QDBusBusService::GetConnectionUnixProcessID(const QString &service) -{ - return call(QLatin1String("GetConnectionUnixProcessID.s"), service); -} - -/*! - \fn QDBusBusService::connectionUnixUser(const QString &service) - Returns the Unix User ID (UID) for the process currently holding the bus service \a service. -*/ -QDBusReply QDBusBusService::GetConnectionUnixUser(const QString &service) -{ - return call(QLatin1String("GetConnectionUnixUser.s"), service); -} - -/*! - \fn QDBusBusService::reloadConfig() - Asks the D-Bus server daemon to reload its configuration. -*/ -QDBusReply QDBusBusService::ReloadConfig() -{ - return call(QLatin1String("ReloadConfig")); -} - -inline QDBUS_EXPORT int qDBusMetaTypeId(QDBusBusService::StartServiceReply *) -{ return QVariant::Int; } - -/*! - \fn QDBusBusService::startServiceByName(const QString &name, uint flags) - Requests that the bus start the service given by the name \a name. - - The \a flags parameter is currently not used. -*/ -QDBusReply -QDBusBusService::StartServiceByName(const QString &name, uint flags) -{ - return call(QLatin1String("StartServiceByName.su"), name, flags); -} - -inline QDBUS_EXPORT int qDBusMetaTypeId(QDBusBusService::RequestNameReply *) -{ return QVariant::Int; } - -/*! - \fn QDBusBusService::requestName(const QString &service, RequestNameOptions flags) - Requests the bus service name \a service from the bus. The \a flags parameter specifies how the - bus server daemon should act when the same name is requested by two different applications. - - \sa releaseName() -*/ -QDBusReply -QDBusBusService::RequestName(const QString &service, RequestNameOptions flags) -{ - return call(QLatin1String("RequestName.su"), service, uint(int(flags))); -} - -inline QDBUS_EXPORT int qDBusMetaTypeId(QDBusBusService::ReleaseNameReply *) -{ return QVariant::Int; } - -/*! - \fn QDBusBusService::releaseName(const QString &service) - Releases the claim on the bus service name \a service, that had been previously requested with - requestName(). If this application had ownership of the name, it will be released for other - applications to claim. If it only had the name queued, it gives up its position in the queue. -*/ -QDBusReply -QDBusBusService::ReleaseName(const QString &service) -{ - return call(QLatin1String("ReleaseName.s"), service); -} - -// signals -/*! - \fn QDBusBusService::nameAcquired(const QString &service) - - This signal is emitted by the D-Bus bus server when the bus service name (unique connection name - or well-known service name) given by \a service is acquired by this application. - - Name acquisition happens after the application requested a name using requestName(). -*/ - -/*! - \fn QDBusBusService::nameLost(const QString &service) - - This signal is emitted by the D-Bus bus server when the application loses ownership of the bus - service name given by \a service. -*/ - -/*! - \fn QDBusBusService::nameOwnerChanged(const QString &name, const QString &oldOwner, const QString &newOwner) - - This signal is emitted by the D-Bus bus server whenever a name ownership change happens in the - bus, including apparition and disparition of names. - - This signal means the application \a oldOwner lost ownership of bus name \a name to application - \a newOwner. If \a oldOwner is an empty string, it means the name \a name has just been created; - if \a newOwner is empty, the name \a name has no current owner. -*/ - -#include "qdbusbus.moc" diff --git a/qt/qdbusbus.h b/qt/qdbusbus.h deleted file mode 100644 index 6f0bbb1c..00000000 --- a/qt/qdbusbus.h +++ /dev/null @@ -1,158 +0,0 @@ -/* -*- C++ -*- - * - * Copyright (C) 2006 Trolltech AS. All rights reserved. - * Author: Thiago Macieira - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -/* - * This file was generated by dbusidl2cpp version 0.3 - * when processing input file - - * - * dbusidl2cpp is Copyright (C) 2006 Trolltech AS. All rights reserved. - * - * This file has been hand-edited! Be careful when re-generating it! - * - */ - -#ifndef QDBUSBUS_H -#define QDBUSBUS_H - -#include - -#include "qdbusabstractinterface.h" -#include "qdbusreply.h" - -class QDBusConnection; -class QString; -class QByteArray; - -/* - * Proxy class for interface org.freedesktop.DBus - */ -class QDBUS_EXPORT QDBusBusService: public QDBusAbstractInterface -{ - Q_OBJECT - friend class QDBusConnection; - static inline const char *staticInterfaceName(); - - explicit QDBusBusService(QDBusAbstractInterfacePrivate *p); - - ~QDBusBusService(); - -public: - // taken out of http://dbus.freedesktop.org/doc/dbus-specification.html - // update if the standard updates - enum RequestNameOption { - AllowReplacingName = 0x1, - ReplaceExistingName = 0x2, - DoNotQueueName = 0x4 - }; - Q_DECLARE_FLAGS(RequestNameOptions, RequestNameOption) - - enum RequestNameReply { - PrimaryOwnerReply = 1, - InQueueReply = 2, - NameExistsReply = 3, - AlreadyOwnerReply = 4 - }; - - enum ReleaseNameReply { - NameReleasedReply = 1, - NameNonExistentReply = 2, - NotOwnerReply = 3 - }; - - enum StartServiceReply { - Success = 1, - AlreadyRunning = 2 - }; - -#ifndef Q_QDOC - // D-Bus names -public: // METHODS - QDBusReply Hello(); - QDBusReply ReloadConfig(); - - QDBusReply ListNames(); - - QDBusReply NameHasOwner(const QString &service); - QDBusReply GetNameOwner(const QString &name); - QDBusReply ReleaseName(const QString &service); - QDBusReply RequestName(const QString &service, RequestNameOptions flags); - QDBusReply ListQueuedOwners(const QString &service); - - QDBusReply AddMatch(const QString &rule); - QDBusReply RemoveMatch(const QString &rule); - - QDBusReply GetConnectionSELinuxSecurityContext(const QString &service); - QDBusReply GetConnectionUnixProcessID(const QString &service); - QDBusReply GetConnectionUnixUser(const QString &service); - - QDBusReply StartServiceByName(const QString &name, uint flags); - -signals: // SIGNALS - void NameAcquired(const QString &service); - void NameLost(const QString &service); - void NameOwnerChanged(const QString &name, const QString &oldOwner, const QString &newOwner); -#endif - - // Qt-style naming -public slots: - QDBusReply hello() - { return Hello(); } - QDBusReply reloadConfig() - { return ReloadConfig(); } - - QDBusReply listNames() - { return ListNames(); } - - QDBusReply nameHasOwner(const QString &service) - { return NameHasOwner(service); } - QDBusReply nameOwner(const QString &name) - { return GetNameOwner(name); } - QDBusReply releaseName(const QString &service) - { return ReleaseName(service); } - QDBusReply requestName(const QString &service, RequestNameOptions flags) - { return RequestName(service, flags); } - QDBusReply listQueuedOwners(const QString &service) - { return ListQueuedOwners(service); } - - QDBusReply addMatch(const QString &rule) - { return AddMatch(rule); } - QDBusReply removeMatch(const QString &rule) - { return RemoveMatch(rule); } - - QDBusReply connectionSELinuxSecurityContext(const QString &service) - { return GetConnectionSELinuxSecurityContext(service); } - QDBusReply connectionUnixProcessID(const QString &service) - { return GetConnectionUnixProcessID(service); } - QDBusReply connectionUnixUser(const QString &service) - { return GetConnectionUnixUser(service); } - - QDBusReply startServiceByName(const QString &name, uint flags) - { return StartServiceByName(name, flags); } - -signals: - void nameAcquired(const QString &service); - void nameLost(const QString &service); - void nameOwnerChanged(const QString &name, const QString &oldOwner, const QString &newOwner); -}; - -Q_DECLARE_OPERATORS_FOR_FLAGS(QDBusBusService::RequestNameOptions); - -#endif diff --git a/qt/qdbusconnection.cpp b/qt/qdbusconnection.cpp deleted file mode 100644 index 7bbde9ac..00000000 --- a/qt/qdbusconnection.cpp +++ /dev/null @@ -1,753 +0,0 @@ -/* qdbusconnection.cpp - * - * Copyright (C) 2005 Harald Fernengel - * Copyright (C) 2006 Trolltech AS. All rights reserved. - * Author: Thiago Macieira - * - * Licensed under the Academic Free License version 2.1 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#include -#include -#include - -#include "qdbusbus.h" -#include "qdbusconnection.h" -#include "qdbuserror.h" -#include "qdbusmessage.h" -#include "qdbusconnection_p.h" -#include "qdbusinterface_p.h" -#include "qdbusutil.h" - -class QDBusConnectionManager -{ -public: - QDBusConnectionManager() {} - ~QDBusConnectionManager(); - void bindToApplication(); - QDBusConnectionPrivate *connection(const QString &name) const; - void removeConnection(const QString &name); - void setConnection(const QString &name, QDBusConnectionPrivate *c); - -private: - mutable QMutex mutex; - QHash connectionHash; -}; - -Q_GLOBAL_STATIC(QDBusConnectionManager, manager); - -QDBusConnectionPrivate *QDBusConnectionManager::connection(const QString &name) const -{ - QMutexLocker locker(&mutex); - return connectionHash.value(name, 0); -} - -void QDBusConnectionManager::removeConnection(const QString &name) -{ - QMutexLocker locker(&mutex); - - QDBusConnectionPrivate *d = 0; - d = connectionHash.take(name); - if (d && !d->ref.deref()) - delete d; -} - -QDBusConnectionManager::~QDBusConnectionManager() -{ - for (QHash::const_iterator it = connectionHash.constBegin(); - it != connectionHash.constEnd(); ++it) { - delete it.value(); - } - connectionHash.clear(); -} - -void QDBusConnectionManager::bindToApplication() -{ - QMutexLocker locker(&mutex); - for (QHash::const_iterator it = connectionHash.constBegin(); - it != connectionHash.constEnd(); ++it) { - (*it)->bindToApplication(); - } -} - -QDBUS_EXPORT void qDBusBindToApplication(); -void qDBusBindToApplication() -{ - manager()->bindToApplication(); -} - -void QDBusConnectionManager::setConnection(const QString &name, QDBusConnectionPrivate *c) -{ - connectionHash[name] = c; - c->name = name; -} - -/*! - \fn QDBusConnection QDBus::sessionBus() - \relates QDBusConnection - - Returns a QDBusConnection object opened with the session bus. The object reference returned - by this function is valid until the QCoreApplication's destructor is run, when the - connection will be closed and the object, deleted. -*/ -/*! - \fn QDBusConnection QDBus::systemBus() - \relates QDBusConnection - - Returns a QDBusConnection object opened with the system bus. The object reference returned - by this function is valid until the QCoreApplication's destructor is run, when the - connection will be closed and the object, deleted. -*/ - -/*! - \class QDBusConnection - \brief A connection to the D-Bus bus daemon. - - This class is the initial point in a D-Bus session. Using it, you can get access to remote - objects, interfaces; connect remote signals to your object's slots; register objects, etc. - - D-Bus connections are created using the QDBusConnection::addConnection() function, which opens a - connection to the server daemon and does the initial handshaking, associating that connection - with a name. Further attempts to connect using the same name will return the same - connection. - - The connection is then torn down using the QDBusConnection::closeConnection() function. - - As a convenience for the two most common connection types, the QDBus::sessionBus() and - QDBus::systemBus() functions return open connections to the session server daemon and the system - server daemon, respectively. Those connections are opened when first used and are closed when - the QCoreApplication destructor is run. - - D-Bus also supports peer-to-peer connections, without the need for a bus server daemon. Using - this facility, two applications can talk to each other and exchange messages. This can be - achieved by passing an address to QDBusConnection::addConnection() - function, which was opened by another D-Bus application using QDBusServer. -*/ - -/*! - \enum QDBusConnection::BusType - Specifies the type of the bus connection. The valid bus types are: - - \value SessionBus the session bus, associated with the running desktop session - \value SystemBus the system bus, used to communicate with system-wide processes - \value ActivationBus the activation bus, whose purpose I have no idea... - - On the Session Bus, one can find other applications by the same user that are sharing the same - desktop session (hence the name). On the System Bus, however, processes shared for the whole - system are usually found. -*/ - -/*! - \enum QDBusConnection::WaitMode - Specifies the call waiting mode. - - \value UseEventLoop use the Qt Event Loop to wait for the reply - \value NoUseEventLoop don't use the event loop - - The \c UseEventLoop option allows for the application to continue to update its UI while the - call is performed, but it also opens up the possibility for reentrancy: socket notifiers may - fire, signals may be delivered and other D-Bus calls may be processed. The \c NoUseEventLoop - does not use the event loop, thus being safe from those problems, but it may block the - application for a noticeable period of time, in case the remote application fails to respond. - - Also note that calls that go back to the local application can only be placed in \c UseEventLoop - mode. -*/ - -/*! - \enum QDBusConnection::RegisterOption - Specifies the options for registering objects with the connection. The possible values are: - - \value ExportAdaptors export the contents of adaptors found in this object - - \value ExportSlots export this object's scriptable slots - \value ExportSignals export this object's scriptable signals - \value ExportProperties export this object's scriptable properties - \value ExportContents shorthand form for ExportSlots | ExportSignals | - ExportProperties - - \value ExportAllSlots export all of this object's slots, including - non-scriptable ones - \value ExportAllSignals export all of this object's signals, including - non-scriptable ones - \value ExportAllProperties export all of this object's properties, including - non-scriptable ones - \value ExportAllContents export all of this object's slots, signals and - properties, including non-scriptable ones - - \value ExportChildObjects export this object's child objects - - \warning It is currently not possible to export signals from objects. If you pass the flag - ExportSignals or ExportAllSignals, the registerObject() function will print a warning. - - \sa registerObject(), QDBusAbstractAdaptor, {usingadaptors.html}{Using adaptors} -*/ - -/*! - \enum QDBusConnection::UnregisterMode - The mode for unregistering an object path: - - \value UnregisterNode unregister this node only: do not unregister child objects - \value UnregisterTree unregister this node and all its sub-tree - - Note, however, if this object was registered with the ExportChildObjects option, UnregisterNode - will unregister the child objects too. -*/ - -/*! - Creates a QDBusConnection object attached to the connection with name \a name. - - This does not open the connection. You have to call QDBusConnection::addConnection to open it. -*/ -QDBusConnection::QDBusConnection(const QString &name) -{ - d = manager()->connection(name); - if (d) - d->ref.ref(); -} - -/*! - Creates a copy of the \a other connection. -*/ -QDBusConnection::QDBusConnection(const QDBusConnection &other) -{ - d = other.d; - if (d) - d->ref.ref(); -} - -/*! - Disposes of this object. This does not close the connection: you have to call - QDBusConnection::closeConnection to do that. -*/ -QDBusConnection::~QDBusConnection() -{ - if (d && !d->ref.deref()) - delete d; -} - -/*! - Creates a copy of the connection \a other in this object. The connection this object referenced - before the copy is not spontaneously disconnected. See QDBusConnection::closeConnection for more - information. -*/ -QDBusConnection &QDBusConnection::operator=(const QDBusConnection &other) -{ - if (other.d) - other.d->ref.ref(); - QDBusConnectionPrivate *old = static_cast( - q_atomic_set_ptr(&d, other.d)); - if (old && !old->ref.deref()) - delete old; - - return *this; -} - -/*! - Opens a connection of type \a type to one of the known busses and associate with it the - connection name \a name. Returns a QDBusConnection object associated with that connection. -*/ -QDBusConnection QDBusConnection::addConnection(BusType type, const QString &name) -{ -// Q_ASSERT_X(QCoreApplication::instance(), "QDBusConnection::addConnection", -// "Cannot create connection without a Q[Core]Application instance"); - - QDBusConnectionPrivate *d = manager()->connection(name); - if (d || name.isEmpty()) - return QDBusConnection(name); - - d = new QDBusConnectionPrivate; - DBusConnection *c = 0; - switch (type) { - case SystemBus: - c = dbus_bus_get(DBUS_BUS_SYSTEM, &d->error); - break; - case SessionBus: - c = dbus_bus_get(DBUS_BUS_SESSION, &d->error); - break; - case ActivationBus: - c = dbus_bus_get(DBUS_BUS_STARTER, &d->error); - break; - } - d->setConnection(c); //setConnection does the error handling for us - - manager()->setConnection(name, d); - - QDBusConnection retval(name); - - // create the bus service - QDBusAbstractInterfacePrivate *p; - p = retval.findInterface_helper(QLatin1String(DBUS_SERVICE_DBUS), - QLatin1String(DBUS_PATH_DBUS), - QLatin1String(DBUS_INTERFACE_DBUS)); - if (p) { - d->busService = new QDBusBusService(p); - d->busService->setParent(d); // auto-deletion - d->ref.deref(); // busService has a increased the refcounting to us - } - - return retval; -} - -/*! - Opens a peer-to-peer connection on address \a address and associate with it the - connection name \a name. Returns a QDBusConnection object associated with that connection. -*/ -QDBusConnection QDBusConnection::addConnection(const QString &address, - const QString &name) -{ -// Q_ASSERT_X(QCoreApplication::instance(), "QDBusConnection::addConnection", -// "Cannot create connection without a Q[Core]Application instance"); - - QDBusConnectionPrivate *d = manager()->connection(name); - if (d || name.isEmpty()) - return QDBusConnection(name); - - d = new QDBusConnectionPrivate; - // setConnection does the error handling for us - d->setConnection(dbus_connection_open(address.toUtf8().constData(), &d->error)); - - manager()->setConnection(name, d); - - QDBusConnection retval(name); - - // create the bus service - QDBusAbstractInterfacePrivate *p; - p = retval.findInterface_helper(QLatin1String(DBUS_SERVICE_DBUS), - QLatin1String(DBUS_PATH_DBUS), - QLatin1String(DBUS_INTERFACE_DBUS)); - if (p) { - d->busService = new QDBusBusService(p); - d->busService->setParent(d); // auto-deletion - d->ref.deref(); // busService has a increased the refcounting to us - } - - return retval; -} - -/*! - Closes the connection of name \a name. - - Note that if there are still QDBusConnection objects associated with the same connection, the - connection will not be closed until all references are dropped. However, no further references - can be created using the QDBusConnection::QDBusConnection constructor. -*/ -void QDBusConnection::closeConnection(const QString &name) -{ - manager()->removeConnection(name); -} - -/*! - Sends the \a message over this connection, without waiting for a reply. This is suitable for - errors, signals, and return values as well as calls whose return values are not necessary. - - Returns true if the message was queued successfully, false otherwise. -*/ -bool QDBusConnection::send(const QDBusMessage &message) const -{ - if (!d || !d->connection) - return false; - return d->send(message) != 0; -} - -/*! - Sends the \a message over this connection and returns immediately after queueing it. When the - reply is received, the slot \a method is called in the object \a receiver. This function is - suitable for method calls only. - - This function guarantees that the slot will be called exactly once with the reply, as long as - the parameter types match. If they don't, the reply cannot be delivered. - - Returns the identification of the message that was sent or 0 if nothing was sent. -*/ -int QDBusConnection::sendWithReplyAsync(const QDBusMessage &message, QObject *receiver, - const char *method) const -{ - if (!d || !d->connection) - return 0; - - return d->sendWithReplyAsync(message, receiver, method); -} - -/*! - Sends the \a message over this connection and blocks, waiting for a reply. This function is - suitable for method calls only. It returns the reply message as its return value, which will be - either of type QDBusMessage::ReplyMessage or QDBusMessage::ErrorMessage. - - See the QDBusInterface::call function for a more friendly way of placing calls. - - \warning If \a mode is \c UseEventLoop, this function will reenter the Qt event loop in order to - wait for the reply. During the wait, it may deliver signals and other method calls to - your application. Therefore, it must be prepared to handle a reentrancy whenever a call - is placed with sendWithReply. -*/ -QDBusMessage QDBusConnection::sendWithReply(const QDBusMessage &message, WaitMode mode) const -{ - if (!d || !d->connection) - return QDBusMessage(); - return d->sendWithReply(message, mode); -} - -/*! - Connects the signal specified by the \a service, \a path, \a interface and \a name parameters to - the slot \a slot in object \a receiver. The arguments \a service and \a path can be empty, - denoting a connection to any signal of the \a interface - \a name pair, from any remote - application. - - Returns true if the connection was successful. - - \warning The signal will only be delivered to the slot if the parameters match. This verification - can be done only when the signal is received, not at connection time. -*/ -bool QDBusConnection::connect(const QString &service, const QString &path, const QString& interface, - const QString &name, QObject *receiver, const char *slot) -{ - return connect(service, path, interface, name, QString(), receiver, slot); -} - -/*! - \overload - Connects the signal to the slot \a slot in object \a receiver. Unlike the other - QDBusConnection::connect overload, this function allows one to specify the parameter signature - to be connected using the \a signature variable. The function will then verify that this - signature can be delivered to the slot specified by \a slot and return false otherwise. -*/ -bool QDBusConnection::connect(const QString &service, const QString &path, const QString& interface, - const QString &name, const QString &signature, - QObject *receiver, const char *slot) -{ - if (!receiver || !slot || !d || !d->connection || !QDBusUtil::isValidInterfaceName(interface)) - return false; - - QString source; - if (!service.isEmpty()) { - source = d->getNameOwner(service); - if (source.isEmpty()) - return false; - } - - // check the slot - QDBusConnectionPrivate::SignalHook hook; - QString key; - hook.signature = signature; - if (!d->prepareHook(hook, key, source, path, interface, name, receiver, slot, 0, false)) - return false; // don't connect - - // avoid duplicating: - QWriteLocker locker(&d->lock); - QDBusConnectionPrivate::SignalHookHash::ConstIterator it = d->signalHooks.find(key); - for ( ; it != d->signalHooks.end() && it.key() == key; ++it) { - const QDBusConnectionPrivate::SignalHook &entry = it.value(); - if (entry.sender == hook.sender && - entry.path == hook.path && - entry.signature == hook.signature && - entry.obj == hook.obj && - entry.midx == hook.midx) { - // no need to compare the parameters if it's the same slot - return true; // already there - } - } - - - d->connectSignal(key, hook); - return true; -} - -/*! - Registers the object \a object at path \a path and returns true if the registration was - successful. The \a options parameter specifies how much of the object \a object will be exposed - through D-Bus. - - This function does not replace existing objects: if there is already an object registered at - path \a path, this function will return false. Use unregisterObject() to unregister it first. - - You cannot register an object as a child object of an object that was registered with - QDBusConnection::ExportChildObjects. -*/ -bool QDBusConnection::registerObject(const QString &path, QObject *object, RegisterOptions options) -{ - if (!d || !d->connection || !object || !options || !QDBusUtil::isValidObjectPath(path)) - return false; - - if (options & ExportSignals) { - qWarning("Cannot export signals from objects. Use an adaptor for that purpose."); - return false; - } - - QStringList pathComponents = path.split(QLatin1Char('/')); - if (pathComponents.last().isEmpty()) - pathComponents.removeLast(); - QWriteLocker locker(&d->lock); - - // lower-bound search for where this object should enter in the tree - QDBusConnectionPrivate::ObjectTreeNode *node = &d->rootNode; - int i = 1; - while (node) { - if (pathComponents.count() == i) { - // this node exists - // consider it free if there's no object here and the user is not trying to - // replace the object sub-tree - if ((options & ExportChildObjects && !node->children.isEmpty()) || node->obj) - return false; - - // we can add the object here - node->obj = object; - node->flags = options; - - d->registerObject(node); - qDebug("REGISTERED FOR %s", path.toLocal8Bit().constData()); - return true; - } - - // find the position where we'd insert the node - QVector::Iterator it = - qLowerBound(node->children.begin(), node->children.end(), pathComponents.at(i)); - if (it != node->children.constEnd() && it->name == pathComponents.at(i)) { - // match: this node exists - node = it->node; - - // are we allowed to go deeper? - if (node->flags & ExportChildObjects) { - // we're not - qDebug("Cannot register object at %s because %s exports its own child objects", - qPrintable(path), qPrintable(pathComponents.at(i))); - return false; - } - } else { - // add entry - QDBusConnectionPrivate::ObjectTreeNode::Data entry; - entry.name = pathComponents.at(i); - entry.node = new QDBusConnectionPrivate::ObjectTreeNode; - node->children.insert(it, entry); - - node = entry.node; - } - - // iterate - ++i; - } - - Q_ASSERT_X(false, "QDBusConnection::registerObject", "The impossible happened"); - return false; -} - -/*! - Unregisters an object that was registered with the registerObject() at the object path given by - \a path and, if \a mode is QDBusConnection::UnregisterTree, all of its sub-objects too. - - Note that you cannot unregister objects that were not registered with registerObject(). -*/ -void QDBusConnection::unregisterObject(const QString &path, UnregisterMode mode) -{ - if (!d || !d->connection || !QDBusUtil::isValidObjectPath(path)) - return; - - QStringList pathComponents = path.split(QLatin1Char('/')); - QWriteLocker locker(&d->lock); - QDBusConnectionPrivate::ObjectTreeNode *node = &d->rootNode; - int i = 1; - - // find the object - while (node) { - if (pathComponents.count() == i) { - // found it - node->obj = 0; - node->flags = 0; - - if (mode == UnregisterTree) { - // clear the sub-tree as well - node->clear(); // can't disconnect the objects because we really don't know if they can - // be found somewhere else in the path too - } - - return; - } - - QVector::ConstIterator it = - qLowerBound(node->children.constBegin(), node->children.constEnd(), pathComponents.at(i)); - if (it == node->children.constEnd() || it->name != pathComponents.at(i)) - break; // node not found - - node = it->node; - ++i; - } -} - -/*! - Returns a dynamic QDBusInterface associated with the interface \a interface on object at path \a - path on service \a service. - - This function creates a new object. It is your resposibility to ensure it is properly deleted - (you can use all normal QObject deletion mechanisms, including the QObject::deleteLater() slot - and QObject::setParent()). - - If the searching for this interface on the remote object failed, this function returns 0. -*/ -QDBusInterface *QDBusConnection::findInterface(const QString& service, const QString& path, - const QString& interface) -{ - if (!d) - return 0; - - QDBusInterfacePrivate *p = d->findInterface(service, path, interface); - QDBusInterface *retval = new QDBusInterface(p); - retval->setParent(d); - return retval; -} - -/*! - \fn QDBusConnection::findInterface(const QString &service, const QString &path) - Returns an interface of type \c Interface associated with the object on path \a path at service - \a service. - - \c Interface must be a class generated by \l {dbusidl2cpp.html}. - - This function creates a new object. It is your resposibility to ensure it is properly deleted - (you can use all normal QObject deletion mechanisms, including the QObject::deleteLater() slot - and QObject::setParent()). -*/ - -/*! - Returns a QDBusBusService object that represents the D-Bus bus service on this connection. - - This function returns 0 for peer-to-peer connections. -*/ -QDBusBusService *QDBusConnection::busService() const -{ - if (!d) - return 0; - return d->busService; -}; - -QDBusAbstractInterfacePrivate * -QDBusConnection::findInterface_helper(const QString &service, const QString &path, - const QString &interface) -{ - if (!d) - return 0; - if (!interface.isEmpty() && !QDBusUtil::isValidInterfaceName(interface)) - return 0; - - QString owner; - if (!service.isEmpty()) { - if (!QDBusUtil::isValidObjectPath(path)) - return 0; - - // check if it's there first -- FIXME: add binding mode - owner = d->getNameOwner(service); - if (owner.isEmpty()) - return 0; - } else if (!path.isEmpty()) - return 0; - - return new QDBusAbstractInterfacePrivate(*this, d, owner, path, interface); -} - -/*! - Returns true if this QDBusConnection object is connected. - - If it isn't connected, calling QDBusConnection::addConnection on the same connection name - will not make be connected. You need to call the QDBusConnection constructor again. -*/ -bool QDBusConnection::isConnected( ) const -{ - return d && d->connection && dbus_connection_get_is_connected(d->connection); -} - -/*! - Returns the last error that happened in this connection. - - This function is provided for low-level code. If you're using QDBusInterface::call, error codes are - reported by its return value. - - \sa QDBusInterface, QDBusMessage -*/ -QDBusError QDBusConnection::lastError() const -{ - return d ? d->lastError : QDBusError(); -} - -/*! - Returns the unique connection name for this connection, if this QDBusConnection object is - connected, or an empty QString otherwise. - - A Unique Connection Name is a string in the form ":x.xxx" (where x are decimal digits) that is - assigned by the D-Bus server daemon upon connection. It uniquely identifies this client in the - bus. - - This function returns an empty QString for peer-to-peer connections. -*/ -QString QDBusConnection::baseService() const -{ - return d && d->connection ? - QString::fromUtf8(dbus_bus_get_unique_name(d->connection)) - : QString(); -} - -Q_GLOBAL_STATIC(QMutex, defaultBussesMutex); -static const char sessionBusName[] = "qt_default_session_bus"; -static const char systemBusName[] = "qt_default_system_bus"; -static QDBusConnection *sessionBus = 0; -static QDBusConnection *systemBus = 0; - -static void closeConnections() -{ - QMutexLocker locker(defaultBussesMutex()); - delete sessionBus; - delete systemBus; - QDBusConnection::closeConnection(QLatin1String(sessionBusName)); - QDBusConnection::closeConnection(QLatin1String(systemBusName)); - sessionBus = systemBus = 0; -} - -static QDBusConnection *openConnection(QDBusConnection::BusType type) -{ - QMutexLocker locker(defaultBussesMutex()); - qAddPostRoutine(closeConnections); - - if (type == QDBusConnection::SystemBus) { - if (systemBus) - // maybe it got created before we locked the mutex - return systemBus; - systemBus = new QDBusConnection(QDBusConnection::addConnection(QDBusConnection::SystemBus, - QLatin1String(systemBusName))); - return systemBus; - } else { - if (sessionBus) - // maybe it got created before we locked the mutex - return sessionBus; - sessionBus = new QDBusConnection(QDBusConnection::addConnection(QDBusConnection::SessionBus, - QLatin1String(sessionBusName))); - return sessionBus; - } -} - -namespace QDBus { - QDBusConnection &sessionBus() - { - if (::sessionBus) return *::sessionBus; - return *openConnection(QDBusConnection::SessionBus); - } - - QDBusConnection &systemBus() - { - if (::systemBus) return *::systemBus; - return *openConnection(QDBusConnection::SystemBus); - } -} - diff --git a/qt/qdbusconnection.h b/qt/qdbusconnection.h deleted file mode 100644 index e107242b..00000000 --- a/qt/qdbusconnection.h +++ /dev/null @@ -1,124 +0,0 @@ -/* qdbusconnection.h QDBusConnection object - * - * Copyright (C) 2005 Harald Fernengel - * Copyright (C) 2006 Trolltech AS. All rights reserved. - * Author: Thiago Macieira - * - * Licensed under the Academic Free License version 2.1 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#ifndef QDBUSCONNECTION_H -#define QDBUSCONNECTION_H - -#include "qdbusmacros.h" -#include - -class QDBusAbstractInterfacePrivate; -class QDBusInterface; -class QDBusError; -class QDBusMessage; -class QDBusBusService; -class QObject; - -class QDBusConnectionPrivate; -class QDBUS_EXPORT QDBusConnection -{ -public: - enum BusType { SessionBus, SystemBus, ActivationBus }; - enum WaitMode { UseEventLoop, NoUseEventLoop }; - enum RegisterOption { - ExportAdaptors = 0x01, - - ExportSlots = 0x10, - ExportSignals = 0x20, - ExportProperties = 0x40, - ExportContents = 0xf0, - - ExportAllSlots = 0x110, - ExportAllSignals = 0x220, - ExportAllProperties = 0x440, - ExportAllContents = 0xff0, - - ExportChildObjects = 0x1000 - }; - enum UnregisterMode { - UnregisterNode, - UnregisterTree - }; - - Q_DECLARE_FLAGS(RegisterOptions, RegisterOption); - - QDBusConnection(const QString &name); - QDBusConnection(const QDBusConnection &other); - ~QDBusConnection(); - - QDBusConnection &operator=(const QDBusConnection &other); - - bool isConnected() const; - QString baseService() const; - QDBusError lastError() const; - - bool send(const QDBusMessage &message) const; - QDBusMessage sendWithReply(const QDBusMessage &message, WaitMode mode = NoUseEventLoop) const; - int sendWithReplyAsync(const QDBusMessage &message, QObject *receiver, - const char *slot) const; - - bool connect(const QString &service, const QString &path, const QString &interface, - const QString &name, QObject *receiver, const char *slot); - bool connect(const QString &service, const QString &path, const QString &interface, - const QString &name, const QString& signature, - QObject *receiver, const char *slot); - - bool registerObject(const QString &path, QObject *object, - RegisterOptions options = ExportAdaptors); - void unregisterObject(const QString &path, UnregisterMode mode = UnregisterNode); - - template - inline Interface *findInterface(const QString &service, const QString &path); - QDBusInterface *findInterface(const QString& service, const QString& path, - const QString& interface = QString()); - - QDBusBusService *busService() const; - - static QDBusConnection addConnection(BusType type, const QString &name); - static QDBusConnection addConnection(const QString &address, const QString &name); - static void closeConnection(const QString &name); - -private: - QDBusAbstractInterfacePrivate *findInterface_helper(const QString &, const QString &, - const QString&); - QDBusConnectionPrivate *d; -}; - -template -inline Interface *QDBusConnection::findInterface(const QString &service, const QString &path) -{ - register QDBusAbstractInterfacePrivate *d; - d = findInterface_helper(service, path, Interface::staticInterfaceName()); - if (d) - return new Interface(d); - return 0; -} - -namespace QDBus { - QDBUS_EXPORT QDBusConnection &sessionBus(); - QDBUS_EXPORT QDBusConnection &systemBus(); -} - -Q_DECLARE_OPERATORS_FOR_FLAGS(QDBusConnection::RegisterOptions) -#endif diff --git a/qt/qdbusconnection_p.h b/qt/qdbusconnection_p.h deleted file mode 100644 index a9034498..00000000 --- a/qt/qdbusconnection_p.h +++ /dev/null @@ -1,248 +0,0 @@ -/* qdbusconnection_p.h QDBusConnection private object - * - * Copyright (C) 2005 Harald Fernengel - * Copyright (C) 2006 Trolltech AS. All rights reserved. - * Author: Thiago Macieira - * - * Licensed under the Academic Free License version 2.1 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -// -// W A R N I N G -// ------------- -// -// This file is not part of the public API. This header file may -// change from version to version without notice, or even be -// removed. -// -// We mean it. -// -// - -#ifndef QDBUSCONNECTION_P_H -#define QDBUSCONNECTION_P_H - -#include "qdbuserror.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include "qdbusmessage.h" - -class QDBusMessage; -class QSocketNotifier; -class QTimerEvent; -class QDBusObjectPrivate; -class CallDeliveryEvent; -class QMetaMethod; -class QDBusInterfacePrivate; -class QDBusMetaObject; -class QDBusAbstractInterface; -class QDBusBusService; - -typedef struct DBusConnection; -typedef struct DBusServer; - -class QDBusConnectionPrivate: public QObject -{ - Q_OBJECT -public: - // structs and enums - enum ConnectionMode { InvalidMode, ServerMode, ClientMode }; - - struct Watcher - { - Watcher(): watch(0), read(0), write(0) {} - DBusWatch *watch; - QSocketNotifier *read; - QSocketNotifier *write; - }; - - struct SignalHook - { - inline SignalHook() : obj(0), midx(-1) { } - QString sender, path, signature; - QObject* obj; - int midx; - QList params; - }; - - struct ObjectTreeNode - { - struct Data - { - QString name; - ObjectTreeNode *node; - - inline bool operator<(const QString &other) const - { return name < other; } - }; - - inline ObjectTreeNode() : obj(0), flags(0) { } - inline ~ObjectTreeNode() { clear(); } - inline void clear() - { - foreach (const Data &entry, children) { - entry.node->clear(); - delete entry.node; - } - children.clear(); - } - - QObject* obj; - int flags; - QVector children; - }; - -public: - // typedefs - typedef QMultiHash WatcherHash; - typedef QHash TimeoutHash; - typedef QMultiHash SignalHookHash; - typedef QHash MetaObjectHash; - -public: - // public methods - QDBusConnectionPrivate(QObject *parent = 0); - ~QDBusConnectionPrivate(); - - void bindToApplication(); - - void setConnection(DBusConnection *connection); - void setServer(DBusServer *server); - void closeConnection(); - void timerEvent(QTimerEvent *e); - - QString getNameOwner(const QString &service); - - int send(const QDBusMessage &message) const; - QDBusMessage sendWithReply(const QDBusMessage &message, int mode); - int sendWithReplyAsync(const QDBusMessage &message, QObject *receiver, - const char *method); - void connectSignal(const QString &key, const SignalHook &hook); - void registerObject(const ObjectTreeNode *node); - void connectRelay(const QString &service, const QString &path, const QString &interface, - QDBusAbstractInterface *receiver, const char *signal); - void disconnectRelay(const QString &service, const QString &path, const QString &interface, - QDBusAbstractInterface *receiver, const char *signal); - - bool handleSignal(const QString &key, const QDBusMessage &msg); - bool handleSignal(const QDBusMessage &msg); - bool handleObjectCall(const QDBusMessage &message); - bool handleError(); - - bool activateSignal(const SignalHook& hook, const QDBusMessage &msg); - bool activateCall(QObject* object, int flags, const QDBusMessage &msg); - bool activateObject(const ObjectTreeNode *node, const QDBusMessage &msg); - bool activateInternalFilters(const ObjectTreeNode *node, const QDBusMessage &msg); - - void postCallDeliveryEvent(CallDeliveryEvent *data); - CallDeliveryEvent *postedCallDeliveryEvent(); - void deliverCall(const CallDeliveryEvent &data) const; - - QDBusInterfacePrivate *findInterface(const QString &service, const QString &path, - const QString &interface); - -protected: - virtual void customEvent(QEvent *event); - -private: - QDBusMetaObject *findMetaObject(const QString &service, const QString &path, - const QString &interface); - -public slots: - // public slots - void doDispatch(); - void socketRead(int); - void socketWrite(int); - void objectDestroyed(QObject *o); - void relaySignal(QObject *obj, const char *interface, const char *name, const QVariantList &args); - -public: - // public member variables - QString name; // this connection's name - - DBusError error; - QDBusError lastError; - - QAtomic ref; - QReadWriteLock lock; - ConnectionMode mode; - DBusConnection *connection; - DBusServer *server; - QDBusBusService *busService; - - WatcherHash watchers; - TimeoutHash timeouts; - SignalHookHash signalHooks; - QList pendingTimeouts; - - ObjectTreeNode rootNode; - MetaObjectHash cachedMetaObjects; - - QMutex callDeliveryMutex; - CallDeliveryEvent *callDeliveryState; // protected by the callDeliveryMutex mutex - -public: - // static methods - static int messageMetaType; - static int registerMessageMetaType(); - static int findSlot(QObject *obj, const QByteArray &normalizedName, QList& params); - static bool prepareHook(QDBusConnectionPrivate::SignalHook &hook, QString &key, - const QString &service, const QString &path, - const QString &interface, const QString &name, - QObject *receiver, const char *signal, int minMIdx, - bool buildSignature); - static DBusHandlerResult messageFilter(DBusConnection *, DBusMessage *, void *); - static void messageResultReceived(DBusPendingCall *, void *); -}; - -class QDBusReplyWaiter: public QEventLoop -{ - Q_OBJECT -public: - QDBusMessage replyMsg; - -public slots: - void reply(const QDBusMessage &msg); -}; - -// in qdbusmisc.cpp -extern int qDBusParametersForMethod(const QMetaMethod &mm, QList& metaTypes); -extern int qDBusNameToTypeId(const char *name); -extern bool qDBusCheckAsyncTag(const char *tag); - -// in qdbusinternalfilters.cpp -extern QString qDBusIntrospectObject(const QDBusConnectionPrivate::ObjectTreeNode *node); -extern void qDBusIntrospectObject(const QDBusConnectionPrivate::ObjectTreeNode *node, - const QDBusMessage &msg); -extern void qDBusPropertyGet(const QDBusConnectionPrivate::ObjectTreeNode *node, - const QDBusMessage &msg); -extern void qDBusPropertySet(const QDBusConnectionPrivate::ObjectTreeNode *node, - const QDBusMessage &msg); - -#endif diff --git a/qt/qdbuserror.cpp b/qt/qdbuserror.cpp deleted file mode 100644 index d5cd6758..00000000 --- a/qt/qdbuserror.cpp +++ /dev/null @@ -1,244 +0,0 @@ -/* qdbuserror.h QDBusError object - * - * Copyright (C) 2005 Harald Fernengel - * Copyright (C) 2006 Trolltech AS. All rights reserved. - * Author: Thiago Macieira - * - * Licensed under the Academic Free License version 2.1 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#include "qdbuserror.h" - -#include -#include - -#include -#include "qdbusmessage.h" - -struct ErrorMessageMapping -{ - ErrorMessageMapping(); - QVarLengthArray messages; - - inline const char *get(QDBusError::KnownErrors code) const - { - if (code <= QDBusError::Other || code > QDBusError::qKnownErrorsMax) - return messages[int(QDBusError::Other) - 1]; - return messages[int(code) - 1]; - } - - inline QDBusError::KnownErrors get(const char *name) const - { - if (!name || !*name) - return QDBusError::NoError; - for (int i = QDBusError::Other; i <= QDBusError::qKnownErrorsMax; ++i) - if (strcmp(name, messages[i - 1]) == 0) - return QDBusError::KnownErrors(i); - return QDBusError::Other; - } -}; - -static const char errorMessages_string[] = - // in the same order as KnownErrors! - "other\0" // Other -- shouldn't happen - DBUS_ERROR_FAILED "\0" // Failed - DBUS_ERROR_NO_MEMORY "\0" // NoMemory - DBUS_ERROR_SERVICE_UNKNOWN "\0" // ServiceUnknown - DBUS_ERROR_NO_REPLY "\0" // NoReply - DBUS_ERROR_BAD_ADDRESS "\0" // BadAddress - DBUS_ERROR_NOT_SUPPORTED "\0" // NotSupported - DBUS_ERROR_LIMITS_EXCEEDED "\0" // LimitsExceeded - DBUS_ERROR_ACCESS_DENIED "\0" // AccessDenied - DBUS_ERROR_NO_SERVER "\0" // NoServer - DBUS_ERROR_TIMEOUT "\0" // Timeout - DBUS_ERROR_NO_NETWORK "\0" // NoNetwork - DBUS_ERROR_ADDRESS_IN_USE "\0" // AddressInUse - DBUS_ERROR_DISCONNECTED "\0" // Disconnected - DBUS_ERROR_INVALID_ARGS "\0" // InvalidArgs - DBUS_ERROR_UNKNOWN_METHOD "\0" // UnknownMethod - DBUS_ERROR_TIMED_OUT "\0" // TimedOut - DBUS_ERROR_INVALID_SIGNATURE "\0" // InvalidSignature - "com.trolltech.QtDBus.Error.UnknownInterface\0" // UnknownInterface - "com.trolltech.QtDBus.Error.InternalError\0" // InternalError - "\0"; - -ErrorMessageMapping::ErrorMessageMapping() - : messages(int(QDBusError::qKnownErrorsMax)) -{ - // create the list: - const char *p = errorMessages_string; - int i = 0; - while (*p) { - messages[i] = p; - p += strlen(p) + 1; - ++i; - } -} - -Q_GLOBAL_STATIC(ErrorMessageMapping, errorMessages) - -/*! - \class QDBusError - \brief Represents an error received from the D-Bus bus or from remote applications found in the bus. - - When dealing with the D-Bus bus service or with remote applications over D-Bus, a number of - error conditions can happen. This error conditions are sometimes signalled by a returned error - value or by a QDBusError. - - C++ and Java exceptions are a valid analogy for D-Bus errors: instead of returning normally with - a return value, remote applications and the bus may decide to throw an error condition. However, - the QtDBus implementation does not use the C++ exception-throwing mechanism, so you will receive - QDBusErrors in the return reply (see QDBusReply::error()). - - QDBusError objects are used to inspect the error name and message as received from the bus and - remote applications. You should not create such objects yourself to signal error conditions when - called from D-Bus: instead, use QDBusMessage::error and QDBusConnection::send. - - \sa QDBusConnection::send(), QDBusMessage, QDBusReply -*/ - -/*! - \enum QDBusError::KnownErrors - - In order to facilitate verification of the most common D-Bus errors generated by the D-Bus - implementation and by the bus daemon itself, QDBusError can be compared to a set of pre-defined - values: - - \value NoError QDBusError is invalid (i.e., the call succeeded) - \value Other QDBusError contains an error that is one of the well-known ones - \value Failed The call failed (\c org.freedesktop.DBus.Error.Failed) - \value NoMemory Out of memory (\c org.freedesktop.DBus.Error.NoMemory) - \value ServiceUnknown The called service is not known - (\c org.freedesktop.DBus.Error.ServiceUnknown) - \value NoReply The called method did not reply within the specified timeout - (\c org.freedesktop.DBus.Error.NoReply) - \value BadAddress The address given is not valid - (\c org.freedesktop.DBus.Error.BadAddress) - \value NotSupported The call/operation is not supported - (\c org.freedesktop.DBus.Error.NotSupported) - \value LimitsExceeded The limits allocated to this process/call/connection exceeded the - pre-defined values (\c org.freedesktop.DBus.Error.LimitsExceeded) - \value AccessDenied The call/operation tried to access a resource it isn't allowed to - (\c org.freedesktop.DBus.Error.AccessDenied) - \value NoServer \i{Documentation doesn't say what this is for} - (\c org.freedesktop.DBus.Error.NoServer) - \value Timeout \i{Documentation doesn't say what this is for or how it's used} - (\c org.freedesktop.DBus.Error.Timeout) - \value NoNetwork \i{Documentation doesn't say what this is for} - (\c org.freedesktop.DBus.Error.NoNetwork) - \value AddressInUse QDBusServer tried to bind to an address that is already in use - (\c org.freedesktop.DBus.Error.AddressInUse) - \value Disconnected The call/process/message was sent after QDBusConnection disconnected - (\c org.freedesktop.DBus.Error.Disconnected) - \value InvalidArgs The arguments passed to this call/operation are not valid - (\c org.freedesktop.DBus.Error.InvalidArgs) - \value UnknownMethod The method called was not found in this object/interface with the - given parameters (\c org.freedesktop.DBus.Error.UnknownMethod) - \value TimedOut \i{Documentation doesn't say...} - (\c org.freedesktop.DBus.Error.TimedOut) - \value InvalidSignature The type signature is not valid or compatible - (\c org.freedesktop.DBus.Error.InvalidSignature) - \value UnknownInterface The interface is not known - \value InternalError An internal error occurred - (\c com.trolltech.QtDBus.Error.InternalError) - -*/ - -/*! - \internal - Constructs a QDBusError from a DBusError structure. -*/ -QDBusError::QDBusError(const DBusError *error) - : code(NoError) -{ - if (!error || !dbus_error_is_set(error)) - return; - - code = errorMessages()->get(error->name); - nm = QString::fromUtf8(error->name); - msg = QString::fromUtf8(error->message); -} - -/*! - \internal - Constructs a QDBusError from a QDBusMessage. -*/ -QDBusError::QDBusError(const QDBusMessage &qdmsg) - : code(Other) -{ - if (qdmsg.type() != QDBusMessage::ErrorMessage) - return; - - nm = qdmsg.name(); - if (qdmsg.count()) - msg = qdmsg[0].toString(); - code = errorMessages()->get(nm.toUtf8().constData()); -} - -/*! - \internal - Constructs a QDBusError from a well-known error code -*/ -QDBusError::QDBusError(KnownErrors error, const QString &message) - : code(error) -{ - nm = errorMessages()->get(error); - msg = message; -} - -/*! - \fn QDBusError::name() const - Returns this error's name. Error names are similar to D-Bus Interface names, like - "org.freedesktop.DBus.InvalidArgs". -*/ - -/*! - \fn QDBusError::message() const - Returns the message that the callee associated with this error. Error messages are - implementation defined and usually contain a human-readable error code, though this does not - mean it is suitable for your end-users. -*/ - -/*! - \fn QDBusError::isValid() const - Returns true if this is a valid error condition (i.e., if there was an error), false otherwise. -*/ - -/*! - \fn QDBusError::operator==(KnownErrors error) const - Compares this QDBusError against the well-known error code \a error and returns true if they - match. -*/ - -/*! - \fn operator==(QDBusError::KnownErrors p1, const QDBusError &p2) - \relates QDBusError - - Compares the QDBusError \a p2 against the well-known error code \a p1 and returns true if they - match. -*/ - -#ifndef QT_NO_DEBUG -QDebug operator<<(QDebug dbg, const QDBusError &msg) -{ - dbg.nospace() << "QDBusError(" << msg.name() << ", " << msg.message() << ")"; - return dbg.space(); -} -#endif - - diff --git a/qt/qdbuserror.h b/qt/qdbuserror.h deleted file mode 100644 index 71c636df..00000000 --- a/qt/qdbuserror.h +++ /dev/null @@ -1,93 +0,0 @@ -/* qdbuserror.h QDBusError object - * - * Copyright (C) 2005 Harald Fernengel - * Copyright (C) 2006 Trolltech AS. All rights reserved. - * Author: Thiago Macieira - * - * Licensed under the Academic Free License version 2.1 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#ifndef QDBUSERROR_H -#define QDBUSERROR_H - -#include "qdbusmacros.h" -#include - -struct DBusError; -class QDBusMessage; - -class QDBUS_EXPORT QDBusError -{ -public: - enum KnownErrors { - NoError = 0, - Other = 1, - Failed, - NoMemory, - ServiceUnknown, - NoReply, - BadAddress, - NotSupported, - LimitsExceeded, - AccessDenied, - NoServer, - Timeout, - NoNetwork, - AddressInUse, - Disconnected, - InvalidArgs, - UnknownMethod, - TimedOut, - InvalidSignature, - UnknownInterface, - InternalError, - -#ifndef Q_QDOC - // don't use this one! - qKnownErrorsMax = InternalError -#endif - }; - - QDBusError(const DBusError *error = 0); - QDBusError(const QDBusMessage& msg); - QDBusError(KnownErrors error, const QString &message); - - inline QString name() const { return nm; } - inline QString message() const { return msg; } - inline bool isValid() const { return !nm.isNull() && !msg.isNull(); } - - inline bool operator==(KnownErrors error) const - { return code == error; } - -private: - KnownErrors code; - QString nm, msg; -}; - -inline bool operator==(QDBusError::KnownErrors p1, const QDBusError &p2) -{ return p2 == p1; } -inline bool operator!=(QDBusError::KnownErrors p1, const QDBusError &p2) -{ return !(p2 == p1); } -inline bool operator!=(const QDBusError &p1, QDBusError::KnownErrors p2) -{ return !(p1 == p2); } - -#ifndef QT_NO_DEBUG -QDebug operator<<(QDebug, const QDBusError &); -#endif - -#endif diff --git a/qt/qdbusintegrator.cpp b/qt/qdbusintegrator.cpp deleted file mode 100644 index 190c4686..00000000 --- a/qt/qdbusintegrator.cpp +++ /dev/null @@ -1,1550 +0,0 @@ -/* qdbusintegrator.cpp QDBusConnection private implementation - * - * Copyright (C) 2005 Harald Fernengel - * Copyright (C) 2006 Trolltech AS. All rights reserved. - * Author: Thiago Macieira - * - * Licensed under the Academic Free License version 2.1 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "qdbusconnection_p.h" -#include "qdbusinterface_p.h" -#include "qdbusmessage.h" -#include "qdbusabstractadaptor.h" -#include "qdbusabstractadaptor_p.h" -#include "qdbustypehelper_p.h" -#include "qdbusutil.h" -#include "qdbustype_p.h" - -#ifndef USE_OUTSIDE_DISPATCH -# define USE_OUTSIDE_DISPATCH 0 -#endif - -int QDBusConnectionPrivate::messageMetaType = 0; - -typedef void (*qDBusSpyHook)(const QDBusMessage&); -static qDBusSpyHook messageSpyHook; - -struct QDBusPendingCall -{ - QPointer receiver; - QList metaTypes; - int methodIdx; - DBusPendingCall *pending; - const QDBusConnectionPrivate *connection; -}; - -class CallDeliveryEvent: public QEvent -{ -public: - CallDeliveryEvent() - : QEvent(QEvent::User), object(0), flags(0), slotIdx(-1) - { } - - const QDBusConnectionPrivate *conn; - QPointer object; - QDBusMessage message; - QList metaTypes; - - int flags; - int slotIdx; -}; - -static dbus_bool_t qDBusAddTimeout(DBusTimeout *timeout, void *data) -{ - Q_ASSERT(timeout); - Q_ASSERT(data); - - // qDebug("addTimeout %d", dbus_timeout_get_interval(timeout)); - - QDBusConnectionPrivate *d = static_cast(data); - - if (!dbus_timeout_get_enabled(timeout)) - return true; - - if (!QCoreApplication::instance()) { - d->pendingTimeouts.append(timeout); - return true; - } - int timerId = d->startTimer(dbus_timeout_get_interval(timeout)); - if (!timerId) - return false; - - d->timeouts[timerId] = timeout; - return true; -} - -static void qDBusRemoveTimeout(DBusTimeout *timeout, void *data) -{ - Q_ASSERT(timeout); - Q_ASSERT(data); - - // qDebug("removeTimeout"); - - QDBusConnectionPrivate *d = static_cast(data); - d->pendingTimeouts.removeAll(timeout); - - QDBusConnectionPrivate::TimeoutHash::iterator it = d->timeouts.begin(); - while (it != d->timeouts.end()) { - if (it.value() == timeout) { - d->killTimer(it.key()); - it = d->timeouts.erase(it); - } else { - ++it; - } - } -} - -static void qDBusToggleTimeout(DBusTimeout *timeout, void *data) -{ - Q_ASSERT(timeout); - Q_ASSERT(data); - - //qDebug("ToggleTimeout"); - - qDBusRemoveTimeout(timeout, data); - qDBusAddTimeout(timeout, data); -} - -static dbus_bool_t qDBusAddWatch(DBusWatch *watch, void *data) -{ - Q_ASSERT(watch); - Q_ASSERT(data); - - QDBusConnectionPrivate *d = static_cast(data); - - int flags = dbus_watch_get_flags(watch); - int fd = dbus_watch_get_fd(watch); - - QDBusConnectionPrivate::Watcher watcher; - if (flags & DBUS_WATCH_READABLE) { - //qDebug("addReadWatch %d", fd); - watcher.watch = watch; - if (QCoreApplication::instance()) { - watcher.read = new QSocketNotifier(fd, QSocketNotifier::Read, d); - watcher.read->setEnabled(dbus_watch_get_enabled(watch)); - d->connect(watcher.read, SIGNAL(activated(int)), SLOT(socketRead(int))); - } - } - if (flags & DBUS_WATCH_WRITABLE) { - //qDebug("addWriteWatch %d", fd); - watcher.watch = watch; - if (QCoreApplication::instance()) { - watcher.write = new QSocketNotifier(fd, QSocketNotifier::Write, d); - watcher.write->setEnabled(dbus_watch_get_enabled(watch)); - d->connect(watcher.write, SIGNAL(activated(int)), SLOT(socketWrite(int))); - } - } - d->watchers.insertMulti(fd, watcher); - - return true; -} - -static void qDBusRemoveWatch(DBusWatch *watch, void *data) -{ - Q_ASSERT(watch); - Q_ASSERT(data); - - //qDebug("remove watch"); - - QDBusConnectionPrivate *d = static_cast(data); - int fd = dbus_watch_get_fd(watch); - - QDBusConnectionPrivate::WatcherHash::iterator i = d->watchers.find(fd); - while (i != d->watchers.end() && i.key() == fd) { - if (i.value().watch == watch) { - delete i.value().read; - delete i.value().write; - d->watchers.erase(i); - return; - } - ++i; - } -} - -static void qDBusToggleWatch(DBusWatch *watch, void *data) -{ - Q_ASSERT(watch); - Q_ASSERT(data); - - QDBusConnectionPrivate *d = static_cast(data); - int fd = dbus_watch_get_fd(watch); - - QDBusConnectionPrivate::WatcherHash::iterator i = d->watchers.find(fd); - while (i != d->watchers.end() && i.key() == fd) { - if (i.value().watch == watch) { - bool enabled = dbus_watch_get_enabled(watch); - int flags = dbus_watch_get_flags(watch); - - //qDebug("toggle watch %d to %d (write: %d, read: %d)", dbus_watch_get_fd(watch), enabled, flags & DBUS_WATCH_WRITABLE, flags & DBUS_WATCH_READABLE); - - if (flags & DBUS_WATCH_READABLE && i.value().read) - i.value().read->setEnabled(enabled); - if (flags & DBUS_WATCH_WRITABLE && i.value().write) - i.value().write->setEnabled(enabled); - return; - } - ++i; - } -} - -static void qDBusNewConnection(DBusServer *server, DBusConnection *c, void *data) -{ - Q_ASSERT(data); Q_ASSERT(server); Q_ASSERT(c); - Q_UNUSED(data); Q_UNUSED(server); Q_UNUSED(c); - - qDebug("SERVER: GOT A NEW CONNECTION"); // TODO -} - -extern QDBUS_EXPORT void qDBusSetSpyHook(qDBusSpyHook); -void qDBusSetSpyHook(qDBusSpyHook hook) -{ - messageSpyHook = hook; -} - -#if USE_OUTSIDE_DISPATCH -# define HANDLED DBUS_HANDLER_RESULT_HANDLED_OUTSIDE_DISPATCH -static DBusHandlerResult qDBusSignalFilterOutside(DBusConnection *connection, - DBusMessage *message, void *data) -{ - Q_ASSERT(data); - Q_UNUSED(connection); - Q_UNUSED(message); - - QDBusConnectionPrivate *d = static_cast(data); - if (d->mode == QDBusConnectionPrivate::InvalidMode) - return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; // internal error, actually - - CallDeliveryEvent *e = d->postedCallDeliveryEvent(); - - d->deliverCall(*e); - delete e; - - return DBUS_HANDLER_RESULT_HANDLED; -} -#else -# define HANDLED DBUS_HANDLER_RESULT_HANDLED -#endif - -extern "C" { -static DBusHandlerResult -qDBusSignalFilter(DBusConnection *connection, DBusMessage *message, void *data) -{ - return QDBusConnectionPrivate::messageFilter(connection, message, data); -} -} - -DBusHandlerResult QDBusConnectionPrivate::messageFilter(DBusConnection *connection, - DBusMessage *message, void *data) -{ - Q_ASSERT(data); - Q_UNUSED(connection); - - QDBusConnectionPrivate *d = static_cast(data); - if (d->mode == QDBusConnectionPrivate::InvalidMode) - return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; - - QDBusMessage amsg = QDBusMessage::fromDBusMessage(message, QDBusConnection(d->name)); - qDebug() << "got message:" << amsg; - - if (messageSpyHook) { - qDebug() << "calling the message spy hook"; - (*messageSpyHook)(amsg); - } - - bool handled = false; - int msgType = dbus_message_get_type(message); - if (msgType == DBUS_MESSAGE_TYPE_SIGNAL) { - handled = d->handleSignal(amsg); - } else if (msgType == DBUS_MESSAGE_TYPE_METHOD_CALL) { - handled = d->handleObjectCall(amsg); - } - - return handled ? HANDLED : - DBUS_HANDLER_RESULT_NOT_YET_HANDLED; -} - -static void huntAndDestroy(QObject *needle, QDBusConnectionPrivate::ObjectTreeNode *haystack) -{ - foreach (const QDBusConnectionPrivate::ObjectTreeNode::Data &entry, haystack->children) - huntAndDestroy(needle, entry.node); - - if (needle == haystack->obj) { - haystack->obj = 0; - haystack->flags = 0; - } -} - -static void huntAndEmit(DBusConnection *connection, DBusMessage *msg, - QObject *needle, QDBusConnectionPrivate::ObjectTreeNode *haystack, - const QString &path = QString()) -{ - foreach (const QDBusConnectionPrivate::ObjectTreeNode::Data &entry, haystack->children) - huntAndEmit(connection, msg, needle, entry.node, path + QLatin1String("/") + entry.name); - - if (needle == haystack->obj && haystack->flags & QDBusConnection::ExportAdaptors) { - QByteArray p = path.toLatin1(); - if (p.isEmpty()) - p = "/"; - //qDebug() << p; - DBusMessage *msg2 = dbus_message_copy(msg); - dbus_message_set_path(msg2, p); - dbus_connection_send(connection, msg2, 0); - dbus_message_unref(msg2); - } -} - -static bool typesMatch(int metaId, int variantType) -{ - if (metaId == int(variantType)) - return true; - - if (variantType == QVariant::Int && metaId == QMetaType::Short) - return true; - - if (variantType == QVariant::UInt && (metaId == QMetaType::UShort || - metaId == QMetaType::UChar)) - return true; - - if (variantType == QVariant::List) { - if (metaId == QDBusTypeHelper::listId() || - metaId == QDBusTypeHelper::listId() || - metaId == QDBusTypeHelper::listId() || - metaId == QDBusTypeHelper::listId() || - metaId == QDBusTypeHelper::listId() || - metaId == QDBusTypeHelper::listId() || - metaId == QDBusTypeHelper::listId() || - metaId == QDBusTypeHelper::listId()) - return true; - } - - return false; // no match -} - -static int findSlot(const QMetaObject *mo, const QByteArray &name, int flags, - const QDBusTypeList &types, QList& metaTypes) -{ - // find the first slot - const QMetaObject *super = mo; - while (super != &QObject::staticMetaObject && - super != &QDBusAbstractAdaptor::staticMetaObject) - super = super->superClass(); - - int attributeMask = (flags & QDBusConnection::ExportAllSlots) ? - 0 : QMetaMethod::Scriptable; - - for (int idx = super->methodCount() ; idx <= mo->methodCount(); ++idx) { - QMetaMethod mm = mo->method(idx); - - // check access: - if (mm.access() != QMetaMethod::Public) - continue; - - // check type: - // unnecessary, since slots are never public: - //if (mm.methodType() != QMetaMethod::Slot) - // continue; - - // check name: - QByteArray sig = QMetaObject::normalizedSignature(mm.signature()); - int paren = sig.indexOf('('); - if (paren != name.length() || !sig.startsWith( name )) - continue; - - int returnType = qDBusNameToTypeId(mm.typeName()); - bool isAsync = qDBusCheckAsyncTag(mm.tag()); - - // consistency check: - if (isAsync && returnType != QMetaType::Void) - continue; - - int inputCount = qDBusParametersForMethod(mm, metaTypes); - if (inputCount == -1) - continue; // problem parsing - - metaTypes[0] = returnType; - bool hasMessage = false; - if (inputCount > 0 && - metaTypes.at(inputCount) == QDBusConnectionPrivate::messageMetaType) { - // "no input parameters" is allowed as long as the message meta type is there - hasMessage = true; - --inputCount; - } - - // try to match the parameters - if (inputCount != types.count()) - continue; // not enough parameters - - bool matches = true; - int i; - for (i = 0; i < types.count(); ++i) - if ( !typesMatch(metaTypes.at(i + 1), types.at(i).qvariantType()) ) { - matches = false; - break; - } - - if (!matches) - continue; // we didn't match them all - - // consistency check: - if (isAsync && metaTypes.count() > i + 1) - continue; - - if (hasMessage && (mm.attributes() & attributeMask) != attributeMask) - continue; // not exported - - // if we got here, this slot matched - return idx; - } - - // no slot matched - return -1; -} - -static CallDeliveryEvent* prepareReply(QObject *object, int idx, const QList &metaTypes, - const QDBusMessage &msg) -{ - Q_ASSERT(object); - - int n = metaTypes.count() - 1; - if (metaTypes[n] == QDBusConnectionPrivate::messageMetaType) - --n; - - // check that types match - for (int i = 0; i < n; ++i) - if (!typesMatch(metaTypes.at(i + 1), msg.at(i).type())) - return 0; // no match - - // we can deliver - // prepare for the call - CallDeliveryEvent *data = new CallDeliveryEvent; - data->object = object; - data->flags = 0; - data->message = msg; - data->metaTypes = metaTypes; - data->slotIdx = idx; - - return data; -} - -bool QDBusConnectionPrivate::activateSignal(const QDBusConnectionPrivate::SignalHook& hook, - const QDBusMessage &msg) -{ - // This is called by QDBusConnectionPrivate::handleSignal to deliver a signal - // that was received from D-Bus - // - // Signals are delivered to slots if the parameters match - // Slots can have less parameters than there are on the message - // Slots can optionally have one final parameter that is a QDBusMessage - // Slots receive read-only copies of the message (i.e., pass by value or by const-ref) - CallDeliveryEvent *call = prepareReply(hook.obj, hook.midx, hook.params, msg); - if (call) { - postCallDeliveryEvent(call); - return true; - } - return false; -} - -bool QDBusConnectionPrivate::activateCall(QObject* object, int flags, - const QDBusMessage &msg) -{ - // This is called by QDBusConnectionPrivate::handleObjectCall to place a call - // to a slot on the object. - // - // The call is delivered to the first slot that matches the following conditions: - // - has the same name as the message's target name - // - ALL of the message's types are found in slot's parameter list - // - optionally has one more parameter of type QDBusMessage - // If none match, then the slot of the same name as the message target and with - // the first type of QDBusMessage is delivered. - // - // Because the marshalling of D-Bus data into QVariant loses the information on - // the original types, the message signature is used to determine the original type. - // Aside from that, the "int" and "unsigned" types will be tried as well. - // - // The D-Bus specification requires that all MethodCall messages be replied to, unless the - // caller specifically waived this requirement. This means that we inspect if the user slot - // generated a reply and, if it didn't, we will. Obviously, if the user slot doesn't take a - // QDBusMessage parameter, it cannot generate a reply. - // - // When a return message is generated, the slot's return type, if any, will be placed - // in the message's first position. If there are non-const reference parameters to the - // slot, they must appear at the end and will be placed in the subsequent message - // positions. - - if (!object) - return false; - - QList metaTypes; - int idx; - - { - const QMetaObject *mo = object->metaObject(); - QDBusTypeList typeList(msg.signature().toUtf8()); - QByteArray name = msg.name().toUtf8(); - - // find a slot that matches according to the rules above - idx = ::findSlot(mo, name, flags, typeList, metaTypes); - if (idx == -1) { - // try with no parameters, but with a QDBusMessage - idx = ::findSlot(mo, name, flags, QDBusTypeList(), metaTypes); - if (metaTypes.count() != 2 || metaTypes.at(1) != messageMetaType) - return false; - } - } - - // found the slot to be called - // prepare for the call: - CallDeliveryEvent *call = new CallDeliveryEvent; - - // parameters: - call->object = object; - call->flags = flags; - call->message = msg; - - // save our state: - call->metaTypes = metaTypes; - call->slotIdx = idx; - - postCallDeliveryEvent(call); - - // ready - return true; -} - -void QDBusConnectionPrivate::postCallDeliveryEvent(CallDeliveryEvent *data) -{ - Q_ASSERT(data); - data->conn = this; -#if USE_OUTSIDE_DISPATCH - callDeliveryMutex.lock(); - callDeliveryState = data; -#else - QCoreApplication::postEvent( this, data ); -#endif -} - -CallDeliveryEvent *QDBusConnectionPrivate::postedCallDeliveryEvent() -{ - CallDeliveryEvent *e = callDeliveryState; - Q_ASSERT(e && e->conn == this); - - // release it: - callDeliveryState = 0; - callDeliveryMutex.unlock(); - - return e; -} - -void QDBusConnectionPrivate::deliverCall(const CallDeliveryEvent& data) const -{ - // resume state: - const QList& metaTypes = data.metaTypes; - const QDBusMessage& msg = data.message; - - QVarLengthArray params; - params.reserve(metaTypes.count()); - - QVariantList auxParameters; - // let's create the parameter list - - // first one is the return type -- add it below - params.append(0); - - // add the input parameters - int i; - for (i = 1; i <= msg.count(); ++i) { - int id = metaTypes[i]; - if (id == QDBusConnectionPrivate::messageMetaType) - break; - - if (id == int(msg.at(i - 1).userType())) - // no conversion needed - params.append(const_cast( msg.at(i - 1).constData() )); - else { - // convert to what the function expects - auxParameters.append(QVariant()); - - const QVariant &in = msg.at(i - 1); - QVariant &out = auxParameters[auxParameters.count() - 1]; - - bool error = false; - if (id == QVariant::List) { - int mid = in.userType(); - // the only conversion possible here is from a specialised QList to QVariantList - if (mid == QDBusTypeHelper::listId()) - out = qVariantFromValue(QDBusTypeHelper::toVariantList(in)); - else if (mid == QDBusTypeHelper::listId()) - out = qVariantFromValue(QDBusTypeHelper::toVariantList(in)); - else if (mid == QDBusTypeHelper::listId()) - out = qVariantFromValue(QDBusTypeHelper::toVariantList(in)); - else if (mid == QDBusTypeHelper::listId()) - out = qVariantFromValue(QDBusTypeHelper::toVariantList(in)); - else if (mid == QDBusTypeHelper::listId()) - out = qVariantFromValue(QDBusTypeHelper::toVariantList(in)); - else if (mid == QDBusTypeHelper::listId()) - out = qVariantFromValue(QDBusTypeHelper::toVariantList(in)); - else if (mid == QDBusTypeHelper::listId()) - out = qVariantFromValue(QDBusTypeHelper::toVariantList(in)); - else if (mid == QDBusTypeHelper::listId()) - out = qVariantFromValue(QDBusTypeHelper::toVariantList(in)); - else - error = true; - } else if (in.type() == QVariant::UInt) { - if (id == QMetaType::UChar) { - uchar uc = in.toUInt(); - out = qVariantFromValue(uc); - } else if (id == QMetaType::UShort) { - ushort us = in.toUInt(); - out = qVariantFromValue(us); - } else { - error = true; - } - } else if (in.type() == QVariant::Int) { - if (id == QMetaType::Short) { - short s = in.toInt(); - out = qVariantFromValue(s); - } else { - error = true; - } - } else { - error = true; - } - - if (error) - qFatal("Internal error: got invalid meta type %d when trying to convert to meta type %d", - in.userType(), id); - - params.append( const_cast(out.constData()) ); - } - } - - bool takesMessage = false; - if (metaTypes.count() > i && metaTypes[i] == QDBusConnectionPrivate::messageMetaType) { - params.append(const_cast(static_cast(&msg))); - takesMessage = true; - ++i; - } - - // output arguments - QVariantList outputArgs; - void *null = 0; - if (metaTypes[0] != QMetaType::Void) { - QVariant arg(metaTypes[0], null); - outputArgs.append( arg ); - params[0] = const_cast(outputArgs.at( outputArgs.count() - 1 ).constData()); - } - for ( ; i < metaTypes.count(); ++i) { - QVariant arg(metaTypes[i], null); - outputArgs.append( arg ); - params.append( const_cast(outputArgs.at( outputArgs.count() - 1 ).constData()) ); - } - - // make call: - bool fail; - if (data.object.isNull()) - fail = true; - else - fail = data.object->qt_metacall(QMetaObject::InvokeMetaMethod, - data.slotIdx, params.data()) >= 0; - - // do we create a reply? Only if the caller is waiting for a reply and one hasn't been sent - // yet. - if (!msg.noReply() && !msg.wasRepliedTo()) { - if (!fail) { - // normal reply - QDBusMessage reply = QDBusMessage::methodReply(msg); - reply += outputArgs; - - qDebug() << "Automatically sending reply:" << reply; - send(reply); - } - else { - // generate internal error - QDBusMessage reply = QDBusMessage::error(msg, QDBusError(QDBusError::InternalError, - QLatin1String("Failed to deliver message"))); - qWarning("Internal error: Failed to deliver message"); - send(reply); - } - } - - return; -} - -void QDBusConnectionPrivate::customEvent(QEvent *event) -{ - // nothing else should be sending custom events at us - CallDeliveryEvent* call = static_cast(event); - - // self check: - Q_ASSERT(call->conn == this); - - deliverCall(*call); -} - -QDBusConnectionPrivate::QDBusConnectionPrivate(QObject *parent) - : QObject(parent), ref(1), mode(InvalidMode), connection(0), server(0), busService(0) -{ - extern bool qDBusInitThreads(); - static const int msgType = registerMessageMetaType(); - static const bool threads = qDBusInitThreads(); - static const bool metatypes = QDBusMetaTypeId::innerInitialize(); - - Q_UNUSED(msgType); - Q_UNUSED(threads); - Q_UNUSED(metatypes); - - dbus_error_init(&error); - - rootNode.flags = 0; -} - -QDBusConnectionPrivate::~QDBusConnectionPrivate() -{ - if (dbus_error_is_set(&error)) - dbus_error_free(&error); - - closeConnection(); - rootNode.clear(); // free resources - qDeleteAll(cachedMetaObjects); -} - -void QDBusConnectionPrivate::closeConnection() -{ - QWriteLocker locker(&lock); - ConnectionMode oldMode = mode; - mode = InvalidMode; // prevent reentrancy - if (oldMode == ServerMode) { - if (server) { - dbus_server_disconnect(server); - dbus_server_unref(server); - server = 0; - } - } else if (oldMode == ClientMode) { - if (connection) { - dbus_connection_close(connection); - // send the "close" message - while (dbus_connection_dispatch(connection) == DBUS_DISPATCH_DATA_REMAINS) - ; - dbus_connection_unref(connection); - connection = 0; - } - } -} - -bool QDBusConnectionPrivate::handleError() -{ - lastError = QDBusError(&error); - if (dbus_error_is_set(&error)) - dbus_error_free(&error); - return lastError.isValid(); -} - -void QDBusConnectionPrivate::bindToApplication() -{ - // Yay, now that we have an application we are in business - Q_ASSERT_X(QCoreApplication::instance(), "QDBusConnection", - "qDBusBindToApplication called without an application"); - moveToThread(QCoreApplication::instance()->thread()); - - // Re-add all watchers - WatcherHash oldWatchers = watchers; - watchers.clear(); - QHashIterator it(oldWatchers); - while (it.hasNext()) { - it.next(); - if (!it.value().read && !it.value().write) { - qDBusAddWatch(it.value().watch, this); - } else { - watchers.insertMulti(it.key(), it.value()); - } - } - - // Re-add all timeouts - while (!pendingTimeouts.isEmpty()) - qDBusAddTimeout(pendingTimeouts.takeFirst(), this); -} - -void QDBusConnectionPrivate::timerEvent(QTimerEvent *e) -{ - DBusTimeout *timeout = timeouts.value(e->timerId(), 0); - dbus_timeout_handle(timeout); -} - -void QDBusConnectionPrivate::doDispatch() -{ - if (mode == ClientMode) - while (dbus_connection_dispatch(connection) == DBUS_DISPATCH_DATA_REMAINS); -} - -void QDBusConnectionPrivate::socketRead(int fd) -{ - QHashIterator it(watchers); - while (it.hasNext()) { - it.next(); - if (it.key() == fd && it.value().read && it.value().read->isEnabled()) { - if (!dbus_watch_handle(it.value().watch, DBUS_WATCH_READABLE)) - qDebug("OUT OF MEM"); - } - } - - doDispatch(); -} - -void QDBusConnectionPrivate::socketWrite(int fd) -{ - QHashIterator it(watchers); - while (it.hasNext()) { - it.next(); - if (it.key() == fd && it.value().write && it.value().write->isEnabled()) { - if (!dbus_watch_handle(it.value().watch, DBUS_WATCH_WRITABLE)) - qDebug("OUT OF MEM"); - } - } -} - -void QDBusConnectionPrivate::objectDestroyed(QObject *obj) -{ - QWriteLocker locker(&lock); - huntAndDestroy(obj, &rootNode); - - SignalHookHash::iterator sit = signalHooks.begin(); - while (sit != signalHooks.end()) { - if (static_cast(sit.value().obj) == obj) - sit = signalHooks.erase(sit); - else - ++sit; - } - - obj->disconnect(this); -} - -void QDBusConnectionPrivate::relaySignal(QObject *obj, const char *interface, const char *name, - const QVariantList &args) -{ - QReadLocker locker(&lock); - QDBusMessage message = QDBusMessage::signal(QLatin1String("/"), QLatin1String(interface), - QLatin1String(name)); - message += args; - DBusMessage *msg = message.toDBusMessage(); - if (!msg) { - qWarning("Could not emit signal %s.%s", interface, name); - return; - } - - //qDebug() << "Emitting signal" << message; - //qDebug() << "for paths:"; - dbus_message_set_no_reply(msg, true); // the reply would not be delivered to anything - huntAndEmit(connection, msg, obj, &rootNode); - dbus_message_unref(msg); -} - -int QDBusConnectionPrivate::registerMessageMetaType() -{ - int tp = messageMetaType = qRegisterMetaType("QDBusMessage"); - return tp; -} - -int QDBusConnectionPrivate::findSlot(QObject* obj, const QByteArray &normalizedName, - QList ¶ms) -{ - int midx = obj->metaObject()->indexOfMethod(normalizedName); - if (midx == -1) { - qWarning("No such slot '%s' while connecting D-Bus", normalizedName.constData()); - return -1; - } - - int inputCount = qDBusParametersForMethod(obj->metaObject()->method(midx), params); - if ( inputCount == -1 || inputCount + 1 != params.count() ) - return -1; // failed to parse or invalid arguments or output arguments - - return midx; -} - -bool QDBusConnectionPrivate::prepareHook(QDBusConnectionPrivate::SignalHook &hook, QString &key, - const QString &service, const QString &path, - const QString &interface, const QString &name, - QObject *receiver, const char *signal, int minMIdx, - bool buildSignature) -{ - QByteArray normalizedName = QMetaObject::normalizedSignature(signal + 1); - hook.midx = findSlot(receiver, normalizedName, hook.params); - if (hook.midx < minMIdx) - return false; - - hook.sender = service; - hook.path = path; - hook.obj = receiver; - - // build the D-Bus signal name and signature - QString mname = name; - if (mname.isEmpty()) { - normalizedName.truncate(normalizedName.indexOf('(')); - mname = QString::fromUtf8(normalizedName); - } - key = mname; - key.reserve(interface.length() + 1 + mname.length()); - key += ':'; - key += interface; - - if (buildSignature) { - hook.signature.clear(); - for (int i = 1; i < hook.params.count(); ++i) - if (hook.params.at(i) != messageMetaType) - hook.signature += QLatin1String( QDBusType::dbusSignature( QVariant::Type(hook.params.at(i)) ) ); - } - - return true; // connect to this signal -} - -bool QDBusConnectionPrivate::activateInternalFilters(const ObjectTreeNode *node, const QDBusMessage &msg) -{ - // object may be null - - if (msg.interface().isEmpty() || msg.interface() == QLatin1String(DBUS_INTERFACE_INTROSPECTABLE)) { - if (msg.method() == QLatin1String("Introspect") && msg.signature().isEmpty()) - qDBusIntrospectObject(node, msg); - if (msg.interface() == QLatin1String(DBUS_INTERFACE_INTROSPECTABLE)) - return true; - } - - if (node->obj && (msg.interface().isEmpty() || - msg.interface() == QLatin1String(DBUS_INTERFACE_PROPERTIES))) { - if (msg.method() == QLatin1String("Get") && msg.signature() == QLatin1String("ss")) - qDBusPropertyGet(node, msg); - else if (msg.method() == QLatin1String("Set") && msg.signature() == QLatin1String("ssv")) - qDBusPropertySet(node, msg); - - if (msg.interface() == QLatin1String(DBUS_INTERFACE_PROPERTIES)) - return true; - } - - return false; -} - -bool QDBusConnectionPrivate::activateObject(const ObjectTreeNode *node, const QDBusMessage &msg) -{ - // This is called by QDBusConnectionPrivate::handleObjectCall to place a call to a slot - // on the object. - // - // The call is routed through the adaptor sub-objects if we have any - - // object may be null - - QDBusAdaptorConnector *connector; - if (node->flags & QDBusConnection::ExportAdaptors && - (connector = qDBusFindAdaptorConnector(node->obj))) { - int newflags = node->flags | QDBusConnection::ExportAllSlots; - - if (msg.interface().isEmpty()) { - // place the call in all interfaces - // let the first one that handles it to work - foreach (const QDBusAdaptorConnector::AdaptorData &entry, connector->adaptors) - if (activateCall(entry.adaptor, newflags, msg)) - return true; - } else { - // check if we have an interface matching the name that was asked: - QDBusAdaptorConnector::AdaptorMap::ConstIterator it; - it = qLowerBound(connector->adaptors.constBegin(), connector->adaptors.constEnd(), - msg.interface()); - if (it != connector->adaptors.end() && it->interface == msg.interface()) - if (activateCall(it->adaptor, newflags, msg)) - return true; - } - } - - // no adaptors matched - // try our standard filters - if (activateInternalFilters(node, msg)) - return true; - - // try the object itself: - if (node->flags & QDBusConnection::ExportSlots && activateCall(node->obj, node->flags, msg)) - return true; -#if 0 - // nothing matched - qDebug("Call failed: no match for %s%s%s at %s", - qPrintable(msg.interface()), msg.interface().isEmpty() ? "" : ".", - qPrintable(msg.name()), - qPrintable(msg.path())); -#endif - return false; -} - -template -static bool applyForObject(QDBusConnectionPrivate::ObjectTreeNode *root, const QString &fullpath, - Func& functor) -{ - // walk the object tree - QStringList path = fullpath.split(QLatin1Char('/')); - if (path.last().isEmpty()) - path.removeLast(); // happens if path is "/" - int i = 1; - QDBusConnectionPrivate::ObjectTreeNode *node = root; - - // try our own tree first - while (node && !(node->flags & QDBusConnection::ExportChildObjects) ) { - if (i == path.count()) { - // found our object - functor(node); - return true; - } - - QVector::ConstIterator it = - qLowerBound(node->children.constBegin(), node->children.constEnd(), path.at(i)); - if (it != node->children.constEnd() && it->name == path.at(i)) - // match - node = it->node; - else - node = 0; - - ++i; - } - - // any object in the tree can tell us to switch to its own object tree: - if (node && node->flags & QDBusConnection::ExportChildObjects) { - QObject *obj = node->obj; - - while (obj) { - if (i == path.count()) { - // we're at the correct level - QDBusConnectionPrivate::ObjectTreeNode fakenode(*node); - fakenode.obj = obj; - functor(&fakenode); - return true; - } - - const QObjectList children = obj->children(); - - // find a child with the proper name - QObject *next = 0; - foreach (QObject *child, children) - if (child->objectName() == path.at(i)) { - next = child; - break; - } - - if (!next) - break; - - ++i; - obj = next; - } - } - - // object not found - return false; -} - -struct qdbus_activateObject -{ - QDBusConnectionPrivate *self; - const QDBusMessage &msg; - bool returnVal; - inline qdbus_activateObject(QDBusConnectionPrivate *s, const QDBusMessage &m) - : self(s), msg(m) - { } - - inline void operator()(QDBusConnectionPrivate::ObjectTreeNode *node) - { returnVal = self->activateObject(node, msg); } -}; - -bool QDBusConnectionPrivate::handleObjectCall(const QDBusMessage &msg) -{ - QReadLocker locker(&lock); - - qdbus_activateObject apply(this, msg); - if (applyForObject(&rootNode, msg.path(), apply)) - return apply.returnVal; - - qDebug("Call failed: no object found at %s", qPrintable(msg.path())); - return false; -} - -bool QDBusConnectionPrivate::handleSignal(const QString &key, const QDBusMessage& msg) -{ - bool result = false; - SignalHookHash::const_iterator it = signalHooks.find(key); - //qDebug("looking for: %s", path.toLocal8Bit().constData()); - //qDebug() << signalHooks.keys(); - for ( ; it != signalHooks.constEnd() && it.key() == key; ++it) { - const SignalHook &hook = it.value(); - if ( !hook.sender.isEmpty() && hook.sender != msg.sender() ) - continue; - if ( !hook.path.isEmpty() && hook.path != msg.path() ) - continue; - if ( !hook.signature.isEmpty() && hook.signature != msg.signature() ) - continue; - if ( hook.signature.isEmpty() && !hook.signature.isNull() && !msg.signature().isEmpty()) - continue; - - // yes, |= - result |= activateSignal(hook, msg); - } - return result; -} - -bool QDBusConnectionPrivate::handleSignal(const QDBusMessage& msg) -{ - QString key = msg.member(); - key.reserve(key.length() + 1 + msg.interface().length()); - key += ':'; - key += msg.interface(); - - QReadLocker locker(&lock); - bool result = handleSignal(key, msg); // one try - - key.truncate(msg.member().length() + 1); // keep the ':' - result |= handleSignal(key, msg); // second try - return result; -} - -static dbus_int32_t server_slot = -1; - -void QDBusConnectionPrivate::setServer(DBusServer *s) -{ - if (!server) { - handleError(); - return; - } - - server = s; - mode = ServerMode; - - dbus_server_allocate_data_slot(&server_slot); - if (server_slot < 0) - return; - - dbus_server_set_watch_functions(server, qDBusAddWatch, qDBusRemoveWatch, - qDBusToggleWatch, this, 0); // ### check return type? - dbus_server_set_timeout_functions(server, qDBusAddTimeout, qDBusRemoveTimeout, - qDBusToggleTimeout, this, 0); - dbus_server_set_new_connection_function(server, qDBusNewConnection, this, 0); - - dbus_server_set_data(server, server_slot, this, 0); -} - -void QDBusConnectionPrivate::setConnection(DBusConnection *dbc) -{ - if (!dbc) { - handleError(); - return; - } - - connection = dbc; - mode = ClientMode; - - dbus_connection_set_exit_on_disconnect(connection, false); - dbus_connection_set_watch_functions(connection, qDBusAddWatch, qDBusRemoveWatch, - qDBusToggleWatch, this, 0); - dbus_connection_set_timeout_functions(connection, qDBusAddTimeout, qDBusRemoveTimeout, - qDBusToggleTimeout, this, 0); -// dbus_bus_add_match(connection, "type='signal',interface='com.trolltech.dbus.Signal'", &error); -// dbus_bus_add_match(connection, "type='signal'", &error); - - dbus_bus_add_match(connection, "type='signal'", &error); - if (handleError()) { - closeConnection(); - return; - } - - const char *service = dbus_bus_get_unique_name(connection); - if (service) { - QVarLengthArray filter; - filter.append("destination='", 13); - filter.append(service, qstrlen(service)); - filter.append("\'\0", 2); - - dbus_bus_add_match(connection, filter.constData(), &error); - if (handleError()) { - closeConnection(); - return; - } - } else { - qWarning("QDBusConnectionPrivate::SetConnection: Unable to get base service"); - } - -#if USE_OUTSIDE_DISPATCH - dbus_connection_add_filter_outside(connection, qDBusSignalFilter, qDBusSignalFilterOutside, this, 0); -#else - dbus_connection_add_filter(connection, qDBusSignalFilter, this, 0); -#endif - - //qDebug("base service: %s", service); - - // schedule a dispatch: - QMetaObject::invokeMethod(this, "doDispatch", Qt::QueuedConnection); -} - -extern "C"{ -static void qDBusResultReceived(DBusPendingCall *pending, void *user_data) -{ - QDBusConnectionPrivate::messageResultReceived(pending, user_data); -} -} - -void QDBusConnectionPrivate::messageResultReceived(DBusPendingCall *pending, void *user_data) -{ - QDBusPendingCall *call = reinterpret_cast(user_data); - QDBusConnectionPrivate *connection = const_cast(call->connection); - Q_ASSERT(call->pending == pending); - - if (!call->receiver.isNull() && call->methodIdx != -1) { - DBusMessage *reply = dbus_pending_call_steal_reply(pending); - - // Deliver the return values of a remote function call. - // - // There is only one connection and it is specified by idx - // The slot must have the same parameter types that the message does - // The slot may have less parameters than the message - // The slot may optionally have one final parameter that is QDBusMessage - // The slot receives read-only copies of the message (i.e., pass by value or by const-ref) - - QDBusMessage msg = QDBusMessage::fromDBusMessage(reply, QDBusConnection(connection->name)); - qDebug() << "got message: " << msg; - CallDeliveryEvent *e = prepareReply(call->receiver, call->methodIdx, call->metaTypes, msg); - if (e) - connection->postCallDeliveryEvent(e); - else - qDebug() << "Deliver failed!"; - } - dbus_pending_call_unref(pending); - delete call; -} - -int QDBusConnectionPrivate::send(const QDBusMessage& message) const -{ - DBusMessage *msg = message.toDBusMessage(); - if (!msg) - return 0; - - dbus_message_set_no_reply(msg, true); // the reply would not be delivered to anything - - qDebug() << "sending message:" << message; - bool isOk = dbus_connection_send(connection, msg, 0); - int serial = 0; - if (isOk) - serial = dbus_message_get_serial(msg); - - dbus_message_unref(msg); - return serial; -} - -QDBusMessage QDBusConnectionPrivate::sendWithReply(const QDBusMessage &message, - int mode) -{ - if (!QCoreApplication::instance() || mode == QDBusConnection::NoUseEventLoop) { - DBusMessage *msg = message.toDBusMessage(); - if (!msg) - return QDBusMessage(); - - qDebug() << "sending message:" << message; - DBusMessage *reply = dbus_connection_send_with_reply_and_block(connection, msg, - -1, &error); - handleError(); - dbus_message_unref(msg); - - if (lastError.isValid()) - return QDBusMessage::fromError(lastError); - - QDBusMessage amsg = QDBusMessage::fromDBusMessage(reply, QDBusConnection(name)); - qDebug() << "got message:" << amsg; - - if (dbus_connection_get_dispatch_status(connection) == DBUS_DISPATCH_DATA_REMAINS) - QMetaObject::invokeMethod(this, "doDispatch", Qt::QueuedConnection); - return amsg; - } else { // use the event loop - QDBusReplyWaiter waiter; - if (sendWithReplyAsync(message, &waiter, SLOT(reply(const QDBusMessage&))) > 0) { - // enter the event loop and wait for a reply - waiter.exec(QEventLoop::ExcludeUserInputEvents | QEventLoop::WaitForMoreEvents); - - lastError = waiter.replyMsg; // set or clear error - return waiter.replyMsg; - } - - return QDBusMessage(); - } -} - -int QDBusConnectionPrivate::sendWithReplyAsync(const QDBusMessage &message, QObject *receiver, - const char *method) -{ - if (!receiver || !method || !*method) - // would not be able to deliver a reply - return send(message); - - int slotIdx = -1; - QList metaTypes; - QByteArray normalizedName = QMetaObject::normalizedSignature(method + 1); - slotIdx = findSlot(receiver, normalizedName, metaTypes); - if (slotIdx == -1) - // would not be able to deliver a reply - return send(message); - - DBusMessage *msg = message.toDBusMessage(); - if (!msg) - return 0; - - qDebug() << "sending message:" << message; - DBusPendingCall *pending = 0; - if (dbus_connection_send_with_reply(connection, msg, &pending, message.timeout())) { - if (slotIdx != -1) { - QDBusPendingCall *pcall = new QDBusPendingCall; - pcall->receiver = receiver; - pcall->metaTypes = metaTypes; - pcall->methodIdx = slotIdx; - pcall->connection = this; - pcall->pending = dbus_pending_call_ref(pending); - dbus_pending_call_set_notify(pending, qDBusResultReceived, pcall, 0); - } - dbus_pending_call_unref(pending); - return dbus_message_get_serial(msg); - } - - return 0; -} - -void QDBusConnectionPrivate::connectSignal(const QString &key, const SignalHook &hook) -{ - signalHooks.insertMulti(key, hook); - connect(hook.obj, SIGNAL(destroyed(QObject*)), SLOT(objectDestroyed(QObject*))); -} - -void QDBusConnectionPrivate::registerObject(const ObjectTreeNode *node) -{ - connect(node->obj, SIGNAL(destroyed(QObject*)), SLOT(objectDestroyed(QObject*))); - - if (node->flags & QDBusConnection::ExportAdaptors) { - QDBusAdaptorConnector *connector = qDBusCreateAdaptorConnector(node->obj); - - // disconnect and reconnect to avoid duplicates - connector->disconnect(SIGNAL(relaySignal(QObject*,const char*,const char*,QVariantList)), - this, SLOT(relaySignal(QObject*,const char*,const char*,QVariantList))); - connect(connector, SIGNAL(relaySignal(QObject*,const char*,const char*,QVariantList)), - SLOT(relaySignal(QObject*,const char*,const char*,QVariantList))); - } -} - -void QDBusConnectionPrivate::connectRelay(const QString &service, const QString &path, - const QString &interface, - QDBusAbstractInterface *receiver, - const char *signal) -{ - // this function is called by QDBusAbstractInterface when one of its signals is connected - // we set up a relay from D-Bus into it - SignalHook hook; - QString key; - if (!prepareHook(hook, key, service, path, interface, QString(), receiver, signal, - QDBusAbstractInterface::staticMetaObject.methodCount(), true)) - return; // don't connect - - // add it to our list: - QWriteLocker locker(&lock); - SignalHookHash::ConstIterator it = signalHooks.find(key); - SignalHookHash::ConstIterator end = signalHooks.end(); - for ( ; it != end && it.key() == key; ++it) { - const SignalHook &entry = it.value(); - if (entry.sender == hook.sender && - entry.path == hook.path && - entry.signature == hook.signature && - entry.obj == hook.obj && - entry.midx == hook.midx) - return; // already there, no need to re-add - } - - connectSignal(key, hook); -} - -void QDBusConnectionPrivate::disconnectRelay(const QString &service, const QString &path, - const QString &interface, - QDBusAbstractInterface *receiver, - const char *signal) -{ - // this function is called by QDBusAbstractInterface when one of its signals is disconnected - // we remove relay from D-Bus into it - SignalHook hook; - QString key; - if (!prepareHook(hook, key, service, path, interface, QString(), receiver, signal, - QDBusAbstractInterface::staticMetaObject.methodCount(), true)) - return; // don't connect - - // remove it from our list: - QWriteLocker locker(&lock); - SignalHookHash::Iterator it = signalHooks.find(key); - SignalHookHash::Iterator end = signalHooks.end(); - for ( ; it != end && it.key() == key; ++it) { - const SignalHook &entry = it.value(); - if (entry.sender == hook.sender && - entry.path == hook.path && - entry.signature == hook.signature && - entry.obj == hook.obj && - entry.midx == hook.midx) { - // found it - signalHooks.erase(it); - return; - } - } - - qWarning("QDBusConnectionPrivate::disconnectRelay called for a signal that was not found"); -} - -QString QDBusConnectionPrivate::getNameOwner(const QString& name) -{ - if (QDBusUtil::isValidUniqueConnectionName(name)) - return name; - if (!connection || !QDBusUtil::isValidBusName(name)) - return QString(); - - QDBusMessage msg = QDBusMessage::methodCall(QLatin1String(DBUS_SERVICE_DBUS), - QLatin1String(DBUS_PATH_DBUS), QLatin1String(DBUS_INTERFACE_DBUS), - QLatin1String("GetNameOwner")); - msg << name; - QDBusMessage reply = sendWithReply(msg, QDBusConnection::NoUseEventLoop); - if (!lastError.isValid() && reply.type() == QDBusMessage::ReplyMessage) - return reply.first().toString(); - return QString(); -} - -QDBusInterfacePrivate * -QDBusConnectionPrivate::findInterface(const QString &service, - const QString &path, - const QString &interface) -{ - // check if it's there first -- FIXME: add binding mode - QDBusMetaObject *mo = 0; - QString owner = getNameOwner(service); - if (connection && !owner.isEmpty() && QDBusUtil::isValidObjectPath(path) && - (interface.isEmpty() || QDBusUtil::isValidInterfaceName(interface))) - // always call here with the unique connection name - mo = findMetaObject(owner, path, interface); - - QDBusInterfacePrivate *p = new QDBusInterfacePrivate(QDBusConnection(name), this, owner, path, interface, mo); - - if (!mo) { - // invalid object - p->isValid = false; - p->lastError = lastError; - if (!lastError.isValid()) { - // try to determine why we couldn't get the data - if (!connection) - p->lastError = QDBusError(QDBusError::Disconnected, - QLatin1String("Not connected to D-Bus server")); - else if (owner.isEmpty()) - p->lastError = QDBusError(QDBusError::ServiceUnknown, - QString(QLatin1String("Service %1 is unknown")).arg(service)); - else if (!QDBusUtil::isValidObjectPath(path)) - p->lastError = QDBusError(QDBusError::InvalidArgs, - QString(QLatin1String("Object path %1 is invalid")).arg(path)); - else if (!interface.isEmpty() && !QDBusUtil::isValidInterfaceName(interface)) - p->lastError = QDBusError(QDBusError::InvalidArgs, - QString(QLatin1String("Interface %1 is invalid")).arg(interface)); - else - p->lastError = QDBusError(QDBusError::Other, QLatin1String("Unknown error")); - } - } - - return p; -} - -struct qdbus_Introspect -{ - QString xml; - inline void operator()(QDBusConnectionPrivate::ObjectTreeNode *node) - { xml = qDBusIntrospectObject(node); } -}; - -QDBusMetaObject * -QDBusConnectionPrivate::findMetaObject(const QString &service, const QString &path, - const QString &interface) -{ - // service must be a unique connection name - if (!interface.isEmpty()) { - QReadLocker locker(&lock); - QDBusMetaObject *mo = cachedMetaObjects.value(interface, 0); - if (mo) - return mo; - } - if (service == QString::fromUtf8(dbus_bus_get_unique_name(connection))) { - // it's one of our own - QWriteLocker locker(&lock); - QDBusMetaObject *mo = 0; - if (!interface.isEmpty()) - mo = cachedMetaObjects.value(interface, 0); - if (mo) - // maybe it got created when we switched from read to write lock - return mo; - - qdbus_Introspect apply; - if (!applyForObject(&rootNode, path, apply)) { - lastError = QDBusError(QDBusError::InvalidArgs, - QString(QLatin1String("No object at %1")).arg(path)); - return 0; // no object at path - } - - // release the lock and return - return QDBusMetaObject::createMetaObject(interface, apply.xml, cachedMetaObjects, lastError); - } - - // not local: introspect the target object: - QDBusMessage msg = QDBusMessage::methodCall(service, path, - QLatin1String(DBUS_INTERFACE_INTROSPECTABLE), - QLatin1String("Introspect")); - - - QDBusMessage reply = sendWithReply(msg, QDBusConnection::NoUseEventLoop); - - // it doesn't exist yet, we have to create it - QWriteLocker locker(&lock); - QDBusMetaObject *mo = 0; - if (!interface.isEmpty()) - mo = cachedMetaObjects.value(interface, 0); - if (mo) - // maybe it got created when we switched from read to write lock - return mo; - - QString xml; - if (reply.type() == QDBusMessage::ReplyMessage) - // fetch the XML description - xml = reply.first().toString(); - else { - lastError = reply; - if (reply.type() != QDBusMessage::ErrorMessage || lastError != QDBusError::UnknownMethod) - return 0; // error - } - - // release the lock and return - return QDBusMetaObject::createMetaObject(interface, xml, cachedMetaObjects, lastError); -} - -void QDBusReplyWaiter::reply(const QDBusMessage &msg) -{ - replyMsg = msg; - QTimer::singleShot(0, this, SLOT(quit())); -} - -#include "qdbusconnection_p.moc" diff --git a/qt/qdbusinterface.cpp b/qt/qdbusinterface.cpp deleted file mode 100644 index 6367654d..00000000 --- a/qt/qdbusinterface.cpp +++ /dev/null @@ -1,203 +0,0 @@ -/* -*- C++ -*- - * - * Copyright (C) 2006 Trolltech AS. All rights reserved. - * Author: Thiago Macieira - * - * Licensed under the Academic Free License version 2.1 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#include "qdbusinterface.h" - -#include -#include - -#include "qdbusinterface_p.h" -#include "qdbusconnection_p.h" - -/*! - \class QDBusInterface - \brief Proxy class for interfaces on remote objects. - - QDBusInterface is a generic accessor class that is used to place calls to remote objects, - connect to signals exported by remote objects and get/set the value of remote properties. This - class is useful for dynamic access to remote objects: that is, when you do not have a generated - code that represents the remote interface. - - Calls are usually placed by using the call() function, which constructs the message, sends it - over the bus, waits for the reply and decodes the reply. Signals are connected to by using the - normal QObject::connect() function. Finally, properties are accessed using the - QObject::property() and QObject::setProperty() functions. -*/ - -QDBusInterface::QDBusInterface(QDBusInterfacePrivate *p) - : QDBusAbstractInterface(p) -{ -} - -/*! - Destroy the object interface and frees up any resource used. -*/ -QDBusInterface::~QDBusInterface() -{ - // resources are freed in QDBusInterfacePrivate::~QDBusInterfacePrivate() -} - -/*! - \internal - Overrides QObject::metaObject to return our own copy. -*/ -const QMetaObject *QDBusInterface::metaObject() const -{ - return d_func()->isValid ? d_func()->metaObject : &QDBusAbstractInterface::staticMetaObject; -} - -/*! - \internal - Override QObject::qt_metacast to catch the interface name too. -*/ -void *QDBusInterface::qt_metacast(const char *_clname) -{ - if (!_clname) return 0; - if (!strcmp(_clname, "QDBusInterface")) - return static_cast(const_cast(this)); - if (d_func()->interface == _clname) - return static_cast(const_cast(this)); - return QDBusAbstractInterface::qt_metacast(_clname); -} - -/*! - \internal - Dispatch the call through the private. -*/ -int QDBusInterface::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QDBusAbstractInterface::qt_metacall(_c, _id, _a); - if (_id < 0 || !d_func()->isValid) - return _id; - return d_func()->metacall(_c, _id, _a); -} - -int QDBusInterfacePrivate::metacall(QMetaObject::Call c, int id, void **argv) -{ - Q_Q(QDBusInterface); - - if (c == QMetaObject::InvokeMetaMethod) { - int offset = metaObject->methodOffset(); - QMetaMethod mm = metaObject->method(id + offset); - - if (mm.methodType() == QMetaMethod::Signal) { - // signal relay from D-Bus world to Qt world - QMetaObject::activate(q, metaObject, id, argv); - - } else if (mm.methodType() == QMetaMethod::Slot) { - // method call relay from Qt world to D-Bus world - // get D-Bus equivalent signature - QString methodName = metaObject->dbusNameForMethod(id); - const int *inputTypes = metaObject->inputTypesForMethod(id); - const int *outputTypes = metaObject->outputTypesForMethod(id); - - int inputTypesCount = *inputTypes; - int outputTypesCount = *outputTypes++; - - // we will assume that the input arguments were passed correctly - QVariantList args; - for (int i = 1; i <= inputTypesCount; ++i) - args << QVariant(inputTypes[i], argv[i]); - - // make the call - QPointer qq = q; - QDBusMessage reply = q->callWithArgs(methodName, args); - args.clear(); - - // access to "this" or to "q" below this point must check for "qq" - // we may have been deleted! - - // check if we got the right number of parameters back: - bool success = false; - if (reply.count() == outputTypesCount) { - // copy the values out - for (int i = 0; i < outputTypesCount; ++i) { - // treat the return value specially, since it may be null: - if (i == 0 && argv[0] == 0) - continue; - - // ensure that the types are correct: - const QVariant &item = reply.at(i); - if (outputTypes[i] != item.userType()) { - success = false; - break; - } - - if (i == 0) - QDBusMetaObject::assign(argv[0], item); - else - QDBusMetaObject::assign(argv[inputTypesCount + i], item); - } - } - - // bail out, something weird happened - if (!success && !qq.isNull()) { - QString errmsg = QLatin1String("Invalid signature `%1' in return from call to %2.%3"); - lastError = QDBusError(QDBusError::InvalidSignature, - errmsg.arg(reply.signature(), interface, methodName)); - } - - // done - return -1; - } - } else if (c == QMetaObject::ReadProperty) { - // Qt doesn't support non-readable properties - // we have to re-check - QMetaProperty mp = metaObject->property(id + metaObject->propertyOffset()); - if (!mp.isReadable()) - return -1; // don't read - - QVariant value = property(mp); - if (value.type() == QVariant::Invalid) - // an error occurred -- property already set lastError - return -1; - else if (mp.type() == QVariant::LastType) - // QVariant is special in this context - *reinterpret_cast(argv[0]) = value; - else - QDBusMetaObject::assign(argv[0], value); - - return -1; // handled - } else if (c == QMetaObject::WriteProperty) { - // QMetaProperty::write has already checked that we're writable - // it has also checked that the type is right - QVariant value(metaObject->propertyMetaType(id), argv[0]); - QMetaProperty mp = metaObject->property(id + metaObject->propertyOffset()); - - setProperty(mp, value); - return -1; - } - return id; -} - -QDBusInterfacePtr::QDBusInterfacePtr(QDBusConnection &conn, const QString &service, const QString &path, - const QString &interface) - : d(conn.findInterface(service, path, interface)) -{ -} - -QDBusInterfacePtr::QDBusInterfacePtr(const QString &service, const QString &path, const QString &interface) - : d(QDBus::sessionBus().findInterface(service, path, interface)) -{ -} - diff --git a/qt/qdbusinterface.h b/qt/qdbusinterface.h deleted file mode 100644 index 716ca8ac..00000000 --- a/qt/qdbusinterface.h +++ /dev/null @@ -1,63 +0,0 @@ -/* -*- C++ -*- - * - * Copyright (C) 2006 Trolltech AS. All rights reserved. - * Author: Thiago Macieira - * - * Licensed under the Academic Free License version 2.1 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#ifndef QDBUSINTERFACE_H -#define QDBUSINTERFACE_H - -#include "qdbusabstractinterface.h" - -class QDBusInterfacePrivate; -class QDBUS_EXPORT QDBusInterface: public QDBusAbstractInterface -{ - friend class QDBusConnection; -private: - QDBusInterface(QDBusInterfacePrivate *p); - -public: - ~QDBusInterface(); - - virtual const QMetaObject *metaObject() const; - virtual void *qt_metacast(const char *); - virtual int qt_metacall(QMetaObject::Call, int, void **); - -private: - Q_DECLARE_PRIVATE(QDBusInterface); - Q_DISABLE_COPY(QDBusInterface) -}; - -struct QDBUS_EXPORT QDBusInterfacePtr -{ - QDBusInterfacePtr(QDBusInterface *iface) : d(iface) { } - QDBusInterfacePtr(QDBusConnection &conn, const QString &service, const QString &path, - const QString &interface = QString()); - QDBusInterfacePtr(const QString &service, const QString &path, const QString &interface = QString()); - ~QDBusInterfacePtr() { delete d; } - - QDBusInterface *interface() { return d; } - QDBusInterface *operator->() { return d; } -private: - QDBusInterface *const d; - Q_DISABLE_COPY(QDBusInterfacePtr) -}; - -#endif diff --git a/qt/qdbusinterface_p.h b/qt/qdbusinterface_p.h deleted file mode 100644 index 25cb9ffa..00000000 --- a/qt/qdbusinterface_p.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - * - * Copyright (C) 2006 Trolltech AS. All rights reserved. - * Author: Thiago Macieira - * - * Licensed under the Academic Free License version 2.1 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -// -// W A R N I N G -// ------------- -// -// This file is not part of the public API. This header file may -// change from version to version without notice, or even be -// removed. -// -// We mean it. -// -// - -#ifndef QDBUSINTERFACEPRIVATE_H -#define QDBUSINTERFACEPRIVATE_H - -#include "qdbusabstractinterface_p.h" -#include "qdbusmetaobject_p.h" -#include "qdbusinterface.h" - -class QDBusInterfacePrivate: public QDBusAbstractInterfacePrivate -{ -public: - Q_DECLARE_PUBLIC(QDBusInterface) - - QDBusMetaObject *metaObject; - - inline QDBusInterfacePrivate(const QDBusConnection &con, QDBusConnectionPrivate *conp, - const QString &serv, const QString &p, const QString &iface, - QDBusMetaObject *mo = 0) - : QDBusAbstractInterfacePrivate(con, conp, serv, p, iface), metaObject(mo) - { - } - ~QDBusInterfacePrivate() - { - if (metaObject && !metaObject->cached) - delete metaObject; - } - - int metacall(QMetaObject::Call c, int id, void **argv); -}; - -#endif diff --git a/qt/qdbusinternalfilters.cpp b/qt/qdbusinternalfilters.cpp deleted file mode 100644 index 8886d3bf..00000000 --- a/qt/qdbusinternalfilters.cpp +++ /dev/null @@ -1,235 +0,0 @@ -/* -*- mode: C++ -*- - * - * Copyright (C) 2006 Trolltech AS. All rights reserved. - * Author: Thiago Macieira - * - * Licensed under the Academic Free License version 2.1 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#include "qdbusconnection_p.h" - -#include -#include -#include -#include - -#include "qdbusabstractadaptor.h" -#include "qdbusabstractadaptor_p.h" -#include "qdbusconnection.h" -#include "qdbusmessage.h" -#include "qdbustypehelper_p.h" -#include "qdbusutil.h" - -// defined in qdbusxmlgenerator.cpp -extern QString qDBusGenerateMetaObjectXml(QString interface, const QMetaObject *mo, - const QMetaObject *base, int flags); - -static const char introspectableInterfaceXml[] = - " \n" - " \n" - " \n" - " \n" - " \n"; - -static const char propertiesInterfaceXml[] = - " \n" - " \n" - " \n" - " \n" - " \n" - " \n" - " \n" - " \n" - " \n" - " \n" - " \n" - " \n"; - -static QString generateSubObjectXml(QObject *object) -{ - QString retval; - foreach (QObject *child, object->children()) { - QString name = child->objectName(); - if (!name.isEmpty()) - retval += QString(QLatin1String(" \n")) - .arg(name); - } - return retval; -} - -QString qDBusIntrospectObject(const QDBusConnectionPrivate::ObjectTreeNode *node) -{ - // object may be null - - QString xml_data(QLatin1String(DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE)); - xml_data += QLatin1String("\n"); - - if (node->obj) { - if (node->flags & QDBusConnection::ExportContents) { - const QMetaObject *mo = node->obj->metaObject(); - for ( ; mo != &QObject::staticMetaObject; mo = mo->superClass()) - xml_data += qDBusGenerateMetaObjectXml(QString(), mo, mo->superClass(), - node->flags); - } - - // does this object have adaptors? - QDBusAdaptorConnector *connector; - if (node->flags & QDBusConnection::ExportAdaptors && - (connector = qDBusFindAdaptorConnector(node->obj))) { - - // trasverse every adaptor in this object - QDBusAdaptorConnector::AdaptorMap::ConstIterator it = connector->adaptors.constBegin(); - QDBusAdaptorConnector::AdaptorMap::ConstIterator end = connector->adaptors.constEnd(); - for ( ; it != end; ++it) { - // add the interface: - QString ifaceXml = QDBusAbstractAdaptorPrivate::retrieveIntrospectionXml(it->adaptor); - if (ifaceXml.isEmpty()) { - // add the interface's contents: - ifaceXml += qDBusGenerateMetaObjectXml(it->interface, it->metaObject, - &QDBusAbstractAdaptor::staticMetaObject, - QDBusConnection::ExportAllContents); - - QDBusAbstractAdaptorPrivate::saveIntrospectionXml(it->adaptor, ifaceXml); - } - - xml_data += ifaceXml; - } - } - - xml_data += QLatin1String( introspectableInterfaceXml ); - xml_data += QLatin1String( propertiesInterfaceXml ); - } - - if (node->flags & QDBusConnection::ExportChildObjects) { - xml_data += generateSubObjectXml(node->obj); - } else { - // generate from the object tree - foreach (const QDBusConnectionPrivate::ObjectTreeNode::Data &entry, node->children) { - if (entry.node && (entry.node->obj || !entry.node->children.isEmpty())) - xml_data += QString(QLatin1String(" \n")) - .arg(entry.name); - } - } - - xml_data += QLatin1String("\n"); - return xml_data; -} - -void qDBusIntrospectObject(const QDBusConnectionPrivate::ObjectTreeNode *node, - const QDBusMessage &msg) -{ - // now send it - QDBusMessage reply = QDBusMessage::methodReply(msg); - reply << qDBusIntrospectObject(node); - msg.connection().send(reply); -} - -// implement the D-Bus interface org.freedesktop.DBus.Properties - -static void sendPropertyError(const QDBusMessage &msg, const QString &interface_name) -{ - QDBusMessage error = QDBusMessage::error(msg, QLatin1String(DBUS_ERROR_INVALID_ARGS), - QString::fromLatin1("Interface %1 was not found in object %2") - .arg(interface_name) - .arg(msg.path())); - msg.connection().send(error); -} - -void qDBusPropertyGet(const QDBusConnectionPrivate::ObjectTreeNode *node, const QDBusMessage &msg) -{ - Q_ASSERT(msg.count() == 2); - QString interface_name = msg.at(0).toString(); - QByteArray property_name = msg.at(1).toString().toUtf8(); - - QDBusAdaptorConnector *connector; - QVariant value; - if (node->flags & QDBusConnection::ExportAdaptors && - (connector = qDBusFindAdaptorConnector(node->obj))) { - - // find the class that implements interface_name - QDBusAdaptorConnector::AdaptorMap::ConstIterator it; - it = qLowerBound(connector->adaptors.constBegin(), connector->adaptors.constEnd(), - interface_name); - if (it != connector->adaptors.end() && it->interface == interface_name) - value = it->adaptor->property(property_name); - } - - if (!value.isValid() && node->flags & QDBusConnection::ExportProperties) { - // try the object itself - int pidx = node->obj->metaObject()->indexOfProperty(property_name); - if (pidx != -1) { - QMetaProperty mp = node->obj->metaObject()->property(pidx); - if (mp.isScriptable() || (node->flags & QDBusConnection::ExportAllProperties) == - QDBusConnection::ExportAllProperties) - value = mp.read(node->obj); - } - } - - if (!value.isValid()) { - // the property was not found - sendPropertyError(msg, interface_name); - return; - } - - QDBusMessage reply = QDBusMessage::methodReply(msg); - reply.setSignature(QLatin1String("v")); - reply << value; - msg.connection().send(reply); -} - -void qDBusPropertySet(const QDBusConnectionPrivate::ObjectTreeNode *node, const QDBusMessage &msg) -{ - Q_ASSERT(msg.count() == 3); - QString interface_name = msg.at(0).toString(); - QByteArray property_name = msg.at(1).toString().toUtf8(); - QVariant value = QDBusTypeHelper::fromVariant(msg.at(2)); - - QDBusAdaptorConnector *connector; - if (node->flags & QDBusConnection::ExportAdaptors && - (connector = qDBusFindAdaptorConnector(node->obj))) { - - // find the class that implements interface_name - QDBusAdaptorConnector::AdaptorMap::ConstIterator it; - it = qLowerBound(connector->adaptors.constBegin(), connector->adaptors.constEnd(), - interface_name); - if (it != connector->adaptors.end() && it->interface == interface_name) - if (it->adaptor->setProperty(property_name, value)) { - msg.connection().send(QDBusMessage::methodReply(msg)); - return; - } - } - - if (node->flags & QDBusConnection::ExportProperties) { - // try the object itself - int pidx = node->obj->metaObject()->indexOfProperty(property_name); - if (pidx != -1) { - QMetaProperty mp = node->obj->metaObject()->property(pidx); - if (mp.isScriptable() || (node->flags & QDBusConnection::ExportAllProperties) == - QDBusConnection::ExportAllProperties) { - - if (mp.write(node->obj, value)) { - msg.connection().send(QDBusMessage::methodReply(msg)); - return; - } - } - } - } - - // the property was not found or not written to - sendPropertyError(msg, interface_name); -} diff --git a/qt/qdbusintrospection.cpp b/qt/qdbusintrospection.cpp deleted file mode 100644 index 20acbd21..00000000 --- a/qt/qdbusintrospection.cpp +++ /dev/null @@ -1,403 +0,0 @@ -/* -*- C++ -*- - * - * Copyright (C) 2006 Trolltech AS. All rights reserved. - * Author: Thiago Macieira - * - * Licensed under the Academic Free License version 2.1 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#include "qdbusintrospection_p.h" -#include "qdbusxmlparser_p.h" - -/*! - \class QDBusIntrospection - \brief Information about introspected objects and interfaces on D-Bus. - \internal - - This class provides structures and methods for parsing the XML introspection data for D-Bus. - Normally, you don't have to use the methods provided here: QDBusInterface and QDBusObject will - do that for you. - - But they may prove useful if the XML data was obtained through other means (like parsing a file). -*/ - -/*! - \class QDBusIntrospection::Argument - \brief One argument to a D-Bus method or signal. - - This struct represents one argument passed to a method or received from a method or signal in - D-Bus. The struct does not contain information on the direction (input or output). -*/ - -/*! - \var QDBusIntrospection::Argument::type - The argument type. -*/ - -/*! - \var QDBusIntrospection::Argument::name - The argument name. The argument name is optional, so this may be a null QString. -*/ - -/*! - \fn QDBusIntrospection::Argument::operator==(const Argument &other) const - Compares this object against \a other and return true if they are the same. -*/ - -/*! - \class QDBusIntrospection::Method - \brief Information about one method. - - This struct represents one method discovered through introspection. A method is composed of - its \a name, its input arguments, its output arguments, and, optionally, annotations. There are no - "in-out" arguments. -*/ - -/*! - \var QDBusIntrospection::Method::name - The method's name. -*/ - -/*! - \var QDBusIntrospection::Method::inputArgs - A list of the method's input arguments. -*/ - -/*! - \var QDBusIntrospection::Method::outputArgs - A list of the method's output arguments (i.e., return values). -*/ - -/*! - \var QDBusIntrospection::Method::annotations - The annotations associated with the method. Each annotation is a pair of strings, where the key - is of the same format as a D-Bus interface name. The value is arbitrary. -*/ - -/*! - \fn QDBusIntrospection::Method::operator==(const Method &other) const - Compares this object against \a other and return true if they are the same. -*/ - -/*! - \class QDBusIntrospection::Signal - \brief Information about one signal. - - This struct represents one signal discovered through introspection. A signal is composed of - its \a name, its output arguments, and, optionally, annotations. -*/ - -/*! - \var QDBusIntrospection::Signal::name - The signal's name. -*/ - -/*! - \var QDBusIntrospection::Signal::outputArgs - A list of the signal's arguments. -*/ - -/*! - \var QDBusIntrospection::Signal::annotations - The annotations associated with the signal. Each annotation is a pair of strings, where the key - is of the same format as a D-Bus interface name. The value is arbitrary. -*/ - -/*! - \fn QDBusIntrospection::Signal::operator==(const Signal& other) const - Compares this object against \a other and return true if they are the same. -*/ - -/*! - \class QDBusIntrospection::Property - \brief Information about one property. - - This struct represents one property discovered through introspection. A property is composed of - its \a name, its \a type, its \a access rights, and, optionally, annotations. -*/ - -/*! - \var QDBusIntrospection::Property::name - The property's name. -*/ - -/*! - \var QDBusIntrospection::Property::type - The property's type. -*/ - -/*! - \enum QDBusIntrospection::Property::Access - The possible access rights for a property: - \value Read - \value Write - \value ReadWrite -*/ - -/*! - \var QDBusIntrospection::Property::access - The property's access rights. -*/ - -/*! - \var QDBusIntrospection::Property::annotations - The annotations associated with the property. Each annotation is a pair of strings, where the key - is of the same format as a D-Bus interface name. The value is arbitrary. -*/ - -/*! - \fn QDBusIntrospection::Property::operator==(const Property &other) const - Compares this object against \a other and return true if they are the same. -*/ - -/*! - \class QDBusIntrospection::Interface - \brief Information about one interface on the bus. - - Each interface on D-Bus has an unique \a name, identifying where that interface was defined. - Interfaces may have annotations, methods, signals and properties, but none are mandatory. -*/ - -/*! - \var QDBusIntrospection::Interface::name - The interface's name. -*/ - -/*! - \var QDBusIntrospection::Interface::introspection - The XML document fragment describing this interface. - - If parsed again through parseInterface, the object returned should have the same contents as - this object. -*/ - -/*! - \var QDBusIntrospection::Interface::annotations - The annotations associated with the interface. Each annotation is a pair of strings, where the key - is of the same format as a D-Bus interface name. The value is arbitrary. -*/ - -/*! - \var QDBusIntrospection::Interface::methods - The methods available in this interface. Note that method names are not unique (i.e., methods - can be overloaded with multiple arguments types). -*/ - -/*! - \var QDBusIntrospection::Interface::signals_ - The signals available in this interface. Note that signal names are not unique (i.e., signals - can be overloaded with multiple argument types). - - This member is called "signals_" because "signals" is a reserved keyword in Qt. -*/ - -/*! - \var QDBusIntrospection::Interface::properties - The properties available in this interface. Property names are unique. -*/ - -/*! - \fn QDBusIntrospection::Interface::operator==(const Interface &other) const - Compares this object against \a other and return true if they are the same. - - Note that two interfaces are considered to be the same if they have the same name. The internal - structures in the objects are not compared. -*/ - -/*! - \class QDBusIntrospection::Object - \brief Information about one object on the bus. - - An object on the D-Bus bus is represented by its service and path on the service but, unlike - interfaces, objects are mutable. That is, their contents can change with time. Therefore, - while the (service, path) pair uniquely identifies an object, the information contained in - this struct may no longer represent the object. - - An object can contain interfaces and child (sub) objects. -*/ - -/*! - \var QDBusIntrospection::Object::service - The object's service name. - - \sa parseObject(), parseObjectTree() -*/ - -/*! - \var QDBusIntrospection::Object::path - The object's path on the service. This is an absolute path. - - \sa parseObject(), parseObjectTree() -*/ - -/*! - \var QDBusIntrospection::Object::introspection - The XML document fragment describing this object, its interfaces and sub-objects at the time - of the parsing. - - The result of parseObject with this XML data should be the same as the Object struct. -*/ - -/*! - \var QDBusIntrospection::Object::interfaces - The list of interface names in this object. -*/ - -/*! - \var QDBusIntrospection::Object::childObjects - The list of child object names in this object. Note that this is a relative name, not an - absolute path. To obtain the absolute path, concatenate with \l - {QDBusIntrospection::Object::path}{path}. -*/ - -/*! - \class QDBusIntrospection::ObjectTree - \brief Complete information about one object node and its descendency. - - This struct contains the same data as QDBusIntrospection::Object, plus the actual data for the - interfaces and child (sub) objects that was available in the XML document. -*/ - -/*! - \var QDBusIntrospection::ObjectTree::interfaceData - A map of interfaces and their names. -*/ - -/*! - \var QDBusIntrospection::ObjectTree::childObjectData - A map of object paths and their data. The map key contains the relative path to the object. - - Note this map contains only the child notes that do have information about the sub-object's - contents. If the XML data did not contain the information, only the object name will be listed - in childObjects, but not in childObjectData. -*/ - -/*! - \typedef QDBusIntrospection::Annotations - Contains a QMap of an annotation pair. The annotation's name is stored in the QMap key and - must be unique. The annotation's value is stored in the QMap's value and is arbitrary. -*/ - -/*! - \typedef QDBusIntrospection::Arguments - Contains a list of arguments to either a Method or a Signal. The arguments' order is important. -*/ - -/*! - \typedef QDBusIntrospection::Methods - Contains a QMap of methods and their names. The method's name is stored in the map's key and - is not necessarily unique. The order in which multiple methods with the same name are stored - in this map is undefined. -*/ - -/*! - \typedef QDBusIntrospection::Signals - Contains a QMap of signals and their names. The signal's name is stored in the map's key and - is not necessarily unique. The order in which multiple signals with the same name are stored - in this map is undefined. -*/ - -/*! - \typedef QDBusIntrospection::Properties - Contains a QMap of properties and their names. Each property must have a unique name. -*/ - -/*! - \typedef QDBusIntrospection::Interfaces - Contains a QMap of interfaces and their names. Each interface has a unique name. -*/ - -/*! - \typedef QDBusIntrospection::Objects - Contains a QMap of objects and their paths relative to their immediate parent. - - \sa parseObjectTree() -*/ - -/*! - Parses the XML document fragment (given by \a xml) containing one interface. - - The first element tag in this XML data must be either \ or \. If it is - \, then the \ tag must be a child tag of the \ one. - - If there are multiple interfaces in this XML data, it is undefined which one will be - returned. -*/ -QDBusIntrospection::Interface -QDBusIntrospection::parseInterface(const QString &xml) -{ - // be lazy - Interfaces ifs = parseInterfaces(xml); - if (ifs.isEmpty()) - return Interface(); - - // return the first in map order (probably alphabetical order) - return *ifs.constBegin().value(); -} - -/*! - Parses the XML document fragment (given by \a xml) containing several interfaces. - - If the first element tag in this document fragment is \, the interfaces parsed will - be those found as child elements of the \ tag. -*/ -QDBusIntrospection::Interfaces -QDBusIntrospection::parseInterfaces(const QString &xml) -{ - QString null; - QDBusXmlParser parser(null, null, xml); - return parser.interfaces(); -} - -/*! - Parses the XML document fragment (given by \a xml) containing one object, found at the service - \a service and path \a path. - - The first element tag in this document must be \. If that tag does not contain - a name attribute, the \a path argument will be used to determine the path of this - object node. - - This function does not parse the interfaces contained in the node, nor sub-object's contents. - It will only list their names. If you need to know their contents, use parseObjectTree. -*/ -QDBusIntrospection::Object -QDBusIntrospection::parseObject(const QString &xml, const QString &service, const QString &path) -{ - QDBusXmlParser parser(service, path, xml); - QSharedDataPointer retval = parser.object(); - if (!retval) - return QDBusIntrospection::Object(); - return *retval; -} - -/*! - Parses the XML document fragment (given by \a xml) containing one object node and returns all - the information about the interfaces and sub-objects, found at the service \a service and path - \a path. - - The Objects map returned will contain the absolute path names in the key. -*/ -QDBusIntrospection::ObjectTree -QDBusIntrospection::parseObjectTree(const QString &xml, const QString &service, const QString &path) -{ - QDBusXmlParser parser(service, path, xml); - QSharedDataPointer retval = parser.objectTree(); - if (!retval) - return QDBusIntrospection::ObjectTree(); - return *retval; -} diff --git a/qt/qdbusintrospection_p.h b/qt/qdbusintrospection_p.h deleted file mode 100644 index 0e4e9015..00000000 --- a/qt/qdbusintrospection_p.h +++ /dev/null @@ -1,147 +0,0 @@ -/* -*- C++ -*- - * - * Copyright (C) 2006 Trolltech AS. All rights reserved. - * Author: Thiago Macieira - * - * Licensed under the Academic Free License version 2.1 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#ifndef QDBUSINTROSPECTION_H -#define QDBUSINTROSPECTION_H - -#include -#include -#include -#include -#include -#include -#include "qdbusmacros.h" - -class QDBUS_EXPORT QDBusIntrospection -{ -public: - // forward declarations - struct Argument; - struct Method; - struct Signal; - struct Property; - struct Interface; - struct Object; - struct ObjectTree; - - // typedefs - typedef QMap Annotations; - typedef QList Arguments; - typedef QMultiMap Methods; - typedef QMultiMap Signals; - typedef QMap Properties; - typedef QMap > Interfaces; - typedef QMap > Objects; - -public: - // the structs - - struct Argument - { - QString type; - QString name; - - inline bool operator==(const Argument& other) const - { return name == other.name && type == other.type; } - }; - - struct Method - { - QString name; - Arguments inputArgs; - Arguments outputArgs; - Annotations annotations; - - inline bool operator==(const Method& other) const - { return name == other.name && annotations == other.annotations && - inputArgs == other.inputArgs && outputArgs == other.outputArgs; } - }; - - struct Signal - { - QString name; - Arguments outputArgs; - Annotations annotations; - - inline bool operator==(const Signal& other) const - { return name == other.name && annotations == other.annotations && - outputArgs == other.outputArgs; } - }; - - struct Property - { - enum Access { Read, Write, ReadWrite }; - QString name; - QString type; - Access access; - Annotations annotations; - - inline bool operator==(const Property& other) const - { return access == other.access && name == other.name && - annotations == other.annotations && type == other.type; } - }; - - struct Interface: public QSharedData - { - QString name; - QString introspection; - - Annotations annotations; - Methods methods; - Signals signals_; - Properties properties; - - inline bool operator==(const Interface &other) const - { return !name.isEmpty() && name == other.name; } - }; - - struct Object: public QSharedData - { - QString service; - QString path; - QString introspection; - - QStringList interfaces; - QStringList childObjects; - }; - - struct ObjectTree: public Object - { - Interfaces interfaceData; - Objects childObjectData; - }; - -public: - static Interface parseInterface(const QString &xml); - static Interfaces parseInterfaces(const QString &xml); - static Object parseObject(const QString &xml, const QString &service = QString(), - const QString &path = QString()); - static ObjectTree parseObjectTree(const QString &xml, - const QString &service, - const QString &path); - -private: - QDBusIntrospection(); -}; - -#endif diff --git a/qt/qdbusmacros.h b/qt/qdbusmacros.h deleted file mode 100644 index 5b3c7d30..00000000 --- a/qt/qdbusmacros.h +++ /dev/null @@ -1,50 +0,0 @@ -/* qdbusmessage.h QDBusMessage object - * - * Copyright (C) 2005 Harald Fernengel - * Copyright (C) 2006 Trolltech AS. All rights reserved. - * Author: Thiago Macieira - * - * Licensed under the Academic Free License version 2.1 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -/*! - \file qdbusmacros.h -*/ - -#ifndef QDBUSMACROS_H -#define QDBUSMACROS_H - -#include -#include -#include - -#ifdef QT_NO_MEMBER_TEMPLATES -# error Sorry, you need a compiler with support for template member functions to compile QtDBus. -#endif - -#if defined(QDBUS_MAKEDLL) -# define QDBUS_EXPORT Q_DECL_EXPORT -#else -# define QDBUS_EXPORT Q_DECL_IMPORT -#endif - -#ifndef Q_MOC_RUN -# define Q_ASYNC -#endif - -#endif diff --git a/qt/qdbusmarshall.cpp b/qt/qdbusmarshall.cpp deleted file mode 100644 index 8d801524..00000000 --- a/qt/qdbusmarshall.cpp +++ /dev/null @@ -1,554 +0,0 @@ -/* qdbusmarshall.cpp - * - * Copyright (C) 2005 Harald Fernengel - * Copyright (C) 2006 Trolltech AS. All rights reserved. - * Author: Thiago Macieira - * - * Licensed under the Academic Free License version 2.1 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#include "qdbusmarshall_p.h" -#include "qdbustype_p.h" -#include "qdbustypehelper_p.h" - -#include -#include -#include -#include -#include -#include -#include - -#include - -static QVariant qFetchParameter(DBusMessageIter *it); - -template -inline T qIterGet(DBusMessageIter *it) -{ - T t; - dbus_message_iter_get_basic(it, &t); - return t; -} - -template<> -inline QVariant qIterGet(DBusMessageIter *it) -{ - DBusMessageIter sub; - dbus_message_iter_recurse(it, &sub); - return QDBusTypeHelper::toVariant(qFetchParameter(&sub)); -} - -template -inline QVariant qFetchList(DBusMessageIter *arrayIt) -{ - QList list; - - DBusMessageIter it; - dbus_message_iter_recurse(arrayIt, &it); - if (dbus_message_iter_get_array_len(&it) == 0) - return QDBusTypeHelper >::toVariant(list); - - do { - list.append( static_cast( qIterGet(&it) ) ); - } while (dbus_message_iter_next(&it)); - - return QDBusTypeHelper >::toVariant(list); -} - -static QStringList qFetchStringList(DBusMessageIter *arrayIt) -{ - QStringList list; - - DBusMessageIter it; - dbus_message_iter_recurse(arrayIt, &it); - if (dbus_message_iter_get_array_len(&it) == 0) - return list; - - do { - list.append(QString::fromUtf8(qIterGet(&it))); - } while (dbus_message_iter_next(&it)); - - return list; -} - -static QVariant qFetchParameter(DBusMessageIter *it) -{ - switch (dbus_message_iter_get_arg_type(it)) { - case DBUS_TYPE_BYTE: - return qVariantFromValue(qIterGet(it)); - case DBUS_TYPE_INT16: - return qVariantFromValue(qIterGet(it)); - case DBUS_TYPE_UINT16: - return qVariantFromValue(qIterGet(it)); - case DBUS_TYPE_INT32: - return qIterGet(it); - case DBUS_TYPE_UINT32: - return qIterGet(it); - case DBUS_TYPE_DOUBLE: - return qIterGet(it); - case DBUS_TYPE_BOOLEAN: - return bool(qIterGet(it)); - case DBUS_TYPE_INT64: - return static_cast(qIterGet(it)); - case DBUS_TYPE_UINT64: - return static_cast(qIterGet(it)); - case DBUS_TYPE_STRING: - case DBUS_TYPE_OBJECT_PATH: - case DBUS_TYPE_SIGNATURE: - return QString::fromUtf8(qIterGet(it)); - case DBUS_TYPE_VARIANT: - return qIterGet(it); - case DBUS_TYPE_ARRAY: { - int arrayType = dbus_message_iter_get_element_type(it); - switch (arrayType) - { - case DBUS_TYPE_BYTE: { - // QByteArray - DBusMessageIter sub; - dbus_message_iter_recurse(it, &sub); - int len = dbus_message_iter_get_array_len(&sub); - char* data; - dbus_message_iter_get_fixed_array(&sub,&data,&len); - return QByteArray(data,len); - } - case DBUS_TYPE_INT16: - return qFetchList(it); - case DBUS_TYPE_UINT16: - return qFetchList(it); - case DBUS_TYPE_INT32: - return qFetchList(it); - case DBUS_TYPE_UINT32: - return qFetchList(it); - case DBUS_TYPE_BOOLEAN: - return qFetchList(it); - case DBUS_TYPE_DOUBLE: - return qFetchList(it); - case DBUS_TYPE_INT64: - return qFetchList(it); - case DBUS_TYPE_UINT64: - return qFetchList(it); - case DBUS_TYPE_STRING: - case DBUS_TYPE_OBJECT_PATH: - case DBUS_TYPE_SIGNATURE: - return qFetchStringList(it); - case DBUS_TYPE_VARIANT: - return qFetchList(it); - case DBUS_TYPE_DICT_ENTRY: { - // ### support other types of maps? - QMap map; - DBusMessageIter sub; - - dbus_message_iter_recurse(it, &sub); - if (dbus_message_iter_get_array_len(&sub) == 0) - // empty map - return map; - - do { - DBusMessageIter itemIter; - dbus_message_iter_recurse(&sub, &itemIter); - Q_ASSERT(dbus_message_iter_has_next(&itemIter)); - QString key = qFetchParameter(&itemIter).toString(); - dbus_message_iter_next(&itemIter); - map.insertMulti(key, qFetchParameter(&itemIter)); - } while (dbus_message_iter_next(&sub)); - return map; - } - } - } - // fall through - // common handling for structs and lists of lists (for now) - case DBUS_TYPE_STRUCT: { - QList list; - DBusMessageIter sub; - dbus_message_iter_recurse(it, &sub); - if (dbus_message_iter_get_array_len(&sub) == 0) - return list; - do { - list.append(qFetchParameter(&sub)); - } while (dbus_message_iter_next(&sub)); - return list; - } - - default: - qWarning("Don't know how to handle type %d '%c'", dbus_message_iter_get_arg_type(it), dbus_message_iter_get_arg_type(it)); - return QVariant(); - break; - } -} - -void QDBusMarshall::messageToList(QList &list, DBusMessage *message) -{ - Q_ASSERT(message); - - DBusMessageIter it; - if (!dbus_message_iter_init(message, &it)) - return; - - do { - list.append(qFetchParameter(&it)); - } while (dbus_message_iter_next(&it)); -} - -// convert the variant to the given type and return true if it worked. -// if the type is not known, guess it from the variant and set. -// return false if conversion failed. -static bool checkType(QVariant &var, QDBusType &type) -{ - if (!type.isValid()) { - // guess it from the variant - type = QDBusType::guessFromVariant(var); - return true; - } - - int id = var.userType(); - - if (type.dbusType() == DBUS_TYPE_VARIANT) { - // this is a non symmetrical operation: - // nest a QVariant if we want variant and it isn't so - if (id != QDBusTypeHelper::id()) { - QVariant tmp = var; - var = QDBusTypeHelper::toVariant(tmp); - } - return true; - } - - switch (id) { - case QVariant::Bool: - case QMetaType::Short: - case QMetaType::UShort: - case QMetaType::UChar: - case QVariant::Int: - case QVariant::UInt: - case QVariant::LongLong: - case QVariant::ULongLong: - case QVariant::Double: - case QVariant::String: - if (type.isBasic()) - // QVariant can handle this on its own - return true; - - // cannot handle this - qWarning("Invalid conversion from %s to '%s'", var.typeName(), - type.dbusSignature().constData()); - var.clear(); - return false; - - case QVariant::ByteArray: - // make sure it's an "ARRAY of BYTE" - if (type.qvariantType() != QVariant::ByteArray) { - qWarning("Invalid conversion from %s to '%s'", var.typeName(), - type.dbusSignature().constData()); - var.clear(); - return false; - } - return true; - - case QVariant::StringList: - // make sure it's "ARRAY of STRING" - if (type.qvariantType() != QVariant::StringList) { - qWarning("Invalid conversion from %s to '%s'", var.typeName(), - type.dbusSignature().constData()); - var.clear(); - return false; - } - return true; - - case QVariant::List: - // could be either struct or array - if (type.dbusType() != DBUS_TYPE_ARRAY && type.dbusType() != DBUS_TYPE_STRUCT) { - qWarning("Invalid conversion from %s to '%s'", var.typeName(), - type.dbusSignature().constData()); - var.clear(); - return false; - } - - return true; - - case QVariant::Map: - if (!type.isMap()) { - qWarning("Invalid conversion from %s to '%s'", var.typeName(), - type.dbusSignature().constData()); - var.clear(); - return false; - } - - return true; - - case QVariant::Invalid: { - // create an empty variant - void *null = 0; - var = QVariant(type.qvariantType(), null); - break; - } - - default: - if (id == QDBusTypeHelper::id()) { - // if we got here, it means the match above for DBUS_TYPE_VARIANT didn't work - qWarning("Invalid conversion from nested variant to '%s'", - type.dbusSignature().constData()); - return false; - } else if (type.dbusType() == DBUS_TYPE_ARRAY) { - int subType = type.arrayElement().dbusType(); - if ((id == QDBusTypeHelper::listId() && subType == DBUS_TYPE_BOOLEAN) || - (id == QDBusTypeHelper::listId() && subType == DBUS_TYPE_INT16) || - (id == QDBusTypeHelper::listId() && subType == DBUS_TYPE_UINT16) || - (id == QDBusTypeHelper::listId() && subType == DBUS_TYPE_INT32) || - (id == QDBusTypeHelper::listId() && subType == DBUS_TYPE_UINT32) || - (id == QDBusTypeHelper::listId() && subType == DBUS_TYPE_INT64) || - (id == QDBusTypeHelper::listId() && subType == DBUS_TYPE_UINT64) || - (id == QDBusTypeHelper::listId() && subType == DBUS_TYPE_DOUBLE)) - return true; - } - - qWarning("Invalid conversion from %s to '%s'", var.typeName(), - type.dbusSignature().constData()); - return false; - } - - qWarning("Found unknown QVariant type %d (%s) when converting to DBus", (int)var.type(), - var.typeName()); - var.clear(); - return false; -} - -static void qVariantToIteratorInternal(DBusMessageIter *it, const QVariant &var, - const QDBusType &type); - -static void qListToIterator(DBusMessageIter *it, const QList &list, - const QDBusTypeList &list); - -template -static void qIterAppend(DBusMessageIter *it, const QDBusType &type, T arg) -{ - dbus_message_iter_append_basic(it, type.dbusType(), &arg); -} - -template -static void qAppendListToMessage(DBusMessageIter *it, const QDBusType &subType, - const QVariant &var) -{ - QList list = QDBusTypeHelper >::fromVariant(var); - foreach (const QtType &item, list) - qIterAppend(it, subType, static_cast(item)); -} - -static void qAppendArrayToMessage(DBusMessageIter *it, const QDBusType &subType, - const QVariant &var) -{ - DBusMessageIter sub; - dbus_message_iter_open_container(it, DBUS_TYPE_ARRAY, subType.dbusSignature(), &sub); - - switch (var.type()) - { - case QVariant::StringList: { - const QStringList list = var.toStringList(); - foreach (QString str, list) - qIterAppend(&sub, subType, str.toUtf8().constData()); - break; - } - - case QVariant::ByteArray: { - const QByteArray array = var.toByteArray(); - const char* cdata = array.constData(); - dbus_message_iter_append_fixed_array(&sub, DBUS_TYPE_BYTE, &cdata, array.length()); - break; - } - - case QVariant::Map: { - const QVariantMap map = var.toMap(); - const QDBusTypeList& subTypes = subType.subTypes(); - for (QMap::const_iterator mit = map.constBegin(); - mit != map.constEnd(); ++mit) { - DBusMessageIter itemIterator; - dbus_message_iter_open_container(&sub, DBUS_TYPE_DICT_ENTRY, 0, &itemIterator); - - // let the string be converted to QVariant - qVariantToIteratorInternal(&itemIterator, mit.key(), subTypes[0]); - qVariantToIteratorInternal(&itemIterator, mit.value(), subTypes[1]); - - dbus_message_iter_close_container(&sub, &itemIterator); - } - break; - } - - case QVariant::List: { - const QVariantList list = var.toList(); - foreach (QVariant v, list) - qVariantToIteratorInternal(&sub, v, subType); - break; - } - - default: { - int id = var.userType(); - if (id == QDBusTypeHelper::listId()) - qAppendListToMessage(&sub, subType, var); - else if (id == QDBusTypeHelper::listId()) - qAppendListToMessage(&sub, subType, var); - else if (id == QDBusTypeHelper::listId()) - qAppendListToMessage(&sub, subType, var); - else if (id == QDBusTypeHelper::listId()) - qAppendListToMessage(&sub, subType, var); - else if (id == QDBusTypeHelper::listId()) - qAppendListToMessage(&sub, subType, var); - else if (id == QDBusTypeHelper::listId()) - qAppendListToMessage(&sub, subType, var); - else if (id == QDBusTypeHelper::listId()) - qAppendListToMessage(&sub, subType, var); - else if (id == QDBusTypeHelper::listId()) - qAppendListToMessage(&sub, subType, var); -#if 0 // never reached, since QVariant::List mached - else if (id == QDBusTypeHelper::listId()) - qAppendListToMessage(&sub, subType, var); -#endif - else - qFatal("qAppendArrayToMessage got unknown type!"); - break; - } - } - - dbus_message_iter_close_container(it, &sub); -} - -static void qAppendStructToMessage(DBusMessageIter *it, const QDBusTypeList &typeList, - const QVariantList &list) -{ - DBusMessageIter sub; - dbus_message_iter_open_container(it, DBUS_TYPE_STRUCT, NULL, &sub); - qListToIterator(&sub, list, typeList); - dbus_message_iter_close_container(it, &sub); -} - -static void qAppendVariantToMessage(DBusMessageIter *it, const QDBusType &type, - const QVariant &var) -{ - Q_UNUSED(type); // type is 'v' - - QVariant arg = var; - if (var.userType() == QDBusTypeHelper::id()) - arg = QDBusTypeHelper::fromVariant(var); // extract the inner variant - - QDBusType t = QDBusType::guessFromVariant(arg); - - // now add this variant - DBusMessageIter sub; - dbus_message_iter_open_container(it, DBUS_TYPE_VARIANT, t.dbusSignature(), &sub); - qVariantToIteratorInternal(&sub, arg, t); - dbus_message_iter_close_container(it, &sub); -} - -static void qVariantToIterator(DBusMessageIter *it, QVariant var, QDBusType type) -{ - if (var.isNull() && !type.isValid()) - return; // cannot add a null like this - if (!checkType(var, type)) - return; // type checking failed - - qVariantToIteratorInternal(it, var, type); -} - -static void qVariantToIteratorInternal(DBusMessageIter *it, const QVariant &var, - const QDBusType &type) -{ - switch (type.dbusType()) { - case DBUS_TYPE_BYTE: - qIterAppend( it, type, QDBusTypeHelper::fromVariant(var) ); - break; - case DBUS_TYPE_BOOLEAN: - qIterAppend( it, type, static_cast(var.toBool()) ); - break; - case DBUS_TYPE_INT16: - qIterAppend( it, type, QDBusTypeHelper::fromVariant(var) ); - break; - case DBUS_TYPE_UINT16: - qIterAppend( it, type, QDBusTypeHelper::fromVariant(var) ); - break; - case DBUS_TYPE_INT32: - qIterAppend( it, type, static_cast(var.toInt()) ); - break; - case DBUS_TYPE_UINT32: - qIterAppend( it, type, static_cast(var.toUInt()) ); - break; - case DBUS_TYPE_INT64: - qIterAppend( it, type, static_cast(var.toLongLong()) ); - break; - case DBUS_TYPE_UINT64: - qIterAppend( it, type, static_cast(var.toULongLong()) ); - break; - case DBUS_TYPE_DOUBLE: - qIterAppend( it, type, var.toDouble() ); - break; - case DBUS_TYPE_STRING: - case DBUS_TYPE_OBJECT_PATH: - case DBUS_TYPE_SIGNATURE: - qIterAppend( it, type, var.toString().toUtf8().constData() ); - break; - - // compound types: - case DBUS_TYPE_ARRAY: - // could be many things - qAppendArrayToMessage( it, type.arrayElement(), var ); - break; - - case DBUS_TYPE_VARIANT: - qAppendVariantToMessage( it, type, var ); - break; - - case DBUS_TYPE_STRUCT: - qAppendStructToMessage( it, type.subTypes(), var.toList() ); - break; - - case DBUS_TYPE_DICT_ENTRY: - qFatal("qVariantToIterator got a DICT_ENTRY!"); - break; - - default: - qWarning("Found unknown DBus type '%s'", type.dbusSignature().constData()); - break; - } -} - -void qListToIterator(DBusMessageIter *it, const QList &list) -{ - for (int i = 0; i < list.count(); ++i) - qVariantToIterator(it, list.at(i), QDBusType()); -} - -void qListToIterator(DBusMessageIter *it, const QList &list, const QDBusTypeList &types) -{ - int min = qMin(list.count(), types.count()); - for (int i = 0; i < min; ++i) - qVariantToIterator(it, list.at(i), types.at(i)); - - for (int i = min; i < types.count(); ++i) - // we're missing a few arguments, so add default parameters - qVariantToIterator(it, QVariant(), types.at(i)); -} - -void QDBusMarshall::listToMessage(const QList &list, DBusMessage *msg, - const QString &signature) -{ - Q_ASSERT(msg); - DBusMessageIter it; - dbus_message_iter_init_append(msg, &it); - - if (signature.isEmpty()) - qListToIterator(&it, list); - else - qListToIterator(&it, list, QDBusTypeList(signature.toUtf8())); -} diff --git a/qt/qdbusmarshall_p.h b/qt/qdbusmarshall_p.h deleted file mode 100644 index 7a2d46f5..00000000 --- a/qt/qdbusmarshall_p.h +++ /dev/null @@ -1,57 +0,0 @@ -/* qdbusmarshall_p.h QDBusMarshall object - * - * Copyright (C) 2005 Harald Fernengel - * Copyright (C) 2006 Trolltech AS. All rights reserved. - * Author: Thiago Macieira - * - * Licensed under the Academic Free License version 2.1 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -// -// W A R N I N G -// ------------- -// -// This file is not part of the public API. This header file may -// change from version to version without notice, or even be -// removed. -// -// We mean it. -// -// - -#ifndef QDBUSMARSHALLPRIVATE_H -#define QDBUSMARSHALLPRIVATE_H - -struct DBusMessage; - -template class QList; -class QVariant; -class QString; - -/*! - \internal -*/ -class QDBusMarshall -{ -public: - static void listToMessage(const QList &list, DBusMessage *message, - const QString& signature); - static void messageToList(QList &list, DBusMessage *message); -}; - -#endif diff --git a/qt/qdbusmessage.cpp b/qt/qdbusmessage.cpp deleted file mode 100644 index d0a0f1e5..00000000 --- a/qt/qdbusmessage.cpp +++ /dev/null @@ -1,706 +0,0 @@ -/* qdbusmessage.cpp - * - * Copyright (C) 2005 Harald Fernengel - * Copyright (C) 2006 Trolltech AS. All rights reserved. - * Author: Thiago Macieira - * - * Licensed under the Academic Free License version 2.1 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#include "qdbusmessage.h" - -#include -#include - -#include - -#include "qdbuserror.h" -#include "qdbusmarshall_p.h" -#include "qdbusmessage_p.h" -#include "qdbustypehelper_p.h" - -QDBusMessagePrivate::QDBusMessagePrivate() - : connection(QString()), msg(0), reply(0), type(DBUS_MESSAGE_TYPE_INVALID), - timeout(-1), ref(1), repliedTo(false) -{ -} - -QDBusMessagePrivate::~QDBusMessagePrivate() -{ - if (msg) - dbus_message_unref(msg); - if (reply) - dbus_message_unref(reply); -} - -/////////////// -/*! - \class QDBusMessage - \brief Represents one message sent or received over the DBus bus. - - This object can represent any of four different types of messages possible on the bus - (see MessageType) - \list - \o Method calls - \o Method return values - \o Signal emissions - \o Error codes - \endlist - - Objects of this type are created with the four static functions signal, methodCall, - methodReply and error. -*/ - -/*! - \enum QDBusMessage::MessageType - The possible message types: - - \value MethodCallMessage a message representing an outgoing or incoming method call - \value SignalMessage a message representing an outgoing or incoming signal emission - \value ReplyMessage a message representing the return values of a method call - \value ErrorMessage a message representing an error condition in response to a method call - \value InvalidMessage an invalid message: this is never set on messages received from D-Bus -*/ - -/*! - Constructs a new DBus message representing a signal emission. A DBus signal is emitted - from one application and is received by all applications that are listening for that signal - from that interface. - - The signal will be constructed to represent a signal coming from the path \a path, interface \a - interface and signal name \a name. - - The QDBusMessage object that is returned can be sent with QDBusConnection::send(). -*/ -QDBusMessage QDBusMessage::signal(const QString &path, const QString &interface, - const QString &name) -{ - QDBusMessage message; - message.d_ptr->type = DBUS_MESSAGE_TYPE_SIGNAL; - message.d_ptr->path = path; - message.d_ptr->interface = interface; - message.d_ptr->name = name; - - return message; -} - -/*! - Constructs a new DBus message representing a method call. A method call always informs - its destination address (\a service, \a path, \a interface and \a method). - - The DBus bus allows calling a method on a given remote object without specifying the - destination interface, if the method name is unique. However, if two interfaces on the - remote object export the same method name, the result is undefined (one of the two may be - called or an error may be returned). - - When using DBus in a peer-to-peer context (i.e., not on a bus), the \a service parameter is - optional. - - The QDBusObject and QDBusInterface classes provide a simpler abstraction to synchronous - method calling. - - This function returns a QDBusMessage object that can be sent with QDBusConnection::send(), - QDBusConnection::sendWithReply(), or QDBusConnection::sendWithReplyAsync(). -*/ -QDBusMessage QDBusMessage::methodCall(const QString &service, const QString &path, - const QString &interface, const QString &method) -{ - QDBusMessage message; - message.d_ptr->type = DBUS_MESSAGE_TYPE_METHOD_CALL; - message.d_ptr->service = service; - message.d_ptr->path = path; - message.d_ptr->interface = interface; - message.d_ptr->name = method; - - return message; -} - -/*! - Constructs a new DBus message representing the return values from a called method. The \a other - variable represents the method call that the reply will be for. - - This function returns a QDBusMessage object that can be sent with QDBusConnection::send(). -*/ -QDBusMessage QDBusMessage::methodReply(const QDBusMessage &other) -{ - Q_ASSERT(other.d_ptr->msg); - - QDBusMessage message; - message.d_ptr->connection = other.d_ptr->connection; - message.d_ptr->type = DBUS_MESSAGE_TYPE_METHOD_RETURN; - message.d_ptr->reply = dbus_message_ref(other.d_ptr->msg); - other.d_ptr->repliedTo = true; - - return message; -} - -/*! - Constructs a DBus message representing an error condition described by the \a name - parameter. The \a msg parameter is optional and may contain a human-readable description of the - error. The \a other variable represents the method call that this error relates to. - - This function returns a QDBusMessage object that can be sent with QDBusMessage::send(). -*/ -QDBusMessage QDBusMessage::error(const QDBusMessage &other, const QString &name, - const QString &msg) -{ - Q_ASSERT(other.d_ptr->msg); - - QDBusMessage message; - message.d_ptr->connection = other.d_ptr->connection; - message.d_ptr->type = DBUS_MESSAGE_TYPE_ERROR; - message.d_ptr->name = name; - message.d_ptr->message = msg; - message.d_ptr->reply = dbus_message_ref(other.d_ptr->msg); - other.d_ptr->repliedTo = true; - - return message; -} - -/*! - \overload - Constructs a DBus message representing an error, where \a other is the method call that - generated this error and \a error is the error code. -*/ -QDBusMessage QDBusMessage::error(const QDBusMessage &other, const QDBusError &error) -{ - Q_ASSERT(other.d_ptr->msg); - - QDBusMessage message; - message.d_ptr->connection = other.d_ptr->connection; - message.d_ptr->type = DBUS_MESSAGE_TYPE_ERROR; - message.d_ptr->name = error.name(); - message.d_ptr->message = error.message(); - message.d_ptr->reply = dbus_message_ref(other.d_ptr->msg); - other.d_ptr->repliedTo = true; - - return message; -} - -/*! - Constructs an empty, invalid QDBusMessage object. - - \sa methodCall(), methodReply(), signal(), error() -*/ -QDBusMessage::QDBusMessage() -{ - d_ptr = new QDBusMessagePrivate; -} - -/*! - Constructs a copy of the object given by \a other. -*/ -QDBusMessage::QDBusMessage(const QDBusMessage &other) - : QList(other) -{ - d_ptr = other.d_ptr; - d_ptr->ref.ref(); -} - -/*! - Disposes of the object and frees any resources that were being held. -*/ -QDBusMessage::~QDBusMessage() -{ - if (!d_ptr->ref.deref()) - delete d_ptr; -} - -/*! - Copies the contents of the object given by \a other. -*/ -QDBusMessage &QDBusMessage::operator=(const QDBusMessage &other) -{ - QList::operator=(other); - qAtomicAssign(d_ptr, other.d_ptr); - return *this; -} - -static inline const char *data(const QByteArray &arr) -{ - return arr.isEmpty() ? 0 : arr.constData(); -} - -/*! - \internal - Constructs a DBusMessage object from this object. The returned value must be de-referenced - with dbus_message_unref. -*/ -DBusMessage *QDBusMessage::toDBusMessage() const -{ - DBusMessage *msg = 0; - - switch (d_ptr->type) { - case DBUS_MESSAGE_TYPE_METHOD_CALL: - msg = dbus_message_new_method_call(data(d_ptr->service.toUtf8()), data(d_ptr->path.toUtf8()), - data(d_ptr->interface.toUtf8()), data(d_ptr->name.toUtf8())); - break; - case DBUS_MESSAGE_TYPE_SIGNAL: - msg = dbus_message_new_signal(data(d_ptr->path.toUtf8()), data(d_ptr->interface.toUtf8()), - data(d_ptr->name.toUtf8())); - break; - case DBUS_MESSAGE_TYPE_METHOD_RETURN: - msg = dbus_message_new_method_return(d_ptr->reply); - break; - case DBUS_MESSAGE_TYPE_ERROR: - msg = dbus_message_new_error(d_ptr->reply, data(d_ptr->name.toUtf8()), data(d_ptr->message.toUtf8())); - break; - } - if (!msg) - return 0; - - QDBusMarshall::listToMessage(*this, msg, d_ptr->signature); - return msg; -} - -/*! - \internal - Constructs a QDBusMessage by parsing the given DBusMessage object. -*/ -QDBusMessage QDBusMessage::fromDBusMessage(DBusMessage *dmsg, const QDBusConnection &connection) -{ - QDBusMessage message; - if (!dmsg) - return message; - - message.d_ptr->connection = connection; - message.d_ptr->type = dbus_message_get_type(dmsg); - message.d_ptr->path = QString::fromUtf8(dbus_message_get_path(dmsg)); - message.d_ptr->interface = QString::fromUtf8(dbus_message_get_interface(dmsg)); - message.d_ptr->name = message.d_ptr->type == DBUS_MESSAGE_TYPE_ERROR ? - QString::fromUtf8(dbus_message_get_error_name(dmsg)) : - QString::fromUtf8(dbus_message_get_member(dmsg)); - message.d_ptr->service = QString::fromUtf8(dbus_message_get_sender(dmsg)); - message.d_ptr->signature = QString::fromUtf8(dbus_message_get_signature(dmsg)); - message.d_ptr->msg = dbus_message_ref(dmsg); - - QDBusMarshall::messageToList(message, dmsg); - return message; -} - -/*! - Creates a QDBusMessage that represents the same error as the QDBusError object. -*/ -QDBusMessage QDBusMessage::fromError(const QDBusError &error) -{ - QDBusMessage message; - message.d_ptr->type = DBUS_MESSAGE_TYPE_ERROR; - message.d_ptr->name = error.name(); - message << error.message(); - return message; -} - -/*! - Returns the path of the object that this message is being sent to (in the case of a - method call) or being received from (for a signal). -*/ -QString QDBusMessage::path() const -{ - return d_ptr->path; -} - -/*! - Returns the interface of the method being called (in the case of a method call) or of - the signal being received from. -*/ -QString QDBusMessage::interface() const -{ - return d_ptr->interface; -} - -/*! - Returns the name of the signal that was emitted or the name of the error that was - received. - \sa member() -*/ -QString QDBusMessage::name() const -{ - return d_ptr->name; -} - -/*! - \fn QDBusMessage::member() const - Returns the name of the method being called. -*/ - -/*! - \fn QDBusMessage::method() const - \overload - Returns the name of the method being called. -*/ - -/*! - Returns the name of the service or the bus address of the remote method call. -*/ -QString QDBusMessage::service() const -{ - return d_ptr->service; -} - -/*! - \fn QDBusMessage::sender() const - Returns the unique name of the remote sender. -*/ - -/*! - Returns the timeout (in milliseconds) for this message to be processed. -*/ -int QDBusMessage::timeout() const -{ - return d_ptr->timeout; -} - -/*! - Sets the timeout for this message to be processed, given by \a ms, in milliseconds. -*/ -void QDBusMessage::setTimeout(int ms) -{ - qAtomicDetach(d_ptr); - d_ptr->timeout = ms; -} - -/*! - Returns the flag that indicates if this message should see a reply or not. This is only - meaningful for MethodCall messages: any other kind of message cannot have replies and this - function will always return false for them. -*/ -bool QDBusMessage::noReply() const -{ - if (!d_ptr->msg) - return false; - return dbus_message_get_no_reply(d_ptr->msg); -} - -/*! - Returns the unique serial number assigned to this message - or 0 if the message was not sent yet. - */ -int QDBusMessage::serialNumber() const -{ - if (!d_ptr->msg) - return 0; - return dbus_message_get_serial(d_ptr->msg); -} - -/*! - Returns the unique serial number assigned to the message - that triggered this reply message. - - If this message is not a reply to another message, 0 - is returned. - - */ -int QDBusMessage::replySerialNumber() const -{ - if (!d_ptr->msg) - return 0; - return dbus_message_get_reply_serial(d_ptr->msg); -} - -/*! - Returns true if this is a MethodCall message and a reply for it has been generated using - QDBusMessage::methodReply or QDBusMessage::error. -*/ -bool QDBusMessage::wasRepliedTo() const -{ - return d_ptr->repliedTo; -} - -/*! - Returns the signature of the signal that was received or for the output arguments - of a method call. -*/ -QString QDBusMessage::signature() const -{ - return d_ptr->signature; -} - -/*! - Sets the signature for the output arguments of this method call to be the value of \a - signature. This function has no meaning in other types of messages or when dealing with received - method calls. - - A message's signature indicate the type of the parameters to - be marshalled over the bus. If there are more arguments than entries in the signature, the - tailing arguments will be silently dropped and not sent. If there are less arguments, - default values will be inserted (default values are those created by QVariant::convert - when a variant of type QVariant::Invalid is converted to the type). - -*/ -void QDBusMessage::setSignature(const QString &signature) -{ - qAtomicDetach(d_ptr); - d_ptr->signature = signature; -} - -/*! - Returns the connection this message was received on or an unconnected QDBusConnection object if - this isn't a message that has been received. -*/ -QDBusConnection QDBusMessage::connection() const -{ - return d_ptr->connection; -} - -/*! - Returns the message type. -*/ -QDBusMessage::MessageType QDBusMessage::type() const -{ - switch (d_ptr->type) { - case DBUS_MESSAGE_TYPE_METHOD_CALL: - return MethodCallMessage; - case DBUS_MESSAGE_TYPE_METHOD_RETURN: - return ReplyMessage; - case DBUS_MESSAGE_TYPE_ERROR: - return ErrorMessage; - case DBUS_MESSAGE_TYPE_SIGNAL: - return SignalMessage; - default: - return InvalidMessage; - } -} - -// Document QDBusReply here -/*! - \class QDBusReply - \brief The reply for a method call to a remote object. - - A QDBusReply object is a subset of the QDBusMessage object that represents a method call's - reply. It contains only the first output argument or the error code and is used by - QDBusInterface-derived classes to allow returning the error code as the function's return - argument. - - It can be used in the following manner: - \code - QDBusReply reply = interface->call("RemoteMethod"); - if (reply.isSuccess()) - // use the returned value - useValue(reply.value()); - else - // call failed. Show an error condition. - showError(reply.error()); - \endcode - - If the remote method call cannot fail, you can skip the error checking: - \code - QString reply = interface->call("RemoteMethod"); - \endcode - - However, if it does fail under those conditions, the value returned by QDBusReply::value() is - undefined. It may be undistinguishable from a valid return value. - - QDBusReply objects are used for remote calls that have no output arguments or return values - (i.e., they have a "void" return type). In this case, you can only test if the reply succeeded - or not, by calling isError() and isSuccess(), and inspecting the error condition by calling - error(). You cannot call value(). - - \sa QDBusMessage, QDBusInterface -*/ - -/*! - \fn QDBusReply::QDBusReply(const QDBusMessage &reply) - Automatically construct a QDBusReply object from the reply message \a reply, extracting the - first return value from it if it is a success reply. -*/ - -/*! - \fn QDBusReply::QDBusReply(const QDBusError &error) - Constructs an error reply from the D-Bus error code given by \a error. -*/ - -/*! - \fn QDBusReply::isError() const - Returns true if this reply is an error reply. You can extract the error contents using the - error() function. -*/ - -/*! - \fn QDBusReply::isSuccess() const - Returns true if this reply is a normal error reply (not an error). You can extract the returned - value with value() -*/ - -/*! - \fn QDBusReply::error() - Returns the error code that was returned from the remote function call. If the remote call did - not return an error (i.e., if it succeeded), then the QDBusError object that is returned will - not be a valid error code (QDBusError::isValid() will return false). -*/ - -/*! - \fn QDBusReply::value() - Returns the remote function's calls return value. If the remote call returned with an error, - the return value of this function is undefined and may be undistinguishable from a valid return - value. - - This function is not available if the remote call returns \c void. -*/ - -/*! - \fn QDBusReply::operator Type() - Returns the same as value(). - - This function is not available if the remote call returns \c void. -*/ - -/*! - \internal - \fn QDBusReply::fromVariant(const QDBusReply &variantReply) - Converts the QDBusReply object to this type by converting the variant contained in - \a variantReply to the template's type and copying the error condition. - - If the QVariant in variantReply is not convertible to this type, it will assume an undefined - value. -*/ - -#ifndef QT_NO_DEBUG -QDebug operator<<(QDebug dbg, QDBusMessage::MessageType t) -{ - switch (t) - { - case QDBusMessage::MethodCallMessage: - return dbg << "MethodCall"; - case QDBusMessage::ReplyMessage: - return dbg << "MethodReturn"; - case QDBusMessage::SignalMessage: - return dbg << "Signal"; - case QDBusMessage::ErrorMessage: - return dbg << "Error"; - default: - return dbg << "Invalid"; - } -} - -static void debugVariantList(QDebug dbg, const QVariantList &list); -static void debugVariantMap(QDebug dbg, const QVariantMap &map); - -static void debugVariant(QDebug dbg, const QVariant &v) -{ - dbg.nospace() << v.typeName() << "("; - switch (v.userType()) - { - case QVariant::Bool: - dbg.nospace() << v.toBool(); - break; - case QMetaType::UChar: - dbg.nospace() << qvariant_cast(v); - break; - case QMetaType::Short: - dbg.nospace() << qvariant_cast(v); - break; - case QMetaType::UShort: - dbg.nospace() << qvariant_cast(v); - break; - case QVariant::Int: - dbg.nospace() << v.toInt(); - break; - case QVariant::UInt: - dbg.nospace() << v.toUInt(); - break; - case QVariant::LongLong: - dbg.nospace() << v.toLongLong(); - break; - case QVariant::ULongLong: - dbg.nospace() << v.toULongLong(); - break; - case QVariant::Double: - dbg.nospace() << v.toDouble(); - break; - case QVariant::String: - dbg.nospace() << v.toString(); - break; - case QVariant::ByteArray: - dbg.nospace() << v.toByteArray(); - break; - case QVariant::StringList: - dbg.nospace() << v.toStringList(); - break; - case QVariant::List: - debugVariantList(dbg, v.toList()); - break; - case QVariant::Map: - debugVariantMap(dbg, v.toMap()); - break; - - default: { - int id = v.userType(); - if (id == QDBusTypeHelper::id()) - debugVariant(dbg, QDBusTypeHelper::fromVariant(v)); - else if (id == QDBusTypeHelper::listId()) - dbg.nospace() << QDBusTypeHelper >::fromVariant(v); - else if (id == QDBusTypeHelper::listId()) - dbg.nospace() << QDBusTypeHelper >::fromVariant(v); - else if (id == QDBusTypeHelper::listId()) - dbg.nospace() << QDBusTypeHelper >::fromVariant(v); - else if (id == QDBusTypeHelper::listId()) - dbg.nospace() << QDBusTypeHelper >::fromVariant(v); - else if (id == QDBusTypeHelper::listId()) - dbg.nospace() << QDBusTypeHelper >::fromVariant(v); - else if (id == QDBusTypeHelper::listId()) - dbg.nospace() << QDBusTypeHelper >::fromVariant(v); - else if (id == QDBusTypeHelper::listId()) - dbg.nospace() << QDBusTypeHelper >::fromVariant(v); - else if (id == QDBusTypeHelper::listId()) - dbg.nospace() << QDBusTypeHelper >::fromVariant(v); - else - dbg.nospace() << "unknown"; - } - } - dbg.nospace() << ")"; -} - -static void debugVariantList(QDebug dbg, const QVariantList &list) -{ - bool first = true; - QVariantList::ConstIterator it = list.constBegin(); - QVariantList::ConstIterator end = list.constEnd(); - for ( ; it != end; ++it) { - if (!first) - dbg.nospace() << ", "; - debugVariant(dbg, *it); - first = false; - } -} - -static void debugVariantMap(QDebug dbg, const QVariantMap &map) -{ - QVariantMap::ConstIterator it = map.constBegin(); - QVariantMap::ConstIterator end = map.constEnd(); - for ( ; it != end; ++it) { - dbg << "(" << it.key() << ", "; - debugVariant(dbg, it.value()); - dbg << ") "; - } -} - -QDebug operator<<(QDebug dbg, const QDBusMessage &msg) -{ - dbg.nospace() << "QDBusMessage(type=" << msg.type() - << ", service=" << msg.service() - << ", path=" << msg.path() - << ", interface=" << msg.interface() - << ", name=" << msg.name() - << ", signature=" << msg.signature() - << ", contents=("; - debugVariantList(dbg, msg); - dbg.nospace() << " ) )"; - return dbg.space(); -} -#endif - diff --git a/qt/qdbusmessage.h b/qt/qdbusmessage.h deleted file mode 100644 index f8feeae4..00000000 --- a/qt/qdbusmessage.h +++ /dev/null @@ -1,99 +0,0 @@ -/* qdbusmessage.h QDBusMessage object - * - * Copyright (C) 2005 Harald Fernengel - * Copyright (C) 2006 Trolltech AS. All rights reserved. - * Author: Thiago Macieira - * - * Licensed under the Academic Free License version 2.1 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#ifndef QDBUSMESSAGE_H -#define QDBUSMESSAGE_H - -#include "qdbusmacros.h" -#include "qdbuserror.h" -#include -#include - -#include - -class QDBusMessagePrivate; -class QDBusConnection; -class QDBusConnectionPrivate; -struct DBusMessage; - -class QDBUS_EXPORT QDBusMessage: public QList -{ - //friend class QDBusConnection; - friend class QDBusConnectionPrivate; -public: - enum { DefaultTimeout = -1, NoTimeout = INT_MAX}; - enum MessageType { InvalidMessage, MethodCallMessage, ReplyMessage, - ErrorMessage, SignalMessage }; - - QDBusMessage(); - QDBusMessage(const QDBusMessage &other); - ~QDBusMessage(); - - QDBusMessage &operator=(const QDBusMessage &other); - - static QDBusMessage signal(const QString &path, const QString &interface, - const QString &name); - static QDBusMessage methodCall(const QString &destination, const QString &path, - const QString &interface, const QString &method); - static QDBusMessage methodReply(const QDBusMessage &other); - static QDBusMessage error(const QDBusMessage &other, const QString &name, - const QString &message = QString()); - static QDBusMessage error(const QDBusMessage &other, const QDBusError &error); - - QString path() const; - QString interface() const; - QString name() const; - inline QString member() const { return name(); } - inline QString method() const { return name(); } - QString service() const; - inline QString sender() const { return service(); } - MessageType type() const; - - int timeout() const; - void setTimeout(int ms); - - bool noReply() const; - - QString signature() const; - void setSignature(const QString &signature); - - QDBusConnection connection() const; - - int serialNumber() const; - int replySerialNumber() const; - bool wasRepliedTo() const; - -private: - DBusMessage *toDBusMessage() const; - static QDBusMessage fromDBusMessage(DBusMessage *dmsg, const QDBusConnection &connection); - static QDBusMessage fromError(const QDBusError& error); - QDBusMessagePrivate *d_ptr; -}; - -#ifndef QT_NO_DEBUG -QDebug operator<<(QDebug, const QDBusMessage &); -#endif - -#endif - diff --git a/qt/qdbusmessage_p.h b/qt/qdbusmessage_p.h deleted file mode 100644 index ea958b24..00000000 --- a/qt/qdbusmessage_p.h +++ /dev/null @@ -1,50 +0,0 @@ -/* qdbusmessage.h QDBusMessage private object - * - * Copyright (C) 2005 Harald Fernengel - * Copyright (C) 2006 Trolltech AS. All rights reserved. - * Author: Thiago Macieira - * - * Licensed under the Academic Free License version 2.1 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#ifndef QDBUSMESSAGE_P_H -#define QDBUSMESSAGE_P_H - -#include -#include -#include "qdbusconnection.h" -struct DBusMessage; - -class QDBusMessagePrivate -{ -public: - QDBusMessagePrivate(); - ~QDBusMessagePrivate(); - - QString service, path, interface, name, message, signature; - QDBusConnection connection; - DBusMessage *msg; - DBusMessage *reply; - int type; - int timeout; - QAtomic ref; - - mutable bool repliedTo : 1; -}; - -#endif diff --git a/qt/qdbusmetaobject.cpp b/qt/qdbusmetaobject.cpp deleted file mode 100644 index a923d79a..00000000 --- a/qt/qdbusmetaobject.cpp +++ /dev/null @@ -1,689 +0,0 @@ -/* -*- C++ -*- - * - * Copyright (C) 2006 Trolltech AS. All rights reserved. - * Author: Thiago Macieira - * - * Licensed under the Academic Free License version 2.1 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#include "qdbusmetaobject_p.h" - -#include -#include -#include -#include - -#include "qdbusutil.h" -#include "qdbuserror.h" -#include "qdbusintrospection_p.h" -#include "qdbusabstractinterface_p.h" - -class QDBusMetaObjectGenerator -{ -public: - QDBusMetaObjectGenerator(const QString &interface, - const QDBusIntrospection::Interface *parsedData); - void write(QDBusMetaObject *obj); - void writeWithoutXml(QDBusMetaObject *obj); - -private: - struct Method { - QByteArray parameters; - QByteArray typeName; - QByteArray tag; - QByteArray inputSignature; - QByteArray outputSignature; - QVarLengthArray inputTypes; - QVarLengthArray outputTypes; - int flags; - }; - - struct Property { - QByteArray typeName; - QByteArray signature; - int type; - int flags; - }; - - enum PropertyFlags { - Invalid = 0x00000000, - Readable = 0x00000001, - Writable = 0x00000002, - Resettable = 0x00000004, - EnumOrFlag = 0x00000008, - StdCppSet = 0x00000100, - // Override = 0x00000200, - Designable = 0x00001000, - ResolveDesignable = 0x00002000, - Scriptable = 0x00004000, - ResolveScriptable = 0x00008000, - Stored = 0x00010000, - ResolveStored = 0x00020000, - Editable = 0x00040000, - ResolveEditable = 0x00080000, - User = 0x00100000, - ResolveUser = 0x00200000 - }; - - enum MethodFlags { - AccessPrivate = 0x00, - AccessProtected = 0x01, - AccessPublic = 0x02, - AccessMask = 0x03, //mask - - MethodMethod = 0x00, - MethodSignal = 0x04, - MethodSlot = 0x08, - MethodTypeMask = 0x0c, - - MethodCompatibility = 0x10, - MethodCloned = 0x20, - MethodScriptable = 0x40 - }; - - QMap methods; - QMap properties; - - const QDBusIntrospection::Interface *data; - QString interface; - - void parseMethods(); - void parseSignals(); - void parseProperties(); -}; - -static const int intsPerProperty = 2; -static const int intsPerMethod = 4; - -// ### from kernel/qmetaobject.cpp (Qt 4.1.2): -struct QDBusMetaObjectPrivate -{ - int revision; - int className; - int classInfoCount, classInfoData; - int methodCount, methodData; - int propertyCount, propertyData; - int enumeratorCount, enumeratorData; - - // this is specific for QDBusMetaObject: - int propertyDBusData; - int methodDBusData; -}; - -QDBusMetaObjectGenerator::QDBusMetaObjectGenerator(const QString &interfaceName, - const QDBusIntrospection::Interface *parsedData) - : data(parsedData), interface(interfaceName) -{ - if (data) { - parseProperties(); - parseSignals(); // call parseSignals first so that slots override signals - parseMethods(); - } -} - -void QDBusMetaObjectGenerator::parseMethods() -{ - foreach (const QDBusIntrospection::Method &m, data->methods) { - Method mm; - - QByteArray prototype = m.name.toLatin1(); - prototype += '('; - - bool ok = true; - - // build the input argument list - foreach (const QDBusIntrospection::Argument &arg, m.inputArgs) { - int typeId = QDBusUtil::signatureToType(arg.type); - if (typeId == QVariant::Invalid) { - ok = false; - break; - } - - mm.inputSignature += arg.type; - mm.inputTypes.append(typeId); - - mm.parameters.append(arg.name.toLatin1()); - mm.parameters.append(','); - - prototype.append( QVariant::typeToName( QVariant::Type(typeId) ) ); - prototype.append(','); - } - if (!ok) continue; - - // build the output argument list: - for (int i = 0; i < m.outputArgs.count(); ++i) { - const QDBusIntrospection::Argument &arg = m.outputArgs.at(i); - - int typeId = QDBusUtil::signatureToType(arg.type); - if (typeId == QVariant::Invalid) { - ok = false; - break; - } - - mm.outputSignature += arg.type; - mm.outputTypes.append(typeId); - - if (i == 0) { - // return value - mm.typeName = QVariant::typeToName( QVariant::Type(typeId) ); - } else { - // non-const ref parameter - mm.parameters.append(arg.name.toLatin1()); - mm.parameters.append(','); - - prototype.append( QVariant::typeToName( QVariant::Type(typeId) ) ); - prototype.append("&,"); - } - } - if (!ok) continue; - - // convert the last commas: - if (!mm.parameters.isEmpty()) { - mm.parameters.truncate(mm.parameters.length() - 1); - prototype[prototype.length() - 1] = ')'; - } else { - prototype.append(')'); - } - - // check the async tag - if (m.annotations.value(QLatin1String(ANNOTATION_NO_WAIT)) == QLatin1String("true")) - mm.tag = "Q_ASYNC"; - - // meta method flags - mm.flags = AccessPublic | MethodSlot | MethodScriptable; - - // add - methods.insert(QMetaObject::normalizedSignature(prototype), mm); - } -} - -void QDBusMetaObjectGenerator::parseSignals() -{ - foreach (const QDBusIntrospection::Signal &s, data->signals_) { - Method mm; - - QByteArray prototype = s.name.toLatin1(); - prototype += '('; - - bool ok = true; - - // build the output argument list - foreach (const QDBusIntrospection::Argument &arg, s.outputArgs) { - int typeId = QDBusUtil::signatureToType(arg.type); - if (typeId == QVariant::Invalid) { - ok = false; - break; - } - - mm.inputSignature += arg.type; - mm.inputTypes.append(typeId); - - mm.parameters.append(arg.name.toLatin1()); - mm.parameters.append(','); - - prototype.append( QVariant::typeToName( QVariant::Type(typeId) ) ); - prototype.append(','); - } - if (!ok) continue; - - // convert the last commas: - if (!mm.parameters.isEmpty()) { - mm.parameters.truncate(mm.parameters.length() - 1); - prototype[prototype.length() - 1] = ')'; - } else { - prototype.append(')'); - } - - // meta method flags - mm.flags = AccessProtected | MethodSignal | MethodScriptable; - - // add - methods.insert(QMetaObject::normalizedSignature(prototype), mm); - } -} - -void QDBusMetaObjectGenerator::parseProperties() -{ - foreach (const QDBusIntrospection::Property &p, data->properties) { - Property mp; - mp.type = QDBusUtil::signatureToType(p.type); - if (mp.type == QVariant::Invalid) - continue; - - QByteArray name = p.name.toLatin1(); - mp.signature = p.type.toLatin1(); - mp.typeName = QVariant::typeToName( QVariant::Type(mp.type) ); - - // build the flags: - mp.flags = StdCppSet | Scriptable | Stored; - if (p.access != QDBusIntrospection::Property::Write) - mp.flags |= Readable; - if (p.access != QDBusIntrospection::Property::Read) - mp.flags |= Writable; - - if (mp.typeName == "QVariant") - mp.flags |= 0xff << 24; - else if (mp.type < 0xff) - // encode the type in the flags - mp.flags |= mp.type << 24; - - // add the property: - properties.insert(name, mp); - } -} - -void QDBusMetaObjectGenerator::write(QDBusMetaObject *obj) -{ - // this code here is mostly copied from qaxbase.cpp - // with a few modifications to make it cleaner - - QString className = interface; - className.replace(QLatin1Char('.'), QLatin1String("::")); - if (className.isEmpty()) - className = QLatin1String("QDBusInterface"); - - QVarLengthArray data; - data.resize(sizeof(QDBusMetaObjectPrivate) / sizeof(int)); - - QDBusMetaObjectPrivate *header = reinterpret_cast(data.data()); - header->revision = 1; - header->className = 0; - header->classInfoCount = 0; - header->classInfoData = 0; - header->methodCount = methods.count(); - header->methodData = data.size(); - header->propertyCount = properties.count(); - header->propertyData = header->methodData + header->methodCount * 5; - header->enumeratorCount = 0; - header->enumeratorData = 0; - header->propertyDBusData = header->propertyData + header->propertyCount * 3; - header->methodDBusData = header->propertyDBusData + header->propertyCount * intsPerProperty; - - int data_size = data.size() + - (header->methodCount * (5+intsPerMethod)) + - (header->propertyCount * (3+intsPerProperty)); - foreach (const Method &mm, methods) - data_size += 2 + mm.inputTypes.count() + mm.outputTypes.count(); - data.resize(data_size + 1); - - char null('\0'); - QByteArray stringdata = className.toLatin1(); - stringdata += null; - stringdata.reserve(8192); - - int offset = header->methodData; - int signatureOffset = header->methodDBusData; - int typeidOffset = header->methodDBusData + header->methodCount * intsPerMethod; - data[typeidOffset++] = 0; // eod - - // add each method: - for (QMap::ConstIterator it = methods.constBegin(); - it != methods.constEnd(); ++it) { - // form "prototype\0parameters\0typeName\0tag\0inputSignature\0outputSignature" - const Method &mm = it.value(); - - data[offset++] = stringdata.length(); - stringdata += it.key(); // prototype - stringdata += null; - data[offset++] = stringdata.length(); - stringdata += mm.parameters; - stringdata += null; - data[offset++] = stringdata.length(); - stringdata += mm.typeName; - stringdata += null; - data[offset++] = stringdata.length(); - stringdata += mm.tag; - stringdata += null; - data[offset++] = mm.flags; - - data[signatureOffset++] = stringdata.length(); - stringdata += mm.inputSignature; - stringdata += null; - data[signatureOffset++] = stringdata.length(); - stringdata += mm.outputSignature; - stringdata += null; - - data[signatureOffset++] = typeidOffset; - data[typeidOffset++] = mm.inputTypes.count(); - memcpy(data.data() + typeidOffset, mm.inputTypes.data(), mm.inputTypes.count() * sizeof(int)); - typeidOffset += mm.inputTypes.count(); - - data[signatureOffset++] = typeidOffset; - data[typeidOffset++] = mm.outputTypes.count(); - memcpy(data.data() + typeidOffset, mm.outputTypes.data(), mm.outputTypes.count() * sizeof(int)); - typeidOffset += mm.outputTypes.count(); - } - - Q_ASSERT(offset == header->propertyData); - Q_ASSERT(signatureOffset == header->methodDBusData + header->methodCount * intsPerMethod); - Q_ASSERT(typeidOffset == data.size()); - - // add each property - signatureOffset = header->propertyDBusData; - for (QMap::ConstIterator it = properties.constBegin(); - it != properties.constEnd(); ++it) { - const Property &mp = it.value(); - - // form is "name\0typeName\0signature\0" - data[offset++] = stringdata.length(); - stringdata += it.key(); // name - stringdata += null; - data[offset++] = stringdata.length(); - stringdata += mp.typeName; - stringdata += null; - data[offset++] = mp.flags; - - data[signatureOffset++] = stringdata.length(); - stringdata += mp.signature; - stringdata += null; - data[signatureOffset++] = mp.type; - } - - Q_ASSERT(offset == header->propertyDBusData); - Q_ASSERT(signatureOffset == header->methodDBusData); - - char *string_data = new char[stringdata.length()]; - memcpy(string_data, stringdata, stringdata.length()); - - uint *uint_data = new uint[data.size()]; - memcpy(uint_data, data.data(), data.size() * sizeof(int)); - - // put the metaobject together - obj->d.data = uint_data; - obj->d.extradata = 0; - obj->d.stringdata = string_data; - obj->d.superdata = &QDBusAbstractInterface::staticMetaObject; -} - -#if 0 -void QDBusMetaObjectGenerator::writeWithoutXml(const QString &interface) -{ - // no XML definition - QString tmp(interface); - tmp.replace(QLatin1Char('.'), QLatin1String("::")); - QByteArray name(tmp.toLatin1()); - - QDBusMetaObjectPrivate *header = new QDBusMetaObjectPrivate; - memset(header, 0, sizeof *header); - header->revision = 1; - // leave the rest with 0 - - char *stringdata = new char[name.length() + 1]; - stringdata[name.length()] = '\0'; - - d.data = reinterpret_cast(header); - d.extradata = 0; - d.stringdata = stringdata; - d.superdata = &QDBusAbstractInterface::staticMetaObject; - cached = false; -} -#endif - -///////// -// class QDBusMetaObject - -QDBusMetaObject *QDBusMetaObject::createMetaObject(const QString &interface, const QString &xml, - QHash &cache, - QDBusError &error) -{ - error = QDBusError(); - QDBusIntrospection::Interfaces parsed = QDBusIntrospection::parseInterfaces(xml); - - QDBusMetaObject *we = 0; - QDBusIntrospection::Interfaces::ConstIterator it = parsed.constBegin(); - QDBusIntrospection::Interfaces::ConstIterator end = parsed.constEnd(); - for ( ; it != end; ++it) { - // check if it's in the cache - QDBusMetaObject *obj = cache.value(it.key(), 0); - if (!obj) { - // not in cache; create - obj = new QDBusMetaObject; - QDBusMetaObjectGenerator generator(it.key(), it.value().constData()); - generator.write(obj); - - if ( (obj->cached = !it.key().startsWith( QLatin1String("local.") )) ) - // cache it - cache.insert(it.key(), obj); - - } - - if (it.key() == interface) - // it's us - we = obj; - } - - if (we) - return we; - // still nothing? - - if (parsed.isEmpty()) { - // object didn't return introspection - we = new QDBusMetaObject; - QDBusMetaObjectGenerator generator(interface, 0); - generator.write(we); - we->cached = false; - return we; - } else if (interface.isEmpty()) { - // merge all interfaces - it = parsed.constBegin(); - QDBusIntrospection::Interface merged = *it.value().constData(); - - for (++it; it != end; ++it) { - merged.annotations.unite(it.value()->annotations); - merged.methods.unite(it.value()->methods); - merged.signals_.unite(it.value()->signals_); - merged.properties.unite(it.value()->properties); - } - - merged.name = QLatin1String("local.Merged"); - merged.introspection.clear(); - - we = new QDBusMetaObject; - QDBusMetaObjectGenerator generator(merged.name, &merged); - generator.write(we); - we->cached = false; - return we; - } - - // mark as an error - error = QDBusError(QDBusError::UnknownInterface, - QString( QLatin1String("Interface '%1' was not found") ) - .arg(interface)); - return 0; -} - -QDBusMetaObject::QDBusMetaObject() -{ -} - -inline const QDBusMetaObjectPrivate *priv(const uint* data) -{ - return reinterpret_cast(data); -} - -const char *QDBusMetaObject::dbusNameForMethod(int id) const -{ - //id -= methodOffset(); - if (id >= 0 && id < priv(d.data)->methodCount) { - int handle = priv(d.data)->methodDBusData + id*intsPerMethod; - return d.stringdata + d.data[handle]; - } - return 0; -} - -const char *QDBusMetaObject::inputSignatureForMethod(int id) const -{ - //id -= methodOffset(); - if (id >= 0 && id < priv(d.data)->methodCount) { - int handle = priv(d.data)->methodDBusData + id*intsPerMethod; - return d.stringdata + d.data[handle + 1]; - } - return 0; -} - -const char *QDBusMetaObject::outputSignatureForMethod(int id) const -{ - //id -= methodOffset(); - if (id >= 0 && id < priv(d.data)->methodCount) { - int handle = priv(d.data)->methodDBusData + id*intsPerMethod; - return d.stringdata + d.data[handle + 2]; - } - return 0; -} - -const int *QDBusMetaObject::inputTypesForMethod(int id) const -{ - //id -= methodOffset(); - if (id >= 0 && id < priv(d.data)->methodCount) { - int handle = priv(d.data)->methodDBusData + id*intsPerMethod; - return reinterpret_cast(d.data + d.data[handle + 3]); - } - return 0; -} - -const int *QDBusMetaObject::outputTypesForMethod(int id) const -{ - //id -= methodOffset(); - if (id >= 0 && id < priv(d.data)->methodCount) { - int handle = priv(d.data)->methodDBusData + id*intsPerMethod; - return reinterpret_cast(d.data + d.data[handle + 4]); - } - return 0; -} - -int QDBusMetaObject::propertyMetaType(int id) const -{ - //id -= propertyOffset(); - if (id >= 0 && id < priv(d.data)->propertyCount) { - int handle = priv(d.data)->propertyDBusData + id*intsPerProperty; - return d.data[handle + 1]; - } - return 0; -} - -template -static inline void assign_helper(void *ptr, const QVariant &value) -{ - *reinterpret_cast(ptr) = qvariant_cast(value); -} - -void QDBusMetaObject::assign(void *ptr, const QVariant &value) -{ - switch (value.userType()) - { - case QVariant::Bool: - assign_helper(ptr, value); - return; - - case QMetaType::UChar: - assign_helper(ptr, value); - return; - - case QMetaType::Short: - assign_helper(ptr, value); - return; - - case QMetaType::UShort: - assign_helper(ptr, value); - return; - - case QVariant::Int: - assign_helper(ptr, value); - return; - - case QVariant::UInt: - assign_helper(ptr, value); - return; - - case QVariant::LongLong: - assign_helper(ptr, value); - return; - - case QVariant::ULongLong: - assign_helper(ptr, value); - return; - - case QVariant::Double: - assign_helper(ptr, value); - return; - - case QVariant::String: - assign_helper(ptr, value); - return; - - case QVariant::ByteArray: - assign_helper(ptr, value); - return; - - case QVariant::List: - assign_helper(ptr, value); - return; - - case QVariant::Map: - assign_helper(ptr, value); - return; - - default: - ; - } -} - -bool QDBusMetaTypeId::initialized = false; -int QDBusMetaTypeId::variant = 0; -int QDBusMetaTypeId::boollist = 0; -int QDBusMetaTypeId::shortlist = 0; -int QDBusMetaTypeId::ushortlist = 0; -int QDBusMetaTypeId::intlist = 0; -int QDBusMetaTypeId::uintlist = 0; -int QDBusMetaTypeId::longlonglist = 0; -int QDBusMetaTypeId::ulonglonglist = 0; -int QDBusMetaTypeId::doublelist = 0; - -bool QDBusMetaTypeId::innerInitialize() -{ - variant = qRegisterMetaType("QVariant"); - boollist = qRegisterMetaType >("QList"); - shortlist = qRegisterMetaType >("QList"); - ushortlist = qRegisterMetaType >("QList"); - intlist = qRegisterMetaType >("QList"); - uintlist = qRegisterMetaType >("QList"); - longlonglist = qRegisterMetaType >("QList"); - ulonglonglist = qRegisterMetaType >("QList"); - doublelist = qRegisterMetaType >("QList"); - initialized = true; - return true; -} - -int qDBusMetaTypeId(QVariant *) -{ QDBusMetaTypeId::initialize(); return QDBusMetaTypeId::variant; } -int qDBusMetaTypeId(QList *) -{ QDBusMetaTypeId::initialize(); return QDBusMetaTypeId::boollist; } -int qDBusMetaTypeId(QList *) -{ QDBusMetaTypeId::initialize(); return QDBusMetaTypeId::shortlist; } -int qDBusMetaTypeId(QList *) -{ QDBusMetaTypeId::initialize(); return QDBusMetaTypeId::ushortlist; } -int qDBusMetaTypeId(QList *) -{ QDBusMetaTypeId::initialize(); return QDBusMetaTypeId::intlist; } -int qDBusMetaTypeId(QList *) -{ QDBusMetaTypeId::initialize(); return QDBusMetaTypeId::uintlist; } -int qDBusMetaTypeId(QList *) -{ QDBusMetaTypeId::initialize(); return QDBusMetaTypeId::longlonglist; } -int qDBusMetaTypeId(QList *) -{ QDBusMetaTypeId::initialize(); return QDBusMetaTypeId::ulonglonglist; } -int qDBusMetaTypeId(QList *) -{ QDBusMetaTypeId::initialize(); return QDBusMetaTypeId::doublelist; } diff --git a/qt/qdbusmetaobject_p.h b/qt/qdbusmetaobject_p.h deleted file mode 100644 index 7d6c5caa..00000000 --- a/qt/qdbusmetaobject_p.h +++ /dev/null @@ -1,96 +0,0 @@ -/* - * - * Copyright (C) 2006 Trolltech AS. All rights reserved. - * Author: Thiago Macieira - * - * Licensed under the Academic Free License version 2.1 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -// -// W A R N I N G -// ------------- -// -// This file is not part of the public API. This header file may -// change from version to version without notice, or even be -// removed. -// -// We mean it. -// -// - -#ifndef QDBUSMETAOBJECTPRIVATE_H -#define QDBUSMETAOBJECTPRIVATE_H - -#include -#include "qdbusmacros.h" - -class QDBusError; - -class QDBusMetaObjectPrivate; -struct QDBUS_EXPORT QDBusMetaObject: public QMetaObject -{ - bool cached; - - static QDBusMetaObject *createMetaObject(const QString &interface, const QString &xml, - QHash &map, - QDBusError &error); - ~QDBusMetaObject() - { - delete [] d.stringdata; - delete [] d.data; - } - - // methods (slots & signals): - const char *dbusNameForMethod(int id) const; - const char *inputSignatureForMethod(int id) const; - const char *outputSignatureForMethod(int id) const; - const int *inputTypesForMethod(int id) const; - const int *outputTypesForMethod(int id) const; - - // properties: - int propertyMetaType(int id) const; - - // helper function: - static void assign(void *, const QVariant &value); - -private: - QDBusMetaObject(); -}; - -struct QDBusMetaTypeId -{ - static bool innerInitialize(); - static bool initialized; - static inline void initialize() - { - if (initialized) return; - innerInitialize(); - } - - static int variant; - static int boollist; - static int shortlist; - static int ushortlist; - static int intlist; - static int uintlist; - static int longlonglist; - static int ulonglonglist; - static int doublelist; -}; - -#endif diff --git a/qt/qdbusmisc.cpp b/qt/qdbusmisc.cpp deleted file mode 100644 index 9aaf9f24..00000000 --- a/qt/qdbusmisc.cpp +++ /dev/null @@ -1,156 +0,0 @@ -/* qdbusmisc.cpp Miscellaneous routines that didn't fit anywhere else - * - * Copyright (C) 2006 Trolltech AS. All rights reserved. - * Author: Thiago Macieira - * - * Licensed under the Academic Free License version 2.1 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#include - -#include -#include - -#include "qdbusconnection_p.h" -#include "qdbustypehelper_p.h" - -bool qDBusCheckAsyncTag(const char *tag) -{ - if (!tag || !*tag) - return false; - - const char *p = strstr(tag, "async"); - if (p != NULL && - (p == tag || *(p-1) == ' ') && - (p[5] == '\0' || p[5] == ' ')) - return true; - - p = strstr(tag, "Q_ASYNC"); - if (p != NULL && - (p == tag || *(p-1) == ' ') && - (p[7] == '\0' || p[7] == ' ')) - return true; - - return false; -} - -int qDBusNameToTypeId(const char *name) -{ - int id = static_cast( QVariant::nameToType(name) ); - if (id == QVariant::UserType) - id = QMetaType::type(name); - - switch (id) { - case QVariant::Bool: - case QVariant::Int: - case QVariant::UInt: - case QVariant::Char: - case QMetaType::Short: - case QMetaType::UShort: - case QMetaType::UChar: - case QVariant::LongLong: - case QVariant::ULongLong: - case QVariant::Double: - case QVariant::String: - case QVariant::Date: - case QVariant::Time: - case QVariant::DateTime: - case QVariant::Map: - case QVariant::StringList: - case QVariant::ByteArray: - case QVariant::List: - return id; - - default: - if (id == QDBusConnectionPrivate::registerMessageMetaType() || - id == QDBusTypeHelper::id() || - id == QDBusTypeHelper::listId() || - id == QDBusTypeHelper::listId() || - id == QDBusTypeHelper::listId() || - id == QDBusTypeHelper::listId() || - id == QDBusTypeHelper::listId() || - id == QDBusTypeHelper::listId() || - id == QDBusTypeHelper::listId()) - return id; - - return 0; // invalid - } -} - -// calculates the metatypes for the method -// the slot must have the parameters in the following form: -// - zero or more value or const-ref parameters of any kind -// - zero or one const ref of QDBusMessage -// - zero or more non-const ref parameters -// No parameter may be a template. -// this function returns -1 if the parameters don't match the above form -// this function returns the number of *input* parameters, including the QDBusMessage one if any -// this function does not check the return type, so metaTypes[0] is always 0 and always present -// metaTypes.count() >= retval + 1 in all cases -// -// sig must be the normalised signature for the method -int qDBusParametersForMethod(const QMetaMethod &mm, QList& metaTypes) -{ - QList parameterTypes = mm.parameterTypes(); - metaTypes.clear(); - - metaTypes.append(0); // return type - int inputCount = 0; - bool seenMessage = false; - foreach (QByteArray type, parameterTypes) { - if (type.endsWith('*')) { - //qWarning("Could not parse the method '%s'", mm.signature()); - // pointer? - return -1; - } - - if (type.endsWith('&')) { - type.truncate(type.length() - 1); - int id = qDBusNameToTypeId(type); - if (id == 0) { - //qWarning("Could not parse the method '%s'", mm.signature()); - // invalid type in method parameter list - return -1; - } - - metaTypes.append( id ); - seenMessage = true; // it cannot appear anymore anyways - continue; - } - - if (seenMessage) { // && !type.endsWith('&') - //qWarning("Could not parse the method '%s'", mm.signature()); - // non-output parameters after message or after output params - return -1; // not allowed - } - - int id = qDBusNameToTypeId(type); - if (id == 0) { - //qWarning("Could not parse the method '%s'", mm.signature()); - // invalid type in method parameter list - return -1; - } - metaTypes.append(id); - ++inputCount; - - if (id == QDBusConnectionPrivate::registerMessageMetaType()) - seenMessage = true; - } - - return inputCount; -} diff --git a/qt/qdbusreply.h b/qt/qdbusreply.h deleted file mode 100644 index ff0d5d5d..00000000 --- a/qt/qdbusreply.h +++ /dev/null @@ -1,132 +0,0 @@ -/* qdbusreply.h QDBusReply object - a reply from D-Bus - * - * Copyright (C) 2006 Trolltech AS. All rights reserved. - * Author: Thiago Macieira - * - * Licensed under the Academic Free License version 2.1 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#ifndef QDBUSREPLY_H -#define QDBUSREPLY_H - -#include -#include - -#include "qdbusmacros.h" -#include "qdbusmessage.h" -#include "qdbuserror.h" - -#include "qdbustypehelper_p.h" - -template -class QDBUS_EXPORT QDBusReply -{ - typedef T Type; -public: - inline QDBusReply(const QDBusMessage &reply) - : m_data(Type()) - { - *this = reply; - } - inline QDBusReply& operator=(const QDBusMessage& reply) - { - m_error = reply; - if (isSuccess()) - m_data = QDBusTypeHelper::fromVariant(reply.at(0)); - else - m_data = Type(); - return *this; - } - - inline QDBusReply(const QDBusError &error = QDBusError()) - : m_error(error), m_data(Type()) - { - } - inline QDBusReply& operator=(const QDBusError& error) - { - m_error = error; - m_data = Type(); - return *this; - } - - inline QDBusReply& operator=(const QDBusReply& other) - { - m_error = other.m_error; - m_data = other.m_data; - return *this; - } - - inline bool isError() const { return m_error.isValid(); } - inline bool isSuccess() const { return !m_error.isValid(); } - - inline const QDBusError& error() { return m_error; } - - inline Type value() - { - return m_data; - } - - inline operator Type () - { - return m_data; - } - - static QDBusReply fromVariant(const QDBusReply &variantReply) - { - QDBusReply retval; - retval.m_error = variantReply.m_error; - if (retval.isSuccess()) { - retval.m_data = qvariant_cast(variantReply.m_data); - if (!qVariantCanConvert(variantReply.m_data)) - retval.m_error = QDBusError(QDBusError::InvalidSignature, - QLatin1String("Unexpected reply signature")); - } - return retval; - } - -private: - QDBusError m_error; - Type m_data; -}; - -# ifndef Q_QDOC -// specialize for void: -template<> -class QDBUS_EXPORT QDBusReply -{ -public: - inline QDBusReply(const QDBusMessage &reply) - : m_error(reply) - { - } - inline QDBusReply(const QDBusError &error) - : m_error(error) - { - } - - inline bool isError() const { return m_error.isValid(); } - inline bool isSuccess() const { return !m_error.isValid(); } - - inline const QDBusError& error() { return m_error; } - -private: - QDBusError m_error; -}; -# endif - -#endif diff --git a/qt/qdbusserver.cpp b/qt/qdbusserver.cpp deleted file mode 100644 index b3b9835e..00000000 --- a/qt/qdbusserver.cpp +++ /dev/null @@ -1,61 +0,0 @@ -/* qdbusserver.cpp - * - * Copyright (C) 2005 Harald Fernengel - * Copyright (C) 2006 Trolltech AS. All rights reserved. - * Author: Thiago Macieira - * - * Licensed under the Academic Free License version 2.1 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#include "qdbusserver.h" -#include "qdbusconnection_p.h" - -QDBusServer::QDBusServer(const QString &addr, QObject *parent) - : QObject(parent) -{ - d = new QDBusConnectionPrivate(this); - - if (addr.isEmpty()) - return; - - d->setServer(dbus_server_listen(addr.toUtf8().constData(), &d->error)); -} - -bool QDBusServer::isConnected() const -{ - return d->server && dbus_server_get_is_connected(d->server); -} - -QDBusError QDBusServer::lastError() const -{ - return d->lastError; -} - -QString QDBusServer::address() const -{ - QString addr; - if (d->server) { - char *c = dbus_server_get_address(d->server); - addr = QString::fromUtf8(c); - dbus_free(c); - } - - return addr; -} - -#include "qdbusserver.moc" diff --git a/qt/qdbusserver.h b/qt/qdbusserver.h deleted file mode 100644 index 55607860..00000000 --- a/qt/qdbusserver.h +++ /dev/null @@ -1,48 +0,0 @@ -/* qdbusserver.h QDBusServer object - * - * Copyright (C) 2005 Harald Fernengel - * - * Licensed under the Academic Free License version 2.1 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ - -#ifndef QDBUSSERVER_H -#define QDBUSSERVER_H - -#include "qdbusmacros.h" -#include -#include - -class QDBusConnectionPrivate; -class QDBusError; - -class QDBUS_EXPORT QDBusServer: public QObject -{ - Q_OBJECT -public: - QDBusServer(const QString &address, QObject *parent = 0); - - bool isConnected() const; - QDBusError lastError() const; - QString address() const; - -private: - Q_DISABLE_COPY(QDBusServer) - QDBusConnectionPrivate *d; -}; - -#endif diff --git a/qt/qdbusthread.cpp b/qt/qdbusthread.cpp deleted file mode 100644 index f45a0096..00000000 --- a/qt/qdbusthread.cpp +++ /dev/null @@ -1,116 +0,0 @@ -/* qdbusintegrator.cpp QDBusConnection private implementation - * - * Copyright (C) 2005 Harald Fernengel - * Copyright (C) 2006 Trolltech AS. All rights reserved. - * Author: Thiago Macieira - * - * Licensed under the Academic Free License version 2.1 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#include -#include - -#include - -struct DBusMutex: public QMutex -{ - inline DBusMutex() - : QMutex( QMutex::NonRecursive ) - { } - - static DBusMutex* mutex_new() - { - return new DBusMutex; - } - - static void mutex_free(DBusMutex *mutex) - { - delete mutex; - } - - static dbus_bool_t mutex_lock(DBusMutex *mutex) - { - mutex->lock(); - return true; - } - - static dbus_bool_t mutex_unlock(DBusMutex *mutex) - { - mutex->unlock(); - return true; - } -}; - -struct DBusCondVar: public QWaitCondition -{ - inline DBusCondVar() - { } - - static DBusCondVar* condvar_new() - { - return new DBusCondVar; - } - - static void condvar_free(DBusCondVar *cond) - { - delete cond; - } - - static void condvar_wait(DBusCondVar *cond, DBusMutex *mutex) - { - cond->wait(mutex); - } - - static dbus_bool_t condvar_wait_timeout(DBusCondVar *cond, DBusMutex *mutex, int msec) - { - return cond->wait(mutex, msec); - } - - static void condvar_wake_one(DBusCondVar *cond) - { - cond->wakeOne(); - } - - static void condvar_wake_all(DBusCondVar *cond) - { - cond->wakeAll(); - } -}; - -bool qDBusInitThreads() -{ - static DBusThreadFunctions fcn = { - DBUS_THREAD_FUNCTIONS_ALL_MASK, - DBusMutex::mutex_new, - DBusMutex::mutex_free, - DBusMutex::mutex_lock, - DBusMutex::mutex_unlock, - DBusCondVar::condvar_new, - DBusCondVar::condvar_free, - DBusCondVar::condvar_wait, - DBusCondVar::condvar_wait_timeout, - DBusCondVar::condvar_wake_one, - DBusCondVar::condvar_wake_all, - 0, 0, 0, 0, 0, 0, 0, 0 - }; - - dbus_threads_init(&fcn); - return true; -} - - diff --git a/qt/qdbustype.cpp b/qt/qdbustype.cpp deleted file mode 100644 index 7f17a372..00000000 --- a/qt/qdbustype.cpp +++ /dev/null @@ -1,847 +0,0 @@ -/* -*- C++ -*- - * - * Copyright (C) 2005 Thiago Macieira - * Copyright (C) 2006 Trolltech AS. All rights reserved. - * Author: Thiago Macieira - * - * Licensed under the Academic Free License version 2.1 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#include "qdbustype_p.h" -#include "qdbustypehelper_p.h" -#include - -#include - -class QDBusTypePrivate: public QSharedData -{ -public: - int code; - mutable int qvariantType; - mutable QByteArray signature; - QDBusTypeList subTypes; - - inline QDBusTypePrivate() - : code(0), qvariantType(QVariant::Invalid) - { } -}; - -/*! - \class QDBusType - \brief Represents one single D-Bus type. - \internal - - D-Bus provides a set of primitive types that map to normal, C++ types and to QString, as well as - the possibility to extend the set with the so-called "container" types. The available types are - as follows: - - - Primitive (or basic): integers of 16, 32 and 64 bits, both signed and unsigned; byte (8 bits); - double-precision floating point and Unicode strings - - Arrays: a homogeneous, ordered list of zero or more entries - - Maps: an unordered list of (key, value) pairs, where key must be a primitive type and value - can be any D-Bus type - - Structs: an ordered list of a fixed number of entries of any type - - Variants: a "wildcard" container that can assume the value of any other type, including - structs and arrays - - Any type can be placed inside an array (including other arrays), but only entries of the same - type can be placed inside the same array. The analogous type for D-Bus arrays are the Qt - #QList template classes. - - Structs have a fixed number of entries and each entry has a fixed type. They are analogous to C - and C++ structs (hence the name). - - Maps or dictionaries are analogous to the Qt #QMap template class, with the additional - restriction that the key type must be a primitive one. D-Bus implements maps by using arrays of - a special type (a "dictionary entry"), so inspecting a QDBusType of a Map will reveal that it is - an array (see isArray()). - - Variants contain exactly one entry, but the type can vary freely. It is analogous to the Qt - class #QVariant, but the QtDBus implementation uses #QDBusVariant to represent D-Bus Variants. -*/ - -/*! - Constructs an empty (invalid) type. -*/ -QDBusType::QDBusType() - : d(0) -{ -} - -/*! - Constructs the type based on the D-Bus type given by \a type. -*/ -QDBusType::QDBusType(int type) -{ - char c[2] = { type, 0 }; - *this = QDBusType(c); -} - -/*! - Constructs the type based on the QVariant type given by \a type. - - \sa QVariant::Type -*/ -QDBusType::QDBusType(QVariant::Type type) -{ - const char *sig = dbusSignature(type); - - // it never returns NULL - // but it may return an empty string: - if (sig[0] == '\0') - return; - - if (qstrlen(sig) > 2) { - *this = QDBusType(sig); - } else { - d = new QDBusTypePrivate; - d->qvariantType = type; - d->code = sig[0]; - if (sig[1] == '\0') - // single-letter type - return; - else { - // two-letter type - // must be an array - d->code = sig[0]; - QDBusType t; - t.d = new QDBusTypePrivate; - t.d->code = sig[1]; - d->subTypes << t; - } - } -} - -/*! - Parses the D-Bus signature given by \a signature and constructs the type it represents. -*/ -QDBusType::QDBusType(const char* signature) -{ - if ( !dbus_signature_validate_single(signature, 0) ) - return; - - DBusSignatureIter iter; - dbus_signature_iter_init(&iter, signature); - *this = QDBusType(&iter); - if (d) - d->signature = signature; -} - -/*! - \overload - Parses the D-Bus signature given by \a str and constructs the type it represents. -*/ -QDBusType::QDBusType(const QString& str) -{ - *this = QDBusType( str.toUtf8().constData() ); -} - -/*! - \overload - Parses the D-Bus signature given by \a str and constructs the type it represents. -*/ -QDBusType::QDBusType(const QByteArray& str) -{ - *this = QDBusType( str.constData() ); -} - -/*! - \internal - Creates a QDBusType object based on the current element pointed to by \a iter. -*/ -QDBusType::QDBusType(DBusSignatureIter* iter) - : d(new QDBusTypePrivate) -{ - if ( dbus_type_is_container( d->code = dbus_signature_iter_get_current_type(iter) ) ) { - // we have to recurse - if ( d->code == DBUS_TYPE_VARIANT ) - return; // no we don't. dbus_type_is_container lies to us - - // we have to recurse - DBusSignatureIter subiter; - dbus_signature_iter_recurse(iter, &subiter); - - d->subTypes = QDBusTypeList(&subiter); - - // sanity checking: - if ( d->code == DBUS_TYPE_ARRAY ) - Q_ASSERT_X(d->subTypes.size() == 1, "QDBusType", - "more than one element in array"); - else if (d->code == DBUS_TYPE_DICT_ENTRY ) - Q_ASSERT_X(d->subTypes.size() == 2, "QDBusType", - "maps must have exactly two elements"); - } -} - -/*! - Copies the type from the object \a other. -*/ -QDBusType::QDBusType(const QDBusType& other) - : d(other.d) -{ -} - -/*! - Release the resources associated with this type. -*/ -QDBusType::~QDBusType() -{ -} - -/*! - Copies the type from the object given by \a other. -*/ -QDBusType& QDBusType::operator=(const QDBusType& other) -{ - d = other.d; - return *this; -} - -/*! - Returns the DBus type for this type. -*/ -int QDBusType::dbusType() const -{ - return d ? d->code : DBUS_TYPE_INVALID; -} - -/*! - Returns the DBus signature for this type and subtypes. -*/ -QByteArray QDBusType::dbusSignature() const -{ - if (!d) - return QByteArray(); - - if (!d->signature.isEmpty()) - return d->signature; - - if (d->subTypes.isEmpty()) - return d->signature = QByteArray(1, d->code); - - QByteArray retval; - switch (d->code) { - // can only be array, map or struct - - case DBUS_TYPE_ARRAY: - Q_ASSERT_X(d->subTypes.size() == 1, "QDBusType::dbusSignature", - "more than one element in array"); - - retval += DBUS_TYPE_ARRAY; - retval += d->subTypes.at(0).dbusSignature(); - break; - - case DBUS_TYPE_DICT_ENTRY: { - Q_ASSERT_X(d->subTypes.size() == 2, "QDBusType::dbusSignature", - "maps must have exactly two elements"); - - QByteArray value = d->subTypes.at(1).dbusSignature(); - char key = d->subTypes.at(0).dbusType(); - - Q_ASSERT(key != DBUS_TYPE_INVALID); - Q_ASSERT(!value.isEmpty()); - - retval.reserve(value.length() + 3); - retval = DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING; - retval += key; - retval += value; - retval += DBUS_DICT_ENTRY_END_CHAR; - break; - } - - case DBUS_TYPE_STRUCT: - retval = d->subTypes.dbusSignature(); - retval.prepend(DBUS_STRUCT_BEGIN_CHAR); - retval.append(DBUS_STRUCT_END_CHAR); - break; - - default: - Q_ASSERT_X(false, "QDBusType::dbusSignature", "invalid container type"); - } - - d->signature = retval; - return retval; -} - -/*! - Returns the QVariant::Type for this entry. -*/ -int QDBusType::qvariantType() const -{ - if (d && d->qvariantType != QVariant::Invalid) - return d->qvariantType; - - if (!d) - return QVariant::Invalid; - - return d->qvariantType = qvariantType(dbusSignature().constData()); -} - -/*! - Returns true if this type is a valid one. -*/ -bool QDBusType::isValid() const -{ - return d && d->code != DBUS_TYPE_INVALID; -} - -/*! - Returns true if this type is a basic one. -*/ -bool QDBusType::isBasic() const -{ - return d && dbus_type_is_basic(d->code); -} - -/*! - Returns true if this type is a container. -*/ -bool QDBusType::isContainer() const -{ - return d && dbus_type_is_container(d->code); -} - -/*! - Returns the subtypes of this type, if this is a container. - - \sa isContainer() -*/ -QDBusTypeList QDBusType::subTypes() const -{ - if (d) - return d->subTypes; - return QDBusTypeList(); -} - -/*! - Returns true if this type is an array. - - \sa isContainer(), arrayElement() -*/ -bool QDBusType::isArray() const -{ - return dbusType() == DBUS_TYPE_ARRAY; -} - -/*! - This is a convenience function that returns the element type of an array. - If this object is not an array, it returns an invalid QDBusType. - - \sa isArray() -*/ -QDBusType QDBusType::arrayElement() const -{ - if (isArray() && d->subTypes.count() == 1) - return d->subTypes.first(); - return QDBusType(); -} - -/*! - Returns true if this type is a map (i.e., an array of dictionary entries). - - \sa isContainer(), isArray(), arrayElement() -*/ -bool QDBusType::isMap() const -{ - return arrayElement().dbusType() == DBUS_TYPE_DICT_ENTRY; -} - -/*! - If this object is a map, returns the (basic) type that corresponds to the key type. - If this object is not a map, returns an invalid QDBusType. - - \sa isMap() -*/ -QDBusType QDBusType::mapKey() const -{ - if (isMap()) - return arrayElement().d->subTypes.first(); - return QDBusType(); -} - -/*! - If this object is a map, returns the type that corresponds to the value type. - If this object is not a map, returns an invalid QDBusType. - - \sa isMap() -*/ -QDBusType QDBusType::mapValue() const -{ - if (isMap()) - return arrayElement().d->subTypes.at(1); - return QDBusType(); -} - -/*! - Returns true if this type is the same one as \a other. -*/ -bool QDBusType::operator==(const QDBusType& other) const -{ - if (!d && !other.d) - return true; - if (!d || !other.d) - return false; - return d->code == other.d->code && d->subTypes == other.d->subTypes; -} - -/*! - \fn QDBusType::operator!=(const QDBusType &other) const - Returns true if the this type and the one given by \a other are different. -*/ - -/*! - Converts the DBus type code \a type to QVariant::Type. -*/ -int QDBusType::qvariantType(int type) -{ - char c[2] = { type, 0 }; - return qvariantType(c); -} - -/*! - Converts the DBus type signature \a signature to QVariant::Type. -*/ -int QDBusType::qvariantType(const char* signature) -{ - if (!signature) - return QVariant::Invalid; - - // three special cases that don't validate as single: - if (qstrlen(signature) == 1) { - if (signature[0] == DBUS_TYPE_STRUCT) - return QVariant::List; - else if (signature[0] == DBUS_TYPE_DICT_ENTRY) - return QVariant::Map; - else if (signature[0] == DBUS_TYPE_ARRAY) - return QVariant::List; - } - - // now we can validate - if ( !dbus_signature_validate_single(signature, 0) ) - return QVariant::Invalid; - - switch (signature[0]) - { - case DBUS_TYPE_BOOLEAN: - return QVariant::Bool; - - case DBUS_TYPE_BYTE: - return QMetaType::UChar; - - case DBUS_TYPE_INT16: - return QMetaType::Short; - - case DBUS_TYPE_UINT16: - return QMetaType::UShort; - - case DBUS_TYPE_INT32: - return QVariant::Int; - - case DBUS_TYPE_UINT32: - return QVariant::UInt; - - case DBUS_TYPE_INT64: - return QVariant::LongLong; - - case DBUS_TYPE_UINT64: - return QVariant::ULongLong; - - case DBUS_TYPE_DOUBLE: - return QVariant::Double; - - case DBUS_TYPE_STRING: - case DBUS_TYPE_OBJECT_PATH: - case DBUS_TYPE_SIGNATURE: - return QVariant::String; - - case DBUS_STRUCT_BEGIN_CHAR: - return QVariant::List; // change to QDBusStruct in the future - - case DBUS_TYPE_VARIANT: - return QDBusTypeHelper::id(); - - case DBUS_TYPE_ARRAY: // special case - switch (signature[1]) { - case DBUS_TYPE_BOOLEAN: - return QDBusTypeHelper::listId(); - - case DBUS_TYPE_BYTE: - return QVariant::ByteArray; - - case DBUS_TYPE_INT16: - return QDBusTypeHelper::listId(); - - case DBUS_TYPE_UINT16: - return QDBusTypeHelper::listId(); - - case DBUS_TYPE_INT32: - return QDBusTypeHelper::listId(); - - case DBUS_TYPE_UINT32: - return QDBusTypeHelper::listId(); - - case DBUS_TYPE_INT64: - return QDBusTypeHelper::listId(); - - case DBUS_TYPE_UINT64: - return QDBusTypeHelper::listId(); - - case DBUS_TYPE_DOUBLE: - return QDBusTypeHelper::listId(); - - case DBUS_TYPE_STRING: - case DBUS_TYPE_OBJECT_PATH: - case DBUS_TYPE_SIGNATURE: - return QVariant::StringList; - - case DBUS_TYPE_VARIANT: - return QVariant::List; - - case DBUS_DICT_ENTRY_BEGIN_CHAR: - return QVariant::Map; - - default: - return QVariant::List; - } - default: - return QVariant::Invalid; - - } -} - -/*! - Converts the QVariant::Type \a t to a DBus type code. -*/ -int QDBusType::dbusType(QVariant::Type t) -{ - switch (t) - { - case QVariant::Bool: - return DBUS_TYPE_BOOLEAN; - - case QVariant::Int: - return DBUS_TYPE_INT32; - - case QVariant::UInt: - return DBUS_TYPE_UINT32; - - case QVariant::LongLong: - return DBUS_TYPE_INT64; - - case QVariant::ULongLong: - return DBUS_TYPE_UINT64; - - case QVariant::Double: - return DBUS_TYPE_DOUBLE; - - // from QMetaType: - case QMetaType::Short: - return DBUS_TYPE_INT16; - - case QMetaType::UShort: - return DBUS_TYPE_UINT16; - - case QMetaType::UChar: - return DBUS_TYPE_BYTE; - - case QVariant::String: - return DBUS_TYPE_STRING; - - case QVariant::Map: - // internal type information has been lost - return DBUS_TYPE_DICT_ENTRY; - - case QVariant::List: - case QVariant::StringList: - case QVariant::ByteArray: - // could also be a struct... - return DBUS_TYPE_ARRAY; - - case QVariant::UserType: - return DBUS_TYPE_INVALID; // invalid - - default: - break; // avoid compiler warnings - } - - if (int(t) == QDBusTypeHelper::id()) - return DBUS_TYPE_VARIANT; - - return DBUS_TYPE_INVALID; -} - -/*! - Converts the QVariant::Type \a t to a DBus type signature. -*/ -const char* QDBusType::dbusSignature(QVariant::Type t) -{ - switch (t) - { - case QVariant::Bool: - return DBUS_TYPE_BOOLEAN_AS_STRING; - - case QVariant::Int: - return DBUS_TYPE_INT32_AS_STRING; - - case QVariant::UInt: - return DBUS_TYPE_UINT32_AS_STRING; - - case QMetaType::Short: - return DBUS_TYPE_INT16_AS_STRING; - - case QMetaType::UShort: - return DBUS_TYPE_UINT16_AS_STRING; - - case QMetaType::UChar: - return DBUS_TYPE_BYTE_AS_STRING; - - case QVariant::LongLong: - return DBUS_TYPE_INT64_AS_STRING; - - case QVariant::ULongLong: - return DBUS_TYPE_UINT64_AS_STRING; - - case QVariant::Double: - return DBUS_TYPE_DOUBLE_AS_STRING; - - case QVariant::String: - return DBUS_TYPE_STRING_AS_STRING; - - case QVariant::Map: - // internal type information has been lost - return DBUS_TYPE_ARRAY_AS_STRING - DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING - DBUS_TYPE_STRING_AS_STRING - DBUS_TYPE_VARIANT_AS_STRING - DBUS_DICT_ENTRY_END_CHAR_AS_STRING; // a{sv} - - case QVariant::StringList: - return DBUS_TYPE_ARRAY_AS_STRING - DBUS_TYPE_STRING_AS_STRING; // as - - case QVariant::ByteArray: - return DBUS_TYPE_ARRAY_AS_STRING - DBUS_TYPE_BYTE_AS_STRING; // ay - - case QVariant::List: - // not a string list - // internal list data has been lost - // could also be a struct... - return DBUS_TYPE_ARRAY_AS_STRING - DBUS_TYPE_VARIANT_AS_STRING; // av - - default: - if (int(t) == QDBusTypeHelper::id()) - return DBUS_TYPE_VARIANT_AS_STRING; - if (int(t) == QDBusTypeHelper::listId()) - return DBUS_TYPE_ARRAY_AS_STRING DBUS_TYPE_BOOLEAN_AS_STRING; - if (int(t) == QDBusTypeHelper::listId()) - return DBUS_TYPE_ARRAY_AS_STRING DBUS_TYPE_INT16_AS_STRING; - if (int(t) == QDBusTypeHelper::listId()) - return DBUS_TYPE_ARRAY_AS_STRING DBUS_TYPE_UINT16_AS_STRING; - if (int(t) == QDBusTypeHelper::listId()) - return DBUS_TYPE_ARRAY_AS_STRING DBUS_TYPE_INT32_AS_STRING; - if (int(t) == QDBusTypeHelper::listId()) - return DBUS_TYPE_ARRAY_AS_STRING DBUS_TYPE_UINT32_AS_STRING; - if (int(t) == QDBusTypeHelper::listId()) - return DBUS_TYPE_ARRAY_AS_STRING DBUS_TYPE_INT64_AS_STRING; - if (int(t) == QDBusTypeHelper::listId()) - return DBUS_TYPE_ARRAY_AS_STRING DBUS_TYPE_UINT64_AS_STRING; - if (int(t) == QDBusTypeHelper::listId()) - return DBUS_TYPE_ARRAY_AS_STRING DBUS_TYPE_DOUBLE_AS_STRING; - - return DBUS_TYPE_INVALID_AS_STRING; - } -} - -/*! - \enum QDBusType::VariantListMode - Defines how the guessFromVariant() function will behave when the QVariant is of type - QVariant::List. -*/ - -/*! - Guesses the DBus type from the given \a variant. -*/ -QDBusType QDBusType::guessFromVariant(const QVariant& variant, VariantListMode mode) -{ - if (variant.type() == QVariant::List) { - // investigate deeper - QDBusType t; - t.d = new QDBusTypePrivate; - const QVariantList list = variant.toList(); - - t.d->code = DBUS_TYPE_ARRAY; - if (!list.isEmpty()) { - // check if all elements have the same type - QVariant::Type type = list.first().type(); - foreach (const QVariant& v, list) - if (type != v.type()) { - // at least one is different - type = QVariant::Invalid; - break; - } - - if (type != QVariant::Invalid) { - // all are of the same type - t.d->subTypes << guessFromVariant(list.first()); - return t; - } - } else { - // an array of "something" - t.d->subTypes << QDBusType('v'); - return t; - } - - // treat it as a struct - t.d->code = DBUS_TYPE_STRUCT; - foreach (const QVariant& v, list) - t.d->subTypes << guessFromVariant(v, mode); - - return t; - } - else if (variant.type() == QVariant::Map) { - // investigate deeper - QDBusType t, t2, t3; - t2.d = new QDBusTypePrivate; - t2.d->code = DBUS_TYPE_DICT_ENTRY; - - // the key - t3.d = new QDBusTypePrivate; - t3.d->code = DBUS_TYPE_STRING; - t2.d->subTypes << t3; - - const QVariantMap map = variant.toMap(); - if (!map.isEmpty()) { - // check if all elements have the same type - QVariantMap::const_iterator it = map.constBegin(), - end = map.constEnd(); - QVariant::Type type = it.value().type(); - for ( ; it != end; ++it) - if (type != it.value().type()) { - // at least one is different - type = QVariant::Invalid; - break; - } - - if (type != QVariant::Invalid) - t2.d->subTypes << guessFromVariant(map.constBegin().value()); - else { - // multiple types - t3.d->code = DBUS_TYPE_VARIANT; - t2.d->subTypes << t3; - } - } - else { - // information lost - t3.d->code = DBUS_TYPE_VARIANT; - t2.d->subTypes << t3; - } - - t.d = new QDBusTypePrivate; - t.d->code = DBUS_TYPE_ARRAY; - t.d->subTypes << t2; - return t; - } - else - return QDBusType( QVariant::Type( variant.userType() ) ); -} - -/*! - \class QDBusTypeList - \brief A list of DBus types. - \internal - - Represents zero or more DBus types in sequence, such as those used in argument lists - or in subtypes of structs and maps. -*/ - -/*! - \fn QDBusTypeList::QDBusTypeList() - - Default constructor. - */ - -/*! - \fn QDBusTypeList::QDBusTypeList(const QDBusTypeList& other) - - Copy constructor: copies the type list from \a other. -*/ - -/*! - \fn QDBusTypeList::QDBusTypeList(const QList& other) - - Copy constructor: copies the type list from \a other. -*/ - -/*! - Constructs a type list by parsing the given \a signature. -*/ -QDBusTypeList::QDBusTypeList(const char* signature) -{ - if (!signature || !*signature) - return; // empty - - // validate it first - if ( !dbus_signature_validate(signature, 0) ) - return; - - // split it into components - DBusSignatureIter iter; - dbus_signature_iter_init(&iter, signature); - - do { - *this << QDBusType(&iter); - } while (dbus_signature_iter_next(&iter)); -} - -/*! - \internal - Constructs a type list by parsing the elements on this iterator level. -*/ -QDBusTypeList::QDBusTypeList(DBusSignatureIter* iter) -{ - do { - QDBusType item(iter); - if (!item.isValid()) { - clear(); - return; - } - - *this << item; - } while (dbus_signature_iter_next(iter)); -} - -/*! - Returns true if this type list can represent the inner components of a map. -*/ -bool QDBusTypeList::canBeMap() const -{ - return size() == 2 && at(0).isBasic(); -} - -/*! - Reconstructs the type signature that this type list represents. -*/ -QByteArray QDBusTypeList::dbusSignature() const -{ - QByteArray retval; - foreach (QDBusType t, *this) - retval += t.dbusSignature(); - return retval; -} diff --git a/qt/qdbustype_p.h b/qt/qdbustype_p.h deleted file mode 100644 index b719960e..00000000 --- a/qt/qdbustype_p.h +++ /dev/null @@ -1,109 +0,0 @@ -/* -*- C++ -*- - * - * Copyright (C) 2005 Thiago Macieira - * Copyright (C) 2006 Trolltech AS. All rights reserved. - * Author: Thiago Macieira - * - * Licensed under the Academic Free License version 2.1 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#ifndef QDBUSTYPE_H -#define QDBUSTYPE_H - -#include -#include -#include -#include -#include "qdbusmacros.h" -#include - -// forward declaration -class QDBusTypeList; - -class QDBusTypePrivate; -class QDBUS_EXPORT QDBusType -{ -public: - QDBusType(); - explicit QDBusType(int type); - explicit QDBusType(QVariant::Type type); - explicit QDBusType(const char* signature); - explicit QDBusType(DBusSignatureIter*); - explicit QDBusType(const QString& str); - explicit QDBusType(const QByteArray& str); - QDBusType(const QDBusType& other); - - ~QDBusType(); - - QDBusType& operator=(const QDBusType& other); - - int qvariantType() const; - - int dbusType() const; - QByteArray dbusSignature() const; - bool isValid() const; - bool isBasic() const; - bool isContainer() const; - - QDBusTypeList subTypes() const; - - bool isArray() const; - QDBusType arrayElement() const; - - bool isMap() const; - QDBusType mapKey() const; - QDBusType mapValue() const; - - bool operator==(const QDBusType& other) const; - inline bool operator!=(const QDBusType &other) const - { return !(*this == other); } - - static int qvariantType(int type); - static int qvariantType(const char* signature); - static int dbusType(QVariant::Type); - static const char* dbusSignature(QVariant::Type); - - enum VariantListMode { - ListIsArray, - ListIsStruct - }; - static QDBusType guessFromVariant(const QVariant &variant, VariantListMode = ListIsArray); - -private: - QSharedDataPointer d; -}; - -class QDBUS_EXPORT QDBusTypeList: public QList -{ -public: - inline QDBusTypeList() { } - inline QDBusTypeList(const QDBusTypeList& other) - : QList(other) - { } - inline QDBusTypeList(const QList& other) - : QList(other) - { } - QDBusTypeList(const char* signature); - QDBusTypeList(DBusSignatureIter*); - - bool canBeMap() const; - - QByteArray dbusSignature() const; -}; - -#endif // QDBUSTYPE_H diff --git a/qt/qdbustypehelper_p.h b/qt/qdbustypehelper_p.h deleted file mode 100644 index 7ebd7f3e..00000000 --- a/qt/qdbustypehelper_p.h +++ /dev/null @@ -1,231 +0,0 @@ -/* qdbuslisthelper_p.h Helper class to convert to and from QVariantList - * - * Copyright (C) 2005 Harald Fernengel - * Copyright (C) 2006 Trolltech AS. All rights reserved. - * Author: Thiago Macieira - * - * Licensed under the Academic Free License version 2.1 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -// -// W A R N I N G -// ------------- -// -// This file is not part of the public API. This header file may -// change from version to version without notice, or even be -// removed. -// -// We mean it. -// -// - -#ifndef QDBUSTYPEHELPERPRIVATE_H -#define QDBUSTYPEHELPERPRIVATE_H - -#include -#include -#include - -// we're going to support all D-Bus primitive types here: -// uchar -- not needed: QByteArray -// bool -// short -// ushort -// int -// uint -// qlonglong -// qulonglong -// double -// QString -- not needed: QStringList -// QList -- not possible: will use QVariant -// QVariant -// QDBusStruct -- not yet existant -// QMap -- not possible: will use QVariant - -inline QDBUS_EXPORT int qDBusMetaTypeId(bool *) { return QVariant::Bool; } -inline QDBUS_EXPORT int qDBusMetaTypeId(uchar *) { return QMetaType::UChar; } -inline QDBUS_EXPORT int qDBusMetaTypeId(short *) { return QMetaType::Short; } -inline QDBUS_EXPORT int qDBusMetaTypeId(ushort *) { return QMetaType::UShort; } -inline QDBUS_EXPORT int qDBusMetaTypeId(int *) { return QVariant::Int; } -inline QDBUS_EXPORT int qDBusMetaTypeId(uint *) { return QVariant::UInt; } -inline QDBUS_EXPORT int qDBusMetaTypeId(qlonglong *) { return QVariant::LongLong; } -inline QDBUS_EXPORT int qDBusMetaTypeId(qulonglong *) { return QVariant::ULongLong; } -inline QDBUS_EXPORT int qDBusMetaTypeId(double *) { return QVariant::Double; } -inline QDBUS_EXPORT int qDBusMetaTypeId(QString *) { return QVariant::String; } -QDBUS_EXPORT int qDBusMetaTypeId(QVariant *); -QDBUS_EXPORT int qDBusMetaTypeId(QList *); -inline QDBUS_EXPORT int qDBusMetaTypeId(QByteArray *) { return QVariant::ByteArray; } -QDBUS_EXPORT int qDBusMetaTypeId(QList *); -QDBUS_EXPORT int qDBusMetaTypeId(QList *); -QDBUS_EXPORT int qDBusMetaTypeId(QList *); -QDBUS_EXPORT int qDBusMetaTypeId(QList *); -QDBUS_EXPORT int qDBusMetaTypeId(QList *); -QDBUS_EXPORT int qDBusMetaTypeId(QList *); -QDBUS_EXPORT int qDBusMetaTypeId(QList *); -inline QDBUS_EXPORT int qDBusMetaTypeId(QStringList *) { return QVariant::StringList; } -inline QDBUS_EXPORT int qDBusMetaTypeId(QVariantList *) { return QVariant::List; } -inline QDBUS_EXPORT int qDBusMetaTypeId(QVariantMap *) { return QVariant::Map; } - -// implement the copy mechanism -template -struct QDBusTypeHelper -{ - typedef T Type; - typedef QList List; - - static inline int id() - { - Type* t = 0; - return qDBusMetaTypeId(t); - } - - static inline int listId() - { - List *l = 0; - return qDBusMetaTypeId(l); - } - - static inline QVariant toVariant(const Type &t) - { - return QVariant(id(), &t); - } - - static bool canSpecialConvert(const QVariant &); - static Type specialConvert(const QVariant &); - - static inline Type fromVariant(const QVariant &v) - { - if (canSpecialConvert(v)) - return specialConvert(v); - - QVariant copy(v); - if (copy.convert( QVariant::Type(id()) )) - return *reinterpret_cast(copy.constData()); - return Type(); - } - - static inline QVariantList toVariantList(const List list) - { - QVariantList tmp; - Q_FOREACH (const Type &t, list) - tmp.append(toVariant(t)); - return tmp; - } - - static inline QVariantList toVariantList(const QVariant &v) - { - return toVariantList(QDBusTypeHelper::fromVariant(v)); - } - - static inline List fromVariantList(const QVariantList list) - { - List tmp; - Q_FOREACH (const QVariant &v, list) - tmp.append(fromVariant(v)); - return tmp; - } -}; - -template<> -struct QDBusTypeHelper -{ - static inline int id() - { - QVariant *t = 0; - return qDBusMetaTypeId(t); - } - - static inline int listId() - { - return QVariant::List; - } - - static inline QVariant toVariant(const QVariant &t) - { - return QVariant(id(), &t); - } - - static inline QVariant fromVariant(const QVariant &v) - { - if (v.userType() == id()) - return *reinterpret_cast(v.constData()); - return v; - } - - static inline QVariantList toVariantList(const QVariantList &list) - { - return list; - } - - static inline QVariantList fromVariantList(const QVariantList &list) - { - return list; - } -}; - -#if !defined(QT_NO_CAST_FROM_ASCII) && !defined(QT_NO_CAST_TO_ASCII) -template<> -struct QDBusTypeHelper -{ - static inline int id() - { return QVariant::String; } - - static inline QVariant toVariant(const char *t) - { return QVariant(t); } - - static inline QByteArray fromVariant(const QVariant &v) - { return v.toString().toAscii(); } -}; - -template<> -struct QDBusTypeHelper -{ - static inline int id() - { return QVariant::String; } - - static inline QVariant toVariant(const char *t) - { return QVariant(t); } - - static inline QByteArray fromVariant(const QVariant &v) - { return v.toString().toAscii(); } -}; -#endif - -// support three exceptions: uchar, short and ushort -// we have to do this as long as QVariant can't convert to/from the integer metatypes -template<> inline bool QDBusTypeHelper::canSpecialConvert(const QVariant &v) -{ return v.userType() < int(QVariant::UserType); } -template<> inline short QDBusTypeHelper::specialConvert(const QVariant &v) -{ return v.toInt(); } - -template<> inline bool QDBusTypeHelper::canSpecialConvert(const QVariant &v) -{ return v.userType() < int(QVariant::UserType); } -template<> inline ushort QDBusTypeHelper::specialConvert(const QVariant &v) -{ return v.toUInt(); } - -template<> inline bool QDBusTypeHelper::canSpecialConvert(const QVariant &v) -{ return v.userType() < int(QVariant::UserType); } -template<> inline uchar QDBusTypeHelper::specialConvert(const QVariant &v) -{ return v.toUInt(); } - -template inline bool QDBusTypeHelper::canSpecialConvert(const QVariant &) -{ return false; } -template inline T QDBusTypeHelper::specialConvert(const QVariant &) -{ return T(); } - -#endif diff --git a/qt/qdbusutil.cpp b/qt/qdbusutil.cpp deleted file mode 100644 index 872434c5..00000000 --- a/qt/qdbusutil.cpp +++ /dev/null @@ -1,235 +0,0 @@ -/* -*- C++ -*- - * - * Copyright (C) 2006 Trolltech AS. All rights reserved. - * Author: Thiago Macieira - * - * Licensed under the Academic Free License version 2.1 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#include "qdbusutil.h" - -#include - -#include -#include - -#include "qdbustype_p.h" - -/*! - \namespace QDBusUtil - The QDBusUtil namespace contains a few functions that are of general use when dealing with D-Bus - strings. -*/ -namespace QDBusUtil -{ - /*! - \fn QDBusUtil::isValidInterfaceName(const QString &ifaceName) - Returns true if this is \a ifaceName is a valid interface name. - - Valid interface names must: - \list - \o not be empty - \o not exceed 255 characters in length - \o be composed of dot-separated string components that contain only ASCII letters, digits - and the underscore ("_") character - \o contain at least two such components - \endlist - */ - bool isValidInterfaceName(const QString& ifaceName) - { - if (ifaceName.isEmpty() || ifaceName.length() > DBUS_MAXIMUM_NAME_LENGTH) - return false; - - QStringList parts = ifaceName.split(QLatin1Char('.')); - if (parts.count() < 2) - return false; // at least two parts - - foreach (QString part, parts) - if (!isValidMemberName(part)) - return false; - - return true; - } - - /*! - \fn QDBusUtil::isValidUniqueConnectionName(const QString &connName) - Returns true if \a connName is a valid unique connection name. - - Unique connection names start with a colon (":") and are followed by a list of dot-separated - components composed of ASCII letters, digits, the hypen or the underscore ("_") character. - */ - bool isValidUniqueConnectionName(const QString &connName) - { - if (connName.isEmpty() || connName.length() > DBUS_MAXIMUM_NAME_LENGTH || - !connName.startsWith(QLatin1Char(':'))) - return false; - - QStringList parts = connName.mid(1).split(QLatin1Char('.')); - if (parts.count() < 1) - return false; - - QRegExp regex(QLatin1String("[a-zA-Z0-9_-]+")); - foreach (QString part, parts) - if (!regex.exactMatch(part)) - return false; - - return true; - } - - /*! - \fn QDBusUtil::isValidBusName(const QString &busName) - Returns true if \a busName is a valid bus name. - - A valid bus name is either a valid unique connection name or follows the rules: - \list - \o is not empty - \o does not exceed 255 characters in length - \o be composed of dot-separated string components that contain only ASCII letters, digits, - hyphens or underscores ("_"), but don't start with a digit - \o contains at least two such elements - \endlist - - \sa isValidUniqueConnectionName() - */ - bool isValidBusName(const QString &busName) - { - if (busName.isEmpty() || busName.length() > DBUS_MAXIMUM_NAME_LENGTH) - return false; - - if (busName.startsWith(QLatin1Char(':'))) - return isValidUniqueConnectionName(busName); - - QStringList parts = busName.split(QLatin1Char('.')); - if (parts.count() < 1) - return false; - - QRegExp regex(QLatin1String("[a-zA-Z_-][a-zA-Z0-9_-]*")); - foreach (QString part, parts) - if (!regex.exactMatch(part)) - return false; - - return true; - } - - /*! - \fn QDBusUtil::isValidMemberName(const QString &memberName) - Returns true if \a memberName is a valid member name. A valid member name does not exceed - 255 characters in length, is not empty, is composed only of ASCII letters, digits and - underscores, but does not start with a digit. - */ - bool isValidMemberName(const QString &memberName) - { - if (memberName.isEmpty() || memberName.length() > DBUS_MAXIMUM_NAME_LENGTH) - return false; - - QRegExp regex(QLatin1String("[a-zA-Z_][a-zA-Z0-9_]+")); - return regex.exactMatch(memberName); - } - - /*! - \fn QDBusUtil::isValidErrorName(const QString &errorName) - Returns true if \a errorName is a valid error name. Valid error names are valid interface - names and vice-versa, so this function is actually an alias for isValidInterfaceName. - */ - bool isValidErrorName(const QString &errorName) - { - return isValidInterfaceName(errorName); - } - - /*! - \fn QDBusUtil::isValidObjectPath(const QString &path) - Returns true if \a path is valid object path. - - Valid object paths follow the rules: - \list - \o start with the slash character ("/") - \o do not end in a slash, unless the path is just the initial slash - \o do not contain any two slashes in sequence - \o contain slash-separated parts, each of which is composed of ASCII letters, digits and - underscores ("_") - \endlist - */ - bool isValidObjectPath(const QString &path) - { - if (path == QLatin1String("/")) - return true; - - if (!path.startsWith(QLatin1Char('/')) || path.indexOf(QLatin1String("//")) != -1 || - path.endsWith(QLatin1Char('/'))) - return false; - - QStringList parts = path.split(QLatin1Char('/')); - Q_ASSERT(parts.count() >= 1); - parts.removeFirst(); // it starts with /, so we get an empty first part - - QRegExp regex(QLatin1String("[a-zA-Z0-9_]+")); - foreach (QString part, parts) - if (!regex.exactMatch(part)) - return false; - - return true; - } - - /*! - \fn QDBusUtil::isValidSignature(const QString &signature) - Returns true if \a signature is a valid D-Bus type signature for one or more types. - This function returns true if it can all of \a signature into valid, individual types and no - characters remain in \a signature. - - \sa isValidSingleSignature() - */ - bool isValidSignature(const QString &signature) - { - return dbus_signature_validate(signature.toUtf8(), 0); - } - - /*! - \fn QDBusUtil::isValidSingleSignature(const QString &signature) - Returns true if \a signature is a valid D-Bus type signature for exactly one full type. This - function tries to convert the type signature into a D-Bus type and, if it succeeds and no - characters remain in the signature, it returns true. - */ - bool isValidSingleSignature(const QString &signature) - { - return dbus_signature_validate_single(signature.toUtf8(), 0); - } - - /*! - \fn QDBusUtil::signatureToType(const QString &signature) - Returns the Qt meta type id for the given D-Bus signature for exactly one full type, given - by \a signature. - - \sa isValidSingleSignature(), typeToSignature(), QVariant::type(), QVariant::userType() - */ - QVariant::Type signatureToType(const QString &signature) - { - return QVariant::Type( QDBusType::qvariantType(signature.toLatin1().constData()) ); - } - - /*! - \fn QDBusUtil::typeToSignature(QVariant::Type type) - Returns the D-Bus signature equivalent to the supplied meta type id \a type. - - \sa isValidSingleSignature(), signatureToType(), QVariant::type(), QVariant::userType() - */ - const char *typeToSignature(QVariant::Type type) - { - return QDBusType::dbusSignature( type ); - } - -} // namespace QDBusUtil diff --git a/qt/qdbusutil.h b/qt/qdbusutil.h deleted file mode 100644 index dd2b4df9..00000000 --- a/qt/qdbusutil.h +++ /dev/null @@ -1,55 +0,0 @@ -/* -*- C++ -*- - * - * Copyright (C) 2006 Trolltech AS. All rights reserved. - * Author: Thiago Macieira - * - * Licensed under the Academic Free License version 2.1 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#ifndef QDBUSUTIL_H -#define QDBUSUTIL_H - -#include -#include - -#include "qdbusmacros.h" - -namespace QDBusUtil -{ - QDBUS_EXPORT bool isValidInterfaceName(const QString &ifaceName); - - QDBUS_EXPORT bool isValidUniqueConnectionName(const QString &busName); - - QDBUS_EXPORT bool isValidBusName(const QString &busName); - - QDBUS_EXPORT bool isValidMemberName(const QString &memberName); - - QDBUS_EXPORT bool isValidErrorName(const QString &errorName); - - QDBUS_EXPORT bool isValidObjectPath(const QString &path); - - QDBUS_EXPORT bool isValidSignature(const QString &signature); - - QDBUS_EXPORT bool isValidSingleSignature(const QString &signature); - - QDBUS_EXPORT QVariant::Type signatureToType(const QString &signature); - - QDBUS_EXPORT const char *typeToSignature(QVariant::Type type); -} - -#endif diff --git a/qt/qdbusxmlgenerator.cpp b/qt/qdbusxmlgenerator.cpp deleted file mode 100644 index 561985ab..00000000 --- a/qt/qdbusxmlgenerator.cpp +++ /dev/null @@ -1,192 +0,0 @@ -/* -*- mode: C++ -*- - * - * Copyright (C) 2006 Trolltech AS. All rights reserved. - * Author: Thiago Macieira - * - * Licensed under the Academic Free License version 2.1 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#include -#include -#include - -#include "qdbusinterface_p.h" // for ANNOTATION_NO_WAIT -#include "qdbusabstractadaptor_p.h" // for QCLASSINFO_DBUS_* -#include "qdbusconnection_p.h" // for the flags -#include "qdbusutil.h" - -extern QDBUS_EXPORT QString qDBusGenerateMetaObjectXml(QString interface, const QMetaObject *mo, - const QMetaObject *base, int flags); - -// implement the D-Bus org.freedesktop.DBus.Introspectable interface -// we do that by analysing the metaObject of all the adaptor interfaces - -static QString generateInterfaceXml(const QMetaObject *mo, int flags, int methodOffset, int propOffset) -{ - QString retval; - - // start with properties: - if (flags & QDBusConnection::ExportProperties) { - for (int i = propOffset; i < mo->propertyCount(); ++i) { - static const char *accessvalues[] = {0, "read", "write", "readwrite"}; - - QMetaProperty mp = mo->property(i); - - if (!mp.isScriptable() && (flags & QDBusConnection::ExportAllProperties) != - QDBusConnection::ExportAllProperties) - continue; - - int access = 0; - if (mp.isReadable()) - access |= 1; - if (mp.isWritable()) - access |= 2; - - int typeId = qDBusNameToTypeId(mp.typeName()); - if (!typeId) - continue; - - retval += QString(QLatin1String(" \n")) - .arg(mp.name()) - .arg(QLatin1String( QDBusUtil::typeToSignature( QVariant::Type(typeId) ))) - .arg(QLatin1String( accessvalues[access] )); - } - } - - // now add methods: - for (int i = methodOffset; i < mo->methodCount(); ++i) { - QMetaMethod mm = mo->method(i); - QByteArray signature = mm.signature(); - int paren = signature.indexOf('('); - - bool isSignal; - if (mm.methodType() == QMetaMethod::Signal) - // adding a signal - isSignal = true; - else if (mm.methodType() == QMetaMethod::Slot && mm.access() == QMetaMethod::Public) - isSignal = false; - else - continue; // neither signal nor public slot - - if ((isSignal && !(flags & QDBusConnection::ExportSignals)) || - (!isSignal && !(flags & QDBusConnection::ExportSlots))) - continue; - - QString xml = QString(QLatin1String(" <%1 name=\"%2\">\n")) - .arg(isSignal ? QLatin1String("signal") : QLatin1String("method")) - .arg(QLatin1String(signature.left(paren))); - - // check the return type first - int typeId = qDBusNameToTypeId(mm.typeName()); - if (typeId) - xml += QString(QLatin1String(" \n")) - .arg(QLatin1String(QDBusUtil::typeToSignature( QVariant::Type(typeId) ))); - else if (*mm.typeName()) - continue; // wasn't a valid type - - QList names = mm.parameterNames(); - QList types; - int inputCount = qDBusParametersForMethod(mm, types); - if (inputCount == -1) - continue; // invalid form - if (isSignal && inputCount + 1 != types.count()) - continue; // signal with output arguments? - if (isSignal && types.at(inputCount) == QDBusConnectionPrivate::messageMetaType) - continue; // signal with QDBusMessage argument? - - int j; - bool isScriptable = mm.attributes() & QMetaMethod::Scriptable; - for (j = 1; j < types.count(); ++j) { - // input parameter for a slot or output for a signal - if (types.at(j) == QDBusConnectionPrivate::messageMetaType) { - isScriptable = true; - continue; - } - - QString name; - if (!names.at(j - 1).isEmpty()) - name = QString(QLatin1String("name=\"%1\" ")).arg(QLatin1String(names.at(j - 1))); - - bool isOutput = isSignal || j > inputCount; - - xml += QString(QLatin1String(" \n")) - .arg(name) - .arg(QLatin1String(QDBusUtil::typeToSignature( QVariant::Type(types.at(j)) ))) - .arg(isOutput ? QLatin1String("out") : QLatin1String("in")); - } - - if (!isScriptable) { - // check if this was added by other means - if (isSignal && (flags & QDBusConnection::ExportAllSignals) != QDBusConnection::ExportAllSignals) - continue; - if (!isSignal && (flags & QDBusConnection::ExportAllSlots) != QDBusConnection::ExportAllSlots) - continue; - } - - if (qDBusCheckAsyncTag(mm.tag())) - // add the no-reply annotation - xml += QLatin1String(" \n"); - - retval += xml; - retval += QString(QLatin1String(" \n")) - .arg(isSignal ? QLatin1String("signal") : QLatin1String("method")); - } - - return retval; -} - -QString qDBusGenerateMetaObjectXml(QString interface, const QMetaObject *mo, const QMetaObject *base, - int flags) -{ - if (interface.isEmpty()) { - // generate the interface name from the meta object - int idx = mo->indexOfClassInfo(QCLASSINFO_DBUS_INTERFACE); - if (idx >= mo->classInfoOffset()) { - interface = QLatin1String(mo->classInfo(idx).value()); - } else { - interface = QLatin1String(mo->className()); - interface.replace(QLatin1String("::"), QLatin1String(".")); - - if (interface.startsWith( QLatin1String("QDBus") )) { - interface.prepend( QLatin1String("com.trolltech.QtDBus.") ); - } else if (interface.startsWith( QLatin1Char('Q') )) { - // assume it's Qt - interface.prepend( QLatin1String("com.trolltech.Qt.") ); - } else if (!QCoreApplication::instance() || - QCoreApplication::instance()->applicationName().isEmpty()) { - interface.prepend( QLatin1String("local.") ); - } else { - interface.prepend(QLatin1Char('.')).prepend( QCoreApplication::instance()->applicationName() ); - QStringList domainName = QCoreApplication::instance()->organizationDomain().split(QLatin1Char('.')); - foreach (const QString &part, domainName) - interface.prepend(QLatin1Char('.')).prepend(part); - } - } - } - - QString xml; - int idx = mo->indexOfClassInfo(QCLASSINFO_DBUS_INTROSPECTION); - if (idx >= mo->classInfoOffset()) - return QString::fromUtf8(mo->classInfo(idx).value()); - else - xml = generateInterfaceXml(mo, flags, base->methodCount(), base->propertyCount()); - - return QString(QLatin1String(" \n%2 \n")) - .arg(interface, xml); -} diff --git a/qt/qdbusxmlparser.cpp b/qt/qdbusxmlparser.cpp deleted file mode 100644 index 0370cb23..00000000 --- a/qt/qdbusxmlparser.cpp +++ /dev/null @@ -1,308 +0,0 @@ -/* -*- C++ -*- - * - * Copyright (C) 2005 Thiago Macieira - * Copyright (C) 2006 Trolltech AS. All rights reserved. - * Author: Thiago Macieira - * - * Licensed under the Academic Free License version 2.1 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#include "qdbusxmlparser_p.h" -#include "qdbusinterface.h" -#include "qdbusinterface_p.h" -#include "qdbusconnection_p.h" -#include "qdbusutil.h" - -#include -#include -#include -#include - -static QDBusIntrospection::Annotations -parseAnnotations(const QDomElement& elem) -{ - QDBusIntrospection::Annotations retval; - QDomNodeList list = elem.elementsByTagName(QLatin1String("annotation")); - for (int i = 0; i < list.count(); ++i) - { - QDomElement ann = list.item(i).toElement(); - if (ann.isNull()) - continue; - - QString name = ann.attribute(QLatin1String("name")), - value = ann.attribute(QLatin1String("value")); - - if (name.isEmpty()) - continue; - - retval.insert(name, value); - } - - return retval; -} - -static QDBusIntrospection::Arguments -parseArgs(const QDomElement& elem, const QLatin1String& direction, bool acceptEmpty = false) -{ - QDBusIntrospection::Arguments retval; - QDomNodeList list = elem.elementsByTagName(QLatin1String("arg")); - for (int i = 0; i < list.count(); ++i) - { - QDomElement arg = list.item(i).toElement(); - if (arg.isNull()) - continue; - - if ((acceptEmpty && !arg.hasAttribute(QLatin1String("direction"))) || - arg.attribute(QLatin1String("direction")) == direction) { - - QDBusIntrospection::Argument argData; - if (arg.hasAttribute(QLatin1String("name"))) - argData.name = arg.attribute(QLatin1String("name")); // can be empty - argData.type = arg.attribute(QLatin1String("type")); - if (!QDBusUtil::isValidSingleSignature(argData.type)) - continue; - - retval << argData; - } - } - return retval; -} - -QDBusXmlParser::QDBusXmlParser(const QString& service, const QString& path, - const QString& xmlData) - : m_service(service), m_path(path) -{ - QDomDocument doc; - doc.setContent(xmlData); - m_node = doc.firstChildElement(QLatin1String("node")); -} - -QDBusXmlParser::QDBusXmlParser(const QString& service, const QString& path, - const QDomElement& node) - : m_service(service), m_path(path), m_node(node) -{ -} - -QDBusIntrospection::Interfaces -QDBusXmlParser::interfaces() const -{ - QDBusIntrospection::Interfaces retval; - - if (m_node.isNull()) - return retval; - - QDomNodeList interfaces = m_node.elementsByTagName(QLatin1String("interface")); - for (int i = 0; i < interfaces.count(); ++i) - { - QDomElement iface = interfaces.item(i).toElement(); - QString ifaceName = iface.attribute(QLatin1String("name")); - if (iface.isNull() || ifaceName.isEmpty()) - continue; // for whatever reason - - QDBusIntrospection::Interface *ifaceData = new QDBusIntrospection::Interface; - ifaceData->name = ifaceName; - { - // save the data - QTextStream ts(&ifaceData->introspection); - iface.save(ts,2); - } - - // parse annotations - ifaceData->annotations = parseAnnotations(iface); - - // parse methods - QDomNodeList list = iface.elementsByTagName(QLatin1String("method")); - for (int j = 0; j < list.count(); ++j) - { - QDomElement method = list.item(j).toElement(); - QString methodName = method.attribute(QLatin1String("name")); - if (method.isNull() || methodName.isEmpty()) - continue; - - QDBusIntrospection::Method methodData; - methodData.name = methodName; - - // parse arguments - methodData.inputArgs = parseArgs(method, QLatin1String("in")); - methodData.outputArgs = parseArgs(method, QLatin1String("out")); - methodData.annotations = parseAnnotations(method); - - // add it - ifaceData->methods.insert(methodName, methodData); - } - - // parse signals - list = iface.elementsByTagName(QLatin1String("signal")); - for (int j = 0; j < list.count(); ++j) - { - QDomElement signal = list.item(j).toElement(); - QString signalName = signal.attribute(QLatin1String("name")); - if (signal.isNull() || signalName.isEmpty()) - continue; - - QDBusIntrospection::Signal signalData; - signalData.name = signalName; - - // parse data - signalData.outputArgs = parseArgs(signal, QLatin1String("out"), true); - signalData.annotations = parseAnnotations(signal); - - // add it - ifaceData->signals_.insert(signalName, signalData); - } - - // parse properties - list = iface.elementsByTagName(QLatin1String("property")); - for (int j = 0; j < list.count(); ++j) - { - QDomElement property = list.item(j).toElement(); - QString propertyName = property.attribute(QLatin1String("name")); - if (property.isNull() || propertyName.isEmpty()) - continue; - - QDBusIntrospection::Property propertyData; - - // parse data - propertyData.name = propertyName; - propertyData.type = property.attribute(QLatin1String("type")); - propertyData.annotations = parseAnnotations(property); - - if (!QDBusUtil::isValidSingleSignature(propertyData.type)) - // cannot be! - continue; - - QString access = property.attribute(QLatin1String("access")); - if (access.isEmpty()) - // can't be empty either! - continue; - else if (access == QLatin1String("read")) - propertyData.access = QDBusIntrospection::Property::Read; - else if (access == QLatin1String("write")) - propertyData.access = QDBusIntrospection::Property::Write; - else if (access == QLatin1String("readwrite")) - propertyData.access = QDBusIntrospection::Property::ReadWrite; - else - continue; // invalid one! - - // add it - ifaceData->properties.insert(propertyName, propertyData); - } - - // add it - retval.insert(ifaceName, QSharedDataPointer(ifaceData)); - } - - return retval; -} - -QSharedDataPointer -QDBusXmlParser::object() const -{ - if (m_node.isNull()) - return QSharedDataPointer(); - - QDBusIntrospection::Object* objData; - objData = new QDBusIntrospection::Object; - objData->service = m_service; - objData->path = m_path; - - // check if we have anything to process - if (objData->introspection.isNull() && !m_node.firstChild().isNull()) { - // yes, introspect this object - QTextStream ts(&objData->introspection); - m_node.save(ts,2); - - QDomNodeList objects = m_node.elementsByTagName(QLatin1String("node")); - for (int i = 0; i < objects.count(); ++i) { - QDomElement obj = objects.item(i).toElement(); - QString objName = obj.attribute(QLatin1String("name")); - if (obj.isNull() || objName.isEmpty()) - continue; // for whatever reason - - objData->childObjects.append(objName); - } - - QDomNodeList interfaces = m_node.elementsByTagName(QLatin1String("interface")); - for (int i = 0; i < interfaces.count(); ++i) { - QDomElement iface = interfaces.item(i).toElement(); - QString ifaceName = iface.attribute(QLatin1String("name")); - if (iface.isNull() || ifaceName.isEmpty()) - continue; - - objData->interfaces.append(ifaceName); - } - } else { - objData->introspection = QLatin1String("\n"); - } - - QSharedDataPointer retval; - retval = objData; - return retval; -} - -QSharedDataPointer -QDBusXmlParser::objectTree() const -{ - QSharedDataPointer retval; - - if (m_node.isNull()) - return retval; - - retval = new QDBusIntrospection::ObjectTree; - - retval->service = m_service; - retval->path = m_path; - - QTextStream ts(&retval->introspection); - m_node.save(ts,2); - - // interfaces are easy: - retval->interfaceData = interfaces(); - retval->interfaces = retval->interfaceData.keys(); - - // sub-objects are slightly more difficult: - QDomNodeList objects = m_node.elementsByTagName(QLatin1String("node")); - for (int i = 0; i < objects.count(); ++i) { - QDomElement obj = objects.item(i).toElement(); - QString objName = obj.attribute(QLatin1String("name")); - if (obj.isNull() || objName.isEmpty()) - continue; // for whatever reason - - // check if we have anything to process - if (!obj.firstChild().isNull()) { - // yes, introspect this object - QString xml; - QTextStream ts(&xml); - obj.save(ts,0); - - // parse it - QString objAbsName = m_path; - if (!objAbsName.endsWith(QLatin1Char('/'))) - objAbsName.append(QLatin1Char('/')); - objAbsName += objName; - - QDBusXmlParser parser(m_service, objAbsName, obj); - retval->childObjectData.insert(objName, parser.objectTree()); - } - - retval->childObjects << objName; - } - - return QSharedDataPointer( retval ); -} - diff --git a/qt/qdbusxmlparser_p.h b/qt/qdbusxmlparser_p.h deleted file mode 100644 index 8f4f69b1..00000000 --- a/qt/qdbusxmlparser_p.h +++ /dev/null @@ -1,53 +0,0 @@ -/* -*- C++ -*- - * - * Copyright (C) 2005 Thiago Macieira - * Copyright (C) 2006 Trolltech AS. All rights reserved. - * Author: Thiago Macieira - * - * Licensed under the Academic Free License version 2.1 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#ifndef QDBUSXMLPARSER_H -#define QDBUSXMLPARSER_H - -#include -#include -#include "qdbusmacros.h" -#include "qdbusintrospection_p.h" - -/*! - \internal -*/ -class QDBusXmlParser -{ - QString m_service; - QString m_path; - QDomElement m_node; - -public: - QDBusXmlParser(const QString& service, const QString& path, - const QString& xmlData); - QDBusXmlParser(const QString& service, const QString& path, - const QDomElement& node); - - QDBusIntrospection::Interfaces interfaces() const; - QSharedDataPointer object() const; - QSharedDataPointer objectTree() const; -}; - -#endif diff --git a/qt/qt.tag b/qt/qt.tag new file mode 100644 index 00000000..494fb380 --- /dev/null +++ b/qt/qt.tag @@ -0,0 +1,66720 @@ + + + Q3Accel + q3accel.html + + Q3Accel + Q3Accel + ( QWidget * parent, const char * name = 0 ) + + + Q3Accel + Q3Accel-2 + ( QWidget * watch, QObject * parent, const char * name = 0 ) + + + activated + activated + ( int id ) + + + activatedAmbiguously + activatedAmbiguously + ( int id ) + + + clear + clear + () + + + connectItem + connectItem + ( int id, const QObject * receiver, const char * member ) + + + count + count + () + + + disconnectItem + disconnectItem + ( int id, const QObject * receiver, const char * member ) + + + findKey + findKey + ( const QKeySequence & key ) + + + insertItem + insertItem + ( const QKeySequence & key, int id = -1 ) + + + isEnabled + isEnabled + () + + + isItemEnabled + isItemEnabled + ( int id ) + + + key + key + ( int id ) + + + removeItem + removeItem + ( int id ) + + + setEnabled + setEnabled + ( bool enable ) + + + setItemEnabled + setItemEnabled + ( int id, bool enable ) + + + setWhatsThis + setWhatsThis + ( int id, const QString & text ) + + + shortcutKey + shortcutKey + ( const QString & str ) + + + whatsThis + whatsThis + ( int id ) + + + keyToString + keyToString + ( QKeySequence k ) + + + stringToKey + stringToKey + ( const QString & s ) + + + + Q3ActionGroup + q3actiongroup.html + + Q3ActionGroup + Q3ActionGroup + ( QObject * parent, const char * name = 0 ) + + + Q3ActionGroup + Q3ActionGroup-2 + ( QObject * parent, const char * name, bool exclusive ) + + + activated + activated + ( Q3Action * action ) + + + add + add + ( Q3Action * action ) + + + addSeparator + addSeparator + () + + + addTo + addTo + ( QWidget * w ) + + + addedTo + addedTo + ( QWidget * actionWidget, QWidget * container, Q3Action * a ) + + + addedTo + addedTo-2 + ( int index, Q3PopupMenu * menu, Q3Action * a ) + + + insert + insert + ( Q3Action * action ) + + + selected + selected + ( Q3Action * action ) + + + + Q3Action + q3action.html + + Q3Action + Q3Action + ( QObject * parent, const char * name = 0 ) + + + Q3Action + Q3Action-2 + ( const QString & menuText, QKeySequence accel, QObject * parent, const char * name = 0 ) + + + Q3Action + Q3Action-3 + ( const QIcon & icon, const QString & menuText, QKeySequence accel, QObject * parent, const char * name = 0 ) + + + Q3Action + Q3Action-4 + ( const QString & text, const QIcon & icon, const QString & menuText, QKeySequence accel, QObject * parent, const char * name = 0, bool toggle = false ) + + + Q3Action + Q3Action-5 + ( const QString & text, const QString & menuText, QKeySequence accel, QObject * parent, const char * name = 0, bool toggle = false ) + + + Q3Action + Q3Action-6 + ( QObject * parent, const char * name, bool toggle ) + + + activate + activate + () + + + activated + activated + () + + + addTo + addTo + ( QWidget * w ) + + + addedTo + addedTo + ( QWidget * actionWidget, QWidget * container ) + + + addedTo + addedTo-2 + ( int index, Q3PopupMenu * menu ) + + + removeFrom + removeFrom + ( QWidget * w ) + + + setDisabled + setDisabled + ( bool disable ) + + + toggle + toggle + () + + + toggled + toggled + ( bool on ) + + + + Q3AsciiCache + q3asciicache.html + + Q3AsciiCache + Q3AsciiCache-2 + ( int maxCost = 100, int size = 17, bool caseSensitive = true, bool copyKeys = true ) + + + clear + clear + () + + + count + count + () + + + find + find + ( const char * k, bool ref = true ) + + + insert + insert + ( const char * k, const type * d, int c = 1, int p = 0 ) + + + isEmpty + isEmpty + () + + + maxCost + maxCost + () + + + remove + remove + ( const char * k ) + + + setMaxCost + setMaxCost + ( int m ) + + + size + size + () + + + statistics + statistics + () + + + take + take + ( const char * k ) + + + totalCost + totalCost + () + + + operator[] + operator-5b-5d + ( const char * k ) + + + + Q3AsciiCacheIterator + q3asciicacheiterator.html + + Q3AsciiCacheIterator + Q3AsciiCacheIterator + ( const Q3AsciiCache<type> & cache ) + + + Q3AsciiCacheIterator + Q3AsciiCacheIterator-2 + ( const Q3AsciiCacheIterator<type> & ci ) + + + atFirst + atFirst + () + + + atLast + atLast + () + + + count + count + () + + + current + current + () + + + currentKey + currentKey + () + + + isEmpty + isEmpty + () + + + toFirst + toFirst + () + + + toLast + toLast + () + + + operator + operator-type--2a + type *() + + + operator() + operator-28-29 + () + + + operator++ + operator-2b-2b + () + + + operator+= + operator-2b-eq + ( uint jump ) + + + operator-- + operator-- + () + + + operator-= + operator--eq + ( uint jump ) + + + operator= + operator-eq + ( const Q3AsciiCacheIterator<type> & ci ) + + + + Q3AsciiDict + q3asciidict.html + + Q3AsciiDict + Q3AsciiDict + ( int size = 17, bool caseSensitive = true, bool copyKeys = true ) + + + Q3AsciiDict + Q3AsciiDict-2 + ( const Q3AsciiDict<type> & dict ) + + + clear + clear + () + + + count + count + () + + + find + find + ( const char * key ) + + + insert + insert + ( const char * key, const type * item ) + + + isEmpty + isEmpty + () + + + read + read + ( QDataStream & s, Q3PtrCollection::Item & item ) + + + remove + remove + ( const char * key ) + + + replace + replace + ( const char * key, const type * item ) + + + resize + resize + ( uint newsize ) + + + size + size + () + + + statistics + statistics + () + + + take + take + ( const char * key ) + + + write + write + ( QDataStream & s, Q3PtrCollection::Item item ) + + + operator= + operator-eq + ( const Q3AsciiDict<type> & dict ) + + + operator[] + operator-5b-5d + ( const char * key ) + + + + Q3AsciiDictIterator + q3asciidictiterator.html + + Q3AsciiDictIterator + Q3AsciiDictIterator + ( const Q3AsciiDict<type> & dict ) + + + count + count + () + + + current + current + () + + + currentKey + currentKey + () + + + isEmpty + isEmpty + () + + + toFirst + toFirst + () + + + operator + operator-type--2a + type *() + + + operator() + operator-28-29 + () + + + operator++ + operator-2b-2b + () + + + operator+= + operator-2b-eq + ( uint jump ) + + + + Q3ButtonGroup + q3buttongroup.html + + Q3ButtonGroup + Q3ButtonGroup + ( QWidget * parent = 0, const char * name = 0 ) + + + Q3ButtonGroup + Q3ButtonGroup-2 + ( const QString & title, QWidget * parent = 0, const char * name = 0 ) + + + Q3ButtonGroup + Q3ButtonGroup-3 + ( int strips, Qt::Orientation orientation, QWidget * parent = 0, const char * name = 0 ) + + + Q3ButtonGroup + Q3ButtonGroup-4 + ( int strips, Qt::Orientation orientation, const QString & title, QWidget * parent = 0, const char * name = 0 ) + + + clicked + clicked + ( int id ) + + + count + count + () + + + find + find + ( int id ) + + + id + id + ( QAbstractButton * button ) + + + insert + insert + ( QAbstractButton * button, int id = -1 ) + + + pressed + pressed + ( int id ) + + + released + released + ( int id ) + + + remove + remove + ( QAbstractButton * button ) + + + selected + selected + () + + + + Q3Button + q3button.html + + Q3Button + Q3Button + ( QWidget * parent = 0, const char * name = 0, Qt::WFlags f = 0 ) + + + drawButton + drawButton + ( QPainter * painter ) + + + drawButtonLabel + drawButtonLabel + ( QPainter * painter ) + + + paintEvent + paintEvent + ( QPaintEvent * event ) + + + + Q3Cache + q3cache.html + + Q3Cache + Q3Cache-2 + ( int maxCost = 100, int size = 17, bool caseSensitive = true ) + + + clear + clear + () + + + count + count + () + + + find + find + ( const QString & k, bool ref = true ) + + + insert + insert + ( const QString & k, const type * d, int c = 1, int p = 0 ) + + + isEmpty + isEmpty + () + + + maxCost + maxCost + () + + + remove + remove + ( const QString & k ) + + + setMaxCost + setMaxCost + ( int m ) + + + size + size + () + + + statistics + statistics + () + + + take + take + ( const QString & k ) + + + totalCost + totalCost + () + + + operator[] + operator-5b-5d + ( const QString & k ) + + + + Q3CacheIterator + q3cacheiterator.html + + Q3CacheIterator + Q3CacheIterator + ( const Q3Cache<type> & cache ) + + + Q3CacheIterator + Q3CacheIterator-2 + ( const Q3CacheIterator<type> & ci ) + + + atFirst + atFirst + () + + + atLast + atLast + () + + + count + count + () + + + current + current + () + + + currentKey + currentKey + () + + + isEmpty + isEmpty + () + + + toFirst + toFirst + () + + + toLast + toLast + () + + + operator + operator-type--2a + type *() + + + operator() + operator-28-29 + () + + + operator++ + operator-2b-2b + () + + + operator+= + operator-2b-eq + ( uint jump ) + + + operator-- + operator-- + () + + + operator-= + operator--eq + ( uint jump ) + + + operator= + operator-eq + ( const Q3CacheIterator<type> & ci ) + + + + Q3CanvasEllipse + q3canvasellipse.html + + Q3CanvasEllipse + Q3CanvasEllipse + ( Q3Canvas * canvas ) + + + Q3CanvasEllipse + Q3CanvasEllipse-2 + ( int width, int height, Q3Canvas * canvas ) + + + Q3CanvasEllipse + Q3CanvasEllipse-3 + ( int width, int height, int startangle, int angle, Q3Canvas * canvas ) + + + angleLength + angleLength + () + + + angleStart + angleStart + () + + + drawShape + drawShape + ( QPainter & p ) + + + height + height + () + + + rtti + rtti + () + + + setAngles + setAngles + ( int start, int length ) + + + setSize + setSize + ( int width, int height ) + + + width + width + () + + + + Q3Canvas + q3canvas.html + + Q3Canvas + Q3Canvas + ( QObject * parent = 0, const char * name = 0 ) + + + Q3Canvas + Q3Canvas-2 + ( int w, int h ) + + + Q3Canvas + Q3Canvas-3 + ( QPixmap p, int h, int v, int tilewidth, int tileheight ) + + + advance + advance + () + + + allItems + allItems + () + + + backgroundColor + backgroundColor + () + + + backgroundPixmap + backgroundPixmap + () + + + chunkSize + chunkSize + () + + + collisions + collisions + ( const QPoint & p ) + + + collisions + collisions-2 + ( const QRect & r ) + + + collisions + collisions-3 + ( const Q3PointArray & chunklist, const Q3CanvasItem * item, bool exact ) + + + drawArea + drawArea + ( const QRect & clip, QPainter * painter, bool dbuf = false ) + + + drawBackground + drawBackground + ( QPainter & painter, const QRect & clip ) + + + drawForeground + drawForeground + ( QPainter & painter, const QRect & clip ) + + + height + height + () + + + onCanvas + onCanvas + ( int x, int y ) + + + onCanvas + onCanvas-2 + ( const QPoint & p ) + + + rect + rect + () + + + resize + resize + ( int w, int h ) + + + resized + resized + () + + + retune + retune + ( int chunksze, int mxclusters = 100 ) + + + setAdvancePeriod + setAdvancePeriod + ( int ms ) + + + setAllChanged + setAllChanged + () + + + setBackgroundColor + setBackgroundColor + ( const QColor & c ) + + + setBackgroundPixmap + setBackgroundPixmap + ( const QPixmap & p ) + + + setChanged + setChanged + ( const QRect & area ) + + + setDoubleBuffering + setDoubleBuffering + ( bool y ) + + + setTile + setTile + ( int x, int y, int tilenum ) + + + setTiles + setTiles + ( QPixmap p, int h, int v, int tilewidth, int tileheight ) + + + setUnchanged + setUnchanged + ( const QRect & area ) + + + setUpdatePeriod + setUpdatePeriod + ( int ms ) + + + size + size + () + + + tile + tile + ( int x, int y ) + + + tileHeight + tileHeight + () + + + tileWidth + tileWidth + () + + + tilesHorizontally + tilesHorizontally + () + + + tilesVertically + tilesVertically + () + + + update + update + () + + + validChunk + validChunk + ( int x, int y ) + + + validChunk + validChunk-2 + ( const QPoint & p ) + + + width + width + () + + + + Q3CanvasItem + q3canvasitem.html + + RttiValues + RttiValues-enum + + + + Q3CanvasItem + Q3CanvasItem + ( Q3Canvas * canvas ) + + + advance + advance + ( int phase ) + + + animated + animated + () + + + boundingRect + boundingRect + () + + + boundingRectAdvanced + boundingRectAdvanced + () + + + canvas + canvas + () + + + collidesWith + collidesWith + ( const Q3CanvasItem * other ) + + + collisions + collisions + ( bool exact ) + + + draw + draw + ( QPainter & painter ) + + + hide + hide + () + + + isActive + isActive + () + + + isEnabled + isEnabled + () + + + isSelected + isSelected + () + + + isVisible + isVisible + () + + + move + move + ( double x, double y ) + + + moveBy + moveBy + ( double dx, double dy ) + + + rtti + rtti + () + + + setActive + setActive + ( bool yes ) + + + setAnimated + setAnimated + ( bool y ) + + + setCanvas + setCanvas + ( Q3Canvas * c ) + + + setEnabled + setEnabled + ( bool yes ) + + + setSelected + setSelected + ( bool yes ) + + + setVelocity + setVelocity + ( double vx, double vy ) + + + setVisible + setVisible + ( bool yes ) + + + setX + setX + ( double x ) + + + setXVelocity + setXVelocity + ( double vx ) + + + setY + setY + ( double y ) + + + setYVelocity + setYVelocity + ( double vy ) + + + setZ + setZ + ( double z ) + + + show + show + () + + + update + update + () + + + x + x + () + + + xVelocity + xVelocity + () + + + y + y + () + + + yVelocity + yVelocity + () + + + z + z + () + + + + Q3CanvasItemList + q3canvasitemlist.html + + operator+ + operator-2b + ( const Q3CanvasItemList & l ) + + + active + active + () + + + enabled + enabled + () + + + selected + selected + () + + + visible + visible + () + + + + Q3CanvasLine + q3canvasline.html + + Q3CanvasLine + Q3CanvasLine + ( Q3Canvas * canvas ) + + + endPoint + endPoint + () + + + rtti + rtti + () + + + setPoints + setPoints + ( int xa, int ya, int xb, int yb ) + + + startPoint + startPoint + () + + + + Q3CanvasPixmapArray + q3canvaspixmaparray.html + + Q3CanvasPixmapArray + Q3CanvasPixmapArray + () + + + Q3CanvasPixmapArray + Q3CanvasPixmapArray-2 + ( const QString & datafilenamepattern, int fc = 0 ) + + + Q3CanvasPixmapArray + Q3CanvasPixmapArray-4 + ( Q3ValueList<QPixmap> list, Q3PointArray hotspots = Q3PointArray() + + + count + count + () + + + image + image + ( int i ) + + + isValid + isValid + () + + + readCollisionMasks + readCollisionMasks + ( const QString & filename ) + + + readPixmaps + readPixmaps + ( const QString & filenamepattern, int fc = 0 ) + + + setImage + setImage + ( int i, Q3CanvasPixmap * p ) + + + Q3CanvasPixmapArray + Q3CanvasPixmapArray-3 + ( Q3PtrList<QPixmap> list, Q3PtrList<QPoint> hotspots ) + + + operator! + operator-not + () + + + + Q3CanvasPixmap + q3canvaspixmap.html + + Q3CanvasPixmap + Q3CanvasPixmap + ( const QString & datafilename ) + + + Q3CanvasPixmap + Q3CanvasPixmap-2 + ( const QImage & image ) + + + Q3CanvasPixmap + Q3CanvasPixmap-3 + ( const QPixmap & pm, const QPoint & offset ) + + + offsetX + offsetX + () + + + offsetY + offsetY + () + + + setOffset + setOffset + ( int x, int y ) + + + + Q3CanvasPolygonalItem + q3canvaspolygonalitem.html + + Q3CanvasPolygonalItem + Q3CanvasPolygonalItem + ( Q3Canvas * canvas ) + + + areaPoints + areaPoints + () + + + areaPointsAdvanced + areaPointsAdvanced + () + + + boundingRect + boundingRect + () + + + brush + brush + () + + + draw + draw + ( QPainter & p ) + + + drawShape + drawShape + ( QPainter & p ) + + + invalidate + invalidate + () + + + isValid + isValid + () + + + pen + pen + () + + + rtti + rtti + () + + + setBrush + setBrush + ( QBrush b ) + + + setPen + setPen + ( QPen p ) + + + setWinding + setWinding + ( bool enable ) + + + winding + winding + () + + + + Q3CanvasPolygon + q3canvaspolygon.html + + Q3CanvasPolygon + Q3CanvasPolygon + ( Q3Canvas * canvas ) + + + areaPoints + areaPoints + () + + + drawShape + drawShape + ( QPainter & p ) + + + points + points + () + + + rtti + rtti + () + + + setPoints + setPoints + ( Q3PointArray pa ) + + + + Q3CanvasRectangle + q3canvasrectangle.html + + Q3CanvasRectangle + Q3CanvasRectangle + ( Q3Canvas * canvas ) + + + Q3CanvasRectangle + Q3CanvasRectangle-2 + ( const QRect & r, Q3Canvas * canvas ) + + + Q3CanvasRectangle + Q3CanvasRectangle-3 + ( int x, int y, int width, int height, Q3Canvas * canvas ) + + + chunks + chunks + () + + + drawShape + drawShape + ( QPainter & p ) + + + height + height + () + + + rect + rect + () + + + rtti + rtti + () + + + setSize + setSize + ( int width, int height ) + + + size + size + () + + + width + width + () + + + + Q3CanvasSpline + q3canvasspline.html + + Q3CanvasSpline + Q3CanvasSpline + ( Q3Canvas * canvas ) + + + closed + closed + () + + + controlPoints + controlPoints + () + + + rtti + rtti + () + + + setControlPoints + setControlPoints + ( Q3PointArray ctrl, bool close = true ) + + + + Q3CanvasSprite + q3canvassprite.html + + FrameAnimationType + FrameAnimationType-enum + + + + Q3CanvasSprite + Q3CanvasSprite + ( Q3CanvasPixmapArray * a, Q3Canvas * canvas ) + + + advance + advance + ( int phase ) + + + bottomEdge + bottomEdge + () + + + bottomEdge + bottomEdge-2 + ( int ny ) + + + boundingRect + boundingRect + () + + + draw + draw + ( QPainter & painter ) + + + frame + frame + () + + + frameCount + frameCount + () + + + height + height + () + + + image + image + () + + + image + image-2 + ( int f ) + + + imageAdvanced + imageAdvanced + () + + + leftEdge + leftEdge + () + + + leftEdge + leftEdge-2 + ( int nx ) + + + move + move + ( double x, double y ) + + + move + move-2 + ( double nx, double ny, int nf ) + + + rightEdge + rightEdge + () + + + rightEdge + rightEdge-2 + ( int nx ) + + + rtti + rtti + () + + + setFrame + setFrame + ( int f ) + + + setFrameAnimation + setFrameAnimation + ( FrameAnimationType type = Cycle, int step = 1, int state = 0 ) + + + setSequence + setSequence + ( Q3CanvasPixmapArray * a ) + + + topEdge + topEdge + () + + + topEdge + topEdge-2 + ( int ny ) + + + width + width + () + + + + Q3CanvasText + q3canvastext.html + + Q3CanvasText + Q3CanvasText + ( Q3Canvas * canvas ) + + + Q3CanvasText + Q3CanvasText-2 + ( const QString & t, Q3Canvas * canvas ) + + + Q3CanvasText + Q3CanvasText-3 + ( const QString & t, QFont f, Q3Canvas * canvas ) + + + boundingRect + boundingRect + () + + + color + color + () + + + draw + draw + ( QPainter & painter ) + + + font + font + () + + + rtti + rtti + () + + + setColor + setColor + ( const QColor & c ) + + + setFont + setFont + ( const QFont & f ) + + + setText + setText + ( const QString & t ) + + + setTextFlags + setTextFlags + ( int f ) + + + text + text + () + + + textFlags + textFlags + () + + + + Q3CanvasView + q3canvasview.html + + Q3CanvasView + Q3CanvasView + ( QWidget * parent = 0, const char * name = 0, Qt::WFlags f = 0 ) + + + Q3CanvasView + Q3CanvasView-2 + ( Q3Canvas * canvas, QWidget * parent = 0, const char * name = 0, Qt::WFlags f = 0 ) + + + canvas + canvas + () + + + drawContents + drawContents + ( QPainter * p, int cx, int cy, int cw, int ch ) + + + inverseWorldMatrix + inverseWorldMatrix + () + + + setCanvas + setCanvas + ( Q3Canvas * canvas ) + + + setWorldMatrix + setWorldMatrix + ( const QMatrix & wm ) + + + sizeHint + sizeHint + () + + + worldMatrix + worldMatrix + () + + + + Q3CheckListItem + q3checklistitem.html + + ToggleState + ToggleState-enum + + + + Type + Type-enum + + + + Q3CheckListItem + Q3CheckListItem + ( Q3CheckListItem * parent, const QString & text, Type tt = RadioButtonController ) + + + Q3CheckListItem + Q3CheckListItem-2 + ( Q3CheckListItem * parent, Q3ListViewItem * after, const QString & text, Type tt = RadioButtonController ) + + + Q3CheckListItem + Q3CheckListItem-3 + ( Q3ListViewItem * parent, const QString & text, Type tt = RadioButtonController ) + + + Q3CheckListItem + Q3CheckListItem-4 + ( Q3ListViewItem * parent, Q3ListViewItem * after, const QString & text, Type tt = RadioButtonController ) + + + Q3CheckListItem + Q3CheckListItem-5 + ( Q3ListView * parent, const QString & text, Type tt = RadioButtonController ) + + + Q3CheckListItem + Q3CheckListItem-6 + ( Q3ListView * parent, Q3ListViewItem * after, const QString & text, Type tt = RadioButtonController ) + + + Q3CheckListItem + Q3CheckListItem-7 + ( Q3ListViewItem * parent, const QString & text, const QPixmap & p ) + + + Q3CheckListItem + Q3CheckListItem-8 + ( Q3ListView * parent, const QString & text, const QPixmap & p ) + + + activate + activate + () + + + isOn + isOn + () + + + isTristate + isTristate + () + + + paintCell + paintCell + ( QPainter * p, const QColorGroup & cg, int column, int width, int align ) + + + paintFocus + paintFocus + ( QPainter * p, const QColorGroup & cg, const QRect & r ) + + + rtti + rtti + () + + + setOn + setOn + ( bool b ) + + + setState + setState + ( ToggleState s ) + + + setTristate + setTristate + ( bool b ) + + + state + state + () + + + stateChange + stateChange + ( bool b ) + + + text + text + () + + + turnOffChild + turnOffChild + () + + + type + type + () + + + + Q3CheckTableItem + q3checktableitem.html + + Q3CheckTableItem + Q3CheckTableItem + ( Q3Table * table, const QString & txt ) + + + isChecked + isChecked + () + + + rtti + rtti + () + + + setChecked + setChecked + ( bool b ) + + + + Q3ColorDrag + q3colordrag.html + + Q3ColorDrag + Q3ColorDrag + ( const QColor & col, QWidget * dragsource = 0, const char * name = 0 ) + + + Q3ColorDrag + Q3ColorDrag-2 + ( QWidget * dragsource = 0, const char * name = 0 ) + + + canDecode + canDecode + ( QMimeSource * source ) + + + decode + decode + ( QMimeSource * source, QColor & color ) + + + setColor + setColor + ( const QColor & color ) + + + + Q3ComboBox + q3combobox.html + + Policy + Policy-enum + + + + Q3ComboBox + Q3ComboBox + ( QWidget * parent = 0, const char * name = 0 ) + + + Q3ComboBox + Q3ComboBox-2 + ( bool rw, QWidget * parent = 0, const char * name = 0 ) + + + activated + activated + ( int index ) + + + activated + activated-2 + ( const QString & string ) + + + autoResize + autoResize + () + + + changeItem + changeItem + ( const QString & t, int index ) + + + changeItem + changeItem-2 + ( const QPixmap & im, int index ) + + + changeItem + changeItem-3 + ( const QPixmap & im, const QString & t, int index ) + + + clear + clear + () + + + clearEdit + clearEdit + () + + + clearValidator + clearValidator + () + + + hide + hide + () + + + highlighted + highlighted + ( int index ) + + + highlighted + highlighted-2 + ( const QString & string ) + + + insertItem + insertItem + ( const QString & t, int index = -1 ) + + + insertItem + insertItem-2 + ( const QPixmap & pixmap, int index = -1 ) + + + insertItem + insertItem-3 + ( const QPixmap & pixmap, const QString & text, int index = -1 ) + + + insertStrList + insertStrList + ( const char ** strings, int numStrings = -1, int index = -1 ) + + + insertStrList + insertStrList-2 + ( const Q3StrList & list, int index = -1 ) + + + insertStrList + insertStrList-3 + ( const Q3StrList * list, int index = -1 ) + + + insertStringList + insertStringList + ( const QStringList & list, int index = -1 ) + + + lineEdit + lineEdit + () + + + listBox + listBox + () + + + pixmap + pixmap + ( int index ) + + + popup + popup + () + + + removeItem + removeItem + ( int index ) + + + setAutoResize + setAutoResize + ( bool ) + + + setEditText + setEditText + ( const QString & newText ) + + + setEnabled + setEnabled + ( bool enable ) + + + setFont + setFont + ( const QFont & font ) + + + setLineEdit + setLineEdit + ( QLineEdit * edit ) + + + setListBox + setListBox + ( Q3ListBox * newListBox ) + + + setPalette + setPalette + ( const QPalette & palette ) + + + setValidator + setValidator + ( const QValidator * v ) + + + text + text + ( int index ) + + + textChanged + textChanged + ( const QString & string ) + + + updateMask + updateMask + () + + + validator + validator + () + + + + Q3ComboTableItem + q3combotableitem.html + + Q3ComboTableItem + Q3ComboTableItem + ( Q3Table * table, const QStringList & list, bool editable = false ) + + + count + count + () + + + currentItem + currentItem + () + + + currentText + currentText + () + + + isEditable + isEditable + () + + + rtti + rtti + () + + + setCurrentItem + setCurrentItem + ( int i ) + + + setCurrentItem + setCurrentItem-2 + ( const QString & s ) + + + setEditable + setEditable + ( bool b ) + + + setStringList + setStringList + ( const QStringList & l ) + + + text + text + ( int i ) + + + + Q3CString + q3cstring.html + + Q3CString + Q3CString + () + + + Q3CString + Q3CString-2 + ( int size ) + + + Q3CString + Q3CString-3 + ( const Q3CString & s ) + + + Q3CString + Q3CString-4 + ( const QByteArray & ba ) + + + Q3CString + Q3CString-5 + ( const char * str ) + + + Q3CString + Q3CString-6 + ( const char * str, uint maxsize ) + + + append + append + ( const char * str ) + + + copy + copy + () + + + leftJustify + leftJustify + ( uint width, char fill = ' ', bool truncate = false ) + + + lower + lower + () + + + rightJustify + rightJustify + ( uint width, char fill = ' ', bool truncate = false ) + + + setExpand + setExpand + ( uint index, char c ) + + + setNum + setNum + ( double n, char f = 'g', int prec = 6 ) + + + setNum + setNum-2 + ( long n ) + + + setNum + setNum-3 + ( ulong n ) + + + setNum + setNum-4 + ( int n ) + + + setNum + setNum-5 + ( uint n ) + + + setNum + setNum-6 + ( short n ) + + + setNum + setNum-7 + ( ushort n ) + + + setNum + setNum-8 + ( float n, char f = 'g', int prec = 6 ) + + + setStr + setStr + ( const char * str ) + + + simplifyWhiteSpace + simplifyWhiteSpace + () + + + sprintf + sprintf + ( const char * format, ... ) + + + stripWhiteSpace + stripWhiteSpace + () + + + toDouble + toDouble + ( bool * ok = 0 ) + + + toFloat + toFloat + ( bool * ok = 0 ) + + + toInt + toInt + ( bool * ok = 0 ) + + + toLong + toLong + ( bool * ok = 0 ) + + + toShort + toShort + ( bool * ok = 0 ) + + + toUInt + toUInt + ( bool * ok = 0 ) + + + toULong + toULong + ( bool * ok = 0 ) + + + toUShort + toUShort + ( bool * ok = 0 ) + + + upper + upper + () + + + operator= + operator-eq + ( const Q3CString & s ) + + + operator= + operator-eq-2 + ( const QByteArray & ba ) + + + operator= + operator-eq-3 + ( const char * str ) + + + + Q3DataBrowser + q3databrowser.html + + Boundary + Boundary-enum + + + + Q3DataBrowser + Q3DataBrowser + ( QWidget * parent = 0, const char * name = 0, Qt::WFlags fl = 0 ) + + + beforeDelete + beforeDelete + ( QSqlRecord * buf ) + + + beforeInsert + beforeInsert + ( QSqlRecord * buf ) + + + beforeUpdate + beforeUpdate + ( QSqlRecord * buf ) + + + boundary + boundary + () + + + clearValues + clearValues + () + + + Confirm + confirmCancel + Q3DataBrowser::confirmCancel( QSql::Op m ) + + + Confirm + confirmEdit + Q3DataBrowser::confirmEdit( QSql::Op m ) + + + currentChanged + currentChanged + ( const QSqlRecord * record ) + + + currentEdited + currentEdited + () + + + cursorChanged + cursorChanged + ( Q3SqlCursor::Mode mode ) + + + del + del + () + + + deleteCurrent + deleteCurrent + () + + + first + first + () + + + firstRecordAvailable + firstRecordAvailable + ( bool available ) + + + form + form + () + + + handleError + handleError + ( const QSqlError & error ) + + + insert + insert + () + + + insertCurrent + insertCurrent + () + + + last + last + () + + + lastRecordAvailable + lastRecordAvailable + ( bool available ) + + + next + next + () + + + nextRecordAvailable + nextRecordAvailable + ( bool available ) + + + prev + prev + () + + + prevRecordAvailable + prevRecordAvailable + ( bool available ) + + + primeDelete + primeDelete + ( QSqlRecord * buf ) + + + primeInsert + primeInsert + ( QSqlRecord * buf ) + + + primeUpdate + primeUpdate + ( QSqlRecord * buf ) + + + readFields + readFields + () + + + refresh + refresh + () + + + seek + seek + ( int i, bool relative = false ) + + + setForm + setForm + ( Q3SqlForm * form ) + + + setSqlCursor + setSqlCursor + ( Q3SqlCursor * cursor, bool autoDelete = false ) + + + sqlCursor + sqlCursor + () + + + update + update + () + + + updateBoundary + updateBoundary + () + + + updateCurrent + updateCurrent + () + + + writeFields + writeFields + () + + + + Q3DataTable + q3datatable.html + + Refresh + Refresh-enum + + + + DateFormat + dateFormat-prop + + + + Q3DataTable + Q3DataTable + ( QWidget * parent = 0, const char * name = 0 ) + + + Q3DataTable + Q3DataTable-2 + ( Q3SqlCursor * cursor, bool autoPopulate = false, QWidget * parent = 0, const char * name = 0 ) + + + addColumn + addColumn + ( const QString & fieldName, const QString & label = QString() + + + adjustColumn + adjustColumn + ( int col ) + + + autoDelete + autoDelete + () + + + beforeDelete + beforeDelete + ( QSqlRecord * buf ) + + + beforeInsert + beforeInsert + ( QSqlRecord * buf ) + + + beforeUpdate + beforeUpdate + ( QSqlRecord * buf ) + + + beginInsert + beginInsert + () + + + beginUpdate + beginUpdate + ( int row, int col, bool replace ) + + + Confirm + confirmCancel + Q3DataTable::confirmCancel( QSql::Op m ) + + + Confirm + confirmEdit + Q3DataTable::confirmEdit( QSql::Op m ) + + + currentChanged + currentChanged + ( QSqlRecord * record ) + + + currentRecord + currentRecord + () + + + cursorChanged + cursorChanged + ( QSql::Op mode ) + + + deleteCurrent + deleteCurrent + () + + + fieldAlignment + fieldAlignment + ( const QSqlField * field ) + + + find + find + ( const QString & str, bool caseSensitive, bool backwards ) + + + handleError + handleError + ( const QSqlError & e ) + + + indexOf + indexOf + ( uint i ) + + + insertCurrent + insertCurrent + () + + + installEditorFactory + installEditorFactory + ( Q3SqlEditorFactory * f ) + + + installPropertyMap + installPropertyMap + ( Q3SqlPropertyMap * m ) + + + paintField + paintField + ( QPainter * p, const QSqlField * field, const QRect & cr, bool selected ) + + + primeDelete + primeDelete + ( QSqlRecord * buf ) + + + primeInsert + primeInsert + ( QSqlRecord * buf ) + + + primeUpdate + primeUpdate + ( QSqlRecord * buf ) + + + refresh + refresh + ( Refresh mode ) + + + refresh + refresh-2 + () + + + removeColumn + removeColumn + ( int col ) + + + repaintCell + repaintCell + ( int row, int col ) + + + reset + reset + () + + + setAutoDelete + setAutoDelete + ( bool enable ) + + + setColumn + setColumn + ( uint col, const QString & fieldName, const QString & label = QString() + + + setColumnWidth + setColumnWidth + ( int col, int w ) + + + setSize + setSize + ( Q3SqlCursor * sql ) + + + setSqlCursor + setSqlCursor + ( Q3SqlCursor * cursor = 0, bool autoPopulate = false, bool autoDelete = false ) + + + sortAscending + sortAscending + ( int col ) + + + sortColumn + sortColumn + ( int col, bool ascending = true, bool wholeRows = false ) + + + sortDescending + sortDescending + ( int col ) + + + sqlCursor + sqlCursor + () + + + text + text + ( int row, int col ) + + + updateCurrent + updateCurrent + () + + + value + value + ( int row, int col ) + + + + Q3DataView + q3dataview.html + + Q3DataView + Q3DataView + ( QWidget * parent = 0, const char * name = 0, Qt::WFlags fl = 0 ) + + + clearValues + clearValues + () + + + form + form + () + + + readFields + readFields + () + + + record + record + () + + + refresh + refresh + ( QSqlRecord * buf ) + + + setForm + setForm + ( Q3SqlForm * form ) + + + setRecord + setRecord + ( QSqlRecord * record ) + + + writeFields + writeFields + () + + + + Q3DateEdit + q3dateedit.html + + Order + Order-enum + + + + Q3DateEdit + Q3DateEdit + ( QWidget * parent = 0, const char * name = 0 ) + + + Q3DateEdit + Q3DateEdit-2 + ( const QDate & date, QWidget * parent = 0, const char * name = 0 ) + + + fix + fix + () + + + sectionFormattedText + sectionFormattedText + ( int sec ) + + + separator + separator + () + + + setDay + setDay + ( int day ) + + + setMonth + setMonth + ( int month ) + + + setRange + setRange + ( const QDate & min, const QDate & max ) + + + setSeparator + setSeparator + ( const QString & s ) + + + setYear + setYear + ( int year ) + + + updateButtons + updateButtons + () + + + valueChanged + valueChanged + ( const QDate & date ) + + + + Q3DateTimeEditBase + q3datetimeeditbase.html + + + Q3DateTimeEdit + q3datetimeedit.html + + Q3DateTimeEdit + Q3DateTimeEdit + ( QWidget * parent = 0, const char * name = 0 ) + + + Q3DateTimeEdit + Q3DateTimeEdit-2 + ( const QDateTime & datetime, QWidget * parent = 0, const char * name = 0 ) + + + autoAdvance + autoAdvance + () + + + dateEdit + dateEdit + () + + + setAutoAdvance + setAutoAdvance + ( bool advance ) + + + timeEdit + timeEdit + () + + + valueChanged + valueChanged + ( const QDateTime & datetime ) + + + + Q3DeepCopy + q3deepcopy.html + + Q3DeepCopy + Q3DeepCopy + () + + + Q3DeepCopy + Q3DeepCopy-2 + ( const T & t ) + + + operator + operator-T + T() + + + operator= + operator-eq + ( const T & t ) + + + + Q3Dict + q3dict.html + + Q3Dict + Q3Dict + ( int size = 17, bool caseSensitive = true ) + + + Q3Dict + Q3Dict-2 + ( const Q3Dict<type> & dict ) + + + clear + clear + () + + + count + count + () + + + find + find + ( const QString & key ) + + + insert + insert + ( const QString & key, const type * item ) + + + isEmpty + isEmpty + () + + + read + read + ( QDataStream & s, Q3PtrCollection::Item & item ) + + + remove + remove + ( const QString & key ) + + + replace + replace + ( const QString & key, const type * item ) + + + resize + resize + ( uint newsize ) + + + size + size + () + + + statistics + statistics + () + + + take + take + ( const QString & key ) + + + write + write + ( QDataStream & s, Q3PtrCollection::Item item ) + + + operator= + operator-eq + ( const Q3Dict<type> & dict ) + + + operator[] + operator-5b-5d + ( const QString & key ) + + + + Q3DictIterator + q3dictiterator.html + + Q3DictIterator + Q3DictIterator + ( const Q3Dict<type> & dict ) + + + count + count + () + + + current + current + () + + + currentKey + currentKey + () + + + isEmpty + isEmpty + () + + + toFirst + toFirst + () + + + operator + operator-type--2a + type *() + + + operator() + operator-28-29 + () + + + operator++ + operator-2b-2b + () + + + + Q3Dns + q3dns.html + + RecordType + RecordType-enum + + + + Q3Dns + Q3Dns + () + + + Q3Dns + Q3Dns-2 + ( const QString & label, RecordType rr = A ) + + + Q3Dns + Q3Dns-3 + ( const QHostAddress & address, RecordType rr = Ptr ) + + + addresses + addresses + () + + + canonicalName + canonicalName + () + + + hostNames + hostNames + () + + + isWorking + isWorking + () + + + label + label + () + + + mailServers + mailServers + () + + + qualifiedNames + qualifiedNames + () + + + recordType + recordType + () + + + resultsReady + resultsReady + () + + + servers + servers + () + + + setLabel + setLabel + ( const QString & label ) + + + setLabel + setLabel-2 + ( const QHostAddress & address ) + + + setRecordType + setRecordType + ( RecordType rr = A ) + + + texts + texts + () + + + + Q3DockArea + q3dockarea.html + + HandlePosition + HandlePosition-enum + + + + Orientation + orientation-prop + + + + Q3DockArea + Q3DockArea + ( Qt::Orientation o, HandlePosition h = Normal, QWidget * parent = 0, const char * name = 0 ) + + + dockWindowList + dockWindowList + () + + + hasDockWindow + hasDockWindow + ( Q3DockWindow * w, int * index = 0 ) + + + isDockWindowAccepted + isDockWindowAccepted + ( Q3DockWindow * dw ) + + + lineUp + lineUp + ( bool keepNewLines ) + + + moveDockWindow + moveDockWindow + ( Q3DockWindow * w, int index = -1 ) + + + moveDockWindow + moveDockWindow-2 + ( Q3DockWindow * w, const QPoint & p, const QRect & r, bool swap ) + + + removeDockWindow + removeDockWindow + ( Q3DockWindow * w, bool makeFloating, bool swap, bool fixNewLines = true ) + + + setAcceptDockWindow + setAcceptDockWindow + ( Q3DockWindow * dw, bool accept ) + + + + Q3DockWindow + q3dockwindow.html + + CloseMode + CloseMode-enum + + + + Place + Place-enum + + + + Q3DockWindow + Q3DockWindow + ( Place p = InDock, QWidget * parent = 0, const char * name = 0, Qt::WFlags f = 0 ) + + + Q3DockWindow + Q3DockWindow-2 + ( QWidget * parent, const char * name = 0, Qt::WFlags f = 0 ) + + + area + area + () + + + boxLayout + boxLayout + () + + + dock + dock + () + + + fixedExtent + fixedExtent + () + + + isCloseEnabled + isCloseEnabled + () + + + isHorizontalStretchable + isHorizontalStretchable + () + + + isVerticalStretchable + isVerticalStretchable + () + + + Orientation + orientation + Q3DockWindow::orientation() + + + orientationChanged + orientationChanged + ( Qt::Orientation o ) + + + placeChanged + placeChanged + ( Q3DockWindow::Place p ) + + + setFixedExtentHeight + setFixedExtentHeight + ( int h ) + + + setFixedExtentWidth + setFixedExtentWidth + ( int w ) + + + setHorizontalStretchable + setHorizontalStretchable + ( bool b ) + + + setOrientation + setOrientation + ( Qt::Orientation o ) + + + setVerticalStretchable + setVerticalStretchable + ( bool b ) + + + setWidget + setWidget + ( QWidget * w ) + + + undock + undock + ( QWidget * widget ) + + + undock + undock-2 + () + + + visibilityChanged + visibilityChanged + ( bool visible ) + + + widget + widget + () + + + windowTitle + windowTitle + () + + + + Q3DragObject + q3dragobject.html + + DragMode + DragMode-enum + + + + Q3DragObject + Q3DragObject + ( QWidget * dragSource = 0, const char * name = 0 ) + + + drag + drag + () + + + drag + drag-2 + ( DragMode mode ) + + + dragCopy + dragCopy + () + + + dragLink + dragLink + () + + + dragMove + dragMove + () + + + pixmap + pixmap + () + + + pixmapHotSpot + pixmapHotSpot + () + + + setPixmap + setPixmap + ( QPixmap pm, const QPoint & hotspot ) + + + setPixmap + setPixmap-2 + ( QPixmap pm ) + + + source + source + () + + + target + target + () + + + + Q3DropSite + q3dropsite.html + + Q3DropSite + Q3DropSite + ( QWidget * self ) + + + + Q3EditorFactory + q3editorfactory.html + + Q3EditorFactory + Q3EditorFactory + ( QObject * parent = 0 ) + + + createEditor + createEditor + ( QWidget * parent, const QVariant & v ) + + + defaultFactory + defaultFactory + () + + + installDefaultFactory + installDefaultFactory + ( Q3EditorFactory * factory ) + + + + Q3FileDialog + q3filedialog.html + + Mode + Mode-enum + + + + PreviewMode + PreviewMode-enum + + + + ViewMode + ViewMode-enum + + + + Q3FileDialog + Q3FileDialog + ( const QString & dirName, const QString & filter = QString() + + + Q3FileDialog + Q3FileDialog-2 + ( QWidget * parent = 0, const char * name = 0, bool modal = false ) + + + addFilter + addFilter + ( const QString & filter ) + + + addLeftWidget + addLeftWidget + ( QWidget * w ) + + + addRightWidget + addRightWidget + ( QWidget * w ) + + + addToolButton + addToolButton + ( QAbstractButton * b, bool separator = false ) + + + addWidgets + addWidgets + ( QLabel * l, QWidget * w, QPushButton * b ) + + + dir + dir + () + + + dirEntered + dirEntered + ( const QString & directory ) + + + fileHighlighted + fileHighlighted + ( const QString & file ) + + + fileSelected + fileSelected + ( const QString & file ) + + + filesSelected + filesSelected + ( const QStringList & files ) + + + filterSelected + filterSelected + ( const QString & filter ) + + + getExistingDirectory + getExistingDirectory + ( const QString & dir = QString() + + + getOpenFileName + getOpenFileName + ( const QString & startWith = QString() + + + getOpenFileNames + getOpenFileNames + ( const QString & filter = QString() + + + getSaveFileName + getSaveFileName + ( const QString & startWith = QString() + + + iconProvider + iconProvider + () + + + rereadDir + rereadDir + () + + + resortDir + resortDir + () + + + selectAll + selectAll + ( bool b ) + + + setContentsPreview + setContentsPreview + ( QWidget * w, Q3FilePreview * preview ) + + + setDir + setDir + ( const QDir & dir ) + + + setDir + setDir-2 + ( const QString & pathstr ) + + + setFilter + setFilter + ( const QString & newFilter ) + + + setFilters + setFilters + ( const QString & filters ) + + + setFilters + setFilters-2 + ( const char ** types ) + + + setFilters + setFilters-3 + ( const QStringList & types ) + + + setIconProvider + setIconProvider + ( Q3FileIconProvider * provider ) + + + setInfoPreview + setInfoPreview + ( QWidget * w, Q3FilePreview * preview ) + + + setSelectedFilter + setSelectedFilter + ( const QString & mask ) + + + setSelectedFilter + setSelectedFilter-2 + ( int n ) + + + setSelection + setSelection + ( const QString & filename ) + + + setUrl + setUrl + ( const Q3UrlOperator & url ) + + + url + url + () + + + + Q3FileIconProvider + q3fileiconprovider.html + + Q3FileIconProvider + Q3FileIconProvider + ( QObject * parent = 0, const char * name = 0 ) + + + pixmap + pixmap + ( const QFileInfo & info ) + + + + Q3FilePreview + q3filepreview.html + + Q3FilePreview + Q3FilePreview + () + + + previewUrl + previewUrl + ( const Q3Url & url ) + + + + Q3Frame + q3frame.html + + Q3Frame + Q3Frame + ( QWidget * parent, const char * name = 0, Qt::WFlags f = 0 ) + + + drawContents + drawContents + ( QPainter * painter ) + + + drawFrame + drawFrame + ( QPainter * p ) + + + frameChanged + frameChanged + () + + + frameWidth + frameWidth + () + + + paintEvent + paintEvent + ( QPaintEvent * event ) + + + resizeEvent + resizeEvent + ( QResizeEvent * event ) + + + + Q3Ftp + q3ftp.html + + Command + Command-enum + + + + Error + Error-enum + + + + State + State-enum + + + + Q3Ftp + Q3Ftp + () + + + Q3Ftp + Q3Ftp-2 + ( QObject * parent, const char * name = 0 ) + + + abort + abort + () + + + bytesAvailable + bytesAvailable + () + + + cd + cd + ( const QString & dir ) + + + clearPendingCommands + clearPendingCommands + () + + + close + close + () + + + commandFinished + commandFinished + ( int id, bool error ) + + + commandStarted + commandStarted + ( int id ) + + + connectToHost + connectToHost + ( const QString & host, Q_UINT16 port = 21 ) + + + currentCommand + currentCommand + () + + + currentDevice + currentDevice + () + + + currentId + currentId + () + + + dataTransferProgress + dataTransferProgress + ( int done, int total ) + + + done + done + ( bool error ) + + + error + error + () + + + errorString + errorString + () + + + get + get + ( const QString & file, QIODevice * dev = 0 ) + + + hasPendingCommands + hasPendingCommands + () + + + list + list + ( const QString & dir = QString() + + + listInfo + listInfo + ( const QUrlInfo & i ) + + + login + login + ( const QString & user = QString() + + + mkdir + mkdir + ( const QString & dir ) + + + put + put + ( QIODevice * dev, const QString & file ) + + + put + put-2 + ( const QByteArray & data, const QString & file ) + + + rawCommand + rawCommand + ( const QString & command ) + + + rawCommandReply + rawCommandReply + ( int replyCode, const QString & detail ) + + + readAll + readAll + () + + + readBlock + readBlock + ( char * data, Q_ULONG maxlen ) + + + readyRead + readyRead + () + + + remove + remove + ( const QString & file ) + + + rename + rename + ( const QString & oldname, const QString & newname ) + + + rmdir + rmdir + ( const QString & dir ) + + + state + state + () + + + stateChanged + stateChanged + ( int state ) + + + + Q3Grid + q3grid.html + + Q3Grid + Q3Grid + ( int n, QWidget * parent = 0, const char * name = 0, Qt::WFlags f = 0 ) + + + Q3Grid + Q3Grid-2 + ( int n, Qt::Orientation orient, QWidget * parent = 0, const char * name = 0, Qt::WFlags f = 0 ) + + + setSpacing + setSpacing + ( int space ) + + + + Q3GridView + q3gridview.html + + Q3GridView + Q3GridView + ( QWidget * parent = 0, const char * name = 0, Qt::WFlags f = 0 ) + + + cellGeometry + cellGeometry + ( int row, int column ) + + + cellRect + cellRect + () + + + columnAt + columnAt + ( int x ) + + + dimensionChange + dimensionChange + ( int oldNumRows, int oldNumCols ) + + + ensureCellVisible + ensureCellVisible + ( int row, int column ) + + + gridSize + gridSize + () + + + paintCell + paintCell + ( QPainter * p, int row, int col ) + + + paintEmptyArea + paintEmptyArea + ( QPainter * p, int cx, int cy, int cw, int ch ) + + + repaintCell + repaintCell + ( int row, int column, bool erase = true ) + + + rowAt + rowAt + ( int y ) + + + updateCell + updateCell + ( int row, int column ) + + + + Q3GroupBox + q3groupbox.html + + Orientation + orientation-prop + + + + Q3GroupBox + Q3GroupBox + ( QWidget * parent = 0, const char * name = 0 ) + + + Q3GroupBox + Q3GroupBox-2 + ( const QString & title, QWidget * parent = 0, const char * name = 0 ) + + + Q3GroupBox + Q3GroupBox-3 + ( int strips, Qt::Orientation orientation, QWidget * parent = 0, const char * name = 0 ) + + + Q3GroupBox + Q3GroupBox-4 + ( int strips, Qt::Orientation orientation, const QString & title, QWidget * parent = 0, const char * name = 0 ) + + + addSpace + addSpace + ( int size ) + + + insideMargin + insideMargin + () + + + insideSpacing + insideSpacing + () + + + setColumnLayout + setColumnLayout + ( int strips, Qt::Orientation direction ) + + + setInsideMargin + setInsideMargin + ( int m ) + + + setInsideSpacing + setInsideSpacing + ( int s ) + + + + Q3HBox + q3hbox.html + + Q3HBox + Q3HBox + ( QWidget * parent = 0, const char * name = 0, Qt::WFlags f = 0 ) + + + Q3HBox + Q3HBox-2 + ( bool horizontal, QWidget * parent, const char * name, Qt::WFlags f = 0 ) + + + setSpacing + setSpacing + ( int space ) + + + setStretchFactor + setStretchFactor + ( QWidget * w, int stretch ) + + + + Q3HButtonGroup + q3hbuttongroup.html + + Q3HButtonGroup + Q3HButtonGroup + ( QWidget * parent = 0, const char * name = 0 ) + + + Q3HButtonGroup + Q3HButtonGroup-2 + ( const QString & title, QWidget * parent = 0, const char * name = 0 ) + + + + Q3Header + q3header.html + + Orientation + orientation-prop + + + + Q3Header + Q3Header + ( QWidget * parent = 0, const char * name = 0 ) + + + Q3Header + Q3Header-2 + ( int n, QWidget * parent = 0, const char * name = 0 ) + + + addLabel + addLabel + ( const QString & s, int size = -1 ) + + + addLabel + addLabel-2 + ( const QIcon & icon, const QString & s, int size = -1 ) + + + adjustHeaderSize + adjustHeaderSize + () + + + cellAt + cellAt + ( int pos ) + + + cellPos + cellPos + ( int i ) + + + cellSize + cellSize + ( int i ) + + + clicked + clicked + ( int section ) + + + headerWidth + headerWidth + () + + + iconSet + iconSet + ( int section ) + + + indexChange + indexChange + ( int section, int fromIndex, int toIndex ) + + + isClickEnabled + isClickEnabled + ( int section = -1 ) + + + isResizeEnabled + isResizeEnabled + ( int section = -1 ) + + + label + label + ( int section ) + + + mapToActual + mapToActual + ( int l ) + + + mapToIndex + mapToIndex + ( int section ) + + + mapToLogical + mapToLogical + ( int a ) + + + mapToSection + mapToSection + ( int index ) + + + moveCell + moveCell + ( int fromIdx, int toIdx ) + + + moveSection + moveSection + ( int section, int toIndex ) + + + moved + moved + ( int fromIndex, int toIndex ) + + + paintSection + paintSection + ( QPainter * p, int index, const QRect & fr ) + + + paintSectionLabel + paintSectionLabel + ( QPainter * p, int index, const QRect & fr ) + + + pressed + pressed + ( int section ) + + + released + released + ( int section ) + + + removeLabel + removeLabel + ( int section ) + + + resizeSection + resizeSection + ( int section, int s ) + + + sRect + sRect + ( int index ) + + + sectionAt + sectionAt + ( int pos ) + + + sectionClicked + sectionClicked + ( int index ) + + + sectionHandleDoubleClicked + sectionHandleDoubleClicked + ( int section ) + + + sectionPos + sectionPos + ( int section ) + + + sectionRect + sectionRect + ( int section ) + + + sectionSize + sectionSize + ( int section ) + + + setCellSize + setCellSize + ( int section, int s ) + + + setClickEnabled + setClickEnabled + ( bool enable, int section = -1 ) + + + setLabel + setLabel + ( int section, const QString & s, int size = -1 ) + + + setLabel + setLabel-2 + ( int section, const QIcon & icon, const QString & s, int size = -1 ) + + + setResizeEnabled + setResizeEnabled + ( bool enable, int section = -1 ) + + + setSortIndicator + setSortIndicator + ( int section, Qt::SortOrder order ) + + + setSortIndicator + setSortIndicator-2 + ( int section, bool ascending = true ) + + + sizeChange + sizeChange + ( int section, int oldSize, int newSize ) + + + SortOrder + sortIndicatorOrder + Q3Header::sortIndicatorOrder() + + + sortIndicatorSection + sortIndicatorSection + () + + + + Q3HttpHeader + q3httpheader.html + + Q3HttpHeader + Q3HttpHeader + () + + + Q3HttpHeader + Q3HttpHeader-2 + ( const Q3HttpHeader & header ) + + + Q3HttpHeader + Q3HttpHeader-3 + ( const QString & str ) + + + contentLength + contentLength + () + + + contentType + contentType + () + + + hasContentLength + hasContentLength + () + + + hasContentType + hasContentType + () + + + hasKey + hasKey + ( const QString & key ) + + + isValid + isValid + () + + + keys + keys + () + + + majorVersion + majorVersion + () + + + minorVersion + minorVersion + () + + + removeValue + removeValue + ( const QString & key ) + + + setContentLength + setContentLength + ( int len ) + + + setContentType + setContentType + ( const QString & type ) + + + setValue + setValue + ( const QString & key, const QString & value ) + + + toString + toString + () + + + value + value + ( const QString & key ) + + + operator= + operator-eq + ( const Q3HttpHeader & h ) + + + + Q3Http + q3http.html + + Error + Error-enum + + + + State + State-enum + + + + Q3Http + Q3Http + () + + + Q3Http + Q3Http-2 + ( QObject * parent, const char * name = 0 ) + + + Q3Http + Q3Http-3 + ( const QString & hostname, Q_UINT16 port = 80, QObject * parent = 0, const char * name = 0 ) + + + abort + abort + () + + + bytesAvailable + bytesAvailable + () + + + clearPendingRequests + clearPendingRequests + () + + + closeConnection + closeConnection + () + + + currentDestinationDevice + currentDestinationDevice + () + + + currentId + currentId + () + + + currentRequest + currentRequest + () + + + currentSourceDevice + currentSourceDevice + () + + + dataReadProgress + dataReadProgress + ( int done, int total ) + + + dataSendProgress + dataSendProgress + ( int done, int total ) + + + done + done + ( bool error ) + + + error + error + () + + + errorString + errorString + () + + + get + get + ( const QString & path, QIODevice * to = 0 ) + + + hasPendingRequests + hasPendingRequests + () + + + head + head + ( const QString & path ) + + + post + post + ( const QString & path, QIODevice * data, QIODevice * to = 0 ) + + + post + post-2 + ( const QString & path, const QByteArray & data, QIODevice * to = 0 ) + + + readAll + readAll + () + + + readBlock + readBlock + ( char * data, Q_ULONG maxlen ) + + + readyRead + readyRead + ( const Q3HttpResponseHeader & resp ) + + + request + request + ( const Q3HttpRequestHeader & header, QIODevice * data = 0, QIODevice * to = 0 ) + + + request + request-2 + ( const Q3HttpRequestHeader & header, const QByteArray & data, QIODevice * to = 0 ) + + + requestFinished + requestFinished + ( int id, bool error ) + + + requestStarted + requestStarted + ( int id ) + + + responseHeaderReceived + responseHeaderReceived + ( const Q3HttpResponseHeader & resp ) + + + setHost + setHost + ( const QString & hostname, Q_UINT16 port = 80 ) + + + state + state + () + + + stateChanged + stateChanged + ( int state ) + + + + Q3HttpRequestHeader + q3httprequestheader.html + + Q3HttpRequestHeader + Q3HttpRequestHeader + () + + + Q3HttpRequestHeader + Q3HttpRequestHeader-2 + ( const QString & method, const QString & path, int majorVer = 1, int minorVer = 1 ) + + + Q3HttpRequestHeader + Q3HttpRequestHeader-3 + ( const Q3HttpRequestHeader & header ) + + + Q3HttpRequestHeader + Q3HttpRequestHeader-4 + ( const QString & str ) + + + majorVersion + majorVersion + () + + + method + method + () + + + minorVersion + minorVersion + () + + + path + path + () + + + setRequest + setRequest + ( const QString & method, const QString & path, int majorVer = 1, int minorVer = 1 ) + + + + Q3HttpResponseHeader + q3httpresponseheader.html + + Q3HttpResponseHeader + Q3HttpResponseHeader-3 + () + + + Q3HttpResponseHeader + Q3HttpResponseHeader-4 + ( const Q3HttpResponseHeader & header ) + + + majorVersion + majorVersion + () + + + minorVersion + minorVersion + () + + + reasonPhrase + reasonPhrase + () + + + statusCode + statusCode + () + + + + Q3IconDrag + q3icondrag.html + + Q3IconDrag + Q3IconDrag + ( QWidget * dragSource, const char * name = 0 ) + + + append + append + ( const Q3IconDragItem & i, const QRect & pr, const QRect & tr ) + + + canDecode + canDecode + ( QMimeSource * e ) + + + encodedData + encodedData + ( const char * mime ) + + + + Q3IconDragItem + q3icondragitem.html + + Q3IconDragItem + Q3IconDragItem + () + + + data + data + () + + + setData + setData + ( const QByteArray & d ) + + + + Q3IconView + q3iconview.html + + Arrangement + Arrangement-enum + + + + ComparisonFlags + ComparisonFlags-typedef + + + + ItemTextPos + ItemTextPos-enum + + + + ResizeMode + ResizeMode-enum + + + + SelectionMode + SelectionMode-enum + + + + StringComparisonMode + StringComparisonMode-enum + + + + Q3IconView + Q3IconView + ( QWidget * parent = 0, const char * name = 0, Qt::WFlags f = 0 ) + + + adjustItems + adjustItems + () + + + arrangeItemsInGrid + arrangeItemsInGrid + ( const QSize & grid, bool update = true ) + + + arrangeItemsInGrid + arrangeItemsInGrid-2 + ( bool update = true ) + + + clear + clear + () + + + clearSelection + clearSelection + () + + + clicked + clicked + ( Q3IconViewItem * item ) + + + clicked + clicked-2 + ( Q3IconViewItem * item, const QPoint & pos ) + + + contextMenuRequested + contextMenuRequested + ( Q3IconViewItem * item, const QPoint & pos ) + + + currentChanged + currentChanged + ( Q3IconViewItem * item ) + + + currentItem + currentItem + () + + + doAutoScroll + doAutoScroll + () + + + doubleClicked + doubleClicked + ( Q3IconViewItem * item ) + + + dragObject + dragObject + () + + + drawBackground + drawBackground + ( QPainter * p, const QRect & r ) + + + drawRubber + drawRubber + ( QPainter * p ) + + + dropped + dropped + ( QDropEvent * e, const Q3ValueList<Q3IconDragItem> & lst ) + + + emitSelectionChanged + emitSelectionChanged + ( Q3IconViewItem * i = 0 ) + + + ensureItemVisible + ensureItemVisible + ( Q3IconViewItem * item ) + + + findFirstVisibleItem + findFirstVisibleItem + ( const QRect & r ) + + + findItem + findItem + ( const QPoint & pos ) + + + findItem + findItem-3 + ( const QString & text, ComparisonFlags compare = BeginsWith | Qt::CaseSensitive ) + + + findLastVisibleItem + findLastVisibleItem + ( const QRect & r ) + + + firstItem + firstItem + () + + + index + index + ( const Q3IconViewItem * item ) + + + insertInGrid + insertInGrid + ( Q3IconViewItem * item ) + + + insertItem + insertItem + ( Q3IconViewItem * item, Q3IconViewItem * after = 0L ) + + + invertSelection + invertSelection + () + + + isRenaming + isRenaming + () + + + itemRenamed + itemRenamed + ( Q3IconViewItem * item, const QString & name ) + + + itemRenamed + itemRenamed-2 + ( Q3IconViewItem * item ) + + + lastItem + lastItem + () + + + makeRowLayout + makeRowLayout + ( Q3IconViewItem * begin, int & y, bool & changed ) + + + mouseButtonClicked + mouseButtonClicked + ( int button, Q3IconViewItem * item, const QPoint & pos ) + + + mouseButtonPressed + mouseButtonPressed + ( int button, Q3IconViewItem * item, const QPoint & pos ) + + + moved + moved + () + + + onItem + onItem + ( Q3IconViewItem * item ) + + + onViewport + onViewport + () + + + pressed + pressed + ( Q3IconViewItem * item ) + + + pressed + pressed-2 + ( Q3IconViewItem * item, const QPoint & pos ) + + + repaintItem + repaintItem + ( Q3IconViewItem * item ) + + + repaintSelectedItems + repaintSelectedItems + () + + + returnPressed + returnPressed + ( Q3IconViewItem * item ) + + + rightButtonClicked + rightButtonClicked + ( Q3IconViewItem * item, const QPoint & pos ) + + + rightButtonPressed + rightButtonPressed + ( Q3IconViewItem * item, const QPoint & pos ) + + + selectAll + selectAll + ( bool select ) + + + selectionChanged + selectionChanged + () + + + selectionChanged + selectionChanged-2 + ( Q3IconViewItem * item ) + + + setCurrentItem + setCurrentItem + ( Q3IconViewItem * item ) + + + setSelected + setSelected + ( Q3IconViewItem * item, bool s, bool cb = false ) + + + setSorting + setSorting + ( bool sort, bool ascending = true ) + + + slotUpdate + slotUpdate + () + + + sort + sort + ( bool ascending = true ) + + + startDrag + startDrag + () + + + takeItem + takeItem + ( Q3IconViewItem * item ) + + + + Q3IconViewItem + q3iconviewitem.html + + Q3IconViewItem + Q3IconViewItem + ( Q3IconView * parent ) + + + Q3IconViewItem + Q3IconViewItem-2 + ( Q3IconView * parent, Q3IconViewItem * after ) + + + Q3IconViewItem + Q3IconViewItem-3 + ( Q3IconView * parent, const QString & text ) + + + Q3IconViewItem + Q3IconViewItem-4 + ( Q3IconView * parent, Q3IconViewItem * after, const QString & text ) + + + Q3IconViewItem + Q3IconViewItem-5 + ( Q3IconView * parent, const QString & text, const QPixmap & icon ) + + + Q3IconViewItem + Q3IconViewItem-6 + ( Q3IconView * parent, Q3IconViewItem * after, const QString & text, const QPixmap & icon ) + + + Q3IconViewItem + Q3IconViewItem-7 + ( Q3IconView * parent, const QString & text, const QPicture & picture ) + + + Q3IconViewItem + Q3IconViewItem-8 + ( Q3IconView * parent, Q3IconViewItem * after, const QString & text, const QPicture & picture ) + + + acceptDrop + acceptDrop + ( const QMimeSource * mime ) + + + calcRect + calcRect + ( const QString & text_ = QString() + + + compare + compare + ( Q3IconViewItem * i ) + + + contains + contains + ( const QPoint & pnt ) + + + dragEnabled + dragEnabled + () + + + dragEntered + dragEntered + () + + + dragLeft + dragLeft + () + + + dropEnabled + dropEnabled + () + + + dropped + dropped + ( QDropEvent * e, const Q3ValueList<Q3IconDragItem> & lst ) + + + height + height + () + + + iconView + iconView + () + + + index + index + () + + + intersects + intersects + ( const QRect & r ) + + + isSelectable + isSelectable + () + + + isSelected + isSelected + () + + + key + key + () + + + move + move + ( int x, int y ) + + + move + move-2 + ( const QPoint & pnt ) + + + moveBy + moveBy + ( int dx, int dy ) + + + moveBy + moveBy-2 + ( const QPoint & pnt ) + + + nextItem + nextItem + () + + + paintFocus + paintFocus + ( QPainter * p, const QColorGroup & cg ) + + + paintItem + paintItem + ( QPainter * p, const QColorGroup & cg ) + + + picture + picture + () + + + pixmap + pixmap + () + + + pixmapRect + pixmapRect + ( bool relative = true ) + + + pos + pos + () + + + prevItem + prevItem + () + + + rect + rect + () + + + removeRenameBox + removeRenameBox + () + + + rename + rename + () + + + renameEnabled + renameEnabled + () + + + repaint + repaint + () + + + rtti + rtti + () + + + setDragEnabled + setDragEnabled + ( bool allow ) + + + setDropEnabled + setDropEnabled + ( bool allow ) + + + setItemRect + setItemRect + ( const QRect & r ) + + + setKey + setKey + ( const QString & k ) + + + setPicture + setPicture + ( const QPicture & icon ) + + + setPixmap + setPixmap + ( const QPixmap & icon ) + + + setPixmap + setPixmap-2 + ( const QPixmap & icon, bool recalc, bool redraw = true ) + + + setPixmapRect + setPixmapRect + ( const QRect & r ) + + + setRenameEnabled + setRenameEnabled + ( bool allow ) + + + setSelectable + setSelectable + ( bool enable ) + + + setSelected + setSelected + ( bool s, bool cb ) + + + setSelected + setSelected-2 + ( bool s ) + + + setText + setText + ( const QString & text ) + + + setText + setText-2 + ( const QString & text, bool recalc, bool redraw = true ) + + + setTextRect + setTextRect + ( const QRect & r ) + + + size + size + () + + + text + text + () + + + textRect + textRect + ( bool relative = true ) + + + width + width + () + + + x + x + () + + + y + y + () + + + + Q3ImageDrag + q3imagedrag.html + + Q3ImageDrag + Q3ImageDrag + ( QImage image, QWidget * dragSource = 0, const char * name = 0 ) + + + Q3ImageDrag + Q3ImageDrag-2 + ( QWidget * dragSource = 0, const char * name = 0 ) + + + canDecode + canDecode + ( const QMimeSource * source ) + + + decode + decode + ( const QMimeSource * source, QImage & image ) + + + decode + decode-2 + ( const QMimeSource * source, QPixmap & pixmap ) + + + setImage + setImage + ( QImage image ) + + + + Q3IntCache + q3intcache.html + + Q3IntCache + Q3IntCache-2 + ( int maxCost = 100, int size = 17 ) + + + clear + clear + () + + + count + count + () + + + find + find + ( long k, bool ref = true ) + + + insert + insert + ( long k, const type * d, int c = 1, int p = 0 ) + + + isEmpty + isEmpty + () + + + maxCost + maxCost + () + + + remove + remove + ( long k ) + + + setMaxCost + setMaxCost + ( int m ) + + + size + size + () + + + statistics + statistics + () + + + take + take + ( long k ) + + + totalCost + totalCost + () + + + operator[] + operator-5b-5d + ( long k ) + + + + Q3IntCacheIterator + q3intcacheiterator.html + + Q3IntCacheIterator + Q3IntCacheIterator + ( const Q3IntCache<type> & cache ) + + + Q3IntCacheIterator + Q3IntCacheIterator-2 + ( const Q3IntCacheIterator<type> & ci ) + + + atFirst + atFirst + () + + + atLast + atLast + () + + + count + count + () + + + current + current + () + + + currentKey + currentKey + () + + + isEmpty + isEmpty + () + + + toFirst + toFirst + () + + + toLast + toLast + () + + + operator + operator-type--2a + type *() + + + operator() + operator-28-29 + () + + + operator++ + operator-2b-2b + () + + + operator+= + operator-2b-eq + ( uint jump ) + + + operator-- + operator-- + () + + + operator-= + operator--eq + ( uint jump ) + + + operator= + operator-eq + ( const Q3IntCacheIterator<type> & ci ) + + + + Q3IntDict + q3intdict.html + + Q3IntDict + Q3IntDict + ( int size = 17 ) + + + Q3IntDict + Q3IntDict-2 + ( const Q3IntDict<type> & dict ) + + + clear + clear + () + + + count + count + () + + + find + find + ( long key ) + + + insert + insert + ( long key, const type * item ) + + + isEmpty + isEmpty + () + + + read + read + ( QDataStream & s, Q3PtrCollection::Item & item ) + + + remove + remove + ( long key ) + + + replace + replace + ( long key, const type * item ) + + + resize + resize + ( uint newsize ) + + + size + size + () + + + statistics + statistics + () + + + take + take + ( long key ) + + + write + write + ( QDataStream & s, Q3PtrCollection::Item item ) + + + operator= + operator-eq + ( const Q3IntDict<type> & dict ) + + + operator[] + operator-5b-5d + ( long key ) + + + + Q3IntDictIterator + q3intdictiterator.html + + Q3IntDictIterator + Q3IntDictIterator + ( const Q3IntDict<type> & dict ) + + + count + count + () + + + current + current + () + + + currentKey + currentKey + () + + + isEmpty + isEmpty + () + + + toFirst + toFirst + () + + + operator + operator-type--2a + type *() + + + operator() + operator-28-29 + () + + + operator++ + operator-2b-2b + () + + + operator+= + operator-2b-eq + ( uint jump ) + + + + Q3ListBox + q3listbox.html + + ComparisonFlags + ComparisonFlags-typedef + + + + LayoutMode + LayoutMode-enum + + + + SelectionMode + SelectionMode-enum + + + + StringComparisonMode + StringComparisonMode-enum + + + + Q3ListBox + Q3ListBox + ( QWidget * parent = 0, const char * name = 0, Qt::WFlags f = 0 ) + + + autoBottomScrollBar + autoBottomScrollBar + () + + + autoScroll + autoScroll + () + + + autoScrollBar + autoScrollBar + () + + + autoUpdate + autoUpdate + () + + + bottomScrollBar + bottomScrollBar + () + + + cellHeight + cellHeight + ( int i ) + + + cellHeight + cellHeight-2 + () + + + cellWidth + cellWidth + () + + + cellWidth + cellWidth-2 + ( int i ) + + + centerCurrentItem + centerCurrentItem + () + + + changeItem + changeItem + ( const Q3ListBoxItem * lbi, int index ) + + + changeItem + changeItem-2 + ( const QString & text, int index ) + + + changeItem + changeItem-3 + ( const QPixmap & pixmap, int index ) + + + changeItem + changeItem-4 + ( const QPixmap & pixmap, const QString & text, int index ) + + + clear + clear + () + + + clearSelection + clearSelection + () + + + clicked + clicked + ( Q3ListBoxItem * item ) + + + clicked + clicked-2 + ( Q3ListBoxItem * item, const QPoint & pnt ) + + + contextMenuRequested + contextMenuRequested + ( Q3ListBoxItem * item, const QPoint & pos ) + + + currentChanged + currentChanged + ( Q3ListBoxItem * item ) + + + doLayout + doLayout + () + + + doubleClicked + doubleClicked + ( Q3ListBoxItem * item ) + + + dragSelect + dragSelect + () + + + ensureCurrentVisible + ensureCurrentVisible + () + + + findItem + findItem + ( const QString & text, ComparisonFlags compare = BeginsWith ) + + + findItem + findItem-2 + ( int yPos ) + + + firstItem + firstItem + () + + + highlighted + highlighted + ( int index ) + + + highlighted + highlighted-2 + ( Q3ListBoxItem * item ) + + + highlighted + highlighted-3 + ( const QString & text ) + + + inSort + inSort + ( const Q3ListBoxItem * lbi ) + + + inSort + inSort-2 + ( const QString & text ) + + + index + index + ( const Q3ListBoxItem * lbi ) + + + insertItem + insertItem + ( const Q3ListBoxItem * lbi, int index = -1 ) + + + insertItem + insertItem-2 + ( const Q3ListBoxItem * lbi, const Q3ListBoxItem * after ) + + + insertItem + insertItem-3 + ( const QString & text, int index = -1 ) + + + insertItem + insertItem-4 + ( const QPixmap & pixmap, int index = -1 ) + + + insertItem + insertItem-5 + ( const QPixmap & pixmap, const QString & text, int index = -1 ) + + + insertStrList + insertStrList + ( const char ** strings, int numStrings = -1, int index = -1 ) + + + insertStringList + insertStringList + ( const QStringList & list, int index = -1 ) + + + invertSelection + invertSelection + () + + + isRubberSelecting + isRubberSelecting + () + + + isSelected + isSelected + ( int i ) + + + isSelected + isSelected-2 + ( const Q3ListBoxItem * i ) + + + item + item + ( int index ) + + + itemAt + itemAt + ( const QPoint & p ) + + + itemHeight + itemHeight + ( int index = 0 ) + + + itemRect + itemRect + ( Q3ListBoxItem * item ) + + + itemVisible + itemVisible + ( int index ) + + + itemVisible + itemVisible-2 + ( const Q3ListBoxItem * item ) + + + maxItemWidth + maxItemWidth + () + + + mouseButtonClicked + mouseButtonClicked + ( int button, Q3ListBoxItem * item, const QPoint & pos ) + + + mouseButtonPressed + mouseButtonPressed + ( int button, Q3ListBoxItem * item, const QPoint & pos ) + + + numCols + numCols + () + + + onItem + onItem + ( Q3ListBoxItem * i ) + + + onViewport + onViewport + () + + + paintCell + paintCell + ( QPainter * p, int row, int col ) + + + pixmap + pixmap + ( int index ) + + + pressed + pressed + ( Q3ListBoxItem * item ) + + + pressed + pressed-2 + ( Q3ListBoxItem * item, const QPoint & pnt ) + + + removeItem + removeItem + ( int index ) + + + returnPressed + returnPressed + ( Q3ListBoxItem * item ) + + + rightButtonClicked + rightButtonClicked + ( Q3ListBoxItem * item, const QPoint & point ) + + + rightButtonPressed + rightButtonPressed + ( Q3ListBoxItem * item, const QPoint & point ) + + + scrollBar + scrollBar + () + + + selectAll + selectAll + ( bool select ) + + + selected + selected + ( int index ) + + + selected + selected-2 + ( Q3ListBoxItem * item ) + + + selected + selected-3 + ( const QString & text ) + + + selectedItem + selectedItem + () + + + selectionChanged + selectionChanged + () + + + selectionChanged + selectionChanged-2 + ( Q3ListBoxItem * item ) + + + setAutoBottomScrollBar + setAutoBottomScrollBar + ( bool enable ) + + + setAutoScroll + setAutoScroll + ( bool b ) + + + setAutoScrollBar + setAutoScrollBar + ( bool enable ) + + + setAutoUpdate + setAutoUpdate + ( bool b ) + + + setBottomItem + setBottomItem + ( int index ) + + + setBottomScrollBar + setBottomScrollBar + ( bool enable ) + + + setDragSelect + setDragSelect + ( bool b ) + + + setFixedVisibleLines + setFixedVisibleLines + ( int lines ) + + + setScrollBar + setScrollBar + ( bool enable ) + + + setSelected + setSelected + ( Q3ListBoxItem * item, bool select ) + + + setSelected + setSelected-2 + ( int index, bool select ) + + + setSmoothScrolling + setSmoothScrolling + ( bool b ) + + + smoothScrolling + smoothScrolling + () + + + sort + sort + ( bool ascending = true ) + + + takeItem + takeItem + ( const Q3ListBoxItem * item ) + + + text + text + ( int index ) + + + toggleCurrentItem + toggleCurrentItem + () + + + totalHeight + totalHeight + () + + + totalWidth + totalWidth + () + + + triggerUpdate + triggerUpdate + ( bool doLayout ) + + + updateCellWidth + updateCellWidth + () + + + updateItem + updateItem + ( int index ) + + + updateItem + updateItem-2 + ( Q3ListBoxItem * i ) + + + + Q3ListBoxItem + q3listboxitem.html + + Q3ListBoxItem + Q3ListBoxItem + ( Q3ListBox * listbox = 0 ) + + + Q3ListBoxItem + Q3ListBoxItem-2 + ( Q3ListBox * listbox, Q3ListBoxItem * after ) + + + current + current + () + + + height + height + ( const Q3ListBox * lb ) + + + isCurrent + isCurrent + () + + + isSelectable + isSelectable + () + + + isSelected + isSelected + () + + + listBox + listBox + () + + + next + next + () + + + paint + paint + ( QPainter * p ) + + + pixmap + pixmap + () + + + prev + prev + () + + + rtti + rtti + () + + + selected + selected + () + + + setCustomHighlighting + setCustomHighlighting + ( bool b ) + + + setSelectable + setSelectable + ( bool b ) + + + setText + setText + ( const QString & text ) + + + text + text + () + + + width + width + ( const Q3ListBox * lb ) + + + + Q3ListBoxPixmap + q3listboxpixmap.html + + Q3ListBoxPixmap + Q3ListBoxPixmap + ( Q3ListBox * listbox, const QPixmap & pixmap ) + + + Q3ListBoxPixmap + Q3ListBoxPixmap-2 + ( const QPixmap & pixmap ) + + + Q3ListBoxPixmap + Q3ListBoxPixmap-3 + ( Q3ListBox * listbox, const QPixmap & pixmap, Q3ListBoxItem * after ) + + + Q3ListBoxPixmap + Q3ListBoxPixmap-4 + ( Q3ListBox * listbox, const QPixmap & pix, const QString & text ) + + + Q3ListBoxPixmap + Q3ListBoxPixmap-5 + ( const QPixmap & pix, const QString & text ) + + + Q3ListBoxPixmap + Q3ListBoxPixmap-6 + ( Q3ListBox * listbox, const QPixmap & pix, const QString & text, Q3ListBoxItem * after ) + + + height + height + ( const Q3ListBox * lb ) + + + paint + paint + ( QPainter * painter ) + + + pixmap + pixmap + () + + + width + width + ( const Q3ListBox * lb ) + + + + Q3ListBoxText + q3listboxtext.html + + Q3ListBoxText + Q3ListBoxText + ( Q3ListBox * listbox, const QString & text = QString() + + + Q3ListBoxText + Q3ListBoxText-2 + ( const QString & text = QString() + + + Q3ListBoxText + Q3ListBoxText-3 + ( Q3ListBox * listbox, const QString & text, Q3ListBoxItem * after ) + + + height + height + ( const Q3ListBox * lb ) + + + paint + paint + ( QPainter * painter ) + + + width + width + ( const Q3ListBox * lb ) + + + + Q3ListView + q3listview.html + + ComparisonFlags + ComparisonFlags-typedef + + + + RenameAction + RenameAction-enum + + + + ResizeMode + ResizeMode-enum + + + + SelectionMode + SelectionMode-enum + + + + StringComparisonMode + StringComparisonMode-enum + + + + WidthMode + WidthMode-enum + + + + Q3ListView + Q3ListView + ( QWidget * parent = 0, const char * name = 0, Qt::WFlags f = 0 ) + + + addColumn + addColumn + ( const QString & label, int width = -1 ) + + + addColumn + addColumn-2 + ( const QIcon & icon, const QString & label, int width = -1 ) + + + adjustColumn + adjustColumn + ( int col ) + + + clear + clear + () + + + clearSelection + clearSelection + () + + + clicked + clicked + ( Q3ListViewItem * item ) + + + clicked + clicked-2 + ( Q3ListViewItem * item, const QPoint & pnt, int c ) + + + collapsed + collapsed + ( Q3ListViewItem * item ) + + + columnAlignment + columnAlignment + ( int column ) + + + columnText + columnText + ( int c ) + + + columnWidth + columnWidth + ( int c ) + + + columnWidthMode + columnWidthMode + ( int c ) + + + contentsMouseDoubleClickEvent + contentsMouseDoubleClickEvent + ( QMouseEvent * e ) + + + contentsMouseMoveEvent + contentsMouseMoveEvent + ( QMouseEvent * e ) + + + contentsMousePressEvent + contentsMousePressEvent + ( QMouseEvent * e ) + + + contentsMouseReleaseEvent + contentsMouseReleaseEvent + ( QMouseEvent * e ) + + + contextMenuRequested + contextMenuRequested + ( Q3ListViewItem * item, const QPoint & pos, int col ) + + + currentChanged + currentChanged + ( Q3ListViewItem * item ) + + + currentItem + currentItem + () + + + doAutoScroll + doAutoScroll + () + + + doubleClicked + doubleClicked + ( Q3ListViewItem * item ) + + + doubleClicked + doubleClicked-2 + ( Q3ListViewItem * item, const QPoint & point, int column ) + + + dragObject + dragObject + () + + + drawContentsOffset + drawContentsOffset + ( QPainter * p, int ox, int oy, int cx, int cy, int cw, int ch ) + + + dropped + dropped + ( QDropEvent * e ) + + + ensureItemVisible + ensureItemVisible + ( const Q3ListViewItem * i ) + + + eventFilter + eventFilter + ( QObject * o, QEvent * e ) + + + expanded + expanded + ( Q3ListViewItem * item ) + + + findItem + findItem + ( const QString & text, int column, ComparisonFlags compare = ExactMatch | Qt::CaseSensitive ) + + + firstChild + firstChild + () + + + header + header + () + + + hideColumn + hideColumn + ( int column ) + + + insertItem + insertItem + ( Q3ListViewItem * i ) + + + invertSelection + invertSelection + () + + + isOpen + isOpen + ( const Q3ListViewItem * item ) + + + isRenaming + isRenaming + () + + + isSelected + isSelected + ( const Q3ListViewItem * i ) + + + itemAt + itemAt + ( const QPoint & viewPos ) + + + itemPos + itemPos + ( const Q3ListViewItem * item ) + + + itemRect + itemRect + ( const Q3ListViewItem * item ) + + + itemRenamed + itemRenamed + ( Q3ListViewItem * item, int col, const QString & text ) + + + itemRenamed + itemRenamed-2 + ( Q3ListViewItem * item, int col ) + + + lastItem + lastItem + () + + + mouseButtonClicked + mouseButtonClicked + ( int button, Q3ListViewItem * item, const QPoint & pos, int c ) + + + mouseButtonPressed + mouseButtonPressed + ( int button, Q3ListViewItem * item, const QPoint & pos, int c ) + + + onItem + onItem + ( Q3ListViewItem * i ) + + + onViewport + onViewport + () + + + paintEmptyArea + paintEmptyArea + ( QPainter * p, const QRect & rect ) + + + pressed + pressed + ( Q3ListViewItem * item ) + + + pressed + pressed-2 + ( Q3ListViewItem * item, const QPoint & pnt, int c ) + + + removeColumn + removeColumn + ( int index ) + + + removeItem + removeItem + ( Q3ListViewItem * item ) + + + repaintItem + repaintItem + ( const Q3ListViewItem * item ) + + + resizeEvent + resizeEvent + ( QResizeEvent * e ) + + + returnPressed + returnPressed + ( Q3ListViewItem * item ) + + + rightButtonClicked + rightButtonClicked + ( Q3ListViewItem * item, const QPoint & point, int column ) + + + rightButtonPressed + rightButtonPressed + ( Q3ListViewItem * item, const QPoint & point, int column ) + + + selectAll + selectAll + ( bool select ) + + + selectedItem + selectedItem + () + + + selectionChanged + selectionChanged + () + + + selectionChanged + selectionChanged-2 + ( Q3ListViewItem * item ) + + + setColumnAlignment + setColumnAlignment + ( int column, int align ) + + + setColumnText + setColumnText + ( int column, const QString & label ) + + + setColumnText + setColumnText-2 + ( int column, const QIcon & icon, const QString & label ) + + + setColumnWidth + setColumnWidth + ( int column, int w ) + + + setColumnWidthMode + setColumnWidthMode + ( int c, WidthMode mode ) + + + setCurrentItem + setCurrentItem + ( Q3ListViewItem * i ) + + + setOpen + setOpen + ( Q3ListViewItem * item, bool open ) + + + setSelected + setSelected + ( Q3ListViewItem * item, bool selected ) + + + setSelectionAnchor + setSelectionAnchor + ( Q3ListViewItem * item ) + + + setSortColumn + setSortColumn + ( int column ) + + + setSortOrder + setSortOrder + ( Qt::SortOrder order ) + + + setSorting + setSorting + ( int column, bool ascending = true ) + + + sort + sort + () + + + sortColumn + sortColumn + () + + + SortOrder + sortOrder + Q3ListView::sortOrder() + + + spacePressed + spacePressed + ( Q3ListViewItem * item ) + + + startDrag + startDrag + () + + + takeItem + takeItem + ( Q3ListViewItem * i ) + + + triggerUpdate + triggerUpdate + () + + + updateContents + updateContents + () + + + + Q3ListViewItem + q3listviewitem.html + + Q3ListViewItem + Q3ListViewItem + ( Q3ListView * parent ) + + + Q3ListViewItem + Q3ListViewItem-2 + ( Q3ListViewItem * parent ) + + + Q3ListViewItem + Q3ListViewItem-3 + ( Q3ListView * parent, Q3ListViewItem * after ) + + + Q3ListViewItem + Q3ListViewItem-4 + ( Q3ListViewItem * parent, Q3ListViewItem * after ) + + + Q3ListViewItem + Q3ListViewItem-5 + ( Q3ListView * parent, const QString & label1, const QString & label2 = QString() + + + Q3ListViewItem + Q3ListViewItem-6 + ( Q3ListViewItem * parent, const QString & label1, const QString & label2 = QString() + + + Q3ListViewItem + Q3ListViewItem-7 + ( Q3ListView * parent, Q3ListViewItem * after, const QString & label1, const QString & label2 = QString() + + + Q3ListViewItem + Q3ListViewItem-8 + ( Q3ListViewItem * parent, Q3ListViewItem * after, const QString & label1, const QString & label2 = QString() + + + acceptDrop + acceptDrop + ( const QMimeSource * mime ) + + + activate + activate + () + + + activatedPos + activatedPos + ( QPoint & pos ) + + + cancelRename + cancelRename + ( int col ) + + + childCount + childCount + () + + + compare + compare + ( Q3ListViewItem * i, int col, bool ascending ) + + + depth + depth + () + + + dragEnabled + dragEnabled + () + + + dragEntered + dragEntered + () + + + dragLeft + dragLeft + () + + + dropEnabled + dropEnabled + () + + + dropped + dropped + ( QDropEvent * e ) + + + enforceSortOrder + enforceSortOrder + () + + + firstChild + firstChild + () + + + height + height + () + + + insertItem + insertItem + ( Q3ListViewItem * newChild ) + + + invalidateHeight + invalidateHeight + () + + + isEnabled + isEnabled + () + + + isExpandable + isExpandable + () + + + isOpen + isOpen + () + + + isSelectable + isSelectable + () + + + isSelected + isSelected + () + + + isVisible + isVisible + () + + + itemAbove + itemAbove + () + + + itemBelow + itemBelow + () + + + itemPos + itemPos + () + + + key + key + ( int column, bool ascending ) + + + listView + listView + () + + + moveItem + moveItem + ( Q3ListViewItem * after ) + + + multiLinesEnabled + multiLinesEnabled + () + + + nextSibling + nextSibling + () + + + okRename + okRename + ( int col ) + + + paintBranches + paintBranches + ( QPainter * p, const QColorGroup & cg, int w, int y, int h ) + + + paintCell + paintCell + ( QPainter * painter, const QColorGroup & cg, int column, int width, int align ) + + + paintFocus + paintFocus + ( QPainter * p, const QColorGroup & cg, const QRect & r ) + + + parent + parent + () + + + pixmap + pixmap + ( int column ) + + + removeItem + removeItem + ( Q3ListViewItem * item ) + + + renameEnabled + renameEnabled + ( int col ) + + + repaint + repaint + () + + + rtti + rtti + () + + + setDragEnabled + setDragEnabled + ( bool allow ) + + + setDropEnabled + setDropEnabled + ( bool allow ) + + + setEnabled + setEnabled + ( bool b ) + + + setExpandable + setExpandable + ( bool enable ) + + + setHeight + setHeight + ( int height ) + + + setMultiLinesEnabled + setMultiLinesEnabled + ( bool b ) + + + setOpen + setOpen + ( bool o ) + + + setPixmap + setPixmap + ( int column, const QPixmap & pm ) + + + setRenameEnabled + setRenameEnabled + ( int col, bool b ) + + + setSelectable + setSelectable + ( bool enable ) + + + setSelected + setSelected + ( bool s ) + + + setText + setText + ( int column, const QString & text ) + + + setVisible + setVisible + ( bool b ) + + + setup + setup + () + + + sort + sort + () + + + sortChildItems + sortChildItems + ( int column, bool ascending ) + + + startRename + startRename + ( int col ) + + + takeItem + takeItem + ( Q3ListViewItem * item ) + + + text + text + ( int column ) + + + totalHeight + totalHeight + () + + + width + width + ( const QFontMetrics & fm, const Q3ListView * lv, int c ) + + + widthChanged + widthChanged + ( int c = -1 ) + + + + Q3ListViewItemIterator + q3listviewitemiterator.html + + IteratorFlag + IteratorFlag-enum + + + + Q3ListViewItemIterator + Q3ListViewItemIterator + () + + + Q3ListViewItemIterator + Q3ListViewItemIterator-2 + ( Q3ListViewItem * item ) + + + Q3ListViewItemIterator + Q3ListViewItemIterator-3 + ( Q3ListViewItem * item, int iteratorFlags ) + + + Q3ListViewItemIterator + Q3ListViewItemIterator-4 + ( const Q3ListViewItemIterator & it ) + + + Q3ListViewItemIterator + Q3ListViewItemIterator-5 + ( Q3ListView * lv ) + + + Q3ListViewItemIterator + Q3ListViewItemIterator-6 + ( Q3ListView * lv, int iteratorFlags ) + + + current + current + () + + + operator* + operator-2a + () + + + operator++ + operator-2b-2b + () + + + operator++ + operator-2b-2b-2 + ( int ) + + + operator+= + operator-2b-eq + ( int j ) + + + operator-- + operator-- + () + + + operator-- + operator---2 + ( int ) + + + operator-= + operator--eq + ( int j ) + + + operator= + operator-eq + ( const Q3ListViewItemIterator & it ) + + + + Q3LocalFs + q3localfs.html + + Q3LocalFs + Q3LocalFs + () + + + + Q3MainWindow + q3mainwindow.html + + DockWindows + DockWindows-enum + + + + Q3MainWindow + Q3MainWindow + ( QWidget * parent = 0, const char * name = 0, Qt::WFlags f = Qt::WType_TopLevel ) + + + addDockWindow + addDockWindow + ( Q3DockWindow * dockWindow, Qt::Dock edge = Qt::DockTop, bool newLine = false ) + + + addDockWindow + addDockWindow-2 + ( Q3DockWindow * dockWindow, const QString & label, Qt::Dock edge = Qt::DockTop, bool newLine = false ) + + + addToolBar + addToolBar + ( Q3DockWindow * dockWindow, Qt::Dock position = Qt::DockTop, bool newLine = false ) + + + addToolBar + addToolBar-2 + ( Q3DockWindow * dockWindow, const QString & label, Qt::Dock position = Qt::DockTop, bool newLine = false ) + + + appropriate + appropriate + ( Q3DockWindow * dw ) + + + bottomDock + bottomDock + () + + + centralWidget + centralWidget + () + + + childEvent + childEvent + ( QChildEvent * e ) + + + createDockWindowMenu + createDockWindowMenu + ( DockWindows dockWindows = AllDockWindows ) + + + customize + customize + () + + + dockWindowPositionChanged + dockWindowPositionChanged + ( Q3DockWindow * dockWindow ) + + + dockWindows + dockWindows + ( Qt::Dock dock ) + + + dockWindows + dockWindows-2 + () + + + getLocation + getLocation + ( Q3DockWindow * dw, Qt::Dock & dock, int & index, bool & nl, int & extraOffset ) + + + hasDockWindow + hasDockWindow + ( Q3DockWindow * dw ) + + + isCustomizable + isCustomizable + () + + + isDockEnabled + isDockEnabled + ( Qt::Dock dock ) + + + isDockEnabled + isDockEnabled-2 + ( Q3DockArea * area ) + + + isDockEnabled + isDockEnabled-3 + ( Q3DockWindow * dw, Q3DockArea * area ) + + + isDockEnabled + isDockEnabled-4 + ( Q3DockWindow * tb, Qt::Dock dock ) + + + isDockMenuEnabled + isDockMenuEnabled + () + + + leftDock + leftDock + () + + + lineUpDockWindows + lineUpDockWindows + ( bool keepNewLines = false ) + + + lineUpToolBars + lineUpToolBars + ( bool keepNewLines = false ) + + + menuAboutToShow + menuAboutToShow + () + + + menuBar + menuBar + () + + + moveDockWindow + moveDockWindow + ( Q3DockWindow * dockWindow, Qt::Dock edge = Qt::DockTop ) + + + moveDockWindow + moveDockWindow-2 + ( Q3DockWindow * dockWindow, Qt::Dock edge, bool nl, int index, int extraOffset = -1 ) + + + moveToolBar + moveToolBar + ( Q3DockWindow * dockWindow, Qt::Dock position = Qt::DockTop ) + + + moveToolBar + moveToolBar-2 + ( Q3DockWindow * dockWindow, Qt::Dock position, bool nl, int index, int extraOffset = -1 ) + + + pixmapSizeChanged + pixmapSizeChanged + ( bool b ) + + + removeDockWindow + removeDockWindow + ( Q3DockWindow * dockWindow ) + + + removeToolBar + removeToolBar + ( Q3DockWindow * dockWindow ) + + + rightDock + rightDock + () + + + setAppropriate + setAppropriate + ( Q3DockWindow * dw, bool a ) + + + setCentralWidget + setCentralWidget + ( QWidget * w ) + + + setDockEnabled + setDockEnabled + ( Qt::Dock dock, bool enable ) + + + setDockEnabled + setDockEnabled-2 + ( Q3DockWindow * dw, Qt::Dock dock, bool enable ) + + + setDockMenuEnabled + setDockMenuEnabled + ( bool b ) + + + setToolBarsMovable + setToolBarsMovable + ( bool b ) + + + setUpLayout + setUpLayout + () + + + showDockMenu + showDockMenu + ( const QPoint & globalPos ) + + + statusBar + statusBar + () + + + toolBarPositionChanged + toolBarPositionChanged + ( Q3ToolBar * toolbar ) + + + toolBars + toolBars + ( Qt::Dock dock ) + + + toolBarsMovable + toolBarsMovable + () + + + topDock + topDock + () + + + usesTextLabelChanged + usesTextLabelChanged + ( bool b ) + + + whatsThis + whatsThis + () + + + + Q3MemArray + q3memarray.html + + ConstIterator + ConstIterator-typedef + + + + Iterator + Iterator-typedef + + + + Q3MemArray + Q3MemArray + ( int arg1, int arg2 ) + + + Q3MemArray + Q3MemArray-2 + () + + + Q3MemArray + Q3MemArray-3 + ( int size ) + + + Q3MemArray + Q3MemArray-4 + ( const Q3MemArray<type> & a ) + + + Q3MemArray + Q3MemArray-5 + ( const QVector<type> & vector ) + + + assign + assign + ( const Q3MemArray<type> & a ) + + + assign + assign-2 + ( const type * data, uint size ) + + + at + at + ( uint index ) + + + begin + begin + () + + + begin + begin-2 + () + + + bsearch + bsearch + ( const type & v ) + + + contains + contains + ( const type & v ) + + + copy + copy + () + + + count + count + () + + + data + data + () + + + detach + detach + () + + + duplicate + duplicate + ( const Q3MemArray<type> & a ) + + + duplicate + duplicate-2 + ( const type * data, uint size ) + + + end + end + () + + + end + end-2 + () + + + fill + fill + ( const type & v, int size = -1 ) + + + find + find + ( const type & v, uint index = 0 ) + + + isEmpty + isEmpty + () + + + isNull + isNull + () + + + nrefs + nrefs + () + + + resetRawData + resetRawData + ( const type * data, uint size ) + + + resize + resize + ( uint size, Optimization optim ) + + + resize + resize-2 + ( uint size ) + + + setRawData + setRawData + ( const type * data, uint size ) + + + size + size + () + + + sort + sort + () + + + truncate + truncate + ( uint pos ) + + + operator + operator-QVector-lttype-gt + QVector<type>() + + + operator + operator-const-type--2a + const type *() + + + operator!= + operator-not-eq + ( const Q3MemArray<type> & a ) + + + operator= + operator-eq + ( const Q3MemArray<type> & a ) + + + operator== + operator-eq-eq + ( const Q3MemArray<type> & a ) + + + operator[] + operator-5b-5d + ( int index ) + + + + Q3MimeSourceFactory + q3mimesourcefactory.html + + Q3MimeSourceFactory + Q3MimeSourceFactory + () + + + addFactory + addFactory + ( Q3MimeSourceFactory * f ) + + + addFilePath + addFilePath + ( const QString & p ) + + + data + data + ( const QString & abs_name ) + + + data + data-2 + ( const QString & abs_or_rel_name, const QString & context ) + + + defaultFactory + defaultFactory + () + + + filePath + filePath + () + + + makeAbsolute + makeAbsolute + ( const QString & abs_or_rel_name, const QString & context ) + + + removeFactory + removeFactory + ( Q3MimeSourceFactory * f ) + + + setData + setData + ( const QString & abs_name, QMimeSource * data ) + + + setDefaultFactory + setDefaultFactory + ( Q3MimeSourceFactory * factory ) + + + setExtensionType + setExtensionType + ( const QString & ext, const char * mimetype ) + + + setFilePath + setFilePath + ( const QStringList & path ) + + + setFilePath + setFilePath-2 + ( const QString & path ) + + + setImage + setImage + ( const QString & abs_name, const QImage & image ) + + + setPixmap + setPixmap + ( const QString & abs_name, const QPixmap & pixmap ) + + + setText + setText + ( const QString & abs_name, const QString & text ) + + + takeDefaultFactory + takeDefaultFactory + () + + + + Q3MultiLineEdit + q3multilineedit.html + + Alignment + alignment-prop + + + + Q3MultiLineEdit + Q3MultiLineEdit + ( QWidget * parent = 0, const char * name = 0 ) + + + autoUpdate + autoUpdate + () + + + backspace + backspace + () + + + cursorDown + cursorDown + ( bool mark = false ) + + + cursorLeft + cursorLeft + ( bool mark = false, bool wrap = true ) + + + cursorPoint + cursorPoint + () + + + cursorRight + cursorRight + ( bool mark = false, bool wrap = true ) + + + cursorUp + cursorUp + ( bool mark = false ) + + + cursorWordBackward + cursorWordBackward + ( bool mark ) + + + cursorWordForward + cursorWordForward + ( bool mark ) + + + deselect + deselect + () + + + end + end + ( bool mark = false ) + + + getMarkedRegion + getMarkedRegion + ( int * line1, int * col1, int * line2, int * col2 ) + + + hasMarkedText + hasMarkedText + () + + + home + home + ( bool mark = false ) + + + insertAndMark + insertAndMark + ( const QString & str, bool mark ) + + + insertAt + insertAt-2 + ( const QString & s, int line, int col, bool mark ) + + + insertLine + insertLine + ( const QString & txt, int line = -1 ) + + + killLine + killLine + () + + + lineLength + lineLength + ( int row ) + + + markedText + markedText + () + + + maxLines + maxLines + () + + + newLine + newLine + () + + + pageDown + pageDown + ( bool mark = false ) + + + pageUp + pageUp + ( bool mark = false ) + + + removeLine + removeLine + ( int paragraph ) + + + setCursorPosition + setCursorPosition-2 + ( int line, int col, bool mark ) + + + setMaxLines + setMaxLines + ( int max ) + + + textLine + textLine + ( int line ) + + + totalHeight + totalHeight + () + + + totalWidth + totalWidth + () + + + + Q3NetworkOperation + q3networkoperation.html + + Q3NetworkOperation + Q3NetworkOperation + ( Q3NetworkProtocol::Operation operation, const QString & arg0, const QString & arg1, const QString & arg2 ) + + + Q3NetworkOperation + Q3NetworkOperation-2 + ( Q3NetworkProtocol::Operation operation, const QByteArray & arg0, const QByteArray & arg1, const QByteArray & arg2 ) + + + arg + arg + ( int num ) + + + errorCode + errorCode + () + + + free + free + () + + + Operation + operation + Q3NetworkOperation::operation() + + + protocolDetail + protocolDetail + () + + + rawArg + rawArg + ( int num ) + + + setArg + setArg + ( int num, const QString & arg ) + + + setErrorCode + setErrorCode + ( int ec ) + + + setProtocolDetail + setProtocolDetail + ( const QString & detail ) + + + setRawArg + setRawArg + ( int num, const QByteArray & arg ) + + + setState + setState + ( Q3NetworkProtocol::State state ) + + + State + state + Q3NetworkOperation::state() + + + + Q3NetworkProtocol + q3networkprotocol.html + + ConnectionState + ConnectionState-enum + + + + Error + Error-enum + + + + Operation + Operation-enum + + + + State + State-enum + + + + Q3NetworkProtocol + Q3NetworkProtocol + () + + + addOperation + addOperation + ( Q3NetworkOperation * op ) + + + autoDelete + autoDelete + () + + + checkConnection + checkConnection + ( Q3NetworkOperation * op ) + + + clearOperationQueue + clearOperationQueue + () + + + connectionStateChanged + connectionStateChanged + ( int state, const QString & data ) + + + createdDirectory + createdDirectory + ( const QUrlInfo & i, Q3NetworkOperation * op ) + + + data + data + ( const QByteArray & data, Q3NetworkOperation * op ) + + + dataTransferProgress + dataTransferProgress + ( int bytesDone, int bytesTotal, Q3NetworkOperation * op ) + + + finished + finished + ( Q3NetworkOperation * op ) + + + getNetworkProtocol + getNetworkProtocol + ( const QString & protocol ) + + + hasOnlyLocalFileSystem + hasOnlyLocalFileSystem + () + + + itemChanged + itemChanged + ( Q3NetworkOperation * op ) + + + newChild + newChild + ( const QUrlInfo & i, Q3NetworkOperation * op ) + + + newChildren + newChildren + ( const Q3ValueList<QUrlInfo> & i, Q3NetworkOperation * op ) + + + operationGet + operationGet + ( Q3NetworkOperation * op ) + + + operationInProgress + operationInProgress + () + + + operationListChildren + operationListChildren + ( Q3NetworkOperation * op ) + + + operationMkDir + operationMkDir + ( Q3NetworkOperation * op ) + + + operationPut + operationPut + ( Q3NetworkOperation * op ) + + + operationRemove + operationRemove + ( Q3NetworkOperation * op ) + + + operationRename + operationRename + ( Q3NetworkOperation * op ) + + + registerNetworkProtocol + registerNetworkProtocol + ( const QString & protocol, Q3NetworkProtocolFactoryBase * protocolFactory ) + + + removed + removed + ( Q3NetworkOperation * op ) + + + setAutoDelete + setAutoDelete + ( bool b, int i = 10000 ) + + + setUrl + setUrl + ( Q3UrlOperator * u ) + + + start + start + ( Q3NetworkOperation * op ) + + + stop + stop + () + + + supportedOperations + supportedOperations + () + + + url + url + () + + + + Q3PaintDeviceMetrics + q3paintdevicemetrics.html + + Q3PaintDeviceMetrics + Q3PaintDeviceMetrics + ( const QPaintDevice * pd ) + + + depth + depth + () + + + height + height + () + + + heightMM + heightMM + () + + + logicalDpiX + logicalDpiX + () + + + logicalDpiY + logicalDpiY + () + + + numColors + numColors + () + + + width + width + () + + + widthMM + widthMM + () + + + + Q3Painter + q3painter.html + + Q3Painter + Q3Painter + () + + + Q3Painter + Q3Painter-2 + ( QPaintDevice * pdev ) + + + drawArc + drawArc + ( const QRect & r, int a, int alen ) + + + drawArc + drawArc-2 + ( int x, int y, int w, int h, int startAngle, int spanAngle ) + + + drawChord + drawChord + ( const QRect & r, int a, int alen ) + + + drawChord + drawChord-2 + ( int x, int y, int w, int h, int startAngle, int spanAngle ) + + + drawEllipse + drawEllipse + ( const QRect & r ) + + + drawEllipse + drawEllipse-2 + ( int x, int y, int width, int height ) + + + drawPie + drawPie + ( const QRect & r, int a, int alen ) + + + drawPie + drawPie-2 + ( int x, int y, int w, int h, int startAngle, int spanAngle ) + + + drawRect + drawRect + ( const QRect & r ) + + + drawRect + drawRect-2 + ( int x, int y, int w, int h ) + + + drawRoundRect + drawRoundRect + ( const QRect & r, int xrnd = 25, int yrnd = 25 ) + + + drawRoundRect + drawRoundRect-2 + ( int x, int y, int w, int h, int xrnd = 25, int yrnd = 25 ) + + + + Q3Picture + q3picture.html + + Q3Picture + Q3Picture + () + + + Q3Picture + Q3Picture-2 + ( const QPicture & other ) + + + load + load + ( QIODevice * device, const char * format = 0 ) + + + load + load-2 + ( const QString & fileName, const char * format = 0 ) + + + save + save + ( QIODevice * device, const char * format = 0 ) + + + save + save-2 + ( const QString & fileName, const char * format = 0 ) + + + + Q3PointArray + q3pointarray.html + + Q3PointArray + Q3PointArray + () + + + Q3PointArray + Q3PointArray-2 + ( const QRect & r, bool closed = false ) + + + Q3PointArray + Q3PointArray-3 + ( const QPolygon & other ) + + + copy + copy + () + + + cubicBezier + cubicBezier + () + + + isNull + isNull + () + + + makeArc + makeArc + ( int x, int y, int w, int h, int a1, int a2 ) + + + makeArc + makeArc-2 + ( int x, int y, int w, int h, int a1, int a2, const QMatrix & xf ) + + + makeEllipse + makeEllipse + ( int x, int y, int w, int h ) + + + + Q3PopupMenu + q3popupmenu.html + + Q3PopupMenu + Q3PopupMenu + ( QWidget * parent = 0, const char * name = 0 ) + + + exec + exec + () + + + exec + exec-2 + ( const QPoint & pos, int indexAtPoint = 0 ) + + + + Q3Process + q3process.html + + Communication + Communication-enum + + + + Q3Process + Q3Process + ( QObject * parent = 0, const char * name = 0 ) + + + Q3Process + Q3Process-2 + ( const QString & arg0, QObject * parent = 0, const char * name = 0 ) + + + Q3Process + Q3Process-3 + ( const QStringList & args, QObject * parent = 0, const char * name = 0 ) + + + addArgument + addArgument + ( const QString & arg ) + + + arguments + arguments + () + + + canReadLineStderr + canReadLineStderr + () + + + canReadLineStdout + canReadLineStdout + () + + + clearArguments + clearArguments + () + + + closeStdin + closeStdin + () + + + communication + communication + () + + + exitStatus + exitStatus + () + + + isRunning + isRunning + () + + + kill + kill + () + + + launch + launch + ( const QByteArray & buf, QStringList * env = 0 ) + + + launch + launch-2 + ( const QString & buf, QStringList * env = 0 ) + + + launchFinished + launchFinished + () + + + normalExit + normalExit + () + + + processExited + processExited + () + + + processIdentifier + processIdentifier + () + + + readLineStderr + readLineStderr + () + + + readLineStdout + readLineStdout + () + + + readStderr + readStderr + () + + + readStdout + readStdout + () + + + readyReadStderr + readyReadStderr + () + + + readyReadStdout + readyReadStdout + () + + + setArguments + setArguments + ( const QStringList & args ) + + + setCommunication + setCommunication + ( int commFlags ) + + + setWorkingDirectory + setWorkingDirectory + ( const QDir & dir ) + + + start + start + ( QStringList * env = 0 ) + + + tryTerminate + tryTerminate + () + + + workingDirectory + workingDirectory + () + + + writeToStdin + writeToStdin + ( const QByteArray & buf ) + + + writeToStdin + writeToStdin-2 + ( const QString & buf ) + + + wroteToStdin + wroteToStdin + () + + + + Q3ProgressBar + q3progressbar.html + + Q3ProgressBar + Q3ProgressBar-3 + ( QWidget * parent = 0, Qt::WFlags f = 0 ) + + + Q3ProgressBar + Q3ProgressBar-4 + ( int totalSteps, QWidget * parent = 0, Qt::WFlags f = 0 ) + + + reset + reset + () + + + setIndicator + setIndicator + ( QString & indicator, int progress, int totalSteps ) + + + Q3ProgressBar + Q3ProgressBar + ( QWidget * parent, const char * name, Qt::WFlags f = 0 ) + + + Q3ProgressBar + Q3ProgressBar-2 + ( int totalSteps, QWidget * parent, const char * name, Qt::WFlags f = 0 ) + + + + Q3ProgressDialog + q3progressdialog.html + + Q3ProgressDialog + Q3ProgressDialog-3 + ( QWidget * creator = 0, Qt::WFlags f = 0 ) + + + Q3ProgressDialog + Q3ProgressDialog-4 + ( const QString & labelText, const QString & cancelButtonText, int totalSteps, QWidget * creator = 0, Qt::WFlags f = 0 ) + + + cancel + cancel + () + + + canceled + canceled + () + + + forceShow + forceShow + () + + + reset + reset + () + + + setBar + setBar + ( Q3ProgressBar * bar ) + + + setCancelButton + setCancelButton + ( QPushButton * cancelButton ) + + + setCancelButtonText + setCancelButtonText + ( const QString & cancelButtonText ) + + + setLabel + setLabel + ( QLabel * label ) + + + sizeHint + sizeHint + () + + + Q3ProgressDialog + Q3ProgressDialog + ( QWidget * creator, const char * name, bool modal = false, Qt::WFlags f = 0 ) + + + Q3ProgressDialog + Q3ProgressDialog-2 + ( const QString & labelText, const QString & cancelButtonText, int totalSteps, QWidget * creator = 0, const char * name = 0, bool modal = false, Qt::WFlags f = 0 ) + + + + Q3PtrCollection + q3ptrcollection.html + + Item + Item-typedef + + + + Q3PtrCollection + Q3PtrCollection + () + + + Q3PtrCollection + Q3PtrCollection-2 + ( const Q3PtrCollection & source ) + + + autoDelete + autoDelete + () + + + clear + clear + () + + + count + count + () + + + deleteItem + deleteItem + ( Item d ) + + + newItem + newItem + ( Item d ) + + + setAutoDelete + setAutoDelete + ( bool enable ) + + + + Q3PtrDict + q3ptrdict.html + + Q3PtrDict + Q3PtrDict + ( int size = 17 ) + + + Q3PtrDict + Q3PtrDict-2 + ( const Q3PtrDict<type> & dict ) + + + clear + clear + () + + + count + count + () + + + find + find + ( void * key ) + + + insert + insert + ( void * key, const type * item ) + + + isEmpty + isEmpty + () + + + read + read + ( QDataStream & s, Q3PtrCollection::Item & item ) + + + remove + remove + ( void * key ) + + + replace + replace + ( void * key, const type * item ) + + + resize + resize + ( uint newsize ) + + + size + size + () + + + statistics + statistics + () + + + take + take + ( void * key ) + + + write + write + ( QDataStream & s, Q3PtrCollection::Item item ) + + + operator= + operator-eq + ( const Q3PtrDict<type> & dict ) + + + operator[] + operator-5b-5d + ( void * key ) + + + + Q3PtrDictIterator + q3ptrdictiterator.html + + Q3PtrDictIterator + Q3PtrDictIterator + ( const Q3PtrDict<type> & dict ) + + + count + count + () + + + current + current + () + + + currentKey + currentKey + () + + + isEmpty + isEmpty + () + + + toFirst + toFirst + () + + + operator + operator-type--2a + type *() + + + operator() + operator-28-29 + () + + + operator++ + operator-2b-2b + () + + + operator+= + operator-2b-eq + ( uint jump ) + + + + Q3PtrList + q3ptrlist.html + + Q3PtrList + Q3PtrList + () + + + Q3PtrList + Q3PtrList-2 + ( const Q3PtrList<type> & list ) + + + append + append + ( const type * item ) + + + at + at + ( uint index ) + + + at + at-2 + () + + + clear + clear + () + + + compareItems + compareItems + ( Q3PtrCollection::Item item1, Q3PtrCollection::Item item2 ) + + + contains + contains + ( const type * item ) + + + containsRef + containsRef + ( const type * item ) + + + count + count + () + + + current + current + () + + + currentNode + currentNode + () + + + find + find + ( const type * item ) + + + findNext + findNext + ( const type * item ) + + + findNextRef + findNextRef + ( const type * item ) + + + findRef + findRef + ( const type * item ) + + + first + first + () + + + getFirst + getFirst + () + + + getLast + getLast + () + + + inSort + inSort + ( const type * item ) + + + insert + insert + ( uint index, const type * item ) + + + isEmpty + isEmpty + () + + + last + last + () + + + next + next + () + + + prepend + prepend + ( const type * item ) + + + prev + prev + () + + + read + read + ( QDataStream & s, Q3PtrCollection::Item & item ) + + + remove + remove + ( uint index ) + + + remove + remove-2 + () + + + remove + remove-3 + ( const type * item ) + + + removeFirst + removeFirst + () + + + removeLast + removeLast + () + + + removeNode + removeNode + ( Q3LNode * node ) + + + removeRef + removeRef + ( const type * item ) + + + replace + replace + ( uint index, const type * item ) + + + sort + sort + () + + + take + take + ( uint index ) + + + take + take-2 + () + + + takeNode + takeNode + ( Q3LNode * node ) + + + toVector + toVector + ( Q3GVector * vec ) + + + write + write + ( QDataStream & s, Q3PtrCollection::Item item ) + + + operator!= + operator-not-eq + ( const Q3PtrList<type> & list ) + + + operator= + operator-eq + ( const Q3PtrList<type> & list ) + + + operator== + operator-eq-eq + ( const Q3PtrList<type> & list ) + + + + Q3PtrListIterator + q3ptrlistiterator.html + + Q3PtrListIterator + Q3PtrListIterator + ( const Q3PtrList<type> & list ) + + + atFirst + atFirst + () + + + atLast + atLast + () + + + count + count + () + + + current + current + () + + + isEmpty + isEmpty + () + + + toFirst + toFirst + () + + + toLast + toLast + () + + + operator + operator-type--2a + type *() + + + operator() + operator-28-29 + () + + + operator* + operator-2a + () + + + operator++ + operator-2b-2b + () + + + operator+= + operator-2b-eq + ( uint jump ) + + + operator-- + operator-- + () + + + operator-= + operator--eq + ( uint jump ) + + + operator= + operator-eq + ( const Q3PtrListIterator<type> & it ) + + + + Q3PtrQueue + q3ptrqueue.html + + Q3PtrQueue + Q3PtrQueue + () + + + Q3PtrQueue + Q3PtrQueue-2 + ( const Q3PtrQueue<type> & queue ) + + + autoDelete + autoDelete + () + + + clear + clear + () + + + count + count + () + + + current + current + () + + + dequeue + dequeue + () + + + enqueue + enqueue + ( const type * d ) + + + head + head + () + + + isEmpty + isEmpty + () + + + read + read + ( QDataStream & s, Q3PtrCollection::Item & item ) + + + remove + remove + () + + + setAutoDelete + setAutoDelete + ( bool enable ) + + + write + write + ( QDataStream & s, Q3PtrCollection::Item item ) + + + operator + operator-type--2a + type *() + + + operator= + operator-eq + ( const Q3PtrQueue<type> & queue ) + + + + Q3PtrStack + q3ptrstack.html + + Q3PtrStack + Q3PtrStack + () + + + Q3PtrStack + Q3PtrStack-2 + ( const Q3PtrStack<type> & s ) + + + autoDelete + autoDelete + () + + + clear + clear + () + + + count + count + () + + + current + current + () + + + isEmpty + isEmpty + () + + + pop + pop + () + + + push + push + ( const type * d ) + + + read + read + ( QDataStream & s, Q3PtrCollection::Item & item ) + + + remove + remove + () + + + setAutoDelete + setAutoDelete + ( bool enable ) + + + top + top + () + + + write + write + ( QDataStream & s, Q3PtrCollection::Item item ) + + + operator + operator-type--2a + type *() + + + operator= + operator-eq + ( const Q3PtrStack<type> & s ) + + + + Q3PtrVector + q3ptrvector.html + + Q3PtrVector + Q3PtrVector + () + + + Q3PtrVector + Q3PtrVector-2 + ( uint size ) + + + Q3PtrVector + Q3PtrVector-3 + ( const Q3PtrVector<type> & v ) + + + at + at + ( uint i ) + + + bsearch + bsearch + ( const type * d ) + + + clear + clear + () + + + compareItems + compareItems + ( Q3PtrCollection::Item d1, Q3PtrCollection::Item d2 ) + + + contains + contains + ( const type * d ) + + + containsRef + containsRef + ( const type * d ) + + + count + count + () + + + data + data + () + + + fill + fill + ( const type * d, int size = -1 ) + + + find + find + ( const type * d, uint i = 0 ) + + + findRef + findRef + ( const type * d, uint i = 0 ) + + + insert + insert + ( uint i, const type * d ) + + + isEmpty + isEmpty + () + + + isNull + isNull + () + + + read + read + ( QDataStream & s, Q3PtrCollection::Item & item ) + + + remove + remove + ( uint i ) + + + resize + resize + ( uint size ) + + + size + size + () + + + sort + sort + () + + + take + take + ( uint i ) + + + write + write + ( QDataStream & s, Q3PtrCollection::Item item ) + + + operator= + operator-eq + ( const Q3PtrVector<type> & v ) + + + operator== + operator-eq-eq + ( const Q3PtrVector<type> & v ) + + + operator[] + operator-5b-5d + ( int i ) + + + + Q3RangeControl + q3rangecontrol.html + + Q3RangeControl + Q3RangeControl + () + + + Q3RangeControl + Q3RangeControl-2 + ( int minValue, int maxValue, int lineStep, int pageStep, int value ) + + + addLine + addLine + () + + + addPage + addPage + () + + + bound + bound + ( int v ) + + + directSetValue + directSetValue + ( int value ) + + + lineStep + lineStepx + () + + + maxValue + maxValue + () + + + minValue + minValue + () + + + pageStep + pageStep + () + + + positionFromValue + positionFromValue + ( int logical_val, int span ) + + + prevValue + prevValue + () + + + rangeChange + rangeChange + () + + + setMaxValue + setMaxValue + ( int maxVal ) + + + setMinValue + setMinValue + ( int minVal ) + + + setRange + setRange + ( int minValue, int maxValue ) + + + setSteps + setSteps + ( int lineStep, int pageStep ) + + + setValue + setValue + ( int value ) + + + stepChange + stepChange + () + + + subtractLine + subtractLine + () + + + subtractPage + subtractPage + () + + + value + value + () + + + valueChange + valueChange + () + + + valueFromPosition + valueFromPosition + ( int pos, int span ) + + + + Q3ScrollView + q3scrollview.html + + ResizePolicy + ResizePolicy-enum + + + + ScrollBarMode + ScrollBarMode-enum + + + + Q3ScrollView + Q3ScrollView + ( QWidget * parent = 0, const char * name = 0, Qt::WFlags f = 0 ) + + + addChild + addChild + ( QWidget * child, int x = 0, int y = 0 ) + + + bottomMargin + bottomMargin + () + + + center + center + ( int x, int y ) + + + center + center-2 + ( int x, int y, float xmargin, float ymargin ) + + + childX + childX + ( QWidget * child ) + + + childY + childY + ( QWidget * child ) + + + clipper + clipper + () + + + contentsContextMenuEvent + contentsContextMenuEvent + ( QContextMenuEvent * e ) + + + contentsDragEnterEvent + contentsDragEnterEvent + ( QDragEnterEvent * event ) + + + contentsDragLeaveEvent + contentsDragLeaveEvent + ( QDragLeaveEvent * event ) + + + contentsDragMoveEvent + contentsDragMoveEvent + ( QDragMoveEvent * event ) + + + contentsDropEvent + contentsDropEvent + ( QDropEvent * event ) + + + contentsMouseDoubleClickEvent + contentsMouseDoubleClickEvent + ( QMouseEvent * e ) + + + contentsMouseMoveEvent + contentsMouseMoveEvent + ( QMouseEvent * e ) + + + contentsMousePressEvent + contentsMousePressEvent + ( QMouseEvent * e ) + + + contentsMouseReleaseEvent + contentsMouseReleaseEvent + ( QMouseEvent * e ) + + + contentsMoving + contentsMoving + ( int x, int y ) + + + contentsToViewport + contentsToViewport + ( int x, int y, int & vx, int & vy ) + + + contentsToViewport + contentsToViewport-2 + ( const QPoint & p ) + + + contentsWheelEvent + contentsWheelEvent + ( QWheelEvent * e ) + + + cornerWidget + cornerWidget + () + + + drawContents + drawContents + ( QPainter * p, int clipx, int clipy, int clipw, int cliph ) + + + drawContentsOffset + drawContentsOffset + ( QPainter * p, int offsetx, int offsety, int clipx, int clipy, int clipw, int cliph ) + + + enableClipper + enableClipper + ( bool y ) + + + ensureVisible + ensureVisible + ( int x, int y ) + + + ensureVisible + ensureVisible-2 + ( int x, int y, int xmargin, int ymargin ) + + + eventFilter + eventFilter + ( QObject * obj, QEvent * e ) + + + hasStaticBackground + hasStaticBackground + () + + + horizontalScrollBar + horizontalScrollBar + () + + + horizontalSliderPressed + horizontalSliderPressed + () + + + horizontalSliderReleased + horizontalSliderReleased + () + + + isHorizontalSliderPressed + isHorizontalSliderPressed + () + + + isVerticalSliderPressed + isVerticalSliderPressed + () + + + leftMargin + leftMargin + () + + + moveChild + moveChild + ( QWidget * child, int x, int y ) + + + removeChild + removeChild + ( QWidget * child ) + + + repaintContents + repaintContents + ( int x, int y, int w, int h, bool erase = true ) + + + repaintContents + repaintContents-2 + ( const QRect & r, bool erase = true ) + + + repaintContents + repaintContents-3 + ( bool erase = true ) + + + resizeContents + resizeContents + ( int w, int h ) + + + rightMargin + rightMargin + () + + + scrollBy + scrollBy + ( int dx, int dy ) + + + setContentsPos + setContentsPos + ( int x, int y ) + + + setCornerWidget + setCornerWidget + ( QWidget * corner ) + + + setHBarGeometry + setHBarGeometry + ( QScrollBar & hbar, int x, int y, int w, int h ) + + + setMargins + setMargins + ( int left, int top, int right, int bottom ) + + + setStaticBackground + setStaticBackground + ( bool y ) + + + setVBarGeometry + setVBarGeometry + ( QScrollBar & vbar, int x, int y, int w, int h ) + + + topMargin + topMargin + () + + + updateContents + updateContents + ( int x, int y, int w, int h ) + + + updateContents + updateContents-2 + ( const QRect & r ) + + + updateContents + updateContents-3 + () + + + updateScrollBars + updateScrollBars + () + + + verticalScrollBar + verticalScrollBar + () + + + verticalSliderPressed + verticalSliderPressed + () + + + verticalSliderReleased + verticalSliderReleased + () + + + viewport + viewport + () + + + viewportPaintEvent + viewportPaintEvent + ( QPaintEvent * pe ) + + + viewportResizeEvent + viewportResizeEvent + ( QResizeEvent * event ) + + + viewportSize + viewportSize + ( int x, int y ) + + + viewportToContents + viewportToContents + ( int vx, int vy, int & x, int & y ) + + + viewportToContents + viewportToContents-2 + ( const QPoint & vp ) + + + childIsVisible + childIsVisible + ( QWidget * child ) + + + showChild + showChild + ( QWidget * child, bool y = true ) + + + + Q3Semaphore + q3semaphore.html + + Q3Semaphore + Q3Semaphore + ( int maxcount ) + + + available + available + () + + + total + total + () + + + tryAccess + tryAccess + ( int n ) + + + operator++ + operator-2b-2b + ( int ) + + + operator+= + operator-2b-eq + ( int n ) + + + operator-- + operator-- + ( int ) + + + operator-= + operator--eq + ( int n ) + + + + Q3ServerSocket + q3serversocket.html + + Q3ServerSocket + Q3ServerSocket + ( Q_UINT16 port, int backlog = 1, QObject * parent = 0, const char * name = 0 ) + + + Q3ServerSocket + Q3ServerSocket-2 + ( const QHostAddress & address, Q_UINT16 port, int backlog = 1, QObject * parent = 0, const char * name = 0 ) + + + Q3ServerSocket + Q3ServerSocket-3 + ( QObject * parent = 0, const char * name = 0 ) + + + address + address + () + + + newConnection + newConnection + ( int socket ) + + + ok + ok + () + + + port + port + () + + + setSocket + setSocket + ( int socket ) + + + socket + socket + () + + + socketDevice + socketDevice + () + + + + Q3Shared + q3shared.html + + Q3Shared + Q3Shared + () + + + deref + deref + () + + + ref + ref + () + + + + Q3Signal + q3signal.html + + Q3Signal + Q3Signal + ( QObject * parent = 0, const char * name = 0 ) + + + activate + activate + () + + + connect + connect + ( const QObject * receiver, const char * member ) + + + disconnect + disconnect + ( const QObject * receiver, const char * member = 0 ) + + + setValue + setValue + ( const QVariant & value ) + + + value + value + () + + + block + block + ( bool b ) + + + isBlocked + isBlocked + () + + + parameter + parameter + () + + + setParameter + setParameter + ( int value ) + + + + Q3SimpleRichText + q3simplerichtext.html + + Q3SimpleRichText + Q3SimpleRichText + ( const QString & text, const QFont & fnt, const QString & context = QString() + + + Q3SimpleRichText + Q3SimpleRichText-2 + ( const QString & text, const QFont & fnt, const QString & context, const Q3StyleSheet * sheet, const Q3MimeSourceFactory * factory, int pageBreak = -1, const QColor & linkColor = Qt::blue, bool linkUnderline = true ) + + + adjustSize + adjustSize + () + + + anchorAt + anchorAt + ( const QPoint & pos ) + + + context + context + () + + + draw + draw + ( QPainter * p, int x, int y, const QRect & clipRect, const QColorGroup & cg, const QBrush * paper = 0 ) + + + draw + draw-2 + ( QPainter * p, int x, int y, const QRegion & clipRegion, const QColorGroup & cg, const QBrush * paper = 0 ) + + + height + height + () + + + inText + inText + ( const QPoint & pos ) + + + setDefaultFont + setDefaultFont + ( const QFont & f ) + + + setWidth + setWidth + ( QPainter * p, int w ) + + + setWidth + setWidth-2 + ( int w ) + + + width + width + () + + + widthUsed + widthUsed + () + + + + Q3SocketDevice + q3socketdevice.html + + Error + Error-enum + + + + Protocol + Protocol-enum + + + + Type + Type-enum + + + + Q3SocketDevice + Q3SocketDevice + ( Type type = Stream ) + + + Q3SocketDevice + Q3SocketDevice-2 + ( Type type, Protocol protocol, int dummy ) + + + Q3SocketDevice + Q3SocketDevice-3 + ( int socket, Type type ) + + + accept + accept + () + + + address + address + () + + + addressReusable + addressReusable + () + + + at + at + () + + + at + at-2 + ( Offset offset ) + + + bind + bind + ( const QHostAddress & address, Q_UINT16 port ) + + + blocking + blocking + () + + + bytesAvailable + bytesAvailable + () + + + connect + connect + ( const QHostAddress & addr, Q_UINT16 port ) + + + error + error + () + + + flush + flush + () + + + isValid + isValid + () + + + listen + listen + ( int backlog ) + + + open + open + ( int mode ) + + + peerAddress + peerAddress + () + + + peerPort + peerPort + () + + + port + port + () + + + protocol + protocol + () + + + readBlock + readBlock + ( char * data, Q_ULONG maxlen ) + + + readData + readData + ( char * data, qint64 maxlen ) + + + receiveBufferSize + receiveBufferSize + () + + + sendBufferSize + sendBufferSize + () + + + setAddressReusable + setAddressReusable + ( bool enable ) + + + setBlocking + setBlocking + ( bool enable ) + + + setError + setError + ( Error err ) + + + setReceiveBufferSize + setReceiveBufferSize + ( uint size ) + + + setSendBufferSize + setSendBufferSize + ( uint size ) + + + setSocket + setSocket + ( int socket, Type type ) + + + socket + socket + () + + + type + type + () + + + waitForMore + waitForMore + ( int msecs, bool * timeout = 0 ) + + + writeBlock + writeBlock + ( const char * data, Q_ULONG len ) + + + writeBlock + writeBlock-2 + ( const char * data, Q_ULONG len, const QHostAddress & host, Q_UINT16 port ) + + + writeData + writeData + ( const char * data, qint64 len ) + + + + Q3Socket + q3socket.html + + Error + Error-enum + + + + State + State-enum + + + + Q3Socket + Q3Socket + ( QObject * parent = 0, const char * name = 0 ) + + + address + address + () + + + at + at + () + + + at + at-2 + ( Offset index ) + + + atEnd + atEnd + () + + + bytesAvailable + bytesAvailable + () + + + bytesToWrite + bytesToWrite + () + + + bytesWritten + bytesWritten + ( int nbytes ) + + + canReadLine + canReadLine + () + + + clearPendingData + clearPendingData + () + + + close + close + () + + + connectToHost + connectToHost + ( const QString & host, Q_UINT16 port ) + + + connected + connected + () + + + connectionClosed + connectionClosed + () + + + delayedCloseFinished + delayedCloseFinished + () + + + error + error + ( int error ) + + + flush + flush + () + + + getch + getch + () + + + hostFound + hostFound + () + + + open + open + ( int m ) + + + peerAddress + peerAddress + () + + + peerName + peerName + () + + + peerPort + peerPort + () + + + port + port + () + + + putch + putch + ( int ch ) + + + readBufferSize + readBufferSize + () + + + readData + readData + ( char * data, qint64 maxlen ) + + + readyRead + readyRead + () + + + setReadBufferSize + setReadBufferSize + ( Q_ULONG bufSize ) + + + setSocket + setSocket + ( int socket ) + + + setSocketDevice + setSocketDevice + ( Q3SocketDevice * device ) + + + size + size + () + + + socket + socket + () + + + socketDevice + socketDevice + () + + + state + state + () + + + ungetch + ungetch + ( int ch ) + + + waitForMore + waitForMore + ( int msecs, bool * timeout ) + + + waitForMore + waitForMore-2 + ( int msecs ) + + + writeData + writeData + ( const char * data, qint64 len ) + + + + Q3SqlCursor + q3sqlcursor.html + + Mode + Mode-enum + + + + Q3SqlCursor + Q3SqlCursor + ( const QString & name = QString() + + + Q3SqlCursor + Q3SqlCursor-2 + ( const Q3SqlCursor & other ) + + + append + append + ( const Q3SqlFieldInfo & fieldInfo ) + + + calculateField + calculateField + ( const QString & name ) + + + canDelete + canDelete + () + + + canInsert + canInsert + () + + + canUpdate + canUpdate + () + + + clear + clear + () + + + del + del + ( bool invalidate = true ) + + + del + del-2 + ( const QString & filter, bool invalidate = true ) + + + editBuffer + editBuffer + ( bool copy = false ) + + + exec + exec + ( const QString & sql ) + + + filter + filter + () + + + index + index + ( const QStringList & fieldNames ) + + + index + index-2 + ( const QString & fieldName ) + + + insert + insert + ( int pos, const Q3SqlFieldInfo & fieldInfo ) + + + insert + insert-2 + ( bool invalidate = true ) + + + isCalculated + isCalculated + ( const QString & name ) + + + isNull + isNull + ( int i ) + + + isNull + isNull-2 + ( const QString & name ) + + + isReadOnly + isReadOnly + () + + + isTrimmed + isTrimmed + ( const QString & name ) + + + mode + mode + () + + + name + name + () + + + primaryIndex + primaryIndex + ( bool setFromCursor = true ) + + + primeDelete + primeDelete + () + + + primeInsert + primeInsert + () + + + primeUpdate + primeUpdate + () + + + remove + remove + ( int pos ) + + + select + select + ( const QString & filter, const QSqlIndex & sort = QSqlIndex() + + + select + select-2 + () + + + select + select-3 + ( const QSqlIndex & sort ) + + + select + select-4 + ( const QSqlIndex & filter, const QSqlIndex & sort ) + + + setCalculated + setCalculated + ( const QString & name, bool calculated ) + + + setFilter + setFilter + ( const QString & filter ) + + + setGenerated + setGenerated + ( const QString & name, bool generated ) + + + setGenerated + setGenerated-2 + ( int i, bool generated ) + + + setMode + setMode + ( int mode ) + + + setName + setName + ( const QString & name, bool autopopulate = true ) + + + setPrimaryIndex + setPrimaryIndex + ( const QSqlIndex & idx ) + + + setSort + setSort + ( const QSqlIndex & sort ) + + + setTrimmed + setTrimmed + ( const QString & name, bool trim ) + + + setValue + setValue-2 + ( const QString & name, const QVariant & val ) + + + sort + sort + () + + + toString + toString-2 + ( QSqlRecord * rec, const QString & prefix, const QString & fieldSep, const QString & sep ) + + + toString + toString-3 + ( const QString & prefix, QSqlField * field, const QString & fieldSep ) + + + toString + toString-4 + ( const QSqlIndex & i, QSqlRecord * rec, const QString & prefix, const QString & fieldSep, const QString & sep ) + + + update + update + ( bool invalidate = true ) + + + update + update-2 + ( const QString & filter, bool invalidate = true ) + + + value + value + ( int i ) + + + value + value-2 + ( const QString & name ) + + + operator= + operator-eq + ( const Q3SqlCursor & other ) + + + + Q3SqlEditorFactory + q3sqleditorfactory.html + + Q3SqlEditorFactory + Q3SqlEditorFactory + ( QObject * parent = 0 ) + + + createEditor + createEditor + ( QWidget * parent, const QVariant & variant ) + + + createEditor + createEditor-2 + ( QWidget * parent, const QSqlField * field ) + + + defaultFactory + defaultFactory + () + + + installDefaultFactory + installDefaultFactory + ( Q3SqlEditorFactory * factory ) + + + + Q3SqlFieldInfo + q3sqlfieldinfo.html + + Q3SqlFieldInfo + Q3SqlFieldInfo + ( const QString & name = QString() + + + Q3SqlFieldInfo + Q3SqlFieldInfo-2 + ( const QSqlField & other ) + + + defaultValue + defaultValue + () + + + isCalculated + isCalculated + () + + + isGenerated + isGenerated + () + + + isRequired + isRequired + () + + + isTrim + isTrim + () + + + length + length + () + + + name + name + () + + + precision + precision + () + + + setCalculated + setCalculated + ( bool calculated ) + + + setGenerated + setGenerated + ( bool generated ) + + + setTrim + setTrim + ( bool trim ) + + + toField + toField + () + + + Type + type + Q3SqlFieldInfo::type() + + + typeID + typeID + () + + + operator== + operator-eq-eq + ( const Q3SqlFieldInfo & other ) + + + + Q3SqlForm + q3sqlform.html + + Q3SqlForm + Q3SqlForm + ( QObject * parent = 0 ) + + + clear + clear + () + + + clearValues + clearValues + () + + + count + count + () + + + fieldToWidget + fieldToWidget + ( QSqlField * field ) + + + insert + insert + ( QWidget * widget, const QString & field ) + + + insert + insert-2 + ( QWidget * widget, QSqlField * field ) + + + installPropertyMap + installPropertyMap + ( Q3SqlPropertyMap * pmap ) + + + readField + readField + ( QWidget * widget ) + + + readFields + readFields + () + + + remove + remove + ( QWidget * widget ) + + + remove + remove-2 + ( const QString & field ) + + + setRecord + setRecord + ( QSqlRecord * buf ) + + + widget + widget + ( int i ) + + + widgetToField + widgetToField + ( QWidget * widget ) + + + writeField + writeField + ( QWidget * widget ) + + + writeFields + writeFields + () + + + + Q3SqlPropertyMap + q3sqlpropertymap.html + + Q3SqlPropertyMap + Q3SqlPropertyMap + () + + + defaultMap + defaultMap + () + + + insert + insert + ( const QString & classname, const QString & property ) + + + installDefaultMap + installDefaultMap + ( Q3SqlPropertyMap * map ) + + + property + property + ( QWidget * widget ) + + + remove + remove + ( const QString & classname ) + + + setProperty + setProperty + ( QWidget * widget, const QVariant & value ) + + + + Q3SqlRecordInfo + q3sqlrecordinfo.html + + Q3SqlRecordInfo + Q3SqlRecordInfo + () + + + Q3SqlRecordInfo + Q3SqlRecordInfo-2 + ( const Q3SqlFieldInfoList & other ) + + + Q3SqlRecordInfo + Q3SqlRecordInfo-3 + ( const QSqlRecord & other ) + + + contains + contains + ( const QString & fieldName ) + + + find + find + ( const QString & fieldName ) + + + toRecord + toRecord + () + + + + Q3SqlSelectCursor + q3sqlselectcursor.html + + Q3SqlSelectCursor + Q3SqlSelectCursor + ( const QString & query = QString() + + + Q3SqlSelectCursor + Q3SqlSelectCursor-2 + ( const Q3SqlSelectCursor & other ) + + + + Q3StoredDrag + q3storeddrag.html + + Q3StoredDrag + Q3StoredDrag + ( const char * mimeType, QWidget * dragSource = 0, const char * name = 0 ) + + + encodedData + encodedData + ( const char * format ) + + + setEncodedData + setEncodedData + ( const QByteArray & data ) + + + + Q3StrIList + q3strilist.html + + Q3StrIList + Q3StrIList + ( bool deepCopies = true ) + + + + Q3StrList + q3strlist.html + + Q3StrList + Q3StrList + ( bool deepCopies = true ) + + + Q3StrList + Q3StrList-2 + ( const Q3StrList & list ) + + + Q3StrList + Q3StrList-3 + ( const QList<QByteArray> & list ) + + + operator + operator-QList-ltQByteArray-gt + QList<QByteArray>() + + + operator= + operator-eq + ( const Q3StrList & list ) + + + operator= + operator-eq-2 + ( const QList<QByteArray> & list ) + + + + Q3StrListIterator + q3strlistiterator.html + + + Q3StyleSheet + q3stylesheet.html + + Q3StyleSheet + Q3StyleSheet + ( QObject * parent = 0, const char * name = 0 ) + + + convertFromPlainText + convertFromPlainText + ( const QString & plain, Q3StyleSheetItem::WhiteSpaceMode mode = Q3StyleSheetItem::WhiteSpacePre ) + + + defaultSheet + defaultSheet + () + + + error + error + ( const QString & msg ) + + + escape + escape + ( const QString & plain ) + + + item + item + ( const QString & name ) + + + item + item-2 + ( const QString & name ) + + + mightBeRichText + mightBeRichText + ( const QString & text ) + + + scaleFont + scaleFont + ( QFont & font, int logicalSize ) + + + setDefaultSheet + setDefaultSheet + ( Q3StyleSheet * sheet ) + + + + Q3StyleSheetItem + q3stylesheetitem.html + + DisplayMode + DisplayMode-enum + + + + ListStyle + ListStyle-enum + + + + Margin + Margin-enum + + + + VerticalAlignment + VerticalAlignment-enum + + + + WhiteSpaceMode + WhiteSpaceMode-enum + + + + Q3StyleSheetItem + Q3StyleSheetItem + ( Q3StyleSheet * parent, const QString & name ) + + + Q3StyleSheetItem + Q3StyleSheetItem-2 + ( const Q3StyleSheetItem & other ) + + + alignment + alignment + () + + + allowedInContext + allowedInContext + ( const Q3StyleSheetItem * s ) + + + color + color + () + + + contexts + contexts + () + + + definesFontItalic + definesFontItalic + () + + + definesFontStrikeOut + definesFontStrikeOut + () + + + definesFontUnderline + definesFontUnderline + () + + + displayMode + displayMode + () + + + fontFamily + fontFamily + () + + + fontItalic + fontItalic + () + + + fontSize + fontSize + () + + + fontStrikeOut + fontStrikeOut + () + + + fontUnderline + fontUnderline + () + + + fontWeight + fontWeight + () + + + isAnchor + isAnchor + () + + + lineSpacing + lineSpacing + () + + + listStyle + listStyle + () + + + logicalFontSize + logicalFontSize + () + + + logicalFontSizeStep + logicalFontSizeStep + () + + + margin + margin + ( Margin m ) + + + name + name + () + + + numberOfColumns + numberOfColumns + () + + + selfNesting + selfNesting + () + + + setAlignment + setAlignment + ( int f ) + + + setAnchor + setAnchor + ( bool anc ) + + + setColor + setColor + ( const QColor & c ) + + + setContexts + setContexts + ( const QString & c ) + + + setDisplayMode + setDisplayMode + ( DisplayMode m ) + + + setFontFamily + setFontFamily + ( const QString & fam ) + + + setFontItalic + setFontItalic + ( bool italic ) + + + setFontSize + setFontSize + ( int s ) + + + setFontStrikeOut + setFontStrikeOut + ( bool strikeOut ) + + + setFontUnderline + setFontUnderline + ( bool underline ) + + + setFontWeight + setFontWeight + ( int w ) + + + setListStyle + setListStyle + ( ListStyle s ) + + + setLogicalFontSize + setLogicalFontSize + ( int s ) + + + setLogicalFontSizeStep + setLogicalFontSizeStep + ( int s ) + + + setMargin + setMargin + ( Margin m, int v ) + + + setNumberOfColumns + setNumberOfColumns + ( int ncols ) + + + setSelfNesting + setSelfNesting + ( bool nesting ) + + + setVerticalAlignment + setVerticalAlignment + ( VerticalAlignment valign ) + + + setWhiteSpaceMode + setWhiteSpaceMode + ( WhiteSpaceMode m ) + + + styleSheet + styleSheet + () + + + styleSheet + styleSheet-2 + () + + + verticalAlignment + verticalAlignment + () + + + whiteSpaceMode + whiteSpaceMode + () + + + operator= + operator-eq + ( const Q3StyleSheetItem & other ) + + + + Q3SyntaxHighlighter + q3syntaxhighlighter.html + + Q3SyntaxHighlighter + Q3SyntaxHighlighter + ( Q3TextEdit * textEdit ) + + + currentParagraph + currentParagraph + () + + + highlightParagraph + highlightParagraph + ( const QString & text, int endStateOfLastPara ) + + + rehighlight + rehighlight + () + + + setFormat + setFormat + ( int start, int count, const QFont & font, const QColor & color ) + + + setFormat + setFormat-2 + ( int start, int count, const QColor & color ) + + + setFormat + setFormat-3 + ( int start, int count, const QFont & font ) + + + textEdit + textEdit + () + + + + Q3TabDialog + q3tabdialog.html + + Q3TabDialog + Q3TabDialog + ( QWidget * parent = 0, const char * name = 0, bool modal = false, Qt::WFlags f = 0 ) + + + aboutToShow + aboutToShow + () + + + addTab + addTab + ( QWidget * child, const QString & label ) + + + addTab + addTab-2 + ( QWidget * child, const QIcon & iconset, const QString & label ) + + + applyButtonPressed + applyButtonPressed + () + + + cancelButtonPressed + cancelButtonPressed + () + + + changeTab + changeTab + ( QWidget * w, const QIcon & iconset, const QString & label ) + + + changeTab + changeTab-2 + ( QWidget * w, const QString & label ) + + + currentChanged + currentChanged + ( QWidget * widget ) + + + currentPage + currentPage + () + + + defaultButtonPressed + defaultButtonPressed + () + + + hasApplyButton + hasApplyButton + () + + + hasCancelButton + hasCancelButton + () + + + hasDefaultButton + hasDefaultButton + () + + + hasHelpButton + hasHelpButton + () + + + hasOkButton + hasOkButton + () + + + helpButtonPressed + helpButtonPressed + () + + + insertTab + insertTab + ( QWidget * child, const QString & label, int index = -1 ) + + + insertTab + insertTab-2 + ( QWidget * child, const QIcon & iconset, const QString & label, int index = -1 ) + + + isTabEnabled + isTabEnabled + ( QWidget * w ) + + + removePage + removePage + ( QWidget * w ) + + + selected + selected + ( const QString & name ) + + + setApplyButton + setApplyButton + ( const QString & text ) + + + setApplyButton + setApplyButton-2 + () + + + setCancelButton + setCancelButton + ( const QString & text ) + + + setCancelButton + setCancelButton-2 + () + + + setDefaultButton + setDefaultButton + ( const QString & text ) + + + setDefaultButton + setDefaultButton-2 + () + + + setFont + setFont + ( const QFont & font ) + + + setHelpButton + setHelpButton + ( const QString & text ) + + + setHelpButton + setHelpButton-2 + () + + + setOkButton + setOkButton + ( const QString & text ) + + + setOkButton + setOkButton-2 + () + + + setTabBar + setTabBar + ( QTabBar * tb ) + + + setTabEnabled + setTabEnabled + ( QWidget * w, bool enable ) + + + showPage + showPage + ( QWidget * w ) + + + tabBar + tabBar + () + + + tabLabel + tabLabel + ( QWidget * w ) + + + isTabEnabled + isTabEnabled-2 + ( const char * name ) + + + setTabEnabled + setTabEnabled-2 + ( const char * name, bool enable ) + + + + Q3Table + q3table.html + + EditMode + EditMode-enum + + + + FocusStyle + FocusStyle-enum + + + + SelectionMode + SelectionMode-enum + + + + Q3Table + Q3Table + ( QWidget * parent = 0, const char * name = 0 ) + + + Q3Table + Q3Table-2 + ( int numRows, int numCols, QWidget * parent = 0, const char * name = 0 ) + + + activateNextCell + activateNextCell + () + + + addSelection + addSelection + ( const Q3TableSelection & s ) + + + adjustColumn + adjustColumn + ( int col ) + + + adjustRow + adjustRow + ( int row ) + + + beginEdit + beginEdit + ( int row, int col, bool replace ) + + + cellGeometry + cellGeometry + ( int row, int col ) + + + cellRect + cellRect + ( int row, int col ) + + + cellWidget + cellWidget + ( int row, int col ) + + + clearCell + clearCell + ( int row, int col ) + + + clearCellWidget + clearCellWidget + ( int row, int col ) + + + clearSelection + clearSelection + ( bool repaint = true ) + + + clicked + clicked + ( int row, int col, int button, const QPoint & mousePos ) + + + columnAt + columnAt + ( int x ) + + + columnClicked + columnClicked + ( int col ) + + + columnIndexChanged + columnIndexChanged + ( int section, int fromIndex, int toIndex ) + + + columnPos + columnPos + ( int col ) + + + columnWidth + columnWidth + ( int col ) + + + columnWidthChanged + columnWidthChanged + ( int col ) + + + contentsDragEnterEvent + contentsDragEnterEvent + ( QDragEnterEvent * e ) + + + contentsDragLeaveEvent + contentsDragLeaveEvent + ( QDragLeaveEvent * e ) + + + contentsDragMoveEvent + contentsDragMoveEvent + ( QDragMoveEvent * e ) + + + contentsDropEvent + contentsDropEvent + ( QDropEvent * e ) + + + contextMenuRequested + contextMenuRequested + ( int row, int col, const QPoint & pos ) + + + createEditor + createEditor + ( int row, int col, bool initFromCell ) + + + currEditCol + currEditCol + () + + + currEditRow + currEditRow + () + + + currentChanged + currentChanged + ( int row, int col ) + + + currentColumn + currentColumn + () + + + currentRow + currentRow + () + + + currentSelection + currentSelection + () + + + doubleClicked + doubleClicked + ( int row, int col, int button, const QPoint & mousePos ) + + + dragEnabled + dragEnabled + () + + + dragObject + dragObject + () + + + drawContents + drawContents + ( QPainter * p, int cx, int cy, int cw, int ch ) + + + dropped + dropped + ( QDropEvent * e ) + + + editCell + editCell + ( int row, int col, bool replace = false ) + + + editMode + editMode + () + + + endEdit + endEdit + ( int row, int col, bool accept, bool replace ) + + + ensureCellVisible + ensureCellVisible + ( int row, int col ) + + + hideColumn + hideColumn + ( int col ) + + + hideRow + hideRow + ( int row ) + + + horizontalHeader + horizontalHeader + () + + + indexOf + indexOf + ( int row, int col ) + + + insertColumns + insertColumns + ( int col, int count = 1 ) + + + insertRows + insertRows + ( int row, int count = 1 ) + + + insertWidget + insertWidget + ( int row, int col, QWidget * w ) + + + isColumnHidden + isColumnHidden + ( int col ) + + + isColumnReadOnly + isColumnReadOnly + ( int col ) + + + isColumnSelected + isColumnSelected + ( int col, bool full = false ) + + + isColumnStretchable + isColumnStretchable + ( int col ) + + + isEditing + isEditing + () + + + isRowHidden + isRowHidden + ( int row ) + + + isRowReadOnly + isRowReadOnly + ( int row ) + + + isRowSelected + isRowSelected + ( int row, bool full = false ) + + + isRowStretchable + isRowStretchable + ( int row ) + + + isSelected + isSelected + ( int row, int col ) + + + item + item + ( int row, int col ) + + + paintCell + paintCell + ( QPainter * p, int row, int col, const QRect & cr, bool selected, const QColorGroup & cg ) + + + paintCell + paintCell-2 + ( QPainter * p, int row, int col, const QRect & cr, bool selected ) + + + paintEmptyArea + paintEmptyArea + ( QPainter * p, int cx, int cy, int cw, int ch ) + + + paintFocus + paintFocus + ( QPainter * p, const QRect & cr ) + + + pixmap + pixmap + ( int row, int col ) + + + pressed + pressed + ( int row, int col, int button, const QPoint & mousePos ) + + + removeColumn + removeColumn + ( int col ) + + + removeColumns + removeColumns + ( const Q3MemArray<int> & cols ) + + + removeRow + removeRow + ( int row ) + + + removeRows + removeRows + ( const Q3MemArray<int> & rows ) + + + removeSelection + removeSelection + ( const Q3TableSelection & s ) + + + removeSelection + removeSelection-2 + ( int num ) + + + repaintSelections + repaintSelections + () + + + resizeData + resizeData + ( int len ) + + + rowAt + rowAt + ( int y ) + + + rowHeight + rowHeight + ( int row ) + + + rowHeightChanged + rowHeightChanged + ( int row ) + + + rowIndexChanged + rowIndexChanged + ( int section, int fromIndex, int toIndex ) + + + rowPos + rowPos + ( int row ) + + + selectCells + selectCells + ( int start_row, int start_col, int end_row, int end_col ) + + + selectColumn + selectColumn + ( int col ) + + + selectRow + selectRow + ( int row ) + + + selection + selection + ( int num ) + + + selectionChanged + selectionChanged + () + + + setCellContentFromEditor + setCellContentFromEditor + ( int row, int col ) + + + setCellWidget + setCellWidget + ( int row, int col, QWidget * e ) + + + setColumnLabels + setColumnLabels + ( const QStringList & labels ) + + + setColumnReadOnly + setColumnReadOnly + ( int col, bool ro ) + + + setColumnStretchable + setColumnStretchable + ( int col, bool stretch ) + + + setColumnWidth + setColumnWidth + ( int col, int w ) + + + setCurrentCell + setCurrentCell + ( int row, int col ) + + + setDragEnabled + setDragEnabled + ( bool b ) + + + setEditMode + setEditMode + ( EditMode mode, int row, int col ) + + + setItem + setItem + ( int row, int col, Q3TableItem * item ) + + + setLeftMargin + setLeftMargin + ( int m ) + + + setPixmap + setPixmap + ( int row, int col, const QPixmap & pix ) + + + setRowHeight + setRowHeight + ( int row, int h ) + + + setRowLabels + setRowLabels + ( const QStringList & labels ) + + + setRowReadOnly + setRowReadOnly + ( int row, bool ro ) + + + setRowStretchable + setRowStretchable + ( int row, bool stretch ) + + + setText + setText + ( int row, int col, const QString & text ) + + + setTopMargin + setTopMargin + ( int m ) + + + showColumn + showColumn + ( int col ) + + + showRow + showRow + ( int row ) + + + sortColumn + sortColumn + ( int col, bool ascending = true, bool wholeRows = false ) + + + startDrag + startDrag + () + + + swapCells + swapCells + ( int row1, int col1, int row2, int col2 ) + + + swapColumns + swapColumns + ( int col1, int col2, bool swapHeader = false ) + + + swapRows + swapRows + ( int row1, int row2, bool swapHeader = false ) + + + takeItem + takeItem + ( Q3TableItem * i ) + + + text + text + ( int row, int col ) + + + updateCell + updateCell + ( int row, int col ) + + + updateHeaderStates + updateHeaderStates + () + + + valueChanged + valueChanged + ( int row, int col ) + + + verticalHeader + verticalHeader + () + + + + Q3TableItem + q3tableitem.html + + EditType + EditType-enum + + + + Q3TableItem + Q3TableItem + ( Q3Table * table, EditType et ) + + + Q3TableItem + Q3TableItem-2 + ( Q3Table * table, EditType et, const QString & text ) + + + Q3TableItem + Q3TableItem-3 + ( Q3Table * table, EditType et, const QString & text, const QPixmap & p ) + + + alignment + alignment + () + + + col + col + () + + + colSpan + colSpan + () + + + createEditor + createEditor + () + + + editType + editType + () + + + isEnabled + isEnabled + () + + + isReplaceable + isReplaceable + () + + + key + key + () + + + paint + paint + ( QPainter * p, const QColorGroup & cg, const QRect & cr, bool selected ) + + + pixmap + pixmap + () + + + row + row + () + + + rowSpan + rowSpan + () + + + rtti + rtti + () + + + setCol + setCol + ( int c ) + + + setContentFromEditor + setContentFromEditor + ( QWidget * w ) + + + setEnabled + setEnabled + ( bool b ) + + + setPixmap + setPixmap + ( const QPixmap & p ) + + + setReplaceable + setReplaceable + ( bool b ) + + + setRow + setRow + ( int r ) + + + setSpan + setSpan + ( int rs, int cs ) + + + setText + setText + ( const QString & str ) + + + setWordWrap + setWordWrap + ( bool b ) + + + sizeHint + sizeHint + () + + + table + table + () + + + text + text + () + + + wordWrap + wordWrap + () + + + + Q3TableSelection + q3tableselection.html + + Q3TableSelection + Q3TableSelection + () + + + Q3TableSelection + Q3TableSelection-2 + ( int start_row, int start_col, int end_row, int end_col ) + + + anchorCol + anchorCol + () + + + anchorRow + anchorRow + () + + + bottomRow + bottomRow + () + + + expandTo + expandTo + ( int row, int col ) + + + init + init + ( int row, int col ) + + + isActive + isActive + () + + + isEmpty + isEmpty + () + + + leftCol + leftCol + () + + + numCols + numCols + () + + + numRows + numRows + () + + + rightCol + rightCol + () + + + topRow + topRow + () + + + operator!= + operator-not-eq + ( const Q3TableSelection & s ) + + + operator== + operator-eq-eq + ( const Q3TableSelection & s ) + + + + Q3TextBrowser + q3textbrowser.html + + Q3TextBrowser + Q3TextBrowser + ( QWidget * parent = 0, const char * name = 0 ) + + + anchorClicked + anchorClicked + ( const QString & name, const QString & link ) + + + backward + backward + () + + + backwardAvailable + backwardAvailable + ( bool available ) + + + forward + forward + () + + + forwardAvailable + forwardAvailable + ( bool available ) + + + highlighted + highlighted + ( const QString & link ) + + + home + home + () + + + keyPressEvent + keyPressEvent + ( QKeyEvent * e ) + + + linkClicked + linkClicked + ( const QString & link ) + + + reload + reload + () + + + setText + setText-2 + ( const QString & txt ) + + + sourceChanged + sourceChanged + ( const QString & src ) + + + + Q3TextDrag + q3textdrag.html + + Q3TextDrag + Q3TextDrag + ( const QString & text, QWidget * dragSource = 0, const char * name = 0 ) + + + Q3TextDrag + Q3TextDrag-2 + ( QWidget * dragSource = 0, const char * name = 0 ) + + + canDecode + canDecode + ( const QMimeSource * source ) + + + decode + decode + ( const QMimeSource * source, QString & string ) + + + decode + decode-2 + ( const QMimeSource * source, QString & string, QString & subtype ) + + + setSubtype + setSubtype + ( const QString & subtype ) + + + setText + setText + ( const QString & text ) + + + + Q3TextEdit + q3textedit.html + + CursorAction + CursorAction-enum + + + + KeyboardAction + KeyboardAction-enum + + + + VerticalAlignment + VerticalAlignment-enum + + + + WordWrap + WordWrap-enum + + + + WrapPolicy + WrapPolicy-enum + + + + TextFormat + textFormat-prop + + + + Q3TextEdit + Q3TextEdit + ( const QString & text, const QString & context = QString() + + + Q3TextEdit + Q3TextEdit-2 + ( QWidget * parent = 0, const char * name = 0 ) + + + alignment + alignment + () + + + anchorAt + anchorAt + ( const QPoint & pos, Qt::AnchorAttribute attr = Qt::AnchorHref ) + + + append + append + ( const QString & text ) + + + bold + bold + () + + + charAt + charAt + ( const QPoint & pos, int * para ) + + + clear + clear + () + + + clearParagraphBackground + clearParagraphBackground + ( int para ) + + + clicked + clicked + ( int para, int pos ) + + + color + color + () + + + context + context + () + + + copy + copy + () + + + copyAvailable + copyAvailable + ( bool yes ) + + + createPopupMenu + createPopupMenu + ( const QPoint & pos ) + + + createPopupMenu + createPopupMenu-2 + () + + + currentAlignmentChanged + currentAlignmentChanged + ( int a ) + + + currentColorChanged + currentColorChanged + ( const QColor & c ) + + + currentFont + currentFont + () + + + currentFontChanged + currentFontChanged + ( const QFont & f ) + + + currentVerticalAlignmentChanged + currentVerticalAlignmentChanged + ( Q3TextEdit::VerticalAlignment a ) + + + cursorPositionChanged + cursorPositionChanged-2 + ( int para, int pos ) + + + cut + cut + () + + + del + del + () + + + doKeyboardAction + doKeyboardAction + ( Q3TextEdit::KeyboardAction action ) + + + doubleClicked + doubleClicked + ( int para, int pos ) + + + ensureCursorVisible + ensureCursorVisible + () + + + family + family + () + + + find + find + ( const QString & expr, bool cs, bool wo, bool forward = true, int * para = 0, int * index = 0 ) + + + focusNextPrevChild + focusNextPrevChild + ( bool n ) + + + font + font + () + + + getCursorPosition + getCursorPosition + ( int * para, int * index ) + + + getSelection + getSelection + ( int * paraFrom, int * indexFrom, int * paraTo, int * indexTo, int selNum = 0 ) + + + heightForWidth + heightForWidth + ( int w ) + + + insert + insert + ( const QString & text, uint insertionFlags = CheckNewLines | RemoveSelected ) + + + insert + insert-2 + ( const QString & text, bool indent, bool checkNewLine = true, bool removeSelected = true ) + + + insertAt + insertAt + ( const QString & text, int para, int index ) + + + insertParagraph + insertParagraph + ( const QString & text, int para ) + + + isRedoAvailable + isRedoAvailable + () + + + isUndoAvailable + isUndoAvailable + () + + + italic + italic + () + + + keyPressEvent + keyPressEvent + ( QKeyEvent * e ) + + + lineOfChar + lineOfChar + ( int para, int index ) + + + lines + lines + () + + + linesOfParagraph + linesOfParagraph + ( int para ) + + + mimeSourceFactory + mimeSourceFactory + () + + + modificationChanged + modificationChanged + ( bool m ) + + + moveCursor + moveCursor + ( Q3TextEdit::CursorAction action, bool select ) + + + paragraphAt + paragraphAt + ( const QPoint & pos ) + + + paragraphBackgroundColor + paragraphBackgroundColor + ( int para ) + + + paragraphLength + paragraphLength + ( int para ) + + + paragraphRect + paragraphRect + ( int para ) + + + paragraphs + paragraphs + () + + + paste + paste + () + + + pasteSubType + pasteSubType + ( const QByteArray & subtype ) + + + placeCursor + placeCursor + ( const QPoint & pos, Q3TextCursor * c = 0 ) + + + pointSize + pointSize + () + + + redo + redo + () + + + redoAvailable + redoAvailable + ( bool yes ) + + + removeParagraph + removeParagraph + ( int para ) + + + removeSelectedText + removeSelectedText + ( int selNum = 0 ) + + + removeSelection + removeSelection + ( int selNum = 0 ) + + + repaintChanged + repaintChanged + () + + + returnPressed + returnPressed + () + + + scrollToAnchor + scrollToAnchor + ( const QString & name ) + + + scrollToBottom + scrollToBottom + () + + + selectAll + selectAll + ( bool select = true ) + + + selectionChanged + selectionChanged + () + + + setAlignment + setAlignment + ( int a ) + + + setBold + setBold + ( bool b ) + + + setColor + setColor + ( const QColor & c ) + + + setCurrentFont + setCurrentFont + ( const QFont & f ) + + + setCursorPosition + setCursorPosition + ( int para, int index ) + + + setFamily + setFamily + ( const QString & fontFamily ) + + + setItalic + setItalic + ( bool b ) + + + setMimeSourceFactory + setMimeSourceFactory + ( Q3MimeSourceFactory * factory ) + + + setParagraphBackgroundColor + setParagraphBackgroundColor + ( int para, const QColor & bg ) + + + setPointSize + setPointSize + ( int s ) + + + setSelection + setSelection + ( int paraFrom, int indexFrom, int paraTo, int indexTo, int selNum = 0 ) + + + setSelectionAttributes + setSelectionAttributes + ( int selNum, const QColor & back, bool invertText ) + + + setStyleSheet + setStyleSheet + ( Q3StyleSheet * styleSheet ) + + + setUnderline + setUnderline + ( bool b ) + + + setVerticalAlignment + setVerticalAlignment + ( Q3TextEdit::VerticalAlignment a ) + + + styleSheet + styleSheet + () + + + sync + sync + () + + + syntaxHighlighter + syntaxHighlighter + () + + + textChanged + textChanged + () + + + textCursor + textCursor + () + + + underline + underline + () + + + undo + undo + () + + + undoAvailable + undoAvailable + ( bool yes ) + + + verticalAlignment + verticalAlignment + () + + + zoomIn + zoomIn + ( int range ) + + + zoomIn + zoomIn-2 + () + + + zoomOut + zoomOut + ( int range ) + + + zoomOut + zoomOut-2 + () + + + zoomTo + zoomTo + ( int size ) + + + + Q3TextView + q3textview.html + + + Q3TimeEdit + q3timeedit.html + + Display + Display-enum + + + + Q3TimeEdit + Q3TimeEdit + ( QWidget * parent = 0, const char * name = 0 ) + + + Q3TimeEdit + Q3TimeEdit-2 + ( const QTime & time, QWidget * parent = 0, const char * name = 0 ) + + + sectionFormattedText + sectionFormattedText + ( int sec ) + + + separator + separator + () + + + setHour + setHour + ( int h ) + + + setMinute + setMinute + ( int m ) + + + setRange + setRange + ( const QTime & min, const QTime & max ) + + + setSecond + setSecond + ( int s ) + + + setSeparator + setSeparator + ( const QString & s ) + + + valueChanged + valueChanged + ( const QTime & time ) + + + + Q3ToolBar + q3toolbar.html + + Q3ToolBar + Q3ToolBar + ( const QString & label, Q3MainWindow * parent, Qt::ToolBarDock dock = Qt::DockTop, bool newLine = false, const char * name = 0 ) + + + Q3ToolBar + Q3ToolBar-2 + ( const QString & label, Q3MainWindow * mainWindow, QWidget * parent, bool newLine = false, const char * name = 0, Qt::WFlags f = 0 ) + + + Q3ToolBar + Q3ToolBar-3 + ( Q3MainWindow * parent = 0, const char * name = 0 ) + + + addSeparator + addSeparator + () + + + clear + clear + () + + + mainWindow + mainWindow + () + + + setStretchableWidget + setStretchableWidget + ( QWidget * w ) + + + + Q3UriDrag + q3uridrag.html + + Q3UriDrag + Q3UriDrag + ( const Q3StrList & uris, QWidget * dragSource = 0, const char * name = 0 ) + + + Q3UriDrag + Q3UriDrag-2 + ( QWidget * dragSource = 0, const char * name = 0 ) + + + canDecode + canDecode + ( const QMimeSource * source ) + + + decode + decode + ( const QMimeSource * source, Q3StrList & list ) + + + decodeLocalFiles + decodeLocalFiles + ( const QMimeSource * source, QStringList & list ) + + + decodeToUnicodeUris + decodeToUnicodeUris + ( const QMimeSource * source, QStringList & list ) + + + localFileToUri + localFileToUri + ( const QString & filename ) + + + setFileNames + setFileNames + ( const QStringList & filenames ) + + + setFileNames + setFileNames-2 + ( const QString & name ) + + + setFilenames + setFilenames-2x + ( const QString & name ) + + + setUnicodeUris + setUnicodeUris + ( const QStringList & list ) + + + setUris + setUris + ( const QList<QByteArray> & list ) + + + unicodeUriToUri + unicodeUriToUri + ( const QString & string ) + + + uriToLocalFile + uriToLocalFile + ( const char * string ) + + + uriToUnicodeUri + uriToUnicodeUri + ( const char * string ) + + + setFilenames + setFilenamesx + ( const QStringList & list ) + + + + Q3Url + q3url.html + + Q3Url + Q3Url + () + + + Q3Url + Q3Url-2 + ( const QString & url ) + + + Q3Url + Q3Url-3 + ( const Q3Url & url ) + + + Q3Url + Q3Url-4 + ( const Q3Url & url, const QString & relUrl, bool checkSlash = false ) + + + addPath + addPath + ( const QString & pa ) + + + cdUp + cdUp + () + + + decode + decode + ( QString & url ) + + + dirPath + dirPath + () + + + encode + encode + ( QString & url ) + + + encodedPathAndQuery + encodedPathAndQuery + () + + + fileName + fileName + () + + + hasHost + hasHost + () + + + hasPassword + hasPassword + () + + + hasPath + hasPath + () + + + hasPort + hasPort + () + + + hasRef + hasRef + () + + + hasUser + hasUser + () + + + host + host + () + + + isLocalFile + isLocalFile + () + + + isRelativeUrl + isRelativeUrl + ( const QString & url ) + + + isValid + isValid + () + + + parse + parse + ( const QString & url ) + + + password + password + () + + + path + path + ( bool correct = true ) + + + port + port + () + + + protocol + protocol + () + + + query + query + () + + + ref + ref + () + + + reset + reset + () + + + setEncodedPathAndQuery + setEncodedPathAndQuery + ( const QString & pathAndQuery ) + + + setFileName + setFileName + ( const QString & name ) + + + setHost + setHost + ( const QString & host ) + + + setPassword + setPassword + ( const QString & pass ) + + + setPath + setPath + ( const QString & path ) + + + setPort + setPort + ( int port ) + + + setProtocol + setProtocol + ( const QString & protocol ) + + + setQuery + setQuery + ( const QString & txt ) + + + setRef + setRef + ( const QString & txt ) + + + setUser + setUser + ( const QString & user ) + + + toString + toString + ( bool encodedPath = false, bool forcePrependProtocol = true ) + + + user + user + () + + + operator + operator-QString + QString() + + + operator= + operator-eq + ( const Q3Url & url ) + + + operator= + operator-eq-2 + ( const QString & url ) + + + operator== + operator-eq-eq + ( const Q3Url & url ) + + + operator== + operator-eq-eq-2 + ( const QString & url ) + + + + Q3UrlOperator + q3urloperator.html + + Q3UrlOperator + Q3UrlOperator + () + + + Q3UrlOperator + Q3UrlOperator-2 + ( const QString & url ) + + + Q3UrlOperator + Q3UrlOperator-3 + ( const Q3UrlOperator & url ) + + + Q3UrlOperator + Q3UrlOperator-4 + ( const Q3UrlOperator & url, const QString & relUrl, bool checkSlash = false ) + + + clearEntries + clearEntries + () + + + connectionStateChanged + connectionStateChanged + ( int state, const QString & data ) + + + copy + copy + ( const QString & from, const QString & to, bool move = false, bool toPath = true ) + + + copy + copy-2 + ( const QStringList & files, const QString & dest, bool move = false ) + + + createdDirectory + createdDirectory + ( const QUrlInfo & i, Q3NetworkOperation * op ) + + + data + data + ( const QByteArray & data, Q3NetworkOperation * op ) + + + dataTransferProgress + dataTransferProgress + ( int bytesDone, int bytesTotal, Q3NetworkOperation * op ) + + + deleteNetworkProtocol + deleteNetworkProtocol + () + + + finished + finished + ( Q3NetworkOperation * op ) + + + get + get + ( const QString & location = QString() + + + getNetworkProtocol + getNetworkProtocol + () + + + info + info + ( const QString & entry ) + + + isDir + isDir + ( bool * ok = 0 ) + + + itemChanged + itemChanged + ( Q3NetworkOperation * op ) + + + listChildren + listChildren + () + + + mkdir + mkdir + ( const QString & dirname ) + + + nameFilter + nameFilter + () + + + newChildren + newChildren + ( const Q3ValueList<QUrlInfo> & i, Q3NetworkOperation * op ) + + + put + put + ( const QByteArray & data, const QString & location = QString() + + + remove + remove + ( const QString & filename ) + + + removed + removed + ( Q3NetworkOperation * op ) + + + rename + rename + ( const QString & oldname, const QString & newname ) + + + setNameFilter + setNameFilter + ( const QString & nameFilter ) + + + start + start + ( Q3NetworkOperation * op ) + + + startedNextCopy + startedNextCopy + ( const Q3PtrList<Q3NetworkOperation> & lst ) + + + stop + stop + () + + + operator= + operator-eq + ( const Q3UrlOperator & url ) + + + operator= + operator-eq-2 + ( const QString & url ) + + + + Q3ValueListConstIterator + q3valuelistconstiterator.html + + Q3ValueListConstIterator + Q3ValueListConstIterator + () + + + Q3ValueListConstIterator + Q3ValueListConstIterator-2 + ( const Q3ValueListConstIterator & o ) + + + Q3ValueListConstIterator + Q3ValueListConstIterator-3 + ( const QLinkedList<T>::const_iterator & o ) + + + Q3ValueListConstIterator + Q3ValueListConstIterator-4 + ( const QLinkedList<T>::iterator & o ) + + + + Q3ValueList + q3valuelist.html + + ConstIterator + ConstIterator-typedef + + + + Iterator + Iterator-typedef + + + + const_iterator + const_iterator-typedef + + + + const_pointer + const_pointer-typedef + + + + const_reference + const_reference-typedef + + + + iterator + iterator-typedefx + + + + pointer + pointer-typedef + + + + reference + reference-typedef + + + + size_type + size_type-typedef + + + + value_type + value_type-typedef + + + + Q3ValueList + Q3ValueList + () + + + Q3ValueList + Q3ValueList-2 + ( const Q3ValueList<T> & l ) + + + Q3ValueList + Q3ValueList-3 + ( const QLinkedList<T> & l ) + + + Q3ValueList + Q3ValueList-4 + ( const QList<T> & l ) + + + Q3ValueList + Q3ValueList-5 + ( const std::list<T> & l ) + + + append + append + ( const T & x ) + + + at + at + ( Q3ValueList<T>::size_type i ) + + + at + at-2 + ( Q3ValueList<T>::size_type i ) + + + contains + contains + ( const T & x ) + + + fromLast + fromLast + () + + + fromLast + fromLast-2 + () + + + insert + insert + ( Q3ValueList<T>::Iterator it, const T & x ) + + + insert + insert-2 + ( Q3ValueList<T>::Iterator pos, Q3ValueList<T>::size_type n, const T & x ) + + + prepend + prepend + ( const T & x ) + + + remove + remove + ( Q3ValueList<T>::Iterator it ) + + + remove + remove-2 + ( const T & x ) + + + operator + operator-QList-ltT-gt + QList<T>() + + + operator!= + operator-not-eq + ( const Q3ValueList<T> & l ) + + + operator+ + operator-2b + ( const Q3ValueList<T> & l ) + + + operator+= + operator-2b-eq + ( const Q3ValueList<T> & l ) + + + operator+= + operator-2b-eq-2 + ( const T & x ) + + + operator<< + operator-lt-lt + ( const T & x ) + + + operator= + operator-eq + ( const Q3ValueList<T> & l ) + + + operator= + operator-eq-2 + ( const QList<T> & l ) + + + operator= + operator-eq-3 + ( const std::list<T> & l ) + + + operator== + operator-eq-eq + ( const Q3ValueList<T> & l ) + + + operator== + operator-eq-eq-2 + ( const std::list<T> & l ) + + + operator[] + operator-5b-5d + ( Q3ValueList<T>::size_type i ) + + + operator[] + operator-5b-5d-2 + ( Q3ValueList<T>::size_type i ) + + + + Q3ValueListIterator + q3valuelistiterator.html + + Q3ValueListIterator + Q3ValueListIterator + () + + + Q3ValueListIterator + Q3ValueListIterator-2 + ( const Q3ValueListIterator & o ) + + + Q3ValueListIterator + Q3ValueListIterator-3 + ( const QLinkedList<T>::iterator & o ) + + + + Q3ValueStack + q3valuestack.html + + Q3ValueStack + Q3ValueStack + () + + + pop + pop + () + + + push + push + ( const T & d ) + + + top + top + () + + + top + top-2 + () + + + + Q3ValueVector + q3valuevector.html + + Q3ValueVector + Q3ValueVector + () + + + Q3ValueVector + Q3ValueVector-2 + ( const Q3ValueVector<T> & v ) + + + Q3ValueVector + Q3ValueVector-3 + ( QVector<T>::size_type n, const T & val = T() + + + Q3ValueVector + Q3ValueVector-4 + ( const std::vector<T> & v ) + + + at + at + ( int i, bool * ok = 0 ) + + + at + at-2 + ( int i, bool * ok = 0 ) + + + resize + resize + ( int n, const T & val = T() + + + operator= + operator-eq + ( const Q3ValueVector<T> & v ) + + + operator= + operator-eq-2 + ( const std::vector<T> & v ) + + + + Q3VBox + q3vbox.html + + Q3VBox + Q3VBox + ( QWidget * parent = 0, const char * name = 0, Qt::WFlags f = 0 ) + + + + Q3VButtonGroup + q3vbuttongroup.html + + Q3VButtonGroup + Q3VButtonGroup + ( QWidget * parent = 0, const char * name = 0 ) + + + Q3VButtonGroup + Q3VButtonGroup-2 + ( const QString & title, QWidget * parent = 0, const char * name = 0 ) + + + + Q3WhatsThis + q3whatsthis.html + + Q3WhatsThis + Q3WhatsThis + ( QWidget * widget ) + + + add + add + ( QWidget * widget, const QString & text ) + + + clicked + clicked + ( const QString & href ) + + + display + display + ( const QString & text, const QPoint & pos = QCursor::pos() + + + enterWhatsThisMode + enterWhatsThisMode + () + + + inWhatsThisMode + inWhatsThisMode + () + + + leaveWhatsThisMode + leaveWhatsThisMode + ( const QString & text = QString() + + + remove + remove + ( QWidget * widget ) + + + text + text + ( const QPoint & pos ) + + + whatsThisButton + whatsThisButton + ( QWidget * parent ) + + + + Q3WidgetStack + q3widgetstack.html + + Q3WidgetStack + Q3WidgetStack + ( QWidget * parent, const char * name = 0, Qt::WFlags f = 0 ) + + + aboutToShow + aboutToShow + ( int id ) + + + aboutToShow + aboutToShow-2 + ( QWidget * widget ) + + + addWidget + addWidget + ( QWidget * w, int id = -1 ) + + + id + id + ( QWidget * widget ) + + + raiseWidget + raiseWidget + ( int id ) + + + raiseWidget + raiseWidget-2 + ( QWidget * w ) + + + removeWidget + removeWidget + ( QWidget * w ) + + + setChildGeometries + setChildGeometries + () + + + visibleWidget + visibleWidget + () + + + widget + widget + ( int id ) + + + + Q3Wizard + q3wizard.html + + Q3Wizard + Q3Wizard + ( QWidget * parent = 0, const char * name = 0, bool modal = false, Qt::WFlags f = 0 ) + + + addPage + addPage + ( QWidget * page, const QString & title ) + + + appropriate + appropriate + ( QWidget * page ) + + + back + back + () + + + backButton + backButton + () + + + cancelButton + cancelButton + () + + + currentPage + currentPage + () + + + finishButton + finishButton + () + + + help + help + () + + + helpButton + helpButton + () + + + helpClicked + helpClicked + () + + + indexOf + indexOf + ( QWidget * page ) + + + insertPage + insertPage + ( QWidget * page, const QString & title, int index ) + + + layOutButtonRow + layOutButtonRow + ( QHBoxLayout * layout ) + + + layOutTitleRow + layOutTitleRow + ( QHBoxLayout * layout, const QString & title ) + + + next + next + () + + + nextButton + nextButton + () + + + page + page + ( int index ) + + + pageCount + pageCount + () + + + removePage + removePage + ( QWidget * page ) + + + selected + selected + ( const QString & title ) + + + setAppropriate + setAppropriate + ( QWidget * page, bool appropriate ) + + + setBackEnabled + setBackEnabled + ( QWidget * page, bool enable ) + + + setFinishEnabled + setFinishEnabled + ( QWidget * page, bool enable ) + + + setHelpEnabled + setHelpEnabled + ( QWidget * page, bool enable ) + + + setNextEnabled + setNextEnabled + ( QWidget * page, bool enable ) + + + setTitle + setTitle + ( QWidget * page, const QString & title ) + + + showPage + showPage + ( QWidget * page ) + + + title + title + ( QWidget * page ) + + + setFinish + setFinish + ( QWidget * widget, bool finish ) + + + + QAbstractButton + qabstractbutton.html + + QAbstractButton + QAbstractButton + ( QWidget * parent = 0 ) + + + animateClick + animateClick + ( int msec = 100 ) + + + checkStateSet + checkStateSet + () + + + click + click + () + + + clicked + clicked + ( bool checked = false ) + + + group + group + () + + + hitButton + hitButton + ( const QPoint & pos ) + + + nextCheckState + nextCheckState + () + + + pressed + pressed + () + + + released + released + () + + + toggle + toggle + () + + + toggled + toggled + ( bool checked ) + + + QAbstractButton + QAbstractButton-2 + ( QWidget * parent, const char * name, Qt::WFlags f = 0 ) + + + accel + accel + () + + + iconSet + iconSet + () + + + isOn + isOn + () + + + isToggleButton + isToggleButton + () + + + pixmap + pixmap + () + + + setAccel + setAccel + ( const QKeySequence & key ) + + + setIconSet + setIconSet + ( const QIcon & icon ) + + + setOn + setOn + ( bool b ) + + + setPixmap + setPixmap + ( const QPixmap & p ) + + + setToggleButton + setToggleButton + ( bool b ) + + + + QAbstractEventDispatcher + qabstracteventdispatcher.html + + EventFilter + EventFilter-typedef + + + + TimerInfo + TimerInfo-typedef + + + + QAbstractEventDispatcher + QAbstractEventDispatcher + ( QObject * parent = 0 ) + + + aboutToBlock + aboutToBlock + () + + + awake + awake + () + + + filterEvent + filterEvent + ( void * message ) + + + flush + flush + () + + + hasPendingEvents + hasPendingEvents + () + + + instance + instance + ( QThread * thread = 0 ) + + + interrupt + interrupt + () + + + processEvents + processEvents + ( QEventLoop::ProcessEventsFlags flags ) + + + registerSocketNotifier + registerSocketNotifier + ( QSocketNotifier * notifier ) + + + registerTimer + registerTimer + ( int interval, QObject * object ) + + + registerTimer + registerTimer-2 + ( int timerId, int interval, QObject * object ) + + + registeredTimers + registeredTimers + ( QObject * object ) + + + setEventFilter + setEventFilter + ( EventFilter filter ) + + + unregisterSocketNotifier + unregisterSocketNotifier + ( QSocketNotifier * notifier ) + + + unregisterTimer + unregisterTimer + ( int timerId ) + + + unregisterTimers + unregisterTimers + ( QObject * object ) + + + wakeUp + wakeUp + () + + + + QAbstractExtensionFactory + qabstractextensionfactory.html + + extension + extension + ( QObject * object, const QString & iid ) + + + + QAbstractExtensionManager + qabstractextensionmanager.html + + extension + extension + ( QObject * object, const QString & iid ) + + + registerExtensions + registerExtensions + ( QAbstractExtensionFactory * factory, const QString & iid ) + + + unregisterExtensions + unregisterExtensions + ( QAbstractExtensionFactory * factory, const QString & iid ) + + + + QAbstractFileEngineHandler + qabstractfileenginehandler.html + + QAbstractFileEngineHandler + QAbstractFileEngineHandler + () + + + create + create + ( const QString & fileName ) + + + + QAbstractFileEngine + qabstractfileengine.html + + FileName + FileName-enum + + + + FileOwner + FileOwner-enum + + + + FileTime + FileTime-enum + + + + QAbstractFileEngine + QAbstractFileEngine + () + + + caseSensitive + caseSensitive + () + + + close + close + () + + + copy + copy + ( const QString & newName ) + + + create + create + ( const QString & fileName ) + + + entryList + entryList + ( QDir::Filters filters, const QStringList & filterNames ) + + + FileError + error + QAbstractFileEngine::error() + + + errorString + errorString + () + + + fileFlags + fileFlags + ( FileFlags type = FileInfoAll ) + + + fileName + fileName + ( FileName file = DefaultName ) + + + fileTime + fileTime + ( FileTime time ) + + + flush + flush + () + + + handle + handle + () + + + isRelativePath + isRelativePath + () + + + isSequential + isSequential + () + + + link + link + ( const QString & newName ) + + + mkdir + mkdir + ( const QString & dirName, bool createParentDirectories ) + + + open + open + ( QIODevice::OpenMode mode ) + + + owner + owner + ( FileOwner owner ) + + + ownerId + ownerId + ( FileOwner owner ) + + + pos + pos + () + + + read + read + ( char * data, qint64 maxlen ) + + + readLine + readLine + ( char * data, qint64 maxlen ) + + + remove + remove + () + + + rename + rename + ( const QString & newName ) + + + rmdir + rmdir + ( const QString & dirName, bool recurseParentDirectories ) + + + seek + seek + ( qint64 offset ) + + + setError + setError + ( QFile::FileError error, const QString & errorString ) + + + setFileName + setFileName + ( const QString & file ) + + + setPermissions + setPermissions + ( uint perms ) + + + setSize + setSize + ( qint64 size ) + + + size + size + () + + + write + write + ( const char * data, qint64 len ) + + + + QAbstractFormBuilder + qabstractformbuilder.html + + QAbstractFormBuilder + QAbstractFormBuilder + () + + + load + load + ( QIODevice * device, QWidget * parent = 0 ) + + + save + save + ( QIODevice * device, QWidget * widget ) + + + setWorkingDirectory + setWorkingDirectory + ( const QDir & directory ) + + + workingDirectory + workingDirectory + () + + + + QAbstractItemDelegate + qabstractitemdelegate.html + + EndEditHint + EndEditHint-enum + + + + QAbstractItemDelegate + QAbstractItemDelegate + ( QObject * parent = 0 ) + + + closeEditor + closeEditor + ( QWidget * editor, QAbstractItemDelegate::EndEditHint hint = NoHint ) + + + commitData + commitData + ( QWidget * editor ) + + + createEditor + createEditor + ( QWidget * parent, const QStyleOptionViewItem & option, const QModelIndex & index ) + + + editorEvent + editorEvent + ( QEvent * event, QAbstractItemModel * model, const QStyleOptionViewItem & option, const QModelIndex & index ) + + + elidedText + elidedText + ( const QFontMetrics & fontMetrics, int width, Qt::TextElideMode mode, const QString & text ) + + + paint + paint + ( QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index ) + + + setEditorData + setEditorData + ( QWidget * editor, const QModelIndex & index ) + + + setModelData + setModelData + ( QWidget * editor, QAbstractItemModel * model, const QModelIndex & index ) + + + sizeHint + sizeHint + ( const QStyleOptionViewItem & option, const QModelIndex & index ) + + + updateEditorGeometry + updateEditorGeometry + ( QWidget * editor, const QStyleOptionViewItem & option, const QModelIndex & index ) + + + + QAbstractItemModel + qabstractitemmodel.html + + QAbstractItemModel + QAbstractItemModel + ( QObject * parent = 0 ) + + + beginInsertColumns + beginInsertColumns + ( const QModelIndex & parent, int first, int last ) + + + beginInsertRows + beginInsertRows + ( const QModelIndex & parent, int first, int last ) + + + beginRemoveColumns + beginRemoveColumns + ( const QModelIndex & parent, int first, int last ) + + + beginRemoveRows + beginRemoveRows + ( const QModelIndex & parent, int first, int last ) + + + buddy + buddy + ( const QModelIndex & index ) + + + canFetchMore + canFetchMore + ( const QModelIndex & parent ) + + + changePersistentIndex + changePersistentIndex + ( const QModelIndex & from, const QModelIndex & to ) + + + changePersistentIndexList + changePersistentIndexList + ( const QModelIndexList & from, const QModelIndexList & to ) + + + columnCount + columnCount + ( const QModelIndex & parent = QModelIndex() + + + columnsAboutToBeInserted + columnsAboutToBeInserted + ( const QModelIndex & parent, int start, int end ) + + + columnsAboutToBeRemoved + columnsAboutToBeRemoved + ( const QModelIndex & parent, int start, int end ) + + + columnsInserted + columnsInserted + ( const QModelIndex & parent, int start, int end ) + + + columnsRemoved + columnsRemoved + ( const QModelIndex & parent, int start, int end ) + + + createIndex + createIndex + ( int row, int column, void * ptr = 0 ) + + + createIndex + createIndex-2 + ( int row, int column, int id ) + + + data + data + ( const QModelIndex & index, int role = Qt::DisplayRole ) + + + dataChanged + dataChanged + ( const QModelIndex & topLeft, const QModelIndex & bottomRight ) + + + dropMimeData + dropMimeData + ( const QMimeData * data, Qt::DropAction action, int row, int column, const QModelIndex & parent ) + + + endInsertColumns + endInsertColumns + () + + + endInsertRows + endInsertRows + () + + + endRemoveColumns + endRemoveColumns + () + + + endRemoveRows + endRemoveRows + () + + + fetchMore + fetchMore + ( const QModelIndex & parent ) + + + ItemFlags + flags + QAbstractItemModel::flags( const QModelIndex & index ) + + + hasChildren + hasChildren + ( const QModelIndex & parent = QModelIndex() + + + hasIndex + hasIndex + ( int row, int column, const QModelIndex & parent = QModelIndex() + + + headerData + headerData + ( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) + + + headerDataChanged + headerDataChanged + ( Qt::Orientation orientation, int first, int last ) + + + index + index + ( int row, int column, const QModelIndex & parent = QModelIndex() + + + insertColumn + insertColumn + ( int column, const QModelIndex & parent = QModelIndex() + + + insertColumns + insertColumns + ( int column, int count, const QModelIndex & parent = QModelIndex() + + + insertRow + insertRow + ( int row, const QModelIndex & parent = QModelIndex() + + + insertRows + insertRows + ( int row, int count, const QModelIndex & parent = QModelIndex() + + + itemData + itemData + ( const QModelIndex & index ) + + + layoutChanged + layoutChanged + () + + + match + match + ( const QModelIndex & start, int role, const QVariant & value, int hits = 1, Qt::MatchFlags flags = Qt::MatchFlags( Qt::MatchStartsWith | Qt::MatchWrap ) + + + mimeData + mimeData + ( const QModelIndexList & indexes ) + + + mimeTypes + mimeTypes + () + + + modelReset + modelReset + () + + + parent + parent + ( const QModelIndex & index ) + + + removeColumn + removeColumn + ( int column, const QModelIndex & parent = QModelIndex() + + + removeColumns + removeColumns + ( int column, int count, const QModelIndex & parent = QModelIndex() + + + removeRow + removeRow + ( int row, const QModelIndex & parent = QModelIndex() + + + removeRows + removeRows + ( int row, int count, const QModelIndex & parent = QModelIndex() + + + reset + reset + () + + + revert + revert + () + + + rowCount + rowCount + ( const QModelIndex & parent = QModelIndex() + + + rowsAboutToBeInserted + rowsAboutToBeInserted + ( const QModelIndex & parent, int start, int end ) + + + rowsAboutToBeRemoved + rowsAboutToBeRemoved + ( const QModelIndex & parent, int start, int end ) + + + rowsInserted + rowsInserted + ( const QModelIndex & parent, int start, int end ) + + + rowsRemoved + rowsRemoved + ( const QModelIndex & parent, int start, int end ) + + + setData + setData + ( const QModelIndex & index, const QVariant & value, int role = Qt::EditRole ) + + + setHeaderData + setHeaderData + ( int section, Qt::Orientation orientation, const QVariant & value, int role = Qt::EditRole ) + + + setItemData + setItemData + ( const QModelIndex & index, const QMap<int, QVariant> & roles ) + + + sibling + sibling + ( int row, int column, const QModelIndex & index ) + + + sort + sort + ( int column, Qt::SortOrder order = Qt::AscendingOrder ) + + + span + span + ( const QModelIndex & index ) + + + submit + submit + () + + + DropActions + supportedDropActions + QAbstractItemModel::supportedDropActions() + + + + QAbstractItemView + qabstractitemview.html + + CursorAction + CursorAction-enum + + + + DropIndicatorPosition + DropIndicatorPosition-enum + + + + ScrollHint + ScrollHint-enum + + + + SelectionBehavior + SelectionBehavior-enum + + + + SelectionMode + SelectionMode-enum + + + + State + State-enum + + + + TextElideMode + textElideMode-prop + + + + QAbstractItemView + QAbstractItemView + ( QWidget * parent = 0 ) + + + activated + activated + ( const QModelIndex & index ) + + + clearSelection + clearSelection + () + + + clicked + clicked + ( const QModelIndex & index ) + + + closeEditor + closeEditor + ( QWidget * editor, QAbstractItemDelegate::EndEditHint hint ) + + + closePersistentEditor + closePersistentEditor + ( const QModelIndex & index ) + + + commitData + commitData + ( QWidget * editor ) + + + currentChanged + currentChanged + ( const QModelIndex & current, const QModelIndex & previous ) + + + currentIndex + currentIndex + () + + + dataChanged + dataChanged + ( const QModelIndex & topLeft, const QModelIndex & bottomRight ) + + + dirtyRegionOffset + dirtyRegionOffset + () + + + doubleClicked + doubleClicked + ( const QModelIndex & index ) + + + dragEnterEvent + dragEnterEvent + ( QDragEnterEvent * event ) + + + dragLeaveEvent + dragLeaveEvent + ( QDragLeaveEvent * event ) + + + dragMoveEvent + dragMoveEvent + ( QDragMoveEvent * event ) + + + dropEvent + dropEvent + ( QDropEvent * event ) + + + dropIndicatorPosition + dropIndicatorPosition + () + + + edit + edit + ( const QModelIndex & index ) + + + edit + edit-2 + ( const QModelIndex & index, EditTrigger trigger, QEvent * event ) + + + editorDestroyed + editorDestroyed + ( QObject * editor ) + + + entered + entered + ( const QModelIndex & index ) + + + executeDelayedItemsLayout + executeDelayedItemsLayout + () + + + focusInEvent + focusInEvent + ( QFocusEvent * event ) + + + focusOutEvent + focusOutEvent + ( QFocusEvent * event ) + + + horizontalOffset + horizontalOffset + () + + + horizontalStepsPerItem + horizontalStepsPerItem + () + + + indexAt + indexAt + ( const QPoint & point ) + + + indexWidget + indexWidget + ( const QModelIndex & index ) + + + isIndexHidden + isIndexHidden + ( const QModelIndex & index ) + + + itemDelegate + itemDelegate + () + + + keyPressEvent + keyPressEvent + ( QKeyEvent * event ) + + + keyboardSearch + keyboardSearch + ( const QString & search ) + + + model + model + () + + + mouseDoubleClickEvent + mouseDoubleClickEvent + ( QMouseEvent * event ) + + + mouseMoveEvent + mouseMoveEvent + ( QMouseEvent * event ) + + + mousePressEvent + mousePressEvent + ( QMouseEvent * event ) + + + mouseReleaseEvent + mouseReleaseEvent + ( QMouseEvent * event ) + + + moveCursor + moveCursor + ( CursorAction cursorAction, Qt::KeyboardModifiers modifiers ) + + + openPersistentEditor + openPersistentEditor + ( const QModelIndex & index ) + + + pressed + pressed + ( const QModelIndex & index ) + + + reset + reset + () + + + resizeEvent + resizeEvent + ( QResizeEvent * event ) + + + rootIndex + rootIndex + () + + + rowsAboutToBeRemoved + rowsAboutToBeRemoved + ( const QModelIndex & parent, int start, int end ) + + + rowsInserted + rowsInserted + ( const QModelIndex & parent, int start, int end ) + + + scheduleDelayedItemsLayout + scheduleDelayedItemsLayout + () + + + scrollDirtyRegion + scrollDirtyRegion + ( int dx, int dy ) + + + scrollTo + scrollTo + ( const QModelIndex & index, ScrollHint hint = EnsureVisible ) + + + scrollToBottom + scrollToBottom + () + + + scrollToTop + scrollToTop + () + + + selectAll + selectAll + () + + + selectedIndexes + selectedIndexes + () + + + selectionChanged + selectionChanged + ( const QItemSelection & selected, const QItemSelection & deselected ) + + + SelectionFlags + selectionCommand + QAbstractItemView::selectionCommand( const QModelIndex & index, const QEvent * event = 0 ) + + + selectionModel + selectionModel + () + + + setCurrentIndex + setCurrentIndex + ( const QModelIndex & index ) + + + setDirtyRegion + setDirtyRegion + ( const QRegion & region ) + + + setHorizontalStepsPerItem + setHorizontalStepsPerItem + ( int steps ) + + + setIndexWidget + setIndexWidget + ( const QModelIndex & index, QWidget * widget ) + + + setItemDelegate + setItemDelegate + ( QAbstractItemDelegate * delegate ) + + + setModel + setModel + ( QAbstractItemModel * model ) + + + setRootIndex + setRootIndex + ( const QModelIndex & index ) + + + setSelection + setSelection + ( const QRect & rect, QItemSelectionModel::SelectionFlags flags ) + + + setSelectionModel + setSelectionModel + ( QItemSelectionModel * selectionModel ) + + + setState + setState + ( State state ) + + + setVerticalStepsPerItem + setVerticalStepsPerItem + ( int steps ) + + + sizeHintForColumn + sizeHintForColumn + ( int column ) + + + sizeHintForIndex + sizeHintForIndex + ( const QModelIndex & index ) + + + sizeHintForRow + sizeHintForRow + ( int row ) + + + startDrag + startDrag + ( Qt::DropActions supportedActions ) + + + state + state + () + + + timerEvent + timerEvent + ( QTimerEvent * event ) + + + verticalOffset + verticalOffset + () + + + verticalStepsPerItem + verticalStepsPerItem + () + + + viewOptions + viewOptions + () + + + viewportEntered + viewportEntered + () + + + viewportEvent + viewportEvent + ( QEvent * event ) + + + visualRect + visualRect + ( const QModelIndex & index ) + + + visualRegionForSelection + visualRegionForSelection + ( const QItemSelection & selection ) + + + + QAbstractListModel + qabstractlistmodel.html + + QAbstractListModel + QAbstractListModel + ( QObject * parent = 0 ) + + + index + index + ( int row, int column = 0, const QModelIndex & parent = QModelIndex() + + + + QAbstractPrintDialog + qabstractprintdialog.html + + PrintRange + PrintRange-enum + + + + QAbstractPrintDialog + QAbstractPrintDialog + ( QPrinter * printer, QWidget * parent = 0 ) + + + addEnabledOption + addEnabledOption + ( PrintDialogOption option ) + + + enabledOptions + enabledOptions + () + + + exec + exec + () + + + fromPage + fromPage + () + + + isOptionEnabled + isOptionEnabled + ( PrintDialogOption option ) + + + maxPage + maxPage + () + + + minPage + minPage + () + + + printRange + printRange + () + + + printer + printer + () + + + setEnabledOptions + setEnabledOptions + ( PrintDialogOptions options ) + + + setFromTo + setFromTo + ( int from, int to ) + + + setMinMax + setMinMax + ( int min, int max ) + + + setPrintRange + setPrintRange + ( PrintRange range ) + + + toPage + toPage + () + + + + QAbstractProxyModel + qabstractproxymodel.html + + QAbstractProxyModel + QAbstractProxyModel + ( QObject * parent = 0 ) + + + mapFromSource + mapFromSource + ( const QModelIndex & sourceIndex ) + + + mapSelectionFromSource + mapSelectionFromSource + ( const QItemSelection & sourceSelection ) + + + mapSelectionToSource + mapSelectionToSource + ( const QItemSelection & proxySelection ) + + + mapToSource + mapToSource + ( const QModelIndex & proxyIndex ) + + + setSourceModel + setSourceModel + ( QAbstractItemModel * sourceModel ) + + + sourceModel + sourceModel + () + + + + QAbstractScrollArea + qabstractscrollarea.html + + ScrollBarPolicy + horizontalScrollBarPolicy-prop + + + + ScrollBarPolicy + verticalScrollBarPolicy-prop + + + + QAbstractScrollArea + QAbstractScrollArea + ( QWidget * parent = 0 ) + + + contextMenuEvent + contextMenuEvent + ( QContextMenuEvent * e ) + + + dragEnterEvent + dragEnterEvent + ( QDragEnterEvent * event ) + + + dragLeaveEvent + dragLeaveEvent + ( QDragLeaveEvent * event ) + + + dragMoveEvent + dragMoveEvent + ( QDragMoveEvent * event ) + + + dropEvent + dropEvent + ( QDropEvent * event ) + + + event + event + ( QEvent * e ) + + + horizontalScrollBar + horizontalScrollBar + () + + + keyPressEvent + keyPressEvent + ( QKeyEvent * e ) + + + maximumViewportSize + maximumViewportSize + () + + + mouseDoubleClickEvent + mouseDoubleClickEvent + ( QMouseEvent * e ) + + + mouseMoveEvent + mouseMoveEvent + ( QMouseEvent * e ) + + + mousePressEvent + mousePressEvent + ( QMouseEvent * e ) + + + mouseReleaseEvent + mouseReleaseEvent + ( QMouseEvent * e ) + + + paintEvent + paintEvent + ( QPaintEvent * event ) + + + resizeEvent + resizeEvent + ( QResizeEvent * event ) + + + scrollContentsBy + scrollContentsBy + ( int dx, int dy ) + + + setViewportMargins + setViewportMargins + ( int left, int top, int right, int bottom ) + + + verticalScrollBar + verticalScrollBar + () + + + viewport + viewport + () + + + viewportEvent + viewportEvent + ( QEvent * e ) + + + wheelEvent + wheelEvent + ( QWheelEvent * e ) + + + + QAbstractSlider + qabstractslider.html + + SliderAction + SliderAction-enum + + + + SliderChange + SliderChange-enum + + + + Orientation + orientation-prop + + + + QAbstractSlider + QAbstractSlider + ( QWidget * parent = 0 ) + + + actionTriggered + actionTriggered + ( int action ) + + + rangeChanged + rangeChanged + ( int min, int max ) + + + repeatAction + repeatAction + () + + + setRange + setRange + ( int min, int max ) + + + setRepeatAction + setRepeatAction + ( SliderAction action, int thresholdTime = 500, int repeatTime = 50 ) + + + sliderChange + sliderChange + ( SliderChange change ) + + + sliderMoved + sliderMoved + ( int value ) + + + sliderPressed + sliderPressed + () + + + sliderReleased + sliderReleased + () + + + triggerAction + triggerAction + ( SliderAction action ) + + + valueChanged + valueChanged + ( int value ) + + + addLine + addLine + () + + + addPage + addPage + () + + + lineStep + lineStepx + () + + + maxValue + maxValue + () + + + minValue + minValue + () + + + setLineStep + setLineStep + ( int v ) + + + setMaxValue + setMaxValue + ( int v ) + + + setMinValue + setMinValue + ( int v ) + + + setSteps + setSteps + ( int single, int page ) + + + subtractLine + subtractLine + () + + + subtractPage + subtractPage + () + + + + QAbstractSocket + qabstractsocket.html + + NetworkLayerProtocol + NetworkLayerProtocol-enum + + + + SocketError + SocketError-enum + + + + SocketState + SocketState-enum + + + + SocketType + SocketType-enum + + + + QAbstractSocket + QAbstractSocket + ( SocketType socketType, QObject * parent ) + + + abort + abort + () + + + bytesAvailable + bytesAvailable + () + + + bytesToWrite + bytesToWrite + () + + + canReadLine + canReadLine + () + + + close + close + () + + + connectToHost + connectToHost + ( const QString & hostName, quint16 port, OpenMode openMode = ReadWrite ) + + + connectToHost + connectToHost-2 + ( const QHostAddress & address, quint16 port, OpenMode openMode = ReadWrite ) + + + connectToHostImplementation + connectToHostImplementation + ( const QString & hostName, quint16 port, OpenMode openMode = ReadWrite ) + + + connected + connected + () + + + disconnectFromHost + disconnectFromHost + () + + + disconnectFromHostImplementation + disconnectFromHostImplementation + () + + + disconnected + disconnected + () + + + error + error + () + + + error + error-2 + ( QAbstractSocket::SocketError socketError ) + + + flush + flush + () + + + hostFound + hostFound + () + + + isValid + isValid + () + + + localAddress + localAddress + () + + + localPort + localPort + () + + + peerAddress + peerAddress + () + + + peerName + peerName + () + + + peerPort + peerPort + () + + + proxy + proxy + () + + + readBufferSize + readBufferSize + () + + + setLocalAddress + setLocalAddress + ( const QHostAddress & address ) + + + setLocalPort + setLocalPort + ( quint16 port ) + + + setPeerAddress + setPeerAddress + ( const QHostAddress & address ) + + + setPeerName + setPeerName + ( const QString & name ) + + + setPeerPort + setPeerPort + ( quint16 port ) + + + setProxy + setProxy + ( const QNetworkProxy & networkProxy ) + + + setReadBufferSize + setReadBufferSize + ( qint64 size ) + + + setSocketDescriptor + setSocketDescriptor + ( int socketDescriptor, SocketState socketState = ConnectedState, OpenMode openMode = ReadWrite ) + + + setSocketError + setSocketError + ( SocketError socketError ) + + + setSocketState + setSocketState + ( SocketState state ) + + + socketDescriptor + socketDescriptor + () + + + socketType + socketType + () + + + state + state + () + + + stateChanged + stateChanged + ( QAbstractSocket::SocketState socketState ) + + + waitForConnected + waitForConnected + ( int msecs = 30000 ) + + + waitForDisconnected + waitForDisconnected + ( int msecs = 30000 ) + + + Error + Error-enum + + + + State + State-typedef + + + + connectionClosed + connectionClosed + () + + + delayedCloseFinished + delayedCloseFinished + () + + + setSocket + setSocket + ( int socket ) + + + socket + socket + () + + + waitForMore + waitForMore + ( int msecs, bool * timeout = 0 ) + + + + QAbstractSpinBox + qabstractspinbox.html + + ButtonSymbols + ButtonSymbols-enum + + + + Alignment + alignment-prop + + + + QAbstractSpinBox + QAbstractSpinBox + ( QWidget * parent = 0 ) + + + clear + clear + () + + + editingFinished + editingFinished + () + + + fixup + fixup + ( QString & input ) + + + interpretText + interpretText + () + + + lineEdit + lineEdit + () + + + selectAll + selectAll + () + + + setLineEdit + setLineEdit + ( QLineEdit * lineEdit ) + + + stepBy + stepBy + ( int steps ) + + + stepDown + stepDown + () + + + stepEnabled + stepEnabled + () + + + stepUp + stepUp + () + + + State + validate + QAbstractSpinBox::validate( QString & input, int & pos ) + + + + QAbstractTableModel + qabstracttablemodel.html + + QAbstractTableModel + QAbstractTableModel + ( QObject * parent = 0 ) + + + index + index + ( int row, int column, const QModelIndex & parent = QModelIndex() + + + + QAbstractTextDocumentLayout + qabstracttextdocumentlayout.html + + QAbstractTextDocumentLayout + QAbstractTextDocumentLayout + ( QTextDocument * document ) + + + anchorAt + anchorAt + ( const QPointF & position ) + + + blockBoundingRect + blockBoundingRect + ( const QTextBlock & block ) + + + document + document + () + + + documentChanged + documentChanged + ( int position, int charsRemoved, int charsAdded ) + + + documentSize + documentSize + () + + + documentSizeChanged + documentSizeChanged + ( const QSizeF & newSize ) + + + draw + draw + ( QPainter * painter, const PaintContext & context ) + + + drawInlineObject + drawInlineObject + ( QPainter * painter, const QRectF & rect, QTextInlineObject object, int posInDocument, const QTextFormat & format ) + + + format + format + ( int position ) + + + frameBoundingRect + frameBoundingRect + ( QTextFrame * frame ) + + + handlerForObject + handlerForObject + ( int objectType ) + + + hitTest + hitTest + ( const QPointF & point, Qt::HitTestAccuracy accuracy ) + + + pageCount + pageCount + () + + + pageCountChanged + pageCountChanged + ( int newPages ) + + + paintDevice + paintDevice + () + + + positionInlineObject + positionInlineObject + ( QTextInlineObject item, int posInDocument, const QTextFormat & format ) + + + registerHandler + registerHandler + ( int formatType, QObject * component ) + + + resizeInlineObject + resizeInlineObject + ( QTextInlineObject item, int posInDocument, const QTextFormat & format ) + + + setPaintDevice + setPaintDevice + ( QPaintDevice * device ) + + + update + update + ( const QRectF & rect = QRectF( 0., 0., 1000000000., 1000000000. ) + + + + QAbstractTextDocumentLayout::Selection + qabstracttextdocumentlayout-selection.html + + + QAccessibleBridge + qaccessiblebridge.html + + notifyAccessibilityUpdate + notifyAccessibilityUpdate + ( int reason, QAccessibleInterface * interface, int child ) + + + setRootObject + setRootObject + ( QAccessibleInterface * object ) + + + + QAccessibleBridgePlugin + qaccessiblebridgeplugin.html + + QAccessibleBridgePlugin + QAccessibleBridgePlugin + ( QObject * parent = 0 ) + + + create + create + ( const QString & key ) + + + keys + keys + () + + + + QAccessibleEvent + qaccessibleevent.html + + QAccessibleEvent + QAccessibleEvent + ( Type type, int child ) + + + child + child + () + + + setValue + setValue + ( const QString & text ) + + + value + value + () + + + + QAccessible + qaccessible.html + + Action + Action-enum + + + + Event + Event-enum + + + + InterfaceFactory + InterfaceFactory-typedef + + + + Role + Role-enum + + + + RootObjectHandler + RootObjectHandler-typedef + + + + Text + Text-enum + + + + UpdateHandler + UpdateHandler-typedef + + + + installFactory + installFactory + ( InterfaceFactory factory ) + + + installRootObjectHandler + installRootObjectHandler + ( RootObjectHandler handler ) + + + installUpdateHandler + installUpdateHandler + ( UpdateHandler handler ) + + + isActive + isActive + () + + + queryAccessibleInterface + queryAccessibleInterface + ( QObject * object ) + + + removeFactory + removeFactory + ( InterfaceFactory factory ) + + + setRootObject + setRootObject + ( QObject * object ) + + + updateAccessibility + updateAccessibility + ( QObject * object, int child, Event reason ) + + + + QAccessibleInterface + qaccessibleinterface.html + + actionText + actionText + ( int action, Text t, int child ) + + + childAt + childAt + ( int x, int y ) + + + childCount + childCount + () + + + doAction + doAction + ( int action, int child, const QVariantList & params = QVariantList() + + + indexOfChild + indexOfChild + ( const QAccessibleInterface * child ) + + + isValid + isValid + () + + + navigate + navigate + ( RelationFlag relation, int entry, QAccessibleInterface ** target ) + + + object + object + () + + + rect + rect + ( int child ) + + + relationTo + relationTo + ( int child, const QAccessibleInterface * other, int otherChild ) + + + role + role + ( int child ) + + + setText + setText + ( Text t, int child, const QString & text ) + + + state + state + ( int child ) + + + text + text + ( Text t, int child ) + + + userActionCount + userActionCount + ( int child ) + + + + QAccessibleObject + qaccessibleobject.html + + QAccessibleObject + QAccessibleObject + ( QObject * object ) + + + + QAccessiblePlugin + qaccessibleplugin.html + + QAccessiblePlugin + QAccessiblePlugin + ( QObject * parent = 0 ) + + + create + create + ( const QString & key, QObject * object ) + + + keys + keys + () + + + + QAccessibleWidget + qaccessiblewidget.html + + QAccessibleWidget + QAccessibleWidget + ( QWidget * w, Role role = Client, const QString & name = QString() + + + addControllingSignal + addControllingSignal + ( const QString & signal ) + + + parentObject + parentObject + () + + + setAccelerator + setAccelerator + ( const QString & accel ) + + + setDescription + setDescription + ( const QString & desc ) + + + setHelp + setHelp + ( const QString & help ) + + + setValue + setValue + ( const QString & value ) + + + widget + widget + () + + + + QActionEvent + qactionevent.html + + QActionEvent + QActionEvent + ( int type, QAction * action, QAction * before = 0 ) + + + action + action + () + + + before + before + () + + + + QActionGroup + qactiongroup.html + + QActionGroup + QActionGroup + ( QObject * parent ) + + + actions + actions + () + + + addAction + addAction + ( QAction * action ) + + + addAction + addAction-2 + ( const QString & text ) + + + addAction + addAction-3 + ( const QIcon & icon, const QString & text ) + + + checkedAction + checkedAction + () + + + hovered + hovered + ( QAction * action ) + + + removeAction + removeAction + ( QAction * action ) + + + setDisabled + setDisabled + ( bool b ) + + + triggered + triggered + ( QAction * action ) + + + add + add + ( QAction * a ) + + + addSeparator + addSeparator + () + + + addTo + addTo + ( QWidget * widget ) + + + selected + selected + ( QAction * action ) + + + + QAction + qaction.html + + ActionEvent + ActionEvent-enum + + + + ShortcutContext + shortcutContext-prop + + + + QAction + QAction + ( QObject * parent ) + + + QAction + QAction-2 + ( const QString & text, QObject * parent ) + + + QAction + QAction-3 + ( const QIcon & icon, const QString & text, QObject * parent ) + + + actionGroup + actionGroup + () + + + activate + activate + ( ActionEvent event ) + + + changed + changed + () + + + data + data + () + + + hover + hover + () + + + hovered + hovered + () + + + isSeparator + isSeparator + () + + + menu + menu + () + + + parentWidget + parentWidget + () + + + setActionGroup + setActionGroup + ( QActionGroup * group ) + + + setData + setData + ( const QVariant & data ) + + + setDisabled + setDisabled + ( bool b ) + + + setMenu + setMenu + ( QMenu * menu ) + + + setSeparator + setSeparator + ( bool b ) + + + showStatusText + showStatusText + ( QWidget * widget = 0 ) + + + toggle + toggle + () + + + toggled + toggled + ( bool checked ) + + + trigger + trigger + () + + + triggered + triggered + ( bool checked = false ) + + + QAction + QAction-4 + ( QObject * parent, const char * name ) + + + QAction + QAction-5 + ( const QString & text, const QKeySequence & shortcut, QObject * parent, const char * name ) + + + QAction + QAction-6 + ( const QIcon & icon, const QString & text, const QKeySequence & shortcut, QObject * parent, const char * name ) + + + accel + accel + () + + + activated + activated + ( int i = 0 ) + + + addTo + addTo + ( QWidget * w ) + + + iconSet + iconSet + () + + + isOn + isOn + () + + + isToggleAction + isToggleAction + () + + + menuText + menuText + () + + + removeFrom + removeFrom + ( QWidget * w ) + + + setAccel + setAccel + ( const QKeySequence & shortcut ) + + + setIconSet + setIconSet + ( const QIcon & i ) + + + setMenuText + setMenuText + ( const QString & text ) + + + setOn + setOn + ( bool b ) + + + setToggleAction + setToggleAction + ( bool b ) + + + + QApplication + qapplication.html + + ColorSpec + ColorSpec-enum + + + + Type + Type-enum + + + + LayoutDirection + layoutDirection-prop + + + + QApplication + QApplication + ( int & argc, char ** argv ) + + + QApplication + QApplication-2 + ( int & argc, char ** argv, bool GUIenabled ) + + + QApplication + QApplication-3 + ( int & argc, char ** argv, Type type ) + + + QApplication + QApplication-4 + ( Display * display, Qt::HANDLE visual = 0, Qt::HANDLE colormap = 0 ) + + + QApplication + QApplication-5 + ( Display * display, int & argc, char ** argv, Qt::HANDLE visual = 0, Qt::HANDLE colormap = 0 ) + + + aboutQt + aboutQt + () + + + activeModalWidget + activeModalWidget + () + + + activePopupWidget + activePopupWidget + () + + + activeWindow + activeWindow + () + + + allWidgets + allWidgets + () + + + beep + beep + () + + + changeOverrideCursor + changeOverrideCursor + ( const QCursor & cursor ) + + + clipboard + clipboard + () + + + closeAllWindows + closeAllWindows + () + + + colorSpec + colorSpec + () + + + commitData + commitData + ( QSessionManager & manager ) + + + desktop + desktop + () + + + desktopSettingsAware + desktopSettingsAware + () + + + exec + exec + () + + + focusChanged + focusChanged + ( QWidget * old, QWidget * now ) + + + focusWidget + focusWidget + () + + + font + font + ( const QWidget * widget = 0 ) + + + fontMetrics + fontMetrics + () + + + inputContext + inputContext + () + + + isEffectEnabled + isEffectEnabled + ( Qt::UIEffect effect ) + + + isLeftToRight + isLeftToRight + () + + + isRightToLeft + isRightToLeft + () + + + isSessionRestored + isSessionRestored + () + + + KeyboardModifiers + keyboardModifiers + QApplication::keyboardModifiers() + + + keypadNavigationEnabled + keypadNavigationEnabled + () + + + lastWindowClosed + lastWindowClosed + () + + + macEventFilter + macEventFilter + ( EventHandlerCallRef caller, EventRef event ) + + + MouseButtons + mouseButtons + QApplication::mouseButtons() + + + overrideCursor + overrideCursor + () + + + palette + palette + () + + + palette + palette-2 + ( const QWidget * widget ) + + + palette + palette-3 + ( const char * className ) + + + qwsDecoration + qwsDecoration + () + + + qwsEventFilter + qwsEventFilter + ( QWSEvent * event ) + + + qwsSetCustomColors + qwsSetCustomColors + ( QRgb * colorTable, int start, int numColors ) + + + qwsSetDecoration + qwsSetDecoration + ( QDecoration * decoration ) + + + qwsSetDecoration + qwsSetDecoration-2 + ( const QString & decoration ) + + + restoreOverrideCursor + restoreOverrideCursor + () + + + saveState + saveState + ( QSessionManager & manager ) + + + sessionId + sessionId + () + + + sessionKey + sessionKey + () + + + setActiveWindow + setActiveWindow + ( QWidget * active ) + + + setColorSpec + setColorSpec + ( int spec ) + + + setDesktopSettingsAware + setDesktopSettingsAware + ( bool on ) + + + setEffectEnabled + setEffectEnabled + ( Qt::UIEffect effect, bool enable = true ) + + + setFont + setFont + ( const QFont & font, const char * className = 0 ) + + + setInputContext + setInputContext + ( QInputContext * inputContext ) + + + setKeypadNavigationEnabled + setKeypadNavigationEnabled + ( bool enable ) + + + setOverrideCursor + setOverrideCursor + ( const QCursor & cursor ) + + + setPalette + setPalette + ( const QPalette & palette, const char * className = 0 ) + + + setStyle + setStyle + ( QStyle * style ) + + + setStyle + setStyle-2 + ( const QString & style ) + + + style + style + () + + + syncX + syncX + () + + + topLevelAt + topLevelAt + ( const QPoint & point ) + + + topLevelAt + topLevelAt-2 + ( int x, int y ) + + + topLevelWidgets + topLevelWidgets + () + + + type + type + () + + + widgetAt + widgetAt + ( const QPoint & point ) + + + widgetAt + widgetAt-4 + ( int x, int y ) + + + x11EventFilter + x11EventFilter + ( XEvent * event ) + + + x11ProcessEvent + x11ProcessEvent + ( XEvent * event ) + + + ColorMode + ColorMode-typedef + + + + colorMode + colorMode + () + + + flushX + flushX + () + + + hasGlobalMouseTracking + hasGlobalMouseTracking + () + + + Alignment + horizontalAlignment + QApplication::horizontalAlignment( Qt::Alignment align ) + + + MacintoshVersion + macVersion + QApplication::macVersion() + + + mainWidget + mainWidget + () + + + reverseLayout + reverseLayout + () + + + setColorMode + setColorMode + ( ColorMode mode ) + + + setFont + setFont-2 + ( const QFont & font, bool b, const char * className = 0 ) + + + setGlobalMouseTracking + setGlobalMouseTracking + ( bool dummy ) + + + setMainWidget + setMainWidget + ( QWidget * mainWidget ) + + + setOverrideCursor + setOverrideCursor-2 + ( const QCursor & cursor, bool replace ) + + + setPalette + setPalette-2 + ( const QPalette & pal, bool b, const char * className = 0 ) + + + setReverseLayout + setReverseLayout + ( bool reverse ) + + + setWinStyleHighlightColor + setWinStyleHighlightColor + ( const QColor & c ) + + + widgetAt + widgetAt-2 + ( int x, int y, bool child ) + + + widgetAt + widgetAt-3 + ( const QPoint & point, bool child ) + + + winStyleHighlightColor + winStyleHighlightColor + () + + + WindowsVersion + winVersion + QApplication::winVersion() + + + CustomColors + CustomColors-var + + + + NormalColors + NormalColors-var + + + + + QAssistantClient + qassistantclient.html + + QAssistantClient + QAssistantClient + ( const QString & path, QObject * parent = 0 ) + + + assistantClosed + assistantClosed + () + + + assistantOpened + assistantOpened + () + + + closeAssistant + closeAssistant + () + + + error + error + ( const QString & message ) + + + openAssistant + openAssistant + () + + + setArguments + setArguments + ( const QStringList & arguments ) + + + showPage + showPage + ( const QString & page ) + + + + QAxAggregated + qaxaggregated.html + + controllingUnknown + controllingUnknown + () + + + object + object + () + + + queryInterface + queryInterface + ( const QUuid & iid, void ** iface ) + + + widget + widget + () + + + + QAxBase + qaxbase.html + + PropertyBag + PropertyBag-typedef + + + + QAxBase + QAxBase + ( IUnknown * iface = 0 ) + + + asVariant + asVariant + () + + + clear + clear + () + + + disableClassInfo + disableClassInfo + () + + + disableEventSink + disableEventSink + () + + + disableMetaObject + disableMetaObject + () + + + dynamicCall + dynamicCall + ( const char * function, const QVariant & var1 = QVariant() + + + dynamicCall + dynamicCall-2 + ( const char * function, QList<QVariant> & vars ) + + + exception + exception + ( int code, const QString & source, const QString & desc, const QString & help ) + + + generateDocumentation + generateDocumentation + () + + + initialize + initialize + ( IUnknown ** ptr ) + + + initializeActive + initializeActive + ( IUnknown ** ptr ) + + + initializeFromFile + initializeFromFile + ( IUnknown ** ptr ) + + + initializeLicensed + initializeLicensed + ( IUnknown ** ptr ) + + + initializeRemote + initializeRemote + ( IUnknown ** ptr ) + + + isNull + isNull + () + + + propertyBag + propertyBag + () + + + propertyChanged + propertyChanged + ( const QString & name ) + + + propertyWritable + propertyWritable + ( const char * prop ) + + + queryInterface + queryInterface + ( const QUuid & uuid, void ** iface ) + + + querySubObject + querySubObject + ( const char * name, const QVariant & var1 = QVariant() + + + querySubObject + querySubObject-2 + ( const char * name, QList<QVariant> & vars ) + + + setPropertyBag + setPropertyBag + ( const PropertyBag & bag ) + + + setPropertyWritable + setPropertyWritable + ( const char * prop, bool ok ) + + + signal + signal + ( const QString & name, int argc, void * argv ) + + + verbs + verbs + () + + + + QAxBindable + qaxbindable.html + + QAxBindable + QAxBindable + () + + + clientSite + clientSite + () + + + createAggregate + createAggregate + () + + + propertyChanged + propertyChanged + ( const char * property ) + + + readData + readData + ( QIODevice * source, const QString & format ) + + + reportError + reportError + ( int code, const QString & src, const QString & desc, const QString & context = QString() + + + requestPropertyChange + requestPropertyChange + ( const char * property ) + + + writeData + writeData + ( QIODevice * sink ) + + + + QAxFactory + qaxfactory.html + + ServerType + ServerType-enum + + + + QAxFactory + QAxFactory + ( const QUuid & libid, const QUuid & appid ) + + + appID + appID + () + + + classID + classID + ( const QString & key ) + + + createObject + createObject + ( const QString & key ) + + + createObjectWrapper + createObjectWrapper + ( QObject * object, IDispatch ** wrapper ) + + + eventsID + eventsID + ( const QString & key ) + + + exposeToSuperClass + exposeToSuperClass + ( const QString & key ) + + + featureList + featureList + () + + + hasStockEvents + hasStockEvents + ( const QString & key ) + + + interfaceID + interfaceID + ( const QString & key ) + + + isServer + isServer + () + + + isService + isService + () + + + metaObject + metaObject + ( const QString & key ) + + + registerActiveObject + registerActiveObject + ( QObject * object ) + + + registerClass + registerClass + ( const QString & key, QSettings * settings ) + + + serverDirPath + serverDirPath + () + + + serverFilePath + serverFilePath + () + + + startServer + startServer + ( ServerType type = MultipleInstances ) + + + stayTopLevel + stayTopLevel + ( const QString & key ) + + + stopServer + stopServer + () + + + typeLibID + typeLibID + () + + + unregisterClass + unregisterClass + ( const QString & key, QSettings * settings ) + + + validateLicenseKey + validateLicenseKey + ( const QString & key, const QString & licenseKey ) + + + + QAxObject + qaxobject.html + + QAxObject + QAxObject + ( QObject * parent = 0 ) + + + QAxObject + QAxObject-2 + ( const QString & c, QObject * parent = 0 ) + + + QAxObject + QAxObject-3 + ( IUnknown * iface, QObject * parent = 0 ) + + + doVerb + doVerb + ( const QString & verb ) + + + + QAxScriptEngine + qaxscriptengine.html + + State + State-enum + + + + QAxScriptEngine + QAxScriptEngine + ( const QString & language, QAxScript * script ) + + + addItem + addItem + ( const QString & name ) + + + hasIntrospection + hasIntrospection + () + + + isValid + isValid + () + + + queryInterface + queryInterface + ( const QUuid & uuid, void ** iface ) + + + scriptLanguage + scriptLanguage + () + + + setState + setState + ( State st ) + + + state + state + () + + + + QAxScript + qaxscript.html + + FunctionFlags + FunctionFlags-enum + + + + QAxScript + QAxScript + ( const QString & name, QAxScriptManager * manager ) + + + call + call + ( const QString & function, const QVariant & var1 = QVariant() + + + call + call-2 + ( const QString & function, QList<QVariant> & arguments ) + + + entered + entered + () + + + error + error + ( int code, const QString & description, int sourcePosition, const QString & sourceText ) + + + finished + finished + () + + + finished + finished-2 + ( const QVariant & result ) + + + finished + finished-3 + ( int code, const QString & source, const QString & description, const QString & help ) + + + functions + functions + ( FunctionFlags flags = FunctionNames ) + + + load + load + ( const QString & code, const QString & language = QString() + + + scriptCode + scriptCode + () + + + scriptEngine + scriptEngine + () + + + scriptName + scriptName + () + + + stateChanged + stateChanged + ( int state ) + + + + QAxScriptManager + qaxscriptmanager.html + + QAxScriptManager + QAxScriptManager + ( QObject * parent = 0 ) + + + addObject + addObject + ( QAxBase * object ) + + + addObject + addObject-2 + ( QObject * object ) + + + call + call + ( const QString & function, const QVariant & var1 = QVariant() + + + call + call-2 + ( const QString & function, QList<QVariant> & arguments ) + + + error + error + ( QAxScript * script, int code, const QString & description, int sourcePosition, const QString & sourceText ) + + + functions + functions + ( QAxScript::FunctionFlags flags = QAxScript::FunctionNames ) + + + load + load + ( const QString & code, const QString & name, const QString & language ) + + + load + load-2 + ( const QString & file, const QString & name ) + + + registerEngine + registerEngine + ( const QString & name, const QString & extension, const QString & code = QString() + + + script + script + ( const QString & name ) + + + scriptFileFilter + scriptFileFilter + () + + + scriptNames + scriptNames + () + + + + QAxWidget + qaxwidget.html + + QAxWidget + QAxWidget + ( QWidget * parent = 0, Qt::WFlags f = 0 ) + + + QAxWidget + QAxWidget-2 + ( const QString & c, QWidget * parent = 0, Qt::WFlags f = 0 ) + + + QAxWidget + QAxWidget-3 + ( IUnknown * iface, QWidget * parent = 0, Qt::WFlags f = 0 ) + + + createAggregate + createAggregate + () + + + createHostWindow + createHostWindow + ( bool initialized ) + + + doVerb + doVerb + ( const QString & verb ) + + + translateKeyEvent + translateKeyEvent + ( int message, int keycode ) + + + + QBasicTimer + qbasictimer.html + + QBasicTimer + QBasicTimer + () + + + isActive + isActive + () + + + start + start + ( int msec, QObject * object ) + + + stop + stop + () + + + timerId + timerId + () + + + + QBitArray + qbitarray.html + + QBitArray + QBitArray + () + + + QBitArray + QBitArray-2 + ( int size, bool value = false ) + + + QBitArray + QBitArray-3 + ( const QBitArray & other ) + + + at + at + ( int i ) + + + clear + clear + () + + + clearBit + clearBit + ( int i ) + + + count + count + () + + + count + count-2 + ( bool on ) + + + fill + fill + ( bool value, int size = -1 ) + + + fill + fill-2 + ( bool value, int begin, int end ) + + + isEmpty + isEmpty + () + + + isNull + isNull + () + + + resize + resize + ( int size ) + + + setBit + setBit + ( int i ) + + + setBit + setBit-2 + ( int i, bool value ) + + + size + size + () + + + testBit + testBit + ( int i ) + + + toggleBit + toggleBit + ( int i ) + + + truncate + truncate + ( int pos ) + + + operator!= + operator-not-eq + ( const QBitArray & other ) + + + operator& + operator-and-eq + amp;=( const QBitArray & other ) + + + operator= + operator-eq + ( const QBitArray & other ) + + + operator== + operator-eq-eq + ( const QBitArray & other ) + + + operator[] + operator-5b-5d + ( int i ) + + + operator[] + operator-5b-5d-2 + ( int i ) + + + operator[] + operator-5b-5d-3 + ( uint i ) + + + operator[] + operator-5b-5d-4 + ( uint i ) + + + operator^= + operator-5e-eq + ( const QBitArray & other ) + + + operator|= + operator-7c-eq + ( const QBitArray & other ) + + + operator~ + operator-7e + () + + + + QBitmap + qbitmap.html + + QBitmap + QBitmap + () + + + QBitmap + QBitmap-2 + ( const QPixmap & pixmap ) + + + QBitmap + QBitmap-3 + ( int width, int height ) + + + QBitmap + QBitmap-4 + ( const QSize & size ) + + + QBitmap + QBitmap-5 + ( const QString & fileName, const char * format = 0 ) + + + clear + clear + () + + + fromData + fromData + ( const QSize & size, const uchar * bits, QImage::Format monoFormat = QImage::Format_MonoLSB ) + + + fromImage + fromImage + ( const QImage & image, Qt::ImageConversionFlags flags = Qt::AutoColor ) + + + transformed + transformed + ( const QMatrix & matrix ) + + + operator + operator-QVariant + QVariant() + + + operator= + operator-eq + ( const QPixmap & pixmap ) + + + QBitmap + QBitmap-6 + ( int width, int height, bool clear ) + + + QBitmap + QBitmap-7 + ( const QSize & size, bool clear ) + + + QBitmap + QBitmap-8 + ( int width, int height, const uchar * bits, bool isXbitmap = false ) + + + QBitmap + QBitmap-9 + ( const QImage & image ) + + + QBitmap + QBitmap-10 + ( const QSize & size, const uchar * bits, bool isXbitmap = false ) + + + xForm + xForm + ( const QMatrix & matrix ) + + + operator= + operator-eq-2 + ( const QImage & image ) + + + + QBoxLayout + qboxlayout.html + + Direction + Direction-enum + + + + QBoxLayout + QBoxLayout + ( Direction dir, QWidget * parent = 0 ) + + + addLayout + addLayout + ( QLayout * layout, int stretch = 0 ) + + + addSpacing + addSpacing + ( int size ) + + + addStretch + addStretch + ( int stretch = 0 ) + + + addStrut + addStrut + ( int size ) + + + addWidget + addWidget + ( QWidget * widget, int stretch = 0, Qt::Alignment alignment = 0 ) + + + direction + direction + () + + + insertItem + insertItem + ( int index, QLayoutItem * item ) + + + insertLayout + insertLayout + ( int index, QLayout * layout, int stretch = 0 ) + + + insertSpacing + insertSpacing + ( int index, int size ) + + + insertStretch + insertStretch + ( int index, int stretch = 0 ) + + + insertWidget + insertWidget + ( int index, QWidget * widget, int stretch = 0, Qt::Alignment alignment = 0 ) + + + invalidate + invalidate + () + + + setDirection + setDirection + ( Direction direction ) + + + setStretchFactor + setStretchFactor + ( QWidget * widget, int stretch ) + + + setStretchFactor + setStretchFactor-2 + ( QLayout * layout, int stretch ) + + + QBoxLayout + QBoxLayout-2 + ( QWidget * parent, Direction dir, int margin = 0, int spacing = -1, const char * name = 0 ) + + + QBoxLayout + QBoxLayout-3 + ( QLayout * parentLayout, Direction dir, int spacing = -1, const char * name = 0 ) + + + QBoxLayout + QBoxLayout-4 + ( Direction dir, int spacing, const char * name = 0 ) + + + findWidget + findWidget + ( QWidget * widget ) + + + + QBrush + qbrush.html + + QBrush + QBrush + () + + + QBrush + QBrush-2 + ( Qt::BrushStyle style ) + + + QBrush + QBrush-3 + ( const QColor & color, Qt::BrushStyle style = Qt::SolidPattern ) + + + QBrush + QBrush-4 + ( Qt::GlobalColor color, Qt::BrushStyle style = Qt::SolidPattern ) + + + QBrush + QBrush-5 + ( const QColor & color, const QPixmap & pixmap ) + + + QBrush + QBrush-6 + ( Qt::GlobalColor color, const QPixmap & pixmap ) + + + QBrush + QBrush-7 + ( const QPixmap & pixmap ) + + + QBrush + QBrush-8 + ( const QBrush & other ) + + + QBrush + QBrush-9 + ( const QGradient & gradient ) + + + color + color + () + + + gradient + gradient + () + + + isOpaque + isOpaque + () + + + setColor + setColor + ( const QColor & color ) + + + setColor + setColor-2 + ( Qt::GlobalColor color ) + + + setStyle + setStyle + ( Qt::BrushStyle style ) + + + setTexture + setTexture + ( const QPixmap & pixmap ) + + + BrushStyle + style + QBrush::style() + + + texture + texture + () + + + operator + operator-QVariant + QVariant() + + + operator!= + operator-not-eq + ( const QBrush & brush ) + + + operator= + operator-eq + ( const QBrush & brush ) + + + operator== + operator-eq-eq + ( const QBrush & brush ) + + + pixmap + pixmap + () + + + setPixmap + setPixmap + ( const QPixmap & pixmap ) + + + operator + operator-const-QColor--and + const QColor &() + + + + QBuffer + qbuffer.html + + QBuffer + QBuffer + ( QObject * parent = 0 ) + + + QBuffer + QBuffer-2 + ( QByteArray * byteArray, QObject * parent = 0 ) + + + buffer + buffer + () + + + buffer + buffer-2 + () + + + data + data + () + + + setBuffer + setBuffer + ( QByteArray * byteArray ) + + + setData + setData + ( const QByteArray & data ) + + + setData + setData-2 + ( const char * data, int size ) + + + + QButtonGroup + qbuttongroup.html + + QButtonGroup + QButtonGroup + ( QObject * parent = 0 ) + + + addButton + addButton + ( QAbstractButton * button ) + + + addButton + addButton-2 + ( QAbstractButton * button, int id ) + + + button + button + ( int id ) + + + buttonClicked + buttonClicked + ( QAbstractButton * button ) + + + buttonClicked + buttonClicked-2 + ( int id ) + + + buttons + buttons + () + + + checkedButton + checkedButton + () + + + checkedId + checkedId + () + + + id + id + ( QAbstractButton * button ) + + + removeButton + removeButton + ( QAbstractButton * button ) + + + setId + setId + ( QAbstractButton * button, int id ) + + + insert + insert + ( QAbstractButton * b ) + + + remove + remove + ( QAbstractButton * b ) + + + + QByteArray + qbytearray.html + + QByteArray + QByteArray + () + + + QByteArray + QByteArray-2 + ( const char * str ) + + + QByteArray + QByteArray-3 + ( const char * data, int size ) + + + QByteArray + QByteArray-4 + ( int size, char ch ) + + + QByteArray + QByteArray-5 + ( const QByteArray & other ) + + + append + append + ( const QByteArray & ba ) + + + append + append-2 + ( const QString & str ) + + + append + append-3 + ( const char * str ) + + + append + append-4 + ( char ch ) + + + at + at + ( int i ) + + + capacity + capacity + () + + + chop + chop + ( int n ) + + + clear + clear + () + + + constData + constData + () + + + contains + contains + ( const QByteArray & ba ) + + + contains + contains-2 + ( const char * str ) + + + contains + contains-3 + ( char ch ) + + + count + count + ( const QByteArray & ba ) + + + count + count-2 + ( const char * str ) + + + count + count-3 + ( char ch ) + + + count + count-4 + () + + + data + data + () + + + data + data-2 + () + + + endsWith + endsWith + ( const QByteArray & ba ) + + + endsWith + endsWith-2 + ( const char * str ) + + + endsWith + endsWith-3 + ( char ch ) + + + fill + fill + ( char ch, int size = -1 ) + + + fromBase64 + fromBase64 + ( const QByteArray & base64 ) + + + fromRawData + fromRawData + ( const char * data, int size ) + + + indexOf + indexOf + ( const QByteArray & ba, int from = 0 ) + + + indexOf + indexOf-2 + ( const QString & str, int from = 0 ) + + + indexOf + indexOf-3 + ( const char * str, int from = 0 ) + + + indexOf + indexOf-4 + ( char ch, int from = 0 ) + + + insert + insert + ( int i, const QByteArray & ba ) + + + insert + insert-2 + ( int i, const QString & str ) + + + insert + insert-3 + ( int i, const char * str ) + + + insert + insert-4 + ( int i, char ch ) + + + isEmpty + isEmpty + () + + + isNull + isNull + () + + + lastIndexOf + lastIndexOf + ( const QByteArray & ba, int from = -1 ) + + + lastIndexOf + lastIndexOf-2 + ( const QString & str, int from = -1 ) + + + lastIndexOf + lastIndexOf-3 + ( const char * str, int from = -1 ) + + + lastIndexOf + lastIndexOf-4 + ( char ch, int from = -1 ) + + + left + left + ( int len ) + + + leftJustified + leftJustified + ( int width, char fill = ' ', bool truncate = false ) + + + length + length + () + + + mid + mid + ( int pos, int len = -1 ) + + + number + number + ( int n, int base = 10 ) + + + number + number-2 + ( uint n, int base = 10 ) + + + number + number-3 + ( qlonglong n, int base = 10 ) + + + number + number-4 + ( qulonglong n, int base = 10 ) + + + number + number-5 + ( double n, char f = 'g', int prec = 6 ) + + + prepend + prepend + ( const QByteArray & ba ) + + + prepend + prepend-2 + ( const char * str ) + + + prepend + prepend-3 + ( char ch ) + + + push_back + push_back + ( const QByteArray & other ) + + + push_back + push_back-2 + ( const char * str ) + + + push_back + push_back-3 + ( char ch ) + + + push_front + push_front + ( const QByteArray & other ) + + + push_front + push_front-2 + ( const char * str ) + + + push_front + push_front-3 + ( char ch ) + + + remove + remove + ( int pos, int len ) + + + replace + replace + ( int pos, int len, const QByteArray & after ) + + + replace + replace-2 + ( int pos, int len, const char * after ) + + + replace + replace-3 + ( const QByteArray & before, const QByteArray & after ) + + + replace + replace-4 + ( const char * before, const QByteArray & after ) + + + replace + replace-5 + ( const QByteArray & before, const char * after ) + + + replace + replace-6 + ( const QString & before, const QByteArray & after ) + + + replace + replace-7 + ( const QString & before, const char * after ) + + + replace + replace-8 + ( const char * before, const char * after ) + + + replace + replace-9 + ( char before, const QByteArray & after ) + + + replace + replace-10 + ( char before, const QString & after ) + + + replace + replace-11 + ( char before, const char * after ) + + + replace + replace-12 + ( char before, char after ) + + + reserve + reserve + ( int size ) + + + resize + resize + ( int size ) + + + right + right + ( int len ) + + + rightJustified + rightJustified + ( int width, char fill = ' ', bool truncate = false ) + + + setNum + setNum + ( int n, int base = 10 ) + + + setNum + setNum-2 + ( uint n, int base = 10 ) + + + setNum + setNum-3 + ( short n, int base = 10 ) + + + setNum + setNum-4 + ( ushort n, int base = 10 ) + + + setNum + setNum-5 + ( qlonglong n, int base = 10 ) + + + setNum + setNum-6 + ( qulonglong n, int base = 10 ) + + + setNum + setNum-7 + ( double n, char f = 'g', int prec = 6 ) + + + setNum + setNum-8 + ( float n, char f = 'g', int prec = 6 ) + + + simplified + simplified + () + + + size + size + () + + + split + split + ( char sep ) + + + squeeze + squeeze + () + + + startsWith + startsWith + ( const QByteArray & ba ) + + + startsWith + startsWith-2 + ( const char * str ) + + + startsWith + startsWith-3 + ( char ch ) + + + toBase64 + toBase64 + () + + + toDouble + toDouble + ( bool * ok = 0 ) + + + toFloat + toFloat + ( bool * ok = 0 ) + + + toInt + toInt + ( bool * ok = 0, int base = 10 ) + + + toLong + toLong + ( bool * ok = 0, int base = 10 ) + + + toLongLong + toLongLong + ( bool * ok = 0, int base = 10 ) + + + toLower + toLower + () + + + toShort + toShort + ( bool * ok = 0, int base = 10 ) + + + toUInt + toUInt + ( bool * ok = 0, int base = 10 ) + + + toULong + toULong + ( bool * ok = 0, int base = 10 ) + + + toULongLong + toULongLong + ( bool * ok = 0, int base = 10 ) + + + toUShort + toUShort + ( bool * ok = 0, int base = 10 ) + + + toUpper + toUpper + () + + + trimmed + trimmed + () + + + truncate + truncate + ( int pos ) + + + operator + operator-const-char--2a + const char *() + + + operator + operator-const-void--2a + const void *() + + + operator!= + operator-not-eq + ( const QString & str ) + + + operator+= + operator-2b-eq + ( const QByteArray & ba ) + + + operator+= + operator-2b-eq-2 + ( const QString & str ) + + + operator+= + operator-2b-eq-3 + ( const char * str ) + + + operator+= + operator-2b-eq-4 + ( char ch ) + + + operator< + operator-lt + ( const QString & str ) + + + operator<= + operator-lt-eq + ( const QString & str ) + + + operator= + operator-eq + ( const QByteArray & other ) + + + operator= + operator-eq-2 + ( const char * str ) + + + operator== + operator-eq-eq + ( const QString & str ) + + + operator> + operator-gt + ( const QString & str ) + + + operator>= + operator-gt-eq + ( const QString & str ) + + + operator[] + operator-5b-5d + ( int i ) + + + operator[] + operator-5b-5d-2 + ( int i ) + + + operator[] + operator-5b-5d-3 + ( uint i ) + + + operator[] + operator-5b-5d-4 + ( uint i ) + + + + QByteArrayMatcher + qbytearraymatcher.html + + QByteArrayMatcher + QByteArrayMatcher + () + + + QByteArrayMatcher + QByteArrayMatcher-2 + ( const QByteArray & pattern ) + + + QByteArrayMatcher + QByteArrayMatcher-3 + ( const QByteArrayMatcher & other ) + + + indexIn + indexIn + ( const QByteArray & ba, int from = 0 ) + + + pattern + pattern + () + + + setPattern + setPattern + ( const QByteArray & pattern ) + + + operator= + operator-eq + ( const QByteArrayMatcher & other ) + + + QByteArray + QByteArray-6 + ( int size ) + + + duplicate + duplicate + ( const QByteArray & a ) + + + duplicate + duplicate-2 + ( const char * a, uint n ) + + + find + find + ( char c, int from = 0 ) + + + find + find-2 + ( const char * c, int from = 0 ) + + + find + find-3 + ( const QByteArray & ba, int from = 0 ) + + + find + find-4 + ( const QString & s, int from = 0 ) + + + findRev + findRev + ( char c, int from = -1 ) + + + findRev + findRev-2 + ( const char * c, int from = -1 ) + + + findRev + findRev-3 + ( const QByteArray & ba, int from = -1 ) + + + findRev + findRev-4 + ( const QString & s, int from = -1 ) + + + leftJustify + leftJustify + ( uint width, char fill = ' ', bool truncate = false ) + + + lower + lower + () + + + resetRawData + resetRawData + ( const char * data, uint n ) + + + rightJustify + rightJustify + ( uint width, char fill = ' ', bool truncate = false ) + + + setRawData + setRawData + ( const char * a, uint n ) + + + simplifyWhiteSpace + simplifyWhiteSpace + () + + + stripWhiteSpace + stripWhiteSpace + () + + + upper + upper + () + + + + QCache + qcache.html + + QCache + QCache + ( int maxCost = 100 ) + + + clear + clear + () + + + contains + contains + ( const Key & key ) + + + count + count + () + + + insert + insert + ( const Key & key, T * object, int cost = 1 ) + + + isEmpty + isEmpty + () + + + keys + keys + () + + + maxCost + maxCost + () + + + object + object + ( const Key & key ) + + + remove + remove + ( const Key & key ) + + + setMaxCost + setMaxCost + ( int cost ) + + + size + size + () + + + take + take + ( const Key & key ) + + + totalCost + totalCost + () + + + operator[] + operator-5b-5d + ( const Key & key ) + + + QCache + QCache-2 + ( int maxCost, int dummy ) + + + + QCDEStyle + qcdestyle.html + + QCDEStyle + QCDEStyle + ( bool useHighlightCols = false ) + + + + QChar + qchar.html + + Category + Category-enum + + + + Decomposition + Decomposition-enum + + + + Direction + Direction-enum + + + + Joining + Joining-enum + + + + SpecialCharacter + SpecialCharacter-enum + + + + UnicodeVersion + UnicodeVersion-enum + + + + QChar + QChar + () + + + QChar + QChar-2 + ( char ch ) + + + QChar + QChar-3 + ( uchar ch ) + + + QChar + QChar-4 + ( QLatin1Char ch ) + + + QChar + QChar-5 + ( uchar cell, uchar row ) + + + QChar + QChar-6 + ( ushort code ) + + + QChar + QChar-7 + ( short code ) + + + QChar + QChar-8 + ( uint code ) + + + QChar + QChar-9 + ( int code ) + + + QChar + QChar-10 + ( SpecialCharacter ch ) + + + category + category + () + + + cell + cell + () + + + combiningClass + combiningClass + () + + + decomposition + decomposition + () + + + decompositionTag + decompositionTag + () + + + digitValue + digitValue + () + + + direction + direction + () + + + fromAscii + fromAscii + ( char c ) + + + fromLatin1 + fromLatin1 + ( char c ) + + + hasMirrored + hasMirrored + () + + + isDigit + isDigit + () + + + isLetter + isLetter + () + + + isLetterOrNumber + isLetterOrNumber + () + + + isLower + isLower + () + + + isMark + isMark + () + + + isNull + isNull + () + + + isNumber + isNumber + () + + + isPrint + isPrint + () + + + isPunct + isPunct + () + + + isSpace + isSpace + () + + + isSymbol + isSymbol + () + + + isUpper + isUpper + () + + + joining + joining + () + + + mirroredChar + mirroredChar + () + + + row + row + () + + + toAscii + toAscii + () + + + toLatin1 + toLatin1 + () + + + toLower + toLower + () + + + toUpper + toUpper + () + + + unicode + unicode + () + + + unicode + unicode-2 + () + + + unicodeVersion + unicodeVersion + () + + + ascii + ascii + () + + + latin1 + latin1 + () + + + lower + lower + () + + + mirrored + mirrored + () + + + networkOrdered + networkOrdered + () + + + upper + upper + () + + + + QCheckBox + qcheckbox.html + + QCheckBox + QCheckBox + ( QWidget * parent = 0 ) + + + QCheckBox + QCheckBox-2 + ( const QString & text, QWidget * parent = 0 ) + + + CheckState + checkState + QCheckBox::checkState() + + + setCheckState + setCheckState + ( Qt::CheckState state ) + + + stateChanged + stateChanged + ( int state ) + + + ToggleState + ToggleState-enum + + + + QCheckBox + QCheckBox-3 + ( QWidget * parent, const char * name ) + + + QCheckBox + QCheckBox-4 + ( const QString & text, QWidget * parent, const char * name ) + + + setNoChange + setNoChange + () + + + setState + setState + ( ToggleState state ) + + + state + state + () + + + + QChildEvent + qchildevent.html + + QChildEvent + QChildEvent + ( Type type, QObject * child ) + + + added + added + () + + + child + child + () + + + polished + polished + () + + + removed + removed + () + + + inserted + inserted + () + + + + QClipboard + qclipboard.html + + Mode + Mode-enum + + + + clear + clear + ( Mode mode = Clipboard ) + + + dataChanged + dataChanged + () + + + image + image + ( Mode mode = Clipboard ) + + + mimeData + mimeData + ( Mode mode = Clipboard ) + + + ownsClipboard + ownsClipboard + () + + + ownsSelection + ownsSelection + () + + + pixmap + pixmap + ( Mode mode = Clipboard ) + + + selectionChanged + selectionChanged + () + + + setImage + setImage + ( const QImage & image, Mode mode = Clipboard ) + + + setMimeData + setMimeData + ( QMimeData * src, Mode mode = Clipboard ) + + + setPixmap + setPixmap + ( const QPixmap & pixmap, Mode mode = Clipboard ) + + + setText + setText + ( const QString & text, Mode mode = Clipboard ) + + + supportsSelection + supportsSelection + () + + + text + text + ( Mode mode = Clipboard ) + + + text + text-2 + ( QString & subtype, Mode mode = Clipboard ) + + + data + data + ( Mode mode = Clipboard ) + + + setData + setData + ( QMimeSource * src, Mode mode = Clipboard ) + + + + QCloseEvent + qcloseevent.html + + QCloseEvent + QCloseEvent + () + + + + QColorDialog + qcolordialog.html + + customColor + customColor + ( int i ) + + + customCount + customCount + () + + + getColor + getColor + ( const QColor & initial = Qt::white, QWidget * parent = 0 ) + + + getRgba + getRgba + ( QRgb initial, bool * ok = 0, QWidget * parent = 0 ) + + + setCustomColor + setCustomColor + ( int number, QRgb color ) + + + setStandardColor + setStandardColor + ( int number, QRgb color ) + + + getColor + getColor-2 + ( const QColor & init, QWidget * parent, const char * name ) + + + getRgba + getRgba-2 + ( QRgb rgba, bool * ok, QWidget * parent, const char * name ) + + + + QColorGroup + qcolorgroup.html + + QColorGroup + QColorGroup + () + + + QColorGroup + QColorGroup-2 + ( const QBrush & foreground, const QBrush & button, const QBrush & light, const QBrush & dark, const QBrush & mid, const QBrush & text, const QBrush & bright_text, const QBrush & base, const QBrush & background ) + + + QColorGroup + QColorGroup-3 + ( const QColor & foreground, const QColor & background, const QColor & light, const QColor & dark, const QColor & mid, const QColor & text, const QColor & base ) + + + QColorGroup + QColorGroup-4 + ( const QColorGroup & other ) + + + QColorGroup + QColorGroup-5 + ( const QPalette & pal ) + + + operator + operator-QVariant + QVariant() + + + operator!= + operator-not-eq + ( const QColorGroup & other ) + + + operator== + operator-eq-eq + ( const QColorGroup & other ) + + + background + background + () + + + base + base + () + + + brightText + brightText + () + + + button + button + () + + + buttonText + buttonText + () + + + dark + dark + () + + + foreground + foreground + () + + + highlight + highlight + () + + + highlightedText + highlightedText + () + + + light + light + () + + + link + link + () + + + linkVisited + linkVisited + () + + + mid + mid + () + + + midlight + midlight + () + + + shadow + shadow + () + + + text + text + () + + + + QColor + qcolor.html + + Spec + Spec-enum + + + + QColor + QColor + () + + + QColor + QColor-2 + ( int r, int g, int b, int a = 255 ) + + + QColor + QColor-3 + ( QRgb color ) + + + QColor + QColor-4 + ( const QString & name ) + + + QColor + QColor-5 + ( const char * name ) + + + QColor + QColor-6 + ( const QColor & color ) + + + QColor + QColor-8 + ( Qt::GlobalColor color ) + + + alpha + alpha + () + + + alphaF + alphaF + () + + + black + black + () + + + blackF + blackF + () + + + blue + blue + () + + + blueF + blueF + () + + + colorNames + colorNames + () + + + convertTo + convertTo + ( Spec colorSpec ) + + + cyan + cyan + () + + + cyanF + cyanF + () + + + dark + dark + ( int factor = 200 ) + + + fromCmyk + fromCmyk + ( int c, int m, int y, int k, int a = 255 ) + + + fromCmykF + fromCmykF + ( qreal c, qreal m, qreal y, qreal k, qreal a = 1.0 ) + + + fromHsv + fromHsv + ( int h, int s, int v, int a = 255 ) + + + fromHsvF + fromHsvF + ( qreal h, qreal s, qreal v, qreal a = 1.0 ) + + + fromRgb + fromRgb + ( QRgb rgb ) + + + fromRgb + fromRgb-2 + ( int r, int g, int b, int a = 255 ) + + + fromRgbF + fromRgbF + ( qreal r, qreal g, qreal b, qreal a = 1.0 ) + + + fromRgba + fromRgba + ( QRgb rgba ) + + + getCmyk + getCmyk + ( int * c, int * m, int * y, int * k, int * a = 0 ) + + + getCmykF + getCmykF + ( qreal * c, qreal * m, qreal * y, qreal * k, qreal * a = 0 ) + + + getHsv + getHsv + ( int * h, int * s, int * v, int * a = 0 ) + + + getHsvF + getHsvF + ( qreal * h, qreal * s, qreal * v, qreal * a = 0 ) + + + getRgb + getRgb + ( int * r, int * g, int * b, int * a = 0 ) + + + getRgbF + getRgbF + ( qreal * r, qreal * g, qreal * b, qreal * a = 0 ) + + + green + green + () + + + greenF + greenF + () + + + hue + hue + () + + + hueF + hueF + () + + + isValid + isValid + () + + + light + light + ( int factor = 150 ) + + + magenta + magenta + () + + + magentaF + magentaF + () + + + name + name + () + + + red + red + () + + + redF + redF + () + + + rgb + rgb + () + + + rgba + rgba + () + + + saturation + saturation + () + + + saturationF + saturationF + () + + + setAlpha + setAlpha + ( int alpha ) + + + setAlphaF + setAlphaF + ( qreal alpha ) + + + setBlue + setBlue + ( int blue ) + + + setBlueF + setBlueF + ( qreal blue ) + + + setCmyk + setCmyk + ( int c, int m, int y, int k, int a = 255 ) + + + setCmykF + setCmykF + ( qreal c, qreal m, qreal y, qreal k, qreal a = 1.0 ) + + + setGreen + setGreen + ( int green ) + + + setGreenF + setGreenF + ( qreal green ) + + + setHsv + setHsv + ( int h, int s, int v, int a = 255 ) + + + setHsvF + setHsvF + ( qreal h, qreal s, qreal v, qreal a = 1.0 ) + + + setNamedColor + setNamedColor + ( const QString & name ) + + + setRed + setRed + ( int red ) + + + setRedF + setRedF + ( qreal red ) + + + setRgb + setRgb + ( int r, int g, int b, int a = 255 ) + + + setRgb + setRgb-2 + ( QRgb rgb ) + + + setRgbF + setRgbF + ( qreal r, qreal g, qreal b, qreal a = 1.0 ) + + + setRgba + setRgba + ( QRgb rgba ) + + + spec + spec + () + + + toCmyk + toCmyk + () + + + toHsv + toHsv + () + + + toRgb + toRgb + () + + + value + value + () + + + valueF + valueF + () + + + yellow + yellow + () + + + yellowF + yellowF + () + + + operator + operator-QVariant + QVariant() + + + operator!= + operator-not-eq + ( const QColor & color ) + + + operator= + operator-eq + ( const QColor & color ) + + + operator= + operator-eq-2 + ( Qt::GlobalColor color ) + + + operator== + operator-eq-eq + ( const QColor & color ) + + + + QColormap + qcolormap.html + + Mode + Mode-enum + + + + QColormap + QColormap + ( const QColormap & colormap ) + + + colorAt + colorAt + ( uint pixel ) + + + colormap + colormap + () + + + depth + depth + () + + + hPal + hPal + () + + + instance + instance + ( int screen = -1 ) + + + mode + mode + () + + + pixel + pixel + ( const QColor & color ) + + + size + size + () + + + QColor + QColor-7 + ( int x, int y, int z, Spec colorSpec ) + + + getRgba + getRgba + ( int * r, int * g, int * b, int * a ) + + + hsv + hsv + ( int * h, int * s, int * v ) + + + pixel + pixel + ( int screen = -1 ) + + + rgb + rgb-2 + ( int * r, int * g, int * b ) + + + setRgba + setRgba-2 + ( int r, int g, int b, int a ) + + + + QComboBox + qcombobox.html + + InsertPolicy + InsertPolicy-enum + + + + SizeAdjustPolicy + SizeAdjustPolicy-enum + + + + CaseSensitivity + autoCompletionCaseSensitivity-prop + + + + QComboBox + QComboBox + ( QWidget * parent = 0 ) + + + activated + activated + ( int index ) + + + activated + activated-2 + ( const QString & text ) + + + addItem + addItem + ( const QString & text, const QVariant & userData = QVariant() + + + addItem + addItem-2 + ( const QIcon & icon, const QString & text, const QVariant & userData = QVariant() + + + addItems + addItems + ( const QStringList & texts ) + + + clear + clear + () + + + clearEditText + clearEditText + () + + + currentIndexChanged + currentIndexChanged + ( int index ) + + + currentIndexChanged + currentIndexChanged-2 + ( const QString & text ) + + + editTextChanged + editTextChanged + ( const QString & text ) + + + findData + findData + ( const QVariant & data, int role = Qt::UserRole, Qt::MatchFlags flags = Qt::MatchExactly | Qt::MatchCaseSensitive ) + + + findText + findText + ( const QString & text, Qt::MatchFlags flags = Qt::MatchExactly | Qt::MatchCaseSensitive ) + + + hidePopup + hidePopup + () + + + highlighted + highlighted + ( int index ) + + + highlighted + highlighted-2 + ( const QString & text ) + + + insertItem + insertItem + ( int index, const QString & text, const QVariant & userData = QVariant() + + + insertItem + insertItem-2 + ( int index, const QIcon & icon, const QString & text, const QVariant & userData = QVariant() + + + insertItems + insertItems + ( int index, const QStringList & list ) + + + itemData + itemData + ( int index, int role = Qt::UserRole ) + + + itemDelegate + itemDelegate + () + + + itemIcon + itemIcon + ( int index ) + + + itemText + itemText + ( int index ) + + + lineEdit + lineEdit + () + + + model + model + () + + + removeItem + removeItem + ( int index ) + + + rootModelIndex + rootModelIndex + () + + + setEditText + setEditText + ( const QString & text ) + + + setItemData + setItemData + ( int index, const QVariant & value, int role = Qt::UserRole ) + + + setItemDelegate + setItemDelegate + ( QAbstractItemDelegate * delegate ) + + + setItemIcon + setItemIcon + ( int index, const QIcon & icon ) + + + setItemText + setItemText + ( int index, const QString & text ) + + + setLineEdit + setLineEdit + ( QLineEdit * edit ) + + + setModel + setModel + ( QAbstractItemModel * model ) + + + setRootModelIndex + setRootModelIndex + ( const QModelIndex & index ) + + + setValidator + setValidator + ( const QValidator * validator ) + + + setView + setView + ( QAbstractItemView * itemView ) + + + showPopup + showPopup + () + + + validator + validator + () + + + view + view + () + + + Policy + Policy-typedef + + + + QComboBox + QComboBox-2 + ( QWidget * parent, const char * name ) + + + QComboBox + QComboBox-3 + ( bool rw, QWidget * parent, const char * name = 0 ) + + + changeItem + changeItem + ( const QString & text, int index ) + + + changeItem + changeItem-2 + ( const QPixmap & pixmap, int index ) + + + changeItem + changeItem-3 + ( const QPixmap & pixmap, const QString & text, int index ) + + + clearEdit + clearEdit + () + + + clearValidator + clearValidator + () + + + currentItem + currentItem + () + + + editable + editable + () + + + insertItem + insertItem-3 + ( const QString & text, int index = -1 ) + + + insertItem + insertItem-4 + ( const QPixmap & pixmap, int index = -1 ) + + + insertItem + insertItem-5 + ( const QPixmap & pixmap, const QString & text, int index = -1 ) + + + insertStringList + insertStringList + ( const QStringList & list, int index = -1 ) + + + insertionPolicy + insertionPolicy + () + + + pixmap + pixmap + ( int index ) + + + popup + popup + () + + + setCurrentItem + setCurrentItem + ( int index ) + + + setCurrentText + setCurrentText + ( const QString & text ) + + + setInsertionPolicy + setInsertionPolicy + ( InsertPolicy policy ) + + + text + text + ( int index ) + + + textChanged + textChanged + ( const QString & text ) + + + + QCommonStyle + qcommonstyle.html + + QCommonStyle + QCommonStyle + () + + + + QConicalGradient + qconicalgradient.html + + QConicalGradient + QConicalGradient + ( const QPointF & center, qreal angle ) + + + QConicalGradient + QConicalGradient-2 + ( qreal cx, qreal cy, qreal angle ) + + + angle + angle + () + + + center + center + () + + + + QConstString + qconststring.html + + QConstString + QConstString + ( const QChar * unicode, int size ) + + + string + string + () + + + + QContextMenuEvent + qcontextmenuevent.html + + Reason + Reason-enum + + + + QContextMenuEvent + QContextMenuEvent + ( Reason reason, const QPoint & pos, const QPoint & globalPos ) + + + QContextMenuEvent + QContextMenuEvent-2 + ( Reason reason, const QPoint & pos ) + + + globalPos + globalPos + () + + + globalX + globalX + () + + + globalY + globalY + () + + + pos + pos + () + + + reason + reason + () + + + x + x + () + + + y + y + () + + + QContextMenuEvent + QContextMenuEvent-3 + ( Reason reason, const QPoint & pos, const QPoint & globalPos, int dummy ) + + + QContextMenuEvent + QContextMenuEvent-4 + ( Reason reason, const QPoint & pos, int dummy ) + + + ButtonState + state + QContextMenuEvent::state() + + + + QCopChannel + qcopchannel.html + + QCopChannel + QCopChannel + ( const QString & channel, QObject * parent = 0 ) + + + channel + channel + () + + + isRegistered + isRegistered + ( const QString & channel ) + + + receive + receive + ( const QString & message, const QByteArray & data ) + + + received + received + ( const QString & message, const QByteArray & data ) + + + send + send + ( const QString & channel, const QString & message, const QByteArray & data ) + + + send + send-2 + ( const QString & channel, const QString & message ) + + + QCopChannel + QCopChannel-2 + ( const QString & channel, QObject * parent, const char * name ) + + + + QCoreApplication + qcoreapplication.html + + Encoding + Encoding-enum + + + + EventFilter + EventFilter-typedef + + + + QCoreApplication + QCoreApplication + ( int & argc, char ** argv ) + + + aboutToQuit + aboutToQuit + () + + + addLibraryPath + addLibraryPath + ( const QString & path ) + + + applicationDirPath + applicationDirPath + () + + + applicationFilePath + applicationFilePath + () + + + arguments + arguments + () + + + closingDown + closingDown + () + + + exec + exec + () + + + exit + exit + ( int returnCode = 0 ) + + + filterEvent + filterEvent + ( void * message, long * result ) + + + flush + flush + () + + + hasPendingEvents + hasPendingEvents + () + + + installTranslator + installTranslator + ( QTranslator * messageFile ) + + + instance + instance + () + + + libraryPaths + libraryPaths + () + + + notify + notify + ( QObject * receiver, QEvent * event ) + + + postEvent + postEvent + ( QObject * receiver, QEvent * event ) + + + processEvents + processEvents + ( QEventLoop::ProcessEventsFlags flags = QEventLoop::AllEvents ) + + + processEvents + processEvents-2 + ( QEventLoop::ProcessEventsFlags flags, int maxtime ) + + + quit + quit + () + + + removeLibraryPath + removeLibraryPath + ( const QString & path ) + + + removePostedEvents + removePostedEvents + ( QObject * receiver ) + + + removeTranslator + removeTranslator + ( QTranslator * messageFile ) + + + sendEvent + sendEvent + ( QObject * receiver, QEvent * event ) + + + sendPostedEvents + sendPostedEvents + ( QObject * receiver, int event_type ) + + + sendPostedEvents + sendPostedEvents-2 + () + + + setEventFilter + setEventFilter + ( EventFilter filter ) + + + setLibraryPaths + setLibraryPaths + ( const QStringList & paths ) + + + startingUp + startingUp + () + + + translate + translate + ( const char * context, const char * sourceText, const char * comment = 0, Encoding encoding = DefaultCodec ) + + + winEventFilter + winEventFilter + ( MSG * msg, long * result ) + + + argc + argc + () + + + argv + argv + () + + + enter_loop + enter_loop + () + + + exit_loop + exit_loop + () + + + lock + lock + () + + + locked + locked + () + + + loopLevel + loopLevel + () + + + processOneEvent + processOneEvent + () + + + tryLock + tryLock + () + + + unlock + unlock + ( bool wakeUpGui = true ) + + + + QCursor + qcursor.html + + QCursor + QCursor + () + + + QCursor + QCursor-2 + ( Qt::CursorShape shape ) + + + QCursor + QCursor-3 + ( const QBitmap & bitmap, const QBitmap & mask, int hotX = -1, int hotY = -1 ) + + + QCursor + QCursor-4 + ( const QPixmap & pixmap, int hotX = -1, int hotY = -1 ) + + + QCursor + QCursor-5 + ( const QCursor & c ) + + + QCursor + QCursor-6 + ( HCURSOR cursor ) + + + QCursor + QCursor-7 + ( Qt::HANDLE handle ) + + + QCursor + QCursor-8 + ( Qt::HANDLE cursor ) + + + bitmap + bitmap + () + + + handle + handle + () + + + HANDLE + handle-2 + QCursor::handle() + + + handle + handle-3 + () + + + hotSpot + hotSpot + () + + + mask + mask + () + + + pixmap + pixmap + () + + + pos + pos + () + + + setPos + setPos + ( int x, int y ) + + + setPos + setPos-2 + ( const QPoint & p ) + + + setShape + setShape + ( Qt::CursorShape shape ) + + + CursorShape + shape + QCursor::shape() + + + operator + operator-QVariant + QVariant() + + + operator= + operator-eq + ( const QCursor & c ) + + + + QCustomEvent + qcustomevent.html + + QCustomEvent + QCustomEvent + ( int type, void * data = 0 ) + + + data + data + () + + + setData + setData + ( void * data ) + + + + QDataStream + qdatastream.html + + ByteOrder + ByteOrder-enum + + + + Status + Status-enum + + + + Version + Version-enum + + + + QDataStream + QDataStream + () + + + QDataStream + QDataStream-2 + ( QIODevice * d ) + + + QDataStream + QDataStream-4 + ( QByteArray * a, QIODevice::OpenMode mode ) + + + QDataStream + QDataStream-5 + ( const QByteArray & a ) + + + atEnd + atEnd + () + + + byteOrder + byteOrder + () + + + device + device + () + + + readBytes + readBytes + ( char *& s, uint & l ) + + + readRawData + readRawData + ( char * s, int len ) + + + resetStatus + resetStatus + () + + + setByteOrder + setByteOrder + ( ByteOrder bo ) + + + setDevice + setDevice + ( QIODevice * d ) + + + setStatus + setStatus + ( Status status ) + + + setVersion + setVersion + ( int v ) + + + skipRawData + skipRawData + ( int len ) + + + status + status + () + + + unsetDevice + unsetDevice + () + + + version + version + () + + + writeBytes + writeBytes + ( const char * s, uint len ) + + + writeRawData + writeRawData + ( const char * s, int len ) + + + operator<< + operator-lt-lt + ( qint8 i ) + + + operator<< + operator-lt-lt-2 + ( bool i ) + + + operator<< + operator-lt-lt-3 + ( quint8 i ) + + + operator<< + operator-lt-lt-4 + ( quint16 i ) + + + operator<< + operator-lt-lt-5 + ( qint16 i ) + + + operator<< + operator-lt-lt-6 + ( qint32 i ) + + + operator<< + operator-lt-lt-7 + ( quint64 i ) + + + operator<< + operator-lt-lt-8 + ( qint64 i ) + + + operator<< + operator-lt-lt-9 + ( quint32 i ) + + + operator<< + operator-lt-lt-10 + ( float f ) + + + operator<< + operator-lt-lt-11 + ( double f ) + + + operator<< + operator-lt-lt-12 + ( const char * s ) + + + operator>> + operator-gt-gt + ( qint8 & i ) + + + operator>> + operator-gt-gt-2 + ( bool & i ) + + + operator>> + operator-gt-gt-3 + ( quint8 & i ) + + + operator>> + operator-gt-gt-4 + ( quint16 & i ) + + + operator>> + operator-gt-gt-5 + ( qint16 & i ) + + + operator>> + operator-gt-gt-6 + ( quint32 & i ) + + + operator>> + operator-gt-gt-7 + ( qint32 & i ) + + + operator>> + operator-gt-gt-8 + ( quint64 & i ) + + + operator>> + operator-gt-gt-9 + ( qint64 & i ) + + + operator>> + operator-gt-gt-10 + ( float & f ) + + + operator>> + operator-gt-gt-11 + ( double & f ) + + + operator>> + operator-gt-gt-12 + ( char *& s ) + + + QDataStream + QDataStream-3 + ( QByteArray * array, int mode ) + + + eof + eof + () + + + isPrintableData + isPrintableData + () + + + readRawBytes + readRawBytes + ( char * str, uint len ) + + + setPrintableData + setPrintableData + ( bool enable ) + + + writeRawBytes + writeRawBytes + ( const char * str, uint len ) + + + + QDateEdit + qdateedit.html + + QDateEdit + QDateEdit + ( QWidget * parent = 0 ) + + + QDateEdit + QDateEdit-2 + ( const QDate & date, QWidget * parent = 0 ) + + + + QDate + qdate.html + + QDate + QDate + () + + + QDate + QDate-2 + ( int y, int m, int d ) + + + addDays + addDays + ( int ndays ) + + + addMonths + addMonths + ( int nmonths ) + + + addYears + addYears + ( int nyears ) + + + currentDate + currentDate-2 + () + + + day + day + () + + + dayOfWeek + dayOfWeek + () + + + dayOfYear + dayOfYear + () + + + daysInMonth + daysInMonth + () + + + daysInYear + daysInYear + () + + + daysTo + daysTo + ( const QDate & d ) + + + fromJulianDay + fromJulianDay + ( int jd ) + + + fromString + fromString + ( const QString & string, Qt::DateFormat format = Qt::TextDate ) + + + fromString + fromString-2 + ( const QString & string, const QString & format ) + + + isLeapYear + isLeapYear + ( int year ) + + + isNull + isNull + () + + + isValid + isValid + () + + + isValid + isValid-2 + ( int y, int m, int d ) + + + longDayName + longDayName + ( int weekday ) + + + longMonthName + longMonthName + ( int month ) + + + month + month + () + + + setYMD + setYMD + ( int y, int m, int d ) + + + shortDayName + shortDayName + ( int weekday ) + + + shortMonthName + shortMonthName + ( int month ) + + + toJulianDay + toJulianDay + () + + + toString + toString + ( const QString & format ) + + + toString + toString-2 + ( Qt::DateFormat format = Qt::TextDate ) + + + weekNumber + weekNumber + ( int * yearNumber = 0 ) + + + year + year + () + + + operator!= + operator-not-eq + ( const QDate & d ) + + + operator< + operator-lt + ( const QDate & d ) + + + operator<= + operator-lt-eq + ( const QDate & d ) + + + operator== + operator-eq-eq + ( const QDate & d ) + + + operator> + operator-gt + ( const QDate & d ) + + + operator>= + operator-gt-eq + ( const QDate & d ) + + + currentDate + currentDate + ( Qt::TimeSpec spec ) + + + dayName + dayName + ( int weekday ) + + + leapYear + leapYear + ( int year ) + + + monthName + monthName + ( int month ) + + + + QDateTimeEdit + qdatetimeedit.html + + QDateTimeEdit + QDateTimeEdit + ( QWidget * parent = 0 ) + + + QDateTimeEdit + QDateTimeEdit-2 + ( const QDateTime & datetime, QWidget * parent = 0 ) + + + QDateTimeEdit + QDateTimeEdit-3 + ( const QDate & date, QWidget * parent = 0 ) + + + QDateTimeEdit + QDateTimeEdit-4 + ( const QTime & time, QWidget * parent = 0 ) + + + dateChanged + dateChanged + ( const QDate & date ) + + + dateTimeChanged + dateTimeChanged + ( const QDateTime & datetime ) + + + dateTimeFromText + dateTimeFromText + ( const QString & text ) + + + sectionText + sectionText + ( Section section ) + + + setDateRange + setDateRange + ( const QDate & min, const QDate & max ) + + + setTimeRange + setTimeRange + ( const QTime & min, const QTime & max ) + + + textFromDateTime + textFromDateTime + ( const QDateTime & dateTime ) + + + timeChanged + timeChanged + ( const QTime & time ) + + + + QDateTime + qdatetime.html + + QDateTime + QDateTime + () + + + QDateTime + QDateTime-2 + ( const QDate & date ) + + + QDateTime + QDateTime-3 + ( const QDate & date, const QTime & time, Qt::TimeSpec spec = Qt::LocalTime ) + + + QDateTime + QDateTime-4 + ( const QDateTime & other ) + + + addDays + addDays + ( int ndays ) + + + addMSecs + addMSecs + ( qint64 msecs ) + + + addMonths + addMonths + ( int nmonths ) + + + addSecs + addSecs + ( int nsecs ) + + + addYears + addYears + ( int nyears ) + + + currentDateTime + currentDateTime + () + + + date + date + () + + + daysTo + daysTo + ( const QDateTime & other ) + + + fromString + fromString + ( const QString & string, Qt::DateFormat format = Qt::TextDate ) + + + fromString + fromString-2 + ( const QString & string, const QString & format ) + + + isNull + isNull + () + + + isValid + isValid + () + + + secsTo + secsTo + ( const QDateTime & other ) + + + setDate + setDate + ( const QDate & date ) + + + setTime + setTime + ( const QTime & time ) + + + setTimeSpec + setTimeSpec + ( Qt::TimeSpec spec ) + + + setTime_t + setTime_t + ( uint seconds ) + + + time + time + () + + + TimeSpec + timeSpec + QDateTime::timeSpec() + + + toLocalTime + toLocalTime + () + + + toString + toString + ( const QString & format ) + + + toString + toString-2 + ( Qt::DateFormat format = Qt::TextDate ) + + + toTimeSpec + toTimeSpec + ( Qt::TimeSpec specification ) + + + toTime_t + toTime_t + () + + + toUTC + toUTC + () + + + operator!= + operator-not-eq + ( const QDateTime & other ) + + + operator< + operator-lt + ( const QDateTime & other ) + + + operator<= + operator-lt-eq + ( const QDateTime & other ) + + + operator= + operator-eq + ( const QDateTime & other ) + + + operator== + operator-eq-eq + ( const QDateTime & other ) + + + operator> + operator-gt + ( const QDateTime & other ) + + + operator>= + operator-gt-eq + ( const QDateTime & other ) + + + currentDateTime + currentDateTime-2 + ( Qt::TimeSpec spec ) + + + setTime_t + setTime_t-2 + ( uint secsSince1Jan1970UTC, Qt::TimeSpec spec ) + + + + QDecorationFactory + qdecorationfactory.html + + create + create + ( const QString & key ) + + + keys + keys + () + + + + QDecoration + qdecoration.html + + DecorationRegion + DecorationRegion-enum + + + + DecorationState + DecorationState-enum + + + + QDecoration + QDecoration + () + + + buildSysMenu + buildSysMenu + ( QWidget * widget, QMenu * menu ) + + + menuTriggered + menuTriggered + ( QWidget * widget, QAction * action ) + + + paint + paint + ( QPainter * painter, const QWidget * widget, int decorationRegion = All, DecorationState state = Normal ) + + + region + region + ( const QWidget * widget, const QRect & rectangle, int decorationRegion = All ) + + + region + region-2 + ( const QWidget * widget, int decorationRegion = All ) + + + regionAt + regionAt + ( const QWidget * widget, const QPoint & point ) + + + regionClicked + regionClicked + ( QWidget * widget, int region ) + + + regionDoubleClicked + regionDoubleClicked + ( QWidget * widget, int region ) + + + startMove + startMove + ( QWidget * widget ) + + + startResize + startResize + ( QWidget * widget ) + + + + QDecorationPlugin + qdecorationplugin.html + + QDecorationPlugin + QDecorationPlugin + ( QObject * parent = 0 ) + + + create + create + ( const QString & key ) + + + keys + keys + () + + + + QDesignerActionEditorInterface + qdesigneractioneditorinterface.html + + QDesignerActionEditorInterface + QDesignerActionEditorInterface + ( QWidget * parent, Qt::WindowFlags flags = 0 ) + + + core + core + () + + + manageAction + manageAction + ( QAction * action ) + + + setFormWindow + setFormWindow + ( QDesignerFormWindowInterface * formWindow ) + + + unmanageAction + unmanageAction + ( QAction * action ) + + + + QDesignerContainerExtension + qdesignercontainerextension.html + + addWidget + addWidget + ( QWidget * page ) + + + count + count + () + + + currentIndex + currentIndex + () + + + insertWidget + insertWidget + ( int index, QWidget * page ) + + + remove + remove + ( int index ) + + + setCurrentIndex + setCurrentIndex + ( int index ) + + + widget + widget + ( int index ) + + + + QDesignerCustomWidgetCollectionInterface + qdesignercustomwidgetcollectioninterface.html + + customWidgets + customWidgets + () + + + + QDesignerCustomWidgetInterface + qdesignercustomwidgetinterface.html + + codeTemplate + codeTemplate + () + + + createWidget + createWidget + ( QWidget * parent ) + + + domXml + domXml + () + + + group + group + () + + + icon + icon + () + + + includeFile + includeFile + () + + + initialize + initialize + ( QDesignerFormEditorInterface * formEditor ) + + + isContainer + isContainer + () + + + isInitialized + isInitialized + () + + + name + name + () + + + toolTip + toolTip + () + + + whatsThis + whatsThis + () + + + + QDesignerFormEditorInterface + qdesignerformeditorinterface.html + + QDesignerFormEditorInterface + QDesignerFormEditorInterface + ( QObject * parent = 0 ) + + + actionEditor + actionEditor + () + + + extensionManager + extensionManager + () + + + formWindowManager + formWindowManager + () + + + objectInspector + objectInspector + () + + + propertyEditor + propertyEditor + () + + + setActionEditor + setActionEditor + ( QDesignerActionEditorInterface * actionEditor ) + + + setObjectInspector + setObjectInspector + ( QDesignerObjectInspectorInterface * objectInspector ) + + + setPropertyEditor + setPropertyEditor + ( QDesignerPropertyEditorInterface * propertyEditor ) + + + setWidgetBox + setWidgetBox + ( QDesignerWidgetBoxInterface * widgetBox ) + + + topLevel + topLevel + () + + + widgetBox + widgetBox + () + + + + QDesignerFormWindowCursorInterface + qdesignerformwindowcursorinterface.html + + MoveMode + MoveMode-enum + + + + MoveOperation + MoveOperation-enum + + + + current + current + () + + + formWindow + formWindow + () + + + hasSelection + hasSelection + () + + + isWidgetSelected + isWidgetSelected + ( QWidget * widget ) + + + movePosition + movePosition + ( MoveOperation operation, MoveMode mode = MoveAnchor ) + + + position + position + () + + + resetWidgetProperty + resetWidgetProperty + ( QWidget * widget, const QString & name ) + + + selectedWidget + selectedWidget + ( int index ) + + + selectedWidgetCount + selectedWidgetCount + () + + + setPosition + setPosition + ( int position, MoveMode mode = MoveAnchor ) + + + setProperty + setProperty + ( const QString & name, const QVariant & value ) + + + setWidgetProperty + setWidgetProperty + ( QWidget * widget, const QString & name, const QVariant & value ) + + + widget + widget + ( int index ) + + + widgetCount + widgetCount + () + + + + QDesignerFormWindowInterface + qdesignerformwindowinterface.html + + QDesignerFormWindowInterface + QDesignerFormWindowInterface + ( QWidget * parent = 0, Qt::WindowFlags flags = 0 ) + + + aboutToUnmanageWidget + aboutToUnmanageWidget + ( QWidget * widget ) + + + absoluteDir + absoluteDir + () + + + activated + activated + ( QWidget * widget ) + + + addResourceFile + addResourceFile + ( const QString & path ) + + + author + author + () + + + changed + changed + () + + + clearSelection + clearSelection + ( bool update = true ) + + + comment + comment + () + + + contents + contents + () + + + core + core + () + + + cursor + cursor + () + + + emitSelectionChanged + emitSelectionChanged + () + + + exportMacro + exportMacro + () + + + featureChanged + featureChanged + ( Feature feature ) + + + features + features + () + + + fileName + fileName + () + + + fileNameChanged + fileNameChanged + ( const QString & fileName ) + + + findFormWindow + findFormWindow + ( QWidget * widget ) + + + geometryChanged + geometryChanged + () + + + grid + grid + () + + + hasFeature + hasFeature + ( Feature feature ) + + + includeHints + includeHints + () + + + isDirty + isDirty + () + + + isManaged + isManaged + ( QWidget * widget ) + + + layoutDefault + layoutDefault + ( int * margin, int * spacing ) + + + layoutFunction + layoutFunction + ( QString * margin, QString * spacing ) + + + mainContainer + mainContainer + () + + + mainContainerChanged + mainContainerChanged + ( QWidget * mainContainer ) + + + manageWidget + manageWidget + ( QWidget * widget ) + + + pixmapFunction + pixmapFunction + () + + + removeResourceFile + removeResourceFile + ( const QString & path ) + + + resourceFiles + resourceFiles + () + + + resourceFilesChanged + resourceFilesChanged + () + + + selectWidget + selectWidget + ( QWidget * widget, bool select = true ) + + + selectionChanged + selectionChanged + () + + + setAuthor + setAuthor + ( const QString & author ) + + + setComment + setComment + ( const QString & comment ) + + + setContents + setContents + ( QIODevice * device ) + + + setContents + setContents-2 + ( const QString & contents ) + + + setDirty + setDirty + ( bool dirty ) + + + setExportMacro + setExportMacro + ( const QString & exportMacro ) + + + setFeatures + setFeatures + ( Feature features ) + + + setFileName + setFileName + ( const QString & fileName ) + + + setGrid + setGrid + ( const QPoint & grid ) + + + setIncludeHints + setIncludeHints + ( const QStringList & includeHints ) + + + setLayoutDefault + setLayoutDefault + ( int margin, int spacing ) + + + setLayoutFunction + setLayoutFunction + ( const QString & margin, const QString & spacing ) + + + setMainContainer + setMainContainer + ( QWidget * mainContainer ) + + + setPixmapFunction + setPixmapFunction + ( const QString & pixmapFunction ) + + + unmanageWidget + unmanageWidget + ( QWidget * widget ) + + + widgetManaged + widgetManaged + ( QWidget * widget ) + + + widgetRemoved + widgetRemoved + ( QWidget * widget ) + + + widgetUnmanaged + widgetUnmanaged + ( QWidget * widget ) + + + + QDesignerFormWindowManagerInterface + qdesignerformwindowmanagerinterface.html + + QDesignerFormWindowManagerInterface + QDesignerFormWindowManagerInterface + ( QObject * parent = 0 ) + + + actionAdjustSize + actionAdjustSize + () + + + actionBreakLayout + actionBreakLayout + () + + + actionCopy + actionCopy + () + + + actionCut + actionCut + () + + + actionDelete + actionDelete + () + + + actionGridLayout + actionGridLayout + () + + + actionHorizontalLayout + actionHorizontalLayout + () + + + actionLower + actionLower + () + + + actionPaste + actionPaste + () + + + actionRaise + actionRaise + () + + + actionRedo + actionRedo + () + + + actionSelectAll + actionSelectAll + () + + + actionSplitHorizontal + actionSplitHorizontal + () + + + actionSplitVertical + actionSplitVertical + () + + + actionUndo + actionUndo + () + + + actionVerticalLayout + actionVerticalLayout + () + + + activeFormWindow + activeFormWindow + () + + + activeFormWindowChanged + activeFormWindowChanged + ( QDesignerFormWindowInterface * formWindow ) + + + addFormWindow + addFormWindow + ( QDesignerFormWindowInterface * formWindow ) + + + core + core + () + + + createFormWindow + createFormWindow + ( QWidget * parent = 0, Qt::WindowFlags flags = 0 ) + + + formWindow + formWindow + ( int index ) + + + formWindowAdded + formWindowAdded + ( QDesignerFormWindowInterface * formWindow ) + + + formWindowCount + formWindowCount + () + + + formWindowRemoved + formWindowRemoved + ( QDesignerFormWindowInterface * formWindow ) + + + removeFormWindow + removeFormWindow + ( QDesignerFormWindowInterface * formWindow ) + + + setActiveFormWindow + setActiveFormWindow + ( QDesignerFormWindowInterface * formWindow ) + + + + QDesignerMemberSheetExtension + qdesignermembersheetextension.html + + count + count + () + + + declaredInClass + declaredInClass + ( int index ) + + + indexOf + indexOf + ( const QString & name ) + + + inheritedFromWidget + inheritedFromWidget + ( int index ) + + + isSignal + isSignal + ( int index ) + + + isSlot + isSlot + ( int index ) + + + isVisible + isVisible + ( int index ) + + + memberGroup + memberGroup + ( int index ) + + + memberName + memberName + ( int index ) + + + parameterNames + parameterNames + ( int index ) + + + parameterTypes + parameterTypes + ( int index ) + + + setMemberGroup + setMemberGroup + ( int index, const QString & group ) + + + setVisible + setVisible + ( int index, bool visible ) + + + signature + signature + ( int index ) + + + + QDesignerObjectInspectorInterface + qdesignerobjectinspectorinterface.html + + QDesignerObjectInspectorInterface + QDesignerObjectInspectorInterface + ( QWidget * parent, Qt::WindowFlags flags = 0 ) + + + core + core + () + + + setFormWindow + setFormWindow + ( QDesignerFormWindowInterface * formWindow ) + + + + QDesignerPropertyEditorInterface + qdesignerpropertyeditorinterface.html + + QDesignerPropertyEditorInterface + QDesignerPropertyEditorInterface + ( QWidget * parent, Qt::WindowFlags flags = 0 ) + + + core + core + () + + + currentPropertyName + currentPropertyName + () + + + isReadOnly + isReadOnly + () + + + object + object + () + + + propertyChanged + propertyChanged + ( const QString & name, const QVariant & value ) + + + setObject + setObject + ( QObject * object ) + + + setPropertyValue + setPropertyValue + ( const QString & name, const QVariant & value, bool changed = true ) + + + setReadOnly + setReadOnly + ( bool readOnly ) + + + + QDesignerPropertySheetExtension + qdesignerpropertysheetextension.html + + count + count + () + + + hasReset + hasReset + ( int index ) + + + indexOf + indexOf + ( const QString & name ) + + + isAttribute + isAttribute + ( int index ) + + + isChanged + isChanged + ( int index ) + + + isVisible + isVisible + ( int index ) + + + property + property + ( int index ) + + + propertyGroup + propertyGroup + ( int index ) + + + propertyName + propertyName + ( int index ) + + + reset + reset + ( int index ) + + + setAttribute + setAttribute + ( int index, bool attribute ) + + + setChanged + setChanged + ( int index, bool changed ) + + + setProperty + setProperty + ( int index, const QVariant & value ) + + + setPropertyGroup + setPropertyGroup + ( int index, const QString & group ) + + + setVisible + setVisible + ( int index, bool visible ) + + + + QDesignerTaskMenuExtension + qdesignertaskmenuextension.html + + preferredEditAction + preferredEditAction + () + + + taskActions + taskActions + () + + + + QDesignerWidgetBoxInterface + qdesignerwidgetboxinterface.html + + QDesignerWidgetBoxInterface + QDesignerWidgetBoxInterface + ( QWidget * parent = 0, Qt::WindowFlags flags = 0 ) + + + fileName + fileName + () + + + load + load + () + + + save + save + () + + + setFileName + setFileName + ( const QString & fileName ) + + + + QDesktopWidget + qdesktopwidget.html + + QDesktopWidget + QDesktopWidget + () + + + availableGeometry + availableGeometry + ( int screen = -1 ) + + + availableGeometry + availableGeometry-2 + ( const QWidget * widget ) + + + availableGeometry + availableGeometry-3 + ( const QPoint & p ) + + + isVirtualDesktop + isVirtualDesktop + () + + + numScreens + numScreens + () + + + primaryScreen + primaryScreen + () + + + resized + resized + ( int screen ) + + + screen + screen + ( int screen = -1 ) + + + screenGeometry + screenGeometry + ( int screen = -1 ) + + + screenGeometry + screenGeometry-2 + ( const QWidget * widget ) + + + screenGeometry + screenGeometry-3 + ( const QPoint & p ) + + + screenNumber + screenNumber + ( const QWidget * widget = 0 ) + + + screenNumber + screenNumber-2 + ( const QPoint & point ) + + + workAreaResized + workAreaResized + ( int screen ) + + + + QDial + qdial.html + + QDial + QDial + ( QWidget * parent = 0 ) + + + + QDialog + qdialog.html + + DialogCode + DialogCode-enum + + + + QDialog + QDialog + ( QWidget * parent = 0, Qt::WFlags f = 0 ) + + + accept + accept + () + + + accepted + accepted + () + + + done + done + ( int r ) + + + exec + exec + () + + + extension + extension + () + + + finished + finished + ( int result ) + + + Orientation + orientation + QDialog::orientation() + + + reject + reject + () + + + rejected + rejected + () + + + result + result + () + + + setExtension + setExtension + ( QWidget * extension ) + + + setOrientation + setOrientation + ( Qt::Orientation orientation ) + + + setResult + setResult + ( int i ) + + + showExtension + showExtension + ( bool showIt ) + + + QDialog + QDialog-2 + ( QWidget * parent, const char * name, bool modal = false, Qt::WFlags f = 0 ) + + + QDial + QDial-2 + ( int minValue, int maxValue, int pageStep, int value, QWidget * parent = 0, const char * name = 0 ) + + + QDial + QDial-3 + ( QWidget * parent, const char * name ) + + + dialMoved + dialMoved + ( int value ) + + + dialPressed + dialPressed + () + + + dialReleased + dialReleased + () + + + + QDirectPainter + qdirectpainter.html + + frameBuffer + frameBuffer + () + + + linestep + linestep + () + + + lock + lock + () + + + region + region + () + + + reserveRegion + reserveRegion + ( const QRegion & region ) + + + screenDepth + screenDepth + () + + + screenHeight + screenHeight + () + + + screenWidth + screenWidth + () + + + unlock + unlock + () + + + + QDir + qdir.html + + FilterSpec + FilterSpec-typedef + + + + SortSpec + SortSpec-typedef + + + + QDir + QDir + ( const QDir & dir ) + + + QDir + QDir-2 + ( const QString & path = QString() + + + QDir + QDir-3 + ( const QString & path, const QString & nameFilter, SortFlags sort = SortFlags( Name | IgnoreCase ) + + + absoluteFilePath + absoluteFilePath + ( const QString & fileName ) + + + absolutePath + absolutePath + () + + + addResourceSearchPath + addResourceSearchPath + ( const QString & path ) + + + canonicalPath + canonicalPath + () + + + cd + cd + ( const QString & dirName ) + + + cdUp + cdUp + () + + + cleanPath + cleanPath + ( const QString & path ) + + + convertSeparators + convertSeparators + ( const QString & pathName ) + + + count + count + () + + + current + current + () + + + currentPath + currentPath + () + + + dirName + dirName + () + + + drives + drives + () + + + entryInfoList + entryInfoList + ( const QStringList & nameFilters, Filters filters = NoFilter, SortFlags sort = NoSort ) + + + entryInfoList + entryInfoList-3 + ( Filters filters = NoFilter, SortFlags sort = NoSort ) + + + entryList + entryList + ( const QStringList & nameFilters, Filters filters = NoFilter, SortFlags sort = NoSort ) + + + entryList + entryList-3 + ( Filters filters = NoFilter, SortFlags sort = NoSort ) + + + exists + exists + ( const QString & name ) + + + exists + exists-2 + () + + + filePath + filePath + ( const QString & fileName ) + + + filter + filter + () + + + home + home + () + + + homePath + homePath + () + + + isAbsolute + isAbsolute + () + + + isAbsolutePath + isAbsolutePath + ( const QString & path ) + + + isReadable + isReadable + () + + + isRelative + isRelative + () + + + isRelativePath + isRelativePath + ( const QString & path ) + + + isRoot + isRoot + () + + + makeAbsolute + makeAbsolute + () + + + match + match + ( const QString & filter, const QString & fileName ) + + + match + match-2 + ( const QStringList & filters, const QString & fileName ) + + + mkdir + mkdir + ( const QString & dirName ) + + + mkpath + mkpath + ( const QString & dirPath ) + + + nameFilters + nameFilters + () + + + path + path + () + + + refresh + refresh + () + + + relativeFilePath + relativeFilePath + ( const QString & fileName ) + + + remove + remove + ( const QString & fileName ) + + + rename + rename + ( const QString & oldName, const QString & newName ) + + + rmdir + rmdir + ( const QString & dirName ) + + + rmpath + rmpath + ( const QString & dirPath ) + + + root + root + () + + + rootPath + rootPath + () + + + separator + separator + () + + + setCurrent + setCurrent + ( const QString & path ) + + + setFilter + setFilter + ( Filters filters ) + + + setNameFilters + setNameFilters + ( const QStringList & nameFilters ) + + + setPath + setPath + ( const QString & path ) + + + setSorting + setSorting + ( SortFlags sort ) + + + sorting + sorting + () + + + temp + temp + () + + + tempPath + tempPath + () + + + operator!= + operator-not-eq + ( const QDir & dir ) + + + operator= + operator-eq + ( const QDir & dir ) + + + operator== + operator-eq-eq + ( const QDir & dir ) + + + operator[] + operator-5b-5d + ( int pos ) + + + + QDirModel + qdirmodel.html + + Roles + Roles-enum + + + + QDirModel + QDirModel + ( const QStringList & nameFilters, QDir::Filters filters, QDir::SortFlags sort, QObject * parent = 0 ) + + + QDirModel + QDirModel-2 + ( QObject * parent = 0 ) + + + columnCount + columnCount + ( const QModelIndex & parent ) + + + data + data + ( const QModelIndex & index, int role = Qt::DisplayRole ) + + + dropMimeData + dropMimeData + ( const QMimeData * data, Qt::DropAction action, int row, int column, const QModelIndex & parent ) + + + fileIcon + fileIcon + ( const QModelIndex & index ) + + + fileInfo + fileInfo + ( const QModelIndex & index ) + + + fileName + fileName + ( const QModelIndex & index ) + + + filePath + filePath + ( const QModelIndex & index ) + + + Filters + filter + QDirModel::filter() + + + ItemFlags + flags + QDirModel::flags( const QModelIndex & index ) + + + hasChildren + hasChildren + ( const QModelIndex & parent ) + + + headerData + headerData + ( int section, Qt::Orientation orientation, int role ) + + + iconProvider + iconProvider + () + + + index + index + ( int row, int column, const QModelIndex & parent = QModelIndex() + + + index + index-2 + ( const QString & path, int column = 0 ) + + + isDir + isDir + ( const QModelIndex & index ) + + + mimeData + mimeData + ( const QModelIndexList & indexes ) + + + mimeTypes + mimeTypes + () + + + mkdir + mkdir + ( const QModelIndex & parent, const QString & name ) + + + nameFilters + nameFilters + () + + + parent + parent + ( const QModelIndex & child ) + + + refresh + refresh + ( const QModelIndex & parent = QModelIndex() + + + remove + remove + ( const QModelIndex & index ) + + + rmdir + rmdir + ( const QModelIndex & index ) + + + rowCount + rowCount + ( const QModelIndex & parent ) + + + setData + setData + ( const QModelIndex & index, const QVariant & value, int role ) + + + setFilter + setFilter + ( QDir::Filters filters ) + + + setIconProvider + setIconProvider + ( QFileIconProvider * provider ) + + + setNameFilters + setNameFilters + ( const QStringList & filters ) + + + setSorting + setSorting + ( QDir::SortFlags sort ) + + + sort + sort + ( int column, Qt::SortOrder order ) + + + SortFlags + sorting + QDirModel::sorting() + + + DropActions + supportedDropActions + QDirModel::supportedDropActions() + + + operator= + operator-eq-2 + ( const QString & path ) + + + absFilePath + absFilePath + ( const QString & fileName, bool acceptAbsPath = true ) + + + absPath + absPath + () + + + cleanDirPath + cleanDirPath + ( const QString & name ) + + + convertToAbs + convertToAbs + () + + + currentDirPath + currentDirPath + () + + + entryInfoList + entryInfoList-2 + ( const QString & nameFilter, Filters filters = NoFilter, SortFlags sort = NoSort ) + + + entryList + entryList-2 + ( const QString & nameFilter, Filters filters = NoFilter, SortFlags sort = NoSort ) + + + homeDirPath + homeDirPath + () + + + matchAllDirs + matchAllDirs + () + + + mkdir + mkdir-2 + ( const QString & dirName, bool acceptAbsPath ) + + + nameFilter + nameFilter + () + + + rmdir + rmdir-2 + ( const QString & dirName, bool acceptAbsPath ) + + + rootDirPath + rootDirPath + () + + + setMatchAllDirs + setMatchAllDirs + ( bool on ) + + + setNameFilter + setNameFilter + ( const QString & nameFilter ) + + + + QDockWidget + qdockwidget.html + + DockWidgetAreas + allowedAreas-prop + + + + QDockWidget + QDockWidget + ( const QString & title, QWidget * parent = 0, Qt::WFlags flags = 0 ) + + + QDockWidget + QDockWidget-2 + ( QWidget * parent = 0, Qt::WFlags flags = 0 ) + + + allowedAreasChanged + allowedAreasChanged + ( Qt::DockWidgetAreas allowedAreas ) + + + featuresChanged + featuresChanged + ( QDockWidget::DockWidgetFeatures features ) + + + isAreaAllowed + isAreaAllowed + ( Qt::DockWidgetArea area ) + + + setWidget + setWidget + ( QWidget * widget ) + + + toggleViewAction + toggleViewAction + () + + + topLevelChanged + topLevelChanged + ( bool topLevel ) + + + widget + widget + () + + + + QDomAttr + qdomattr.html + + QDomAttr + QDomAttr + () + + + QDomAttr + QDomAttr-2 + ( const QDomAttr & x ) + + + name + name + () + + + NodeType + nodeType + QDomAttr::nodeType() + + + ownerElement + ownerElement + () + + + setValue + setValue + ( const QString & v ) + + + specified + specified + () + + + value + value + () + + + operator= + operator-eq + ( const QDomAttr & x ) + + + + QDomCDATASection + qdomcdatasection.html + + QDomCDATASection + QDomCDATASection + () + + + QDomCDATASection + QDomCDATASection-2 + ( const QDomCDATASection & x ) + + + NodeType + nodeType + QDomCDATASection::nodeType() + + + operator= + operator-eq + ( const QDomCDATASection & x ) + + + + QDomCharacterData + qdomcharacterdata.html + + QDomCharacterData + QDomCharacterData + () + + + QDomCharacterData + QDomCharacterData-2 + ( const QDomCharacterData & x ) + + + appendData + appendData + ( const QString & arg ) + + + data + data + () + + + deleteData + deleteData + ( unsigned long offset, unsigned long count ) + + + insertData + insertData + ( unsigned long offset, const QString & arg ) + + + length + length + () + + + NodeType + nodeType + QDomCharacterData::nodeType() + + + replaceData + replaceData + ( unsigned long offset, unsigned long count, const QString & arg ) + + + setData + setData + ( const QString & v ) + + + substringData + substringData + ( unsigned long offset, unsigned long count ) + + + operator= + operator-eq + ( const QDomCharacterData & x ) + + + + QDomComment + qdomcomment.html + + QDomComment + QDomComment + () + + + QDomComment + QDomComment-2 + ( const QDomComment & x ) + + + NodeType + nodeType + QDomComment::nodeType() + + + operator= + operator-eq + ( const QDomComment & x ) + + + + QDomDocumentFragment + qdomdocumentfragment.html + + QDomDocumentFragment + QDomDocumentFragment + () + + + QDomDocumentFragment + QDomDocumentFragment-2 + ( const QDomDocumentFragment & x ) + + + NodeType + nodeType + QDomDocumentFragment::nodeType() + + + operator= + operator-eq + ( const QDomDocumentFragment & x ) + + + + QDomDocument + qdomdocument.html + + QDomDocument + QDomDocument + () + + + QDomDocument + QDomDocument-2 + ( const QString & name ) + + + QDomDocument + QDomDocument-3 + ( const QDomDocumentType & doctype ) + + + QDomDocument + QDomDocument-4 + ( const QDomDocument & x ) + + + createAttribute + createAttribute + ( const QString & name ) + + + createAttributeNS + createAttributeNS + ( const QString & nsURI, const QString & qName ) + + + createCDATASection + createCDATASection + ( const QString & value ) + + + createComment + createComment + ( const QString & value ) + + + createDocumentFragment + createDocumentFragment + () + + + createElement + createElement + ( const QString & tagName ) + + + createElementNS + createElementNS + ( const QString & nsURI, const QString & qName ) + + + createEntityReference + createEntityReference + ( const QString & name ) + + + createProcessingInstruction + createProcessingInstruction + ( const QString & target, const QString & data ) + + + createTextNode + createTextNode + ( const QString & value ) + + + doctype + doctype + () + + + documentElement + documentElement + () + + + elementById + elementById + ( const QString & elementId ) + + + elementsByTagName + elementsByTagName + ( const QString & tagname ) + + + elementsByTagNameNS + elementsByTagNameNS + ( const QString & nsURI, const QString & localName ) + + + implementation + implementation + () + + + importNode + importNode + ( const QDomNode & importedNode, bool deep ) + + + NodeType + nodeType + QDomDocument::nodeType() + + + setContent + setContent + ( const QByteArray & data, bool namespaceProcessing, QString * errorMsg = 0, int * errorLine = 0, int * errorColumn = 0 ) + + + setContent + setContent-2 + ( const QString & text, bool namespaceProcessing, QString * errorMsg = 0, int * errorLine = 0, int * errorColumn = 0 ) + + + setContent + setContent-3 + ( QIODevice * dev, bool namespaceProcessing, QString * errorMsg = 0, int * errorLine = 0, int * errorColumn = 0 ) + + + setContent + setContent-4 + ( const QString & text, QString * errorMsg = 0, int * errorLine = 0, int * errorColumn = 0 ) + + + setContent + setContent-5 + ( const QByteArray & buffer, QString * errorMsg = 0, int * errorLine = 0, int * errorColumn = 0 ) + + + setContent + setContent-6 + ( QIODevice * dev, QString * errorMsg = 0, int * errorLine = 0, int * errorColumn = 0 ) + + + setContent + setContent-7 + ( QXmlInputSource * source, QXmlReader * reader, QString * errorMsg = 0, int * errorLine = 0, int * errorColumn = 0 ) + + + toByteArray + toByteArray + ( int indent = 1 ) + + + toString + toString + ( int indent = 1 ) + + + operator= + operator-eq + ( const QDomDocument & x ) + + + + QDomDocumentType + qdomdocumenttype.html + + QDomDocumentType + QDomDocumentType + () + + + QDomDocumentType + QDomDocumentType-2 + ( const QDomDocumentType & n ) + + + entities + entities + () + + + internalSubset + internalSubset + () + + + name + name + () + + + NodeType + nodeType + QDomDocumentType::nodeType() + + + notations + notations + () + + + publicId + publicId + () + + + systemId + systemId + () + + + operator= + operator-eq + ( const QDomDocumentType & n ) + + + + QDomElement + qdomelement.html + + QDomElement + QDomElement + () + + + QDomElement + QDomElement-2 + ( const QDomElement & x ) + + + attribute + attributex + ( const QString & name, const QString & defValue = QString() + + + attributeNS + attributeNS + ( const QString nsURI, const QString & localName, const QString & defValue = QString() + + + attributeNode + attributeNode + ( const QString & name ) + + + attributeNodeNS + attributeNodeNS + ( const QString & nsURI, const QString & localName ) + + + attributes + attributes + () + + + elementsByTagName + elementsByTagName + ( const QString & tagname ) + + + elementsByTagNameNS + elementsByTagNameNS + ( const QString & nsURI, const QString & localName ) + + + hasAttribute + hasAttribute + ( const QString & name ) + + + hasAttributeNS + hasAttributeNS + ( const QString & nsURI, const QString & localName ) + + + NodeType + nodeType + QDomElement::nodeType() + + + removeAttribute + removeAttribute + ( const QString & name ) + + + removeAttributeNS + removeAttributeNS + ( const QString & nsURI, const QString & localName ) + + + removeAttributeNode + removeAttributeNode + ( const QDomAttr & oldAttr ) + + + setAttribute + setAttribute + ( const QString & name, const QString & value ) + + + setAttribute + setAttribute-2 + ( const QString & name, int value ) + + + setAttribute + setAttribute-3 + ( const QString & name, uint value ) + + + setAttribute + setAttribute-4 + ( const QString & name, qlonglong value ) + + + setAttribute + setAttribute-5 + ( const QString & name, qulonglong value ) + + + setAttribute + setAttribute-6 + ( const QString & name, float value ) + + + setAttribute + setAttribute-7 + ( const QString & name, double value ) + + + setAttributeNS + setAttributeNS + ( const QString nsURI, const QString & qName, const QString & value ) + + + setAttributeNS + setAttributeNS-2 + ( const QString nsURI, const QString & qName, int value ) + + + setAttributeNS + setAttributeNS-3 + ( const QString nsURI, const QString & qName, uint value ) + + + setAttributeNS + setAttributeNS-4 + ( const QString nsURI, const QString & qName, qlonglong value ) + + + setAttributeNS + setAttributeNS-5 + ( const QString nsURI, const QString & qName, qulonglong value ) + + + setAttributeNS + setAttributeNS-6 + ( const QString nsURI, const QString & qName, double value ) + + + setAttributeNode + setAttributeNode + ( const QDomAttr & newAttr ) + + + setAttributeNodeNS + setAttributeNodeNS + ( const QDomAttr & newAttr ) + + + setTagName + setTagName + ( const QString & name ) + + + tagName + tagName + () + + + text + text + () + + + operator= + operator-eq + ( const QDomElement & x ) + + + + QDomEntity + qdomentity.html + + QDomEntity + QDomEntity + () + + + QDomEntity + QDomEntity-2 + ( const QDomEntity & x ) + + + NodeType + nodeType + QDomEntity::nodeType() + + + notationName + notationName + () + + + publicId + publicId + () + + + systemId + systemId + () + + + operator= + operator-eq + ( const QDomEntity & x ) + + + + QDomEntityReference + qdomentityreference.html + + QDomEntityReference + QDomEntityReference + () + + + QDomEntityReference + QDomEntityReference-2 + ( const QDomEntityReference & x ) + + + NodeType + nodeType + QDomEntityReference::nodeType() + + + operator= + operator-eq + ( const QDomEntityReference & x ) + + + + QDomImplementation + qdomimplementation.html + + InvalidDataPolicy + InvalidDataPolicy-enum + + + + QDomImplementation + QDomImplementation + () + + + QDomImplementation + QDomImplementation-2 + ( const QDomImplementation & x ) + + + createDocument + createDocument + ( const QString & nsURI, const QString & qName, const QDomDocumentType & doctype ) + + + createDocumentType + createDocumentType + ( const QString & qName, const QString & publicId, const QString & systemId ) + + + hasFeature + hasFeature + ( const QString & feature, const QString & version ) + + + invalidDataPolicy + invalidDataPolicy + () + + + isNull + isNull + () + + + setInvalidDataPolicy + setInvalidDataPolicy + ( InvalidDataPolicy policy ) + + + operator!= + operator-not-eq + ( const QDomImplementation & x ) + + + operator= + operator-eq + ( const QDomImplementation & x ) + + + operator== + operator-eq-eq + ( const QDomImplementation & x ) + + + + QDomNamedNodeMap + qdomnamednodemap.html + + QDomNamedNodeMap + QDomNamedNodeMap + () + + + QDomNamedNodeMap + QDomNamedNodeMap-2 + ( const QDomNamedNodeMap & n ) + + + contains + contains + ( const QString & name ) + + + count + count + () + + + isEmpty + isEmpty + () + + + item + item + ( int index ) + + + length + length + () + + + namedItem + namedItem + ( const QString & name ) + + + namedItemNS + namedItemNS + ( const QString & nsURI, const QString & localName ) + + + removeNamedItem + removeNamedItem + ( const QString & name ) + + + removeNamedItemNS + removeNamedItemNS + ( const QString & nsURI, const QString & localName ) + + + setNamedItem + setNamedItem + ( const QDomNode & newNode ) + + + setNamedItemNS + setNamedItemNS + ( const QDomNode & newNode ) + + + size + size + () + + + operator!= + operator-not-eq + ( const QDomNamedNodeMap & n ) + + + operator= + operator-eq + ( const QDomNamedNodeMap & n ) + + + operator== + operator-eq-eq + ( const QDomNamedNodeMap & n ) + + + + QDomNode + qdomnode.html + + NodeType + NodeType-enum + + + + QDomNode + QDomNode + () + + + QDomNode + QDomNode-2 + ( const QDomNode & n ) + + + appendChild + appendChild + ( const QDomNode & newChild ) + + + attributes + attributes + () + + + childNodes + childNodes + () + + + clear + clear + () + + + cloneNode + cloneNode + ( bool deep = true ) + + + columnNumber + columnNumber + () + + + firstChild + firstChild + () + + + firstChildElement + firstChildElement + ( const QString & tagName = QString() + + + hasAttributes + hasAttributes + () + + + hasChildNodes + hasChildNodes + () + + + insertAfter + insertAfter + ( const QDomNode & newChild, const QDomNode & refChild ) + + + insertBefore + insertBefore + ( const QDomNode & newChild, const QDomNode & refChild ) + + + isAttr + isAttr + () + + + isCDATASection + isCDATASection + () + + + isCharacterData + isCharacterData + () + + + isComment + isComment + () + + + isDocument + isDocument + () + + + isDocumentFragment + isDocumentFragment + () + + + isDocumentType + isDocumentType + () + + + isElement + isElement + () + + + isEntity + isEntity + () + + + isEntityReference + isEntityReference + () + + + isNotation + isNotation + () + + + isNull + isNull + () + + + isProcessingInstruction + isProcessingInstruction + () + + + isSupported + isSupported + ( const QString & feature, const QString & version ) + + + isText + isText + () + + + lastChild + lastChild + () + + + lastChildElement + lastChildElement + ( const QString & tagName = QString() + + + lineNumber + lineNumber + () + + + localName + localName + () + + + namedItem + namedItem + ( const QString & name ) + + + namespaceURI + namespaceURI + () + + + nextSibling + nextSibling + () + + + nextSiblingElement + nextSiblingElement + ( const QString & tagName = QString() + + + nodeName + nodeName + () + + + nodeType + nodeType + () + + + nodeValue + nodeValue + () + + + normalize + normalize + () + + + ownerDocument + ownerDocument + () + + + parentNode + parentNode + () + + + prefix + prefix + () + + + previousSibling + previousSibling + () + + + previousSiblingElement + previousSiblingElement + ( const QString & tagName = QString() + + + removeChild + removeChild + ( const QDomNode & oldChild ) + + + replaceChild + replaceChild + ( const QDomNode & newChild, const QDomNode & oldChild ) + + + save + save + ( QTextStream & str, int indent ) + + + setNodeValue + setNodeValue + ( const QString & v ) + + + setPrefix + setPrefix + ( const QString & pre ) + + + toAttr + toAttr + () + + + toCDATASection + toCDATASection + () + + + toCharacterData + toCharacterData + () + + + toComment + toComment + () + + + toDocument + toDocument + () + + + toDocumentFragment + toDocumentFragment + () + + + toDocumentType + toDocumentType + () + + + toElement + toElement + () + + + toEntity + toEntity + () + + + toEntityReference + toEntityReference + () + + + toNotation + toNotation + () + + + toProcessingInstruction + toProcessingInstruction + () + + + toText + toText + () + + + operator!= + operator-not-eq + ( const QDomNode & n ) + + + operator= + operator-eq + ( const QDomNode & n ) + + + operator== + operator-eq-eq + ( const QDomNode & n ) + + + + QDomNodeList + qdomnodelist.html + + QDomNodeList + QDomNodeList + () + + + QDomNodeList + QDomNodeList-2 + ( const QDomNodeList & n ) + + + at + at + ( int index ) + + + count + count + () + + + isEmpty + isEmpty + () + + + item + item + ( int index ) + + + length + length + () + + + size + size + () + + + operator!= + operator-not-eq + ( const QDomNodeList & n ) + + + operator= + operator-eq + ( const QDomNodeList & n ) + + + operator== + operator-eq-eq + ( const QDomNodeList & n ) + + + + QDomNotation + qdomnotation.html + + QDomNotation + QDomNotation + () + + + QDomNotation + QDomNotation-2 + ( const QDomNotation & x ) + + + NodeType + nodeType + QDomNotation::nodeType() + + + publicId + publicId + () + + + systemId + systemId + () + + + operator= + operator-eq + ( const QDomNotation & x ) + + + + QDomProcessingInstruction + qdomprocessinginstruction.html + + QDomProcessingInstruction + QDomProcessingInstruction + () + + + QDomProcessingInstruction + QDomProcessingInstruction-2 + ( const QDomProcessingInstruction & x ) + + + data + data + () + + + NodeType + nodeType + QDomProcessingInstruction::nodeType() + + + setData + setData + ( const QString & d ) + + + target + target + () + + + operator= + operator-eq + ( const QDomProcessingInstruction & x ) + + + + QDomText + qdomtext.html + + QDomText + QDomText + () + + + QDomText + QDomText-2 + ( const QDomText & x ) + + + NodeType + nodeType + QDomText::nodeType() + + + splitText + splitText + ( int offset ) + + + operator= + operator-eq + ( const QDomText & x ) + + + + QDoubleSpinBox + qdoublespinbox.html + + QDoubleSpinBox + QDoubleSpinBox + ( QWidget * parent = 0 ) + + + setRange + setRange + ( double min, double max ) + + + textFromValue + textFromValue + ( double v ) + + + valueChanged + valueChanged + ( double d ) + + + valueChanged + valueChanged-2 + ( const QString & text ) + + + valueFromText + valueFromText + ( const QString & text ) + + + + QDoubleValidator + qdoublevalidator.html + + QDoubleValidator + QDoubleValidator + ( QObject * parent ) + + + QDoubleValidator + QDoubleValidator-2 + ( double bottom, double top, int decimals, QObject * parent ) + + + setRange + setRange + ( double minimum, double maximum, int decimals = 0 ) + + + State + validate + QDoubleValidator::validate( QString & input, int & pos ) + + + QDoubleValidator + QDoubleValidator-3 + ( QObject * parent, const char * name ) + + + QDoubleValidator + QDoubleValidator-4 + ( double bottom, double top, int decimals, QObject * parent, const char * name ) + + + + QDragEnterEvent + qdragenterevent.html + + QDragEnterEvent + QDragEnterEvent + ( const QPoint & point, Qt::DropActions actions, const QMimeData * data, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers ) + + + + QDrag + qdrag.html + + QDrag + QDrag + ( QWidget * dragSource ) + + + actionChanged + actionChanged + ( Qt::DropAction action ) + + + hotSpot + hotSpot + () + + + mimeData + mimeData + () + + + pixmap + pixmap + () + + + setDragCursor + setDragCursor + ( const QPixmap & cursor, Qt::DropAction action ) + + + setHotSpot + setHotSpot + ( const QPoint & hotspot ) + + + setMimeData + setMimeData + ( QMimeData * data ) + + + setPixmap + setPixmap + ( const QPixmap & pixmap ) + + + source + source + () + + + DropAction + start + QDrag::start( Qt::DropActions request = Qt::CopyAction ) + + + target + target + () + + + targetChanged + targetChanged + ( QWidget * newTarget ) + + + + QDragLeaveEvent + qdragleaveevent.html + + QDragLeaveEvent + QDragLeaveEvent + () + + + + QDragMoveEvent + qdragmoveevent.html + + QDragMoveEvent + QDragMoveEvent + ( const QPoint & pos, Qt::DropActions actions, const QMimeData * data, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Type type = DragMove ) + + + accept + accept + ( const QRect & rectangle ) + + + accept + accept-3 + () + + + answerRect + answerRect + () + + + ignore + ignore + ( const QRect & rectangle ) + + + ignore + ignore-2 + () + + + accept + accept-2 + ( bool y ) + + + + QDropEvent + qdropevent.html + + QDropEvent + QDropEvent + ( const QPoint & pos, Qt::DropActions actions, const QMimeData * data, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Type type = Drop ) + + + acceptProposedAction + acceptProposedAction + () + + + DropAction + dropAction + QDropEvent::dropAction() + + + KeyboardModifiers + keyboardModifiers + QDropEvent::keyboardModifiers() + + + mimeData + mimeData + () + + + MouseButtons + mouseButtons + QDropEvent::mouseButtons() + + + pos + pos + () + + + DropActions + possibleActions + QDropEvent::possibleActions() + + + DropAction + proposedAction + QDropEvent::proposedAction() + + + setDropAction + setDropAction + ( Qt::DropAction action ) + + + source + source + () + + + Action + Action-enum + + + + accept + accept-2 + ( bool accept ) + + + acceptAction + acceptAction + ( bool accept = true ) + + + action + action + () + + + data + data + ( const char * f ) + + + encodedData + encodedData + ( const char * format ) + + + format + format + ( int n = 0 ) + + + provides + provides + ( const char * mimeType ) + + + setPoint + setPoint + ( const QPoint & point ) + + + + QErrorMessage + qerrormessage.html + + QErrorMessage + QErrorMessage + ( QWidget * parent = 0 ) + + + qtHandler + qtHandler + () + + + showMessage + showMessage + ( const QString & message ) + + + message + message + ( const QString & message ) + + + + QEvent + qevent.html + + Type + Type-enum + + + + QEvent + QEvent + ( Type type ) + + + accept + accept + () + + + ignore + ignore + () + + + spontaneous + spontaneous + () + + + type + type + () + + + + QEventLoop + qeventloop.html + + QEventLoop + QEventLoop + ( QObject * parent = 0 ) + + + exec + exec + ( ProcessEventsFlags flags = AllEvents ) + + + exit + exit + ( int returnCode = 0 ) + + + isRunning + isRunning + () + + + processEvents + processEvents + ( ProcessEventsFlags flags = AllEvents ) + + + processEvents + processEvents-2 + ( ProcessEventsFlags flags, int maxTime ) + + + quit + quit + () + + + wakeUp + wakeUp + () + + + + QExtensionFactory + qextensionfactory.html + + QExtensionFactory + QExtensionFactory + ( QExtensionManager * parent = 0 ) + + + createExtension + createExtension + ( QObject * object, const QString & iid, QObject * parent ) + + + extension + extension + ( QObject * object, const QString & iid ) + + + extensionManager + extensionManager + () + + + + QExtensionManager + qextensionmanager.html + + QExtensionManager + QExtensionManager + ( QObject * parent = 0 ) + + + extension + extension + ( QObject * object, const QString & iid ) + + + registerExtensions + registerExtensions + ( QAbstractExtensionFactory * factory, const QString & iid = QString() + + + unregisterExtensions + unregisterExtensions + ( QAbstractExtensionFactory * factory, const QString & iid = QString() + + + + QFileDialog + qfiledialog.html + + AcceptMode + AcceptMode-enum + + + + DialogLabel + DialogLabel-enum + + + + FileMode + FileMode-enum + + + + Mode + Mode-typedef + + + + ViewMode + ViewMode-enum + + + + QFileDialog + QFileDialog + ( QWidget * parent, Qt::WFlags flags ) + + + QFileDialog + QFileDialog-2 + ( QWidget * parent = 0, const QString & caption = QString() + + + currentChanged + currentChanged + ( const QString & path ) + + + directory + directory + () + + + filesSelected + filesSelected + ( const QStringList & selected ) + + + filters + filters + () + + + getExistingDirectory + getExistingDirectory + ( QWidget * parent = 0, const QString & caption = QString() + + + getOpenFileName + getOpenFileName + ( QWidget * parent = 0, const QString & caption = QString() + + + getOpenFileNames + getOpenFileNames + ( QWidget * parent = 0, const QString & caption = QString() + + + getSaveFileName + getSaveFileName + ( QWidget * parent = 0, const QString & caption = QString() + + + history + history + () + + + iconProvider + iconProvider + () + + + itemDelegate + itemDelegate + () + + + labelText + labelText + ( DialogLabel label ) + + + selectFile + selectFile + ( const QString & filename ) + + + selectFilter + selectFilter + ( const QString & filter ) + + + selectedFiles + selectedFiles + () + + + selectedFilter + selectedFilter + () + + + setDirectory + setDirectory + ( const QString & directory ) + + + setDirectory + setDirectory-2 + ( const QDir & directory ) + + + setFilter + setFilter + ( const QString & filter ) + + + setFilters + setFilters + ( const QStringList & filters ) + + + setHistory + setHistory + ( const QStringList & paths ) + + + setIconProvider + setIconProvider + ( QFileIconProvider * provider ) + + + setItemDelegate + setItemDelegate + ( QAbstractItemDelegate * delegate ) + + + setLabelText + setLabelText + ( DialogLabel label, const QString & text ) + + + getExistingDirectory + getExistingDirectory-2 + ( const QString & dir, QWidget * parent = 0, const char * name = 0, const QString & caption = QString() + + + getOpenFileName + getOpenFileName-2 + ( const QString & dir, const QString & filter = QString() + + + getOpenFileNames + getOpenFileNames-2 + ( const QString & filter, const QString & dir = QString() + + + getSaveFileName + getSaveFileName-2 + ( const QString & dir, const QString & filter = QString() + + + mode + mode + () + + + selectedFile + selectedFile + () + + + setDir + setDir + ( const QString & directory ) + + + setDir + setDir-2 + ( const QDir & directory ) + + + setMode + setMode + ( FileMode m ) + + + + QFile + qfile.html + + DecoderFn + DecoderFn-typedef + + + + EncoderFn + EncoderFn-typedef + + + + FileError + FileError-enum + + + + PermissionSpec + PermissionSpec-typedef + + + + QFile + QFile-2 + ( const QString & name ) + + + QFile + QFile-3 + ( QObject * parent ) + + + QFile + QFile-4 + ( const QString & name, QObject * parent ) + + + atEnd + atEnd + () + + + copy + copy + ( const QString & newName ) + + + copy + copy-2 + ( const QString & fileName, const QString & newName ) + + + decodeName + decodeName + ( const QByteArray & localFileName ) + + + decodeName + decodeName-2 + ( const char * localFileName ) + + + encodeName + encodeName + ( const QString & fileName ) + + + error + error + () + + + exists + exists + ( const QString & fileName ) + + + exists + exists-2 + () + + + fileName + fileName + () + + + flush + flush + () + + + handle + handle + () + + + isSequential + isSequential + () + + + link + link + ( const QString & linkName ) + + + link + link-2 + ( const QString & fileName, const QString & linkName ) + + + open + open + ( OpenMode mode ) + + + open + open-4 + ( FILE * fh, OpenMode mode ) + + + open + open-5 + ( int fd, OpenMode mode ) + + + permissions + permissions + () + + + permissions + permissions-2 + ( const QString & fileName ) + + + readLink + readLink + ( const QString & fileName ) + + + readLink + readLink-2 + () + + + remove + remove + () + + + remove + remove-2 + ( const QString & fileName ) + + + rename + rename + ( const QString & newName ) + + + rename + rename-2 + ( const QString & oldName, const QString & newName ) + + + resize + resize + ( qint64 sz ) + + + resize + resize-2 + ( const QString & fileName, qint64 sz ) + + + setDecodingFunction + setDecodingFunction + ( DecoderFn function ) + + + setEncodingFunction + setEncodingFunction + ( EncoderFn function ) + + + setFileName + setFileName + ( const QString & name ) + + + setPermissions + setPermissions + ( Permissions permissions ) + + + setPermissions + setPermissions-2 + ( const QString & fileName, Permissions permissions ) + + + size + size + () + + + unsetError + unsetError + () + + + + QFileIconProvider + qfileiconprovider.html + + IconType + IconType-enum + + + + QFileIconProvider + QFileIconProvider + () + + + icon + icon + ( IconType type ) + + + icon + icon-2 + ( const QFileInfo & info ) + + + type + type + ( const QFileInfo & info ) + + + + QFileInfo + qfileinfo.html + + QFileInfo + QFileInfo + () + + + QFileInfo + QFileInfo-2 + ( const QString & file ) + + + QFileInfo + QFileInfo-3 + ( const QFile & file ) + + + QFileInfo + QFileInfo-4 + ( const QDir & dir, const QString & file ) + + + QFileInfo + QFileInfo-5 + ( const QFileInfo & fileinfo ) + + + absoluteDir + absoluteDir + () + + + absoluteFilePath + absoluteFilePath + () + + + absolutePath + absolutePath + () + + + baseName + baseName + () + + + caching + caching + () + + + canonicalFilePath + canonicalFilePath + () + + + canonicalPath + canonicalPath + () + + + completeBaseName + completeBaseName + () + + + completeSuffix + completeSuffix + () + + + created + created + () + + + dir + dir + () + + + exists + exists + () + + + fileName + fileName + () + + + filePath + filePath + () + + + group + group + () + + + groupId + groupId + () + + + isAbsolute + isAbsolute + () + + + isDir + isDir + () + + + isExecutable + isExecutable + () + + + isFile + isFile + () + + + isHidden + isHidden + () + + + isReadable + isReadable + () + + + isRelative + isRelative + () + + + isRoot + isRoot + () + + + isSymLink + isSymLink + () + + + isWritable + isWritable + () + + + lastModified + lastModified + () + + + lastRead + lastRead + () + + + makeAbsolute + makeAbsolute + () + + + owner + owner + () + + + ownerId + ownerId + () + + + path + path + () + + + permission + permission + ( QFile::Permissions permissions ) + + + Permissions + permissions + QFileInfo::permissions() + + + readLink + readLink + () + + + refresh + refresh + () + + + setCaching + setCaching + ( bool enable ) + + + setFile + setFile + ( const QString & file ) + + + setFile + setFile-2 + ( const QFile & file ) + + + setFile + setFile-3 + ( const QDir & dir, const QString & file ) + + + size + size + () + + + suffix + suffix + () + + + operator!= + operator-not-eq + ( const QFileInfo & fileinfo ) + + + operator!= + operator-not-eq-2 + ( const QFileInfo & fileinfo ) + + + operator= + operator-eq + ( const QFileInfo & fileinfo ) + + + operator== + operator-eq-eq + ( const QFileInfo & fileinfo ) + + + operator== + operator-eq-eq-2 + ( const QFileInfo & fileinfo ) + + + absFilePath + absFilePath + () + + + baseName + baseName-2 + ( bool complete ) + + + convertToAbs + convertToAbs + () + + + dir + dir-2 + ( bool absPath ) + + + dirPath + dirPath + ( bool absPath = false ) + + + extension + extension + ( bool complete = true ) + + + permission + permission-2 + ( PermissionSpec permissions ) + + + + QFileOpenEvent + qfileopenevent.html + + file + file + () + + + name + name + () + + + open + open-2 + ( OpenMode flags, FILE * f ) + + + open + open-3 + ( OpenMode flags, int fd ) + + + setName + setName + ( const QString & name ) + + + + QFlag + qflag.html + + QFlag + QFlag + ( int value ) + + + operator + operator-int + int() + + + + QFlags + qflags.html + + enum_type + enum_type-typedef + + + + QFlags + QFlags + ( const QFlags & other ) + + + QFlags + QFlags-2 + ( Enum flag ) + + + QFlags + QFlags-3 + ( Zero zero = 0 ) + + + QFlags + QFlags-4 + ( QFlag value ) + + + operator + operator-int + int() + + + operator! + operator-not + () + + + operator& + operator-and + amp;( int mask ) + + + operator& + operator-and-2 + amp;( uint mask ) + + + operator& + operator-and-3 + amp;( Enum mask ) + + + operator& + operator-and-eq + amp;=( int mask ) + + + operator& + operator-and-eq-2 + amp;=( uint mask ) + + + operator= + operator-eq + ( const QFlags & other ) + + + operator^ + operator-5e + ( QFlags other ) + + + operator^ + operator-5e-2 + ( Enum other ) + + + operator^= + operator-5e-eq + ( QFlags other ) + + + operator^= + operator-5e-eq-2 + ( Enum other ) + + + operator| + operator-7c + ( QFlags other ) + + + operator| + operator-7c-2 + ( Enum other ) + + + operator|= + operator-7c-eq + ( QFlags other ) + + + operator|= + operator-7c-eq-2 + ( Enum other ) + + + operator~ + operator-7e + () + + + + QFocusEvent + qfocusevent.html + + QFocusEvent + QFocusEvent + ( Type type, Qt::FocusReason reason = Qt::OtherFocusReason ) + + + gotFocus + gotFocus + () + + + lostFocus + lostFocus + () + + + FocusReason + reason + QFocusEvent::reason() + + + Reason + Reason-enum + + + + + QFocusFrame + qfocusframe.html + + QFocusFrame + QFocusFrame + ( QWidget * parent = 0 ) + + + setWidget + setWidget + ( QWidget * widget ) + + + widget + widget + () + + + + QFontDatabase + qfontdatabase.html + + WritingSystem + WritingSystem-enum + + + + QFontDatabase + QFontDatabase + () + + + bold + bold + ( const QString & family, const QString & style ) + + + families + families + ( WritingSystem writingSystem = Any ) + + + font + font + ( const QString & family, const QString & style, int pointSize ) + + + isBitmapScalable + isBitmapScalable + ( const QString & family, const QString & style = QString() + + + isFixedPitch + isFixedPitch + ( const QString & family, const QString & style = QString() + + + isScalable + isScalable + ( const QString & family, const QString & style = QString() + + + isSmoothlyScalable + isSmoothlyScalable + ( const QString & family, const QString & style = QString() + + + italic + italic + ( const QString & family, const QString & style ) + + + pointSizes + pointSizes + ( const QString & family, const QString & style = QString() + + + smoothSizes + smoothSizes + ( const QString & family, const QString & style ) + + + standardSizes + standardSizes + () + + + styleString + styleString + ( const QFont & font ) + + + styleString + styleString-2 + ( const QFontInfo & fontInfo ) + + + styles + styles + ( const QString & family ) + + + weight + weight + ( const QString & family, const QString & style ) + + + writingSystemName + writingSystemName + ( WritingSystem writingSystem ) + + + writingSystemSample + writingSystemSample + ( WritingSystem writingSystem ) + + + writingSystems + writingSystems + () + + + + QFontDialog + qfontdialog.html + + getFont + getFont + ( bool * ok, const QFont & initial, QWidget * parent = 0 ) + + + getFont + getFont-2 + ( bool * ok, const QFont & def, QWidget * parent, const char * name ) + + + getFont + getFont-3 + ( bool * ok, QWidget * parent, const char * name ) + + + getFont + getFont-5 + ( bool * ok, QWidget * parent = 0 ) + + + + QFont + qfont.html + + Stretch + Stretch-enum + + + + Style + Style-enum + + + + StyleHint + StyleHint-enum + + + + StyleStrategy + StyleStrategy-enum + + + + Weight + Weight-enum + + + + QFont + QFont + () + + + QFont + QFont-2 + ( const QString & family, int pointSize = -1, int weight = -1, bool italic = false ) + + + QFont + QFont-3 + ( const QFont & font, QPaintDevice * pd ) + + + QFont + QFont-4 + ( const QFont & font ) + + + bold + bold + () + + + defaultFamily + defaultFamily + () + + + exactMatch + exactMatch + () + + + family + family + () + + + fixedPitch + fixedPitch + () + + + fromString + fromString + ( const QString & descrip ) + + + handle + handle + () + + + insertSubstitution + insertSubstitution + ( const QString & familyName, const QString & substituteName ) + + + insertSubstitutions + insertSubstitutions + ( const QString & familyName, const QStringList & substituteNames ) + + + isCopyOf + isCopyOf + ( const QFont & f ) + + + italic + italic + () + + + kerning + kerning + () + + + key + key + () + + + lastResortFamily + lastResortFamily + () + + + lastResortFont + lastResortFont + () + + + overline + overline + () + + + pixelSize + pixelSize + () + + + pointSize + pointSize + () + + + pointSizeF + pointSizeF + () + + + rawMode + rawMode + () + + + rawName + rawName + () + + + removeSubstitution + removeSubstitution + ( const QString & familyName ) + + + resolve + resolve + ( const QFont & other ) + + + setBold + setBold + ( bool enable ) + + + setFamily + setFamily + ( const QString & family ) + + + setFixedPitch + setFixedPitch + ( bool enable ) + + + setItalic + setItalic + ( bool enable ) + + + setKerning + setKerning + ( bool enable ) + + + setOverline + setOverline + ( bool enable ) + + + setPixelSize + setPixelSize + ( int pixelSize ) + + + setPointSize + setPointSize + ( int pointSize ) + + + setPointSizeF + setPointSizeF + ( qreal pointSize ) + + + setRawMode + setRawMode + ( bool enable ) + + + setRawName + setRawName + ( const QString & name ) + + + setStretch + setStretch + ( int factor ) + + + setStrikeOut + setStrikeOut + ( bool enable ) + + + setStyle + setStyle + ( Style style ) + + + setStyleHint + setStyleHint + ( StyleHint hint, StyleStrategy strategy = PreferDefault ) + + + setStyleStrategy + setStyleStrategy + ( StyleStrategy s ) + + + setUnderline + setUnderline + ( bool enable ) + + + setWeight + setWeight + ( int weight ) + + + stretch + stretch + () + + + strikeOut + strikeOut + () + + + style + style + () + + + styleHint + styleHint + () + + + styleStrategy + styleStrategy + () + + + substitute + substitute + ( const QString & familyName ) + + + substitutes + substitutes + ( const QString & familyName ) + + + substitutions + substitutions + () + + + toString + toString + () + + + underline + underline + () + + + weight + weight + () + + + operator + operator-QVariant + QVariant() + + + operator!= + operator-not-eq + ( const QFont & f ) + + + operator< + operator-lt + ( const QFont & f ) + + + operator= + operator-eq + ( const QFont & font ) + + + operator== + operator-eq-eq + ( const QFont & f ) + + + + QFontInfo + qfontinfo.html + + QFontInfo + QFontInfo + ( const QFont & font ) + + + QFontInfo + QFontInfo-2 + ( const QFontInfo & fi ) + + + bold + bold + () + + + exactMatch + exactMatch + () + + + family + family + () + + + fixedPitch + fixedPitch + () + + + italic + italic + () + + + pixelSize + pixelSize + () + + + pointSize + pointSize + () + + + pointSizeF + pointSizeF + () + + + rawMode + rawMode + () + + + Style + style + QFontInfo::style() + + + StyleHint + styleHint + QFontInfo::styleHint() + + + weight + weight + () + + + operator= + operator-eq + ( const QFontInfo & fi ) + + + + QFontMetricsF + qfontmetricsf.html + + QFontMetricsF + QFontMetricsF + ( const QFont & font ) + + + QFontMetricsF + QFontMetricsF-2 + ( const QFont & font, QPaintDevice * paintdevice ) + + + QFontMetricsF + QFontMetricsF-3 + ( const QFontMetricsF & fm ) + + + ascent + ascent + () + + + boundingRect + boundingRect + ( const QString & text ) + + + boundingRect + boundingRect-2 + ( QChar ch ) + + + boundingRect + boundingRect-3 + ( const QRectF & rect, int flags, const QString & text, int tabstops = 0, int * tabarray = 0 ) + + + descent + descent + () + + + height + height + () + + + inFont + inFont + ( QChar ch ) + + + leading + leading + () + + + leftBearing + leftBearing + ( QChar ch ) + + + lineSpacing + lineSpacing + () + + + lineWidth + lineWidth + () + + + maxWidth + maxWidth + () + + + minLeftBearing + minLeftBearing + () + + + minRightBearing + minRightBearing + () + + + overlinePos + overlinePos + () + + + rightBearing + rightBearing + ( QChar ch ) + + + size + size + ( int flags, const QString & text, int tabstops = 0, int * tabarray = 0 ) + + + strikeOutPos + strikeOutPos + () + + + underlinePos + underlinePos + () + + + width + width + ( const QString & text ) + + + width + width-2 + ( QChar ch ) + + + xHeight + xHeight + () + + + operator!= + operator-not-eq + ( const QFontMetricsF & other ) + + + operator!= + operator-not-eq-2 + ( const QFontMetricsF & other ) + + + operator= + operator-eq + ( const QFontMetricsF & fm ) + + + operator== + operator-eq-eq + ( const QFontMetricsF & other ) + + + operator== + operator-eq-eq-2 + ( const QFontMetricsF & other ) + + + + QFontMetrics + qfontmetrics.html + + QFontMetrics + QFontMetrics + ( const QFont & font ) + + + QFontMetrics + QFontMetrics-2 + ( const QFont & font, QPaintDevice * paintdevice ) + + + QFontMetrics + QFontMetrics-3 + ( const QFontMetrics & fm ) + + + ascent + ascent + () + + + boundingRect + boundingRect + ( QChar ch ) + + + boundingRect + boundingRect-2 + ( const QString & str ) + + + boundingRect + boundingRect-5 + ( int x, int y, int width, int height, int flags, const QString & text, int tabstops = 0, int * tabarray = 0 ) + + + boundingRect + boundingRect-6 + ( const QRect & r, int flgs, const QString & str, int tabstops = 0, int * tabarray = 0 ) + + + charWidth + charWidth + ( const QString & str, int pos ) + + + descent + descent + () + + + height + height + () + + + inFont + inFont + ( QChar ch ) + + + leading + leading + () + + + leftBearing + leftBearing + ( QChar ch ) + + + lineSpacing + lineSpacing + () + + + lineWidth + lineWidth + () + + + maxWidth + maxWidth + () + + + minLeftBearing + minLeftBearing + () + + + minRightBearing + minRightBearing + () + + + overlinePos + overlinePos + () + + + rightBearing + rightBearing + ( QChar ch ) + + + size + size + ( int flgs, const QString & text, int tabstops = 0, int * tabarray = 0 ) + + + strikeOutPos + strikeOutPos + () + + + underlinePos + underlinePos + () + + + width + width + ( const QString & str, int len = -1 ) + + + width + width-2 + ( QChar ch ) + + + xHeight + xHeight + () + + + operator!= + operator-not-eq + ( const QFontMetrics & other ) + + + operator= + operator-eq + ( const QFontMetrics & fm ) + + + operator== + operator-eq-eq + ( const QFontMetrics & other ) + + + operator== + operator-eq-eq-2 + ( const QFontMetrics & other ) + + + boundingRect + boundingRect-3 + ( const QString & text, int len ) + + + boundingRect + boundingRect-4 + ( int x, int y, int w, int h, int flags, const QString & str, int len, int tabstops = 0, int * tabarray = 0 ) + + + size + size-2 + ( int flags, const QString & str, int len, int tabstops = 0, int * tabarray = 0 ) + + + defaultFont + defaultFont + () + + + pointSizeFloat + pointSizeFloat + () + + + setDefaultFont + setDefaultFont + ( const QFont & f ) + + + setPixelSizeFloat + setPixelSizeFloat + ( qreal pixelSize ) + + + setPointSizeFloat + setPointSizeFloat + ( qreal size ) + + + + QFormBuilder + qformbuilder.html + + QFormBuilder + QFormBuilder + () + + + addPluginPath + addPluginPath + ( const QString & pluginPath ) + + + clearPluginPaths + clearPluginPaths + () + + + customWidgets + customWidgets + () + + + pluginPaths + pluginPaths + () + + + setPluginPath + setPluginPath + ( const QStringList & pluginPaths ) + + + + QFrame + qframe.html + + Shadow + Shadow-enum + + + + Shape + Shape-enum + + + + QFrame + QFrame + ( QWidget * parent = 0, Qt::WFlags f = 0 ) + + + frameStyle + frameStyle + () + + + setFrameStyle + setFrameStyle + ( int style ) + + + Shadow_Mask + Shadow_Mask-var + + + + Shape_Mask + Shape_Mask-var + + + + QFrame + QFrame-2 + ( QWidget * parent, const char * name, Qt::WFlags f = 0 ) + + + + QFSFileEngine + qfsfileengine.html + + QFSFileEngine + QFSFileEngine + () + + + QFSFileEngine + QFSFileEngine-2 + ( const QString & file ) + + + currentPath + currentPath + ( const QString & fileName = QString() + + + drives + drives + () + + + fileFlags + fileFlags + ( FileFlags type ) + + + fileName + fileName + ( QAbstractFileEngine::FileName file ) + + + homePath + homePath + () + + + open + open-2 + ( QIODevice::OpenMode flags, FILE * fh ) + + + open + open-3 + ( QIODevice::OpenMode flags, int fd ) + + + ownerId + ownerId + ( QAbstractFileEngine::FileOwner ) + + + rootPath + rootPath + () + + + setCurrentPath + setCurrentPath + ( const QString & path ) + + + tempPath + tempPath + () + + + + QFtp + qftp.html + + Command + Command-enum + + + + Error + Error-enum + + + + State + State-enum + + + + TransferMode + TransferMode-enum + + + + TransferType + TransferType-enum + + + + QFtp + QFtp + ( QObject * parent = 0 ) + + + abort + abort + () + + + bytesAvailable + bytesAvailable + () + + + cd + cd + ( const QString & dir ) + + + clearPendingCommands + clearPendingCommands + () + + + close + close + () + + + commandFinished + commandFinished + ( int id, bool error ) + + + commandStarted + commandStarted + ( int id ) + + + connectToHost + connectToHost + ( const QString & host, quint16 port = 21 ) + + + currentCommand + currentCommand + () + + + currentDevice + currentDevice + () + + + currentId + currentId + () + + + dataTransferProgress + dataTransferProgress + ( qint64 done, qint64 total ) + + + done + done + ( bool error ) + + + error + error + () + + + errorString + errorString + () + + + get + get + ( const QString & file, QIODevice * dev = 0, TransferType type = Binary ) + + + hasPendingCommands + hasPendingCommands + () + + + list + list + ( const QString & dir = QString() + + + listInfo + listInfo + ( const QUrlInfo & i ) + + + login + login + ( const QString & user = QString() + + + mkdir + mkdir + ( const QString & dir ) + + + put + put + ( QIODevice * dev, const QString & file, TransferType type = Binary ) + + + put + put-2 + ( const QByteArray & data, const QString & file, TransferType type = Binary ) + + + rawCommand + rawCommand + ( const QString & command ) + + + rawCommandReply + rawCommandReply + ( int replyCode, const QString & detail ) + + + read + read + ( char * data, qint64 maxlen ) + + + readAll + readAll + () + + + readyRead + readyRead + () + + + remove + remove + ( const QString & file ) + + + rename + rename + ( const QString & oldname, const QString & newname ) + + + rmdir + rmdir + ( const QString & dir ) + + + setProxy + setProxy + ( const QString & host, quint16 port ) + + + setTransferMode + setTransferMode + ( TransferMode mode ) + + + state + state + () + + + stateChanged + stateChanged + ( int state ) + + + QFtp + QFtp-2 + ( QObject * parent, const char * name ) + + + readBlock + readBlock + ( char * data, quint64 maxlen ) + + + + QGenericArgument + qgenericargument.html + + QGenericArgument + QGenericArgument + ( const char * name = 0, const void * data = 0 ) + + + data + data + () + + + name + name + () + + + + QGenericReturnArgument + qgenericreturnargument.html + + QGenericReturnArgument + QGenericReturnArgument + ( const char * name = 0, void * data = 0 ) + + + + QGLColormap + qglcolormap.html + + QGLColormap + QGLColormap + () + + + QGLColormap + QGLColormap-2 + ( const QGLColormap & map ) + + + entryColor + entryColor + ( int idx ) + + + entryRgb + entryRgb + ( int idx ) + + + find + find + ( QRgb color ) + + + findNearest + findNearest + ( QRgb color ) + + + isEmpty + isEmpty + () + + + setEntries + setEntries + ( int count, const QRgb * colors, int base = 0 ) + + + setEntry + setEntry + ( int idx, QRgb color ) + + + setEntry + setEntry-2 + ( int idx, const QColor & color ) + + + size + size + () + + + operator= + operator-eq + ( const QGLColormap & map ) + + + + QGLContext + qglcontext.html + + QGLContext + QGLContext + ( const QGLFormat & format, QPaintDevice * device ) + + + bindTexture + bindTexture + ( const QImage & image, GLenum target = GL_TEXTURE_2D, GLint format = GL_RGBA8 ) + + + bindTexture + bindTexture-2 + ( const QString & fileName ) + + + bindTexture + bindTexture-3 + ( const QPixmap & pixmap, GLenum target = GL_TEXTURE_2D, GLint format = GL_RGBA8 ) + + + chooseContext + chooseContext + ( const QGLContext * shareContext = 0 ) + + + chooseMacVisual + chooseMacVisual + ( GDHandle ) + + + choosePixelFormat + choosePixelFormat + ( void * dummyPfd, HDC pdc ) + + + chooseVisual + chooseVisual + () + + + create + create + ( const QGLContext * shareContext = 0 ) + + + currentContext + currentContext + () + + + deleteTexture + deleteTexture + ( GLuint id ) + + + device + device + () + + + deviceIsPixmap + deviceIsPixmap + () + + + doneCurrent + doneCurrent + () + + + format + format + () + + + generateFontDisplayLists + generateFontDisplayLists + ( const QFont & font, int listBase ) + + + getProcAddress + getProcAddress + ( const QString & proc ) + + + initialized + initialized + () + + + isSharing + isSharing + () + + + isValid + isValid + () + + + makeCurrent + makeCurrent + () + + + overlayTransparentColor + overlayTransparentColor + () + + + requestedFormat + requestedFormat + () + + + reset + reset + () + + + setFormat + setFormat + ( const QGLFormat & format ) + + + setInitialized + setInitialized + ( bool on ) + + + setTextureCacheLimit + setTextureCacheLimit + ( int size ) + + + setWindowCreated + setWindowCreated + ( bool on ) + + + swapBuffers + swapBuffers + () + + + textureCacheLimit + textureCacheLimit + () + + + windowCreated + windowCreated + () + + + + QGLFormat + qglformat.html + + QGLFormat + QGLFormat + () + + + QGLFormat + QGLFormat-2 + ( QGL::FormatOptions options, int plane = 0 ) + + + QGLFormat + QGLFormat-3 + ( const QGLFormat & other ) + + + accum + accum + () + + + accumBufferSize + accumBufferSize + () + + + alpha + alpha + () + + + alphaBufferSize + alphaBufferSize + () + + + defaultFormat + defaultFormat + () + + + defaultOverlayFormat + defaultOverlayFormat + () + + + depth + depth + () + + + depthBufferSize + depthBufferSize + () + + + directRendering + directRendering + () + + + doubleBuffer + doubleBuffer + () + + + hasOpenGL + hasOpenGL + () + + + hasOpenGLOverlays + hasOpenGLOverlays + () + + + hasOverlay + hasOverlay + () + + + plane + plane + () + + + rgba + rgba + () + + + sampleBuffers + sampleBuffers + () + + + samples + samples + () + + + setAccum + setAccum + ( bool enable ) + + + setAccumBufferSize + setAccumBufferSize + ( int size ) + + + setAlpha + setAlpha + ( bool enable ) + + + setAlphaBufferSize + setAlphaBufferSize + ( int size ) + + + setDefaultFormat + setDefaultFormat + ( const QGLFormat & f ) + + + setDefaultOverlayFormat + setDefaultOverlayFormat + ( const QGLFormat & f ) + + + setDepth + setDepth + ( bool enable ) + + + setDepthBufferSize + setDepthBufferSize + ( int size ) + + + setDirectRendering + setDirectRendering + ( bool enable ) + + + setDoubleBuffer + setDoubleBuffer + ( bool enable ) + + + setOption + setOption + ( QGL::FormatOptions opt ) + + + setOverlay + setOverlay + ( bool enable ) + + + setPlane + setPlane + ( int plane ) + + + setRgba + setRgba + ( bool enable ) + + + setSampleBuffers + setSampleBuffers + ( bool enable ) + + + setSamples + setSamples + ( int numSamples ) + + + setStencil + setStencil + ( bool enable ) + + + setStencilBufferSize + setStencilBufferSize + ( int size ) + + + setStereo + setStereo + ( bool enable ) + + + stencil + stencil + () + + + stencilBufferSize + stencilBufferSize + () + + + stereo + stereo + () + + + testOption + testOption + ( QGL::FormatOptions opt ) + + + operator= + operator-eq + ( const QGLFormat & other ) + + + + QGLPixelBuffer + qglpixelbuffer.html + + QGLPixelBuffer + QGLPixelBuffer + ( const QSize & size, const QGLFormat & format = QGLFormat::defaultFormat() + + + bindTexture + bindTexture + ( const QImage & image, GLenum target = GL_TEXTURE_2D ) + + + bindTexture + bindTexture-2 + ( const QPixmap & pixmap, GLenum target = GL_TEXTURE_2D ) + + + bindTexture + bindTexture-3 + ( const QString & fileName ) + + + bindToDynamicTexture + bindToDynamicTexture + ( GLuint texture_id ) + + + deleteTexture + deleteTexture + ( GLuint texture_id ) + + + doneCurrent + doneCurrent + () + + + format + format + () + + + generateDynamicTexture + generateDynamicTexture + () + + + HANDLE + handle + QGLPixelBuffer::handle() + + + hasOpenGLPbuffers + hasOpenGLPbuffers + () + + + isValid + isValid + () + + + makeCurrent + makeCurrent + () + + + releaseFromDynamicTexture + releaseFromDynamicTexture + () + + + size + size + () + + + toImage + toImage + () + + + updateDynamicTexture + updateDynamicTexture + ( GLuint texture_id ) + + + + QGLWidget + qglwidget.html + + QGLWidget + QGLWidget + ( QWidget * parent = 0, const QGLWidget * shareWidget = 0, Qt::WFlags f = 0 ) + + + QGLWidget + QGLWidget-2 + ( QGLContext * context, QWidget * parent = 0, const QGLWidget * shareWidget = 0, Qt::WFlags f = 0 ) + + + QGLWidget + QGLWidget-3 + ( const QGLFormat & format, QWidget * parent = 0, const QGLWidget * shareWidget = 0, Qt::WFlags f = 0 ) + + + autoBufferSwap + autoBufferSwap + () + + + bindTexture + bindTexture + ( const QImage & image, GLenum target = GL_TEXTURE_2D, GLint format = GL_RGBA8 ) + + + bindTexture + bindTexture-2 + ( const QPixmap & pixmap, GLenum target = GL_TEXTURE_2D, GLint format = GL_RGBA8 ) + + + bindTexture + bindTexture-3 + ( const QString & fileName ) + + + colormap + colormap + () + + + context + context + () + + + convertToGLFormat + convertToGLFormat + ( const QImage & img ) + + + deleteTexture + deleteTexture + ( GLuint id ) + + + doneCurrent + doneCurrent + () + + + doubleBuffer + doubleBuffer + () + + + fontDisplayListBase + fontDisplayListBase + ( const QFont & fnt, int listBase = 2000 ) + + + format + format + () + + + glDraw + glDraw + () + + + glInit + glInit + () + + + grabFrameBuffer + grabFrameBuffer + ( bool withAlpha = false ) + + + initializeGL + initializeGL + () + + + initializeOverlayGL + initializeOverlayGL + () + + + isSharing + isSharing + () + + + isValid + isValid + () + + + makeCurrent + makeCurrent + () + + + makeOverlayCurrent + makeOverlayCurrent + () + + + overlayContext + overlayContext + () + + + paintEvent + paintEvent + ( QPaintEvent * event ) + + + paintGL + paintGL + () + + + paintOverlayGL + paintOverlayGL + () + + + qglClearColor + qglClearColor + ( const QColor & c ) + + + qglColor + qglColor + ( const QColor & c ) + + + renderPixmap + renderPixmap + ( int w = 0, int h = 0, bool useContext = false ) + + + renderText + renderText + ( int x, int y, const QString & str, const QFont & fnt = QFont() + + + renderText + renderText-2 + ( double x, double y, double z, const QString & str, const QFont & fnt = QFont() + + + resizeEvent + resizeEvent + ( QResizeEvent * event ) + + + resizeGL + resizeGL + ( int width, int height ) + + + resizeOverlayGL + resizeOverlayGL + ( int width, int height ) + + + setAutoBufferSwap + setAutoBufferSwap + ( bool on ) + + + setColormap + setColormap + ( const QGLColormap & cmap ) + + + setMouseTracking + setMouseTracking + ( bool enable ) + + + swapBuffers + swapBuffers + () + + + updateGL + updateGL + () + + + updateOverlayGL + updateOverlayGL + () + + + setFormat + setFormat + ( const QGLFormat & format ) + + + QGLWidget + QGLWidget-4 + ( QWidget * parent, const char * name, const QGLWidget * shareWidget = 0, Qt::WFlags f = 0 ) + + + QGLWidget + QGLWidget-5 + ( const QGLFormat & format, QWidget * parent, const char * name, const QGLWidget * shareWidget = 0, Qt::WFlags f = 0 ) + + + QGLWidget + QGLWidget-6 + ( QGLContext * context, QWidget * parent, const char * name, const QGLWidget * shareWidget = 0, Qt::WFlags f = 0 ) + + + + QGradient + qgradient.html + + Spread + Spread-enum + + + + Type + Type-enum + + + + setColorAt + setColorAt + ( qreal position, const QColor & color ) + + + setSpread + setSpread + ( Spread method ) + + + setStops + setStops + ( const QGradientStops & stopPoints ) + + + spread + spread + () + + + stops + stops + () + + + type + type + () + + + operator== + operator-eq-eq + ( const QGradient & gradient ) + + + + QGridLayout + qgridlayout.html + + QGridLayout + QGridLayout + ( QWidget * parent ) + + + QGridLayout + QGridLayout-2 + () + + + addItem + addItem + ( QLayoutItem * item, int row, int column, int rowSpan = 1, int columnSpan = 1, Qt::Alignment alignment = 0 ) + + + addLayout + addLayout + ( QLayout * layout, int row, int column, Qt::Alignment alignment = 0 ) + + + addLayout + addLayout-2 + ( QLayout * layout, int row, int column, int rowSpan, int columnSpan, Qt::Alignment alignment = 0 ) + + + addWidget + addWidget + ( QWidget * widget, int row, int column, Qt::Alignment alignment = 0 ) + + + addWidget + addWidget-2 + ( QWidget * widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment alignment = 0 ) + + + cellRect + cellRect + ( int row, int column ) + + + columnCount + columnCount + () + + + columnMinimumWidth + columnMinimumWidth + ( int column ) + + + columnStretch + columnStretch + ( int column ) + + + getItemPosition + getItemPosition + ( int index, int * row, int * column, int * rowSpan, int * columnSpan ) + + + Corner + originCorner + QGridLayout::originCorner() + + + rowCount + rowCount + () + + + rowMinimumHeight + rowMinimumHeight + ( int row ) + + + rowStretch + rowStretch + ( int row ) + + + setColumnMinimumWidth + setColumnMinimumWidth + ( int column, int minSize ) + + + setColumnStretch + setColumnStretch + ( int column, int stretch ) + + + setOriginCorner + setOriginCorner + ( Qt::Corner corner ) + + + setRowMinimumHeight + setRowMinimumHeight + ( int row, int minSize ) + + + setRowStretch + setRowStretch + ( int row, int stretch ) + + + QGridLayout + QGridLayout-3 + ( QWidget * parent, int nRows, int nCols = 1, int margin = 0, int space = -1, const char * name = 0 ) + + + QGridLayout + QGridLayout-4 + ( int nRows, int nCols = 1, int spacing = -1, const char * name = 0 ) + + + QGridLayout + QGridLayout-5 + ( QLayout * parentLayout, int nRows = 1, int nCols = 1, int spacing = -1, const char * name = 0 ) + + + addColSpacing + addColSpacing + ( int col, int minsize ) + + + addMultiCell + addMultiCell + ( QLayoutItem * l, int fromRow, int toRow, int fromCol, int toCol, Qt::Alignment align = 0 ) + + + addMultiCellLayout + addMultiCellLayout + ( QLayout * layout, int fromRow, int toRow, int fromCol, int toCol, Qt::Alignment align = 0 ) + + + addMultiCellWidget + addMultiCellWidget + ( QWidget * widget, int fromRow, int toRow, int fromCol, int toCol, Qt::Alignment align = 0 ) + + + addRowSpacing + addRowSpacing + ( int row, int minsize ) + + + cellGeometry + cellGeometry + ( int row, int column ) + + + colSpacing + colSpacing + ( int col ) + + + colStretch + colStretch + ( int col ) + + + expand + expand + ( int nRows, int nCols ) + + + findWidget + findWidget + ( QWidget * w, int * row, int * column ) + + + numCols + numCols + () + + + numRows + numRows + () + + + Corner + origin + QGridLayout::origin() + + + rowSpacing + rowSpacing + ( int row ) + + + setColSpacing + setColSpacing + ( int col, int minSize ) + + + setColStretch + setColStretch + ( int col, int stretch ) + + + setOrigin + setOrigin + ( Qt::Corner corner ) + + + setRowSpacing + setRowSpacing + ( int row, int minSize ) + + + + QGroupBox + qgroupbox.html + + Alignment + alignment-prop + + + + QGroupBox + QGroupBox + ( QWidget * parent = 0 ) + + + QGroupBox + QGroupBox-2 + ( const QString & title, QWidget * parent = 0 ) + + + toggled + toggled + ( bool on ) + + + QGroupBox + QGroupBox-3 + ( QWidget * parent, const char * name ) + + + QGroupBox + QGroupBox-4 + ( const QString & title, QWidget * parent, const char * name ) + + + + QHash::const_iterator + qhash-const-iterator.html + + const_iterator + const_iterator + () + + + const_iterator + const_iterator-3 + ( const iterator & other ) + + + key + key + () + + + value + value + () + + + operator!= + operator-not-eq + ( const const_iterator & other ) + + + operator* + operator-2a + () + + + operator+ + operator-2b + ( int j ) + + + operator++ + operator-2b-2b + () + + + operator++ + operator-2b-2b-2 + ( int ) + + + operator+= + operator-2b-eq + ( int j ) + + + operator- + operator- + ( int j ) + + + operator-- + operator-- + () + + + operator-- + operator---2 + ( int ) + + + operator-= + operator--eq + ( int j ) + + + operator-& + operator--gt + gt;() + + + operator== + operator-eq-eq + ( const const_iterator & other ) + + + + QHash + qhash.html + + ConstIterator + ConstIterator-typedef + + + + Iterator + Iterator-typedef + + + + QHash + QHash + () + + + QHash + QHash-2 + ( const QHash<Key, T> & other ) + + + begin + begin + () + + + begin + begin-2 + () + + + capacity + capacity + () + + + clear + clear + () + + + constBegin + constBegin + () + + + constEnd + constEnd + () + + + constFind + constFind + ( const Key & key ) + + + contains + contains + ( const Key & key ) + + + count + count + ( const Key & key ) + + + count + count-2 + () + + + empty + empty + () + + + end + end + () + + + end + end-2 + () + + + erase + erase + ( iterator pos ) + + + find + find + ( const Key & key ) + + + find + find-2 + ( const Key & key ) + + + insert + insert + ( const Key & key, const T & value ) + + + insertMulti + insertMulti + ( const Key & key, const T & value ) + + + isEmpty + isEmpty + () + + + key + key + ( const T & value ) + + + keys + keys + () + + + keys + keys-2 + ( const T & value ) + + + remove + remove + ( const Key & key ) + + + reserve + reserve + ( int size ) + + + size + size + () + + + squeeze + squeeze + () + + + take + take + ( const Key & key ) + + + unite + unite + ( const QHash<Key, T> & other ) + + + value + value + ( const Key & key ) + + + value + value-2 + ( const Key & key, const T & defaultValue ) + + + values + values + () + + + values + values-2 + ( const Key & key ) + + + operator!= + operator-not-eq + ( const QHash<Key, T> & other ) + + + operator= + operator-eq + ( const QHash<Key, T> & other ) + + + operator== + operator-eq-eq + ( const QHash<Key, T> & other ) + + + operator[] + operator-5b-5d + ( const Key & key ) + + + operator[] + operator-5b-5d-2 + ( const Key & key ) + + + + QHash::iterator + qhash-iterator.html + + iterator + iterator + () + + + key + key + () + + + value + value + () + + + operator!= + operator-not-eq + ( const iterator & other ) + + + operator!= + operator-not-eq-2 + ( const const_iterator & other ) + + + operator* + operator-2a + () + + + operator+ + operator-2b + ( int j ) + + + operator++ + operator-2b-2b + () + + + operator++ + operator-2b-2b-2 + ( int ) + + + operator+= + operator-2b-eq + ( int j ) + + + operator- + operator- + ( int j ) + + + operator-- + operator-- + () + + + operator-- + operator---2 + ( int ) + + + operator-= + operator--eq + ( int j ) + + + operator-& + operator--gt + gt;() + + + operator== + operator-eq-eq + ( const iterator & other ) + + + operator== + operator-eq-eq-2 + ( const const_iterator & other ) + + + + QHashIterator + qhashiterator.html + + QHashIterator + QHashIterator + ( const QHash<Key, T> & hash ) + + + findNext + findNext + ( const T & value ) + + + findPrevious + findPrevious + ( const T & value ) + + + hasNext + hasNext + () + + + hasPrevious + hasPrevious + () + + + key + key + () + + + next + next + () + + + peekNext + peekNext + () + + + peekPrevious + peekPrevious + () + + + previous + previous + () + + + toBack + toBack + () + + + toFront + toFront + () + + + value + value + () + + + operator= + operator-eq + ( const QHash<Key, T> & hash ) + + + + QHBoxLayout + qhboxlayout.html + + QHBoxLayout + QHBoxLayout + () + + + QHBoxLayout + QHBoxLayout-2 + ( QWidget * parent ) + + + QHBoxLayout + QHBoxLayout-3 + ( QWidget * parent, int margin, int spacing = -1, const char * name = 0 ) + + + QHBoxLayout + QHBoxLayout-4 + ( QLayout * parentLayout, int spacing = -1, const char * name = 0 ) + + + QHBoxLayout + QHBoxLayout-5 + ( int spacing, const char * name = 0 ) + + + + QHeaderView + qheaderview.html + + ResizeMode + ResizeMode-enum + + + + Alignment + defaultAlignment-prop + + + + QHeaderView + QHeaderView + ( Qt::Orientation orientation, QWidget * parent = 0 ) + + + count + count + () + + + headerDataChanged + headerDataChanged + ( Qt::Orientation orientation, int logicalFirst, int logicalLast ) + + + hiddenSectionCount + hiddenSectionCount + () + + + hideSection + hideSection + ( int logicalIndex ) + + + horizontalOffset + horizontalOffset + () + + + isClickable + isClickable + () + + + isMovable + isMovable + () + + + isSectionHidden + isSectionHidden + ( int logicalIndex ) + + + length + length + () + + + logicalIndex + logicalIndex + ( int visualIndex ) + + + logicalIndexAt + logicalIndexAt + ( int position ) + + + logicalIndexAt + logicalIndexAt-2 + ( int x, int y ) + + + logicalIndexAt + logicalIndexAt-3 + ( const QPoint & pos ) + + + moveSection + moveSection + ( int from, int to ) + + + offset + offset + () + + + Orientation + orientation + QHeaderView::orientation() + + + paintSection + paintSection + ( QPainter * painter, const QRect & rect, int logicalIndex ) + + + resizeMode + resizeMode + ( int logicalIndex ) + + + resizeSection + resizeSection + ( int logicalIndex, int size ) + + + resizeSections + resizeSections + ( QHeaderView::ResizeMode mode ) + + + sectionAutoResize + sectionAutoResize + ( int logicalIndex, QHeaderView::ResizeMode mode ) + + + sectionClicked + sectionClicked + ( int logicalIndex ) + + + sectionCountChanged + sectionCountChanged + ( int oldCount, int newCount ) + + + sectionDoubleClicked + sectionDoubleClicked + ( int logicalIndex ) + + + sectionHandleDoubleClicked + sectionHandleDoubleClicked + ( int logicalIndex ) + + + sectionMoved + sectionMoved + ( int logicalIndex, int oldVisualIndex, int newVisualIndex ) + + + sectionPosition + sectionPosition + ( int logicalIndex ) + + + sectionPressed + sectionPressed + ( int logicalIndex ) + + + sectionResized + sectionResized + ( int logicalIndex, int oldSize, int newSize ) + + + sectionSize + sectionSize + ( int logicalIndex ) + + + sectionSizeFromContents + sectionSizeFromContents + ( int logicalIndex ) + + + sectionSizeHint + sectionSizeHint + ( int logicalIndex ) + + + sectionViewportPosition + sectionViewportPosition + ( int logicalIndex ) + + + sectionsAboutToBeRemoved + sectionsAboutToBeRemoved + ( const QModelIndex & parent, int logicalFirst, int logicalLast ) + + + sectionsHidden + sectionsHidden + () + + + sectionsInserted + sectionsInserted + ( const QModelIndex & parent, int logicalFirst, int logicalLast ) + + + sectionsMoved + sectionsMoved + () + + + setClickable + setClickable + ( bool clickable ) + + + setMovable + setMovable + ( bool movable ) + + + setOffset + setOffset + ( int offset ) + + + setResizeMode + setResizeMode + ( ResizeMode mode ) + + + setResizeMode + setResizeMode-2 + ( int logicalIndex, ResizeMode mode ) + + + setSectionHidden + setSectionHidden + ( int logicalIndex, bool hide ) + + + setSortIndicator + setSortIndicator + ( int logicalIndex, Qt::SortOrder order ) + + + showSection + showSection + ( int logicalIndex ) + + + sizeHint + sizeHint + () + + + SortOrder + sortIndicatorOrder + QHeaderView::sortIndicatorOrder() + + + sortIndicatorSection + sortIndicatorSection + () + + + stretchSectionCount + stretchSectionCount + () + + + verticalOffset + verticalOffset + () + + + visualIndex + visualIndex + ( int logicalIndex ) + + + visualIndexAt + visualIndexAt + ( int position ) + + + + QHelpEvent + qhelpevent.html + + QHelpEvent + QHelpEvent + ( Type type, const QPoint & pos, const QPoint & globalPos ) + + + globalPos + globalPos + () + + + globalX + globalX + () + + + globalY + globalY + () + + + pos + pos + () + + + x + x + () + + + y + y + () + + + + QHideEvent + qhideevent.html + + QHideEvent + QHideEvent + () + + + + QHostAddress + qhostaddress.html + + SpecialAddress + SpecialAddress-enum + + + + QHostAddress + QHostAddress + () + + + QHostAddress + QHostAddress-2 + ( quint32 ip4Addr ) + + + QHostAddress + QHostAddress-3 + ( quint8 * ip6Addr ) + + + QHostAddress + QHostAddress-4 + ( const Q_IPV6ADDR & ip6Addr ) + + + QHostAddress + QHostAddress-5 + ( const sockaddr * sockaddr ) + + + QHostAddress + QHostAddress-6 + ( const QString & address ) + + + QHostAddress + QHostAddress-7 + ( const QHostAddress & address ) + + + QHostAddress + QHostAddress-8 + ( SpecialAddress address ) + + + clear + clear + () + + + isNull + isNull + () + + + NetworkLayerProtocol + protocol + QHostAddress::protocol() + + + scopeId + scopeId + () + + + setAddress + setAddress + ( quint32 ip4Addr ) + + + setAddress + setAddress-2 + ( quint8 * ip6Addr ) + + + setAddress + setAddress-3 + ( const Q_IPV6ADDR & ip6Addr ) + + + setAddress + setAddress-4 + ( const QString & address ) + + + setAddress + setAddress-5 + ( const sockaddr * sockaddr ) + + + setScopeId + setScopeId + ( const QString & id ) + + + toIPv4Address + toIPv4Address + () + + + toIPv6Address + toIPv6Address + () + + + toString + toString + () + + + operator= + operator-eq + ( const QHostAddress & address ) + + + operator= + operator-eq-2 + ( const QString & address ) + + + operator== + operator-eq-eq + ( const QHostAddress & other ) + + + operator== + operator-eq-eq-2 + ( SpecialAddress other ) + + + ip4Addr + ip4Addr + () + + + isIPv4Address + isIPv4Address + () + + + isIPv6Address + isIPv6Address + () + + + isIp4Addr + isIp4Addr + () + + + + QHostInfo + qhostinfo.html + + HostInfoError + HostInfoError-enum + + + + QHostInfo + QHostInfo + ( int id = -1 ) + + + QHostInfo + QHostInfo-2 + ( const QHostInfo & other ) + + + abortHostLookup + abortHostLookup + ( int id ) + + + addresses + addresses + () + + + error + error + () + + + errorString + errorString + () + + + fromName + fromName + ( const QString & name ) + + + hostName + hostName + () + + + localHostName + localHostName + () + + + lookupHost + lookupHost + ( const QString & name, QObject * receiver, const char * member ) + + + lookupId + lookupId + () + + + setAddresses + setAddresses + ( const QList<QHostAddress> & addresses ) + + + setError + setError + ( HostInfoError error ) + + + setErrorString + setErrorString + ( const QString & str ) + + + setHostName + setHostName + ( const QString & hostName ) + + + setLookupId + setLookupId + ( int id ) + + + operator= + operator-eq + ( const QHostInfo & other ) + + + + QHoverEvent + qhoverevent.html + + QHoverEvent + QHoverEvent + ( Type type, const QPoint & pos, const QPoint & oldPos ) + + + oldPos + oldPos + () + + + pos + pos + () + + + + QHttpHeader + qhttpheader.html + + QHttpHeader + QHttpHeader + () + + + QHttpHeader + QHttpHeader-2 + ( const QHttpHeader & header ) + + + QHttpHeader + QHttpHeader-3 + ( const QString & str ) + + + addValue + addValue + ( const QString & key, const QString & value ) + + + allValues + allValues + ( const QString & key ) + + + contentLength + contentLength + () + + + contentType + contentType + () + + + hasContentLength + hasContentLength + () + + + hasContentType + hasContentType + () + + + hasKey + hasKey + ( const QString & key ) + + + isValid + isValid + () + + + keys + keys + () + + + majorVersion + majorVersion + () + + + minorVersion + minorVersion + () + + + removeAllValues + removeAllValues + ( const QString & key ) + + + removeValue + removeValue + ( const QString & key ) + + + setContentLength + setContentLength + ( int len ) + + + setContentType + setContentType + ( const QString & type ) + + + setValue + setValue + ( const QString & key, const QString & value ) + + + setValues + setValues + ( const QList<QPair<QString, QString> > & values ) + + + toString + toString + () + + + value + value + ( const QString & key ) + + + values + values + () + + + operator= + operator-eq + ( const QHttpHeader & h ) + + + + QHttp + qhttp.html + + Error + Error-enum + + + + State + State-enum + + + + QHttp + QHttp + ( QObject * parent = 0 ) + + + QHttp + QHttp-2 + ( const QString & hostName, quint16 port = 80, QObject * parent = 0 ) + + + abort + abort + () + + + bytesAvailable + bytesAvailable + () + + + clearPendingRequests + clearPendingRequests + () + + + close + close + () + + + currentDestinationDevice + currentDestinationDevice + () + + + currentId + currentId + () + + + currentRequest + currentRequest + () + + + currentSourceDevice + currentSourceDevice + () + + + dataReadProgress + dataReadProgress + ( int done, int total ) + + + dataSendProgress + dataSendProgress + ( int done, int total ) + + + done + done + ( bool error ) + + + error + error + () + + + errorString + errorString + () + + + get + get + ( const QString & path, QIODevice * to = 0 ) + + + hasPendingRequests + hasPendingRequests + () + + + head + head + ( const QString & path ) + + + lastResponse + lastResponse + () + + + post + post + ( const QString & path, QIODevice * data, QIODevice * to = 0 ) + + + post + post-2 + ( const QString & path, const QByteArray & data, QIODevice * to = 0 ) + + + read + read + ( char * data, qint64 maxlen ) + + + readAll + readAll + () + + + readyRead + readyRead + ( const QHttpResponseHeader & resp ) + + + request + request + ( const QHttpRequestHeader & header, QIODevice * data = 0, QIODevice * to = 0 ) + + + request + request-2 + ( const QHttpRequestHeader & header, const QByteArray & data, QIODevice * to = 0 ) + + + requestFinished + requestFinished + ( int id, bool error ) + + + requestStarted + requestStarted + ( int id ) + + + responseHeaderReceived + responseHeaderReceived + ( const QHttpResponseHeader & resp ) + + + setHost + setHost + ( const QString & hostName, quint16 port = 80 ) + + + setProxy + setProxy + ( const QString & host, int port, const QString & username = QString() + + + setSocket + setSocket + ( QTcpSocket * socket ) + + + setUser + setUser + ( const QString & userName, const QString & password = QString() + + + state + state + () + + + stateChanged + stateChanged + ( int state ) + + + closeConnection + closeConnection + () + + + readBlock + readBlock + ( char * data, quint64 maxlen ) + + + + QHttpRequestHeader + qhttprequestheader.html + + QHttpRequestHeader + QHttpRequestHeader + () + + + QHttpRequestHeader + QHttpRequestHeader-2 + ( const QString & method, const QString & path, int majorVer = 1, int minorVer = 1 ) + + + QHttpRequestHeader + QHttpRequestHeader-3 + ( const QHttpRequestHeader & header ) + + + QHttpRequestHeader + QHttpRequestHeader-4 + ( const QString & str ) + + + majorVersion + majorVersion + () + + + method + method + () + + + minorVersion + minorVersion + () + + + path + path + () + + + setRequest + setRequest + ( const QString & method, const QString & path, int majorVer = 1, int minorVer = 1 ) + + + operator= + operator-eq + ( const QHttpRequestHeader & header ) + + + + QHttpResponseHeader + qhttpresponseheader.html + + QHttpResponseHeader + QHttpResponseHeader + () + + + QHttpResponseHeader + QHttpResponseHeader-2 + ( const QHttpResponseHeader & header ) + + + QHttpResponseHeader + QHttpResponseHeader-3 + ( const QString & str ) + + + QHttpResponseHeader + QHttpResponseHeader-4 + ( int code, const QString & text = QString() + + + majorVersion + majorVersion + () + + + minorVersion + minorVersion + () + + + reasonPhrase + reasonPhrase + () + + + setStatusLine + setStatusLine + ( int code, const QString & text = QString() + + + statusCode + statusCode + () + + + operator= + operator-eq + ( const QHttpResponseHeader & header ) + + + + QIconDragEvent + qicondragevent.html + + QIconDragEvent + QIconDragEvent + () + + + + QIconEngine + qiconengine.html + + actualSize + actualSize + ( const QSize & size, QIcon::Mode mode, QIcon::State state ) + + + addFile + addFile + ( const QString & fileName, const QSize & size, QIcon::Mode mode, QIcon::State state ) + + + addPixmap + addPixmap + ( const QPixmap & pixmap, QIcon::Mode mode, QIcon::State state ) + + + paint + paint + ( QPainter * painter, const QRect & rect, QIcon::Mode mode, QIcon::State state ) + + + pixmap + pixmap + ( const QSize & size, QIcon::Mode mode, QIcon::State state ) + + + + QIconEnginePlugin + qiconengineplugin.html + + QIconEnginePlugin + QIconEnginePlugin + ( QObject * parent = 0 ) + + + create + create + ( const QString & filename ) + + + keys + keys + () + + + + QIcon + qicon.html + + Mode + Mode-enum + + + + State + State-enum + + + + QIcon + QIcon + () + + + QIcon + QIcon-2 + ( const QPixmap & pixmap ) + + + QIcon + QIcon-3 + ( const QIcon & other ) + + + QIcon + QIcon-4 + ( const QString & fileName ) + + + QIcon + QIcon-5 + ( QIconEngine * engine ) + + + actualSize + actualSize + ( const QSize & size, Mode mode = Normal, State state = Off ) + + + addFile + addFile + ( const QString & fileName, const QSize & size = QSize() + + + addPixmap + addPixmap + ( const QPixmap & pixmap, Mode mode = Normal, State state = Off ) + + + isNull + isNull + () + + + paint + paint + ( QPainter * painter, const QRect & rect, Qt::Alignment alignment = Qt::AlignCenter, Mode mode = Normal, State state = Off ) + + + paint + paint-2 + ( QPainter * painter, int x, int y, int w, int h, Qt::Alignment alignment = Qt::AlignCenter, Mode mode = Normal, State state = Off ) + + + pixmap + pixmap + ( const QSize & size, Mode mode = Normal, State state = Off ) + + + pixmap + pixmap-5 + ( int w, int h, Mode mode = Normal, State state = Off ) + + + pixmap + pixmap-6 + ( int extent, Mode mode = Normal, State state = Off ) + + + serialNumber + serialNumber + () + + + operator + operator-QVariant + QVariant() + + + operator= + operator-eq + ( const QIcon & other ) + + + Size + Size-enum + + + + pixmap + pixmap-2 + ( Size size, Mode mode, State state = Off ) + + + pixmap + pixmap-3 + ( Size size, bool enabled, State state = Off ) + + + pixmap + pixmap-4 + () + + + pixmapSize + pixmapSize + ( Size which ) + + + reset + reset + ( const QPixmap & pixmap, Size size ) + + + setPixmap + setPixmap + ( const QPixmap & pixmap, Size size, Mode mode = Normal, State state = Off ) + + + setPixmap + setPixmap-2 + ( const QString & fileName, Size size, Mode mode = Normal, State state = Off ) + + + setPixmapSize + setPixmapSize + ( Size which, const QSize & size ) + + + + QImage + qimage.html + + Format + Format-enum + + + + InvertMode + InvertMode-enum + + + + QImage + QImage + () + + + QImage + QImage-2 + ( const QSize & size, Format format ) + + + QImage + QImage-3 + ( int width, int height, Format format ) + + + QImage + QImage-4 + ( uchar * data, int width, int height, Format format ) + + + QImage + QImage-5 + ( const char * const[] xpm ) + + + QImage + QImage-6 + ( const QString & fileName, const char * format = 0 ) + + + QImage + QImage-7 + ( const char * fileName, const char * format = 0 ) + + + QImage + QImage-8 + ( const QImage & image ) + + + allGray + allGray + () + + + alphaChannel + alphaChannel + () + + + bits + bits + () + + + bits + bits-2 + () + + + bytesPerLine + bytesPerLine + () + + + color + color + ( int i ) + + + colorTable + colorTable + () + + + convertToFormat + convertToFormat + ( Format format, Qt::ImageConversionFlags flags = Qt::AutoColor ) + + + convertToFormat + convertToFormat-2 + ( Format format, const QVector<QRgb> & colorTable, Qt::ImageConversionFlags flags = Qt::AutoColor ) + + + copy + copy + ( const QRect & rectangle = QRect() + + + copy + copy-4 + ( int x, int y, int width, int height ) + + + createAlphaMask + createAlphaMask + ( Qt::ImageConversionFlags flags = Qt::AutoColor ) + + + createHeuristicMask + createHeuristicMask + ( bool clipTight = true ) + + + depth + depth + () + + + dotsPerMeterX + dotsPerMeterX + () + + + dotsPerMeterY + dotsPerMeterY + () + + + fill + fill + ( uint pixelValue ) + + + format + format + () + + + fromData + fromData + ( const uchar * data, int size, const char * format = 0 ) + + + fromData + fromData-2 + ( const QByteArray & data, const char * format = 0 ) + + + hasAlphaChannel + hasAlphaChannel + () + + + height + height + () + + + invertPixels + invertPixels + ( InvertMode mode = InvertRgb ) + + + isGrayscale + isGrayscale + () + + + isNull + isNull + () + + + load + load + ( const QString & fileName, const char * format = 0 ) + + + load + load-2 + ( QIODevice * device, const char * format ) + + + loadFromData + loadFromData + ( const uchar * data, int len, const char * format = 0 ) + + + loadFromData + loadFromData-2 + ( const QByteArray & data, const char * format = 0 ) + + + mirrored + mirrored + ( bool horizontal = false, bool vertical = true ) + + + numBytes + numBytes + () + + + numColors + numColors + () + + + offset + offset + () + + + pixel + pixel + ( int x, int y ) + + + pixelIndex + pixelIndex + ( int x, int y ) + + + rect + rect + () + + + rgbSwapped + rgbSwapped + () + + + save + save + ( const QString & fileName, const char * format, int quality = -1 ) + + + save + save-2 + ( QIODevice * device, const char * format, int quality = -1 ) + + + scaled + scaled + ( const QSize & size, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation ) + + + scaled + scaled-2 + ( int width, int height, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation ) + + + scaledToHeight + scaledToHeight + ( int height, Qt::TransformationMode mode = Qt::FastTransformation ) + + + scaledToWidth + scaledToWidth + ( int width, Qt::TransformationMode mode = Qt::FastTransformation ) + + + scanLine + scanLine + ( int i ) + + + scanLine + scanLine-2 + ( int i ) + + + serialNumber + serialNumber + () + + + setAlphaChannel + setAlphaChannel + ( const QImage & alphaChannel ) + + + setColor + setColor + ( int index, QRgb colorValue ) + + + setColorTable + setColorTable + ( const QVector<QRgb> colors ) + + + setDotsPerMeterX + setDotsPerMeterX + ( int x ) + + + setDotsPerMeterY + setDotsPerMeterY + ( int y ) + + + setNumColors + setNumColors + ( int numColors ) + + + setOffset + setOffset + ( const QPoint & offset ) + + + setPixel + setPixel + ( int x, int y, uint index_or_rgb ) + + + setText + setText + ( const QString & key, const QString & text ) + + + size + size + () + + + text + text + ( const QString & key = QString() + + + textKeys + textKeys + () + + + transformed + transformed + ( const QMatrix & matrix, Qt::TransformationMode mode = Qt::FastTransformation ) + + + trueMatrix + trueMatrix + ( const QMatrix & matrix, int width, int height ) + + + valid + valid + ( int x, int y ) + + + width + width + () + + + operator + operator-QVariant + QVariant() + + + operator!= + operator-not-eq + ( const QImage & image ) + + + operator= + operator-eq + ( const QImage & image ) + + + operator== + operator-eq-eq + ( const QImage & image ) + + + + QImageIOHandler + qimageiohandler.html + + ImageOption + ImageOption-enum + + + + QImageIOHandler + QImageIOHandler + () + + + canRead + canRead + () + + + currentImageNumber + currentImageNumber + () + + + currentImageRect + currentImageRect + () + + + device + device + () + + + format + format + () + + + imageCount + imageCount + () + + + jumpToImage + jumpToImage + ( int imageNumber ) + + + jumpToNextImage + jumpToNextImage + () + + + loopCount + loopCount + () + + + nextImageDelay + nextImageDelay + () + + + option + option + ( ImageOption option ) + + + read + read + ( QImage * image ) + + + setDevice + setDevice + ( QIODevice * device ) + + + setFormat + setFormat + ( const QByteArray & format ) + + + setFormat + setFormat-2 + ( const QByteArray & format ) + + + setOption + setOption + ( ImageOption option, const QVariant & value ) + + + supportsOption + supportsOption + ( ImageOption option ) + + + write + write + ( const QImage & image ) + + + name + name + () + + + + QImageIOPlugin + qimageioplugin.html + + QImageIOPlugin + QImageIOPlugin + ( QObject * parent = 0 ) + + + capabilities + capabilities + ( QIODevice * device, const QByteArray & format ) + + + create + create + ( QIODevice * device, const QByteArray & format = QByteArray() + + + keys + keys + () + + + setText + setText-2 + ( const char * key, const char * language, const QString & text ) + + + text + text-2 + ( const char * key, const char * language = 0 ) + + + text + text-3 + ( const QImageTextKeyLang & keywordAndLanguage ) + + + textLanguages + textLanguages + () + + + textList + textList + () + + + Endian + Endian-enum + + + + QImage + QImage-9 + ( int width, int height, int depth, int numColors = 0, Endian bitOrder = IgnoreEndian ) + + + QImage + QImage-10 + ( const QSize & size, int depth, int numColors = 0, Endian bitOrder = IgnoreEndian ) + + + QImage + QImage-11 + ( uchar * data, int width, int height, int depth, const QRgb * colortable, int numColors, Endian bitOrder ) + + + QImage + QImage-12 + ( uchar * data, int width, int height, int depth, int bytesPerLine, const QRgb * colortable, int numColors, Endian bitOrder ) + + + QImage + QImage-13 + ( const QByteArray & data ) + + + bitOrder + bitOrder + () + + + convertBitOrder + convertBitOrder + ( Endian bitOrder ) + + + convertDepth + convertDepth + ( int depth, Qt::ImageConversionFlags flags = Qt::AutoColor ) + + + convertDepthWithPalette + convertDepthWithPalette + ( int depth, QRgb * palette, int palette_count, Qt::ImageConversionFlags flags = Qt::AutoColor ) + + + copy + copy-2 + ( int x, int y, int w, int h, Qt::ImageConversionFlags flags ) + + + copy + copy-3 + ( const QRect & rect, Qt::ImageConversionFlags flags ) + + + create + create + ( int width, int height, int depth, int numColors = 0, Endian bitOrder = IgnoreEndian ) + + + create + create-2 + ( const QSize & size, int depth, int numColors = 0, Endian bitOrder = IgnoreEndian ) + + + hasAlphaBuffer + hasAlphaBuffer + () + + + invertPixels + invertPixels-2 + ( bool invertAlpha ) + + + jumpTable + jumpTable + () + + + jumpTable + jumpTable-2 + () + + + mirror + mirror + ( bool horizontal = false, bool vertical = true ) + + + reset + reset + () + + + scaleHeight + scaleHeight + ( int h ) + + + scaleWidth + scaleWidth + ( int w ) + + + setAlphaBuffer + setAlphaBuffer + ( bool enable ) + + + smoothScale + smoothScale + ( int width, int height, Qt::AspectRatioMode mode = Qt::IgnoreAspectRatio ) + + + smoothScale + smoothScale-2 + ( const QSize & size, Qt::AspectRatioMode mode = Qt::IgnoreAspectRatio ) + + + swapRGB + swapRGB + () + + + systemBitOrder + systemBitOrder + () + + + systemByteOrder + systemByteOrder + () + + + xForm + xForm + ( const QMatrix & matrix ) + + + ImageConversionFlags + bitBlt + flags = Qt::AutoColor ) + + + + QImageReader + qimagereader.html + + ImageReaderError + ImageReaderError-enum + + + + QImageReader + QImageReader + () + + + QImageReader + QImageReader-2 + ( QIODevice * device, const QByteArray & format = QByteArray() + + + QImageReader + QImageReader-3 + ( const QString & fileName, const QByteArray & format = QByteArray() + + + backgroundColor + backgroundColor + () + + + canRead + canRead + () + + + clipRect + clipRect + () + + + currentImageNumber + currentImageNumber + () + + + currentImageRect + currentImageRect + () + + + device + device + () + + + error + error + () + + + errorString + errorString + () + + + fileName + fileName + () + + + format + format + () + + + imageCount + imageCount + () + + + imageFormat + imageFormat + ( const QString & fileName ) + + + imageFormat + imageFormat-2 + ( QIODevice * device ) + + + jumpToImage + jumpToImage + ( int imageNumber ) + + + jumpToNextImage + jumpToNextImage + () + + + loopCount + loopCount + () + + + nextImageDelay + nextImageDelay + () + + + read + read + () + + + scaledClipRect + scaledClipRect + () + + + scaledSize + scaledSize + () + + + setBackgroundColor + setBackgroundColor + ( const QColor & color ) + + + setClipRect + setClipRect + ( const QRect & rect ) + + + setDevice + setDevice + ( QIODevice * device ) + + + setFileName + setFileName + ( const QString & fileName ) + + + setFormat + setFormat + ( const QByteArray & format ) + + + setScaledClipRect + setScaledClipRect + ( const QRect & rect ) + + + setScaledSize + setScaledSize + ( const QSize & size ) + + + size + size + () + + + supportedImageFormats + supportedImageFormats + () + + + supportsAnimation + supportsAnimation + () + + + text + text + ( const QString & key ) + + + textKeys + textKeys + () + + + + QImageWriter + qimagewriter.html + + ImageWriterError + ImageWriterError-enum + + + + QImageWriter + QImageWriter + () + + + QImageWriter + QImageWriter-2 + ( QIODevice * device, const QByteArray & format ) + + + QImageWriter + QImageWriter-3 + ( const QString & fileName, const QByteArray & format = QByteArray() + + + canWrite + canWrite + () + + + device + device + () + + + error + error + () + + + errorString + errorString + () + + + fileName + fileName + () + + + format + format + () + + + gamma + gamma + () + + + quality + quality + () + + + setDevice + setDevice + ( QIODevice * device ) + + + setFileName + setFileName + ( const QString & fileName ) + + + setFormat + setFormat + ( const QByteArray & format ) + + + setGamma + setGamma + ( float gamma ) + + + setQuality + setQuality + ( int quality ) + + + setText + setText + ( const QString & key, const QString & text ) + + + supportedImageFormats + supportedImageFormats + () + + + write + write + ( const QImage & image ) + + + description + description + () + + + setDescription + setDescription + ( const QString & description ) + + + + QInputContextFactory + qinputcontextfactory.html + + create + create + ( const QString & key, QObject * parent ) + + + description + description + ( const QString & key ) + + + displayName + displayName + ( const QString & key ) + + + keys + keys + () + + + languages + languages + ( const QString & key ) + + + + QInputContext + qinputcontext.html + + StandardFormat + StandardFormat-enum + + + + QInputContext + QInputContext + ( QObject * parent = 0 ) + + + actions + actions + () + + + filterEvent + filterEvent + ( const QEvent * event ) + + + font + font + () + + + identifierName + identifierName + () + + + isComposing + isComposing + () + + + language + language + () + + + mouseHandler + mouseHandler + ( int x, QMouseEvent * event ) + + + reset + reset + () + + + sendEvent + sendEvent + ( const QInputMethodEvent & event ) + + + standardFormat + standardFormat + ( StandardFormat s ) + + + update + update + () + + + widgetDestroyed + widgetDestroyed + ( QWidget * widget ) + + + x11FilterEvent + x11FilterEvent + ( QWidget * keywidget, XEvent * event ) + + + + QInputContextPlugin + qinputcontextplugin.html + + QInputContextPlugin + QInputContextPlugin + ( QObject * parent = 0 ) + + + create + create + ( const QString & key ) + + + description + description + ( const QString & key ) + + + displayName + displayName + ( const QString & key ) + + + keys + keys + () + + + languages + languages + ( const QString & key ) + + + + QInputDialog + qinputdialog.html + + getDouble + getDouble + ( QWidget * parent, const QString & title, const QString & label, double value = 0, double minValue = -2147483647, double maxValue = 2147483647, int decimals = 1, bool * ok = 0, Qt::WFlags f = 0 ) + + + getInteger + getInteger + ( QWidget * parent, const QString & title, const QString & label, int value = 0, int minValue = -2147483647, int maxValue = 2147483647, int step = 1, bool * ok = 0, Qt::WFlags f = 0 ) + + + getItem + getItem + ( QWidget * parent, const QString & title, const QString & label, const QStringList & list, int current = 0, bool editable = true, bool * ok = 0, Qt::WFlags f = 0 ) + + + getText + getText + ( QWidget * parent, const QString & title, const QString & label, QLineEdit::EchoMode mode = QLineEdit::Normal, const QString & text = QString() + + + getDouble + getDouble-2 + ( const QString & title, const QString & label, double value = 0, double minValue = -2147483647, double maxValue = 2147483647, int decimals = 1, bool * ok = 0, QWidget * parent = 0, const char * name = 0, Qt::WFlags f = 0 ) + + + getInteger + getInteger-2 + ( const QString & title, const QString & label, int value = 0, int minValue = -2147483647, int maxValue = 2147483647, int step = 1, bool * ok = 0, QWidget * parent = 0, const char * name = 0, Qt::WFlags f = 0 ) + + + getItem + getItem-2 + ( const QString & title, const QString & label, const QStringList & list, int current = 0, bool editable = true, bool * ok = 0, QWidget * parent = 0, const char * name = 0, Qt::WFlags f = 0 ) + + + getText + getText-2 + ( const QString & title, const QString & label, QLineEdit::EchoMode echo = QLineEdit::Normal, const QString & text = QString() + + + + QInputEvent + qinputevent.html + + KeyboardModifiers + modifiers + QInputEvent::modifiers() + + + + QInputMethodEvent::Attribute + qinputmethodevent-attribute.html + + Attribute + Attribute + ( AttributeType type, int start, int length, QVariant value ) + + + + QInputMethodEvent + qinputmethodevent.html + + AttributeType + AttributeType-enum + + + + QInputMethodEvent + QInputMethodEvent + () + + + QInputMethodEvent + QInputMethodEvent-2 + ( const QString & preeditText, const QList<Attribute> & attributes ) + + + QInputMethodEvent + QInputMethodEvent-3 + ( const QInputMethodEvent & other ) + + + attributes + attributes + () + + + commitString + commitString + () + + + preeditString + preeditString + () + + + replacementLength + replacementLength + () + + + replacementStart + replacementStart + () + + + setCommitString + setCommitString + ( const QString & commitString, int replaceFrom = 0, int replaceLength = 0 ) + + + + QIntValidator + qintvalidator.html + + QIntValidator + QIntValidator + ( QObject * parent ) + + + QIntValidator + QIntValidator-2 + ( int minimum, int maximum, QObject * parent ) + + + setRange + setRange + ( int bottom, int top ) + + + State + validate + QIntValidator::validate( QString & input, int & pos ) + + + QIntValidator + QIntValidator-3 + ( QObject * parent, const char * name ) + + + QIntValidator + QIntValidator-4 + ( int minimum, int maximum, QObject * parent, const char * name ) + + + + QIODevice + qiodevice.html + + QIODevice + QIODevice + () + + + QIODevice + QIODevice-2 + ( QObject * parent ) + + + aboutToClose + aboutToClose + () + + + atEnd + atEnd + () + + + bytesAvailable + bytesAvailable + () + + + bytesToWrite + bytesToWrite + () + + + bytesWritten + bytesWritten + ( qint64 bytes ) + + + canReadLine + canReadLine + () + + + close + close + () + + + errorString + errorString + () + + + getChar + getChar + ( char * c ) + + + isOpen + isOpen + () + + + isReadable + isReadable + () + + + isSequential + isSequential + () + + + isTextModeEnabled + isTextModeEnabled + () + + + isWritable + isWritable + () + + + open + open + ( OpenMode mode ) + + + openMode + openMode + () + + + peek + peek + ( char * data, qint64 maxSize ) + + + peek + peek-2 + ( qint64 maxSize ) + + + pos + pos + () + + + putChar + putChar + ( char c ) + + + read + read + ( char * data, qint64 maxSize ) + + + read + read-2 + ( qint64 maxSize ) + + + readAll + readAll + () + + + readData + readData + ( char * data, qint64 maxSize ) + + + readLine + readLine + ( char * data, qint64 maxSize ) + + + readLine + readLine-2 + ( qint64 maxSize = 0 ) + + + readLineData + readLineData + ( char * data, qint64 maxSize ) + + + readyRead + readyRead + () + + + reset + reset + () + + + seek + seek + ( qint64 pos ) + + + setErrorString + setErrorString + ( const QString & str ) + + + setOpenMode + setOpenMode + ( OpenMode openMode ) + + + setTextModeEnabled + setTextModeEnabled + ( bool enabled ) + + + size + size + () + + + ungetChar + ungetChar + ( char c ) + + + waitForBytesWritten + waitForBytesWritten + ( int msecs ) + + + waitForReadyRead + waitForReadyRead + ( int msecs ) + + + write + write + ( const char * data, qint64 maxSize ) + + + write + write-2 + ( const QByteArray & byteArray ) + + + writeData + writeData + ( const char * data, qint64 maxSize ) + + + Offset + Offset-typedef + + + + Status + Status-typedef + + + + at + at + () + + + at + at-2 + ( Offset offset ) + + + flags + flags + () + + + getch + getch + () + + + isAsynchronous + isAsynchronous + () + + + isBuffered + isBuffered + () + + + isCombinedAccess + isCombinedAccess + () + + + isDirectAccess + isDirectAccess + () + + + isInactive + isInactive + () + + + isRaw + isRaw + () + + + isSequentialAccess + isSequentialAccess + () + + + isSynchronous + isSynchronous + () + + + isTranslated + isTranslated + () + + + mode + mode + () + + + putch + putch + ( int ch ) + + + readBlock + readBlock + ( char * data, quint64 size ) + + + resetStatus + resetStatus + () + + + state + state + () + + + status + status + () + + + ungetch + ungetch + ( int ch ) + + + writeBlock + writeBlock + ( const char * data, quint64 size ) + + + writeBlock + writeBlock-2 + ( const QByteArray & data ) + + + + QItemDelegate + qitemdelegate.html + + QItemDelegate + QItemDelegate + ( QObject * parent = 0 ) + + + createEditor + createEditor + ( QWidget * parent, const QStyleOptionViewItem & option, const QModelIndex & index ) + + + drawCheck + drawCheck + ( QPainter * painter, const QStyleOptionViewItem & option, const QRect & rect, Qt::CheckState state ) + + + drawDecoration + drawDecoration + ( QPainter * painter, const QStyleOptionViewItem & option, const QRect & rect, const QPixmap & pixmap ) + + + drawDisplay + drawDisplay + ( QPainter * painter, const QStyleOptionViewItem & option, const QRect & rect, const QString & text ) + + + drawFocus + drawFocus + ( QPainter * painter, const QStyleOptionViewItem & option, const QRect & rect ) + + + eventFilter + eventFilter + ( QObject * object, QEvent * event ) + + + itemEditorFactory + itemEditorFactory + () + + + paint + paint + ( QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index ) + + + setEditorData + setEditorData + ( QWidget * editor, const QModelIndex & index ) + + + setItemEditorFactory + setItemEditorFactory + ( QItemEditorFactory * factory ) + + + setModelData + setModelData + ( QWidget * editor, QAbstractItemModel * model, const QModelIndex & index ) + + + sizeHint + sizeHint + ( const QStyleOptionViewItem & option, const QModelIndex & index ) + + + updateEditorGeometry + updateEditorGeometry + ( QWidget * editor, const QStyleOptionViewItem & option, const QModelIndex & index ) + + + + QItemEditorCreatorBase + qitemeditorcreatorbase.html + + createWidget + createWidget + ( QWidget * parent ) + + + valuePropertyName + valuePropertyName + () + + + + QItemEditorFactory + qitemeditorfactory.html + + QItemEditorFactory + QItemEditorFactory + () + + + createEditor + createEditor + ( QVariant::Type type, QWidget * parent ) + + + defaultFactory + defaultFactory + () + + + registerEditor + registerEditor + ( QVariant::Type type, QItemEditorCreatorBase * creator ) + + + setDefaultFactory + setDefaultFactory + ( QItemEditorFactory * factory ) + + + valuePropertyName + valuePropertyName + ( QVariant::Type type ) + + + + QItemSelection + qitemselection.html + + QItemSelection + QItemSelection + () + + + QItemSelection + QItemSelection-2 + ( const QModelIndex & topLeft, const QModelIndex & bottomRight ) + + + contains + contains + ( const QModelIndex & index ) + + + indexes + indexes + () + + + merge + merge + ( const QItemSelection & other, QItemSelectionModel::SelectionFlags command ) + + + select + select + ( const QModelIndex & topLeft, const QModelIndex & bottomRight ) + + + split + split + ( const QItemSelectionRange & range, const QItemSelectionRange & other, QItemSelection * result ) + + + + QItemSelectionModel + qitemselectionmodel.html + + QItemSelectionModel + QItemSelectionModel + ( QAbstractItemModel * model ) + + + QItemSelectionModel + QItemSelectionModel-2 + ( QAbstractItemModel * model, QObject * parent ) + + + clear + clear + () + + + columnIntersectsSelection + columnIntersectsSelection + ( int column, const QModelIndex & parent ) + + + currentChanged + currentChanged + ( const QModelIndex & current, const QModelIndex & previous ) + + + currentColumnChanged + currentColumnChanged + ( const QModelIndex & current, const QModelIndex & previous ) + + + currentIndex + currentIndex + () + + + currentRowChanged + currentRowChanged + ( const QModelIndex & current, const QModelIndex & previous ) + + + emitSelectionChanged + emitSelectionChanged + ( const QItemSelection & newSelection, const QItemSelection & oldSelection ) + + + isColumnSelected + isColumnSelected + ( int column, const QModelIndex & parent ) + + + isRowSelected + isRowSelected + ( int row, const QModelIndex & parent ) + + + isSelected + isSelected + ( const QModelIndex & index ) + + + model + model + () + + + reset + reset + () + + + rowIntersectsSelection + rowIntersectsSelection + ( int row, const QModelIndex & parent ) + + + select + select + ( const QModelIndex & index, QItemSelectionModel::SelectionFlags command ) + + + select + select-2 + ( const QItemSelection & selection, QItemSelectionModel::SelectionFlags command ) + + + selectedIndexes + selectedIndexes + () + + + selection + selection + () + + + selectionChanged + selectionChanged + ( const QItemSelection & selected, const QItemSelection & deselected ) + + + setCurrentIndex + setCurrentIndex + ( const QModelIndex & index, QItemSelectionModel::SelectionFlags command ) + + + + QItemSelectionRange + qitemselectionrange.html + + QItemSelectionRange + QItemSelectionRange + () + + + QItemSelectionRange + QItemSelectionRange-2 + ( const QItemSelectionRange & other ) + + + QItemSelectionRange + QItemSelectionRange-3 + ( const QModelIndex & topLeft, const QModelIndex & bottomRight ) + + + QItemSelectionRange + QItemSelectionRange-4 + ( const QModelIndex & index ) + + + bottom + bottom + () + + + bottomRight + bottomRight + () + + + contains + contains + ( const QModelIndex & index ) + + + height + height + () + + + indexes + indexes + () + + + intersect + intersect + ( const QItemSelectionRange & other ) + + + intersects + intersects + ( const QItemSelectionRange & other ) + + + isValid + isValid + () + + + left + left + () + + + model + model + () + + + parent + parent + () + + + right + right + () + + + top + top + () + + + topLeft + topLeft + () + + + width + width + () + + + operator!= + operator-not-eq + ( const QItemSelectionRange & other ) + + + operator== + operator-eq-eq + ( const QItemSelectionRange & other ) + + + + QKbdDriverFactory + qkbddriverfactory.html + + create + create + ( const QString & key, const QString & device ) + + + keys + keys + () + + + + QKbdDriverPlugin + qkbddriverplugin.html + + QKbdDriverPlugin + QKbdDriverPlugin + ( QObject * parent = 0 ) + + + create + create + ( const QString & key, const QString & device ) + + + keys + keys + () + + + + QKeyEvent + qkeyevent.html + + QKeyEvent + QKeyEvent + ( Type type, int key, Qt::KeyboardModifiers modifiers, const QString & text = QString() + + + count + count + () + + + isAutoRepeat + isAutoRepeat + () + + + key + key + () + + + KeyboardModifiers + modifiers + QKeyEvent::modifiers() + + + text + text + () + + + QKeyEvent + QKeyEvent-2 + ( Type type, int key, int ascii, int modifiers, const QString & text = QString() + + + ascii + ascii + () + + + ButtonState + state + QKeyEvent::state() + + + ButtonState + stateAfter + QKeyEvent::stateAfter() + + + + QKeySequence + qkeysequence.html + + SequenceFormat + SequenceFormat-enum + + + + SequenceMatch + SequenceMatch-enum + + + + QKeySequence + QKeySequence + () + + + QKeySequence + QKeySequence-2 + ( const QString & key ) + + + QKeySequence + QKeySequence-3 + ( int k1, int k2 = 0, int k3 = 0, int k4 = 0 ) + + + QKeySequence + QKeySequence-4 + ( const QKeySequence & keysequence ) + + + count + count + () + + + fromString + fromString + ( const QString & str, SequenceFormat format = PortableText ) + + + isEmpty + isEmpty + () + + + matches + matches + ( const QKeySequence & seq ) + + + mnemonic + mnemonic + ( const QString & text ) + + + toString + toString + ( SequenceFormat format = PortableText ) + + + operator + operator-QString + QString() + + + operator + operator-QVariant + QVariant() + + + operator!= + operator-not-eq + ( const QKeySequence & other ) + + + operator< + operator-lt + ( const QKeySequence & other ) + + + operator<= + operator-lt-eq + ( const QKeySequence & other ) + + + operator= + operator-eq + ( const QKeySequence & other ) + + + operator== + operator-eq-eq + ( const QKeySequence & other ) + + + operator> + operator-gt + ( const QKeySequence & other ) + + + operator>= + operator-gt-eq + ( const QKeySequence & other ) + + + operator[] + operator-5b-5d + ( uint index ) + + + operator + operator-int + int() + + + + QLabel + qlabel.html + + Alignment + alignment-prop + + + + TextFormat + textFormat-prop + + + + QLabel + QLabel + ( QWidget * parent = 0, Qt::WFlags f = 0 ) + + + QLabel + QLabel-2 + ( const QString & text, QWidget * parent = 0, Qt::WFlags f = 0 ) + + + buddy + buddy + () + + + clear + clear + () + + + movie + movie + () + + + picture + picture + () + + + setBuddy + setBuddy + ( QWidget * buddy ) + + + setMovie + setMovie + ( QMovie * movie ) + + + setNum + setNum + ( int num ) + + + setNum + setNum-2 + ( double num ) + + + setPicture + setPicture + ( const QPicture & picture ) + + + QLabel + QLabel-3 + ( QWidget * parent, const char * name, Qt::WFlags f = 0 ) + + + QLabel + QLabel-4 + ( const QString & text, QWidget * parent, const char * name, Qt::WFlags f = 0 ) + + + QLabel + QLabel-5 + ( QWidget * buddy, const QString & text, QWidget * parent = 0, const char * name = 0, Qt::WFlags f = 0 ) + + + setAlignment + setAlignment-2 + ( int alignment ) + + + + QLatin1Char + qlatin1char.html + + QLatin1Char + QLatin1Char + ( char c ) + + + toLatin1 + toLatin1 + () + + + unicode + unicode + () + + + + QLatin1String + qlatin1string.html + + QLatin1String + QLatin1String + ( const char * str ) + + + latin1 + latin1 + () + + + operator!= + operator-not-eq + ( const QString & other ) + + + operator< + operator-lt + ( const QString & other ) + + + operator<= + operator-lt-eq + ( const QString & other ) + + + operator= + operator-eq + ( const QLatin1String & other ) + + + operator== + operator-eq-eq + ( const QString & other ) + + + operator> + operator-gt + ( const QString & other ) + + + operator>= + operator-gt-eq + ( const QString & other ) + + + + QLayout + qlayout.html + + SizeConstraint + SizeConstraint-enum + + + + QLayout + QLayout + ( QWidget * parent ) + + + QLayout + QLayout-2 + () + + + activate + activate + () + + + addChildLayout + addChildLayout + ( QLayout * l ) + + + addChildWidget + addChildWidget + ( QWidget * w ) + + + addItem + addItem + ( QLayoutItem * item ) + + + addWidget + addWidget + ( QWidget * w ) + + + alignmentRect + alignmentRect + ( const QRect & r ) + + + closestAcceptableSize + closestAcceptableSize + ( const QWidget * widget, const QSize & size ) + + + count + count + () + + + Orientations + expandingDirections + QLayout::expandingDirections() + + + indexOf + indexOf + ( QWidget * widget ) + + + isEnabled + isEnabled + () + + + itemAt + itemAt + ( int index ) + + + maximumSize + maximumSize + () + + + menuBar + menuBar + () + + + minimumSize + minimumSize + () + + + parentWidget + parentWidget + () + + + removeItem + removeItem + ( QLayoutItem * item ) + + + removeWidget + removeWidget + ( QWidget * widget ) + + + setAlignment + setAlignment + ( QWidget * w, Qt::Alignment alignment ) + + + setAlignment + setAlignment-2 + ( QLayout * l, Qt::Alignment alignment ) + + + setEnabled + setEnabled + ( bool enable ) + + + setMenuBar + setMenuBar + ( QWidget * widget ) + + + takeAt + takeAt + ( int index ) + + + update + update + () + + + + QLayoutItem + qlayoutitem.html + + QLayoutItem + QLayoutItem + ( Qt::Alignment alignment = 0 ) + + + Alignment + alignment + QLayoutItem::alignment() + + + Orientations + expandingDirections + QLayoutItem::expandingDirections() + + + geometry + geometry + () + + + hasHeightForWidth + hasHeightForWidth + () + + + heightForWidth + heightForWidth + ( int w ) + + + invalidate + invalidate + () + + + isEmpty + isEmpty + () + + + layout + layout + () + + + maximumSize + maximumSize + () + + + minimumHeightForWidth + minimumHeightForWidth + ( int w ) + + + minimumSize + minimumSize + () + + + setAlignment + setAlignment + ( Qt::Alignment alignment ) + + + setGeometry + setGeometry + ( const QRect & r ) + + + sizeHint + sizeHint + () + + + spacerItem + spacerItem + () + + + widget + widget + () + + + QLayout + QLayout-4 + ( QWidget * parent, int margin, int spacing = -1, const char * name = 0 ) + + + QLayout + QLayout-5 + ( QLayout * parentLayout, int spacing = -1, const char * name = 0 ) + + + QLayout + QLayout-6 + ( int spacing, const char * name = 0 ) + + + add + add + ( QWidget * widget ) + + + autoAdd + autoAdd + () + + + defaultBorder + defaultBorder + () + + + deleteAllItems + deleteAllItems + () + + + freeze + freeze + ( int w = 0, int h = 0 ) + + + isTopLevel + isTopLevel + () + + + iterator + iterator + () + + + mainWidget + mainWidget + () + + + remove + remove + ( QWidget * widget ) + + + resizeMode + resizeMode + () + + + setAutoAdd + setAutoAdd + ( bool a ) + + + setResizeMode + setResizeMode + ( SizeConstraint constraint ) + + + + QLCDNumber + qlcdnumber.html + + Mode + Mode-enum + + + + SegmentStyle + SegmentStyle-enum + + + + QLCDNumber + QLCDNumber + ( QWidget * parent = 0 ) + + + QLCDNumber + QLCDNumber-2 + ( uint numDigits, QWidget * parent = 0 ) + + + checkOverflow + checkOverflow + ( double num ) + + + checkOverflow + checkOverflow-2 + ( int num ) + + + overflow + overflow + () + + + setBinMode + setBinMode + () + + + setDecMode + setDecMode + () + + + setHexMode + setHexMode + () + + + setOctMode + setOctMode + () + + + QLCDNumber + QLCDNumber-3 + ( QWidget * parent, const char * name ) + + + QLCDNumber + QLCDNumber-4 + ( uint numDigits, QWidget * parent, const char * name ) + + + + QLibrary + qlibrary.html + + QLibrary + QLibrary + ( QObject * parent = 0 ) + + + QLibrary + QLibrary-2 + ( const QString & fileName, QObject * parent = 0 ) + + + QLibrary + QLibrary-3 + ( const QString & fileName, int verNum, QObject * parent = 0 ) + + + isLibrary + isLibrary + ( const QString & fileName ) + + + isLoaded + isLoaded + () + + + load + load + () + + + resolve + resolve + ( const char * symbol ) + + + resolve + resolve-2 + ( const QString & fileName, const char * symbol ) + + + resolve + resolve-3 + ( const QString & fileName, int verNum, const char * symbol ) + + + setFileNameAndVersion + setFileNameAndVersion + ( const QString & fileName, int versionNumber ) + + + unload + unload + () + + + + QLibraryInfo + qlibraryinfo.html + + LibraryLocation + LibraryLocation-enum + + + + buildKey + buildKey + () + + + licensedProducts + licensedProducts + () + + + licensee + licensee + () + + + location + location + ( LibraryLocation loc ) + + + library + library + () + + + setAutoUnload + setAutoUnload + ( bool b ) + + + + QLinearGradient + qlineargradient.html + + QLinearGradient + QLinearGradient + ( const QPointF & start, const QPointF & finalStop ) + + + QLinearGradient + QLinearGradient-2 + ( qreal x1, qreal y1, qreal x2, qreal y2 ) + + + finalStop + finalStop + () + + + start + start + () + + + + QLineEdit + qlineedit.html + + EchoMode + EchoMode-enum + + + + Alignment + alignment-prop + + + + QLineEdit + QLineEdit + ( QWidget * parent = 0 ) + + + QLineEdit + QLineEdit-2 + ( const QString & contents, QWidget * parent = 0 ) + + + backspace + backspace + () + + + clear + clear + () + + + contextMenuEvent + contextMenuEvent + ( QContextMenuEvent * event ) + + + copy + copy + () + + + createStandardContextMenu + createStandardContextMenu + () + + + cursorBackward + cursorBackward + ( bool mark, int steps = 1 ) + + + cursorForward + cursorForward + ( bool mark, int steps = 1 ) + + + cursorPositionAt + cursorPositionAt + ( const QPoint & pos ) + + + cursorPositionChanged + cursorPositionChanged + ( int old, int new ) + + + cursorWordBackward + cursorWordBackward + ( bool mark ) + + + cursorWordForward + cursorWordForward + ( bool mark ) + + + cut + cut + () + + + del + del + () + + + deselect + deselect + () + + + editingFinished + editingFinished + () + + + end + end + ( bool mark ) + + + home + home + ( bool mark ) + + + insert + insert + ( const QString & newText ) + + + keyPressEvent + keyPressEvent + ( QKeyEvent * event ) + + + minimumSizeHint + minimumSizeHint + () + + + paste + paste + () + + + redo + redo + () + + + returnPressed + returnPressed + () + + + selectAll + selectAll + () + + + selectionChanged + selectionChanged + () + + + selectionStart + selectionStart + () + + + setSelection + setSelection + ( int start, int length ) + + + setValidator + setValidator + ( const QValidator * v ) + + + sizeHint + sizeHint + () + + + textChanged + textChanged + ( const QString & text ) + + + textEdited + textEdited + ( const QString & text ) + + + undo + undo + () + + + validator + validator + () + + + QLineEdit + QLineEdit-3 + ( QWidget * parent, const char * name ) + + + QLineEdit + QLineEdit-4 + ( const QString & contents, QWidget * parent, const char * name ) + + + QLineEdit + QLineEdit-5 + ( const QString & contents, const QString & inputMask, QWidget * parent = 0, const char * name = 0 ) + + + characterAt + characterAt + ( int xpos, QChar * chr ) + + + clearModified + clearModified + () + + + clearValidator + clearValidator + () + + + cursorLeft + cursorLeft + ( bool mark, int steps = 1 ) + + + cursorRight + cursorRight + ( bool mark, int steps = 1 ) + + + edited + edited + () + + + frame + frame + () + + + getSelection + getSelection + ( int * start, int * end ) + + + hasMarkedText + hasMarkedText + () + + + lostFocus + lostFocus + () + + + markedText + markedText + () + + + repaintArea + repaintArea + ( int a, int b ) + + + setEdited + setEdited + ( bool on ) + + + validateAndSet + validateAndSet + ( const QString & newText, int newPos, int newMarkAnchor, int newMarkDrag ) + + + + QLineF + qlinef.html + + IntersectType + IntersectType-enum + + + + QLineF + QLineF + () + + + QLineF + QLineF-2 + ( const QPointF & p1, const QPointF & p2 ) + + + QLineF + QLineF-3 + ( qreal x1, qreal y1, qreal x2, qreal y2 ) + + + QLineF + QLineF-4 + ( const QLine & line ) + + + p1 + p1 + () + + + p2 + p2 + () + + + x1 + x1 + () + + + x2 + x2 + () + + + y1 + y1 + () + + + y2 + y2 + () + + + angle + angle + ( const QLineF & line ) + + + dx + dx + () + + + dy + dy + () + + + intersect + intersect + ( const QLineF & line, QPointF * intersectionPoint ) + + + isNull + isNull + () + + + length + length + () + + + normalVector + normalVector + () + + + pointAt + pointAt + ( qreal t ) + + + setLength + setLength + ( qreal length ) + + + toLine + toLine + () + + + translate + translate + ( const QPointF & offset ) + + + translate + translate-2 + ( qreal dx, qreal dy ) + + + unitVector + unitVector + () + + + operator!= + operator-not-eq + ( const QLineF & line ) + + + operator== + operator-eq-eq + ( const QLineF & line ) + + + + QLine + qline.html + + QLine + QLine + () + + + QLine + QLine-2 + ( const QPoint & p1, const QPoint & p2 ) + + + QLine + QLine-3 + ( int x1, int y1, int x2, int y2 ) + + + p1 + p1 + () + + + p2 + p2 + () + + + x1 + x1 + () + + + x2 + x2 + () + + + y1 + y1 + () + + + y2 + y2 + () + + + dx + dx + () + + + dy + dy + () + + + isNull + isNull + () + + + translate + translate + ( const QPoint & offset ) + + + translate + translate-2 + ( int dx, int dy ) + + + operator!= + operator-not-eq + ( const QLine & line ) + + + operator== + operator-eq-eq + ( const QLine & line ) + + + + QLinkedList::const_iterator + qlinkedlist-const-iterator.html + + const_iterator + const_iterator + () + + + const_iterator + const_iterator-3 + ( const const_iterator & other ) + + + const_iterator + const_iterator-4 + ( iterator other ) + + + operator!= + operator-not-eq + ( const const_iterator & other ) + + + operator* + operator-2a + () + + + operator+ + operator-2b + ( int j ) + + + operator++ + operator-2b-2b + () + + + operator++ + operator-2b-2b-2 + ( int ) + + + operator+= + operator-2b-eq + ( int j ) + + + operator- + operator- + ( int j ) + + + operator-- + operator-- + () + + + operator-- + operator---2 + ( int ) + + + operator-= + operator--eq + ( int j ) + + + operator-& + operator--gt + gt;() + + + operator= + operator-eq + ( const const_iterator & other ) + + + operator== + operator-eq-eq + ( const const_iterator & other ) + + + + QLinkedList + qlinkedlist.html + + ConstIterator + ConstIterator-typedef + + + + Iterator + Iterator-typedef + + + + const_pointer + const_pointer-typedef + + + + const_reference + const_reference-typedef + + + + pointer + pointer-typedef + + + + reference + reference-typedef + + + + size_type + size_type-typedef + + + + value_type + value_type-typedef + + + + QLinkedList + QLinkedList + () + + + QLinkedList + QLinkedList-2 + ( const QLinkedList<T> & other ) + + + append + append + ( const T & value ) + + + back + back + () + + + back + back-2 + () + + + begin + begin + () + + + begin + begin-2 + () + + + clear + clear + () + + + constBegin + constBegin + () + + + constEnd + constEnd + () + + + contains + contains + ( const T & value ) + + + count + count + ( const T & value ) + + + count + count-2 + () + + + empty + empty + () + + + end + end + () + + + end + end-2 + () + + + erase + erase + ( iterator pos ) + + + erase + erase-2 + ( iterator begin, iterator end ) + + + first + first + () + + + first + first-2 + () + + + fromStdList + fromStdList + ( const std::list<T> & list ) + + + front + front + () + + + front + front-2 + () + + + insert + insert + ( iterator before, const T & value ) + + + isEmpty + isEmpty + () + + + last + last + () + + + last + last-2 + () + + + pop_back + pop_back + () + + + pop_front + pop_front + () + + + prepend + prepend + ( const T & value ) + + + push_back + push_back + ( const T & value ) + + + push_front + push_front + ( const T & value ) + + + removeAll + removeAll + ( const T & value ) + + + removeFirst + removeFirst + () + + + removeLast + removeLast + () + + + size + size + () + + + takeFirst + takeFirst + () + + + takeLast + takeLast + () + + + list + toStdList + <T> QLinkedList::toStdList() + + + operator!= + operator-not-eq + ( const QLinkedList<T> & other ) + + + operator+ + operator-2b + ( const QLinkedList<T> & other ) + + + operator+= + operator-2b-eq + ( const QLinkedList<T> & other ) + + + operator+= + operator-2b-eq-2 + ( const T & value ) + + + operator<< + operator-lt-lt + ( const QLinkedList<T> & other ) + + + operator<< + operator-lt-lt-2 + ( const T & value ) + + + operator= + operator-eq + ( const QLinkedList<T> & other ) + + + operator== + operator-eq-eq + ( const QLinkedList<T> & other ) + + + + QLinkedList::iterator + qlinkedlist-iterator.html + + iterator + iterator + () + + + iterator + iterator-3 + ( const iterator & other ) + + + operator!= + operator-not-eq + ( const iterator & other ) + + + operator!= + operator-not-eq-2 + ( const const_iterator & other ) + + + operator* + operator-2a + () + + + operator+ + operator-2b + ( int j ) + + + operator++ + operator-2b-2b + () + + + operator++ + operator-2b-2b-2 + ( int ) + + + operator+= + operator-2b-eq + ( int j ) + + + operator- + operator- + ( int j ) + + + operator-- + operator-- + () + + + operator-- + operator---2 + ( int ) + + + operator-= + operator--eq + ( int j ) + + + operator-& + operator--gt + gt;() + + + operator= + operator-eq + ( const iterator & other ) + + + operator== + operator-eq-eq + ( const iterator & other ) + + + operator== + operator-eq-eq-2 + ( const const_iterator & other ) + + + + QLinkedListIterator + qlinkedlistiterator.html + + QLinkedListIterator + QLinkedListIterator + ( const QLinkedList<T> & list ) + + + findNext + findNext + ( const T & value ) + + + findPrevious + findPrevious + ( const T & value ) + + + hasNext + hasNext + () + + + hasPrevious + hasPrevious + () + + + next + next + () + + + peekNext + peekNext + () + + + peekPrevious + peekPrevious + () + + + previous + previous + () + + + toBack + toBack + () + + + toFront + toFront + () + + + operator= + operator-eq + ( const QLinkedList<T> & list ) + + + find + find + ( iterator from, const T & t ) + + + find + find-2 + ( const T & t ) + + + find + find-3 + ( const_iterator from, const T & t ) + + + find + find-4 + ( const T & t ) + + + findIndex + findIndex + ( const T & t ) + + + remove + remove + ( iterator pos ) + + + + QLinuxFbScreen + qlinuxfbscreen.html + + QLinuxFbScreen + QLinuxFbScreen + ( int displayId ) + + + cache + cache + ( int amount ) + + + clearCache + clearCache + ( QScreen * instance, int clientId ) + + + deleteEntry + deleteEntry + ( uchar * memoryBlock ) + + + set + set + ( unsigned int index, unsigned int red, unsigned int green, unsigned int blue ) + + + uncache + uncache + ( uchar * memoryBlock ) + + + useOffscreen + useOffscreen + () + + + + QList::const_iterator + qlist-const-iterator.html + + const_iterator + const_iterator + () + + + const_iterator + const_iterator-3 + ( const const_iterator & other ) + + + const_iterator + const_iterator-4 + ( const iterator & other ) + + + operator!= + operator-not-eq + ( const const_iterator & other ) + + + operator* + operator-2a + () + + + operator+ + operator-2b + ( int j ) + + + operator++ + operator-2b-2b + () + + + operator++ + operator-2b-2b-2 + ( int ) + + + operator+= + operator-2b-eq + ( int j ) + + + operator- + operator- + ( int j ) + + + operator- + operator--2 + ( const_iterator other ) + + + operator-- + operator-- + () + + + operator-- + operator---2 + ( int ) + + + operator-= + operator--eq + ( int j ) + + + operator-& + operator--gt + gt;() + + + operator< + operator-lt + ( const const_iterator & other ) + + + operator<= + operator-lt-eq + ( const const_iterator & other ) + + + operator== + operator-eq-eq + ( const const_iterator & other ) + + + operator> + operator-gt + ( const const_iterator & other ) + + + operator>= + operator-gt-eq + ( const const_iterator & other ) + + + operator[] + operator-5b-5d + ( int j ) + + + + QList + qlist.html + + ConstIterator + ConstIterator-typedef + + + + Iterator + Iterator-typedef + + + + const_pointer + const_pointer-typedef + + + + const_reference + const_reference-typedef + + + + pointer + pointer-typedef + + + + reference + reference-typedef + + + + size_type + size_type-typedef + + + + value_type + value_type-typedef + + + + QList + QList + () + + + QList + QList-2 + ( const QList<T> & other ) + + + append + append + ( const T & value ) + + + at + at + ( int i ) + + + back + back + () + + + back + back-2 + () + + + begin + begin + () + + + begin + begin-2 + () + + + clear + clear + () + + + constBegin + constBegin + () + + + constEnd + constEnd + () + + + contains + contains + ( const T & value ) + + + count + count + ( const T & value ) + + + count + count-2 + () + + + empty + empty + () + + + end + end + () + + + end + end-2 + () + + + erase + erase + ( iterator pos ) + + + erase + erase-2 + ( iterator begin, iterator end ) + + + first + first + () + + + first + first-2 + () + + + fromSet + fromSet + ( const QSet<T> & set ) + + + fromStdList + fromStdList + ( const std::list<T> & list ) + + + fromVector + fromVector + ( const QVector<T> & vector ) + + + front + front + () + + + front + front-2 + () + + + indexOf + indexOf + ( const T & value, int from = 0 ) + + + insert + insert + ( int i, const T & value ) + + + insert + insert-2 + ( iterator before, const T & value ) + + + isEmpty + isEmpty + () + + + last + last + () + + + last + last-2 + () + + + lastIndexOf + lastIndexOf + ( const T & value, int from = -1 ) + + + mid + mid + ( int pos, int length = -1 ) + + + move + move + ( int from, int to ) + + + pop_back + pop_back + () + + + pop_front + pop_front + () + + + prepend + prepend + ( const T & value ) + + + push_back + push_back + ( const T & value ) + + + push_front + push_front + ( const T & value ) + + + removeAll + removeAll + ( const T & value ) + + + removeAt + removeAt + ( int i ) + + + removeFirst + removeFirst + () + + + removeLast + removeLast + () + + + replace + replace + ( int i, const T & value ) + + + size + size + () + + + swap + swap + ( int i, int j ) + + + takeAt + takeAt + ( int i ) + + + takeFirst + takeFirst + () + + + takeLast + takeLast + () + + + toSet + toSet + () + + + list + toStdList + <T> QList::toStdList() + + + toVector + toVector + () + + + value + value + ( int i ) + + + value + value-2 + ( int i, const T & defaultValue ) + + + operator!= + operator-not-eq + ( const QList<T> & other ) + + + operator+ + operator-2b + ( const QList<T> & other ) + + + operator+= + operator-2b-eq + ( const QList<T> & other ) + + + operator+= + operator-2b-eq-2 + ( const T & value ) + + + operator<< + operator-lt-lt + ( const QList<T> & other ) + + + operator<< + operator-lt-lt-2 + ( const T & value ) + + + operator= + operator-eq + ( const QList<T> & other ) + + + operator== + operator-eq-eq + ( const QList<T> & other ) + + + operator[] + operator-5b-5d + ( int i ) + + + operator[] + operator-5b-5d-2 + ( int i ) + + + + QList::iterator + qlist-iterator.html + + iterator + iterator + () + + + iterator + iterator-3 + ( const iterator & other ) + + + operator!= + operator-not-eq + ( const iterator & other ) + + + operator!= + operator-not-eq-2 + ( const const_iterator & other ) + + + operator* + operator-2a + () + + + operator+ + operator-2b + ( int j ) + + + operator++ + operator-2b-2b + () + + + operator++ + operator-2b-2b-2 + ( int ) + + + operator+= + operator-2b-eq + ( int j ) + + + operator- + operator- + ( int j ) + + + operator- + operator--2 + ( iterator other ) + + + operator-- + operator-- + () + + + operator-- + operator---2 + ( int ) + + + operator-= + operator--eq + ( int j ) + + + operator-& + operator--gt + gt;() + + + operator< + operator-lt + ( const iterator & other ) + + + operator< + operator-lt-2 + ( const const_iterator & other ) + + + operator<= + operator-lt-eq + ( const iterator & other ) + + + operator<= + operator-lt-eq-2 + ( const const_iterator & other ) + + + operator== + operator-eq-eq + ( const iterator & other ) + + + operator== + operator-eq-eq-2 + ( const const_iterator & other ) + + + operator> + operator-gt + ( const iterator & other ) + + + operator> + operator-gt-2 + ( const const_iterator & other ) + + + operator>= + operator-gt-eq + ( const iterator & other ) + + + operator>= + operator-gt-eq-2 + ( const const_iterator & other ) + + + operator[] + operator-5b-5d + ( int j ) + + + + QListIterator + qlistiterator.html + + QListIterator + QListIterator + ( const QList<T> & list ) + + + findNext + findNext + ( const T & value ) + + + findPrevious + findPrevious + ( const T & value ) + + + hasNext + hasNext + () + + + hasPrevious + hasPrevious + () + + + next + next + () + + + peekNext + peekNext + () + + + peekPrevious + peekPrevious + () + + + previous + previous + () + + + toBack + toBack + () + + + toFront + toFront + () + + + operator= + operator-eq + ( const QList<T> & list ) + + + find + find + ( const T & t ) + + + find + find-2 + ( const T & t ) + + + find + find-3 + ( iterator from, const T & t ) + + + find + find-4 + ( const_iterator from, const T & t ) + + + findIndex + findIndex + ( const T & t ) + + + remove + remove + ( iterator pos ) + + + remove + remove-2 + ( const T & t ) + + + + QListView + qlistview.html + + Flow + Flow-enum + + + + LayoutMode + LayoutMode-enum + + + + Movement + Movement-enum + + + + ResizeMode + ResizeMode-enum + + + + ViewMode + ViewMode-enum + + + + QListView + QListView + ( QWidget * parent = 0 ) + + + clearPropertyFlags + clearPropertyFlags + () + + + event + event + ( QEvent * e ) + + + isRowHidden + isRowHidden + ( int row ) + + + rectForIndex + rectForIndex + ( const QModelIndex & index ) + + + setPositionForIndex + setPositionForIndex + ( const QPoint & position, const QModelIndex & index ) + + + setRowHidden + setRowHidden + ( int row, bool hide ) + + + + QListWidget + qlistwidget.html + + QListWidget + QListWidget + ( QWidget * parent = 0 ) + + + addItem + addItem + ( const QString & label ) + + + addItem + addItem-2 + ( QListWidgetItem * item ) + + + addItems + addItems + ( const QStringList & labels ) + + + clear + clear + () + + + closePersistentEditor + closePersistentEditor + ( QListWidgetItem * item ) + + + currentItem + currentItem + () + + + currentItemChanged + currentItemChanged + ( QListWidgetItem * current, QListWidgetItem * previous ) + + + currentRowChanged + currentRowChanged + ( int currentRow ) + + + currentTextChanged + currentTextChanged + ( const QString & currentText ) + + + dropMimeData + dropMimeData + ( int index, const QMimeData * data, Qt::DropAction action ) + + + editItem + editItem + ( QListWidgetItem * item ) + + + event + event + ( QEvent * e ) + + + findItems + findItems + ( const QString & text, Qt::MatchFlags flags ) + + + indexFromItem + indexFromItem + ( QListWidgetItem * item ) + + + insertItem + insertItem + ( int row, QListWidgetItem * item ) + + + insertItem + insertItem-2 + ( int row, const QString & label ) + + + insertItems + insertItems + ( int row, const QStringList & labels ) + + + isItemHidden + isItemHidden + ( const QListWidgetItem * item ) + + + isItemSelected + isItemSelected + ( const QListWidgetItem * item ) + + + item + item + ( int row ) + + + itemActivated + itemActivated + ( QListWidgetItem * item ) + + + itemAt + itemAt + ( const QPoint & p ) + + + itemAt + itemAt-2 + ( int x, int y ) + + + itemChanged + itemChanged + ( QListWidgetItem * item ) + + + itemClicked + itemClicked + ( QListWidgetItem * item ) + + + itemDoubleClicked + itemDoubleClicked + ( QListWidgetItem * item ) + + + itemEntered + itemEntered + ( QListWidgetItem * item ) + + + itemFromIndex + itemFromIndex + ( const QModelIndex & index ) + + + itemPressed + itemPressed + ( QListWidgetItem * item ) + + + itemSelectionChanged + itemSelectionChanged + () + + + itemWidget + itemWidget + ( QListWidgetItem * item ) + + + items + items + ( const QMimeData * data ) + + + mimeData + mimeData + ( const QList<QListWidgetItem *> items ) + + + mimeTypes + mimeTypes + () + + + openPersistentEditor + openPersistentEditor + ( QListWidgetItem * item ) + + + row + row + ( const QListWidgetItem * item ) + + + scrollToItem + scrollToItem + ( const QListWidgetItem * item, QAbstractItemView::ScrollHint hint = EnsureVisible ) + + + selectedItems + selectedItems + () + + + setCurrentItem + setCurrentItem + ( QListWidgetItem * item ) + + + setItemHidden + setItemHidden + ( const QListWidgetItem * item, bool hide ) + + + setItemSelected + setItemSelected + ( const QListWidgetItem * item, bool select ) + + + setItemWidget + setItemWidget + ( QListWidgetItem * item, QWidget * widget ) + + + sortItems + sortItems + ( Qt::SortOrder order = Qt::AscendingOrder ) + + + DropActions + supportedDropActions + QListWidget::supportedDropActions() + + + takeItem + takeItem + ( int row ) + + + visualItemRect + visualItemRect + ( const QListWidgetItem * item ) + + + + QListWidgetItem + qlistwidgetitem.html + + QListWidgetItem + QListWidgetItem + ( QListWidget * parent = 0, int type = Type ) + + + QListWidgetItem + QListWidgetItem-2 + ( const QString & text, QListWidget * parent = 0, int type = Type ) + + + QListWidgetItem + QListWidgetItem-3 + ( const QIcon & icon, const QString & text, QListWidget * parent = 0, int type = Type ) + + + QListWidgetItem + QListWidgetItem-4 + ( const QListWidgetItem & other ) + + + backgroundColor + backgroundColor + () + + + CheckState + checkState + QListWidgetItem::checkState() + + + clone + clone + () + + + data + data + ( int role ) + + + ItemFlags + flags + QListWidgetItem::flags() + + + font + font + () + + + icon + icon + () + + + listWidget + listWidget + () + + + read + read + ( QDataStream & in ) + + + setBackgroundColor + setBackgroundColor + ( const QColor & color ) + + + setCheckState + setCheckState + ( Qt::CheckState state ) + + + setData + setData + ( int role, const QVariant & value ) + + + setFlags + setFlags + ( Qt::ItemFlags flags ) + + + setFont + setFont + ( const QFont & font ) + + + setIcon + setIcon + ( const QIcon & icon ) + + + setSizeHint + setSizeHint + ( const QSize & size ) + + + setStatusTip + setStatusTip + ( const QString & statusTip ) + + + setText + setText + ( const QString & text ) + + + setTextAlignment + setTextAlignment + ( int alignment ) + + + setTextColor + setTextColor + ( const QColor & color ) + + + setToolTip + setToolTip + ( const QString & toolTip ) + + + setWhatsThis + setWhatsThis + ( const QString & whatsThis ) + + + sizeHint + sizeHint + () + + + statusTip + statusTip + () + + + text + text + () + + + textAlignment + textAlignment + () + + + textColor + textColor + () + + + toolTip + toolTip + () + + + type + type + () + + + whatsThis + whatsThis + () + + + write + write + ( QDataStream & out ) + + + operator< + operator-lt + ( const QListWidgetItem & other ) + + + operator= + operator-eq + ( const QListWidgetItem & other ) + + + Type + Type-var + + + + UserType + UserType-var + + + + + QLocale + qlocale.html + + Country + Country-enum + + + + FormatType + FormatType-enum + + + + Language + Language-enum + + + + QLocale + QLocale + () + + + QLocale + QLocale-2 + ( const QString & name ) + + + QLocale + QLocale-3 + ( Language language, Country country = AnyCountry ) + + + QLocale + QLocale-4 + ( const QLocale & other ) + + + c + c + () + + + country + country + () + + + countryToString + countryToString + ( Country country ) + + + dateFormat + dateFormat + ( FormatType format = LongFormat ) + + + decimalPoint + decimalPoint + () + + + exponential + exponential + () + + + groupSeparator + groupSeparator + () + + + language + language + () + + + languageToString + languageToString + ( Language language ) + + + name + name + () + + + negativeSign + negativeSign + () + + + percent + percent + () + + + setDefault + setDefault + ( const QLocale & locale ) + + + system + system + () + + + timeFormat + timeFormat + ( FormatType format = LongFormat ) + + + toDouble + toDouble + ( const QString & s, bool * ok = 0 ) + + + toFloat + toFloat + ( const QString & s, bool * ok = 0 ) + + + toInt + toInt + ( const QString & s, bool * ok = 0, int base = 0 ) + + + toLongLong + toLongLong + ( const QString & s, bool * ok = 0, int base = 0 ) + + + toShort + toShort + ( const QString & s, bool * ok = 0, int base = 0 ) + + + toString + toString + ( qlonglong i ) + + + toString + toString-2 + ( const QDate & date, const QString & format ) + + + toString + toString-3 + ( const QDate & date, FormatType format = LongFormat ) + + + toString + toString-4 + ( const QTime & time, const QString & format ) + + + toString + toString-5 + ( const QTime & time, FormatType format = LongFormat ) + + + toString + toString-6 + ( qulonglong i ) + + + toString + toString-7 + ( double i, char f = 'g', int prec = 6 ) + + + toString + toString-8 + ( short i ) + + + toString + toString-9 + ( ushort i ) + + + toString + toString-10 + ( int i ) + + + toString + toString-11 + ( uint i ) + + + toString + toString-12 + ( float i, char f = 'g', int prec = 6 ) + + + toUInt + toUInt + ( const QString & s, bool * ok = 0, int base = 0 ) + + + toULongLong + toULongLong + ( const QString & s, bool * ok = 0, int base = 0 ) + + + toUShort + toUShort + ( const QString & s, bool * ok = 0, int base = 0 ) + + + zeroDigit + zeroDigit + () + + + operator!= + operator-not-eq + ( const QLocale & other ) + + + operator= + operator-eq + ( const QLocale & other ) + + + operator== + operator-eq-eq + ( const QLocale & other ) + + + + QMacMime + qmacmime.html + + QMacMime + QMacMime + ( char t ) + + + all + all + ( QMacMimeType t ) + + + canConvert + canConvert + ( const QString & mime, int flav ) + + + convertFromMime + convertFromMime + ( const QString & mime, QVariant data, int flav ) + + + convertToMime + convertToMime + ( const QString & mime, QList<QByteArray> data, int flav ) + + + convertor + convertor + ( QMacMimeType t, const QString & mime, int flav ) + + + convertorName + convertorName + () + + + countFlavors + countFlavors + () + + + flavor + flavor + ( int index ) + + + flavorFor + flavorFor + ( const QString & mime ) + + + flavorToMime + flavorToMime + ( QMacMimeType t, int flav ) + + + mimeFor + mimeFor + ( int flav ) + + + + QMacStyle + qmacstyle.html + + FocusRectPolicy + FocusRectPolicy-enum + + + + WidgetSizePolicy + WidgetSizePolicy-enum + + + + QMacStyle + QMacStyle + () + + + focusRectPolicy + focusRectPolicy + ( const QWidget * w ) + + + setFocusRectPolicy + setFocusRectPolicy + ( QWidget * w, FocusRectPolicy policy ) + + + setWidgetSizePolicy + setWidgetSizePolicy + ( const QWidget * w, WidgetSizePolicy policy ) + + + widgetSizePolicy + widgetSizePolicy + ( const QWidget * w ) + + + + QMainWindow + qmainwindow.html + + ToolButtonStyle + toolButtonStyle-prop + + + + QMainWindow + QMainWindow + ( QWidget * parent = 0, Qt::WFlags flags = 0 ) + + + addDockWidget + addDockWidget + ( Qt::DockWidgetArea area, QDockWidget * dockwidget ) + + + addDockWidget + addDockWidget-2 + ( Qt::DockWidgetArea area, QDockWidget * dockwidget, Qt::Orientation orientation ) + + + addToolBar + addToolBar + ( Qt::ToolBarArea area, QToolBar * toolbar ) + + + addToolBar + addToolBar-2 + ( QToolBar * toolbar ) + + + addToolBar + addToolBar-3 + ( const QString & title ) + + + addToolBarBreak + addToolBarBreak + ( Qt::ToolBarArea area = Qt::TopToolBarArea ) + + + centralWidget + centralWidget + () + + + DockWidgetArea + corner + QMainWindow::corner( Qt::Corner corner ) + + + createPopupMenu + createPopupMenu + () + + + DockWidgetArea + dockWidgetArea + QMainWindow::dockWidgetArea( QDockWidget * dockwidget ) + + + iconSizeChanged + iconSizeChanged + ( const QSize & iconSize ) + + + insertToolBar + insertToolBar + ( QToolBar * before, QToolBar * toolbar ) + + + insertToolBarBreak + insertToolBarBreak + ( QToolBar * before ) + + + menuBar + menuBar + () + + + removeDockWidget + removeDockWidget + ( QDockWidget * dockwidget ) + + + removeToolBar + removeToolBar + ( QToolBar * toolbar ) + + + restoreState + restoreState + ( const QByteArray & state, int version = 0 ) + + + saveState + saveState + ( int version = 0 ) + + + setCentralWidget + setCentralWidget + ( QWidget * widget ) + + + setCorner + setCorner + ( Qt::Corner corner, Qt::DockWidgetArea area ) + + + setMenuBar + setMenuBar + ( QMenuBar * menuBar ) + + + setStatusBar + setStatusBar + ( QStatusBar * statusbar ) + + + splitDockWidget + splitDockWidget + ( QDockWidget * first, QDockWidget * second, Qt::Orientation orientation ) + + + statusBar + statusBar + () + + + ToolBarArea + toolBarArea + QMainWindow::toolBarArea( QToolBar * toolbar ) + + + toolButtonStyleChanged + toolButtonStyleChanged + ( Qt::ToolButtonStyle toolButtonStyle ) + + + QMainWindow + QMainWindow-2 + ( QWidget * parent, const char * name, Qt::WFlags flags = 0 ) + + + + QMap::const_iterator + qmap-const-iterator.html + + const_iterator + const_iterator + () + + + const_iterator + const_iterator-3 + ( const iterator & other ) + + + key + key + () + + + value + value + () + + + operator!= + operator-not-eq + ( const const_iterator & other ) + + + operator* + operator-2a + () + + + operator+ + operator-2b + ( int j ) + + + operator++ + operator-2b-2b + () + + + operator++ + operator-2b-2b-2 + ( int ) + + + operator+= + operator-2b-eq + ( int j ) + + + operator- + operator- + ( int j ) + + + operator-- + operator-- + () + + + operator-- + operator---2 + ( int ) + + + operator-= + operator--eq + ( int j ) + + + operator-& + operator--gt + gt;() + + + operator== + operator-eq-eq + ( const const_iterator & other ) + + + data + data + () + + + + QMap + qmap.html + + ConstIterator + ConstIterator-typedef + + + + Iterator + Iterator-typedef + + + + QMap + QMap + () + + + QMap + QMap-2 + ( const QMap<Key, T> & other ) + + + QMap + QMap-3 + ( const std::map<Key, T> & other ) + + + begin + begin + () + + + begin + begin-2 + () + + + clear + clear + () + + + constBegin + constBegin + () + + + constEnd + constEnd + () + + + constFind + constFind + ( const Key & key ) + + + contains + contains + ( const Key & key ) + + + count + count + ( const Key & key ) + + + count + count-2 + () + + + empty + empty + () + + + end + end + () + + + end + end-2 + () + + + erase + erase + ( iterator pos ) + + + find + find + ( const Key & key ) + + + find + find-2 + ( const Key & key ) + + + insert + insert + ( const Key & key, const T & value ) + + + insertMulti + insertMulti + ( const Key & key, const T & value ) + + + isEmpty + isEmpty + () + + + key + key + ( const T & value ) + + + keys + keys + () + + + keys + keys-2 + ( const T & value ) + + + lowerBound + lowerBound + ( const Key & key ) + + + lowerBound + lowerBound-2 + ( const Key & key ) + + + remove + remove + ( const Key & key ) + + + size + size + () + + + take + take + ( const Key & key ) + + + map + toStdMap + <Key, T> QMap::toStdMap() + + + unite + unite + ( const QMap<Key, T> & other ) + + + upperBound + upperBound + ( const Key & key ) + + + upperBound + upperBound-2 + ( const Key & key ) + + + value + value + ( const Key & key ) + + + value + value-2 + ( const Key & key, const T & defaultValue ) + + + values + values + () + + + values + values-2 + ( const Key & key ) + + + operator!= + operator-not-eq + ( const QMap<Key, T> & other ) + + + operator= + operator-eq + ( const QMap<Key, T> & other ) + + + operator== + operator-eq-eq + ( const QMap<Key, T> & other ) + + + operator[] + operator-5b-5d + ( const Key & key ) + + + operator[] + operator-5b-5d-2 + ( const Key & key ) + + + + QMap::iterator + qmap-iterator.html + + iterator + iterator + () + + + key + key + () + + + value + value + () + + + operator!= + operator-not-eq + ( const iterator & other ) + + + operator!= + operator-not-eq-2 + ( const const_iterator & other ) + + + operator* + operator-2a + () + + + operator+ + operator-2b + ( int j ) + + + operator++ + operator-2b-2b + () + + + operator++ + operator-2b-2b-2 + ( int ) + + + operator+= + operator-2b-eq + ( int j ) + + + operator- + operator- + ( int j ) + + + operator-- + operator-- + () + + + operator-- + operator---2 + ( int ) + + + operator-= + operator--eq + ( int j ) + + + operator-& + operator--gt + gt;() + + + operator== + operator-eq-eq + ( const iterator & other ) + + + operator== + operator-eq-eq-2 + ( const const_iterator & other ) + + + + QMapIterator + qmapiterator.html + + QMapIterator + QMapIterator + ( const QMap<Key, T> & map ) + + + findNext + findNext + ( const T & value ) + + + findPrevious + findPrevious + ( const T & value ) + + + hasNext + hasNext + () + + + hasPrevious + hasPrevious + () + + + key + key + () + + + next + next + () + + + peekNext + peekNext + () + + + peekPrevious + peekPrevious + () + + + previous + previous + () + + + toBack + toBack + () + + + toFront + toFront + () + + + value + value + () + + + operator= + operator-eq + ( const QMap<Key, T> & map ) + + + data + data + () + + + erase + erase-2 + ( const Key & key ) + + + insert + insert-2 + ( const Key & key, const T & value, bool overwrite ) + + + remove + remove-2 + ( iterator it ) + + + replace + replace + ( const Key & key, const T & value ) + + + + QMatrix + qmatrix.html + + QMatrix + QMatrix + () + + + QMatrix + QMatrix-2 + ( qreal m11, qreal m12, qreal m21, qreal m22, qreal dx, qreal dy ) + + + QMatrix + QMatrix-3 + ( const QMatrix & matrix ) + + + m11 + m11 + () + + + m12 + m12 + () + + + m21 + m21 + () + + + m22 + m22 + () + + + det + det + () + + + dx + dx + () + + + dy + dy + () + + + inverted + inverted + ( bool * invertible = 0 ) + + + isIdentity + isIdentity + () + + + isInvertible + isInvertible + () + + + map + map + ( qreal x, qreal y, qreal * tx, qreal * ty ) + + + map + map-3 + ( int x, int y, int * tx, int * ty ) + + + map + map-4 + ( const QPointF & point ) + + + map + map-5 + ( const QPoint & point ) + + + map + map-6 + ( const QLineF & line ) + + + map + map-7 + ( const QLine & line ) + + + map + map-8 + ( const QPolygonF & polygon ) + + + map + map-9 + ( const QPolygon & polygon ) + + + map + map-10 + ( const QRegion & region ) + + + map + map-11 + ( const QPainterPath & path ) + + + mapRect + mapRect + ( const QRectF & rectangle ) + + + mapRect + mapRect-2 + ( const QRect & rectangle ) + + + mapToPolygon + mapToPolygon + ( const QRect & rectangle ) + + + reset + reset + () + + + rotate + rotate + ( qreal degrees ) + + + scale + scale + ( qreal sx, qreal sy ) + + + setMatrix + setMatrix + ( qreal m11, qreal m12, qreal m21, qreal m22, qreal dx, qreal dy ) + + + shear + shear + ( qreal sh, qreal sv ) + + + translate + translate + ( qreal dx, qreal dy ) + + + operator!= + operator-not-eq + ( const QMatrix & matrix ) + + + operator* + operator-2a + ( const QMatrix & matrix ) + + + operator*= + operator-2a-eq + ( const QMatrix & matrix ) + + + operator= + operator-eq + ( const QMatrix & matrix ) + + + operator== + operator-eq-eq + ( const QMatrix & matrix ) + + + invert + invert + ( bool * invertible = 0 ) + + + map + map-2 + ( const QRect & rect ) + + + mapToRegion + mapToRegion + ( const QRect & rectangle ) + + + + QMenuBar + qmenubar.html + + QMenuBar + QMenuBar + ( QWidget * parent = 0 ) + + + activeAction + activeAction + () + + + addAction + addAction + ( const QString & text ) + + + addAction + addAction-2 + ( const QString & text, const QObject * receiver, const char * member ) + + + addMenu + addMenu + ( QMenu * menu ) + + + addMenu + addMenu-2 + ( const QString & title ) + + + addMenu + addMenu-3 + ( const QIcon & icon, const QString & title ) + + + addSeparator + addSeparator + () + + + clear + clear + () + + + hovered + hovered + ( QAction * action ) + + + insertMenu + insertMenu + ( QAction * before, QMenu * menu ) + + + setActiveAction + setActiveAction + ( QAction * act ) + + + triggered + triggered + ( QAction * action ) + + + Separator + Separator-enum + + + + QMenuBar + QMenuBar-2 + ( QWidget * parent, const char * name ) + + + accel + accel + ( int id ) + + + activateItemAt + activateItemAt + ( int index ) + + + activated + activated + ( int itemId ) + + + autoGeometry + autoGeometry + () + + + changeItem + changeItem + ( int id, const QString & text ) + + + changeItem + changeItem-2 + ( int id, const QPixmap & pixmap ) + + + changeItem + changeItem-3 + ( int id, const QIcon & icon, const QString & text ) + + + connectItem + connectItem + ( int id, const QObject * receiver, const char * member ) + + + count + count + () + + + disconnectItem + disconnectItem + ( int id, const QObject * receiver, const char * member ) + + + findItem + findItem + ( int id ) + + + frameWidth + frameWidth + () + + + highlighted + highlighted + ( int itemId ) + + + iconSet + iconSet + ( int id ) + + + idAt + idAt + ( int index ) + + + indexOf + indexOf + ( int id ) + + + insertItem + insertItem + ( const QString & text, const QObject * receiver, const char * member, const QKeySequence & shortcut = 0, int id = -1, int index = -1 ) + + + insertItem + insertItem-2 + ( const QIcon & icon, const QString & text, const QObject * receiver, const char * member, const QKeySequence & shortcut = 0, int id = -1, int index = -1 ) + + + insertItem + insertItem-3 + ( const QPixmap & pixmap, const QObject * receiver, const char * member, const QKeySequence & shortcut = 0, int id = -1, int index = -1 ) + + + insertItem + insertItem-4 + ( const QString & text, int id = -1, int index = -1 ) + + + insertItem + insertItem-5 + ( const QIcon & icon, const QString & text, int id = -1, int index = -1 ) + + + insertItem + insertItem-6 + ( const QString & text, QMenu * popup, int id = -1, int index = -1 ) + + + insertItem + insertItem-7 + ( const QIcon & icon, const QString & text, QMenu * popup, int id = -1, int index = -1 ) + + + insertItem + insertItem-8 + ( const QPixmap & pixmap, int id = -1, int index = -1 ) + + + insertItem + insertItem-9 + ( const QPixmap & pixmap, QMenu * popup, int id = -1, int index = -1 ) + + + insertSeparator + insertSeparator + ( int index = -1 ) + + + isItemActive + isItemActive + ( int id ) + + + isItemChecked + isItemChecked + ( int id ) + + + isItemEnabled + isItemEnabled + ( int id ) + + + isItemVisible + isItemVisible + ( int id ) + + + itemAtPos + itemAtPos + ( const QPoint & p ) + + + itemParameter + itemParameter + ( int id ) + + + itemRect + itemRect + ( int index ) + + + pixmap + pixmap + ( int id ) + + + removeItem + removeItem + ( int id ) + + + removeItemAt + removeItemAt + ( int index ) + + + separator + separator + () + + + setAccel + setAccel + ( const QKeySequence & key, int id ) + + + setAutoGeometry + setAutoGeometry + ( bool b ) + + + setItemChecked + setItemChecked + ( int id, bool check ) + + + setItemEnabled + setItemEnabled + ( int id, bool enable ) + + + setItemParameter + setItemParameter + ( int id, int param ) + + + setItemVisible + setItemVisible + ( int id, bool visible ) + + + setSeparator + setSeparator + ( Separator sep ) + + + setWhatsThis + setWhatsThis + ( int id, const QString & w ) + + + text + text + ( int id ) + + + whatsThis + whatsThis + ( int id ) + + + + QMenu + qmenu.html + + QMenu + QMenu + ( QWidget * parent = 0 ) + + + QMenu + QMenu-2 + ( const QString & title, QWidget * parent = 0 ) + + + aboutToShow + aboutToShow + () + + + actionAt + actionAt + ( const QPoint & pt ) + + + actionGeometry + actionGeometry + ( QAction * act ) + + + activeAction + activeAction + () + + + addAction + addAction + ( const QString & text ) + + + addAction + addAction-2 + ( const QIcon & icon, const QString & text ) + + + addAction + addAction-3 + ( const QString & text, const QObject * receiver, const char * member, const QKeySequence & shortcut = 0 ) + + + addAction + addAction-4 + ( const QIcon & icon, const QString & text, const QObject * receiver, const char * member, const QKeySequence & shortcut = 0 ) + + + addMenu + addMenu + ( QMenu * menu ) + + + addMenu + addMenu-2 + ( const QString & title ) + + + addMenu + addMenu-3 + ( const QIcon & icon, const QString & title ) + + + addSeparator + addSeparator + () + + + clear + clear + () + + + columnCount + columnCount + () + + + defaultAction + defaultAction + () + + + exec + exec + () + + + exec + exec-2 + ( const QPoint & p, QAction * action = 0 ) + + + exec + exec-3 + ( QList<QAction *> actions, const QPoint & pos, QAction * at = 0 ) + + + hideTearOffMenu + hideTearOffMenu + () + + + hovered + hovered + ( QAction * action ) + + + insertMenu + insertMenu + ( QAction * before, QMenu * menu ) + + + insertSeparator + insertSeparator + ( QAction * before ) + + + isTearOffMenuVisible + isTearOffMenuVisible + () + + + menuAction + menuAction + () + + + popup + popup + ( const QPoint & p, QAction * atAction = 0 ) + + + setActiveAction + setActiveAction + ( QAction * act ) + + + setDefaultAction + setDefaultAction + ( QAction * act ) + + + triggered + triggered + ( QAction * action ) + + + + QMenuItem + qmenuitem.html + + QMenuItem + QMenuItem + () + + + id + id + () + + + signalValue + signalValue + () + + + aboutToHide + aboutToHide + () + + + accel + accel + ( int id ) + + + activateItemAt + activateItemAt + ( int index ) + + + activated + activated + ( int itemId ) + + + changeItem + changeItem + ( int id, const QString & text ) + + + changeItem + changeItem-2 + ( int id, const QPixmap & pixmap ) + + + changeItem + changeItem-3 + ( int id, const QIcon & icon, const QString & text ) + + + columns + columns + () + + + connectItem + connectItem + ( int id, const QObject * receiver, const char * member ) + + + count + count + () + + + disconnectItem + disconnectItem + ( int id, const QObject * receiver, const char * member ) + + + findItem + findItem + ( int id ) + + + findPopup + findPopup + ( QMenu * popup, int * index ) + + + frameWidth + frameWidth + () + + + highlighted + highlighted + ( int itemId ) + + + iconSet + iconSet + ( int id ) + + + idAt + idAt + ( int index ) + + + indexOf + indexOf + ( int id ) + + + insertItem + insertItem + ( const QString & text, const QObject * receiver, const char * member, const QKeySequence & shortcut = 0, int id = -1, int index = -1 ) + + + insertItem + insertItem-2 + ( const QIcon & icon, const QString & text, const QObject * receiver, const char * member, const QKeySequence & shortcut = 0, int id = -1, int index = -1 ) + + + insertItem + insertItem-3 + ( const QPixmap & pixmap, const QObject * receiver, const char * member, const QKeySequence & shortcut = 0, int id = -1, int index = -1 ) + + + insertItem + insertItem-4 + ( const QString & text, int id = -1, int index = -1 ) + + + insertItem + insertItem-5 + ( const QIcon & icon, const QString & text, int id = -1, int index = -1 ) + + + insertItem + insertItem-6 + ( const QString & text, QMenu * popup, int id = -1, int index = -1 ) + + + insertItem + insertItem-7 + ( const QIcon & icon, const QString & text, QMenu * popup, int id = -1, int index = -1 ) + + + insertItem + insertItem-8 + ( const QPixmap & pixmap, int id = -1, int index = -1 ) + + + insertItem + insertItem-9 + ( const QPixmap & pixmap, QMenu * popup, int id = -1, int index = -1 ) + + + insertItem + insertItem-10 + ( QMenuItem * item, int id = -1, int index = -1 ) + + + insertSeparator + insertSeparator-2 + ( int index = -1 ) + + + insertTearOffHandle + insertTearOffHandle + ( int a = 0, int b = 0 ) + + + isCheckable + isCheckable + () + + + isItemActive + isItemActive + ( int id ) + + + isItemChecked + isItemChecked + ( int id ) + + + isItemEnabled + isItemEnabled + ( int id ) + + + isItemVisible + isItemVisible + ( int id ) + + + itemAtPos + itemAtPos + ( const QPoint & p, bool ignoreSeparator = true ) + + + itemFont + itemFont + ( int id ) + + + itemGeometry + itemGeometry + ( int index ) + + + itemHeight + itemHeight + ( int index ) + + + itemHeight + itemHeight-2 + ( QMenuItem * mi ) + + + itemParameter + itemParameter + ( int id ) + + + pixmap + pixmap + ( int id ) + + + popup + popup-2 + ( const QPoint & pos, int indexAtPoint ) + + + removeItem + removeItem + ( int id ) + + + removeItemAt + removeItemAt + ( int index ) + + + setAccel + setAccel + ( const QKeySequence & key, int id ) + + + setActiveItem + setActiveItem + ( int id ) + + + setCheckable + setCheckable + ( bool checkable ) + + + setId + setId + ( int index, int id ) + + + setItemChecked + setItemChecked + ( int id, bool check ) + + + setItemEnabled + setItemEnabled + ( int id, bool enable ) + + + setItemFont + setItemFont + ( int id, const QFont & font ) + + + setItemParameter + setItemParameter + ( int id, int param ) + + + setItemVisible + setItemVisible + ( int id, bool visible ) + + + setWhatsThis + setWhatsThis + ( int id, const QString & w ) + + + text + text + ( int id ) + + + whatsThis + whatsThis + ( int id ) + + + + QMessageBox + qmessagebox.html + + Button + Button-enum + + + + Icon + Icon-enum + + + + TextFormat + textFormat-prop + + + + QMessageBox + QMessageBox + ( QWidget * parent = 0 ) + + + QMessageBox + QMessageBox-2 + ( const QString & caption, const QString & text, Icon icon, int button0, int button1, int button2, QWidget * parent = 0, Qt::WFlags f = Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint ) + + + about + about + ( QWidget * parent, const QString & caption, const QString & text ) + + + aboutQt + aboutQt + ( QWidget * parent, const QString & caption = QString() + + + buttonText + buttonText + ( int button ) + + + critical + critical + ( QWidget * parent, const QString & caption, const QString & text, int button0, int button1, int button2 = 0 ) + + + critical + critical-2 + ( QWidget * parent, const QString & caption, const QString & text, const QString & button0Text = QString() + + + information + information + ( QWidget * parent, const QString & caption, const QString & text, int button0, int button1 = 0, int button2 = 0 ) + + + information + information-2 + ( QWidget * parent, const QString & caption, const QString & text, const QString & button0Text = QString() + + + question + question + ( QWidget * parent, const QString & caption, const QString & text, int button0, int button1 = 0, int button2 = 0 ) + + + question + question-2 + ( QWidget * parent, const QString & caption, const QString & text, const QString & button0Text = QString() + + + setButtonText + setButtonText + ( int button, const QString & text ) + + + standardIcon + standardIcon-2 + ( Icon icon ) + + + warning + warning + ( QWidget * parent, const QString & caption, const QString & text, int button0, int button1, int button2 = 0 ) + + + warning + warning-2 + ( QWidget * parent, const QString & caption, const QString & text, const QString & button0Text = QString() + + + QMessageBox + QMessageBox-3 + ( const QString & caption, const QString & text, Icon icon, int button0, int button1, int button2, QWidget * parent, const char * name, bool modal, Qt::WFlags f = Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint ) + + + QMessageBox + QMessageBox-4 + ( QWidget * parent, const char * name ) + + + message + message + ( const QString & caption, const QString & text, const QString & buttonText = QString() + + + query + query + ( const QString & caption, const QString & text, const QString & yesButtonText = QString() + + + standardIcon + standardIcon + ( Icon icon, Qt::GUIStyle style ) + + + + QMetaClassInfo + qmetaclassinfo.html + + name + name + () + + + value + value + () + + + + QMetaEnum + qmetaenum.html + + isFlag + isFlag + () + + + isValid + isValid + () + + + key + key + ( int index ) + + + keyCount + keyCount + () + + + keyToValue + keyToValue + ( const char * key ) + + + keysToValue + keysToValue + ( const char * keys ) + + + name + name + () + + + scope + scope + () + + + value + value + ( int index ) + + + valueToKey + valueToKey + ( int value ) + + + valueToKeys + valueToKeys + ( int value ) + + + + QMetaMethod + qmetamethod.html + + MethodType + MethodType-enum + + + + access + access + () + + + methodType + methodType + () + + + parameterNames + parameterNames + () + + + parameterTypes + parameterTypes + () + + + signature + signature + () + + + tag + tag + () + + + typeName + typeName + () + + + + QMetaObject + qmetaobject.html + + checkConnectArgs + checkConnectArgs + ( const char * signal, const char * method ) + + + classInfo + classInfo + ( int index ) + + + classInfoCount + classInfoCount + () + + + classInfoOffset + classInfoOffset + () + + + className + className + () + + + connectSlotsByName + connectSlotsByName + ( QObject * o ) + + + enumerator + enumerator + ( int index ) + + + enumeratorCount + enumeratorCount + () + + + enumeratorOffset + enumeratorOffset + () + + + indexOfClassInfo + indexOfClassInfo + ( const char * name ) + + + indexOfEnumerator + indexOfEnumerator + ( const char * name ) + + + indexOfMethod + indexOfMethod + ( const char * method ) + + + indexOfProperty + indexOfProperty + ( const char * name ) + + + indexOfSignal + indexOfSignal + ( const char * signal ) + + + indexOfSlot + indexOfSlot + ( const char * slot ) + + + invokeMethod + invokeMethod + ( QObject * obj, const char * member, Qt::ConnectionType type, QGenericReturnArgument ret, QGenericArgument val0 = QGenericArgument( 0 ) + + + invokeMethod + invokeMethod-2 + ( QObject * obj, const char * member, QGenericReturnArgument ret, QGenericArgument val0 = QGenericArgument( 0 ) + + + invokeMethod + invokeMethod-3 + ( QObject * obj, const char * member, Qt::ConnectionType type, QGenericArgument val0 = QGenericArgument( 0 ) + + + invokeMethod + invokeMethod-4 + ( QObject * obj, const char * member, QGenericArgument val0 = QGenericArgument( 0 ) + + + method + method + ( int index ) + + + methodCount + methodCount + () + + + methodOffset + methodOffset + () + + + normalizedSignature + normalizedSignature + ( const char * method ) + + + property + property + ( int index ) + + + propertyCount + propertyCount + () + + + propertyOffset + propertyOffset + () + + + superClass + superClass + () + + + + QMetaProperty + qmetaproperty.html + + enumerator + enumerator + () + + + isDesignable + isDesignable + ( const QObject * object = 0 ) + + + isEditable + isEditable + ( const QObject * object = 0 ) + + + isEnumType + isEnumType + () + + + isFlagType + isFlagType + () + + + isReadable + isReadable + () + + + isResettable + isResettable + () + + + isScriptable + isScriptable + ( const QObject * object = 0 ) + + + isStored + isStored + ( const QObject * object = 0 ) + + + isUser + isUser + ( const QObject * object = 0 ) + + + isValid + isValid + () + + + isWritable + isWritable + () + + + name + name + () + + + read + read + ( const QObject * object ) + + + reset + reset + ( QObject * object ) + + + Type + type + QMetaProperty::type() + + + typeName + typeName + () + + + write + write + ( QObject * object, const QVariant & value ) + + + + QMetaType + qmetatype.html + + Type + Type-enum + + + + construct + construct + ( int type, const void * copy ) + + + destroy + destroy + ( int type, void * data ) + + + isRegistered + isRegistered + ( int type ) + + + load + load + ( QDataStream & stream, int type, void * data ) + + + save + save + ( QDataStream & stream, int type, const void * data ) + + + type + type + ( const char * typeName ) + + + typeName + typeName + ( int type ) + + + + QMimeData + qmimedata.html + + QMimeData + QMimeData + () + + + clear + clear + () + + + colorData + colorData + () + + + data + data + ( const QString & mimetype ) + + + formats + formats + () + + + hasColor + hasColor + () + + + hasFormat + hasFormat + ( const QString & mimetype ) + + + hasHtml + hasHtml + () + + + hasImage + hasImage + () + + + hasText + hasText + () + + + hasUrls + hasUrls + () + + + html + html + () + + + imageData + imageData + () + + + retrieveData + retrieveData + ( const QString & mimetype, QVariant::Type type ) + + + setColorData + setColorData + ( const QVariant & color ) + + + setData + setData + ( const QString & mimetype, const QByteArray & data ) + + + setHtml + setHtml + ( const QString & html ) + + + setImageData + setImageData + ( const QVariant & image ) + + + setText + setText + ( const QString & text ) + + + setUrls + setUrls + ( const QList<QUrl> & urls ) + + + text + text + () + + + urls + urls + () + + + + QMimeSource + qmimesource.html + + encodedData + encodedData + ( const char * format ) + + + format + format + ( int i = 0 ) + + + provides + provides + ( const char * mimeType ) + + + + QModelIndex + qmodelindex.html + + QModelIndex + QModelIndex + () + + + QModelIndex + QModelIndex-2 + ( const QModelIndex & other ) + + + child + child + ( int row, int column ) + + + column + column + () + + + data + data + ( int role = Qt::DisplayRole ) + + + internalId + internalId + () + + + internalPointer + internalPointer + () + + + isValid + isValid + () + + + model + model + () + + + parent + parent + () + + + row + row + () + + + sibling + sibling + ( int row, int column ) + + + operator!= + operator-not-eq + ( const QModelIndex & other ) + + + operator< + operator-lt + ( const QModelIndex & other ) + + + operator== + operator-eq-eq + ( const QModelIndex & other ) + + + + QMotifStyle + qmotifstyle.html + + QMotifStyle + QMotifStyle + ( bool useHighlightCols = false ) + + + eventFilter + eventFilter + ( QObject * o, QEvent * e ) + + + setUseHighlightColors + setUseHighlightColors + ( bool arg ) + + + useHighlightColors + useHighlightColors + () + + + + QMouseDriverFactory + qmousedriverfactory.html + + create + create + ( const QString & key, const QString & device ) + + + keys + keys + () + + + + QMouseDriverPlugin + qmousedriverplugin.html + + QMouseDriverPlugin + QMouseDriverPlugin + ( QObject * parent = 0 ) + + + create + create + ( const QString & key, const QString & device ) + + + keys + keys + () + + + + QMouseEvent + qmouseevent.html + + QMouseEvent + QMouseEvent + ( Type type, const QPoint & position, Qt::MouseButton button, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers ) + + + QMouseEvent + QMouseEvent-2 + ( Type type, const QPoint & pos, const QPoint & globalPos, Qt::MouseButton button, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers ) + + + MouseButton + button + QMouseEvent::button() + + + MouseButtons + buttons + QMouseEvent::buttons() + + + globalPos + globalPos + () + + + globalX + globalX + () + + + globalY + globalY + () + + + pos + pos + () + + + x + x + () + + + y + y + () + + + QMouseEvent + QMouseEvent-3 + ( Type type, const QPoint & pos, Qt::ButtonState button, int state ) + + + QMouseEvent + QMouseEvent-4 + ( Type type, const QPoint & pos, const QPoint & globalPos, Qt::ButtonState button, int state ) + + + ButtonState + state + QMouseEvent::state() + + + ButtonState + stateAfter + QMouseEvent::stateAfter() + + + + QMoveEvent + qmoveevent.html + + QMoveEvent + QMoveEvent + ( const QPoint & pos, const QPoint & oldPos ) + + + oldPos + oldPos + () + + + pos + pos + () + + + + QMovie + qmovie.html + + CacheMode + CacheMode-enum + + + + MovieState + MovieState-enum + + + + QMovie + QMovie + ( QObject * parent = 0 ) + + + QMovie + QMovie-2 + ( QIODevice * device, const QByteArray & format = QByteArray() + + + QMovie + QMovie-3 + ( const QString & fileName, const QByteArray & format = QByteArray() + + + backgroundColor + backgroundColor + () + + + currentFrameNumber + currentFrameNumber + () + + + currentImage + currentImage + () + + + currentPixmap + currentPixmap + () + + + device + device + () + + + error + error + ( QImageReader::ImageReaderError error ) + + + fileName + fileName + () + + + finished + finished + () + + + format + format + () + + + frameChanged + frameChanged + ( int frameNumber ) + + + frameCount + frameCount + () + + + frameRect + frameRect + () + + + isValid + isValid + () + + + jumpToFrame + jumpToFrame + ( int frameNumber ) + + + jumpToNextFrame + jumpToNextFrame + () + + + loopCount + loopCount + () + + + nextFrameDelay + nextFrameDelay + () + + + resized + resized + ( const QSize & size ) + + + scaledSize + scaledSize + () + + + setBackgroundColor + setBackgroundColor + ( const QColor & color ) + + + setDevice + setDevice + ( QIODevice * device ) + + + setFileName + setFileName + ( const QString & fileName ) + + + setFormat + setFormat + ( const QByteArray & format ) + + + setPaused + setPaused + ( bool paused ) + + + setScaledSize + setScaledSize + ( const QSize & size ) + + + start + start + () + + + started + started + () + + + state + state + () + + + stateChanged + stateChanged + ( QMovie::MovieState state ) + + + stop + stop + () + + + supportedFormats + supportedFormats + () + + + updated + updated + ( const QRect & rect ) + + + finished + finished-2 + () + + + frameImage + frameImage + () + + + frameNumber + frameNumber + () + + + framePixmap + framePixmap + () + + + isNull + isNull + () + + + pause + pause + () + + + paused + paused + () + + + restart + restart + () + + + running + running + () + + + step + step + () + + + unpause + unpause + () + + + + QMultiHash + qmultihash.html + + QMultiHash + QMultiHash + () + + + QMultiHash + QMultiHash-2 + ( const QHash<Key, T> & other ) + + + insert + insert + ( const Key & key, const T & value ) + + + replace + replace + ( const Key & key, const T & value ) + + + operator+ + operator-2b + ( const QMultiHash & other ) + + + operator+= + operator-2b-eq + ( const QMultiHash & other ) + + + + QMultiMap + qmultimap.html + + QMultiMap + QMultiMap + () + + + QMultiMap + QMultiMap-2 + ( const QMap<Key, T> & other ) + + + insert + insert + ( const Key & key, const T & value ) + + + replace + replace + ( const Key & key, const T & value ) + + + operator+ + operator-2b + ( const QMultiMap & other ) + + + operator+= + operator-2b-eq + ( const QMultiMap & other ) + + + + QMutableHashIterator + qmutablehashiterator.html + + QMutableHashIterator + QMutableHashIterator + ( QHash<Key, T> & hash ) + + + findNext + findNext + ( const T & value ) + + + findPrevious + findPrevious + ( const T & value ) + + + hasNext + hasNext + () + + + hasPrevious + hasPrevious + () + + + key + key + () + + + next + next + () + + + peekNext + peekNext + () + + + peekPrevious + peekPrevious + () + + + previous + previous + () + + + remove + remove + () + + + setValue + setValue + ( const T & value ) + + + toBack + toBack + () + + + toFront + toFront + () + + + value + value + () + + + value + value-2 + () + + + operator= + operator-eq + ( QHash<Key, T> & hash ) + + + + QMutableLinkedListIterator + qmutablelinkedlistiterator.html + + QMutableLinkedListIterator + QMutableLinkedListIterator + ( QLinkedList<T> & list ) + + + findNext + findNext + ( const T & value ) + + + findPrevious + findPrevious + ( const T & value ) + + + hasNext + hasNext + () + + + hasPrevious + hasPrevious + () + + + insert + insert + ( const T & value ) + + + next + next + () + + + peekNext + peekNext + () + + + peekPrevious + peekPrevious + () + + + previous + previous + () + + + remove + remove + () + + + setValue + setValue + ( const T & value ) + + + toBack + toBack + () + + + toFront + toFront + () + + + value + value + () + + + value + value-2 + () + + + operator= + operator-eq + ( QLinkedList<T> & list ) + + + + QMutableListIterator + qmutablelistiterator.html + + QMutableListIterator + QMutableListIterator + ( QList<T> & list ) + + + findNext + findNext + ( const T & value ) + + + findPrevious + findPrevious + ( const T & value ) + + + hasNext + hasNext + () + + + hasPrevious + hasPrevious + () + + + insert + insert + ( const T & value ) + + + next + next + () + + + peekNext + peekNext + () + + + peekPrevious + peekPrevious + () + + + previous + previous + () + + + remove + remove + () + + + setValue + setValue + ( const T & value ) + + + toBack + toBack + () + + + toFront + toFront + () + + + value + value + () + + + value + value-2 + () + + + operator= + operator-eq + ( QList<T> & list ) + + + + QMutableMapIterator + qmutablemapiterator.html + + QMutableMapIterator + QMutableMapIterator + ( QMap<Key, T> & map ) + + + findNext + findNext + ( const T & value ) + + + findPrevious + findPrevious + ( const T & value ) + + + hasNext + hasNext + () + + + hasPrevious + hasPrevious + () + + + key + key + () + + + next + next + () + + + peekNext + peekNext + () + + + peekPrevious + peekPrevious + () + + + previous + previous + () + + + remove + remove + () + + + setValue + setValue + ( const T & value ) + + + toBack + toBack + () + + + toFront + toFront + () + + + value + value + () + + + value + value-2 + () + + + operator= + operator-eq + ( QMap<Key, T> & map ) + + + + QMutableVectorIterator + qmutablevectoriterator.html + + QMutableVectorIterator + QMutableVectorIterator + ( QVector<T> & vector ) + + + findNext + findNext + ( const T & value ) + + + findPrevious + findPrevious + ( const T & value ) + + + hasNext + hasNext + () + + + hasPrevious + hasPrevious + () + + + insert + insert + ( const T & value ) + + + next + next + () + + + peekNext + peekNext + () + + + peekPrevious + peekPrevious + () + + + previous + previous + () + + + remove + remove + () + + + setValue + setValue + ( const T & value ) + + + toBack + toBack + () + + + toFront + toFront + () + + + value + value + () + + + value + value-2 + () + + + operator= + operator-eq + ( QVector<T> & vector ) + + + + QMutex + qmutex.html + + RecursionMode + RecursionMode-enum + + + + QMutex + QMutex + ( RecursionMode mode = NonRecursive ) + + + lock + lock + () + + + tryLock + tryLock + () + + + unlock + unlock + () + + + + QMutexLocker + qmutexlocker.html + + QMutexLocker + QMutexLocker + ( QMutex * mutex ) + + + mutex + mutex + () + + + relock + relock + () + + + unlock + unlock + () + + + QMutex + QMutex-2 + ( bool recursive ) + + + locked + locked + () + + + + QNetworkProxy + qnetworkproxy.html + + ProxyType + ProxyType-enum + + + + QNetworkProxy + QNetworkProxy + () + + + QNetworkProxy + QNetworkProxy-2 + ( ProxyType type, const QString & hostName = QString() + + + QNetworkProxy + QNetworkProxy-3 + ( const QNetworkProxy & other ) + + + applicationProxy + applicationProxy + () + + + hostName + hostName + () + + + password + password + () + + + port + port + () + + + setApplicationProxy + setApplicationProxy + ( const QNetworkProxy & networkProxy ) + + + setHostName + setHostName + ( const QString & hostName ) + + + setPassword + setPassword + ( const QString & password ) + + + setPort + setPort + ( quint16 port ) + + + setType + setType + ( QNetworkProxy::ProxyType type ) + + + setUser + setUser + ( const QString & user ) + + + ProxyType + type + QNetworkProxy::type() + + + user + user + () + + + operator= + operator-eq + ( const QNetworkProxy & other ) + + + + QObjectCleanupHandler + qobjectcleanuphandler.html + + QObjectCleanupHandler + QObjectCleanupHandler + () + + + add + add + ( QObject * object ) + + + clear + clear + () + + + isEmpty + isEmpty + () + + + remove + remove + ( QObject * object ) + + + + QObject + qobject.html + + QObject + QObject + ( QObject * parent = 0 ) + + + blockSignals + blockSignals + ( bool block ) + + + childEvent + childEvent + ( QChildEvent * event ) + + + children + children + () + + + connect + connect + ( const QObject * sender, const char * signal, const QObject * receiver, const char * method, Qt::ConnectionType type = Qt::AutoCompatConnection ) + + + connect + connect-2 + ( const QObject * sender, const char * signal, const char * method, Qt::ConnectionType type = Qt::AutoCompatConnection ) + + + connectNotify + connectNotify + ( const char * signal ) + + + customEvent + customEvent + ( QEvent * event ) + + + deleteLater + deleteLater + () + + + destroyed + destroyed + ( QObject * obj = 0 ) + + + disconnect + disconnect + ( const QObject * sender, const char * signal, const QObject * receiver, const char * method ) + + + disconnect + disconnect-2 + ( const char * signal = 0, const QObject * receiver = 0, const char * method = 0 ) + + + disconnect + disconnect-3 + ( const QObject * receiver, const char * method = 0 ) + + + disconnectNotify + disconnectNotify + ( const char * signal ) + + + dumpObjectInfo + dumpObjectInfo + () + + + dumpObjectTree + dumpObjectTree + () + + + event + event + ( QEvent * e ) + + + eventFilter + eventFilter + ( QObject * watched, QEvent * event ) + + + findChild + findChild + ( const QString & name = QString() + + + findChildren + findChildren + ( const QString & name = QString() + + + findChildren + findChildren-2 + ( const QRegExp & regExp ) + + + inherits + inherits + ( const char * className ) + + + installEventFilter + installEventFilter + ( QObject * filterObj ) + + + isWidgetType + isWidgetType + () + + + killTimer + killTimer + ( int id ) + + + metaObject + metaObject + () + + + moveToThread + moveToThread + ( QThread * targetThread ) + + + parent + parent + () + + + property + property + ( const char * name ) + + + receivers + receivers + ( const char * signal ) + + + removeEventFilter + removeEventFilter + ( QObject * obj ) + + + sender + sender + () + + + setParent + setParent + ( QObject * parent ) + + + setProperty + setProperty + ( const char * name, const QVariant & value ) + + + signalsBlocked + signalsBlocked + () + + + startTimer + startTimer + ( int interval ) + + + thread + thread + () + + + timerEvent + timerEvent + ( QTimerEvent * event ) + + + tr + tr + ( const char * sourceText, const char * comment ) + + + trUtf8 + trUtf8 + ( const char * sourceText, const char * comment ) + + + QObject + QObject-3 + ( QObject * parent, const char * name ) + + + checkConnectArgs + checkConnectArgs + ( const char * signal, const QObject * object, const char * method ) + + + child + child + ( const char * objName, const char * inheritsClass = 0, bool recursiveSearch = true ) + + + className + className + () + + + insertChild + insertChild + ( QObject * object ) + + + isA + isA + ( const char * className ) + + + name + name + () + + + name + name-2 + ( const char * defaultName ) + + + normalizeSignalSlot + normalizeSignalSlot + ( const char * signalSlot ) + + + removeChild + removeChild + ( QObject * object ) + + + setName + setName + ( const char * name ) + + + + QPageSetupDialog + qpagesetupdialog.html + + QPageSetupDialog + QPageSetupDialog + ( QPrinter * printer, QWidget * parent = 0 ) + + + printer + printer + () + + + + QPaintDevice + qpaintdevice.html + + PaintDeviceMetric + PaintDeviceMetric-enum + + + + QPaintDevice + QPaintDevice + () + + + depth + depth + () + + + height + height + () + + + heightMM + heightMM + () + + + logicalDpiX + logicalDpiX + () + + + logicalDpiY + logicalDpiY + () + + + metric + metric + ( PaintDeviceMetric metric ) + + + numColors + numColors + () + + + paintEngine + paintEngine + () + + + paintingActive + paintingActive + () + + + physicalDpiX + physicalDpiX + () + + + physicalDpiY + physicalDpiY + () + + + width + width + () + + + widthMM + widthMM + () + + + x11AppCells + x11AppCells + ( int screen = -1 ) + + + HANDLE + x11AppColormap + QPaintDevice::x11AppColormap( int screen = -1 ) + + + x11AppDefaultColormap + x11AppDefaultColormap + ( int screen = -1 ) + + + x11AppDefaultVisual + x11AppDefaultVisual + ( int screen = -1 ) + + + x11AppDepth + x11AppDepth + ( int screen = -1 ) + + + x11AppDisplay + x11AppDisplay + () + + + x11AppDpiX + x11AppDpiX + ( int screen = -1 ) + + + x11AppDpiY + x11AppDpiY + ( int screen = -1 ) + + + HANDLE + x11AppRootWindow + QPaintDevice::x11AppRootWindow( int screen = -1 ) + + + x11AppScreen + x11AppScreen + () + + + x11AppVisual + x11AppVisual + ( int screen = -1 ) + + + x11Cells + x11Cells + () + + + HANDLE + x11Colormap + QPaintDevice::x11Colormap() + + + x11DefaultColormap + x11DefaultColormap + () + + + x11DefaultVisual + x11DefaultVisual + () + + + x11Depth + x11Depth + () + + + x11Display + x11Display + () + + + x11Screen + x11Screen + () + + + x11SetAppDpiX + x11SetAppDpiX + ( int dpi, int screen ) + + + x11SetAppDpiY + x11SetAppDpiY + ( int dpi, int screen ) + + + x11Visual + x11Visual + () + + + + QPaintEngine + qpaintengine.html + + PolygonDrawMode + PolygonDrawMode-enum + + + + Type + Type-enum + + + + QPaintEngine + QPaintEngine + ( PaintEngineFeatures caps = 0 ) + + + begin + begin + ( QPaintDevice * pdev ) + + + drawEllipse + drawEllipse + ( const QRectF & rect ) + + + drawEllipse + drawEllipse-2 + ( const QRect & rect ) + + + drawImage + drawImage + ( const QRectF & rectangle, const QImage & image, const QRectF & sr, Qt::ImageConversionFlags flags = Qt::AutoColor ) + + + drawLines + drawLines + ( const QLineF * lines, int lineCount ) + + + drawLines + drawLines-2 + ( const QLine * lines, int lineCount ) + + + drawPath + drawPath + ( const QPainterPath & path ) + + + drawPixmap + drawPixmap + ( const QRectF & r, const QPixmap & pm, const QRectF & sr ) + + + drawPoints + drawPoints + ( const QPointF * points, int pointCount ) + + + drawPoints + drawPoints-2 + ( const QPoint * points, int pointCount ) + + + drawPolygon + drawPolygon + ( const QPointF * points, int pointCount, PolygonDrawMode mode ) + + + drawPolygon + drawPolygon-2 + ( const QPoint * points, int pointCount, PolygonDrawMode mode ) + + + drawRects + drawRects + ( const QRectF * rects, int rectCount ) + + + drawRects + drawRects-2 + ( const QRect * rects, int rectCount ) + + + drawTextItem + drawTextItem + ( const QPointF & p, const QTextItem & textItem ) + + + drawTiledPixmap + drawTiledPixmap + ( const QRectF & rect, const QPixmap & pixmap, const QPointF & p ) + + + end + end + () + + + hasFeature + hasFeature + ( PaintEngineFeatures feature ) + + + isActive + isActive + () + + + paintDevice + paintDevice + () + + + painter + painter + () + + + setActive + setActive + ( bool state ) + + + type + type + () + + + updateState + updateState + ( const QPaintEngineState & state ) + + + + QPaintEngineState + qpaintenginestate.html + + backgroundBrush + backgroundBrush + () + + + BGMode + backgroundMode + QPaintEngineState::backgroundMode() + + + brush + brush + () + + + brushOrigin + brushOrigin + () + + + ClipOperation + clipOperation + QPaintEngineState::clipOperation() + + + clipPath + clipPath + () + + + clipRegion + clipRegion + () + + + CompositionMode + compositionMode + QPaintEngineState::compositionMode() + + + font + font + () + + + isClipEnabled + isClipEnabled + () + + + matrix + matrix + () + + + painter + painter + () + + + pen + pen + () + + + RenderHints + renderHints + QPaintEngineState::renderHints() + + + DirtyFlags + state + QPaintEngineState::state() + + + + QPainter + qpainter.html + + CompositionMode + CompositionMode-enum + + + + QPainter + QPainter + () + + + QPainter + QPainter-2 + ( QPaintDevice * device ) + + + background + background + () + + + BGMode + backgroundMode + QPainter::backgroundMode() + + + begin + begin + ( QPaintDevice * device ) + + + boundingRect + boundingRect + ( const QRectF & rectangle, int flags, const QString & text ) + + + boundingRect + boundingRect-4 + ( const QRect & rectangle, int flags, const QString & text ) + + + boundingRect + boundingRect-5 + ( int x, int y, int w, int h, int flags, const QString & text ) + + + boundingRect + boundingRect-6 + ( const QRectF & rectangle, const QString & text, const QTextOption & option = QTextOption() + + + brush + brush + () + + + brushOrigin + brushOrigin + () + + + clipPath + clipPath + () + + + clipRegion + clipRegion + () + + + compositionMode + compositionMode + () + + + device + device + () + + + deviceMatrix + deviceMatrix + () + + + drawArc + drawArc + ( const QRectF & rectangle, int startAngle, int spanAngle ) + + + drawArc + drawArc-2 + ( const QRect & rectangle, int startAngle, int spanAngle ) + + + drawArc + drawArc-3 + ( int x, int y, int width, int height, int startAngle, int spanAngle ) + + + drawChord + drawChord + ( const QRectF & rectangle, int startAngle, int spanAngle ) + + + drawChord + drawChord-2 + ( const QRect & rectangle, int startAngle, int spanAngle ) + + + drawChord + drawChord-3 + ( int x, int y, int width, int height, int startAngle, int spanAngle ) + + + drawConvexPolygon + drawConvexPolygon + ( const QPointF * points, int pointCount ) + + + drawConvexPolygon + drawConvexPolygon-2 + ( const QPoint * points, int pointCount ) + + + drawConvexPolygon + drawConvexPolygon-3 + ( const QPolygonF & polygon ) + + + drawConvexPolygon + drawConvexPolygon-4 + ( const QPolygon & polygon ) + + + drawEllipse + drawEllipse + ( const QRectF & rectangle ) + + + drawEllipse + drawEllipse-2 + ( const QRect & rectangle ) + + + drawEllipse + drawEllipse-3 + ( int x, int y, int width, int height ) + + + drawImage + drawImage + ( const QRectF & target, const QImage & image, const QRectF & source, Qt::ImageConversionFlags flags = Qt::AutoColor ) + + + drawImage + drawImage-2 + ( const QRect & target, const QImage & image, const QRect & source, Qt::ImageConversionFlags flags = Qt::AutoColor ) + + + drawImage + drawImage-3 + ( const QPointF & point, const QImage & image ) + + + drawImage + drawImage-4 + ( const QPoint & point, const QImage & image ) + + + drawImage + drawImage-5 + ( const QPointF & point, const QImage & image, const QRectF & source, Qt::ImageConversionFlags flags = Qt::AutoColor ) + + + drawImage + drawImage-6 + ( const QPoint & point, const QImage & image, const QRect & source, Qt::ImageConversionFlags flags = Qt::AutoColor ) + + + drawImage + drawImage-7 + ( const QRectF & rectangle, const QImage & image ) + + + drawImage + drawImage-8 + ( const QRect & rectangle, const QImage & image ) + + + drawImage + drawImage-9 + ( int x, int y, const QImage & image, int sx = 0, int sy = 0, int sw = -1, int sh = -1, Qt::ImageConversionFlags flags = Qt::AutoColor ) + + + drawLine + drawLine + ( const QLineF & line ) + + + drawLine + drawLine-2 + ( const QLine & line ) + + + drawLine + drawLine-3 + ( const QPoint & p1, const QPoint & p2 ) + + + drawLine + drawLine-4 + ( const QPointF & p1, const QPointF & p2 ) + + + drawLine + drawLine-5 + ( int x1, int y1, int x2, int y2 ) + + + drawLines + drawLines + ( const QLineF * lines, int lineCount ) + + + drawLines + drawLines-2 + ( const QLine * lines, int lineCount ) + + + drawLines + drawLines-3 + ( const QPointF * pointPairs, int lineCount ) + + + drawLines + drawLines-4 + ( const QPoint * pointPairs, int lineCount ) + + + drawLines + drawLines-5 + ( const QVector<QPointF> & pointPairs ) + + + drawLines + drawLines-6 + ( const QVector<QPoint> & pointPairs ) + + + drawLines + drawLines-7 + ( const QVector<QLineF> & lines ) + + + drawLines + drawLines-8 + ( const QVector<QLine> & lines ) + + + drawPath + drawPath + ( const QPainterPath & path ) + + + drawPicture + drawPicture + ( const QPointF & point, const QPicture & picture ) + + + drawPicture + drawPicture-2 + ( const QPoint & point, const QPicture & picture ) + + + drawPicture + drawPicture-3 + ( int x, int y, const QPicture & picture ) + + + drawPie + drawPie + ( const QRectF & rectangle, int startAngle, int spanAngle ) + + + drawPie + drawPie-2 + ( const QRect & rectangle, int startAngle, int spanAngle ) + + + drawPie + drawPie-3 + ( int x, int y, int width, int height, int startAngle, int spanAngle ) + + + drawPixmap + drawPixmap + ( const QRectF & target, const QPixmap & pixmap, const QRectF & source ) + + + drawPixmap + drawPixmap-2 + ( const QRect & target, const QPixmap & pixmap, const QRect & source ) + + + drawPixmap + drawPixmap-3 + ( const QPointF & point, const QPixmap & pixmap, const QRectF & source ) + + + drawPixmap + drawPixmap-4 + ( const QPoint & point, const QPixmap & pixmap, const QRect & source ) + + + drawPixmap + drawPixmap-5 + ( const QPointF & point, const QPixmap & pixmap ) + + + drawPixmap + drawPixmap-6 + ( const QPoint & point, const QPixmap & pixmap ) + + + drawPixmap + drawPixmap-7 + ( int x, int y, const QPixmap & pixmap ) + + + drawPixmap + drawPixmap-8 + ( const QRect & rectangle, const QPixmap & pixmap ) + + + drawPixmap + drawPixmap-9 + ( int x, int y, int width, int height, const QPixmap & pixmap ) + + + drawPixmap + drawPixmap-10 + ( int x, int y, int w, int h, const QPixmap & pixmap, int sx, int sy, int sw, int sh ) + + + drawPixmap + drawPixmap-11 + ( int x, int y, const QPixmap & pixmap, int sx, int sy, int sw, int sh ) + + + drawPoint + drawPoint + ( const QPointF & position ) + + + drawPoint + drawPoint-2 + ( const QPoint & position ) + + + drawPoint + drawPoint-3 + ( int x, int y ) + + + drawPoints + drawPoints + ( const QPointF * points, int pointCount ) + + + drawPoints + drawPoints-2 + ( const QPoint * points, int pointCount ) + + + drawPoints + drawPoints-3 + ( const QPolygonF & points ) + + + drawPoints + drawPoints-4 + ( const QPolygon & points ) + + + drawPolygon + drawPolygon + ( const QPointF * points, int pointCount, Qt::FillRule fillRule = Qt::OddEvenFill ) + + + drawPolygon + drawPolygon-2 + ( const QPoint * points, int pointCount, Qt::FillRule fillRule = Qt::OddEvenFill ) + + + drawPolygon + drawPolygon-5 + ( const QPolygonF & points, Qt::FillRule fillRule = Qt::OddEvenFill ) + + + drawPolygon + drawPolygon-6 + ( const QPolygon & points, Qt::FillRule fillRule = Qt::OddEvenFill ) + + + drawPolyline + drawPolyline + ( const QPointF * points, int pointCount ) + + + drawPolyline + drawPolyline-2 + ( const QPoint * points, int pointCount ) + + + drawPolyline + drawPolyline-4 + ( const QPolygonF & points ) + + + drawPolyline + drawPolyline-5 + ( const QPolygon & points ) + + + drawRect + drawRect + ( const QRectF & rectangle ) + + + drawRect + drawRect-2 + ( const QRect & rectangle ) + + + drawRect + drawRect-3 + ( int x, int y, int width, int height ) + + + drawRects + drawRects + ( const QRectF * rectangles, int rectCount ) + + + drawRects + drawRects-2 + ( const QRect * rectangles, int rectCount ) + + + drawRects + drawRects-3 + ( const QVector<QRectF> & rectangles ) + + + drawRects + drawRects-4 + ( const QVector<QRect> & rectangles ) + + + drawRoundRect + drawRoundRect + ( const QRectF & r, int xRnd = 25, int yRnd = 25 ) + + + drawRoundRect + drawRoundRect-2 + ( const QRect & r, int xRnd = 25, int yRnd = 25 ) + + + drawRoundRect + drawRoundRect-3 + ( int x, int y, int w, int h, int xRnd = 25, int yRnd = 25 ) + + + drawText + drawText + ( const QPointF & position, const QString & text ) + + + drawText + drawText-8 + ( const QPoint & position, const QString & text ) + + + drawText + drawText-9 + ( const QRectF & rectangle, int flags, const QString & text, QRectF * boundingRect = 0 ) + + + drawText + drawText-10 + ( const QRect & rectangle, int flags, const QString & text, QRect * boundingRect = 0 ) + + + drawText + drawText-11 + ( int x, int y, const QString & text ) + + + drawText + drawText-12 + ( int x, int y, int width, int height, int flags, const QString & text, QRect * boundingRect = 0 ) + + + drawText + drawText-13 + ( const QRectF & rectangle, const QString & text, const QTextOption & option = QTextOption() + + + drawTiledPixmap + drawTiledPixmap + ( const QRectF & rectangle, const QPixmap & pixmap, const QPointF & position = QPointF() + + + drawTiledPixmap + drawTiledPixmap-2 + ( const QRect & rectangle, const QPixmap & pixmap, const QPoint & position = QPoint() + + + drawTiledPixmap + drawTiledPixmap-3 + ( int x, int y, int width, int height, const QPixmap & pixmap, int sx = 0, int sy = 0 ) + + + end + end + () + + + eraseRect + eraseRect + ( const QRectF & rectangle ) + + + eraseRect + eraseRect-2 + ( const QRect & rectangle ) + + + eraseRect + eraseRect-3 + ( int x, int y, int width, int height ) + + + fillPath + fillPath + ( const QPainterPath & path, const QBrush & brush ) + + + fillRect + fillRect + ( const QRectF & rectangle, const QBrush & brush ) + + + fillRect + fillRect-2 + ( const QRect & rectangle, const QBrush & brush ) + + + fillRect + fillRect-3 + ( int x, int y, int width, int height, const QBrush & brush ) + + + font + font + () + + + fontInfo + fontInfo + () + + + fontMetrics + fontMetrics + () + + + hasClipping + hasClipping + () + + + initFrom + initFrom + ( const QWidget * widget ) + + + isActive + isActive + () + + + LayoutDirection + layoutDirection + QPainter::layoutDirection() + + + matrix + matrix + () + + + matrixEnabled + matrixEnabled + () + + + paintEngine + paintEngine + () + + + pen + pen + () + + + redirected + redirected + ( const QPaintDevice * device, QPoint * offset = 0 ) + + + renderHints + renderHints + () + + + resetMatrix + resetMatrix + () + + + restore + restore + () + + + restoreRedirected + restoreRedirected + ( const QPaintDevice * device ) + + + rotate + rotate + ( qreal angle ) + + + save + save + () + + + scale + scale + ( qreal sx, qreal sy ) + + + setBackground + setBackground + ( const QBrush & brush ) + + + setBackgroundMode + setBackgroundMode + ( Qt::BGMode mode ) + + + setBrush + setBrush + ( const QBrush & brush ) + + + setBrush + setBrush-2 + ( Qt::BrushStyle style ) + + + setBrushOrigin + setBrushOrigin + ( const QPointF & position ) + + + setBrushOrigin + setBrushOrigin-2 + ( const QPoint & position ) + + + setBrushOrigin + setBrushOrigin-3 + ( int x, int y ) + + + setClipPath + setClipPath + ( const QPainterPath & path, Qt::ClipOperation operation = Qt::ReplaceClip ) + + + setClipRect + setClipRect + ( const QRectF & rectangle, Qt::ClipOperation operation = Qt::ReplaceClip ) + + + setClipRect + setClipRect-2 + ( int x, int y, int width, int height, Qt::ClipOperation operation = Qt::ReplaceClip ) + + + setClipRect + setClipRect-3 + ( const QRect & rectangle, Qt::ClipOperation operation = Qt::ReplaceClip ) + + + setClipRegion + setClipRegion + ( const QRegion & region, Qt::ClipOperation operation = Qt::ReplaceClip ) + + + setClipping + setClipping + ( bool enable ) + + + setCompositionMode + setCompositionMode + ( CompositionMode mode ) + + + setFont + setFont + ( const QFont & font ) + + + setLayoutDirection + setLayoutDirection + ( Qt::LayoutDirection direction ) + + + setMatrix + setMatrix + ( const QMatrix & matrix, bool combine = false ) + + + setMatrixEnabled + setMatrixEnabled + ( bool enable ) + + + setPen + setPen + ( const QPen & pen ) + + + setPen + setPen-2 + ( const QColor & color ) + + + setPen + setPen-3 + ( Qt::PenStyle style ) + + + setRedirected + setRedirected + ( const QPaintDevice * device, QPaintDevice * replacement, const QPoint & offset = QPoint() + + + setRenderHint + setRenderHint + ( RenderHint hint, bool on = true ) + + + setViewTransformEnabled + setViewTransformEnabled + ( bool enable ) + + + setViewport + setViewport + ( const QRect & rectangle ) + + + setViewport + setViewport-2 + ( int x, int y, int width, int height ) + + + setWindow + setWindow + ( const QRect & rectangle ) + + + setWindow + setWindow-2 + ( int x, int y, int width, int height ) + + + shear + shear + ( qreal sh, qreal sv ) + + + strokePath + strokePath + ( const QPainterPath & path, const QPen & pen ) + + + translate + translate + ( const QPointF & offset ) + + + translate + translate-2 + ( const QPoint & offset ) + + + translate + translate-3 + ( qreal dx, qreal dy ) + + + viewTransformEnabled + viewTransformEnabled + () + + + viewport + viewport + () + + + window + window + () + + + + QPainterPath::Element + qpainterpath-element.html + + isCurveTo + isCurveTo + () + + + isLineTo + isLineTo + () + + + isMoveTo + isMoveTo + () + + + operator + operator-QPointF + QPointF() + + + type + type-varx + + + + x + x-var + + + + y + y-var + + + + + QPainterPath + qpainterpath.html + + ElementType + ElementType-enum + + + + QPainterPath + QPainterPath + () + + + QPainterPath + QPainterPath-2 + ( const QPointF & startPoint ) + + + QPainterPath + QPainterPath-3 + ( const QPainterPath & path ) + + + addEllipse + addEllipse + ( const QRectF & boundingRectangle ) + + + addEllipse + addEllipse-2 + ( qreal x, qreal y, qreal width, qreal height ) + + + addPath + addPath + ( const QPainterPath & path ) + + + addPolygon + addPolygon + ( const QPolygonF & polygon ) + + + addRect + addRect + ( const QRectF & rectangle ) + + + addRect + addRect-2 + ( qreal x, qreal y, qreal width, qreal height ) + + + addRegion + addRegion + ( const QRegion & region ) + + + addText + addText + ( const QPointF & point, const QFont & font, const QString & text ) + + + addText + addText-2 + ( qreal x, qreal y, const QFont & font, const QString & text ) + + + arcTo + arcTo + ( const QRectF & rectangle, qreal startAngle, qreal sweepLength ) + + + arcTo + arcTo-2 + ( qreal x, qreal y, qreal width, qreal height, qreal startAngle, qreal sweepLength ) + + + boundingRect + boundingRect + () + + + closeSubpath + closeSubpath + () + + + connectPath + connectPath + ( const QPainterPath & path ) + + + contains + contains + ( const QPointF & point ) + + + contains + contains-2 + ( const QRectF & rectangle ) + + + controlPointRect + controlPointRect + () + + + cubicTo + cubicTo + ( const QPointF & c1, const QPointF & c2, const QPointF & endPoint ) + + + cubicTo + cubicTo-2 + ( qreal c1X, qreal c1Y, qreal c2X, qreal c2Y, qreal endPointX, qreal endPointY ) + + + currentPosition + currentPosition + () + + + Element + elementAt + & QPainterPath::elementAt( int index ) + + + elementCount + elementCount + () + + + FillRule + fillRule + QPainterPath::fillRule() + + + intersects + intersects + ( const QRectF & rectangle ) + + + isEmpty + isEmpty + () + + + lineTo + lineTo + ( const QPointF & endPoint ) + + + lineTo + lineTo-2 + ( qreal x, qreal y ) + + + moveTo + moveTo + ( const QPointF & point ) + + + moveTo + moveTo-2 + ( qreal x, qreal y ) + + + quadTo + quadTo + ( const QPointF & c, const QPointF & endPoint ) + + + quadTo + quadTo-2 + ( qreal cx, qreal cy, qreal endPointX, qreal endPointY ) + + + setFillRule + setFillRule + ( Qt::FillRule fillRule ) + + + toFillPolygon + toFillPolygon + ( const QMatrix & matrix = QMatrix() + + + toFillPolygons + toFillPolygons + ( const QMatrix & matrix = QMatrix() + + + toReversed + toReversed + () + + + toSubpathPolygons + toSubpathPolygons + ( const QMatrix & matrix = QMatrix() + + + operator!= + operator-not-eq + ( const QPainterPath & path ) + + + operator= + operator-eq + ( const QPainterPath & path ) + + + operator== + operator-eq-eq + ( const QPainterPath & path ) + + + + QPainterPathStroker + qpainterpathstroker.html + + QPainterPathStroker + QPainterPathStroker + () + + + PenCapStyle + capStyle + QPainterPathStroker::capStyle() + + + createStroke + createStroke + ( const QPainterPath & path ) + + + curveThreshold + curveThreshold + () + + + dashPattern + dashPattern + () + + + PenJoinStyle + joinStyle + QPainterPathStroker::joinStyle() + + + miterLimit + miterLimit + () + + + setCapStyle + setCapStyle + ( Qt::PenCapStyle style ) + + + setCurveThreshold + setCurveThreshold + ( qreal threshold ) + + + setDashPattern + setDashPattern + ( Qt::PenStyle style ) + + + setDashPattern + setDashPattern-2 + ( const QVector<qreal> & dashPattern ) + + + setJoinStyle + setJoinStyle + ( Qt::PenJoinStyle style ) + + + setMiterLimit + setMiterLimit + ( qreal limit ) + + + setWidth + setWidth + ( qreal width ) + + + width + width + () + + + backgroundColor + backgroundColor + () + + + begin + begin-2 + ( QPaintDevice * device, const QWidget * init ) + + + boundingRect + boundingRect-2 + ( const QRect & rectangle, int flags, const QString & text, int length ) + + + boundingRect + boundingRect-3 + ( int x, int y, int width, int height, int flags, const QString & text, int length ) + + + drawConvexPolygon + drawConvexPolygon-5 + ( const QPolygonF & polygon, int index, int count = -1 ) + + + drawConvexPolygon + drawConvexPolygon-6 + ( const QPolygon & polygon, int index, int count = -1 ) + + + drawCubicBezier + drawCubicBezier + ( const QPolygon & controlPoints, int index = 0 ) + + + drawLineSegments + drawLineSegments + ( const QPolygon & polygon, int index = 0, int count = -1 ) + + + drawPoints + drawPoints-5 + ( const QPolygon & polygon, int index, int count = -1 ) + + + drawPolygon + drawPolygon-3 + ( const QPolygonF & polygon, bool winding, int index = 0, int count = -1 ) + + + drawPolygon + drawPolygon-4 + ( const QPolygon & polygon, bool winding, int index = 0, int count = -1 ) + + + drawPolyline + drawPolyline-3 + ( const QPolygon & polygon, int index, int count = -1 ) + + + drawText + drawText-2 + ( int x, int y, const QString & text, int pos, int length ) + + + drawText + drawText-3 + ( const QPoint & point, const QString & text, int pos, int length ) + + + drawText + drawText-4 + ( int x, int y, const QString & text, int length ) + + + drawText + drawText-5 + ( const QPoint & point, const QString & text, int length ) + + + drawText + drawText-6 + ( const QRect & rectangle, int flags, const QString & text, int length, QRect * br = 0 ) + + + drawText + drawText-7 + ( int x, int y, int width, int height, int flags, const QString & text, int length, QRect * br = 0 ) + + + hasViewXForm + hasViewXForm + () + + + hasWorldXForm + hasWorldXForm + () + + + redirect + redirect + ( QPaintDevice * pdev, QPaintDevice * replacement ) + + + redirect + redirect-2 + ( QPaintDevice * pdev ) + + + resetXForm + resetXForm + () + + + setBackgroundColor + setBackgroundColor + ( const QColor & color ) + + + setViewXForm + setViewXForm + ( bool enabled ) + + + setWorldMatrix + setWorldMatrix + ( const QMatrix & wm, bool combine = false ) + + + setWorldXForm + setWorldXForm + ( bool enabled ) + + + translationX + translationX + () + + + translationY + translationY + () + + + worldMatrix + worldMatrix + () + + + xForm + xForm + ( const QPoint & point ) + + + xForm + xForm-2 + ( const QRect & rectangle ) + + + xForm + xForm-3 + ( const QPolygon & polygon ) + + + xForm + xForm-4 + ( const QPolygon & polygon, int index, int count ) + + + xFormDev + xFormDev + ( const QPoint & point ) + + + xFormDev + xFormDev-2 + ( const QRect & rectangle ) + + + xFormDev + xFormDev-3 + ( const QPolygon & polygon ) + + + xFormDev + xFormDev-4 + ( const QPolygon & polygon, int index, int count ) + + + + QPaintEvent + qpaintevent.html + + QPaintEvent + QPaintEvent + ( const QRegion & paintRegion ) + + + QPaintEvent + QPaintEvent-2 + ( const QRect & paintRect ) + + + rect + rect + () + + + region + region + () + + + QPaintEvent + QPaintEvent-3 + ( const QRegion & paintRegion, const QRect & paintRect ) + + + erased + erased + () + + + + QPair + qpair.html + + first_type + first_type-typedef + + + + second_type + second_type-typedef + + + + QPair + QPair + () + + + QPair + QPair-2 + ( const T1 & value1, const T2 & value2 ) + + + operator= + operator-eq + ( const QPair<T1, T2> & other ) + + + first + first-var + + + + second + second-var + + + + + QPalette + qpalette.html + + ColorGroup + ColorGroup-enum + + + + ColorRole + ColorRole-enum + + + + QPalette + QPalette + () + + + QPalette + QPalette-2 + ( const QColor & button ) + + + QPalette + QPalette-3 + ( Qt::GlobalColor button ) + + + QPalette + QPalette-4 + ( const QColor & button, const QColor & window ) + + + QPalette + QPalette-5 + ( const QBrush & windowText, const QBrush & button, const QBrush & light, const QBrush & dark, const QBrush & mid, const QBrush & text, const QBrush & bright_text, const QBrush & base, const QBrush & window ) + + + QPalette + QPalette-8 + ( const QPalette & p ) + + + alternateBase + alternateBase + () + + + base + base + () + + + brightText + brightText + () + + + brush + brush + ( ColorGroup gr, ColorRole cr ) + + + brush + brush-2 + ( ColorRole r ) + + + button + button + () + + + buttonText + buttonText + () + + + color + color + ( ColorGroup gr, ColorRole r ) + + + color + color-2 + ( ColorRole r ) + + + currentColorGroup + currentColorGroup + () + + + dark + dark + () + + + highlight + highlight + () + + + highlightedText + highlightedText + () + + + isCopyOf + isCopyOf + ( const QPalette & p ) + + + isEqual + isEqual + ( ColorGroup cg1, ColorGroup cg2 ) + + + light + light + () + + + link + link + () + + + linkVisited + linkVisited + () + + + mid + mid + () + + + midlight + midlight + () + + + resolve + resolve + ( const QPalette & other ) + + + serialNumber + serialNumber + () + + + setBrush + setBrush + ( ColorRole cr, const QBrush & brush ) + + + setBrush + setBrush-2 + ( ColorGroup cg, ColorRole cr, const QBrush & b ) + + + setColor + setColor + ( ColorGroup gr, ColorRole r, const QColor & c ) + + + setColor + setColor-2 + ( ColorRole r, const QColor & c ) + + + setColorGroup + setColorGroup + ( ColorGroup cg, const QBrush & windowText, const QBrush & button, const QBrush & light, const QBrush & dark, const QBrush & mid, const QBrush & text, const QBrush & bright_text, const QBrush & base, const QBrush & window ) + + + setCurrentColorGroup + setCurrentColorGroup + ( ColorGroup cg ) + + + shadow + shadow + () + + + text + text + () + + + window + window + () + + + windowText + windowText + () + + + operator + operator-QVariant + QVariant() + + + operator!= + operator-not-eq + ( const QPalette & p ) + + + operator= + operator-eq + ( const QPalette & p ) + + + operator== + operator-eq-eq + ( const QPalette & p ) + + + QPalette + QPalette-6 + ( const QColor & windowText, const QColor & window, const QColor & light, const QColor & dark, const QColor & mid, const QColor & text, const QColor & base ) + + + background + background + () + + + foreground + foreground + () + + + QPalette + QPalette-7 + ( const QColorGroup & active, const QColorGroup & disabled, const QColorGroup & inactive ) + + + active + active + () + + + copy + copy + () + + + disabled + disabled + () + + + inactive + inactive + () + + + normal + normal + () + + + setActive + setActive + ( const QColorGroup & colorGroup ) + + + setDisabled + setDisabled + ( const QColorGroup & colorGroup ) + + + setInactive + setInactive + ( const QColorGroup & colorGroup ) + + + setNormal + setNormal + ( const QColorGroup & colorGroup ) + + + + QPen + qpen.html + + QPen + QPen + () + + + QPen + QPen-2 + ( Qt::PenStyle style ) + + + QPen + QPen-3 + ( const QColor & color ) + + + QPen + QPen-4 + ( const QBrush & brush, qreal width, Qt::PenStyle style = Qt::SolidLine, Qt::PenCapStyle cap = Qt::SquareCap, Qt::PenJoinStyle join = Qt::BevelJoin ) + + + QPen + QPen-5 + ( const QPen & pen ) + + + brush + brush + () + + + PenCapStyle + capStyle + QPen::capStyle() + + + color + color + () + + + dashPattern + dashPattern + () + + + isSolid + isSolid + () + + + PenJoinStyle + joinStyle + QPen::joinStyle() + + + miterLimit + miterLimit + () + + + setBrush + setBrush + ( const QBrush & brush ) + + + setCapStyle + setCapStyle + ( Qt::PenCapStyle style ) + + + setColor + setColor + ( const QColor & color ) + + + setDashPattern + setDashPattern + ( const QVector<qreal> & pattern ) + + + setJoinStyle + setJoinStyle + ( Qt::PenJoinStyle style ) + + + setMiterLimit + setMiterLimit + ( qreal limit ) + + + setStyle + setStyle + ( Qt::PenStyle style ) + + + setWidth + setWidth + ( int width ) + + + setWidthF + setWidthF + ( qreal width ) + + + PenStyle + style + QPen::style() + + + width + width + () + + + widthF + widthF + () + + + operator + operator-QVariant + QVariant() + + + operator!= + operator-not-eq + ( const QPen & pen ) + + + operator= + operator-eq + ( const QPen & pen ) + + + operator== + operator-eq-eq + ( const QPen & pen ) + + + + QPersistentModelIndex + qpersistentmodelindex.html + + QPersistentModelIndex + QPersistentModelIndex-2 + ( const QModelIndex & index ) + + + QPersistentModelIndex + QPersistentModelIndex-3 + ( const QPersistentModelIndex & other ) + + + child + child + ( int row, int column ) + + + column + column + () + + + data + data + ( int role = Qt::DisplayRole ) + + + isValid + isValid + () + + + model + model + () + + + parent + parent + () + + + row + row + () + + + sibling + sibling + ( int row, int column ) + + + operator + operator-const-QModelIndex--and + const QModelIndex &() + + + operator!= + operator-not-eq + ( const QModelIndex & other ) + + + operator< + operator-lt + ( const QPersistentModelIndex & other ) + + + operator= + operator-eq + ( const QPersistentModelIndex & other ) + + + operator= + operator-eq-2 + ( const QModelIndex & other ) + + + operator== + operator-eq-eq + ( const QPersistentModelIndex & other ) + + + operator== + operator-eq-eq-2 + ( const QModelIndex & other ) + + + + QPictureFormatPlugin + qpictureformatplugin.html + + QPictureFormatPlugin + QPictureFormatPlugin + ( QObject * parent = 0 ) + + + installIOHandler + installIOHandler + ( const QString & format ) + + + keys + keys + () + + + loadPicture + loadPicture + ( const QString & format, const QString & fileName, QPicture * picture ) + + + savePicture + savePicture + ( const QString & format, const QString & fileName, const QPicture & picture ) + + + + QPicture + qpicture.html + + QPicture + QPicture + ( int formatVersion = -1 ) + + + QPicture + QPicture-2 + ( const QPicture & pic ) + + + boundingRect + boundingRect + () + + + data + data + () + + + inputFormatList + inputFormatList + () + + + inputFormats + inputFormats + () + + + isNull + isNull + () + + + load + load + ( const QString & fileName, const char * format = 0 ) + + + load + load-2 + ( QIODevice * dev, const char * format = 0 ) + + + metric + metric + ( PaintDeviceMetric m ) + + + outputFormatList + outputFormatList + () + + + outputFormats + outputFormats + () + + + pictureFormat + pictureFormat + ( const QString & fileName ) + + + play + play + ( QPainter * painter ) + + + save + save + ( const QString & fileName, const char * format = 0 ) + + + save + save-2 + ( QIODevice * dev, const char * format = 0 ) + + + setBoundingRect + setBoundingRect + ( const QRect & r ) + + + setData + setData + ( const char * data, uint size ) + + + size + size + () + + + operator= + operator-eq + ( const QPicture & p ) + + + + QPictureIO + qpictureio.html + + QPictureIO + QPictureIO + () + + + QPictureIO + QPictureIO-2 + ( QIODevice * ioDevice, const char * format ) + + + QPictureIO + QPictureIO-3 + ( const QString & fileName, const char * format ) + + + defineIOHandler + defineIOHandler + ( const char * format, const char * header, const char * flags, picture_io_handler readPicture, picture_io_handler writePicture ) + + + description + description + () + + + fileName + fileName + () + + + format + format + () + + + gamma + gamma + () + + + inputFormats + inputFormats + () + + + ioDevice + ioDevice + () + + + outputFormats + outputFormats + () + + + parameters + parameters + () + + + picture + picture + () + + + pictureFormat + pictureFormat + ( const QString & fileName ) + + + pictureFormat + pictureFormat-2 + ( QIODevice * d ) + + + quality + quality + () + + + read + read + () + + + setDescription + setDescription + ( const QString & description ) + + + setFileName + setFileName + ( const QString & fileName ) + + + setFormat + setFormat + ( const char * format ) + + + setGamma + setGamma + ( float gamma ) + + + setIODevice + setIODevice + ( QIODevice * ioDevice ) + + + setParameters + setParameters + ( const char * parameters ) + + + setPicture + setPicture + ( const QPicture & picture ) + + + setQuality + setQuality + ( int q ) + + + setStatus + setStatus + ( int status ) + + + status + status + () + + + write + write + () + + + copy + copy + () + + + + QPixmapCache + qpixmapcache.html + + cacheLimit + cacheLimit + () + + + clear + clear + () + + + find + find + ( const QString & key, QPixmap & pm ) + + + insert + insert + ( const QString & key, const QPixmap & pm ) + + + remove + remove + ( const QString & key ) + + + setCacheLimit + setCacheLimit + ( int n ) + + + find + find-2 + ( const QString & key ) + + + + QPixmap + qpixmap.html + + HBitmapFormat + HBitmapFormat-enum + + + + QPixmap + QPixmap + () + + + QPixmap + QPixmap-2 + ( int width, int height ) + + + QPixmap + QPixmap-3 + ( const QString & fileName, const char * format = 0, Qt::ImageConversionFlags flags = Qt::AutoColor ) + + + QPixmap + QPixmap-4 + ( const char * const[] xpm ) + + + QPixmap + QPixmap-5 + ( const QPixmap & pixmap ) + + + QPixmap + QPixmap-9 + ( const QSize & size ) + + + alphaChannel + alphaChannel + () + + + copy + copy + ( const QRect & rectangle = QRect() + + + copy + copy-2 + ( int x, int y, int width, int height ) + + + createHeuristicMask + createHeuristicMask + ( bool clipTight = true ) + + + createMaskFromColor + createMaskFromColor + ( const QColor & maskColor ) + + + defaultDepth + defaultDepth + () + + + depth + depth + () + + + detach + detach + () + + + fill + fill + ( const QColor & fillColor = Qt::white ) + + + fill + fill-2 + ( const QWidget * widget, const QPoint & offset ) + + + fill + fill-3 + ( const QWidget * widget, int x, int y ) + + + fromImage + fromImage + ( const QImage & image, Qt::ImageConversionFlags flags = Qt::AutoColor ) + + + fromWinHBITMAP + fromWinHBITMAP + ( HBITMAP bitmap, HBitmapFormat format = NoAlpha ) + + + grabWidget + grabWidget + ( QWidget * widget, const QRect & rectangle ) + + + grabWidget + grabWidget-2 + ( QWidget * widget, int x = 0, int y = 0, int width = -1, int height = -1 ) + + + grabWindow + grabWindow + ( WId window, int x = 0, int y = 0, int width = -1, int height = -1 ) + + + HANDLE + handle + QPixmap::handle() + + + hasAlpha + hasAlpha + () + + + hasAlphaChannel + hasAlphaChannel + () + + + height + height + () + + + isNull + isNull + () + + + isQBitmap + isQBitmap + () + + + load + load + ( const QString & fileName, const char * format = 0, Qt::ImageConversionFlags flags = Qt::AutoColor ) + + + loadFromData + loadFromData + ( const uchar * data, uint len, const char * format = 0, Qt::ImageConversionFlags flags = Qt::AutoColor ) + + + loadFromData + loadFromData-3 + ( const QByteArray & data, const char * format = 0, Qt::ImageConversionFlags flags = Qt::AutoColor ) + + + mask + mask + () + + + rect + rect + () + + + save + save + ( const QString & fileName, const char * format, int quality = -1 ) + + + save + save-2 + ( QIODevice * device, const char * format, int quality = -1 ) + + + scaled + scaled + ( const QSize & size, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation ) + + + scaled + scaled-2 + ( int width, int height, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation ) + + + scaledToHeight + scaledToHeight + ( int height, Qt::TransformationMode mode = Qt::FastTransformation ) + + + scaledToWidth + scaledToWidth + ( int width, Qt::TransformationMode mode = Qt::FastTransformation ) + + + serialNumber + serialNumber + () + + + setAlphaChannel + setAlphaChannel + ( const QPixmap & alphaChannel ) + + + setMask + setMask + ( const QBitmap & newmask ) + + + size + size + () + + + toImage + toImage + () + + + toWinHBITMAP + toWinHBITMAP + ( HBitmapFormat format = NoAlpha ) + + + transformed + transformed + ( const QMatrix & matrix, Qt::TransformationMode mode = Qt::FastTransformation ) + + + trueMatrix + trueMatrix + ( const QMatrix & matrix, int width, int height ) + + + width + width + () + + + x11Info + x11Info + () + + + HANDLE + x11PictureHandle + QPixmap::x11PictureHandle() + + + operator + operator-QVariant + QVariant() + + + operator! + operator-not + () + + + operator= + operator-eq + ( const QPixmap & pixmap ) + + + ColorMode + ColorMode-enum + + + + QPixmap + QPixmap-6 + ( const QString & fileName, const char * format, ColorMode mode ) + + + QPixmap + QPixmap-7 + ( const QImage & image ) + + + convertFromImage + convertFromImage + ( const QImage & image, ColorMode mode ) + + + convertFromImage + convertFromImage-2 + ( const QImage & image, Qt::ImageConversionFlags flags = Qt::AutoColor ) + + + convertToImage + convertToImage + () + + + load + load-2 + ( const QString & fileName, const char * format, ColorMode mode ) + + + loadFromData + loadFromData-2 + ( const uchar * buf, uint len, const char * format, ColorMode mode ) + + + resize + resize + ( int width, int height ) + + + resize + resize-2 + ( const QSize & size ) + + + selfMask + selfMask + () + + + xForm + xForm + ( const QMatrix & matrix ) + + + operator + operator-QImage + QImage() + + + operator= + operator-eq-2 + ( const QImage & image ) + + + + QPlastiqueStyle + qplastiquestyle.html + + QPlastiqueStyle + QPlastiqueStyle + () + + + + QPluginLoader + qpluginloader.html + + QPluginLoader + QPluginLoader + ( QObject * parent = 0 ) + + + QPluginLoader + QPluginLoader-2 + ( const QString & fileName, QObject * parent = 0 ) + + + instance + instance + () + + + isLoaded + isLoaded + () + + + load + load + () + + + staticInstances + staticInstances + () + + + unload + unload + () + + + + QPointer + qpointer.html + + QPointer + QPointer + () + + + QPointer + QPointer-2 + ( T * p ) + + + QPointer + QPointer-3 + ( const QPointer<T> & p ) + + + isNull + isNull + () + + + operator + operator-T--2a + T *() + + + operator* + operator-2a + () + + + operator-& + operator--gt + gt;() + + + operator= + operator-eq + ( const QPointer<T> & p ) + + + operator= + operator-eq-2 + ( T * p ) + + + + QPointF + qpointf.html + + QPointF + QPointF + () + + + QPointF + QPointF-2 + ( const QPoint & point ) + + + QPointF + QPointF-3 + ( qreal x, qreal y ) + + + isNull + isNull + () + + + rx + rx + () + + + ry + ry + () + + + setX + setX + ( qreal x ) + + + setY + setY + ( qreal y ) + + + toPoint + toPoint + () + + + x + x + () + + + y + y + () + + + operator*= + operator-2a-eq + ( qreal factor ) + + + operator+= + operator-2b-eq + ( const QPointF & point ) + + + operator-= + operator--eq + ( const QPointF & point ) + + + operator/= + operator-2f-eq + ( qreal divisor ) + + + + QPoint + qpoint.html + + QPoint + QPoint + () + + + QPoint + QPoint-2 + ( int x, int y ) + + + isNull + isNull + () + + + manhattanLength + manhattanLength + () + + + rx + rx + () + + + ry + ry + () + + + setX + setX + ( int x ) + + + setY + setY + ( int y ) + + + x + x + () + + + y + y + () + + + operator*= + operator-2a-eq + ( qreal factor ) + + + operator+= + operator-2b-eq + ( const QPoint & point ) + + + operator-= + operator--eq + ( const QPoint & point ) + + + operator/= + operator-2f-eq + ( qreal divisor ) + + + + QPolygonF + qpolygonf.html + + QPolygonF + QPolygonF + () + + + QPolygonF + QPolygonF-2 + ( int size ) + + + QPolygonF + QPolygonF-3 + ( const QPolygonF & polygon ) + + + QPolygonF + QPolygonF-4 + ( const QVector<QPointF> & points ) + + + QPolygonF + QPolygonF-5 + ( const QRectF & rectangle ) + + + QPolygonF + QPolygonF-6 + ( const QPolygon & polygon ) + + + boundingRect + boundingRect + () + + + isClosed + isClosed + () + + + toPolygon + toPolygon + () + + + translate + translate + ( const QPointF & offset ) + + + translate + translate-2 + ( qreal dx, qreal dy ) + + + + QPolygon + qpolygon.html + + QPolygon + QPolygon + () + + + QPolygon + QPolygon-2 + ( int size ) + + + QPolygon + QPolygon-3 + ( const QPolygon & polygon ) + + + QPolygon + QPolygon-4 + ( const QVector<QPoint> & points ) + + + QPolygon + QPolygon-5 + ( const QRect & rectangle, bool closed = false ) + + + boundingRect + boundingRect + () + + + point + point + ( int index, int * x, int * y ) + + + point + point-2 + ( int index ) + + + putPoints + putPoints + ( int index, int nPoints, int firstx, int firsty, ... ) + + + putPoints + putPoints-3 + ( int index, int nPoints, const QPolygon & fromPolygon, int fromIndex = 0 ) + + + setPoint + setPoint + ( int index, int x, int y ) + + + setPoint + setPoint-2 + ( int index, const QPoint & point ) + + + setPoints + setPoints + ( int nPoints, const int * points ) + + + setPoints + setPoints-2 + ( int nPoints, int firstx, int firsty, ... ) + + + translate + translate + ( int dx, int dy ) + + + translate + translate-2 + ( const QPoint & offset ) + + + operator + operator-QVariant + QVariant() + + + + QPrintDialog + qprintdialog.html + + QPrintDialog + QPrintDialog + ( QPrinter * printer, QWidget * parent = 0 ) + + + + QPrintEngine + qprintengine.html + + PrintEnginePropertyKey + PrintEnginePropertyKey-enum + + + + abort + abort + () + + + metric + metric + ( QPaintDevice::PaintDeviceMetric id ) + + + newPage + newPage + () + + + PrinterState + printerState + QPrintEngine::printerState() + + + property + property + ( PrintEnginePropertyKey key ) + + + setProperty + setProperty + ( PrintEnginePropertyKey key, const QVariant & value ) + + + + QPrinter + qprinter.html + + ColorMode + ColorMode-enum + + + + Orientation + Orientation-enum + + + + OutputFormat + OutputFormat-enum + + + + PageOrder + PageOrder-enum + + + + PageSize + PageSize-enum + + + + PaperSource + PaperSource-enum + + + + PrintRange + PrintRange-enum + + + + PrinterMode + PrinterMode-enum + + + + PrinterState + PrinterState-enum + + + + QPrinter + QPrinter + ( PrinterMode mode = ScreenResolution ) + + + abort + abort + () + + + collateCopies + collateCopies + () + + + colorMode + colorMode + () + + + creator + creator + () + + + docName + docName + () + + + fontEmbeddingEnabled + fontEmbeddingEnabled + () + + + fromPage + fromPage + () + + + fullPage + fullPage + () + + + newPage + newPage + () + + + numCopies + numCopies + () + + + orientation + orientation + () + + + outputFileName + outputFileName + () + + + outputFormat + outputFormat + () + + + pageOrder + pageOrder + () + + + pageRect + pageRect + () + + + pageSize + pageSize + () + + + paintEngine + paintEngine + () + + + paperRect + paperRect + () + + + paperSource + paperSource + () + + + printEngine + printEngine + () + + + printProgram + printProgram + () + + + printRange + printRange + () + + + printerName + printerName + () + + + printerSelectionOption + printerSelectionOption + () + + + printerState + printerState + () + + + resolution + resolution + () + + + setCollateCopies + setCollateCopies + ( bool collate ) + + + setColorMode + setColorMode + ( ColorMode newColorMode ) + + + setCreator + setCreator + ( const QString & creator ) + + + setDocName + setDocName + ( const QString & name ) + + + setEngines + setEngines + ( QPrintEngine * printEngine, QPaintEngine * paintEngine ) + + + setFontEmbeddingEnabled + setFontEmbeddingEnabled + ( bool enable ) + + + setFromTo + setFromTo + ( int from, int to ) + + + setFullPage + setFullPage + ( bool fp ) + + + setNumCopies + setNumCopies + ( int numCopies ) + + + setOrientation + setOrientation + ( Orientation orientation ) + + + setOutputFileName + setOutputFileName + ( const QString & fileName ) + + + setOutputFormat + setOutputFormat + ( OutputFormat format ) + + + setPageOrder + setPageOrder + ( PageOrder pageOrder ) + + + setPageSize + setPageSize + ( PageSize newPageSize ) + + + setPaperSource + setPaperSource + ( PaperSource source ) + + + setPrintProgram + setPrintProgram + ( const QString & printProg ) + + + setPrintRange + setPrintRange + ( PrintRange range ) + + + setPrinterName + setPrinterName + ( const QString & name ) + + + setPrinterSelectionOption + setPrinterSelectionOption + ( const QString & option ) + + + setResolution + setResolution + ( int dpi ) + + + setWinPageSize + setWinPageSize + ( int pageSize ) + + + supportedResolutions + supportedResolutions + () + + + toPage + toPage + () + + + winPageSize + winPageSize + () + + + PrinterOption + PrinterOption-enum + + + + aborted + aborted + () + + + collateCopiesEnabled + collateCopiesEnabled + () + + + isOptionEnabled + isOptionEnabled + ( PrinterOption option ) + + + margins + margins + ( uint * top, uint * left, uint * bottom, uint * right ) + + + margins + margins-2 + () + + + maxPage + maxPage + () + + + minPage + minPage + () + + + outputToFile + outputToFile + () + + + pageSetup + pageSetup + ( QWidget * parent = 0 ) + + + printSetup + printSetup + ( QWidget * parent = 0 ) + + + setCollateCopiesEnabled + setCollateCopiesEnabled + ( bool enable ) + + + setMinMax + setMinMax + ( int minPage, int maxPage ) + + + setOptionEnabled + setOptionEnabled + ( PrinterOption option, bool enable ) + + + setOutputToFile + setOutputToFile + ( bool enable ) + + + setup + setup + ( QWidget * parent = 0 ) + + + + QProcess + qprocess.html + + ExitStatus + ExitStatus-enum + + + + ProcessChannel + ProcessChannel-enum + + + + ProcessChannelMode + ProcessChannelMode-enum + + + + ProcessError + ProcessError-enum + + + + ProcessState + ProcessState-enum + + + + QProcess + QProcess + ( QObject * parent = 0 ) + + + close + close + () + + + closeReadChannel + closeReadChannel + ( ProcessChannel channel ) + + + closeWriteChannel + closeWriteChannel + () + + + environment + environment + () + + + ProcessError + error + QProcess::error() + + + error + error-2 + ( QProcess::ProcessError error ) + + + execute + execute + ( const QString & program, const QStringList & arguments ) + + + execute + execute-2 + ( const QString & program ) + + + exitCode + exitCode + () + + + ExitStatus + exitStatus + QProcess::exitStatus() + + + finished + finished + ( int exitCode, QProcess::ExitStatus exitStatus ) + + + kill + kill + () + + + pid + pid + () + + + readAllStandardError + readAllStandardError + () + + + readAllStandardOutput + readAllStandardOutput + () + + + readChannel + readChannel + () + + + readChannelMode + readChannelMode + () + + + readyReadStandardError + readyReadStandardError + () + + + readyReadStandardOutput + readyReadStandardOutput + () + + + setEnvironment + setEnvironment + ( const QStringList & environment ) + + + setProcessState + setProcessState + ( ProcessState state ) + + + setReadChannel + setReadChannel + ( ProcessChannel channel ) + + + setReadChannelMode + setReadChannelMode + ( ProcessChannelMode mode ) + + + setWorkingDirectory + setWorkingDirectory + ( const QString & dir ) + + + setupChildProcess + setupChildProcess + () + + + start + start + ( const QString & program, const QStringList & arguments, OpenMode mode = ReadWrite ) + + + start + start-2 + ( const QString & program, OpenMode mode = ReadWrite ) + + + startDetached + startDetached + ( const QString & program, const QStringList & arguments ) + + + startDetached + startDetached-2 + ( const QString & program ) + + + started + started + () + + + ProcessState + state + QProcess::state() + + + stateChanged + stateChanged + ( QProcess::ProcessState newState ) + + + systemEnvironment + systemEnvironment + () + + + terminate + terminate + () + + + waitForFinished + waitForFinished + ( int msecs = 30000 ) + + + waitForStarted + waitForStarted + ( int msecs = 30000 ) + + + workingDirectory + workingDirectory + () + + + finished + finished-2 + ( int exitCode ) + + + + QProgressBar + qprogressbar.html + + Direction + Direction-enum + + + + Alignment + alignment-prop + + + + Orientation + orientation-prop + + + + QProgressBar + QProgressBar + ( QWidget * parent = 0 ) + + + reset + reset + () + + + setRange + setRange + ( int minimum, int maximum ) + + + valueChanged + valueChanged + ( int value ) + + + + QProgressDialog + qprogressdialog.html + + QProgressDialog + QProgressDialog + ( QWidget * parent = 0, Qt::WFlags f = 0 ) + + + QProgressDialog + QProgressDialog-2 + ( const QString & labelText, const QString & cancelButtonText, int minimum, int maximum, QWidget * parent = 0, Qt::WFlags f = 0 ) + + + cancel + cancel + () + + + canceled + canceled + () + + + forceShow + forceShow + () + + + reset + reset + () + + + setBar + setBar + ( QProgressBar * bar ) + + + setCancelButton + setCancelButton + ( QPushButton * cancelButton ) + + + setCancelButtonText + setCancelButtonText + ( const QString & cancelButtonText ) + + + setLabel + setLabel + ( QLabel * label ) + + + setRange + setRange + ( int minimum, int maximum ) + + + sizeHint + sizeHint + () + + + + QProxyModel + qproxymodel.html + + QProxyModel + QProxyModel + ( QObject * parent = 0 ) + + + columnCount + columnCount + ( const QModelIndex & parent ) + + + data + data + ( const QModelIndex & index, int role ) + + + dropMimeData + dropMimeData + ( const QMimeData * data, Qt::DropAction action, int row, int column, const QModelIndex & parent ) + + + fetchMore + fetchMore + ( const QModelIndex & parent ) + + + ItemFlags + flags + QProxyModel::flags( const QModelIndex & index ) + + + hasChildren + hasChildren + ( const QModelIndex & parent ) + + + headerData + headerData + ( int section, Qt::Orientation orientation, int role ) + + + index + index + ( int row, int column, const QModelIndex & parent ) + + + insertColumns + insertColumns + ( int column, int count, const QModelIndex & parent ) + + + insertRows + insertRows + ( int row, int count, const QModelIndex & parent ) + + + match + match + ( const QModelIndex & start, int role, const QVariant & value, int hits, Qt::MatchFlags flags ) + + + mimeData + mimeData + ( const QModelIndexList & indexes ) + + + mimeTypes + mimeTypes + () + + + model + model + () + + + parent + parent + ( const QModelIndex & child ) + + + revert + revert + () + + + rowCount + rowCount + ( const QModelIndex & parent ) + + + setData + setData + ( const QModelIndex & index, const QVariant & value, int role ) + + + setHeaderData + setHeaderData + ( int section, Qt::Orientation orientation, const QVariant & value, int role ) + + + setModel + setModel + ( QAbstractItemModel * model ) + + + sort + sort + ( int column, Qt::SortOrder order ) + + + span + span + ( const QModelIndex & index ) + + + submit + submit + () + + + DropActions + supportedDropActions + QProxyModel::supportedDropActions() + + + + QPushButton + qpushbutton.html + + QPushButton + QPushButton + ( QWidget * parent = 0 ) + + + QPushButton + QPushButton-2 + ( const QString & text, QWidget * parent = 0 ) + + + QPushButton + QPushButton-3 + ( const QIcon & icon, const QString & text, QWidget * parent = 0 ) + + + menu + menu + () + + + setMenu + setMenu + ( QMenu * menu ) + + + showMenu + showMenu + () + + + QPushButton + QPushButton-4 + ( QWidget * parent, const char * name ) + + + QPushButton + QPushButton-5 + ( const QString & text, QWidget * parent, const char * name ) + + + QPushButton + QPushButton-6 + ( const QIcon & icon, const QString & text, QWidget * parent, const char * name ) + + + isMenuButton + isMenuButton + () + + + openPopup + openPopup + () + + + popup + popup + () + + + setPopup + setPopup + ( QMenu * popup ) + + + + QQueue + qqueue.html + + QQueue + QQueue + () + + + dequeue + dequeue + () + + + enqueue + enqueue + ( const T & t ) + + + head + head + () + + + head + head-2 + () + + + + QRadialGradient + qradialgradient.html + + QRadialGradient + QRadialGradient + ( const QPointF & center, qreal radius, const QPointF & focalPoint = QPointF() + + + QRadialGradient + QRadialGradient-2 + ( qreal cx, qreal cy, qreal radius, qreal fx = 0, qreal fy = 0 ) + + + center + center + () + + + focalPoint + focalPoint + () + + + radius + radius + () + + + + QRadioButton + qradiobutton.html + + QRadioButton + QRadioButton + ( QWidget * parent = 0 ) + + + QRadioButton + QRadioButton-2 + ( const QString & text, QWidget * parent = 0 ) + + + QRadioButton + QRadioButton-3 + ( QWidget * parent, const char * name ) + + + QRadioButton + QRadioButton-4 + ( const QString & text, QWidget * parent, const char * name ) + + + + QReadLocker + qreadlocker.html + + QReadLocker + QReadLocker + ( QReadWriteLock * lock ) + + + readWriteLock + readWriteLock + () + + + relock + relock + () + + + unlock + unlock + () + + + + QReadWriteLock + qreadwritelock.html + + QReadWriteLock + QReadWriteLock + () + + + lockForRead + lockForRead + () + + + lockForWrite + lockForWrite + () + + + tryLockForRead + tryLockForRead + () + + + tryLockForWrite + tryLockForWrite + () + + + unlock + unlock + () + + + + QRectF + qrectf.html + + QRectF + QRectF + () + + + QRectF + QRectF-2 + ( const QPointF & topLeft, const QSizeF & size ) + + + QRectF + QRectF-3 + ( qreal x, qreal y, qreal width, qreal height ) + + + QRectF + QRectF-4 + ( const QRect & rectangle ) + + + adjust + adjust + ( qreal dx1, qreal dy1, qreal dx2, qreal dy2 ) + + + adjusted + adjusted + ( qreal dx1, qreal dy1, qreal dx2, qreal dy2 ) + + + bottom + bottom + () + + + bottomLeft + bottomLeft + () + + + bottomRight + bottomRight + () + + + center + center + () + + + contains + contains + ( const QPointF & point ) + + + contains + contains-2 + ( qreal x, qreal y ) + + + contains + contains-3 + ( const QRectF & rectangle ) + + + getCoords + getCoords + ( qreal * x1, qreal * y1, qreal * x2, qreal * y2 ) + + + getRect + getRect + ( qreal * x, qreal * y, qreal * width, qreal * height ) + + + height + height + () + + + intersect + intersect + ( const QRectF & rectangle ) + + + intersects + intersects + ( const QRectF & rectangle ) + + + isEmpty + isEmpty + () + + + isNull + isNull + () + + + isValid + isValid + () + + + left + left + () + + + moveBottom + moveBottom + ( qreal y ) + + + moveBottomLeft + moveBottomLeft + ( const QPointF & position ) + + + moveBottomRight + moveBottomRight + ( const QPointF & position ) + + + moveCenter + moveCenter + ( const QPointF & position ) + + + moveLeft + moveLeft + ( qreal x ) + + + moveRight + moveRight + ( qreal x ) + + + moveTo + moveTo + ( qreal x, qreal y ) + + + moveTo + moveTo-2 + ( const QPointF & position ) + + + moveTop + moveTop + ( qreal y ) + + + moveTopLeft + moveTopLeft + ( const QPointF & position ) + + + moveTopRight + moveTopRight + ( const QPointF & position ) + + + normalized + normalized + () + + + right + right + () + + + setBottom + setBottom + ( qreal y ) + + + setBottomLeft + setBottomLeft + ( const QPointF & position ) + + + setBottomRight + setBottomRight + ( const QPointF & position ) + + + setCoords + setCoords + ( qreal x1, qreal y1, qreal x2, qreal y2 ) + + + setHeight + setHeight + ( qreal height ) + + + setLeft + setLeft + ( qreal x ) + + + setRect + setRect + ( qreal x, qreal y, qreal width, qreal height ) + + + setRight + setRight + ( qreal x ) + + + setSize + setSize + ( const QSizeF & size ) + + + setTop + setTop + ( qreal y ) + + + setTopLeft + setTopLeft + ( const QPointF & position ) + + + setTopRight + setTopRight + ( const QPointF & position ) + + + setWidth + setWidth + ( qreal width ) + + + setX + setX + ( qreal x ) + + + setY + setY + ( qreal y ) + + + size + size + () + + + toRect + toRect + () + + + top + top + () + + + topLeft + topLeft + () + + + topRight + topRight + () + + + translate + translate + ( qreal dx, qreal dy ) + + + translate + translate-2 + ( const QPointF & offset ) + + + translated + translated + ( qreal dx, qreal dy ) + + + translated + translated-2 + ( const QPointF & offset ) + + + unite + unite + ( const QRectF & rectangle ) + + + width + width + () + + + x + x + () + + + y + y + () + + + operator& + operator-and + amp;( const QRectF & rectangle ) + + + operator& + operator-and-eq + amp;=( const QRectF & rectangle ) + + + operator| + operator-7c + ( const QRectF & rectangle ) + + + operator|= + operator-7c-eq + ( const QRectF & rectangle ) + + + + QRect + qrect.html + + QRect + QRect + () + + + QRect + QRect-2 + ( const QPoint & topLeft, const QPoint & bottomRight ) + + + QRect + QRect-3 + ( const QPoint & topLeft, const QSize & size ) + + + QRect + QRect-4 + ( int x, int y, int width, int height ) + + + adjust + adjust + ( int dx1, int dy1, int dx2, int dy2 ) + + + adjusted + adjusted + ( int dx1, int dy1, int dx2, int dy2 ) + + + bottom + bottom + () + + + bottomLeft + bottomLeft + () + + + bottomRight + bottomRight + () + + + center + center + () + + + contains + contains + ( const QPoint & point, bool proper = false ) + + + contains + contains-2 + ( int x, int y, bool proper ) + + + contains + contains-3 + ( int x, int y ) + + + contains + contains-4 + ( const QRect & rectangle, bool proper = false ) + + + getCoords + getCoords + ( int * x1, int * y1, int * x2, int * y2 ) + + + getRect + getRect + ( int * x, int * y, int * width, int * height ) + + + height + height + () + + + intersect + intersect + ( const QRect & rectangle ) + + + intersects + intersects + ( const QRect & rectangle ) + + + isEmpty + isEmpty + () + + + isNull + isNull + () + + + isValid + isValid + () + + + left + left + () + + + moveBottom + moveBottom + ( int y ) + + + moveBottomLeft + moveBottomLeft + ( const QPoint & position ) + + + moveBottomRight + moveBottomRight + ( const QPoint & position ) + + + moveCenter + moveCenter + ( const QPoint & position ) + + + moveLeft + moveLeft + ( int x ) + + + moveRight + moveRight + ( int x ) + + + moveTo + moveTo + ( int x, int y ) + + + moveTo + moveTo-2 + ( const QPoint & position ) + + + moveTop + moveTop + ( int y ) + + + moveTopLeft + moveTopLeft + ( const QPoint & position ) + + + moveTopRight + moveTopRight + ( const QPoint & position ) + + + normalized + normalized + () + + + right + right + () + + + setBottom + setBottom + ( int y ) + + + setBottomLeft + setBottomLeft + ( const QPoint & position ) + + + setBottomRight + setBottomRight + ( const QPoint & position ) + + + setCoords + setCoords + ( int x1, int y1, int x2, int y2 ) + + + setHeight + setHeight + ( int height ) + + + setLeft + setLeft + ( int x ) + + + setRect + setRect + ( int x, int y, int width, int height ) + + + setRight + setRight + ( int x ) + + + setSize + setSize + ( const QSize & size ) + + + setTop + setTop + ( int y ) + + + setTopLeft + setTopLeft + ( const QPoint & position ) + + + setTopRight + setTopRight + ( const QPoint & position ) + + + setWidth + setWidth + ( int width ) + + + setX + setX + ( int x ) + + + setY + setY + ( int y ) + + + size + size + () + + + top + top + () + + + topLeft + topLeft + () + + + topRight + topRight + () + + + translate + translate + ( int dx, int dy ) + + + translate + translate-2 + ( const QPoint & offset ) + + + translated + translated + ( int dx, int dy ) + + + translated + translated-2 + ( const QPoint & offset ) + + + unite + unite + ( const QRect & rectangle ) + + + width + width + () + + + x + x + () + + + y + y + () + + + operator& + operator-and + amp;( const QRect & rectangle ) + + + operator& + operator-and-eq + amp;=( const QRect & rectangle ) + + + operator| + operator-7c + ( const QRect & rectangle ) + + + operator|= + operator-7c-eq + ( const QRect & rectangle ) + + + addCoords + addCoords + ( int dx1, int dy1, int dx2, int dy2 ) + + + coords + coords + ( int * x1, int * y1, int * x2, int * y2 ) + + + moveBy + moveBy + ( int dx, int dy ) + + + moveBy + moveBy-2 + ( const QPoint & p ) + + + normalize + normalize + () + + + rBottom + rBottom + () + + + rLeft + rLeft + () + + + rRight + rRight + () + + + rTop + rTop + () + + + rect + rect + ( int * x, int * y, int * width, int * height ) + + + + QRegExp + qregexp.html + + CaretMode + CaretMode-enum + + + + PatternSyntax + PatternSyntax-enum + + + + QRegExp + QRegExp + () + + + QRegExp + QRegExp-2 + ( const QString & pattern, Qt::CaseSensitivity cs = Qt::CaseSensitive, PatternSyntax syntax = RegExp ) + + + QRegExp + QRegExp-3 + ( const QRegExp & rx ) + + + cap + cap + ( int nth = 0 ) + + + capturedTexts + capturedTexts + () + + + CaseSensitivity + caseSensitivity + QRegExp::caseSensitivity() + + + errorString + errorString + () + + + escape + escape + ( const QString & str ) + + + exactMatch + exactMatch + ( const QString & str ) + + + indexIn + indexIn + ( const QString & str, int offset = 0, CaretMode caretMode = CaretAtZero ) + + + isEmpty + isEmpty + () + + + isMinimal + isMinimal + () + + + isValid + isValid + () + + + lastIndexIn + lastIndexIn + ( const QString & str, int offset = -1, CaretMode caretMode = CaretAtZero ) + + + matchedLength + matchedLength + () + + + numCaptures + numCaptures + () + + + pattern + pattern + () + + + patternSyntax + patternSyntax + () + + + pos + pos + ( int nth = 0 ) + + + setCaseSensitivity + setCaseSensitivity + ( Qt::CaseSensitivity cs ) + + + setMinimal + setMinimal + ( bool minimal ) + + + setPattern + setPattern + ( const QString & pattern ) + + + setPatternSyntax + setPatternSyntax + ( PatternSyntax syntax ) + + + operator!= + operator-not-eq + ( const QRegExp & rx ) + + + operator= + operator-eq + ( const QRegExp & rx ) + + + operator== + operator-eq-eq + ( const QRegExp & rx ) + + + QRegExp + QRegExp-4 + ( const QString & pattern, bool cs, bool wildcard = false ) + + + caseSensitive + caseSensitive + () + + + minimal + minimal + () + + + search + search + ( const QString & str, int from = 0, CaretMode caretMode = CaretAtZero ) + + + searchRev + searchRev + ( const QString & str, int from = -1, CaretMode caretMode = CaretAtZero ) + + + setCaseSensitive + setCaseSensitive + ( bool sensitive ) + + + setWildcard + setWildcard + ( bool wildcard ) + + + wildcard + wildcard + () + + + + QRegExpValidator + qregexpvalidator.html + + QRegExpValidator + QRegExpValidator + ( QObject * parent ) + + + QRegExpValidator + QRegExpValidator-2 + ( const QRegExp & rx, QObject * parent ) + + + State + validate + QRegExpValidator::validate( QString & input, int & pos ) + + + QRegExpValidator + QRegExpValidator-3 + ( QObject * parent, const char * name ) + + + QRegExpValidator + QRegExpValidator-4 + ( const QRegExp & rx, QObject * parent, const char * name ) + + + + QRegion + qregion.html + + RegionType + RegionType-enum + + + + QRegion + QRegion + () + + + QRegion + QRegion-2 + ( int x, int y, int w, int h, RegionType t = Rectangle ) + + + QRegion + QRegion-3 + ( const QPolygon & a, Qt::FillRule fillRule = Qt::OddEvenFill ) + + + QRegion + QRegion-5 + ( const QRegion & r ) + + + QRegion + QRegion-6 + ( const QBitmap & bm ) + + + QRegion + QRegion-7 + ( const QRect & r, RegionType t = Rectangle ) + + + boundingRect + boundingRect + () + + + contains + contains + ( const QPoint & p ) + + + contains + contains-2 + ( const QRect & r ) + + + eor + eor + ( const QRegion & r ) + + + handle + handle + () + + + handle + handle-2 + () + + + handle + handle-3 + () + + + intersect + intersect + ( const QRegion & r ) + + + isEmpty + isEmpty + () + + + rects + rects + () + + + subtract + subtract + ( const QRegion & r ) + + + translate + translate + ( int dx, int dy ) + + + translate + translate-2 + ( const QPoint & point ) + + + translated + translated + ( int dx, int dy ) + + + translated + translated-2 + ( const QPoint & p ) + + + unite + unite + ( const QRegion & r ) + + + operator + operator-QVariant + QVariant() + + + operator!= + operator-not-eq + ( const QRegion & other ) + + + operator& + operator-and + amp;( const QRegion & r ) + + + operator& + operator-and-eq + amp;=( const QRegion & r ) + + + operator+ + operator-2b + ( const QRegion & r ) + + + operator+= + operator-2b-eq + ( const QRegion & r ) + + + operator- + operator- + ( const QRegion & r ) + + + operator-= + operator--eq + ( const QRegion & r ) + + + operator= + operator-eq + ( const QRegion & r ) + + + operator== + operator-eq-eq + ( const QRegion & r ) + + + operator^ + operator-5e + ( const QRegion & r ) + + + operator^= + operator-5e-eq + ( const QRegion & r ) + + + operator| + operator-7c + ( const QRegion & r ) + + + operator|= + operator-7c-eq + ( const QRegion & r ) + + + QRegion + QRegion-4 + ( const QPolygon & pa, bool winding ) + + + isNull + isNull + () + + + + QResizeEvent + qresizeevent.html + + QResizeEvent + QResizeEvent + ( const QSize & size, const QSize & oldSize ) + + + oldSize + oldSize + () + + + size + size + () + + + + QRubberBand + qrubberband.html + + Shape + Shape-enum + + + + QRubberBand + QRubberBand + ( Shape s, QWidget * p = 0 ) + + + move + move + ( int x, int y ) + + + move + move-2 + ( const QPoint & p ) + + + resize + resize + ( int width, int height ) + + + resize + resize-2 + ( const QSize & size ) + + + setGeometry + setGeometry + ( const QRect & rect ) + + + setGeometry + setGeometry-2 + ( int x, int y, int width, int height ) + + + shape + shape + () + + + + QScreenCursor + qscreencursor.html + + + QScreenDriverFactory + qscreendriverfactory.html + + create + create + ( const QString & key, int displayId ) + + + keys + keys + () + + + + QScreenDriverPlugin + qscreendriverplugin.html + + QScreenDriverPlugin + QScreenDriverPlugin + ( QObject * parent = 0 ) + + + create + create + ( const QString & key, int displayId ) + + + keys + keys + () + + + + QScreen + qscreen.html + + PixelType + PixelType-enum + + + + QScreen + QScreen + ( int displayId ) + + + alloc + alloc + ( unsigned int red, unsigned int green, unsigned int blue ) + + + base + base + () + + + blank + blank + ( bool on ) + + + blit + blit + ( const QImage & image, const QPoint & topLeft, const QRegion & region ) + + + clut + clut + () + + + connect + connect + ( const QString & displaySpec ) + + + depth + depth + () + + + deviceHeight + deviceHeight + () + + + deviceWidth + deviceWidth + () + + + disconnect + disconnect + () + + + exposeRegion + exposeRegion + ( QRegion region, int windowIndex ) + + + height + height + () + + + initDevice + initDevice + () + + + isInterlaced + isInterlaced + () + + + isTransformed + isTransformed + () + + + lastOp + lastOp + () + + + linestep + linestep + () + + + mapFromDevice + mapFromDevice + ( const QSize & size ) + + + mapFromDevice + mapFromDevice-2 + ( const QPoint & point, const QSize & screenSize ) + + + mapFromDevice + mapFromDevice-3 + ( const QRect & rectangle, const QSize & screenSize ) + + + mapFromDevice + mapFromDevice-4 + ( const QImage & image ) + + + mapFromDevice + mapFromDevice-5 + ( const QRegion & region, const QSize & screenSize ) + + + mapToDevice + mapToDevice + ( const QSize & size ) + + + mapToDevice + mapToDevice-2 + ( const QPoint & point, const QSize & screenSize ) + + + mapToDevice + mapToDevice-3 + ( const QRect & rectangle, const QSize & screenSize ) + + + mapToDevice + mapToDevice-4 + ( const QImage & image ) + + + mapToDevice + mapToDevice-5 + ( const QRegion & region, const QSize & screenSize ) + + + numCols + numCols + () + + + onCard + onCard + ( const unsigned char * buffer ) + + + onCard + onCard-2 + ( const unsigned char * buffer, ulong & offset ) + + + opType + opType + () + + + pixelType + pixelType + () + + + pixmapDepth + pixmapDepth + () + + + pixmapLinestepAlignment + pixmapLinestepAlignment + () + + + pixmapOffsetAlignment + pixmapOffsetAlignment + () + + + restore + restore + () + + + save + save + () + + + screenSize + screenSize + () + + + setDirty + setDirty + ( const QRect & rectangle ) + + + setMode + setMode + ( int width, int height, int depth ) + + + shutdownDevice + shutdownDevice + () + + + solidFill + solidFill + ( const QColor & color, const QRegion & region ) + + + supportsDepth + supportsDepth + ( int depth ) + + + totalSize + totalSize + () + + + transformOrientation + transformOrientation + () + + + width + width + () + + + + QScrollArea + qscrollarea.html + + QScrollArea + QScrollArea + ( QWidget * parent = 0 ) + + + ensureVisible + ensureVisible + ( int x, int y, int xmargin = 50, int ymargin = 50 ) + + + setWidget + setWidget + ( QWidget * widget ) + + + takeWidget + takeWidget + () + + + widget + widget + () + + + + QScrollBar + qscrollbar.html + + QScrollBar + QScrollBar + ( QWidget * parent = 0 ) + + + QScrollBar + QScrollBar-2 + ( Qt::Orientation orientation, QWidget * parent = 0 ) + + + QScrollBar + QScrollBar-3 + ( QWidget * parent, const char * name ) + + + QScrollBar + QScrollBar-4 + ( Qt::Orientation orientation, QWidget * parent, const char * name ) + + + QScrollBar + QScrollBar-5 + ( int minimum, int maximum, int lineStep, int pageStep, int value, Qt::Orientation orientation, QWidget * parent = 0, const char * name = 0 ) + + + draggingSlider + draggingSlider + () + + + + QSemaphore + qsemaphore.html + + QSemaphore + QSemaphore + ( int n = 0 ) + + + acquire + acquire + ( int n = 1 ) + + + available + available + () + + + release + release + ( int n = 1 ) + + + tryAcquire + tryAcquire + ( int n = 1 ) + + + + QSessionManager + qsessionmanager.html + + RestartHint + RestartHint-enum + + + + allowsErrorInteraction + allowsErrorInteraction + () + + + allowsInteraction + allowsInteraction + () + + + cancel + cancel + () + + + discardCommand + discardCommand + () + + + isPhase2 + isPhase2 + () + + + release + release + () + + + requestPhase2 + requestPhase2 + () + + + restartCommand + restartCommand + () + + + restartHint + restartHint + () + + + sessionId + sessionId + () + + + sessionKey + sessionKey + () + + + setDiscardCommand + setDiscardCommand + ( const QStringList & list ) + + + setManagerProperty + setManagerProperty + ( const QString & name, const QStringList & value ) + + + setManagerProperty + setManagerProperty-2 + ( const QString & name, const QString & value ) + + + setRestartCommand + setRestartCommand + ( const QStringList & command ) + + + setRestartHint + setRestartHint + ( RestartHint hint ) + + + + QSet::const_iterator + qset-const-iterator.html + + const_iterator + const_iterator + () + + + const_iterator + const_iterator-3 + ( const const_iterator & other ) + + + operator!= + operator-not-eq + ( const const_iterator & other ) + + + operator* + operator-2a + () + + + operator+ + operator-2b + ( int j ) + + + operator++ + operator-2b-2b + () + + + operator++ + operator-2b-2b-2 + ( int ) + + + operator+= + operator-2b-eq + ( int j ) + + + operator- + operator- + ( int j ) + + + operator-- + operator-- + () + + + operator-- + operator---2 + ( int ) + + + operator-= + operator--eq + ( int j ) + + + operator-& + operator--gt + gt;() + + + operator= + operator-eq + ( const const_iterator & other ) + + + operator== + operator-eq-eq + ( const const_iterator & other ) + + + + QSet + qset.html + + ConstIterator + ConstIterator-typedef + + + + QSet + QSet + () + + + QSet + QSet-2 + ( const QSet<T> & other ) + + + begin + begin + () + + + capacity + capacity + () + + + clear + clear + () + + + constBegin + constBegin + () + + + constEnd + constEnd + () + + + contains + contains + ( const T & value ) + + + count + count + () + + + empty + empty + () + + + end + end + () + + + fromList + fromList + ( const QList<T> & list ) + + + insert + insert + ( const T & value ) + + + intersect + intersect + ( const QSet<T> & other ) + + + isEmpty + isEmpty + () + + + remove + remove + ( const T & value ) + + + reserve + reserve + ( int size ) + + + size + size + () + + + squeeze + squeeze + () + + + subtract + subtract + ( const QSet<T> & other ) + + + toList + toList + () + + + unite + unite + ( const QSet<T> & other ) + + + values + values + () + + + operator!= + operator-not-eq + ( const QSet<T> & other ) + + + operator& + operator-and + amp;( const QSet<T> & other ) + + + operator& + operator-and-eq + amp;=( const QSet<T> & other ) + + + operator& + operator-and-eq-2 + amp;=( const T & value ) + + + operator+ + operator-2b + ( const QSet<T> & other ) + + + operator+= + operator-2b-eq + ( const QSet<T> & other ) + + + operator+= + operator-2b-eq-2 + ( const T & value ) + + + operator- + operator- + ( const QSet<T> & other ) + + + operator-= + operator--eq + ( const QSet<T> & other ) + + + operator-= + operator--eq-2 + ( const T & value ) + + + operator<< + operator-lt-lt + ( const T & value ) + + + operator= + operator-eq + ( const QSet<T> & other ) + + + operator== + operator-eq-eq + ( const QSet<T> & other ) + + + operator| + operator-7c + ( const QSet<T> & other ) + + + operator|= + operator-7c-eq + ( const QSet<T> & other ) + + + operator|= + operator-7c-eq-2 + ( const T & value ) + + + + QSetIterator + qsetiterator.html + + QSetIterator + QSetIterator + ( const QSet<T> & set ) + + + findNext + findNext + ( const T & value ) + + + findPrevious + findPrevious + ( const T & value ) + + + hasNext + hasNext + () + + + hasPrevious + hasPrevious + () + + + next + next + () + + + peekNext + peekNext + () + + + peekPrevious + peekPrevious + () + + + previous + previous + () + + + toBack + toBack + () + + + toFront + toFront + () + + + operator= + operator-eq + ( const QSet<T> & set ) + + + + QSettings + qsettings.html + + Format + Format-enum + + + + ReadFunc + ReadFunc-typedef + + + + Scope + Scope-enum + + + + SettingsMap + SettingsMap-typedef + + + + Status + Status-enum + + + + WriteFunc + WriteFunc-typedef + + + + QSettings + QSettings + ( const QString & organization, const QString & application = QString() + + + QSettings + QSettings-2 + ( Scope scope, const QString & organization, const QString & application = QString() + + + QSettings + QSettings-3 + ( Format format, Scope scope, const QString & organization, const QString & application = QString() + + + QSettings + QSettings-4 + ( const QString & fileName, Format format, QObject * parent = 0 ) + + + QSettings + QSettings-5 + ( QObject * parent = 0 ) + + + allKeys + allKeys + () + + + beginGroup + beginGroup + ( const QString & prefix ) + + + beginReadArray + beginReadArray + ( const QString & prefix ) + + + beginWriteArray + beginWriteArray + ( const QString & prefix, int size = -1 ) + + + childGroups + childGroups + () + + + childKeys + childKeys + () + + + clear + clear + () + + + contains + contains + ( const QString & key ) + + + endArray + endArray + () + + + endGroup + endGroup + () + + + fallbacksEnabled + fallbacksEnabled + () + + + fileName + fileName + () + + + group + group + () + + + isWritable + isWritable + () + + + registerFormat + registerFormat + ( const QString & extension, ReadFunc readFunc, WriteFunc writeFunc, Qt::CaseSensitivity caseSensitivity = Qt::CaseSensitive ) + + + remove + remove + ( const QString & key ) + + + setArrayIndex + setArrayIndex + ( int i ) + + + setFallbacksEnabled + setFallbacksEnabled + ( bool b ) + + + setPath + setPath + ( Format format, Scope scope, const QString & path ) + + + setValue + setValue + ( const QString & key, const QVariant & value ) + + + status + status + () + + + sync + sync + () + + + value + value + ( const QString & key, const QVariant & defaultValue = QVariant() + + + setSystemIniPath + setSystemIniPath + ( const QString & dir ) + + + setUserIniPath + setUserIniPath + ( const QString & dir ) + + + System + System-enum + + + + entryList + entryList + ( const QString & key ) + + + insertSearchPath + insertSearchPath + ( System system, const QString & path ) + + + readBoolEntry + readBoolEntry + ( const QString & key, bool defaultValue = false, bool * ok = 0 ) + + + readDoubleEntry + readDoubleEntry + ( const QString & key, double defaultValue = 0, bool * ok = 0 ) + + + readEntry + readEntry + ( const QString & key, const QString & defaultValue = QString() + + + readListEntry + readListEntry + ( const QString & key, bool * ok = 0 ) + + + readListEntry + readListEntry-2 + ( const QString & key, QChar separator, bool * ok = 0 ) + + + readNumEntry + readNumEntry + ( const QString & key, int defaultValue = 0, bool * ok = 0 ) + + + removeEntry + removeEntry + ( const QString & key ) + + + removeSearchPath + removeSearchPath + ( System system, const QString & path ) + + + resetGroup + resetGroup + () + + + setPath + setPath-2 + ( const QString & organization, const QString & application, Scope scope = Global ) + + + subkeyList + subkeyList + ( const QString & key ) + + + writeEntry + writeEntry + ( const QString & key, bool value ) + + + writeEntry + writeEntry-2 + ( const QString & key, double value ) + + + writeEntry + writeEntry-3 + ( const QString & key, int value ) + + + writeEntry + writeEntry-4 + ( const QString & key, const char * value ) + + + writeEntry + writeEntry-5 + ( const QString & key, const QString & value ) + + + writeEntry + writeEntry-6 + ( const QString & key, const QStringList & value ) + + + writeEntry + writeEntry-7 + ( const QString & key, const QStringList & value, QChar separator ) + + + + QSharedData + qshareddata.html + + QSharedData + QSharedData + () + + + QSharedData + QSharedData-2 + ( const QSharedData & other ) + + + + QSharedDataPointer + qshareddatapointer.html + + QSharedDataPointer + QSharedDataPointer + () + + + QSharedDataPointer + QSharedDataPointer-2 + ( T * sharedData ) + + + QSharedDataPointer + QSharedDataPointer-3 + ( const QSharedDataPointer<T> & other ) + + + constData + constData + () + + + data + data + () + + + data + data-2 + () + + + detach + detach + () + + + operator + operator-T--2a + T *() + + + operator + operator-const-T--2a + const T *() + + + operator! + operator-not + () + + + operator!= + operator-not-eq + ( const QSharedDataPointer<T> & other ) + + + operator* + operator-2a + () + + + operator* + operator-2a-2 + () + + + operator-& + operator--gt + gt;() + + + operator-& + operator--gt-2 + gt;() + + + operator= + operator-eq + ( const QSharedDataPointer<T> & other ) + + + operator= + operator-eq-2 + ( T * sharedData ) + + + operator== + operator-eq-eq + ( const QSharedDataPointer<T> & other ) + + + + QShortcutEvent + qshortcutevent.html + + QShortcutEvent + QShortcutEvent + ( const QKeySequence & key, int id, bool ambiguous = false ) + + + isAmbiguous + isAmbiguous + () + + + key + key + () + + + shortcutId + shortcutId + () + + + + QShortcut + qshortcut.html + + ShortcutContext + context-prop + + + + QShortcut + QShortcut + ( QWidget * parent ) + + + QShortcut + QShortcut-2 + ( const QKeySequence & key, QWidget * parent, const char * member = 0, const char * ambiguousMember = 0, Qt::ShortcutContext context = Qt::WindowShortcut ) + + + activated + activated + () + + + activatedAmbiguously + activatedAmbiguously + () + + + id + id + () + + + parentWidget + parentWidget + () + + + + QShowEvent + qshowevent.html + + QShowEvent + QShowEvent + () + + + + QSignalMapper + qsignalmapper.html + + QSignalMapper + QSignalMapper + ( QObject * parent = 0 ) + + + map + map + () + + + map + map-2 + ( QObject * sender ) + + + mapped + mapped + ( int i ) + + + mapped + mapped-2 + ( const QString & text ) + + + mapped + mapped-3 + ( QWidget * widget ) + + + mapped + mapped-4 + ( QObject * object ) + + + mapping + mapping + ( int id ) + + + mapping + mapping-2 + ( const QString & id ) + + + mapping + mapping-3 + ( QWidget * widget ) + + + mapping + mapping-4 + ( QObject * object ) + + + removeMappings + removeMappings + ( QObject * sender ) + + + setMapping + setMapping + ( QObject * sender, int id ) + + + setMapping + setMapping-2 + ( QObject * sender, const QString & text ) + + + setMapping + setMapping-3 + ( QObject * sender, QWidget * widget ) + + + setMapping + setMapping-4 + ( QObject * sender, QObject * object ) + + + QSignalMapper + QSignalMapper-2 + ( QObject * parent, const char * name ) + + + + QSignalSpy + qsignalspy.html + + QSignalSpy + QSignalSpy + ( QObject * object, const char * signal ) + + + isValid + isValid + () + + + signal + signal + () + + + + QSizeF + qsizef.html + + QSizeF + QSizeF + () + + + QSizeF + QSizeF-2 + ( const QSize & size ) + + + QSizeF + QSizeF-3 + ( qreal width, qreal height ) + + + boundedTo + boundedTo + ( const QSizeF & otherSize ) + + + expandedTo + expandedTo + ( const QSizeF & otherSize ) + + + height + height + () + + + isEmpty + isEmpty + () + + + isNull + isNull + () + + + isValid + isValid + () + + + rheight + rheight + () + + + rwidth + rwidth + () + + + scale + scale + ( qreal width, qreal height, Qt::AspectRatioMode mode ) + + + scale + scale-2 + ( const QSizeF & size, Qt::AspectRatioMode mode ) + + + setHeight + setHeight + ( qreal height ) + + + setWidth + setWidth + ( qreal width ) + + + toSize + toSize + () + + + transpose + transpose + () + + + width + width + () + + + operator*= + operator-2a-eq + ( qreal factor ) + + + operator+= + operator-2b-eq + ( const QSizeF & size ) + + + operator-= + operator--eq + ( const QSizeF & size ) + + + operator/= + operator-2f-eq + ( qreal divisor ) + + + + QSizeGrip + qsizegrip.html + + QSizeGrip + QSizeGrip + ( QWidget * parent ) + + + mouseMoveEvent + mouseMoveEvent + ( QMouseEvent * event ) + + + mousePressEvent + mousePressEvent + ( QMouseEvent * event ) + + + paintEvent + paintEvent + ( QPaintEvent * event ) + + + QSizeGrip + QSizeGrip-2 + ( QWidget * parent, const char * name ) + + + + QSize + qsize.html + + QSize + QSize + () + + + QSize + QSize-2 + ( int width, int height ) + + + boundedTo + boundedTo + ( const QSize & otherSize ) + + + expandedTo + expandedTo + ( const QSize & otherSize ) + + + height + height + () + + + isEmpty + isEmpty + () + + + isNull + isNull + () + + + isValid + isValid + () + + + rheight + rheight + () + + + rwidth + rwidth + () + + + scale + scale + ( int width, int height, Qt::AspectRatioMode mode ) + + + scale + scale-2 + ( const QSize & size, Qt::AspectRatioMode mode ) + + + setHeight + setHeight + ( int height ) + + + setWidth + setWidth + ( int width ) + + + transpose + transpose + () + + + width + width + () + + + operator*= + operator-2a-eq + ( qreal factor ) + + + operator+= + operator-2b-eq + ( const QSize & size ) + + + operator-= + operator--eq + ( const QSize & size ) + + + operator/= + operator-2f-eq + ( qreal divisor ) + + + + QSizePolicy + qsizepolicy.html + + Policy + Policy-enum + + + + PolicyFlag + PolicyFlag-enum + + + + QSizePolicy + QSizePolicy + () + + + QSizePolicy + QSizePolicy-2 + ( Policy horizontal, Policy vertical ) + + + Orientations + expandingDirections + QSizePolicy::expandingDirections() + + + hasHeightForWidth + hasHeightForWidth + () + + + horizontalPolicy + horizontalPolicy + () + + + horizontalStretch + horizontalStretch + () + + + setHeightForWidth + setHeightForWidth + ( bool dependent ) + + + setHorizontalPolicy + setHorizontalPolicy + ( Policy policy ) + + + setHorizontalStretch + setHorizontalStretch + ( uchar stretchFactor ) + + + setVerticalPolicy + setVerticalPolicy + ( Policy policy ) + + + setVerticalStretch + setVerticalStretch + ( uchar stretchFactor ) + + + transpose + transpose + () + + + verticalPolicy + verticalPolicy + () + + + verticalStretch + verticalStretch + () + + + operator + operator-QVariant + QVariant() + + + operator!= + operator-not-eq + ( const QSizePolicy & other ) + + + operator== + operator-eq-eq + ( const QSizePolicy & other ) + + + ExpandData + ExpandData-enum + + + + SizeType + SizeType-typedef + + + + QSizePolicy + QSizePolicy-3 + ( Policy horizontal, Policy vertical, bool dependent ) + + + QSizePolicy + QSizePolicy-4 + ( Policy horizontal, Policy vertical, uchar horizontalStretch, uchar verticalStretch, bool dependent = false ) + + + Orientations + expanding + QSizePolicy::expanding() + + + horData + horData + () + + + horStretch + horStretch + () + + + mayGrowHorizontally + mayGrowHorizontally + () + + + mayGrowVertically + mayGrowVertically + () + + + mayShrinkHorizontally + mayShrinkHorizontally + () + + + mayShrinkVertically + mayShrinkVertically + () + + + setHorData + setHorData + ( Policy policy ) + + + setHorStretch + setHorStretch + ( uchar stretch ) + + + setVerData + setVerData + ( Policy policy ) + + + setVerStretch + setVerStretch + ( uchar stretch ) + + + verData + verData + () + + + verStretch + verStretch + () + + + + QSlider + qslider.html + + TickPosition + TickPosition-enum + + + + QSlider + QSlider + ( QWidget * parent = 0 ) + + + QSlider + QSlider-2 + ( Qt::Orientation orientation, QWidget * parent = 0 ) + + + QSlider + QSlider-3 + ( QWidget * parent, const char * name ) + + + QSlider + QSlider-4 + ( Qt::Orientation orientation, QWidget * parent, const char * name ) + + + QSlider + QSlider-5 + ( int minValue, int maxValue, int pageStep, int value, Qt::Orientation orientation, QWidget * parent = 0, const char * name = 0 ) + + + addStep + addStep + () + + + setTickmarks + setTickmarks + ( TickPosition position ) + + + subtractStep + subtractStep + () + + + tickmarks + tickmarks + () + + + + QSocketNotifier + qsocketnotifier.html + + Type + Type-enum + + + + QSocketNotifier + QSocketNotifier + ( int socket, Type type, QObject * parent = 0 ) + + + activated + activated + ( int socket ) + + + isEnabled + isEnabled + () + + + setEnabled + setEnabled + ( bool enable ) + + + socket + socket + () + + + type + type + () + + + QSocketNotifier + QSocketNotifier-2 + ( int socket, Type type, QObject * parent, const char * name ) + + + + QSortFilterProxyModel + qsortfilterproxymodel.html + + CaseSensitivity + filterCaseSensitivity-prop + + + + QSortFilterProxyModel + QSortFilterProxyModel + ( QObject * parent = 0 ) + + + clear + clear + () + + + filterAcceptsColumn + filterAcceptsColumn + ( int source_column, const QModelIndex & source_parent ) + + + filterAcceptsRow + filterAcceptsRow + ( int source_row, const QModelIndex & source_parent ) + + + lessThan + lessThan + ( const QModelIndex & left, const QModelIndex & right ) + + + mapFromSource + mapFromSource + ( const QModelIndex & sourceIndex ) + + + mapToSource + mapToSource + ( const QModelIndex & proxyIndex ) + + + setFilterFixedString + setFilterFixedString + ( const QString & pattern ) + + + setFilterWildcard + setFilterWildcard + ( const QString & pattern ) + + + + QSound + qsound.html + + QSound + QSound + ( const QString & filename, QObject * parent = 0 ) + + + fileName + fileName + () + + + isAvailable + isAvailable + () + + + isFinished + isFinished + () + + + loops + loops + () + + + loopsRemaining + loopsRemaining + () + + + play + play + ( const QString & filename ) + + + play + play-2 + () + + + setLoops + setLoops + ( int number ) + + + stop + stop + () + + + QSound + QSound-2 + ( const QString & filename, QObject * parent, const char * name ) + + + available + available + () + + + + QSpacerItem + qspaceritem.html + + QSpacerItem + QSpacerItem + ( int w, int h, QSizePolicy::Policy hPolicy = QSizePolicy::Minimum, QSizePolicy::Policy vPolicy = QSizePolicy::Minimum ) + + + changeSize + changeSize + ( int w, int h, QSizePolicy::Policy hPolicy = QSizePolicy::Minimum, QSizePolicy::Policy vPolicy = QSizePolicy::Minimum ) + + + isEmpty + isEmpty + () + + + spacerItem + spacerItem + () + + + + QSpinBox + qspinbox.html + + QSpinBox + QSpinBox + ( QWidget * parent = 0 ) + + + setRange + setRange + ( int min, int max ) + + + textFromValue + textFromValue + ( int v ) + + + valueChanged + valueChanged + ( int i ) + + + valueChanged + valueChanged-2 + ( const QString & text ) + + + valueFromText + valueFromText + ( const QString & text ) + + + QSpinBox + QSpinBox-2 + ( QWidget * parent, const char * name ) + + + QSpinBox + QSpinBox-3 + ( int min, int max, int step, QWidget * parent, const char * name = 0 ) + + + maxValue + maxValue + () + + + minValue + minValue + () + + + setLineStep + setLineStep + ( int step ) + + + setMaxValue + setMaxValue + ( int val ) + + + setMinValue + setMinValue + ( int val ) + + + + QSplashScreen + qsplashscreen.html + + QSplashScreen + QSplashScreen + ( const QPixmap & pixmap = QPixmap() + + + QSplashScreen + QSplashScreen-2 + ( QWidget * parent, const QPixmap & pixmap = QPixmap() + + + clearMessage + clearMessage + () + + + drawContents + drawContents + ( QPainter * painter ) + + + finish + finish + ( QWidget * mainWin ) + + + messageChanged + messageChanged + ( const QString & message ) + + + pixmap + pixmap + () + + + repaint + repaint + () + + + setPixmap + setPixmap + ( const QPixmap & pixmap ) + + + showMessage + showMessage + ( const QString & message, int alignment = Qt::AlignLeft, const QColor & color = Qt::black ) + + + clear + clear + () + + + message + message + ( const QString & message, int alignment = Qt::AlignLeft, const QColor & color = Qt::black ) + + + + QSplitterHandle + qsplitterhandle.html + + QSplitterHandle + QSplitterHandle + ( Qt::Orientation orientation, QSplitter * parent ) + + + closestLegalPosition + closestLegalPosition + ( int pos ) + + + moveSplitter + moveSplitter + ( int pos ) + + + opaqueResize + opaqueResize + () + + + Orientation + orientation + QSplitterHandle::orientation() + + + setOrientation + setOrientation + ( Qt::Orientation orientation ) + + + splitter + splitter + () + + + + QSplitter + qsplitter.html + + Orientation + orientation-prop + + + + QSplitter + QSplitter + ( QWidget * parent = 0 ) + + + QSplitter + QSplitter-2 + ( Qt::Orientation orientation, QWidget * parent = 0 ) + + + addWidget + addWidget + ( QWidget * widget ) + + + closestLegalPosition + closestLegalPosition + ( int pos, int index ) + + + count + count + () + + + createHandle + createHandle + () + + + getRange + getRange + ( int index, int * min, int * max ) + + + handle + handle + ( int index ) + + + indexOf + indexOf + ( QWidget * widget ) + + + insertWidget + insertWidget + ( int index, QWidget * widget ) + + + isCollapsible + isCollapsible + ( int index ) + + + moveSplitter + moveSplitter + ( int pos, int index ) + + + refresh + refresh + () + + + restoreState + restoreState + ( const QByteArray & state ) + + + saveState + saveState + () + + + setCollapsible + setCollapsible + ( int index, bool collapse ) + + + setRubberBand + setRubberBand + ( int pos ) + + + setSizes + setSizes + ( const QList<int> & list ) + + + setStretchFactor + setStretchFactor + ( int index, int stretch ) + + + sizes + sizes + () + + + splitterMoved + splitterMoved + ( int pos, int index ) + + + widget + widget + ( int index ) + + + ResizeMode + ResizeMode-enum + + + + QSplitter + QSplitter-3 + ( QWidget * parent, const char * name ) + + + QSplitter + QSplitter-4 + ( Qt::Orientation orientation, QWidget * parent, const char * name ) + + + moveToFirst + moveToFirst + ( QWidget * widget ) + + + moveToLast + moveToLast + ( QWidget * widget ) + + + setCollapsible + setCollapsible-2 + ( QWidget * widget, bool collapsible ) + + + setResizeMode + setResizeMode + ( QWidget * widget, ResizeMode mode ) + + + + QSqlDatabase + qsqldatabase.html + + QSqlDatabase + QSqlDatabase + () + + + QSqlDatabase + QSqlDatabase-2 + ( const QSqlDatabase & other ) + + + QSqlDatabase + QSqlDatabase-3 + ( const QString & type ) + + + QSqlDatabase + QSqlDatabase-4 + ( QSqlDriver * driver ) + + + addDatabase + addDatabase + ( const QString & type, const QString & connectionName = QLatin1String( defaultConnection ) + + + addDatabase + addDatabase-2 + ( QSqlDriver * driver, const QString & connectionName = QLatin1String( defaultConnection ) + + + cloneDatabase + cloneDatabase + ( const QSqlDatabase & other, const QString & connectionName ) + + + close + close + () + + + commit + commit + () + + + connectOptions + connectOptions + () + + + connectionNames + connectionNames + () + + + contains + contains + ( const QString & connectionName = QLatin1String( defaultConnection ) + + + database + database + ( const QString & connectionName = QLatin1String( defaultConnection ) + + + databaseName + databaseName + () + + + driver + driver + () + + + driverName + driverName + () + + + drivers + drivers + () + + + exec + exec + ( const QString & query = QString() + + + hostName + hostName + () + + + isDriverAvailable + isDriverAvailable + ( const QString & name ) + + + isOpen + isOpen + () + + + isOpenError + isOpenError + () + + + isValid + isValid + () + + + lastError + lastError + () + + + open + open + () + + + open + open-2 + ( const QString & user, const QString & password ) + + + password + password + () + + + port + port + () + + + primaryIndex + primaryIndex + ( const QString & tablename ) + + + record + record + ( const QString & tablename ) + + + registerSqlDriver + registerSqlDriver + ( const QString & name, QSqlDriverCreatorBase * creator ) + + + removeDatabase + removeDatabase + ( const QString & connectionName ) + + + rollback + rollback + () + + + setConnectOptions + setConnectOptions + ( const QString & options = QString() + + + setDatabaseName + setDatabaseName + ( const QString & name ) + + + setHostName + setHostName + ( const QString & host ) + + + setPassword + setPassword + ( const QString & password ) + + + setPort + setPort + ( int port ) + + + setUserName + setUserName + ( const QString & name ) + + + tables + tables + ( QSql::TableType type = QSql::Tables ) + + + transaction + transaction + () + + + userName + userName + () + + + operator= + operator-eq + ( const QSqlDatabase & other ) + + + record + record-2 + ( const QSqlQuery & query ) + + + recordInfo + recordInfo + ( const QString & tablename ) + + + recordInfo + recordInfo-2 + ( const QSqlQuery & query ) + + + + QSqlDriverCreatorBase + qsqldrivercreatorbase.html + + createObject + createObject + () + + + + QSqlDriverCreator + qsqldrivercreator.html + + + QSqlDriver + qsqldriver.html + + DriverFeature + DriverFeature-enum + + + + IdentifierType + IdentifierType-enum + + + + StatementType + StatementType-enum + + + + QSqlDriver + QSqlDriver + ( QObject * parent = 0 ) + + + beginTransaction + beginTransaction + () + + + close + close + () + + + commitTransaction + commitTransaction + () + + + createResult + createResult + () + + + escapeIdentifier + escapeIdentifier + ( const QString & identifier, IdentifierType type ) + + + formatValue + formatValue-2 + ( const QSqlField & field, bool trimStrings = false ) + + + handle + handle + () + + + hasFeature + hasFeature + ( DriverFeature feature ) + + + isOpen + isOpen + () + + + isOpenError + isOpenError + () + + + lastError + lastError + () + + + open + open + ( const QString & db, const QString & user = QString() + + + primaryIndex + primaryIndex + ( const QString & tableName ) + + + record + record + ( const QString & tableName ) + + + rollbackTransaction + rollbackTransaction + () + + + setLastError + setLastError + ( const QSqlError & error ) + + + setOpen + setOpen + ( bool open ) + + + setOpenError + setOpenError + ( bool error ) + + + sqlStatement + sqlStatement + ( StatementType type, const QString & tableName, const QSqlRecord & rec, bool preparedStatement ) + + + tables + tables + ( QSql::TableType tableType ) + + + + QSqlDriverPlugin + qsqldriverplugin.html + + QSqlDriverPlugin + QSqlDriverPlugin + ( QObject * parent = 0 ) + + + create + create + ( const QString & key ) + + + keys + keys + () + + + formatValue + formatValue + ( const QSqlField * field, bool trimStrings = false ) + + + nullText + nullText + () + + + record + record-2 + ( const QSqlQuery & query ) + + + recordInfo + recordInfo + ( const QString & tablename ) + + + recordInfo + recordInfo-2 + ( const QSqlQuery & query ) + + + + QSqlError + qsqlerror.html + + ErrorType + ErrorType-enum + + + + QSqlError + QSqlError + ( const QString & driverText = QString() + + + QSqlError + QSqlError-2 + ( const QSqlError & other ) + + + databaseText + databaseText + () + + + driverText + driverText + () + + + isValid + isValid + () + + + number + number + () + + + setDatabaseText + setDatabaseText + ( const QString & databaseText ) + + + setDriverText + setDriverText + ( const QString & driverText ) + + + setNumber + setNumber + ( int number ) + + + setType + setType + ( ErrorType type ) + + + text + text + () + + + type + type + () + + + operator= + operator-eq + ( const QSqlError & other ) + + + + QSqlField + qsqlfield.html + + RequiredStatus + RequiredStatus-enum + + + + QSqlField + QSqlField + ( const QString & fieldName = QString() + + + QSqlField + QSqlField-2 + ( const QSqlField & other ) + + + clear + clear + () + + + defaultValue + defaultValue + () + + + isAutoValue + isAutoValue + () + + + isGenerated + isGenerated + () + + + isNull + isNull + () + + + isReadOnly + isReadOnly + () + + + isValid + isValid + () + + + length + length + () + + + name + name + () + + + precision + precision + () + + + requiredStatus + requiredStatus + () + + + setAutoValue + setAutoValue + ( bool autoVal ) + + + setDefaultValue + setDefaultValue + ( const QVariant & value ) + + + setGenerated + setGenerated + ( bool gen ) + + + setLength + setLength + ( int fieldLength ) + + + setName + setName + ( const QString & name ) + + + setPrecision + setPrecision + ( int precision ) + + + setReadOnly + setReadOnly + ( bool readOnly ) + + + setRequired + setRequired + ( bool required ) + + + setRequiredStatus + setRequiredStatus + ( RequiredStatus required ) + + + setType + setType + ( QVariant::Type type ) + + + setValue + setValue + ( const QVariant & value ) + + + Type + type + QSqlField::type() + + + value + value + () + + + operator!= + operator-not-eq + ( const QSqlField & other ) + + + operator= + operator-eq + ( const QSqlField & other ) + + + operator== + operator-eq-eq + ( const QSqlField & other ) + + + setNull + setNull + () + + + Location + Location-enum + + + + TableType + TableType-enum + + + + + QSqlIndex + qsqlindex.html + + QSqlIndex + QSqlIndex + ( const QString & cursorname = QString() + + + QSqlIndex + QSqlIndex-2 + ( const QSqlIndex & other ) + + + append + append + ( const QSqlField & field ) + + + append + append-2 + ( const QSqlField & field, bool desc ) + + + cursorName + cursorName + () + + + isDescending + isDescending + ( int i ) + + + name + name + () + + + setCursorName + setCursorName + ( const QString & cursorName ) + + + setDescending + setDescending + ( int i, bool desc ) + + + setName + setName + ( const QString & name ) + + + operator= + operator-eq + ( const QSqlIndex & other ) + + + toString + toString + ( const QString & prefix = QString() + + + toStringList + toStringList + ( const QString & prefix = QString() + + + Confirm + Confirm-enum + + + + Op + Op-enum + + + + + QSqlQuery + qsqlquery.html + + QSqlQuery + QSqlQuery + ( QSqlResult * result ) + + + QSqlQuery + QSqlQuery-2 + ( const QString & query = QString() + + + QSqlQuery + QSqlQuery-3 + ( QSqlDatabase db ) + + + QSqlQuery + QSqlQuery-4 + ( const QSqlQuery & other ) + + + addBindValue + addBindValue + ( const QVariant & val, QSql::ParamType paramType = QSql::In ) + + + at + at + () + + + bindValue + bindValue + ( const QString & placeholder, const QVariant & val, QSql::ParamType paramType = QSql::In ) + + + bindValue + bindValue-2 + ( int pos, const QVariant & val, QSql::ParamType paramType = QSql::In ) + + + boundValue + boundValue + ( const QString & placeholder ) + + + boundValue + boundValue-2 + ( int pos ) + + + boundValues + boundValues + () + + + clear + clear + () + + + driver + driver + () + + + exec + exec + ( const QString & query ) + + + exec + exec-2 + () + + + executedQuery + executedQuery + () + + + first + first + () + + + isActive + isActive + () + + + isForwardOnly + isForwardOnly + () + + + isNull + isNull + ( int field ) + + + isSelect + isSelect + () + + + isValid + isValid + () + + + last + last + () + + + lastError + lastError + () + + + lastInsertId + lastInsertId + () + + + lastQuery + lastQuery + () + + + next + next + () + + + numRowsAffected + numRowsAffected + () + + + prepare + prepare + ( const QString & query ) + + + previous + previous + () + + + record + record + () + + + result + result + () + + + seek + seek + ( int index, bool relative = false ) + + + setForwardOnly + setForwardOnly + ( bool forward ) + + + size + size + () + + + value + value + ( int index ) + + + operator= + operator-eq + ( const QSqlQuery & other ) + + + + QSqlQueryModel + qsqlquerymodel.html + + QSqlQueryModel + QSqlQueryModel + ( QObject * parent = 0 ) + + + canFetchMore + canFetchMore + ( const QModelIndex & parent = QModelIndex() + + + clear + clear + () + + + data + data + ( const QModelIndex & item, int role = Qt::DisplayRole ) + + + fetchMore + fetchMore + ( const QModelIndex & parent = QModelIndex() + + + headerData + headerData + ( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) + + + indexInQuery + indexInQuery + ( const QModelIndex & item ) + + + insertColumns + insertColumns + ( int column, int count, const QModelIndex & parent = QModelIndex() + + + lastError + lastError + () + + + query + query + () + + + queryChange + queryChange + () + + + record + record + ( int row ) + + + record + record-2 + () + + + removeColumns + removeColumns + ( int column, int count, const QModelIndex & parent = QModelIndex() + + + rowCount + rowCount + ( const QModelIndex & parent = QModelIndex() + + + setHeaderData + setHeaderData + ( int section, Qt::Orientation orientation, const QVariant & value, int role = Qt::EditRole ) + + + setLastError + setLastError + ( const QSqlError & error ) + + + setQuery + setQuery + ( const QSqlQuery & query ) + + + setQuery + setQuery-2 + ( const QString & query, const QSqlDatabase & db = QSqlDatabase() + + + prev + prev + () + + + + QSqlRecord + qsqlrecord.html + + QSqlRecord + QSqlRecord + () + + + QSqlRecord + QSqlRecord-2 + ( const QSqlRecord & other ) + + + append + append + ( const QSqlField & field ) + + + clear + clear + () + + + clearValues + clearValues + () + + + contains + contains + ( const QString & name ) + + + count + count + () + + + field + field + ( int index ) + + + field + field-2 + ( const QString & name ) + + + fieldName + fieldName + ( int index ) + + + indexOf + indexOf + ( const QString & name ) + + + insert + insert + ( int pos, const QSqlField & field ) + + + isEmpty + isEmpty + () + + + isGenerated + isGenerated + ( const QString & name ) + + + isGenerated + isGenerated-2 + ( int index ) + + + isNull + isNull + ( const QString & name ) + + + isNull + isNull-2 + ( int index ) + + + remove + remove + ( int pos ) + + + replace + replace + ( int pos, const QSqlField & field ) + + + setGenerated + setGenerated + ( const QString & name, bool generated ) + + + setGenerated + setGenerated-2 + ( int index, bool generated ) + + + setNull + setNull + ( int index ) + + + setNull + setNull-2 + ( const QString & name ) + + + setValue + setValue + ( int index, const QVariant & val ) + + + setValue + setValue-2 + ( const QString & name, const QVariant & val ) + + + value + value + ( int index ) + + + value + value-2 + ( const QString & name ) + + + operator!= + operator-not-eq + ( const QSqlRecord & other ) + + + operator= + operator-eq + ( const QSqlRecord & other ) + + + operator== + operator-eq-eq + ( const QSqlRecord & other ) + + + fieldPtr + fieldPtr + ( int index ) + + + fieldPtr + fieldPtr-2 + ( const QString & name ) + + + position + position + ( const QString & name ) + + + toString + toString + ( const QString & prefix = QString() + + + toStringList + toStringList + ( const QString & prefix = QString() + + + + QSqlRelationalDelegate + qsqlrelationaldelegate.html + + QSqlRelationalDelegate + QSqlRelationalDelegate + ( QObject * parent = 0 ) + + + + QSqlRelationalTableModel + qsqlrelationaltablemodel.html + + QSqlRelationalTableModel + QSqlRelationalTableModel + ( QObject * parent = 0, QSqlDatabase db = QSqlDatabase() + + + relation + relation + ( int column ) + + + relationModel + relationModel + ( int column ) + + + setData + setData + ( const QModelIndex & index, const QVariant & value, int role = Qt::EditRole ) + + + setRelation + setRelation + ( int column, const QSqlRelation & relation ) + + + + QSqlRelation + qsqlrelation.html + + QSqlRelation + QSqlRelation + () + + + QSqlRelation + QSqlRelation-2 + ( const QString & tableName, const QString & indexColumn, const QString & displayColumn ) + + + displayColumn + displayColumn + () + + + indexColumn + indexColumn + () + + + isValid + isValid + () + + + tableName + tableName + () + + + + QSqlResult + qsqlresult.html + + BindingSyntax + BindingSyntax-enum + + + + QSqlResult + QSqlResult + ( const QSqlDriver * db ) + + + addBindValue + addBindValue + ( const QVariant & val, QSql::ParamType paramType ) + + + at + at + () + + + bindValue + bindValue + ( int index, const QVariant & val, QSql::ParamType paramType ) + + + bindValue + bindValue-2 + ( const QString & placeholder, const QVariant & val, QSql::ParamType paramType ) + + + ParamType + bindValueType + QSqlResult::bindValueType( int index ) + + + ParamType + bindValueType-2 + QSqlResult::bindValueType( const QString & placeholder ) + + + bindingSyntax + bindingSyntax + () + + + boundValue + boundValue + ( int index ) + + + boundValue + boundValue-2 + ( const QString & placeholder ) + + + boundValueCount + boundValueCount + () + + + boundValueName + boundValueName + ( int index ) + + + boundValues + boundValues + () + + + clear + clear + () + + + data + data + ( int index ) + + + driver + driver + () + + + exec + exec + () + + + executedQuery + executedQuery + () + + + fetch + fetch + ( int index ) + + + fetchFirst + fetchFirst + () + + + fetchLast + fetchLast + () + + + fetchNext + fetchNext + () + + + fetchPrevious + fetchPrevious + () + + + handle + handle + () + + + hasOutValues + hasOutValues + () + + + isActive + isActive + () + + + isForwardOnly + isForwardOnly + () + + + isNull + isNull + ( int index ) + + + isSelect + isSelect + () + + + isValid + isValid + () + + + lastError + lastError + () + + + lastInsertId + lastInsertId + () + + + lastQuery + lastQuery + () + + + numRowsAffected + numRowsAffected + () + + + prepare + prepare + ( const QString & query ) + + + record + record + () + + + reset + reset + ( const QString & query ) + + + savePrepare + savePrepare + ( const QString & query ) + + + setActive + setActive + ( bool active ) + + + setAt + setAt + ( int index ) + + + setForwardOnly + setForwardOnly + ( bool forward ) + + + setLastError + setLastError + ( const QSqlError & error ) + + + setQuery + setQuery + ( const QString & query ) + + + setSelect + setSelect + ( bool select ) + + + size + size + () + + + + QSqlTableModel + qsqltablemodel.html + + EditStrategy + EditStrategy-enum + + + + QSqlTableModel + QSqlTableModel + ( QObject * parent = 0, QSqlDatabase db = QSqlDatabase() + + + beforeDelete + beforeDelete + ( int row ) + + + beforeInsert + beforeInsert + ( QSqlRecord & record ) + + + beforeUpdate + beforeUpdate + ( int row, QSqlRecord & record ) + + + database + database + () + + + deleteRowFromTable + deleteRowFromTable + ( int row ) + + + editStrategy + editStrategy + () + + + fieldIndex + fieldIndex + ( const QString & fieldName ) + + + filter + filter + () + + + indexInQuery + indexInQuery + ( const QModelIndex & item ) + + + insertRecord + insertRecord + ( int row, const QSqlRecord & record ) + + + insertRowIntoTable + insertRowIntoTable + ( const QSqlRecord & values ) + + + insertRows + insertRows + ( int row, int count, const QModelIndex & parent = QModelIndex() + + + isDirty + isDirty + ( const QModelIndex & index ) + + + orderByClause + orderByClause + () + + + primaryKey + primaryKey + () + + + primeInsert + primeInsert + ( int row, QSqlRecord & record ) + + + removeColumns + removeColumns + ( int column, int count, const QModelIndex & parent = QModelIndex() + + + removeRows + removeRows + ( int row, int count, const QModelIndex & parent = QModelIndex() + + + revert + revert + () + + + revertAll + revertAll + () + + + revertRow + revertRow + ( int row ) + + + select + select + () + + + selectStatement + selectStatement + () + + + setData + setData + ( const QModelIndex & index, const QVariant & value, int role = Qt::EditRole ) + + + setEditStrategy + setEditStrategy + ( EditStrategy strategy ) + + + setFilter + setFilter + ( const QString & filter ) + + + setPrimaryKey + setPrimaryKey + ( const QSqlIndex & key ) + + + setQuery + setQuery + ( const QSqlQuery & query ) + + + setRecord + setRecord + ( int row, const QSqlRecord & record ) + + + setSort + setSort + ( int column, Qt::SortOrder order ) + + + setTable + setTable + ( const QString & tableName ) + + + sort + sort + ( int column, Qt::SortOrder order ) + + + submit + submit + () + + + submitAll + submitAll + () + + + tableName + tableName + () + + + updateRowInTable + updateRowInTable + ( int row, const QSqlRecord & values ) + + + + QStackedLayout + qstackedlayout.html + + QStackedLayout + QStackedLayout + () + + + QStackedLayout + QStackedLayout-2 + ( QWidget * parent ) + + + QStackedLayout + QStackedLayout-3 + ( QLayout * parentLayout ) + + + addWidget + addWidget + ( QWidget * widget ) + + + currentChanged + currentChanged + ( int index ) + + + currentWidget + currentWidget + () + + + insertWidget + insertWidget + ( int index, QWidget * widget ) + + + setCurrentWidget + setCurrentWidget + ( QWidget * widget ) + + + widget + widget + ( int index ) + + + widgetRemoved + widgetRemoved + ( int index ) + + + + QStackedWidget + qstackedwidget.html + + QStackedWidget + QStackedWidget + ( QWidget * parent = 0 ) + + + addWidget + addWidget + ( QWidget * widget ) + + + currentChanged + currentChanged + ( int index ) + + + currentWidget + currentWidget + () + + + indexOf + indexOf + ( QWidget * widget ) + + + insertWidget + insertWidget + ( int index, QWidget * widget ) + + + removeWidget + removeWidget + ( QWidget * widget ) + + + setCurrentWidget + setCurrentWidget + ( QWidget * widget ) + + + widget + widget + ( int index ) + + + widgetRemoved + widgetRemoved + ( int index ) + + + + QStack + qstack.html + + QStack + QStack + () + + + pop + pop + () + + + push + push + ( const T & t ) + + + top + top + () + + + top + top-2 + () + + + + QStandardItemModel + qstandarditemmodel.html + + QStandardItemModel + QStandardItemModel + ( QObject * parent = 0 ) + + + QStandardItemModel + QStandardItemModel-2 + ( int rows, int columns, QObject * parent = 0 ) + + + clear + clear + () + + + columnCount + columnCount + ( const QModelIndex & parent = QModelIndex() + + + data + data + ( const QModelIndex & index, int role = Qt::DisplayRole ) + + + ItemFlags + flags + QStandardItemModel::flags( const QModelIndex & index ) + + + hasChildren + hasChildren + ( const QModelIndex & parent = QModelIndex() + + + index + index + ( int row, int column, const QModelIndex & parent = QModelIndex() + + + insertColumns + insertColumns + ( int column, int count, const QModelIndex & parent = QModelIndex() + + + insertRows + insertRows + ( int row, int count, const QModelIndex & parent = QModelIndex() + + + parent + parent + ( const QModelIndex & child ) + + + removeColumns + removeColumns + ( int column, int count, const QModelIndex & parent = QModelIndex() + + + removeRows + removeRows + ( int row, int count, const QModelIndex & parent = QModelIndex() + + + rowCount + rowCount + ( const QModelIndex & parent = QModelIndex() + + + setData + setData + ( const QModelIndex & index, const QVariant & value, int role = Qt::EditRole ) + + + + QStatusBar + qstatusbar.html + + QStatusBar + QStatusBar + ( QWidget * parent = 0 ) + + + addPermanentWidget + addPermanentWidget + ( QWidget * widget, int stretch = 0 ) + + + addWidget + addWidget + ( QWidget * widget, int stretch = 0 ) + + + clearMessage + clearMessage + () + + + currentMessage + currentMessage + () + + + hideOrShow + hideOrShow + () + + + messageChanged + messageChanged + ( const QString & message ) + + + reformat + reformat + () + + + removeWidget + removeWidget + ( QWidget * widget ) + + + showMessage + showMessage + ( const QString & message, int timeout = 0 ) + + + QStatusBar + QStatusBar-2 + ( QWidget * parent, const char * name ) + + + addWidget + addWidget-2 + ( QWidget * widget, int stretch, bool permanent ) + + + clear + clear + () + + + message + message + ( const QString & message, int timeout = 0 ) + + + + QStatusTipEvent + qstatustipevent.html + + QStatusTipEvent + QStatusTipEvent + ( const QString & tip ) + + + tip + tip + () + + + + QString + qstring.html + + NormalizationForm + NormalizationForm-enum + + + + SplitBehavior + SplitBehavior-enum + + + + QString + QString + () + + + QString + QString-2 + ( const QChar * unicode, int size ) + + + QString + QString-3 + ( QChar ch ) + + + QString + QString-4 + ( int size, QChar ch ) + + + QString + QString-5 + ( const QLatin1String & str ) + + + QString + QString-6 + ( const QString & other ) + + + QString + QString-7 + ( const char * str ) + + + QString + QString-8 + ( const QByteArray & ba ) + + + append + append + ( const QString & str ) + + + append + append-2 + ( const QLatin1String & str ) + + + append + append-3 + ( const QByteArray & ba ) + + + append + append-4 + ( const char * str ) + + + append + append-5 + ( QChar ch ) + + + arg + arg + ( const QString & a, int fieldWidth = 0, const QChar & fillChar = QLatin1Char( ' ' ) + + + arg + arg-2 + ( const QString & a1, const QString & a2 ) + + + arg + arg-3 + ( const QString & a1, const QString & a2, const QString & a3 ) + + + arg + arg-4 + ( const QString & a1, const QString & a2, const QString & a3, const QString & a4 ) + + + arg + arg-5 + ( int a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) + + + arg + arg-6 + ( uint a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) + + + arg + arg-7 + ( long a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) + + + arg + arg-8 + ( ulong a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) + + + arg + arg-9 + ( qlonglong a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) + + + arg + arg-10 + ( qulonglong a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) + + + arg + arg-11 + ( short a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) + + + arg + arg-12 + ( ushort a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) + + + arg + arg-13 + ( QChar a, int fieldWidth = 0, const QChar & fillChar = QLatin1Char( ' ' ) + + + arg + arg-14 + ( char a, int fieldWidth = 0, const QChar & fillChar = QLatin1Char( ' ' ) + + + arg + arg-15 + ( double a, int fieldWidth = 0, char fmt = 'g', int prec = -1, const QChar & fillChar = QLatin1Char( ' ' ) + + + at + at + ( int i ) + + + capacity + capacity + () + + + chop + chop + ( int n ) + + + clear + clear + () + + + compare + compare + ( const QString & s1, const QString & s2 ) + + + compare + compare-2 + ( const QString & other ) + + + constData + constData + () + + + contains + contains + ( const QString & str, Qt::CaseSensitivity cs = Qt::CaseSensitive ) + + + contains + contains-4 + ( QChar ch, Qt::CaseSensitivity cs = Qt::CaseSensitive ) + + + contains + contains-5 + ( const QRegExp & rx ) + + + count + count + ( const QString & str, Qt::CaseSensitivity cs = Qt::CaseSensitive ) + + + count + count-2 + ( QChar ch, Qt::CaseSensitivity cs = Qt::CaseSensitive ) + + + count + count-3 + ( const QRegExp & rx ) + + + count + count-4 + () + + + data + data + () + + + data + data-2 + () + + + endsWith + endsWith + ( const QString & s, Qt::CaseSensitivity cs = Qt::CaseSensitive ) + + + endsWith + endsWith-3 + ( const QLatin1String & s, Qt::CaseSensitivity cs = Qt::CaseSensitive ) + + + endsWith + endsWith-4 + ( const QChar & c, Qt::CaseSensitivity cs = Qt::CaseSensitive ) + + + fill + fill + ( QChar ch, int size = -1 ) + + + fromAscii + fromAscii + ( const char * str, int size = -1 ) + + + fromLatin1 + fromLatin1 + ( const char * str, int size = -1 ) + + + fromLocal8Bit + fromLocal8Bit + ( const char * str, int size = -1 ) + + + fromRawData + fromRawData + ( const QChar * unicode, int size ) + + + fromStdString + fromStdString + ( const std::string & str ) + + + fromStdWString + fromStdWString + ( const std::wstring & str ) + + + fromUtf8 + fromUtf8 + ( const char * str, int size = -1 ) + + + fromUtf16 + fromUtf16 + ( const ushort * unicode, int size = -1 ) + + + indexOf + indexOf + ( const QString & str, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive ) + + + indexOf + indexOf-2 + ( QChar ch, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive ) + + + indexOf + indexOf-3 + ( const QRegExp & rx, int from = 0 ) + + + insert + insert + ( int i, const QString & str ) + + + insert + insert-2 + ( int i, const QLatin1String & str ) + + + insert + insert-3 + ( int i, const QChar * unicode, int size ) + + + insert + insert-4 + ( int i, QChar ch ) + + + isEmpty + isEmpty + () + + + isNull + isNull + () + + + lastIndexOf + lastIndexOf + ( const QString & str, int from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive ) + + + lastIndexOf + lastIndexOf-2 + ( QChar ch, int from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive ) + + + lastIndexOf + lastIndexOf-3 + ( const QRegExp & rx, int from = -1 ) + + + left + left + ( int len ) + + + leftJustified + leftJustified + ( int width, QChar fill = QLatin1Char( ' ' ) + + + length + length + () + + + localeAwareCompare + localeAwareCompare + ( const QString & s1, const QString & s2 ) + + + localeAwareCompare + localeAwareCompare-2 + ( const QString & other ) + + + mid + mid + ( int i, int len = -1 ) + + + normalized + normalized + ( NormalizationForm form ) + + + normalized + normalized-2 + ( NormalizationForm form, QChar::UnicodeVersion version ) + + + number + number + ( long n, int base = 10 ) + + + number + number-2 + ( ulong n, int base = 10 ) + + + number + number-3 + ( int n, int base = 10 ) + + + number + number-4 + ( uint n, int base = 10 ) + + + number + number-5 + ( qlonglong n, int base = 10 ) + + + number + number-6 + ( qulonglong n, int base = 10 ) + + + number + number-7 + ( double n, char f = 'g', int prec = 6 ) + + + prepend + prepend + ( const QString & str ) + + + prepend + prepend-2 + ( const QLatin1String & str ) + + + prepend + prepend-3 + ( const QByteArray & ba ) + + + prepend + prepend-4 + ( const char * str ) + + + prepend + prepend-5 + ( QChar ch ) + + + push_back + push_back + ( const QString & other ) + + + push_back + push_back-2 + ( QChar ch ) + + + push_front + push_front + ( const QString & other ) + + + push_front + push_front-2 + ( QChar ch ) + + + remove + remove + ( int pos, int len ) + + + remove + remove-4 + ( const QString & str, Qt::CaseSensitivity cs = Qt::CaseSensitive ) + + + remove + remove-5 + ( QChar ch, Qt::CaseSensitivity cs = Qt::CaseSensitive ) + + + remove + remove-6 + ( const QRegExp & rx ) + + + replace + replace + ( int pos, int len, const QString & after ) + + + replace + replace-6 + ( int pos, int len, const QChar * unicode, int size ) + + + replace + replace-7 + ( int pos, int len, QChar after ) + + + replace + replace-8 + ( const QString & before, const QString & after, Qt::CaseSensitivity cs = Qt::CaseSensitive ) + + + replace + replace-9 + ( QChar ch, const QString & after, Qt::CaseSensitivity cs = Qt::CaseSensitive ) + + + replace + replace-10 + ( QChar before, QChar after, Qt::CaseSensitivity cs = Qt::CaseSensitive ) + + + replace + replace-11 + ( const QRegExp & rx, const QString & after ) + + + reserve + reserve + ( int size ) + + + resize + resize + ( int size ) + + + right + right + ( int len ) + + + rightJustified + rightJustified + ( int width, QChar fill = QLatin1Char( ' ' ) + + + section + section + ( QChar sep, int start, int end = -1, SectionFlags flags = SectionDefault ) + + + section + section-2 + ( const QString & sep, int start, int end = -1, SectionFlags flags = SectionDefault ) + + + section + section-3 + ( const QRegExp & reg, int start, int end = -1, SectionFlags flags = SectionDefault ) + + + setNum + setNum + ( int n, int base = 10 ) + + + setNum + setNum-2 + ( uint n, int base = 10 ) + + + setNum + setNum-3 + ( long n, int base = 10 ) + + + setNum + setNum-4 + ( ulong n, int base = 10 ) + + + setNum + setNum-5 + ( qlonglong n, int base = 10 ) + + + setNum + setNum-6 + ( qulonglong n, int base = 10 ) + + + setNum + setNum-7 + ( short n, int base = 10 ) + + + setNum + setNum-8 + ( ushort n, int base = 10 ) + + + setNum + setNum-9 + ( double n, char f = 'g', int prec = 6 ) + + + setNum + setNum-10 + ( float n, char f = 'g', int prec = 6 ) + + + setUnicode + setUnicode + ( const QChar * unicode, int size ) + + + setUtf16 + setUtf16 + ( const ushort * unicode, int size ) + + + simplified + simplified + () + + + size + size + () + + + split + split + ( const QString & sep, SplitBehavior behavior = KeepEmptyParts, Qt::CaseSensitivity cs = Qt::CaseSensitive ) + + + split + split-2 + ( const QChar & sep, SplitBehavior behavior = KeepEmptyParts, Qt::CaseSensitivity cs = Qt::CaseSensitive ) + + + split + split-3 + ( const QRegExp & rx, SplitBehavior behavior = KeepEmptyParts ) + + + sprintf + sprintf + ( const char * cformat, ... ) + + + squeeze + squeeze + () + + + startsWith + startsWith + ( const QString & s, Qt::CaseSensitivity cs = Qt::CaseSensitive ) + + + startsWith + startsWith-3 + ( const QLatin1String & s, Qt::CaseSensitivity cs = Qt::CaseSensitive ) + + + startsWith + startsWith-4 + ( const QChar & c, Qt::CaseSensitivity cs = Qt::CaseSensitive ) + + + toAscii + toAscii + () + + + toDouble + toDouble + ( bool * ok = 0 ) + + + toFloat + toFloat + ( bool * ok = 0 ) + + + toInt + toInt + ( bool * ok = 0, int base = 10 ) + + + toLatin1 + toLatin1 + () + + + toLocal8Bit + toLocal8Bit + () + + + toLong + toLong + ( bool * ok = 0, int base = 10 ) + + + toLongLong + toLongLong + ( bool * ok = 0, int base = 10 ) + + + toLower + toLower + () + + + toShort + toShort + ( bool * ok = 0, int base = 10 ) + + + string + toStdString + QString::toStdString() + + + wstring + toStdWString + QString::toStdWString() + + + toUInt + toUInt + ( bool * ok = 0, int base = 10 ) + + + toULong + toULong + ( bool * ok = 0, int base = 10 ) + + + toULongLong + toULongLong + ( bool * ok = 0, int base = 10 ) + + + toUShort + toUShort + ( bool * ok = 0, int base = 10 ) + + + toUpper + toUpper + () + + + toUtf8 + toUtf8 + () + + + trimmed + trimmed + () + + + truncate + truncate + ( int pos ) + + + unicode + unicode + () + + + utf16 + utf16 + () + + + vsprintf + vsprintf + ( const char * cformat, va_list ap ) + + + operator!= + operator-not-eq + ( const QString & other ) + + + operator!= + operator-not-eq-2 + ( const QLatin1String & other ) + + + operator!= + operator-not-eq-3 + ( const QByteArray & other ) + + + operator!= + operator-not-eq-4 + ( const char * other ) + + + operator+= + operator-2b-eq + ( const QString & other ) + + + operator+= + operator-2b-eq-2 + ( const QLatin1String & str ) + + + operator+= + operator-2b-eq-3 + ( const QByteArray & ba ) + + + operator+= + operator-2b-eq-4 + ( const char * str ) + + + operator+= + operator-2b-eq-5 + ( char ch ) + + + operator+= + operator-2b-eq-6 + ( QChar ch ) + + + operator< + operator-lt + ( const QString & other ) + + + operator< + operator-lt-2 + ( const QLatin1String & other ) + + + operator< + operator-lt-3 + ( const QByteArray & other ) + + + operator< + operator-lt-4 + ( const char * other ) + + + operator<= + operator-lt-eq + ( const QString & other ) + + + operator<= + operator-lt-eq-2 + ( const QLatin1String & other ) + + + operator<= + operator-lt-eq-3 + ( const QByteArray & other ) + + + operator<= + operator-lt-eq-4 + ( const char * other ) + + + operator= + operator-eq + ( const QString & other ) + + + operator= + operator-eq-3 + ( const QLatin1String & str ) + + + operator= + operator-eq-4 + ( const QByteArray & ba ) + + + operator= + operator-eq-5 + ( const char * str ) + + + operator= + operator-eq-6 + ( char ch ) + + + operator= + operator-eq-7 + ( QChar ch ) + + + operator== + operator-eq-eq + ( const QString & other ) + + + operator== + operator-eq-eq-2 + ( const QLatin1String & other ) + + + operator== + operator-eq-eq-3 + ( const QByteArray & other ) + + + operator== + operator-eq-eq-4 + ( const char * other ) + + + operator> + operator-gt + ( const QString & other ) + + + operator> + operator-gt-2 + ( const QLatin1String & other ) + + + operator> + operator-gt-3 + ( const QByteArray & other ) + + + operator> + operator-gt-4 + ( const char * other ) + + + operator>= + operator-gt-eq + ( const QString & other ) + + + operator>= + operator-gt-eq-2 + ( const QLatin1String & other ) + + + operator>= + operator-gt-eq-3 + ( const QByteArray & other ) + + + operator>= + operator-gt-eq-4 + ( const char * other ) + + + operator[] + operator-5b-5d + ( int i ) + + + operator[] + operator-5b-5d-2 + ( int i ) + + + operator[] + operator-5b-5d-3 + ( uint i ) + + + operator[] + operator-5b-5d-4 + ( uint i ) + + + + QStringList + qstringlist.html + + QStringList + QStringList + () + + + QStringList + QStringList-2 + ( const QString & str ) + + + QStringList + QStringList-3 + ( const QStringList & other ) + + + QStringList + QStringList-4 + ( const QList<QString> & other ) + + + contains + contains + ( const QString & str, Qt::CaseSensitivity cs = Qt::CaseSensitive ) + + + filter + filter + ( const QString & str, Qt::CaseSensitivity cs = Qt::CaseSensitive ) + + + filter + filter-2 + ( const QRegExp & rx ) + + + indexOf + indexOf + ( const QRegExp & rx, int from = 0 ) + + + join + join + ( const QString & sep ) + + + lastIndexOf + lastIndexOf + ( const QRegExp & rx, int from = -1 ) + + + replaceInStrings + replaceInStrings + ( const QString & before, const QString & after, Qt::CaseSensitivity cs = Qt::CaseSensitive ) + + + replaceInStrings + replaceInStrings-2 + ( const QRegExp & rx, const QString & after ) + + + sort + sort + () + + + operator+ + operator-2b + ( const QStringList & other ) + + + operator<< + operator-lt-lt + ( const QString & str ) + + + operator<< + operator-lt-lt-2 + ( const QStringList & other ) + + + + QStringListModel + qstringlistmodel.html + + QStringListModel + QStringListModel + ( QObject * parent = 0 ) + + + QStringListModel + QStringListModel-2 + ( const QStringList & strings, QObject * parent = 0 ) + + + data + data + ( const QModelIndex & index, int role ) + + + ItemFlags + flags + QStringListModel::flags( const QModelIndex & index ) + + + insertRows + insertRows + ( int row, int count, const QModelIndex & parent = QModelIndex() + + + removeRows + removeRows + ( int row, int count, const QModelIndex & parent = QModelIndex() + + + rowCount + rowCount + ( const QModelIndex & parent = QModelIndex() + + + setData + setData + ( const QModelIndex & index, const QVariant & value, int role = Qt::EditRole ) + + + setStringList + setStringList + ( const QStringList & strings ) + + + stringList + stringList + () + + + fromLast + fromLast + () + + + fromLast + fromLast-2 + () + + + grep + grep + ( const QString & str, bool cs = true ) + + + grep + grep-2 + ( const QRegExp & rx ) + + + gres + gres + ( const QRegExp & rx, const QString & after ) + + + gres + gres-2 + ( const QString & before, const QString & after, bool cs = true ) + + + split + split + ( const QRegExp & sep, const QString & str, bool allowEmptyEntries = false ) + + + split + split-2 + ( const QChar & sep, const QString & str, bool allowEmptyEntries = false ) + + + split + split-3 + ( const QString & sep, const QString & str, bool allowEmptyEntries = false ) + + + + QStringMatcher + qstringmatcher.html + + QStringMatcher + QStringMatcher + () + + + QStringMatcher + QStringMatcher-2 + ( const QString & pattern, Qt::CaseSensitivity cs = Qt::CaseSensitive ) + + + QStringMatcher + QStringMatcher-3 + ( const QStringMatcher & other ) + + + CaseSensitivity + caseSensitivity + QStringMatcher::caseSensitivity() + + + indexIn + indexIn + ( const QString & str, int from = 0 ) + + + pattern + pattern + () + + + setCaseSensitivity + setCaseSensitivity + ( Qt::CaseSensitivity cs ) + + + setPattern + setPattern + ( const QString & pattern ) + + + operator= + operator-eq + ( const QStringMatcher & other ) + + + + QString::Null + qstring-null.html + + ascii + ascii + () + + + constref + constref + ( uint i ) + + + contains + contains-2 + ( QChar c, bool cs ) + + + contains + contains-3 + ( const QString & s, bool cs ) + + + copy + copy + () + + + endsWith + endsWith-2 + ( const QString & s, bool cs ) + + + find + find + ( QChar c, int i = 0, bool cs = true ) + + + find + find-2 + ( const QString & s, int i = 0, bool cs = true ) + + + find + find-3 + ( const QRegExp & rx, int i = 0 ) + + + findRev + findRev + ( QChar c, int i = -1, bool cs = true ) + + + findRev + findRev-2 + ( const QString & s, int i = -1, bool cs = true ) + + + findRev + findRev-3 + ( const QRegExp & rx, int i = -1 ) + + + fromUcs2 + fromUcs2 + ( const ushort * unicode, int size = -1 ) + + + latin1 + latin1 + () + + + leftJustify + leftJustify + ( int width, QChar fill = QLatin1Char( ' ' ) + + + local8Bit + local8Bit + () + + + lower + lower + () + + + ref + ref + ( uint i ) + + + remove + remove-2 + ( QChar c, bool cs ) + + + remove + remove-3 + ( const QString & s, bool cs ) + + + replace + replace-2 + ( QChar c, const QString & after, bool cs ) + + + replace + replace-3 + ( const QString & before, const QString & after, bool cs ) + + + replace + replace-4 + ( char c, const QString & after, bool cs ) + + + replace + replace-5 + ( char c, const QString & after, Qt::CaseSensitivity cs ) + + + rightJustify + rightJustify + ( int width, QChar fill = QLatin1Char( ' ' ) + + + setAscii + setAscii + ( const char * str, int len = -1 ) + + + setLatin1 + setLatin1 + ( const char * str, int len = -1 ) + + + setLength + setLength + ( int nl ) + + + setUnicodeCodes + setUnicodeCodes + ( const ushort * unicode_as_ushorts, int size ) + + + simplifyWhiteSpace + simplifyWhiteSpace + () + + + startsWith + startsWith-2 + ( const QString & s, bool cs ) + + + stripWhiteSpace + stripWhiteSpace + () + + + ucs2 + ucs2 + () + + + upper + upper + () + + + utf8 + utf8 + () + + + operator + operator-const-char--2a + const char *() + + + + QStyleFactory + qstylefactory.html + + create + create + ( const QString & key ) + + + keys + keys + () + + + + QStyleHintReturn + qstylehintreturn.html + + HintReturnType + HintReturnType-enum + + + + QStyleHintReturn + QStyleHintReturn + ( int version = QStyleOption::Version, int type = SH_Default ) + + + Type + Type-var + + + + Version + Version-var + + + + type + type-varx + + + + version + version-varx + + + + + QStyleHintReturnMask + qstylehintreturnmask.html + + QStyleHintReturnMask + QStyleHintReturnMask + () + + + Type + Type-var + + + + Version + Version-var + + + + region + region-var + + + + + QStyle + qstyle.html + + ComplexControl + ComplexControl-enum + + + + ContentsType + ContentsType-enum + + + + ControlElement + ControlElement-enum + + + + PixelMetric + PixelMetric-enum + + + + PrimitiveElement + PrimitiveElement-enum + + + + StandardPixmap + StandardPixmap-enum + + + + StyleHint + StyleHint-enum + + + + SubElement + SubElement-enum + + + + QStyle + QStyle-2 + () + + + alignedRect + alignedRect + ( Qt::LayoutDirection direction, Qt::Alignment alignment, const QSize & size, const QRect & rectangle ) + + + drawComplexControl + drawComplexControl + ( ComplexControl control, const QStyleOptionComplex * option, QPainter * painter, const QWidget * widget = 0 ) + + + drawControl + drawControl + ( ControlElement element, const QStyleOption * option, QPainter * painter, const QWidget * widget = 0 ) + + + drawItemPixmap + drawItemPixmap + ( QPainter * painter, const QRect & rect, int alignment, const QPixmap & pixmap ) + + + drawItemText + drawItemText + ( QPainter * painter, const QRect & rect, int alignment, const QPalette & pal, bool enabled, const QString & text, QPalette::ColorRole textRole = QPalette::NoRole ) + + + drawPrimitive + drawPrimitive + ( PrimitiveElement elem, const QStyleOption * option, QPainter * painter, const QWidget * widget = 0 ) + + + generatedIconPixmap + generatedIconPixmap + ( QIcon::Mode iconMode, const QPixmap & pixmap, const QStyleOption * option ) + + + hitTestComplexControl + hitTestComplexControl + ( ComplexControl control, const QStyleOptionComplex * option, const QPoint & pos, const QWidget * widget = 0 ) + + + itemPixmapRect + itemPixmapRect + ( const QRect & rect, int alignment, const QPixmap & pixmap ) + + + itemTextRect + itemTextRect + ( const QFontMetrics & metrics, const QRect & rect, int alignment, bool enabled, const QString & text ) + + + pixelMetric + pixelMetric + ( PixelMetric metric, const QStyleOption * option = 0, const QWidget * widget = 0 ) + + + polish + polish + ( QWidget * widget ) + + + polish + polish-2 + ( QApplication * app ) + + + polish + polish-3 + ( QPalette & pal ) + + + sizeFromContents + sizeFromContents + ( ContentsType type, const QStyleOption * option, const QSize & contentsSize, const QWidget * widget = 0 ) + + + sliderPositionFromValue + sliderPositionFromValue + ( int min, int max, int logicalValue, int span, bool upsideDown = false ) + + + sliderValueFromPosition + sliderValueFromPosition + ( int min, int max, int pos, int span, bool upsideDown = false ) + + + standardIcon + standardIcon + ( StandardPixmap standardIcon, const QStyleOption * option = 0, const QWidget * widget = 0 ) + + + standardIconImplementation + standardIconImplementation + ( StandardPixmap standardIcon, const QStyleOption * option = 0, const QWidget * widget = 0 ) + + + standardPalette + standardPalette + () + + + standardPixmap + standardPixmap + ( StandardPixmap standardPixmap, const QStyleOption * option = 0, const QWidget * widget = 0 ) + + + styleHint + styleHint + ( StyleHint hint, const QStyleOption * option = 0, const QWidget * widget = 0, QStyleHintReturn * returnData = 0 ) + + + subControlRect + subControlRect + ( ComplexControl control, const QStyleOptionComplex * option, SubControl subControl, const QWidget * widget = 0 ) + + + subElementRect + subElementRect + ( SubElement element, const QStyleOption * option, const QWidget * widget = 0 ) + + + unpolish + unpolish + ( QWidget * widget ) + + + unpolish + unpolish-2 + ( QApplication * app ) + + + Alignment + visualAlignment + QStyle::visualAlignment( Qt::LayoutDirection direction, Qt::Alignment alignment ) + + + visualPos + visualPos + ( Qt::LayoutDirection direction, const QRect & boundingRect, const QPoint & logicalPos ) + + + visualRect + visualRect + ( Qt::LayoutDirection direction, const QRect & boundingRect, const QRect & logicalRect ) + + + + QStyleOptionButton + qstyleoptionbutton.html + + QStyleOptionButton + QStyleOptionButton + () + + + QStyleOptionButton + QStyleOptionButton-2 + ( const QStyleOptionButton & other ) + + + Type + Type-var + + + + Version + Version-var + + + + features + features-var + + + + icon + icon-var + + + + iconSize + iconSize-var + + + + text + text-var + + + + + QStyleOptionComboBox + qstyleoptioncombobox.html + + QStyleOptionComboBox + QStyleOptionComboBox + () + + + QStyleOptionComboBox + QStyleOptionComboBox-2 + ( const QStyleOptionComboBox & other ) + + + Type + Type-var + + + + Version + Version-var + + + + currentIcon + currentIcon-var + + + + currentText + currentText-var + + + + editable + editable-var + + + + frame + frame-var + + + + iconSize + iconSize-var + + + + popupRect + popupRect-var + + + + + QStyleOptionComplex + qstyleoptioncomplex.html + + QStyleOptionComplex + QStyleOptionComplex + ( int version = QStyleOptionComplex::Version, int type = SO_Complex ) + + + QStyleOptionComplex + QStyleOptionComplex-2 + ( const QStyleOptionComplex & other ) + + + Type + Type-var + + + + Version + Version-var + + + + SubControls + activeSubControls-var + QStyleOptionComplex::activeSubControls + + + SubControls + subControls-var + QStyleOptionComplex::subControls + + + + QStyleOptionDockWidget + qstyleoptiondockwidget.html + + QStyleOptionDockWidget + QStyleOptionDockWidget + () + + + QStyleOptionDockWidget + QStyleOptionDockWidget-2 + ( const QStyleOptionDockWidget & other ) + + + Type + Type-var + + + + Version + Version-var + + + + closable + closable-var + + + + floatable + floatable-var + + + + movable + movable-var + + + + title + title-var + + + + + QStyleOptionFocusRect + qstyleoptionfocusrect.html + + QStyleOptionFocusRect + QStyleOptionFocusRect + () + + + QStyleOptionFocusRect + QStyleOptionFocusRect-2 + ( const QStyleOptionFocusRect & other ) + + + Type + Type-var + + + + Version + Version-var + + + + backgroundColor + backgroundColor-var + + + + + QStyleOptionFrame + qstyleoptionframe.html + + QStyleOptionFrame + QStyleOptionFrame + () + + + QStyleOptionFrame + QStyleOptionFrame-2 + ( const QStyleOptionFrame & other ) + + + Type + Type-var + + + + Version + Version-var + + + + lineWidth + lineWidth-var + + + + midLineWidth + midLineWidth-var + + + + + QStyleOptionFrameV2 + qstyleoptionframev2.html + + QStyleOptionFrameV2 + QStyleOptionFrameV2 + () + + + QStyleOptionFrameV2 + QStyleOptionFrameV2-2 + ( const QStyleOptionFrameV2 & other ) + + + QStyleOptionFrameV2 + QStyleOptionFrameV2-3 + ( const QStyleOptionFrame & other ) + + + operator= + operator-eq + ( const QStyleOptionFrame & other ) + + + + QStyleOptionGroupBox + qstyleoptiongroupbox.html + + QStyleOptionGroupBox + QStyleOptionGroupBox + () + + + QStyleOptionGroupBox + QStyleOptionGroupBox-2 + ( const QStyleOptionGroupBox & other ) + + + lineWidth + lineWidth-var + + + + midLineWidth + midLineWidth-var + + + + text + text-var + + + + Alignment + textAlignment-var + QStyleOptionGroupBox::textAlignment + + + textColor + textColor-var + + + + + QStyleOptionHeader + qstyleoptionheader.html + + SectionPosition + SectionPosition-enum + + + + SelectedPosition + SelectedPosition-enum + + + + SortIndicator + SortIndicator-enum + + + + QStyleOptionHeader + QStyleOptionHeader + () + + + QStyleOptionHeader + QStyleOptionHeader-2 + ( const QStyleOptionHeader & other ) + + + Type + Type-var + + + + Version + Version-var + + + + icon + icon-var + + + + Alignment + iconAlignment-var + QStyleOptionHeader::iconAlignment + + + Orientation + orientation-var + QStyleOptionHeader::orientation + + + position + position-var + + + + section + section-var + + + + selectedPosition + selectedPosition-var + + + + sortIndicator + sortIndicator-var + + + + text + text-var + + + + Alignment + textAlignment-var + QStyleOptionHeader::textAlignment + + + + QStyleOption + qstyleoption.html + + OptionType + OptionType-enum + + + + QStyleOption + QStyleOption + ( int version = QStyleOption::Version, int type = SO_Default ) + + + QStyleOption + QStyleOption-2 + ( const QStyleOption & other ) + + + initFrom + initFrom + ( const QWidget * widget ) + + + operator= + operator-eq + ( const QStyleOption & other ) + + + Type + Type-var + + + + Version + Version-var + + + + LayoutDirection + direction-var + QStyleOption::direction + + + fontMetrics + fontMetrics-var + + + + palette + palette-var + + + + rect + rect-var + + + + State + state-var + QStyleOption::state + + + type + type-varx + + + + version + version-varx + + + + + QStyleOptionMenuItem + qstyleoptionmenuitem.html + + CheckType + CheckType-enum + + + + MenuItemType + MenuItemType-enum + + + + QStyleOptionMenuItem + QStyleOptionMenuItem + () + + + QStyleOptionMenuItem + QStyleOptionMenuItem-2 + ( const QStyleOptionMenuItem & other ) + + + Type + Type-var + + + + Version + Version-var + + + + checkType + checkType-var + + + + checked + checked-var + + + + font + font-var + + + + icon + icon-var + + + + maxIconWidth + maxIconWidth-var + + + + menuHasCheckableItems + menuHasCheckableItems-var + + + + menuItemType + menuItemType-var + + + + menuRect + menuRect-var + + + + tabWidth + tabWidth-var + + + + text + text-var + + + + init + init + ( const QWidget * widget ) + + + + QStyleOptionProgressBar + qstyleoptionprogressbar.html + + QStyleOptionProgressBar + QStyleOptionProgressBar + () + + + QStyleOptionProgressBar + QStyleOptionProgressBar-2 + ( const QStyleOptionProgressBar & other ) + + + Type + Type-var + + + + Version + Version-var + + + + maximum + maximum-var + + + + minimum + minimum-var + + + + progress + progress-var + + + + text + text-var + + + + Alignment + textAlignment-var + QStyleOptionProgressBar::textAlignment + + + textVisible + textVisible-var + + + + + QStyleOptionProgressBarV2 + qstyleoptionprogressbarv2.html + + QStyleOptionProgressBarV2 + QStyleOptionProgressBarV2 + () + + + QStyleOptionProgressBarV2 + QStyleOptionProgressBarV2-2 + ( const QStyleOptionProgressBar & other ) + + + QStyleOptionProgressBarV2 + QStyleOptionProgressBarV2-3 + ( const QStyleOptionProgressBarV2 & other ) + + + operator= + operator-eq + ( const QStyleOptionProgressBar & other ) + + + bottomToTop + bottomToTop-var + + + + invertedAppearance + invertedAppearance-var + + + + Orientation + orientation-var + QStyleOptionProgressBarV2::orientation + + + + QStyleOptionQ3DockWindow + qstyleoptionq3dockwindow.html + + QStyleOptionQ3DockWindow + QStyleOptionQ3DockWindow + () + + + QStyleOptionQ3DockWindow + QStyleOptionQ3DockWindow-2 + ( const QStyleOptionQ3DockWindow & other ) + + + Type + Type-var + + + + Version + Version-var + + + + closeEnabled + closeEnabled-var + + + + docked + docked-var + + + + + QStyleOptionQ3ListView + qstyleoptionq3listview.html + + QStyleOptionQ3ListView + QStyleOptionQ3ListView + () + + + QStyleOptionQ3ListView + QStyleOptionQ3ListView-2 + ( const QStyleOptionQ3ListView & other ) + + + Type + Type-var + + + + Version + Version-var + + + + itemMargin + itemMargin-var + + + + items + items-var + + + + rootIsDecorated + rootIsDecorated-var + + + + sortColumn + sortColumn-var + + + + treeStepSize + treeStepSize-var + + + + ColorRole + viewportBGRole-var + QStyleOptionQ3ListView::viewportBGRole + + + viewportPalette + viewportPalette-var + + + + + QStyleOptionQ3ListViewItem + qstyleoptionq3listviewitem.html + + QStyleOptionQ3ListViewItem + QStyleOptionQ3ListViewItem + () + + + QStyleOptionQ3ListViewItem + QStyleOptionQ3ListViewItem-2 + ( const QStyleOptionQ3ListViewItem & other ) + + + Type + Type-var + + + + Version + Version-var + + + + childCount + childCount-var + + + + features + features-var + + + + height + height-var + + + + itemY + itemY-var + + + + totalHeight + totalHeight-var + + + + + QStyleOptionRubberBand + qstyleoptionrubberband.html + + QStyleOptionRubberBand + QStyleOptionRubberBand + () + + + QStyleOptionRubberBand + QStyleOptionRubberBand-2 + ( const QStyleOptionRubberBand & other ) + + + Type + Type-var + + + + Version + Version-var + + + + opaque + opaque-var + + + + Shape + shape-var + QStyleOptionRubberBand::shape + + + + QStyleOptionSlider + qstyleoptionslider.html + + QStyleOptionSlider + QStyleOptionSlider + () + + + QStyleOptionSlider + QStyleOptionSlider-2 + ( const QStyleOptionSlider & other ) + + + Type + Type-var + + + + Version + Version-var + + + + dialWrapping + dialWrapping-var + + + + maximum + maximum-var + + + + minimum + minimum-var + + + + notchTarget + notchTarget-var + + + + Orientation + orientation-var + QStyleOptionSlider::orientation + + + pageStep + pageStep-var + + + + singleStep + singleStep-var + + + + sliderPosition + sliderPosition-var + + + + sliderValue + sliderValue-var + + + + tickInterval + tickInterval-var + + + + TickPosition + tickPosition-var + QStyleOptionSlider::tickPosition + + + upsideDown + upsideDown-var + + + + + QStyleOptionSpinBox + qstyleoptionspinbox.html + + QStyleOptionSpinBox + QStyleOptionSpinBox + () + + + QStyleOptionSpinBox + QStyleOptionSpinBox-2 + ( const QStyleOptionSpinBox & other ) + + + Type + Type-var + + + + Version + Version-var + + + + ButtonSymbols + buttonSymbols-var + QStyleOptionSpinBox::buttonSymbols + + + frame + frame-var + + + + StepEnabled + stepEnabled-var + QStyleOptionSpinBox::stepEnabled + + + + QStyleOptionTabBarBase + qstyleoptiontabbarbase.html + + QStyleOptionTabBarBase + QStyleOptionTabBarBase + () + + + QStyleOptionTabBarBase + QStyleOptionTabBarBase-2 + ( const QStyleOptionTabBarBase & other ) + + + Type + Type-var + + + + Version + Version-var + + + + selectedTabRect + selectedTabRect-var + + + + Shape + shape-var + QStyleOptionTabBarBase::shape + + + tabBarRect + tabBarRect-var + + + + + QStyleOptionTab + qstyleoptiontab.html + + SelectedPosition + SelectedPosition-enum + + + + TabPosition + TabPosition-enum + + + + QStyleOptionTab + QStyleOptionTab + () + + + QStyleOptionTab + QStyleOptionTab-2 + ( const QStyleOptionTab & other ) + + + Type + Type-var + + + + Version + Version-var + + + + cornerWidgets + cornerWidgets-var + + + + icon + icon-var + + + + position + position-var + + + + row + row-var + + + + selectedPosition + selectedPosition-var + + + + Shape + shape-var + QStyleOptionTab::shape + + + text + text-var + + + + + QStyleOptionTabV2 + qstyleoptiontabv2.html + + QStyleOptionTabV2 + QStyleOptionTabV2 + () + + + QStyleOptionTabV2 + QStyleOptionTabV2-2 + ( const QStyleOptionTabV2 & other ) + + + QStyleOptionTabV2 + QStyleOptionTabV2-3 + ( const QStyleOptionTab & other ) + + + operator= + operator-eq + ( const QStyleOptionTab & other ) + + + iconSize + iconSize-var + + + + + QStyleOptionTabWidgetFrame + qstyleoptiontabwidgetframe.html + + QStyleOptionTabWidgetFrame + QStyleOptionTabWidgetFrame + () + + + QStyleOptionTabWidgetFrame + QStyleOptionTabWidgetFrame-2 + ( const QStyleOptionTabWidgetFrame & other ) + + + Type + Type-var + + + + Version + Version-var + + + + leftCornerWidgetSize + leftCornerWidgetSize-var + + + + lineWidth + lineWidth-var + + + + midLineWidth + midLineWidth-var + + + + rightCornerWidgetSize + rightCornerWidgetSize-var + + + + Shape + shape-var + QStyleOptionTabWidgetFrame::shape + + + tabBarSize + tabBarSize-var + + + + + QStyleOptionTitleBar + qstyleoptiontitlebar.html + + QStyleOptionTitleBar + QStyleOptionTitleBar + () + + + QStyleOptionTitleBar + QStyleOptionTitleBar-2 + ( const QStyleOptionTitleBar & other ) + + + Type + Type-var + + + + Version + Version-var + + + + icon + icon-var + + + + text + text-var + + + + WFlags + titleBarFlags-var + QStyleOptionTitleBar::titleBarFlags + + + titleBarState + titleBarState-var + + + + + QStyleOptionToolBar + qstyleoptiontoolbar.html + + ToolBarPosition + ToolBarPosition-enum + + + + QStyleOptionToolBar + QStyleOptionToolBar + () + + + QStyleOptionToolBar + QStyleOptionToolBar-2 + ( const QStyleOptionToolBar & other ) + + + features + features-var + + + + lineWidth + lineWidth-var + + + + midLineWidth + midLineWidth-var + + + + positionOfLine + positionOfLine-var + + + + positionWithinLine + positionWithinLine-var + + + + ToolBarArea + toolBarArea-var + QStyleOptionToolBar::toolBarArea + + + + QStyleOptionToolBox + qstyleoptiontoolbox.html + + QStyleOptionToolBox + QStyleOptionToolBox + () + + + QStyleOptionToolBox + QStyleOptionToolBox-2 + ( const QStyleOptionToolBox & other ) + + + Type + Type-var + + + + Version + Version-var + + + + icon + icon-var + + + + text + text-var + + + + + QStyleOptionToolButton + qstyleoptiontoolbutton.html + + QStyleOptionToolButton + QStyleOptionToolButton + () + + + QStyleOptionToolButton + QStyleOptionToolButton-2 + ( const QStyleOptionToolButton & other ) + + + Type + Type-var + + + + Version + Version-var + + + + ArrowType + arrowType-var + QStyleOptionToolButton::arrowType + + + features + features-var + + + + font + font-var + + + + icon + icon-var + + + + iconSize + iconSize-var + + + + pos + pos-var + + + + text + text-var + + + + ToolButtonStyle + toolButtonStyle-var + QStyleOptionToolButton::toolButtonStyle + + + + QStyleOptionViewItem + qstyleoptionviewitem.html + + Position + Position-enum + + + + QStyleOptionViewItem + QStyleOptionViewItem + () + + + QStyleOptionViewItem + QStyleOptionViewItem-2 + ( const QStyleOptionViewItem & other ) + + + Type + Type-var + + + + Version + Version-var + + + + Alignment + decorationAlignment-var + QStyleOptionViewItem::decorationAlignment + + + decorationPosition + decorationPosition-var + + + + decorationSize + decorationSize-var + + + + Alignment + displayAlignment-var + QStyleOptionViewItem::displayAlignment + + + font + font-var + + + + showDecorationSelected + showDecorationSelected-var + + + + TextElideMode + textElideMode-var + QStyleOptionViewItem::textElideMode + + + + QStylePainter + qstylepainter.html + + QStylePainter + QStylePainter + () + + + QStylePainter + QStylePainter-2 + ( QWidget * widget ) + + + QStylePainter + QStylePainter-3 + ( QPaintDevice * pd, QWidget * widget ) + + + begin + begin + ( QWidget * widget ) + + + begin + begin-2 + ( QPaintDevice * pd, QWidget * widget ) + + + drawComplexControl + drawComplexControl + ( QStyle::ComplexControl cc, const QStyleOptionComplex & option ) + + + drawControl + drawControl + ( QStyle::ControlElement ce, const QStyleOption & option ) + + + drawItemPixmap + drawItemPixmap + ( const QRect & rect, int flags, const QPixmap & pixmap ) + + + drawItemText + drawItemText + ( const QRect & rect, int flags, const QPalette & pal, bool enabled, const QString & text, QPalette::ColorRole textRole = QPalette::NoRole ) + + + drawPrimitive + drawPrimitive + ( QStyle::PrimitiveElement pe, const QStyleOption & option ) + + + style + style + () + + + + QStylePlugin + qstyleplugin.html + + QStylePlugin + QStylePlugin + ( QObject * parent = 0 ) + + + create + create + ( const QString & key ) + + + keys + keys + () + + + + QSvgRenderer + qsvgrenderer.html + + QSvgRenderer + QSvgRenderer + ( QObject * parent = 0 ) + + + QSvgRenderer + QSvgRenderer-2 + ( const QString & filename, QObject * parent = 0 ) + + + QSvgRenderer + QSvgRenderer-3 + ( const QByteArray & contents, QObject * parent = 0 ) + + + animated + animated + () + + + currentFrame + currentFrame + () + + + defaultSize + defaultSize + () + + + isValid + isValid + () + + + load + load + ( const QString & filename ) + + + load + load-2 + ( const QByteArray & contents ) + + + render + render + ( QPainter * painter ) + + + repaintNeeded + repaintNeeded + () + + + setCurrentFrame + setCurrentFrame + ( int ) + + + + QSvgWidget + qsvgwidget.html + + QSvgWidget + QSvgWidget + ( QWidget * parent = 0 ) + + + QSvgWidget + QSvgWidget-2 + ( const QString & file, QWidget * parent = 0 ) + + + load + load + ( const QString & file ) + + + load + load-2 + ( const QByteArray & contents ) + + + renderer + renderer + () + + + + QSyntaxHighlighter + qsyntaxhighlighter.html + + QSyntaxHighlighter + QSyntaxHighlighter + ( QObject * parent ) + + + QSyntaxHighlighter + QSyntaxHighlighter-2 + ( QTextDocument * parent ) + + + QSyntaxHighlighter + QSyntaxHighlighter-3 + ( QTextEdit * parent ) + + + currentBlockState + currentBlockState + () + + + currentBlockUserData + currentBlockUserData + () + + + document + document + () + + + format + format + ( int position ) + + + highlightBlock + highlightBlock + ( const QString & text ) + + + previousBlockState + previousBlockState + () + + + setCurrentBlockState + setCurrentBlockState + ( int newState ) + + + setCurrentBlockUserData + setCurrentBlockUserData + ( QTextBlockUserData * data ) + + + setDocument + setDocument + ( QTextDocument * doc ) + + + setFormat + setFormat + ( int start, int count, const QTextCharFormat & format ) + + + setFormat + setFormat-2 + ( int start, int count, const QColor & color ) + + + setFormat + setFormat-3 + ( int start, int count, const QFont & font ) + + + + QSysInfo + qsysinfo.html + + Endian + Endian-enum + + + + MacVersion + MacVersion-enum + + + + WinVersion + WinVersion-enum + + + + MacintoshVersion + MacintoshVersion-var + + + + WindowsVersion + WindowsVersion-var + + + + WordSize + WordSize-var + + + + + QTabBar + qtabbar.html + + Shape + Shape-enum + + + + QTabBar + QTabBar + ( QWidget * parent = 0 ) + + + addTab + addTab + ( const QString & text ) + + + addTab + addTab-2 + ( const QIcon & icon, const QString & text ) + + + currentChanged + currentChanged + ( int index ) + + + insertTab + insertTab + ( int index, const QString & text ) + + + insertTab + insertTab-2 + ( int index, const QIcon & icon, const QString & text ) + + + isTabEnabled + isTabEnabled + ( int index ) + + + removeTab + removeTab + ( int index ) + + + setTabData + setTabData + ( int index, const QVariant & data ) + + + setTabEnabled + setTabEnabled + ( int index, bool enabled ) + + + setTabIcon + setTabIcon + ( int index, const QIcon & icon ) + + + setTabText + setTabText + ( int index, const QString & text ) + + + setTabTextColor + setTabTextColor + ( int index, const QColor & color ) + + + setTabToolTip + setTabToolTip + ( int index, const QString & tip ) + + + setTabWhatsThis + setTabWhatsThis + ( int index, const QString & text ) + + + tabData + tabData + ( int index ) + + + tabIcon + tabIcon + ( int index ) + + + tabInserted + tabInserted + ( int index ) + + + tabLayoutChange + tabLayoutChange + () + + + tabRect + tabRect + ( int index ) + + + tabRemoved + tabRemoved + ( int index ) + + + tabSizeHint + tabSizeHint + ( int index ) + + + tabText + tabText + ( int index ) + + + tabTextColor + tabTextColor + ( int index ) + + + tabToolTip + tabToolTip + ( int index ) + + + tabWhatsThis + tabWhatsThis + ( int index ) + + + selected + selected + ( int index ) + + + setCurrentTab + setCurrentTab + ( int index ) + + + + QTabletEvent + qtabletevent.html + + PointerType + PointerType-enum + + + + TabletDevice + TabletDevice-enum + + + + QTabletEvent + QTabletEvent + ( Type type, const QPoint & pos, const QPoint & globalPos, const QPointF & hiResGlobalPos, int device, int pointerType, qreal pressure, int xTilt, int yTilt, qreal tangentialPressure, qreal rotation, int z, Qt::KeyboardModifiers keyState, qint64 uniqueID ) + + + device + device + () + + + globalPos + globalPos + () + + + globalX + globalX + () + + + globalY + globalY + () + + + hiResGlobalPos + hiResGlobalPos + () + + + hiResGlobalX + hiResGlobalX + () + + + hiResGlobalY + hiResGlobalY + () + + + pointerType + pointerType + () + + + pos + pos + () + + + pressure + pressure + () + + + rotation + rotation + () + + + tangentialPressure + tangentialPressure + () + + + uniqueId + uniqueId + () + + + x + x + () + + + xTilt + xTilt + () + + + y + y + () + + + yTilt + yTilt + () + + + z + z + () + + + + QTableView + qtableview.html + + PenStyle + gridStyle-prop + + + + QTableView + QTableView + ( QWidget * parent = 0 ) + + + columnAt + columnAt + ( int x ) + + + columnCountChanged + columnCountChanged + ( int oldCount, int newCount ) + + + columnMoved + columnMoved + ( int column, int oldIndex, int newIndex ) + + + columnResized + columnResized + ( int column, int oldWidth, int newWidth ) + + + columnViewportPosition + columnViewportPosition + ( int column ) + + + columnWidth + columnWidth + ( int column ) + + + hideColumn + hideColumn + ( int column ) + + + hideRow + hideRow + ( int row ) + + + horizontalHeader + horizontalHeader + () + + + horizontalOffset + horizontalOffset + () + + + indexAt + indexAt + ( const QPoint & pos ) + + + isColumnHidden + isColumnHidden + ( int column ) + + + isRowHidden + isRowHidden + ( int row ) + + + moveCursor + moveCursor + ( CursorAction cursorAction, Qt::KeyboardModifiers modifiers ) + + + paintEvent + paintEvent + ( QPaintEvent * event ) + + + resizeColumnToContents + resizeColumnToContents + ( int column ) + + + resizeColumnsToContents + resizeColumnsToContents + () + + + resizeRowToContents + resizeRowToContents + ( int row ) + + + resizeRowsToContents + resizeRowsToContents + () + + + rowAt + rowAt + ( int y ) + + + rowCountChanged + rowCountChanged + ( int oldCount, int newCount ) + + + rowHeight + rowHeight + ( int row ) + + + rowMoved + rowMoved + ( int row, int oldIndex, int newIndex ) + + + rowResized + rowResized + ( int row, int oldHeight, int newHeight ) + + + rowViewportPosition + rowViewportPosition + ( int row ) + + + selectColumn + selectColumn + ( int column ) + + + selectRow + selectRow + ( int row ) + + + setColumnHidden + setColumnHidden + ( int column, bool hide ) + + + setColumnWidth + setColumnWidth + ( int column, int width ) + + + setHorizontalHeader + setHorizontalHeader + ( QHeaderView * header ) + + + setRowHeight + setRowHeight + ( int row, int height ) + + + setRowHidden + setRowHidden + ( int row, bool hide ) + + + setSelection + setSelection + ( const QRect & rect, QItemSelectionModel::SelectionFlags flags ) + + + setVerticalHeader + setVerticalHeader + ( QHeaderView * header ) + + + showColumn + showColumn + ( int column ) + + + showRow + showRow + ( int row ) + + + sizeHintForColumn + sizeHintForColumn + ( int column ) + + + sizeHintForRow + sizeHintForRow + ( int row ) + + + sortByColumn + sortByColumn + ( int column ) + + + verticalHeader + verticalHeader + () + + + verticalOffset + verticalOffset + () + + + + QTableWidget + qtablewidget.html + + QTableWidget + QTableWidget + ( QWidget * parent = 0 ) + + + QTableWidget + QTableWidget-2 + ( int rows, int columns, QWidget * parent = 0 ) + + + cellActivated + cellActivated + ( int row, int column ) + + + cellChanged + cellChanged + ( int row, int column ) + + + cellClicked + cellClicked + ( int row, int column ) + + + cellDoubleClicked + cellDoubleClicked + ( int row, int column ) + + + cellEntered + cellEntered + ( int row, int column ) + + + cellPressed + cellPressed + ( int row, int column ) + + + cellWidget + cellWidget + ( int row, int column ) + + + clear + clear + () + + + closePersistentEditor + closePersistentEditor + ( QTableWidgetItem * item ) + + + column + column + ( const QTableWidgetItem * item ) + + + currentCellChanged + currentCellChanged + ( int currentRow, int currentColumn, int previousRow, int previousColumn ) + + + currentColumn + currentColumn + () + + + currentItem + currentItem + () + + + currentItemChanged + currentItemChanged + ( QTableWidgetItem * current, QTableWidgetItem * previous ) + + + currentRow + currentRow + () + + + dropMimeData + dropMimeData + ( int row, int column, const QMimeData * data, Qt::DropAction action ) + + + editItem + editItem + ( QTableWidgetItem * item ) + + + event + event + ( QEvent * e ) + + + findItems + findItems + ( const QString & text, Qt::MatchFlags flags ) + + + horizontalHeaderItem + horizontalHeaderItem + ( int column ) + + + indexFromItem + indexFromItem + ( QTableWidgetItem * item ) + + + insertColumn + insertColumn + ( int column ) + + + insertRow + insertRow + ( int row ) + + + isItemSelected + isItemSelected + ( const QTableWidgetItem * item ) + + + item + item + ( int row, int column ) + + + itemActivated + itemActivated + ( QTableWidgetItem * item ) + + + itemAt + itemAt + ( const QPoint & point ) + + + itemAt + itemAt-2 + ( int ax, int ay ) + + + itemChanged + itemChanged + ( QTableWidgetItem * item ) + + + itemClicked + itemClicked + ( QTableWidgetItem * item ) + + + itemDoubleClicked + itemDoubleClicked + ( QTableWidgetItem * item ) + + + itemEntered + itemEntered + ( QTableWidgetItem * item ) + + + itemFromIndex + itemFromIndex + ( const QModelIndex & index ) + + + itemPressed + itemPressed + ( QTableWidgetItem * item ) + + + itemPrototype + itemPrototype + () + + + itemSelectionChanged + itemSelectionChanged + () + + + items + items + ( const QMimeData * data ) + + + mimeData + mimeData + ( const QList<QTableWidgetItem *> items ) + + + mimeTypes + mimeTypes + () + + + openPersistentEditor + openPersistentEditor + ( QTableWidgetItem * item ) + + + removeColumn + removeColumn + ( int column ) + + + removeRow + removeRow + ( int row ) + + + row + row + ( const QTableWidgetItem * item ) + + + scrollToItem + scrollToItem + ( const QTableWidgetItem * item, QAbstractItemView::ScrollHint hint = EnsureVisible ) + + + selectedItems + selectedItems + () + + + selectedRanges + selectedRanges + () + + + setCellWidget + setCellWidget + ( int row, int column, QWidget * widget ) + + + setCurrentCell + setCurrentCell + ( int row, int column ) + + + setCurrentItem + setCurrentItem + ( QTableWidgetItem * item ) + + + setHorizontalHeaderItem + setHorizontalHeaderItem + ( int column, QTableWidgetItem * item ) + + + setHorizontalHeaderLabels + setHorizontalHeaderLabels + ( const QStringList & labels ) + + + setItem + setItem + ( int row, int column, QTableWidgetItem * item ) + + + setItemPrototype + setItemPrototype + ( const QTableWidgetItem * item ) + + + setItemSelected + setItemSelected + ( const QTableWidgetItem * item, bool select ) + + + setRangeSelected + setRangeSelected + ( const QTableWidgetSelectionRange & range, bool select ) + + + setVerticalHeaderItem + setVerticalHeaderItem + ( int row, QTableWidgetItem * item ) + + + setVerticalHeaderLabels + setVerticalHeaderLabels + ( const QStringList & labels ) + + + sortItems + sortItems + ( int column, Qt::SortOrder order = Qt::AscendingOrder ) + + + DropActions + supportedDropActions + QTableWidget::supportedDropActions() + + + takeHorizontalHeaderItem + takeHorizontalHeaderItem + ( int column ) + + + takeItem + takeItem + ( int row, int column ) + + + takeVerticalHeaderItem + takeVerticalHeaderItem + ( int row ) + + + verticalHeaderItem + verticalHeaderItem + ( int row ) + + + visualColumn + visualColumn + ( int logicalColumn ) + + + visualItemRect + visualItemRect + ( const QTableWidgetItem * item ) + + + visualRow + visualRow + ( int logicalRow ) + + + + QTableWidgetItem + qtablewidgetitem.html + + QTableWidgetItem + QTableWidgetItem + ( int type = Type ) + + + QTableWidgetItem + QTableWidgetItem-2 + ( const QString & text, int type = Type ) + + + QTableWidgetItem + QTableWidgetItem-3 + ( const QTableWidgetItem & other ) + + + backgroundColor + backgroundColor + () + + + CheckState + checkState + QTableWidgetItem::checkState() + + + clone + clone + () + + + data + data + ( int role ) + + + ItemFlags + flags + QTableWidgetItem::flags() + + + font + font + () + + + icon + icon + () + + + read + read + ( QDataStream & in ) + + + setBackgroundColor + setBackgroundColor + ( const QColor & color ) + + + setCheckState + setCheckState + ( Qt::CheckState state ) + + + setData + setData + ( int role, const QVariant & value ) + + + setFlags + setFlags + ( Qt::ItemFlags flags ) + + + setFont + setFont + ( const QFont & font ) + + + setIcon + setIcon + ( const QIcon & icon ) + + + setSizeHint + setSizeHint + ( const QSize & size ) + + + setStatusTip + setStatusTip + ( const QString & statusTip ) + + + setText + setText + ( const QString & text ) + + + setTextAlignment + setTextAlignment + ( int alignment ) + + + setTextColor + setTextColor + ( const QColor & color ) + + + setToolTip + setToolTip + ( const QString & toolTip ) + + + setWhatsThis + setWhatsThis + ( const QString & whatsThis ) + + + sizeHint + sizeHint + () + + + statusTip + statusTip + () + + + tableWidget + tableWidget + () + + + text + text + () + + + textAlignment + textAlignment + () + + + textColor + textColor + () + + + toolTip + toolTip + () + + + type + type + () + + + whatsThis + whatsThis + () + + + write + write + ( QDataStream & out ) + + + operator< + operator-lt + ( const QTableWidgetItem & other ) + + + operator= + operator-eq + ( const QTableWidgetItem & other ) + + + Type + Type-var + + + + UserType + UserType-var + + + + + QTableWidgetSelectionRange + qtablewidgetselectionrange.html + + QTableWidgetSelectionRange + QTableWidgetSelectionRange + () + + + QTableWidgetSelectionRange + QTableWidgetSelectionRange-2 + ( int top, int left, int bottom, int right ) + + + QTableWidgetSelectionRange + QTableWidgetSelectionRange-3 + ( const QTableWidgetSelectionRange & other ) + + + bottomRow + bottomRow + () + + + columnCount + columnCount + () + + + leftColumn + leftColumn + () + + + rightColumn + rightColumn + () + + + rowCount + rowCount + () + + + topRow + topRow + () + + + + QTabWidget + qtabwidget.html + + TabPosition + TabPosition-enum + + + + TabShape + TabShape-enum + + + + QTabWidget + QTabWidget + ( QWidget * parent = 0 ) + + + addTab + addTab + ( QWidget * child, const QString & label ) + + + addTab + addTab-2 + ( QWidget * child, const QIcon & icon, const QString & label ) + + + cornerWidget + cornerWidget + ( Qt::Corner corner = Qt::TopRightCorner ) + + + currentChanged + currentChanged + ( int index ) + + + currentWidget + currentWidget + () + + + indexOf + indexOf + ( QWidget * w ) + + + insertTab + insertTab + ( int index, QWidget * w, const QString & label ) + + + insertTab + insertTab-4 + ( int index, QWidget * w, const QIcon & icon, const QString & label ) + + + isTabEnabled + isTabEnabled + ( int index ) + + + paintEvent + paintEvent + ( QPaintEvent * event ) + + + removeTab + removeTab + ( int index ) + + + setCornerWidget + setCornerWidget + ( QWidget * widget, Qt::Corner corner = Qt::TopRightCorner ) + + + setCurrentWidget + setCurrentWidget + ( QWidget * widget ) + + + setTabBar + setTabBar + ( QTabBar * tb ) + + + setTabEnabled + setTabEnabled + ( int index, bool enable ) + + + setTabIcon + setTabIcon + ( int index, const QIcon & icon ) + + + setTabText + setTabText + ( int index, const QString & label ) + + + setTabToolTip + setTabToolTip + ( int index, const QString & tip ) + + + setTabWhatsThis + setTabWhatsThis + ( int index, const QString & text ) + + + tabBar + tabBar + () + + + tabIcon + tabIcon + ( int index ) + + + tabInserted + tabInserted + ( int index ) + + + tabRemoved + tabRemoved + ( int index ) + + + tabText + tabText + ( int index ) + + + tabToolTip + tabToolTip + ( int index ) + + + tabWhatsThis + tabWhatsThis + ( int index ) + + + widget + widget + ( int index ) + + + QTabWidget + QTabWidget-2 + ( QWidget * parent, const char * name, Qt::WFlags f = 0 ) + + + changeTab + changeTab + ( QWidget * widget, const QString & label ) + + + changeTab + changeTab-2 + ( QWidget * widget, const QIcon & icon, const QString & label ) + + + currentChanged + currentChanged-2 + ( QWidget * widget ) + + + currentPage + currentPage + () + + + currentPageIndex + currentPageIndex + () + + + insertTab + insertTab-2 + ( QWidget * widget, const QString & label, int index = -1 ) + + + insertTab + insertTab-3 + ( QWidget * widget, const QIcon & icon, const QString & label, int index = -1 ) + + + isTabEnabled + isTabEnabled-2 + ( QWidget * widget ) + + + label + label + ( int index ) + + + margin + margin + () + + + page + page + ( int index ) + + + removePage + removePage + ( QWidget * widget ) + + + removeTabToolTip + removeTabToolTip + ( QWidget * widget ) + + + setCurrentPage + setCurrentPage + ( int index ) + + + setMargin + setMargin + ( int margin ) + + + setTabEnabled + setTabEnabled-2 + ( QWidget * widget, bool b ) + + + setTabIconSet + setTabIconSet + ( QWidget * widget, const QIcon & icon ) + + + setTabLabel + setTabLabel + ( QWidget * widget, const QString & label ) + + + setTabToolTip + setTabToolTip-2 + ( QWidget * widget, const QString & tip ) + + + showPage + showPage + ( QWidget * widget ) + + + tabIconSet + tabIconSet + ( QWidget * widget ) + + + tabLabel + tabLabel + ( QWidget * widget ) + + + tabToolTip + tabToolTip-2 + ( QWidget * widget ) + + + + QTcpServer + qtcpserver.html + + QTcpServer + QTcpServer + ( QObject * parent = 0 ) + + + close + close + () + + + errorString + errorString + () + + + hasPendingConnections + hasPendingConnections + () + + + incomingConnection + incomingConnection + ( int socketDescriptor ) + + + isListening + isListening + () + + + listen + listen + ( const QHostAddress & address = QHostAddress::Any, quint16 port = 0 ) + + + maxPendingConnections + maxPendingConnections + () + + + newConnection + newConnection + () + + + nextPendingConnection + nextPendingConnection + () + + + proxy + proxy + () + + + serverAddress + serverAddress + () + + + SocketError + serverError + QTcpServer::serverError() + + + serverPort + serverPort + () + + + setMaxPendingConnections + setMaxPendingConnections + ( int numConnections ) + + + setProxy + setProxy + ( const QNetworkProxy & networkProxy ) + + + setSocketDescriptor + setSocketDescriptor + ( int socketDescriptor ) + + + socketDescriptor + socketDescriptor + () + + + waitForNewConnection + waitForNewConnection + ( int msec = 0, bool * timedOut = 0 ) + + + + QTcpSocket + qtcpsocket.html + + QTcpSocket + QTcpSocket + ( QObject * parent = 0 ) + + + + QTemporaryFile + qtemporaryfile.html + + QTemporaryFile + QTemporaryFile + () + + + QTemporaryFile + QTemporaryFile-2 + ( const QString & templateName ) + + + QTemporaryFile + QTemporaryFile-3 + ( QObject * parent ) + + + QTemporaryFile + QTemporaryFile-4 + ( const QString & templateName, QObject * parent ) + + + autoRemove + autoRemove + () + + + createLocalFile + createLocalFile + ( QFile & file ) + + + createLocalFile + createLocalFile-2 + ( const QString & fileName ) + + + fileName + fileName + () + + + fileTemplate + fileTemplate + () + + + open + open + () + + + setAutoRemove + setAutoRemove + ( bool b ) + + + setFileTemplate + setFileTemplate + ( const QString & name ) + + + + QTestEventList + qtesteventlist.html + + QTestEventList + QTestEventList + () + + + QTestEventList + QTestEventList-2 + ( const QTestEventList & other ) + + + addDelay + addDelay + ( int msecs ) + + + addKeyClick + addKeyClick + ( Qt::Key qtKey, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1 ) + + + addKeyClick + addKeyClick-2 + ( char ascii, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1 ) + + + addKeyClicks + addKeyClicks + ( const QString & keys, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1 ) + + + addKeyPress + addKeyPress + ( Qt::Key qtKey, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1 ) + + + addKeyPress + addKeyPress-2 + ( char ascii, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1 ) + + + addKeyRelease + addKeyRelease + ( Qt::Key qtKey, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1 ) + + + addKeyRelease + addKeyRelease-2 + ( char ascii, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1 ) + + + addMouseClick + addMouseClick + ( Qt::MouseButton button, Qt::KeyboardModifiers modifiers = 0, QPoint pos = QPoint() + + + addMouseDClick + addMouseDClick + ( Qt::MouseButton button, Qt::KeyboardModifiers modifiers = 0, QPoint pos = QPoint() + + + addMouseMove + addMouseMove + ( QPoint pos = QPoint() + + + addMousePress + addMousePress + ( Qt::MouseButton button, Qt::KeyboardModifiers modifiers = 0, QPoint pos = QPoint() + + + addMouseRelease + addMouseRelease + ( Qt::MouseButton button, Qt::KeyboardModifiers modifiers = 0, QPoint pos = QPoint() + + + clear + clear + () + + + simulate + simulate + ( QWidget * w ) + + + KeyAction + KeyAction-enum + + + + MouseAction + MouseAction-enum + + + + SkipMode + SkipMode-enum + + + + TestFailMode + TestFailMode-enum + + + + addColumn + addColumn + ( const char * name, T * dummy = 0 ) + + + currentDataTag + currentDataTag + () + + + currentTestFailed + currentTestFailed + () + + + currentTestFunction + currentTestFunction + () + + + ignoreMessage + ignoreMessage + ( QtMsgType type, const char * message ) + + + keyClick + keyClick + ( QWidget * widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1 ) + + + keyClick + keyClick-2 + ( QWidget * widget, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1 ) + + + keyClicks + keyClicks + ( QWidget * widget, const QString & sequence, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1 ) + + + keyEvent + keyEvent + ( KeyAction action, QWidget * widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1 ) + + + keyEvent + keyEvent-2 + ( KeyAction action, QWidget * widget, char ascii, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1 ) + + + keyPress + keyPress + ( QWidget * widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1 ) + + + keyPress + keyPress-2 + ( QWidget * widget, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1 ) + + + keyRelease + keyRelease + ( QWidget * widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1 ) + + + keyRelease + keyRelease-2 + ( QWidget * widget, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1 ) + + + mouseClick + mouseClick + ( QWidget * widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier = 0, QPoint pos = QPoint() + + + mouseDClick + mouseDClick + ( QWidget * widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier = 0, QPoint pos = QPoint() + + + mouseMove + mouseMove + ( QWidget * widget, QPoint pos = QPoint() + + + mousePress + mousePress + ( QWidget * widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier = 0, QPoint pos = QPoint() + + + mouseRelease + mouseRelease + ( QWidget * widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier = 0, QPoint pos = QPoint() + + + newRow + newRow + ( const char * dataTag ) + + + qExec + qExec + ( QObject * testObject, int argc = 0, char ** argv = 0 ) + + + qSleep + qSleep + ( int ms ) + + + qWait + qWait + ( int ms ) + + + toString + toString + ( const T & value ) + + + toString + toString-4 + ( const QLatin1String & string ) + + + toString + toString-5 + ( const QString & string ) + + + toString + toString-6 + ( const QTime & time ) + + + toString + toString-7 + ( const QDate & date ) + + + toString + toString-8 + ( const QDateTime & dateTime ) + + + toString + toString-9 + ( const QChar & character ) + + + + QTextBlockFormat + qtextblockformat.html + + QTextBlockFormat + QTextBlockFormat + () + + + Alignment + alignment + QTextBlockFormat::alignment() + + + bottomMargin + bottomMargin + () + + + indent + indent + () + + + isValid + isValid + () + + + leftMargin + leftMargin + () + + + nonBreakableLines + nonBreakableLines + () + + + rightMargin + rightMargin + () + + + setAlignment + setAlignment + ( Qt::Alignment alignment ) + + + setBottomMargin + setBottomMargin + ( qreal margin ) + + + setIndent + setIndent + ( int indentation ) + + + setLeftMargin + setLeftMargin + ( qreal margin ) + + + setNonBreakableLines + setNonBreakableLines + ( bool b ) + + + setRightMargin + setRightMargin + ( qreal margin ) + + + setTextIndent + setTextIndent + ( qreal indent ) + + + setTopMargin + setTopMargin + ( qreal margin ) + + + textIndent + textIndent + () + + + topMargin + topMargin + () + + + + QTextBlockGroup + qtextblockgroup.html + + QTextBlockGroup + QTextBlockGroup + ( QTextDocument * document ) + + + blockFormatChanged + blockFormatChanged + ( const QTextBlock & block ) + + + blockInserted + blockInserted + ( const QTextBlock & block ) + + + blockList + blockList + () + + + blockRemoved + blockRemoved + ( const QTextBlock & block ) + + + + QTextBlock + qtextblock.html + + Iterator + Iterator-typedef + + + + QTextBlock + QTextBlock-3 + ( const QTextBlock & other ) + + + begin + begin + () + + + blockFormat + blockFormat + () + + + blockFormatIndex + blockFormatIndex + () + + + charFormat + charFormat + () + + + charFormatIndex + charFormatIndex + () + + + contains + contains + ( int position ) + + + document + document + () + + + end + end + () + + + isValid + isValid + () + + + layout + layout + () + + + length + length + () + + + next + next + () + + + position + position + () + + + previous + previous + () + + + setUserData + setUserData + ( QTextBlockUserData * data ) + + + setUserState + setUserState + ( int state ) + + + text + text + () + + + textList + textList + () + + + userData + userData + () + + + userState + userState + () + + + operator!= + operator-not-eq + ( const QTextBlock & other ) + + + operator< + operator-lt + ( const QTextBlock & other ) + + + operator= + operator-eq + ( const QTextBlock & other ) + + + operator== + operator-eq-eq + ( const QTextBlock & other ) + + + + QTextBlock::iterator + qtextblock-iterator.html + + iterator + iterator-2 + () + + + iterator + iterator-3 + ( const iterator & other ) + + + atEnd + atEnd + () + + + fragment + fragment + () + + + operator!= + operator-not-eq + ( const iterator & other ) + + + operator++ + operator-2b-2b + () + + + operator++ + operator-2b-2b-2 + ( int ) + + + operator-- + operator-- + () + + + operator-- + operator---2 + ( int ) + + + operator== + operator-eq-eq + ( const iterator & other ) + + + + QTextBlockUserData + qtextblockuserdata.html + + + QTextBrowser + qtextbrowser.html + + QTextBrowser + QTextBrowser + ( QWidget * parent = 0 ) + + + anchorClicked + anchorClicked + ( const QUrl & link ) + + + backward + backward + () + + + backwardAvailable + backwardAvailable + ( bool available ) + + + forward + forward + () + + + forwardAvailable + forwardAvailable + ( bool available ) + + + highlighted + highlighted + ( const QUrl & link ) + + + highlighted + highlighted-2 + ( const QString & link ) + + + home + home + () + + + keyPressEvent + keyPressEvent + ( QKeyEvent * ev ) + + + loadResource + loadResource + ( int type, const QUrl & name ) + + + reload + reload + () + + + sourceChanged + sourceChanged + ( const QUrl & src ) + + + QTextBrowser + QTextBrowser-2 + ( QWidget * parent, const char * name ) + + + + QTextCharFormat + qtextcharformat.html + + VerticalAlignment + VerticalAlignment-enum + + + + QTextCharFormat + QTextCharFormat + () + + + anchorHref + anchorHref + () + + + anchorName + anchorName + () + + + font + font + () + + + fontFamily + fontFamily + () + + + fontFixedPitch + fontFixedPitch + () + + + fontItalic + fontItalic + () + + + fontOverline + fontOverline + () + + + fontPointSize + fontPointSize + () + + + fontStrikeOut + fontStrikeOut + () + + + fontUnderline + fontUnderline + () + + + fontWeight + fontWeight + () + + + isAnchor + isAnchor + () + + + isValid + isValid + () + + + setAnchor + setAnchor + ( bool anchor ) + + + setAnchorHref + setAnchorHref + ( const QString & value ) + + + setAnchorName + setAnchorName + ( const QString & name ) + + + setFont + setFont + ( const QFont & font ) + + + setFontFamily + setFontFamily + ( const QString & family ) + + + setFontFixedPitch + setFontFixedPitch + ( bool fixedPitch ) + + + setFontItalic + setFontItalic + ( bool italic ) + + + setFontOverline + setFontOverline + ( bool overline ) + + + setFontPointSize + setFontPointSize + ( qreal size ) + + + setFontStrikeOut + setFontStrikeOut + ( bool strikeOut ) + + + setFontUnderline + setFontUnderline + ( bool underline ) + + + setFontWeight + setFontWeight + ( int weight ) + + + setTableCellColumnSpan + setTableCellColumnSpan + ( int tableCellColumnSpan ) + + + setTableCellRowSpan + setTableCellRowSpan + ( int tableCellRowSpan ) + + + setTextOutline + setTextOutline + ( const QPen & pen ) + + + setUnderlineColor + setUnderlineColor + ( const QColor & color ) + + + setVerticalAlignment + setVerticalAlignment + ( VerticalAlignment alignment ) + + + tableCellColumnSpan + tableCellColumnSpan + () + + + tableCellRowSpan + tableCellRowSpan + () + + + textOutline + textOutline + () + + + underlineColor + underlineColor + () + + + verticalAlignment + verticalAlignment + () + + + + QTextCodec::ConverterState + qtextcodec-converterstate.html + + ConverterState + ConverterState + ( ConversionFlags flags = DefaultConversion ) + + + + QTextCodec + qtextcodec.html + + QTextCodec + QTextCodec + () + + + aliases + aliases + () + + + availableCodecs + availableCodecs + () + + + availableMibs + availableMibs + () + + + canEncode + canEncode + ( QChar ch ) + + + canEncode + canEncode-2 + ( const QString & s ) + + + codecForCStrings + codecForCStrings + () + + + codecForLocale + codecForLocale + () + + + codecForMib + codecForMib + ( int mib ) + + + codecForName + codecForName + ( const QByteArray & name ) + + + codecForName + codecForName-2 + ( const char * name ) + + + codecForTr + codecForTr + () + + + convertFromUnicode + convertFromUnicode + ( const QChar * input, int number, ConverterState * state ) + + + convertToUnicode + convertToUnicode + ( const char * chars, int len, ConverterState * state ) + + + fromUnicode + fromUnicode + ( const QString & str ) + + + fromUnicode + fromUnicode-2 + ( const QChar * input, int number, ConverterState * state = 0 ) + + + makeDecoder + makeDecoder + () + + + makeEncoder + makeEncoder + () + + + mibEnum + mibEnum + () + + + name + name + () + + + setCodecForCStrings + setCodecForCStrings + ( QTextCodec * c ) + + + setCodecForLocale + setCodecForLocale + ( QTextCodec * c ) + + + setCodecForTr + setCodecForTr + ( QTextCodec * c ) + + + toUnicode + toUnicode + ( const QByteArray & a ) + + + toUnicode + toUnicode-2 + ( const char * input, int size, ConverterState * state = 0 ) + + + toUnicode + toUnicode-4 + ( const char * chars ) + + + + QTextCodecPlugin + qtextcodecplugin.html + + QTextCodecPlugin + QTextCodecPlugin + ( QObject * parent = 0 ) + + + aliases + aliases + () + + + createForMib + createForMib + ( int mib ) + + + createForName + createForName + ( const QByteArray & name ) + + + mibEnums + mibEnums + () + + + names + names + () + + + codecForContent + codecForContent + ( const char * str, int size ) + + + codecForIndex + codecForIndex + ( int i ) + + + codecForName + codecForName-3 + ( const char * hint, int accuracy ) + + + fromUnicode + fromUnicode-3 + ( const QString & uc, int & lenInOut ) + + + locale + locale + () + + + mimeName + mimeName + () + + + toUnicode + toUnicode-3 + ( const QByteArray & a, int len ) + + + + QTextCursor + qtextcursor.html + + MoveMode + MoveMode-enum + + + + MoveOperation + MoveOperation-enum + + + + SelectionType + SelectionType-enum + + + + QTextCursor + QTextCursor + () + + + QTextCursor + QTextCursor-2 + ( QTextDocument * document ) + + + QTextCursor + QTextCursor-4 + ( QTextFrame * frame ) + + + QTextCursor + QTextCursor-5 + ( const QTextBlock & block ) + + + QTextCursor + QTextCursor-7 + ( const QTextCursor & cursor ) + + + anchor + anchor + () + + + atBlockEnd + atBlockEnd + () + + + atBlockStart + atBlockStart + () + + + atEnd + atEnd + () + + + atStart + atStart + () + + + beginEditBlock + beginEditBlock + () + + + block + block + () + + + blockCharFormat + blockCharFormat + () + + + blockFormat + blockFormat + () + + + charFormat + charFormat + () + + + clearSelection + clearSelection + () + + + createList + createList + ( const QTextListFormat & format ) + + + createList + createList-2 + ( QTextListFormat::Style style ) + + + currentFrame + currentFrame + () + + + currentList + currentList + () + + + currentTable + currentTable + () + + + deleteChar + deleteChar + () + + + deletePreviousChar + deletePreviousChar + () + + + endEditBlock + endEditBlock + () + + + hasComplexSelection + hasComplexSelection + () + + + hasSelection + hasSelection + () + + + insertBlock + insertBlock + () + + + insertBlock + insertBlock-2 + ( const QTextBlockFormat & format ) + + + insertBlock + insertBlock-3 + ( const QTextBlockFormat & format, const QTextCharFormat & charFormat ) + + + insertFragment + insertFragment + ( const QTextDocumentFragment & fragment ) + + + insertFrame + insertFrame + ( const QTextFrameFormat & format ) + + + insertImage + insertImage + ( const QTextImageFormat & format ) + + + insertImage + insertImage-2 + ( const QString & name ) + + + insertList + insertList + ( const QTextListFormat & format ) + + + insertList + insertList-2 + ( QTextListFormat::Style style ) + + + insertTable + insertTable + ( int rows, int columns, const QTextTableFormat & format ) + + + insertTable + insertTable-2 + ( int rows, int columns ) + + + insertText + insertText + ( const QString & text ) + + + insertText + insertText-2 + ( const QString & text, const QTextCharFormat & format ) + + + isCopyOf + isCopyOf + ( const QTextCursor & other ) + + + isNull + isNull + () + + + joinPreviousEditBlock + joinPreviousEditBlock + () + + + mergeBlockCharFormat + mergeBlockCharFormat + ( const QTextCharFormat & modifier ) + + + mergeBlockFormat + mergeBlockFormat + ( const QTextBlockFormat & modifier ) + + + mergeCharFormat + mergeCharFormat + ( const QTextCharFormat & modifier ) + + + movePosition + movePosition + ( MoveOperation operation, MoveMode mode = MoveAnchor, int n = 1 ) + + + position + position + () + + + removeSelectedText + removeSelectedText + () + + + select + select + ( SelectionType selection ) + + + selectedTableCells + selectedTableCells + ( int * firstRow, int * numRows, int * firstColumn, int * numColumns ) + + + selectedText + selectedText + () + + + selection + selection + () + + + selectionEnd + selectionEnd + () + + + selectionStart + selectionStart + () + + + setBlockCharFormat + setBlockCharFormat + ( const QTextCharFormat & format ) + + + setBlockFormat + setBlockFormat + ( const QTextBlockFormat & format ) + + + setCharFormat + setCharFormat + ( const QTextCharFormat & format ) + + + setPosition + setPosition + ( int pos, MoveMode m = MoveAnchor ) + + + operator!= + operator-not-eq + ( const QTextCursor & other ) + + + operator< + operator-lt + ( const QTextCursor & other ) + + + operator<= + operator-lt-eq + ( const QTextCursor & other ) + + + operator= + operator-eq + ( const QTextCursor & cursor ) + + + operator== + operator-eq-eq + ( const QTextCursor & other ) + + + operator> + operator-gt + ( const QTextCursor & other ) + + + operator>= + operator-gt-eq + ( const QTextCursor & other ) + + + + QTextDecoder + qtextdecoder.html + + QTextDecoder + QTextDecoder + ( const QTextCodec * codec ) + + + toUnicode + toUnicode + ( const char * chars, int len ) + + + toUnicode + toUnicode-2 + ( const QByteArray & ba ) + + + + QTextDocumentFragment + qtextdocumentfragment.html + + QTextDocumentFragment + QTextDocumentFragment + () + + + QTextDocumentFragment + QTextDocumentFragment-2 + ( const QTextDocument * document ) + + + QTextDocumentFragment + QTextDocumentFragment-3 + ( const QTextCursor & cursor ) + + + QTextDocumentFragment + QTextDocumentFragment-4 + ( const QTextDocumentFragment & other ) + + + fromHtml + fromHtml + ( const QString & text ) + + + fromPlainText + fromPlainText + ( const QString & plainText ) + + + isEmpty + isEmpty + () + + + toHtml + toHtml + () + + + toPlainText + toPlainText + () + + + operator= + operator-eq + ( const QTextDocumentFragment & other ) + + + + QTextDocument + qtextdocument.html + + MetaInformation + MetaInformation-enum + + + + ResourceType + ResourceType-enum + + + + QTextDocument + QTextDocument + ( QObject * parent = 0 ) + + + QTextDocument + QTextDocument-2 + ( const QString & text, QObject * parent = 0 ) + + + addResource + addResource + ( int type, const QUrl & name, const QVariant & resource ) + + + allFormats + allFormats + () + + + begin + begin + () + + + clear + clear + () + + + clone + clone + ( QObject * parent = 0 ) + + + contentsChange + contentsChange + ( int position, int charsRemoved, int charsAdded ) + + + contentsChanged + contentsChanged + () + + + createObject + createObject + ( const QTextFormat & format ) + + + cursorPositionChanged + cursorPositionChanged + ( const QTextCursor & cursor ) + + + documentLayout + documentLayout + () + + + end + end + () + + + find + find + ( const QString & expr, const QTextCursor & cursor, FindFlags options = 0 ) + + + find + find-2 + ( const QString & expr, int position = 0, FindFlags options = 0 ) + + + findBlock + findBlock + ( int pos ) + + + isEmpty + isEmpty + () + + + isRedoAvailable + isRedoAvailable + () + + + isUndoAvailable + isUndoAvailable + () + + + loadResource + loadResource + ( int type, const QUrl & name ) + + + markContentsDirty + markContentsDirty + ( int position, int length ) + + + metaInformation + metaInformation + ( MetaInformation info ) + + + modificationChanged + modificationChanged + ( bool changed ) + + + object + object + ( int objectIndex ) + + + objectForFormat + objectForFormat + ( const QTextFormat & f ) + + + pageCount + pageCount + () + + + print + print + ( QPrinter * printer ) + + + redo + redo + () + + + redoAvailable + redoAvailable + ( bool available ) + + + resource + resource + ( int type, const QUrl & name ) + + + rootFrame + rootFrame + () + + + setDocumentLayout + setDocumentLayout + ( QAbstractTextDocumentLayout * layout ) + + + setHtml + setHtml + ( const QString & html ) + + + setMetaInformation + setMetaInformation + ( MetaInformation info, const QString & string ) + + + setPlainText + setPlainText + ( const QString & text ) + + + toHtml + toHtml + ( const QByteArray & encoding = QByteArray() + + + toPlainText + toPlainText + () + + + undo + undo + () + + + undoAvailable + undoAvailable + ( bool available ) + + + + QTextEdit + qtextedit.html + + CursorAction + CursorAction-enum + + + + LineWrapMode + LineWrapMode-enum + + + + WrapMode + wordWrapMode-prop + + + + QTextEdit + QTextEdit + ( QWidget * parent = 0 ) + + + QTextEdit + QTextEdit-2 + ( const QString & text, QWidget * parent = 0 ) + + + Alignment + alignment + QTextEdit::alignment() + + + anchorAt + anchorAt + ( const QPoint & pos ) + + + append + append + ( const QString & text ) + + + canInsertFromMimeData + canInsertFromMimeData + ( const QMimeData * source ) + + + clear + clear + () + + + contextMenuEvent + contextMenuEvent + ( QContextMenuEvent * e ) + + + copy + copy + () + + + copyAvailable + copyAvailable + ( bool yes ) + + + createMimeDataFromSelection + createMimeDataFromSelection + () + + + createStandardContextMenu + createStandardContextMenu + () + + + currentCharFormat + currentCharFormat + () + + + currentCharFormatChanged + currentCharFormatChanged + ( const QTextCharFormat & f ) + + + currentFont + currentFont + () + + + cursorForPosition + cursorForPosition + ( const QPoint & pos ) + + + cursorPositionChanged + cursorPositionChanged + () + + + cursorRect + cursorRect + ( const QTextCursor & cursor ) + + + cursorRect + cursorRect-2 + () + + + cut + cut + () + + + document + document + () + + + ensureCursorVisible + ensureCursorVisible + () + + + find + find + ( const QString & exp, QTextDocument::FindFlags options = 0 ) + + + fontFamily + fontFamily + () + + + fontItalic + fontItalic + () + + + fontPointSize + fontPointSize + () + + + fontUnderline + fontUnderline + () + + + fontWeight + fontWeight + () + + + insertFromMimeData + insertFromMimeData + ( const QMimeData * source ) + + + insertHtml + insertHtml + ( const QString & text ) + + + insertPlainText + insertPlainText + ( const QString & text ) + + + loadResource + loadResource + ( int type, const QUrl & name ) + + + mergeCurrentCharFormat + mergeCurrentCharFormat + ( const QTextCharFormat & modifier ) + + + paste + paste + () + + + redoAvailable + redoAvailable + ( bool available ) + + + scrollToAnchor + scrollToAnchor + ( const QString & name ) + + + selectAll + selectAll + () + + + selectionChanged + selectionChanged + () + + + setAlignment + setAlignment + ( Qt::Alignment a ) + + + setCurrentCharFormat + setCurrentCharFormat + ( const QTextCharFormat & format ) + + + setCurrentFont + setCurrentFont + ( const QFont & f ) + + + setDocument + setDocument + ( QTextDocument * document ) + + + setFontFamily + setFontFamily + ( const QString & fontFamily ) + + + setFontItalic + setFontItalic + ( bool italic ) + + + setFontPointSize + setFontPointSize + ( qreal s ) + + + setFontUnderline + setFontUnderline + ( bool underline ) + + + setFontWeight + setFontWeight + ( int w ) + + + setPlainText + setPlainText + ( const QString & text ) + + + setTextColor + setTextColor + ( const QColor & c ) + + + setTextCursor + setTextCursor + ( const QTextCursor & cursor ) + + + textChanged + textChanged + () + + + textColor + textColor + () + + + textCursor + textCursor + () + + + toPlainText + toPlainText + () + + + undoAvailable + undoAvailable + ( bool available ) + + + zoomIn + zoomIn + ( int range = 1 ) + + + zoomOut + zoomOut + ( int range = 1 ) + + + KeyboardAction + KeyboardAction-enum + + + + QTextEdit + QTextEdit-4 + ( QWidget * parent, const char * name ) + + + bold + bold + () + + + color + color + () + + + currentColorChanged + currentColorChanged + ( const QColor & color ) + + + currentFontChanged + currentFontChanged + ( const QFont & font ) + + + doKeyboardAction + doKeyboardAction + ( KeyboardAction action ) + + + family + family + () + + + find + find-2 + ( const QString & exp, bool cs, bool wo ) + + + hasSelectedText + hasSelectedText + () + + + insert + insert + ( const QString & text ) + + + isModified + isModified + () + + + isRedoAvailable + isRedoAvailable + () + + + isUndoAvailable + isUndoAvailable + () + + + italic + italic + () + + + moveCursor + moveCursor + ( CursorAction action, QTextCursor::MoveMode mode = QTextCursor::MoveAnchor ) + + + moveCursor + moveCursor-2 + ( CursorAction action, bool select ) + + + pointSize + pointSize + () + + + redo + redo + () + + + selectedText + selectedText + () + + + setBold + setBold + ( bool b ) + + + setColor + setColor + ( const QColor & color ) + + + setFamily + setFamily + ( const QString & family ) + + + setItalic + setItalic + ( bool i ) + + + setModified + setModified + ( bool m = true ) + + + setPointSize + setPointSize + ( int size ) + + + setText + setText + ( const QString & text ) + + + setTextFormat + setTextFormat + ( Qt::TextFormat f ) + + + setUnderline + setUnderline + ( bool b ) + + + sync + sync + () + + + text + text + () + + + TextFormat + textFormat + QTextEdit::textFormat() + + + underline + underline + () + + + undo + undo + () + + + + QTextEncoder + qtextencoder.html + + QTextEncoder + QTextEncoder + ( const QTextCodec * codec ) + + + fromUnicode + fromUnicode + ( const QString & str ) + + + fromUnicode + fromUnicode-2 + ( const QChar * uc, int len ) + + + fromUnicode + fromUnicode-3 + ( const QString & uc, int & lenInOut ) + + + + QTextFormat + qtextformat.html + + FormatType + FormatType-enum + + + + ObjectTypes + ObjectTypes-enum + + + + Property + Property-enum + + + + QTextFormat + QTextFormat + () + + + QTextFormat + QTextFormat-2 + ( int type ) + + + QTextFormat + QTextFormat-3 + ( const QTextFormat & other ) + + + background + background + () + + + boolProperty + boolProperty + ( int propertyId ) + + + brushProperty + brushProperty + ( int propertyId ) + + + clearBackground + clearBackground + () + + + clearForeground + clearForeground + () + + + clearProperty + clearProperty + ( int propertyId ) + + + colorProperty + colorProperty + ( int propertyId ) + + + doubleProperty + doubleProperty + ( int propertyId ) + + + foreground + foreground + () + + + hasProperty + hasProperty + ( int propertyId ) + + + intProperty + intProperty + ( int propertyId ) + + + isBlockFormat + isBlockFormat + () + + + isCharFormat + isCharFormat + () + + + isFrameFormat + isFrameFormat + () + + + isImageFormat + isImageFormat + () + + + isListFormat + isListFormat + () + + + isTableFormat + isTableFormat + () + + + isValid + isValid + () + + + LayoutDirection + layoutDirection + QTextFormat::layoutDirection() + + + lengthProperty + lengthProperty + ( int propertyId ) + + + lengthVectorProperty + lengthVectorProperty + ( int propertyId ) + + + merge + merge + ( const QTextFormat & other ) + + + objectIndex + objectIndex + () + + + objectType + objectType + () + + + penProperty + penProperty + ( int propertyId ) + + + properties + properties + () + + + property + property + ( int propertyId ) + + + setBackground + setBackground + ( const QBrush & brush ) + + + setForeground + setForeground + ( const QBrush & brush ) + + + setLayoutDirection + setLayoutDirection + ( Qt::LayoutDirection direction ) + + + setObjectIndex + setObjectIndex + ( int index ) + + + setObjectType + setObjectType + ( int type ) + + + setProperty + setProperty + ( int propertyId, const QVariant & value ) + + + setProperty + setProperty-2 + ( int propertyId, const QVector<QTextLength> & value ) + + + stringProperty + stringProperty + ( int propertyId ) + + + toBlockFormat + toBlockFormat + () + + + toCharFormat + toCharFormat + () + + + toFrameFormat + toFrameFormat + () + + + toImageFormat + toImageFormat + () + + + toListFormat + toListFormat + () + + + toTableFormat + toTableFormat + () + + + type + type + () + + + operator + operator-QVariant + QVariant() + + + operator!= + operator-not-eq + ( const QTextFormat & other ) + + + operator= + operator-eq + ( const QTextFormat & other ) + + + operator== + operator-eq-eq + ( const QTextFormat & other ) + + + + QTextFragment + qtextfragment.html + + QTextFragment + QTextFragment-2 + () + + + QTextFragment + QTextFragment-3 + ( const QTextFragment & other ) + + + charFormat + charFormat + () + + + charFormatIndex + charFormatIndex + () + + + contains + contains + ( int position ) + + + isValid + isValid + () + + + length + length + () + + + position + position + () + + + text + text + () + + + operator!= + operator-not-eq + ( const QTextFragment & other ) + + + operator< + operator-lt + ( const QTextFragment & other ) + + + operator= + operator-eq + ( const QTextFragment & other ) + + + operator== + operator-eq-eq + ( const QTextFragment & other ) + + + + QTextFrameFormat + qtextframeformat.html + + Position + Position-enum + + + + QTextFrameFormat + QTextFrameFormat + () + + + border + border + () + + + height + height + () + + + isValid + isValid + () + + + margin + margin + () + + + padding + padding + () + + + position + position + () + + + setBorder + setBorder + ( qreal width ) + + + setHeight + setHeight + ( const QTextLength & height ) + + + setHeight + setHeight-2 + ( qreal height ) + + + setMargin + setMargin + ( qreal margin ) + + + setPadding + setPadding + ( qreal width ) + + + setPosition + setPosition + ( Position policy ) + + + setWidth + setWidth + ( const QTextLength & width ) + + + setWidth + setWidth-2 + ( qreal width ) + + + width + width + () + + + + QTextFrame + qtextframe.html + + Iterator + Iterator-typedef + + + + QTextFrame + QTextFrame + ( QTextDocument * document ) + + + begin + begin + () + + + childFrames + childFrames + () + + + end + end + () + + + firstCursorPosition + firstCursorPosition + () + + + firstPosition + firstPosition + () + + + frameFormat + frameFormat + () + + + lastCursorPosition + lastCursorPosition + () + + + lastPosition + lastPosition + () + + + parentFrame + parentFrame + () + + + setFrameFormat + setFrameFormat + ( const QTextFrameFormat & format ) + + + + QTextFrame::iterator + qtextframe-iterator.html + + iterator + iterator-2 + () + + + iterator + iterator-3 + ( const iterator & other ) + + + atEnd + atEnd + () + + + currentBlock + currentBlock + () + + + currentFrame + currentFrame + () + + + parentFrame + parentFrame + () + + + operator!= + operator-not-eq + ( const iterator & other ) + + + operator++ + operator-2b-2b + () + + + operator++ + operator-2b-2b-2 + ( int ) + + + operator-- + operator-- + () + + + operator-- + operator---2 + ( int ) + + + operator= + operator-eq + ( const iterator & other ) + + + operator== + operator-eq-eq + ( const iterator & other ) + + + + QTextImageFormat + qtextimageformat.html + + QTextImageFormat + QTextImageFormat + () + + + height + height + () + + + isValid + isValid + () + + + name + name + () + + + setHeight + setHeight + ( qreal height ) + + + setName + setName + ( const QString & name ) + + + setWidth + setWidth + ( qreal width ) + + + width + width + () + + + + QTextInlineObject + qtextinlineobject.html + + QTextInlineObject + QTextInlineObject + ( int i, QTextEngine * e ) + + + ascent + ascent + () + + + descent + descent + () + + + format + format + () + + + formatIndex + formatIndex + () + + + height + height + () + + + isValid + isValid + () + + + rect + rect + () + + + setAscent + setAscent + ( qreal a ) + + + setDescent + setDescent + ( qreal d ) + + + setWidth + setWidth + ( qreal w ) + + + LayoutDirection + textDirection + QTextInlineObject::textDirection() + + + textPosition + textPosition + () + + + width + width + () + + + + QTextIStream + qtextistream.html + + QTextIStream + QTextIStream + ( const QString * string ) + + + QTextIStream + QTextIStream-2 + ( QByteArray * byteArray ) + + + QTextIStream + QTextIStream-3 + ( FILE * file ) + + + + QTextLayout::FormatRange + qtextlayout-formatrange.html + + + QTextLayout + qtextlayout.html + + CursorMode + CursorMode-enum + + + + QTextLayout + QTextLayout + () + + + QTextLayout + QTextLayout-2 + ( const QString & text ) + + + QTextLayout + QTextLayout-3 + ( const QString & text, const QFont & font, QPaintDevice * paintdevice = 0 ) + + + additionalFormats + additionalFormats + () + + + beginLayout + beginLayout + () + + + boundingRect + boundingRect + () + + + cacheEnabled + cacheEnabled + () + + + clearAdditionalFormats + clearAdditionalFormats + () + + + createLine + createLine + () + + + draw + draw + ( QPainter * p, const QPointF & pos, const QVector<FormatRange> & selections = QVector<FormatRange>() + + + drawCursor + drawCursor + ( QPainter * painter, const QPointF & position, int cursorPosition ) + + + endLayout + endLayout + () + + + font + font + () + + + isValidCursorPosition + isValidCursorPosition + ( int pos ) + + + lineAt + lineAt + ( int i ) + + + lineCount + lineCount + () + + + lineForTextPosition + lineForTextPosition + ( int pos ) + + + maximumWidth + maximumWidth + () + + + minimumWidth + minimumWidth + () + + + nextCursorPosition + nextCursorPosition + ( int oldPos, CursorMode mode = SkipCharacters ) + + + position + position + () + + + preeditAreaPosition + preeditAreaPosition + () + + + preeditAreaText + preeditAreaText + () + + + previousCursorPosition + previousCursorPosition + ( int oldPos, CursorMode mode = SkipCharacters ) + + + setAdditionalFormats + setAdditionalFormats + ( const QList<FormatRange> & formatList ) + + + setCacheEnabled + setCacheEnabled + ( bool enable ) + + + setFont + setFont + ( const QFont & font ) + + + setPosition + setPosition + ( const QPointF & p ) + + + setPreeditArea + setPreeditArea + ( int position, const QString & text ) + + + setText + setText + ( const QString & string ) + + + setTextOption + setTextOption + ( const QTextOption & option ) + + + text + text + () + + + textOption + textOption + () + + + + QTextLength + qtextlength.html + + Type + Type-enum + + + + QTextLength + QTextLength + () + + + QTextLength + QTextLength-2 + ( Type type, qreal value ) + + + rawValue + rawValue + () + + + type + type + () + + + value + value + ( qreal maximumLength ) + + + operator + operator-QVariant + QVariant() + + + operator!= + operator-not-eq + ( const QTextLength & other ) + + + operator== + operator-eq-eq + ( const QTextLength & other ) + + + + QTextLine + qtextline.html + + CursorPosition + CursorPosition-enum + + + + Edge + Edge-enum + + + + QTextLine + QTextLine + () + + + ascent + ascent + () + + + cursorToX + cursorToX + ( int * cursorPos, Edge edge = Leading ) + + + cursorToX + cursorToX-2 + ( int cursorPos, Edge edge = Leading ) + + + descent + descent + () + + + draw + draw + ( QPainter * painter, const QPointF & position, const QTextLayout::FormatRange * selection = 0 ) + + + height + height + () + + + isValid + isValid + () + + + lineNumber + lineNumber + () + + + naturalTextRect + naturalTextRect + () + + + naturalTextWidth + naturalTextWidth + () + + + rect + rect + () + + + setLineWidth + setLineWidth + ( qreal width ) + + + setNumColumns + setNumColumns + ( int numColumns ) + + + setPosition + setPosition + ( const QPointF & pos ) + + + textLength + textLength + () + + + textStart + textStart + () + + + width + width + () + + + x + x + () + + + xToCursor + xToCursor + ( qreal x, CursorPosition cpos = CursorBetweenCharacters ) + + + y + y + () + + + + QTextListFormat + qtextlistformat.html + + Style + Style-enum + + + + QTextListFormat + QTextListFormat + () + + + indent + indent + () + + + isValid + isValid + () + + + setIndent + setIndent + ( int indentation ) + + + setStyle + setStyle + ( Style style ) + + + style + style + () + + + + QTextList + qtextlist.html + + add + add + ( const QTextBlock & block ) + + + count + count + () + + + format + format + () + + + item + item + ( int i ) + + + itemNumber + itemNumber + ( const QTextBlock & block ) + + + itemText + itemText + ( const QTextBlock & block ) + + + remove + remove + ( const QTextBlock & block ) + + + removeItem + removeItem + ( int i ) + + + setFormat + setFormat + ( const QTextListFormat & format ) + + + isEmpty + isEmpty + () + + + + QTextObject + qtextobject.html + + QTextObject + QTextObject + ( QTextDocument * document ) + + + document + document + () + + + format + format + () + + + formatIndex + formatIndex + () + + + objectIndex + objectIndex + () + + + setFormat + setFormat + ( const QTextFormat & format ) + + + + QTextOption + qtextoption.html + + WrapMode + WrapMode-enum + + + + QTextOption + QTextOption + () + + + QTextOption + QTextOption-2 + ( Qt::Alignment alignment ) + + + QTextOption + QTextOption-3 + ( const QTextOption & other ) + + + Alignment + alignment + QTextOption::alignment() + + + flags + flags + () + + + setAlignment + setAlignment + ( Qt::Alignment alignment ) + + + setFlags + setFlags + ( Flags flags ) + + + setTabArray + setTabArray + ( QList<qreal> tabStops ) + + + setTabStop + setTabStop + ( qreal tabStop ) + + + setTextDirection + setTextDirection + ( Qt::LayoutDirection direction ) + + + setUseDesignMetrics + setUseDesignMetrics + ( bool enable ) + + + setWrapMode + setWrapMode + ( WrapMode mode ) + + + tabArray + tabArray + () + + + tabStop + tabStop + () + + + LayoutDirection + textDirection + QTextOption::textDirection() + + + useDesignMetrics + useDesignMetrics + () + + + wrapMode + wrapMode + () + + + operator= + operator-eq + ( const QTextOption & other ) + + + + QTextOStream + qtextostream.html + + QTextOStream + QTextOStream + ( QString * string ) + + + QTextOStream + QTextOStream-2 + ( QByteArray * byteArray ) + + + QTextOStream + QTextOStream-3 + ( FILE * file ) + + + + QTextStream + qtextstream.html + + FieldAlignment + FieldAlignment-enum + + + + RealNumberNotation + RealNumberNotation-enum + + + + Status + Status-enum + + + + QTextStream + QTextStream + () + + + QTextStream + QTextStream-2 + ( QIODevice * device ) + + + QTextStream + QTextStream-3 + ( FILE * fileHandle, QIODevice::OpenMode openMode = QIODevice::ReadWrite ) + + + QTextStream + QTextStream-4 + ( QString * string, QIODevice::OpenMode openMode = QIODevice::ReadWrite ) + + + QTextStream + QTextStream-5 + ( QByteArray * array, QIODevice::OpenMode openMode = QIODevice::ReadWrite ) + + + QTextStream + QTextStream-6 + ( const QByteArray & array, QIODevice::OpenMode openMode = QIODevice::ReadOnly ) + + + atEnd + atEnd + () + + + autoDetectUnicode + autoDetectUnicode + () + + + codec + codec + () + + + device + device + () + + + fieldAlignment + fieldAlignment + () + + + fieldWidth + fieldWidth + () + + + flush + flush + () + + + generateByteOrderMark + generateByteOrderMark + () + + + integerBase + integerBase + () + + + numberFlags + numberFlags + () + + + padChar + padChar + () + + + read + read + ( qint64 maxlen ) + + + readAll + readAll + () + + + readLine + readLine + ( qint64 maxlen = 0 ) + + + realNumberNotation + realNumberNotation + () + + + realNumberPrecision + realNumberPrecision + () + + + reset + reset + () + + + resetStatus + resetStatus + () + + + seek + seek + ( qint64 pos ) + + + setAutoDetectUnicode + setAutoDetectUnicode + ( bool enabled ) + + + setCodec + setCodec + ( QTextCodec * codec ) + + + setCodec + setCodec-2 + ( const char * codecName ) + + + setDevice + setDevice + ( QIODevice * device ) + + + setFieldAlignment + setFieldAlignment + ( FieldAlignment mode ) + + + setFieldWidth + setFieldWidth + ( int width ) + + + setGenerateByteOrderMark + setGenerateByteOrderMark + ( bool generate ) + + + setIntegerBase + setIntegerBase + ( int base ) + + + setNumberFlags + setNumberFlags + ( NumberFlags flags ) + + + setPadChar + setPadChar + ( QChar ch ) + + + setRealNumberNotation + setRealNumberNotation + ( RealNumberNotation notation ) + + + setRealNumberPrecision + setRealNumberPrecision + ( int precision ) + + + setStatus + setStatus + ( Status status ) + + + setString + setString + ( QString * string, QIODevice::OpenMode openMode = QIODevice::ReadWrite ) + + + skipWhiteSpace + skipWhiteSpace + () + + + status + status + () + + + string + string + () + + + operator<< + operator-lt-lt + ( QChar c ) + + + operator<< + operator-lt-lt-2 + ( signed short i ) + + + operator<< + operator-lt-lt-3 + ( float f ) + + + operator<< + operator-lt-lt-4 + ( const QString & string ) + + + operator<< + operator-lt-lt-6 + ( char c ) + + + operator<< + operator-lt-lt-7 + ( unsigned short i ) + + + operator<< + operator-lt-lt-8 + ( signed int i ) + + + operator<< + operator-lt-lt-9 + ( unsigned int i ) + + + operator<< + operator-lt-lt-10 + ( signed long i ) + + + operator<< + operator-lt-lt-11 + ( unsigned long i ) + + + operator<< + operator-lt-lt-12 + ( qlonglong i ) + + + operator<< + operator-lt-lt-13 + ( qulonglong i ) + + + operator<< + operator-lt-lt-14 + ( double f ) + + + operator<< + operator-lt-lt-15 + ( const QByteArray & array ) + + + operator<< + operator-lt-lt-16 + ( const char * string ) + + + operator<< + operator-lt-lt-17 + ( const void * ptr ) + + + operator>> + operator-gt-gt + ( QChar & c ) + + + operator>> + operator-gt-gt-2 + ( signed short & i ) + + + operator>> + operator-gt-gt-3 + ( float & f ) + + + operator>> + operator-gt-gt-4 + ( QString & str ) + + + operator>> + operator-gt-gt-5 + ( char & c ) + + + operator>> + operator-gt-gt-6 + ( unsigned short & i ) + + + operator>> + operator-gt-gt-7 + ( signed int & i ) + + + operator>> + operator-gt-gt-8 + ( unsigned int & i ) + + + operator>> + operator-gt-gt-9 + ( signed long & i ) + + + operator>> + operator-gt-gt-10 + ( unsigned long & i ) + + + operator>> + operator-gt-gt-11 + ( qlonglong & i ) + + + operator>> + operator-gt-gt-12 + ( qulonglong & i ) + + + operator>> + operator-gt-gt-13 + ( double & f ) + + + operator>> + operator-gt-gt-14 + ( QByteArray & array ) + + + operator>> + operator-gt-gt-15 + ( char * c ) + + + Encoding + Encoding-enum + + + + fill + fill + ( int f ) + + + flags + flags + () + + + flags + flags-2 + ( int f ) + + + precision + precision + ( int p ) + + + read + read-2 + () + + + setEncoding + setEncoding + ( Encoding encoding ) + + + setf + setf + ( int bits ) + + + setf + setf-2 + ( int bits, int mask ) + + + unsetDevice + unsetDevice + () + + + unsetf + unsetf + ( int bits ) + + + width + width + ( int w ) + + + adjustfield + adjustfield-var + + + + basefield + basefield-var + + + + bin + bin-var + + + + dec + dec-var + + + + fixed + fixed-var + + + + floatfield + floatfield-var + + + + hex + hex-var + + + + internal + internal-var + + + + left + left-var + + + + oct + oct-var + + + + right + right-var + + + + scientific + scientific-var + + + + showbase + showbase-var + + + + showpoint + showpoint-var + + + + showpos + showpos-var + + + + skipws + skipws-var + + + + uppercase + uppercase-var + + + + + QTextTableCell + qtexttablecell.html + + QTextTableCell + QTextTableCell + () + + + QTextTableCell + QTextTableCell-2 + ( const QTextTableCell & other ) + + + iterator + begin + QTextTableCell::begin() + + + column + column + () + + + columnSpan + columnSpan + () + + + iterator + end + QTextTableCell::end() + + + firstCursorPosition + firstCursorPosition + () + + + format + format + () + + + isValid + isValid + () + + + lastCursorPosition + lastCursorPosition + () + + + row + row + () + + + rowSpan + rowSpan + () + + + operator!= + operator-not-eq + ( const QTextTableCell & other ) + + + operator= + operator-eq + ( const QTextTableCell & other ) + + + operator== + operator-eq-eq + ( const QTextTableCell & other ) + + + + QTextTableFormat + qtexttableformat.html + + QTextTableFormat + QTextTableFormat + () + + + Alignment + alignment + QTextTableFormat::alignment() + + + cellPadding + cellPadding + () + + + cellSpacing + cellSpacing + () + + + clearColumnWidthConstraints + clearColumnWidthConstraints + () + + + columnWidthConstraints + columnWidthConstraints + () + + + columns + columns + () + + + isValid + isValid + () + + + setAlignment + setAlignment + ( Qt::Alignment alignment ) + + + setCellPadding + setCellPadding + ( qreal padding ) + + + setCellSpacing + setCellSpacing + ( qreal spacing ) + + + setColumnWidthConstraints + setColumnWidthConstraints + ( const QVector<QTextLength> & constraints ) + + + setColumns + setColumns + ( int columns ) + + + + QTextTable + qtexttable.html + + cellAt + cellAt + ( int row, int column ) + + + cellAt + cellAt-2 + ( int position ) + + + cellAt + cellAt-3 + ( const QTextCursor & cursor ) + + + columns + columns + () + + + format + format + () + + + insertColumns + insertColumns + ( int index, int columns ) + + + insertRows + insertRows + ( int index, int rows ) + + + mergeCells + mergeCells + ( int row, int column, int numRows, int numCols ) + + + mergeCells + mergeCells-2 + ( const QTextCursor & cursor ) + + + removeColumns + removeColumns + ( int index, int columns ) + + + removeRows + removeRows + ( int index, int rows ) + + + resize + resize + ( int rows, int columns ) + + + rowEnd + rowEnd + ( const QTextCursor & cursor ) + + + rowStart + rowStart + ( const QTextCursor & cursor ) + + + rows + rows + () + + + setFormat + setFormat + ( const QTextTableFormat & format ) + + + splitCell + splitCell + ( int row, int column, int numRows, int numCols ) + + + + QThread + qthread.html + + Priority + Priority-enum + + + + QThread + QThread + ( QObject * parent = 0 ) + + + currentThread + currentThread + () + + + HANDLE + currentThreadId + QThread::currentThreadId() + + + exec + exec + () + + + exit + exit + ( int returnCode = 0 ) + + + finished + finished + () + + + isFinished + isFinished + () + + + isRunning + isRunning + () + + + msleep + msleep + ( unsigned long msecs ) + + + priority + priority + () + + + quit + quit + () + + + run + run + () + + + setPriority + setPriority + ( Priority priority ) + + + setStackSize + setStackSize + ( uint stackSize ) + + + setTerminationEnabled + setTerminationEnabled + ( bool enabled = true ) + + + sleep + sleep + ( unsigned long secs ) + + + stackSize + stackSize + () + + + start + start + ( QThread::Priority = InheritPriority ) + + + started + started + () + + + terminate + terminate + () + + + terminated + terminated + () + + + usleep + usleep + ( unsigned long usecs ) + + + wait + wait + ( unsigned long time = ULONG_MAX ) + + + finished + finished-2 + () + + + running + running + () + + + + QThreadStorage + qthreadstorage.html + + QThreadStorage + QThreadStorage + () + + + hasLocalData + hasLocalData + () + + + localData + localData + () + + + localData + localData-2 + () + + + setLocalData + setLocalData + ( T data ) + + + AnchorAttribute + AnchorAttribute-enum + + + + ArrowType + ArrowType-enum + + + + AspectRatioMode + AspectRatioMode-enum + + + + BGMode + BGMode-enum + + + + BrushStyle + BrushStyle-enum + + + + CaseSensitivity + CaseSensitivity-enum + + + + CheckState + CheckState-enum + + + + ClipOperation + ClipOperation-enum + + + + ConnectionType + ConnectionType-enum + + + + ContextMenuPolicy + ContextMenuPolicy-enum + + + + Corner + Corner-enum + + + + CursorShape + CursorShape-enum + + + + DayOfWeek + DayOfWeek-enum + + + + Dock + Dock-enum + + + + FillRule + FillRule-enum + + + + FocusPolicy + FocusPolicy-enum + + + + FocusReason + FocusReason-enum + + + + GlobalColor + GlobalColor-enum + + + + HANDLE + HANDLE-typedef + + + + HitTestAccuracy + HitTestAccuracy-enum + + + + InputMethodQuery + InputMethodQuery-enum + + + + ItemDataRole + ItemDataRole-enum + + + + Key + Key-enum + + + + LayoutDirection + LayoutDirection-enum + + + + Modifier + Modifier-enum + + + + PenCapStyle + PenCapStyle-enum + + + + PenJoinStyle + PenJoinStyle-enum + + + + PenStyle + PenStyle-enum + + + + ScrollBarPolicy + ScrollBarPolicy-enum + + + + ShortcutContext + ShortcutContext-enum + + + + SortOrder + SortOrder-enum + + + + TextElideMode + TextElideMode-enum + + + + TextFlag + TextFlag-enum + + + + TextFormat + TextFormat-enum + + + + TimeSpec + TimeSpec-enum + + + + ToolButtonStyle + ToolButtonStyle-enum + + + + TransformationMode + TransformationMode-enum + + + + UIEffect + UIEffect-enum + + + + WFlags + WFlags-typedef + + + + WhiteSpaceMode + WhiteSpaceMode-enum + + + + WidgetAttribute + WidgetAttribute-enum + + + + WindowModality + WindowModality-enum + + + + convertFromPlainText + convertFromPlainText + ( const QString & plain, WhiteSpaceMode mode = WhiteSpacePre ) + + + escape + escape + ( const QString & plain ) + + + mightBeRichText + mightBeRichText + ( const QString & text ) + + + + QTimeEdit + qtimeedit.html + + QTimeEdit + QTimeEdit + ( QWidget * parent = 0 ) + + + QTimeEdit + QTimeEdit-2 + ( const QTime & time, QWidget * parent = 0 ) + + + + QTime + qtime.html + + QTime + QTime + () + + + QTime + QTime-2 + ( int h, int m, int s = 0, int ms = 0 ) + + + addMSecs + addMSecs + ( int ms ) + + + addSecs + addSecs + ( int nsecs ) + + + currentTime + currentTime-2 + () + + + elapsed + elapsed + () + + + fromString + fromString + ( const QString & string, Qt::DateFormat format = Qt::TextDate ) + + + fromString + fromString-2 + ( const QString & string, const QString & format ) + + + hour + hour + () + + + isNull + isNull + () + + + isValid + isValid + () + + + isValid + isValid-2 + ( int h, int m, int s, int ms = 0 ) + + + minute + minute + () + + + msec + msec + () + + + msecsTo + msecsTo + ( const QTime & t ) + + + restart + restart + () + + + second + second + () + + + secsTo + secsTo + ( const QTime & t ) + + + setHMS + setHMS + ( int h, int m, int s, int ms = 0 ) + + + start + start + () + + + toString + toString + ( const QString & format ) + + + toString + toString-2 + ( Qt::DateFormat f = Qt::TextDate ) + + + operator!= + operator-not-eq + ( const QTime & t ) + + + operator< + operator-lt + ( const QTime & t ) + + + operator<= + operator-lt-eq + ( const QTime & t ) + + + operator== + operator-eq-eq + ( const QTime & t ) + + + operator> + operator-gt + ( const QTime & t ) + + + operator>= + operator-gt-eq + ( const QTime & t ) + + + currentTime + currentTime + ( Qt::TimeSpec spec ) + + + + QTimerEvent + qtimerevent.html + + QTimerEvent + QTimerEvent + ( int timerId ) + + + timerId + timerId + () + + + + QTimer + qtimer.html + + QTimer + QTimer + ( QObject * parent = 0 ) + + + isActive + isActive + () + + + singleShot + singleShot + ( int msec, QObject * receiver, const char * member ) + + + start + start + ( int msec ) + + + start + start-2 + () + + + stop + stop + () + + + timeout + timeout + () + + + timerId + timerId + () + + + QTimer + QTimer-2 + ( QObject * parent, const char * name ) + + + changeInterval + changeInterval + ( int msec ) + + + start + start-3 + ( int msec, bool sshot ) + + + + QToolBar + qtoolbar.html + + ToolBarAreas + allowedAreas-prop + + + + Orientation + orientation-prop + + + + ToolButtonStyle + toolButtonStyle-prop + + + + QToolBar + QToolBar + ( const QString & title, QWidget * parent = 0 ) + + + QToolBar + QToolBar-2 + ( QWidget * parent = 0 ) + + + actionAt + actionAt + ( const QPoint & p ) + + + actionAt + actionAt-2 + ( int x, int y ) + + + actionTriggered + actionTriggered + ( QAction * action ) + + + addAction + addAction + ( const QString & text ) + + + addAction + addAction-2 + ( const QIcon & icon, const QString & text ) + + + addAction + addAction-3 + ( const QString & text, const QObject * receiver, const char * member ) + + + addAction + addAction-4 + ( const QIcon & icon, const QString & text, const QObject * receiver, const char * member ) + + + addSeparator + addSeparator + () + + + addWidget + addWidget + ( QWidget * widget ) + + + allowedAreasChanged + allowedAreasChanged + ( Qt::ToolBarAreas allowedAreas ) + + + clear + clear + () + + + iconSizeChanged + iconSizeChanged + ( const QSize & iconSize ) + + + insertSeparator + insertSeparator + ( QAction * before ) + + + insertWidget + insertWidget + ( QAction * before, QWidget * widget ) + + + isAreaAllowed + isAreaAllowed + ( Qt::ToolBarArea area ) + + + movableChanged + movableChanged + ( bool movable ) + + + orientationChanged + orientationChanged + ( Qt::Orientation orientation ) + + + toggleViewAction + toggleViewAction + () + + + toolButtonStyleChanged + toolButtonStyleChanged + ( Qt::ToolButtonStyle toolButtonStyle ) + + + QToolBar + QToolBar-3 + ( QWidget * parent, const char * name ) + + + label + label + () + + + setLabel + setLabel + ( const QString & label ) + + + + QToolBox + qtoolbox.html + + QToolBox + QToolBox + ( QWidget * parent = 0, Qt::WFlags f = 0 ) + + + addItem + addItem + ( QWidget * widget, const QIcon & iconSet, const QString & text ) + + + addItem + addItem-2 + ( QWidget * w, const QString & text ) + + + currentChanged + currentChanged + ( int index ) + + + currentWidget + currentWidget + () + + + indexOf + indexOf + ( QWidget * widget ) + + + insertItem + insertItem + ( int index, QWidget * widget, const QIcon & icon, const QString & text ) + + + insertItem + insertItem-2 + ( int index, QWidget * widget, const QString & text ) + + + isItemEnabled + isItemEnabled + ( int index ) + + + itemIcon + itemIcon + ( int index ) + + + itemInserted + itemInserted + ( int index ) + + + itemRemoved + itemRemoved + ( int index ) + + + itemText + itemText + ( int index ) + + + itemToolTip + itemToolTip + ( int index ) + + + removeItem + removeItem + ( int index ) + + + setCurrentWidget + setCurrentWidget + ( QWidget * widget ) + + + setItemEnabled + setItemEnabled + ( int index, bool enabled ) + + + setItemIcon + setItemIcon + ( int index, const QIcon & icon ) + + + setItemText + setItemText + ( int index, const QString & text ) + + + setItemToolTip + setItemToolTip + ( int index, const QString & toolTip ) + + + widget + widget + ( int index ) + + + QToolBox + QToolBox-2 + ( QWidget * parent, const char * name, Qt::WFlags f = 0 ) + + + currentItem + currentItem + () + + + item + item + ( int index ) + + + itemIconSet + itemIconSet + ( int index ) + + + itemLabel + itemLabel + ( int index ) + + + removeItem + removeItem-2 + ( QWidget * widget ) + + + setCurrentItem + setCurrentItem + ( QWidget * widget ) + + + setItemIconSet + setItemIconSet + ( int index, const QIcon & icon ) + + + setItemLabel + setItemLabel + ( int index, const QString & text ) + + + + QToolButton + qtoolbutton.html + + ToolButtonPopupMode + ToolButtonPopupMode-enum + + + + ArrowType + arrowType-prop + + + + ToolButtonStyle + toolButtonStyle-prop + + + + QToolButton + QToolButton + ( QWidget * parent = 0 ) + + + defaultAction + defaultAction + () + + + menu + menu + () + + + paintEvent + paintEvent + ( QPaintEvent * event ) + + + setDefaultAction + setDefaultAction + ( QAction * action ) + + + setMenu + setMenu + ( QMenu * menu ) + + + showMenu + showMenu + () + + + triggered + triggered + ( QAction * action ) + + + TextPosition + TextPosition-enum + + + + QToolButton + QToolButton-3 + ( QWidget * parent, const char * name ) + + + QToolButton + QToolButton-4 + ( Qt::ArrowType type, QWidget * parent, const char * name ) + + + QToolButton + QToolButton-5 + ( const QIcon & icon, const QString & textLabel, const QString & statusTip, QObject * receiver, const char * slot, QWidget * parent, const char * name = 0 ) + + + iconSet + iconSet + () + + + iconSet + iconSet-2 + ( bool on ) + + + offIconSet + offIconSet + () + + + onIconSet + onIconSet + () + + + openPopup + openPopup + () + + + popup + popup + () + + + popupDelay + popupDelay + () + + + setIconSet + setIconSet + ( const QIcon & icon ) + + + setIconSet + setIconSet-2 + ( const QIcon & set, bool on ) + + + setOffIconSet + setOffIconSet + ( const QIcon & set ) + + + setOnIconSet + setOnIconSet + ( const QIcon & set ) + + + setPixmap + setPixmap + ( const QPixmap & pixmap ) + + + setPopup + setPopup + ( QMenu * popup ) + + + setPopupDelay + setPopupDelay + ( int delay ) + + + setTextLabel + setTextLabel + ( const QString & text, bool tooltip = true ) + + + setTextPosition + setTextPosition + ( QToolButton::TextPosition pos ) + + + setUsesBigPixmap + setUsesBigPixmap + ( bool enable ) + + + setUsesTextLabel + setUsesTextLabel + ( bool enable ) + + + textLabel + textLabel + () + + + textPosition + textPosition + () + + + usesBigPixmap + usesBigPixmap + () + + + usesTextLabel + usesTextLabel + () + + + + QToolTip + qtooltip.html + + palette + palette + () + + + showText + showText + ( const QPoint & pos, const QString & text, QWidget * w = 0 ) + + + add + add + ( QWidget * widget, const QString & text ) + + + add + add-2 + ( QWidget * widget, const QRect & rect, const QString & text ) + + + remove + remove + ( QWidget * widget ) + + + BackgroundMode + BackgroundMode-enum + + + + ButtonState + ButtonState-typedef + + + + ButtonState_enum + ButtonState_enum-enum + + + + GUIStyle + GUIStyle-enum + + + + MacintoshVersion + MacintoshVersion-enum + + + + PaintUnit + PaintUnit-enum + + + + ScaleMode + ScaleMode-typedef + + + + TextFlags + TextFlags-typedef + + + + ToolBarDock + ToolBarDock-typedef + + + + WindowsVersion + WindowsVersion-enum + + + + + QTransformedScreen + qtransformedscreen.html + + Transformation + Transformation-enum + + + + QTransformedScreen + QTransformedScreen + ( int displayId ) + + + setTransformation + setTransformation + ( Transformation transformation ) + + + transformation + transformation + () + + + + QTranslator + qtranslator.html + + QTranslator + QTranslator + ( QObject * parent = 0 ) + + + isEmpty + isEmpty + () + + + load + load + ( const QString & filename, const QString & directory = QString() + + + load + load-2 + ( const uchar * data, int len ) + + + translate + translate + ( const char * context, const char * sourceText, const char * comment = 0 ) + + + QTranslator + QTranslator-2 + ( QObject * parent, const char * name ) + + + find + find + ( const char * context, const char * sourceText, const char * comment = 0 ) + + + + QTreeView + qtreeview.html + + QTreeView + QTreeView + ( QWidget * parent = 0 ) + + + collapse + collapse + ( const QModelIndex & index ) + + + collapsed + collapsed + ( const QModelIndex & index ) + + + columnAt + columnAt + ( int x ) + + + columnCountChanged + columnCountChanged + ( int oldCount, int newCount ) + + + columnMoved + columnMoved + () + + + columnResized + columnResized + ( int column, int oldSize, int newSize ) + + + columnViewportPosition + columnViewportPosition + ( int column ) + + + columnWidth + columnWidth + ( int column ) + + + doItemsLayout + doItemsLayout + () + + + drawBranches + drawBranches + ( QPainter * painter, const QRect & rect, const QModelIndex & index ) + + + drawRow + drawRow + ( QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index ) + + + expand + expand + ( const QModelIndex & index ) + + + expanded + expanded + ( const QModelIndex & index ) + + + header + header + () + + + hideColumn + hideColumn + ( int column ) + + + horizontalOffset + horizontalOffset + () + + + indexAbove + indexAbove + ( const QModelIndex & index ) + + + indexBelow + indexBelow + ( const QModelIndex & index ) + + + indexRowSizeHint + indexRowSizeHint + ( const QModelIndex & index ) + + + isColumnHidden + isColumnHidden + ( int column ) + + + isExpanded + isExpanded + ( const QModelIndex & index ) + + + isRowHidden + isRowHidden + ( int row, const QModelIndex & parent ) + + + moveCursor + moveCursor + ( CursorAction cursorAction, Qt::KeyboardModifiers modifiers ) + + + resizeColumnToContents + resizeColumnToContents + ( int column ) + + + rowsAboutToBeRemoved + rowsAboutToBeRemoved + ( const QModelIndex & parent, int start, int end ) + + + rowsInserted + rowsInserted + ( const QModelIndex & parent, int start, int end ) + + + rowsRemoved + rowsRemoved + ( const QModelIndex & parent, int start, int end ) + + + scrollContentsBy + scrollContentsBy + ( int dx, int dy ) + + + scrollTo + scrollTo + ( const QModelIndex & index, ScrollHint hint = EnsureVisible ) + + + selectAll + selectAll + () + + + setColumnHidden + setColumnHidden + ( int column, bool hide ) + + + setExpanded + setExpanded + ( const QModelIndex & index, bool expanded ) + + + setHeader + setHeader + ( QHeaderView * header ) + + + setRowHidden + setRowHidden + ( int row, const QModelIndex & parent, bool hide ) + + + setSelection + setSelection + ( const QRect & rect, QItemSelectionModel::SelectionFlags command ) + + + showColumn + showColumn + ( int column ) + + + sizeHintForColumn + sizeHintForColumn + ( int column ) + + + sortByColumn + sortByColumn + ( int column ) + + + verticalOffset + verticalOffset + () + + + visualRect + visualRect + ( const QModelIndex & index ) + + + visualRegionForSelection + visualRegionForSelection + ( const QItemSelection & selection ) + + + + QTreeWidget + qtreewidget.html + + QTreeWidget + QTreeWidget + ( QWidget * parent = 0 ) + + + addTopLevelItem + addTopLevelItem + ( QTreeWidgetItem * item ) + + + addTopLevelItems + addTopLevelItems + ( const QList<QTreeWidgetItem *> & items ) + + + clear + clear + () + + + closePersistentEditor + closePersistentEditor + ( QTreeWidgetItem * item, int column = 0 ) + + + collapseItem + collapseItem + ( const QTreeWidgetItem * item ) + + + currentColumn + currentColumn + () + + + currentItem + currentItem + () + + + currentItemChanged + currentItemChanged + ( QTreeWidgetItem * current, QTreeWidgetItem * previous ) + + + dropMimeData + dropMimeData + ( QTreeWidgetItem * parent, int index, const QMimeData * data, Qt::DropAction action ) + + + editItem + editItem + ( QTreeWidgetItem * item, int column = 0 ) + + + event + event + ( QEvent * e ) + + + expandItem + expandItem + ( const QTreeWidgetItem * item ) + + + findItems + findItems + ( const QString & text, Qt::MatchFlags flags, int column = 0 ) + + + headerItem + headerItem + () + + + indexFromItem + indexFromItem + ( QTreeWidgetItem * item, int column = 0 ) + + + indexOfTopLevelItem + indexOfTopLevelItem + ( QTreeWidgetItem * item ) + + + insertTopLevelItem + insertTopLevelItem + ( int index, QTreeWidgetItem * item ) + + + insertTopLevelItems + insertTopLevelItems + ( int index, const QList<QTreeWidgetItem *> & items ) + + + isItemExpanded + isItemExpanded + ( const QTreeWidgetItem * item ) + + + isItemHidden + isItemHidden + ( const QTreeWidgetItem * item ) + + + isItemSelected + isItemSelected + ( const QTreeWidgetItem * item ) + + + itemActivated + itemActivated + ( QTreeWidgetItem * item, int column ) + + + itemAt + itemAt + ( const QPoint & p ) + + + itemAt + itemAt-2 + ( int x, int y ) + + + itemChanged + itemChanged + ( QTreeWidgetItem * item, int column ) + + + itemClicked + itemClicked + ( QTreeWidgetItem * item, int column ) + + + itemCollapsed + itemCollapsed + ( QTreeWidgetItem * item ) + + + itemDoubleClicked + itemDoubleClicked + ( QTreeWidgetItem * item, int column ) + + + itemEntered + itemEntered + ( QTreeWidgetItem * item, int column ) + + + itemExpanded + itemExpanded + ( QTreeWidgetItem * item ) + + + itemFromIndex + itemFromIndex + ( const QModelIndex & index ) + + + itemPressed + itemPressed + ( QTreeWidgetItem * item, int column ) + + + itemSelectionChanged + itemSelectionChanged + () + + + itemWidget + itemWidget + ( QTreeWidgetItem * item, int column ) + + + items + items + ( const QMimeData * data ) + + + mimeData + mimeData + ( const QList<QTreeWidgetItem *> items ) + + + mimeTypes + mimeTypes + () + + + openPersistentEditor + openPersistentEditor + ( QTreeWidgetItem * item, int column = 0 ) + + + scrollToItem + scrollToItem + ( const QTreeWidgetItem * item, QAbstractItemView::ScrollHint hint = EnsureVisible ) + + + selectedItems + selectedItems + () + + + setCurrentItem + setCurrentItem + ( QTreeWidgetItem * item ) + + + setCurrentItem + setCurrentItem-2 + ( QTreeWidgetItem * item, int column ) + + + setHeaderItem + setHeaderItem + ( QTreeWidgetItem * item ) + + + setHeaderLabels + setHeaderLabels + ( const QStringList & labels ) + + + setItemExpanded + setItemExpanded + ( const QTreeWidgetItem * item, bool expand ) + + + setItemHidden + setItemHidden + ( const QTreeWidgetItem * item, bool hide ) + + + setItemSelected + setItemSelected + ( const QTreeWidgetItem * item, bool select ) + + + setItemWidget + setItemWidget + ( QTreeWidgetItem * item, int column, QWidget * widget ) + + + sortColumn + sortColumn + () + + + sortItems + sortItems + ( int column, Qt::SortOrder order ) + + + DropActions + supportedDropActions + QTreeWidget::supportedDropActions() + + + takeTopLevelItem + takeTopLevelItem + ( int index ) + + + topLevelItem + topLevelItem + ( int index ) + + + visualItemRect + visualItemRect + ( const QTreeWidgetItem * item ) + + + + QTreeWidgetItem + qtreewidgetitem.html + + QTreeWidgetItem + QTreeWidgetItem + ( int type = Type ) + + + QTreeWidgetItem + QTreeWidgetItem-2 + ( const QStringList & strings, int type = Type ) + + + QTreeWidgetItem + QTreeWidgetItem-3 + ( QTreeWidget * parent, int type = Type ) + + + QTreeWidgetItem + QTreeWidgetItem-4 + ( QTreeWidget * parent, const QStringList & strings, int type = Type ) + + + QTreeWidgetItem + QTreeWidgetItem-5 + ( QTreeWidget * parent, QTreeWidgetItem * preceding, int type = Type ) + + + QTreeWidgetItem + QTreeWidgetItem-6 + ( QTreeWidgetItem * parent, int type = Type ) + + + QTreeWidgetItem + QTreeWidgetItem-7 + ( QTreeWidgetItem * parent, const QStringList & strings, int type = Type ) + + + QTreeWidgetItem + QTreeWidgetItem-8 + ( QTreeWidgetItem * parent, QTreeWidgetItem * preceding, int type = Type ) + + + QTreeWidgetItem + QTreeWidgetItem-9 + ( const QTreeWidgetItem & other ) + + + addChild + addChild + ( QTreeWidgetItem * child ) + + + addChildren + addChildren + ( const QList<QTreeWidgetItem *> & children ) + + + backgroundColor + backgroundColor + ( int column ) + + + CheckState + checkState + QTreeWidgetItem::checkState( int column ) + + + child + child + ( int index ) + + + childCount + childCount + () + + + clone + clone + () + + + columnCount + columnCount + () + + + data + data + ( int column, int role ) + + + ItemFlags + flags + QTreeWidgetItem::flags() + + + font + font + ( int column ) + + + icon + icon + ( int column ) + + + indexOfChild + indexOfChild + ( QTreeWidgetItem * child ) + + + insertChild + insertChild + ( int index, QTreeWidgetItem * child ) + + + insertChildren + insertChildren + ( int index, const QList<QTreeWidgetItem *> & children ) + + + parent + parent + () + + + read + read + ( QDataStream & in ) + + + setBackgroundColor + setBackgroundColor + ( int column, const QColor & color ) + + + setCheckState + setCheckState + ( int column, Qt::CheckState state ) + + + setData + setData + ( int column, int role, const QVariant & value ) + + + setFlags + setFlags + ( Qt::ItemFlags flags ) + + + setFont + setFont + ( int column, const QFont & font ) + + + setIcon + setIcon + ( int column, const QIcon & icon ) + + + setSizeHint + setSizeHint + ( int column, const QSize & size ) + + + setStatusTip + setStatusTip + ( int column, const QString & statusTip ) + + + setText + setText + ( int column, const QString & text ) + + + setTextAlignment + setTextAlignment + ( int column, int alignment ) + + + setTextColor + setTextColor + ( int column, const QColor & color ) + + + setToolTip + setToolTip + ( int column, const QString & toolTip ) + + + setWhatsThis + setWhatsThis + ( int column, const QString & whatsThis ) + + + sizeHint + sizeHint + ( int column ) + + + statusTip + statusTip + ( int column ) + + + takeChild + takeChild + ( int index ) + + + takeChildren + takeChildren + () + + + text + text + ( int column ) + + + textAlignment + textAlignment + ( int column ) + + + textColor + textColor + ( int column ) + + + toolTip + toolTip + ( int column ) + + + treeWidget + treeWidget + () + + + type + type + () + + + whatsThis + whatsThis + ( int column ) + + + write + write + ( QDataStream & out ) + + + operator< + operator-lt + ( const QTreeWidgetItem & other ) + + + operator= + operator-eq + ( const QTreeWidgetItem & other ) + + + Type + Type-var + + + + UserType + UserType-var + + + + + QTreeWidgetItemIterator + qtreewidgetitemiterator.html + + QTreeWidgetItemIterator + QTreeWidgetItemIterator + ( const QTreeWidgetItemIterator & it ) + + + QTreeWidgetItemIterator + QTreeWidgetItemIterator-2 + ( QTreeWidget * widget, IteratorFlags flags = All ) + + + QTreeWidgetItemIterator + QTreeWidgetItemIterator-3 + ( QTreeWidgetItem * item, IteratorFlags flags = All ) + + + operator* + operator-2a + () + + + operator++ + operator-2b-2b + () + + + operator++ + operator-2b-2b-2 + ( int ) + + + operator+= + operator-2b-eq + ( int n ) + + + operator-- + operator-- + () + + + operator-- + operator---2 + ( int ) + + + operator-= + operator--eq + ( int n ) + + + operator= + operator-eq + ( const QTreeWidgetItemIterator & it ) + + + + QUdpSocket + qudpsocket.html + + QUdpSocket + QUdpSocket + ( QObject * parent = 0 ) + + + bind + bind + ( const QHostAddress & address, quint16 port ) + + + bind + bind-2 + ( const QHostAddress & address, quint16 port, BindMode mode ) + + + bind + bind-3 + ( quint16 port = 0 ) + + + bind + bind-4 + ( quint16 port, BindMode mode ) + + + hasPendingDatagrams + hasPendingDatagrams + () + + + pendingDatagramSize + pendingDatagramSize + () + + + readDatagram + readDatagram + ( char * data, qint64 maxSize, QHostAddress * address = 0, quint16 * port = 0 ) + + + writeDatagram + writeDatagram + ( const char * data, qint64 size, const QHostAddress & address, quint16 port ) + + + writeDatagram + writeDatagram-2 + ( const QByteArray & datagram, const QHostAddress & host, quint16 port ) + + + + QUiLoader + quiloader.html + + QUiLoader + QUiLoader + ( QObject * parent = 0 ) + + + addPluginPath + addPluginPath + ( const QString & path ) + + + availableWidgets + availableWidgets + () + + + clearPluginPaths + clearPluginPaths + () + + + createAction + createAction + ( QObject * parent = 0, const QString & name = QString() + + + createActionGroup + createActionGroup + ( QObject * parent = 0, const QString & name = QString() + + + createLayout + createLayout + ( const QString & className, QObject * parent = 0, const QString & name = QString() + + + createWidget + createWidget + ( const QString & className, QWidget * parent = 0, const QString & name = QString() + + + load + load + ( QIODevice * device, QWidget * parentWidget = 0 ) + + + pluginPaths + pluginPaths + () + + + + QUrl + qurl.html + + ParsingMode + ParsingMode-enum + + + + QUrl + QUrl + () + + + QUrl + QUrl-2 + ( const QString & url ) + + + QUrl + QUrl-3 + ( const QUrl & other ) + + + QUrl + QUrl-4 + ( const QString & url, ParsingMode parsingMode ) + + + addQueryItem + addQueryItem + ( const QString & key, const QString & value ) + + + allQueryItemValues + allQueryItemValues + ( const QString & key ) + + + authority + authority + () + + + clear + clear + () + + + encodedQuery + encodedQuery + () + + + fragment + fragment + () + + + fromEncoded + fromEncoded + ( const QByteArray & input ) + + + fromEncoded + fromEncoded-2 + ( const QByteArray & input, ParsingMode parsingMode ) + + + fromLocalFile + fromLocalFile + ( const QString & localFile ) + + + fromPercentEncoding + fromPercentEncoding + ( const QByteArray & input ) + + + fromPunycode + fromPunycode + ( const QByteArray & pc ) + + + hasQueryItem + hasQueryItem + ( const QString & key ) + + + host + host + () + + + isEmpty + isEmpty + () + + + isParentOf + isParentOf + ( const QUrl & childUrl ) + + + isRelative + isRelative + () + + + isValid + isValid + () + + + password + password + () + + + path + path + () + + + port + port + () + + + port + port-2 + ( int defaultPort ) + + + queryItemValue + queryItemValue + ( const QString & key ) + + + queryItems + queryItems + () + + + queryPairDelimiter + queryPairDelimiter + () + + + queryValueDelimiter + queryValueDelimiter + () + + + removeAllQueryItems + removeAllQueryItems + ( const QString & key ) + + + removeQueryItem + removeQueryItem + ( const QString & key ) + + + resolved + resolved + ( const QUrl & relative ) + + + scheme + scheme + () + + + setAuthority + setAuthority + ( const QString & authority ) + + + setEncodedQuery + setEncodedQuery + ( const QByteArray & query ) + + + setEncodedUrl + setEncodedUrl + ( const QByteArray & encodedUrl ) + + + setEncodedUrl + setEncodedUrl-2 + ( const QByteArray & encodedUrl, ParsingMode parsingMode ) + + + setFragment + setFragment + ( const QString & fragment ) + + + setHost + setHost + ( const QString & host ) + + + setPassword + setPassword + ( const QString & password ) + + + setPath + setPath + ( const QString & path ) + + + setPort + setPort + ( int port ) + + + setQueryDelimiters + setQueryDelimiters + ( char valueDelimiter, char pairDelimiter ) + + + setQueryItems + setQueryItems + ( const QList<QPair<QString, QString> > & query ) + + + setScheme + setScheme + ( const QString & scheme ) + + + setUrl + setUrl + ( const QString & url ) + + + setUrl + setUrl-2 + ( const QString & url, ParsingMode parsingMode ) + + + setUserInfo + setUserInfo + ( const QString & userInfo ) + + + setUserName + setUserName + ( const QString & userName ) + + + toEncoded + toEncoded + ( FormattingOptions options = None ) + + + toLocalFile + toLocalFile + () + + + toPercentEncoding + toPercentEncoding + ( const QString & input, const QByteArray & exclude = QByteArray() + + + toPunycode + toPunycode + ( const QString & uc ) + + + toString + toString + ( FormattingOptions options = None ) + + + userInfo + userInfo + () + + + userName + userName + () + + + operator!= + operator-not-eq + ( const QUrl & url ) + + + operator= + operator-eq + ( const QUrl & url ) + + + operator= + operator-eq-2 + ( const QString & url ) + + + operator== + operator-eq-eq + ( const QUrl & url ) + + + + QUrlInfo + qurlinfo.html + + PermissionSpec + PermissionSpec-enum + + + + QUrlInfo + QUrlInfo + () + + + QUrlInfo + QUrlInfo-2 + ( const QUrlInfo & ui ) + + + QUrlInfo + QUrlInfo-3 + ( const QString & name, int permissions, const QString & owner, const QString & group, qint64 size, const QDateTime & lastModified, const QDateTime & lastRead, bool isDir, bool isFile, bool isSymLink, bool isWritable, bool isReadable, bool isExecutable ) + + + QUrlInfo + QUrlInfo-4 + ( const QUrl & url, int permissions, const QString & owner, const QString & group, qint64 size, const QDateTime & lastModified, const QDateTime & lastRead, bool isDir, bool isFile, bool isSymLink, bool isWritable, bool isReadable, bool isExecutable ) + + + equal + equal + ( const QUrlInfo & i1, const QUrlInfo & i2, int sortBy ) + + + greaterThan + greaterThan + ( const QUrlInfo & i1, const QUrlInfo & i2, int sortBy ) + + + group + group + () + + + isDir + isDir + () + + + isExecutable + isExecutable + () + + + isFile + isFile + () + + + isReadable + isReadable + () + + + isSymLink + isSymLink + () + + + isValid + isValid + () + + + isWritable + isWritable + () + + + lastModified + lastModified + () + + + lastRead + lastRead + () + + + lessThan + lessThan + ( const QUrlInfo & i1, const QUrlInfo & i2, int sortBy ) + + + name + name + () + + + owner + owner + () + + + permissions + permissions + () + + + setDir + setDir + ( bool b ) + + + setFile + setFile + ( bool b ) + + + setGroup + setGroup + ( const QString & s ) + + + setLastModified + setLastModified + ( const QDateTime & dt ) + + + setName + setName + ( const QString & name ) + + + setOwner + setOwner + ( const QString & s ) + + + setPermissions + setPermissions + ( int p ) + + + setReadable + setReadable + ( bool b ) + + + setSize + setSize + ( qint64 size ) + + + setSymLink + setSymLink + ( bool b ) + + + setWritable + setWritable + ( bool b ) + + + size + size + () + + + operator= + operator-eq + ( const QUrlInfo & ui ) + + + operator== + operator-eq-eq + ( const QUrlInfo & i ) + + + addPath + addPath + ( const QString & p ) + + + cdUp + cdUp + () + + + decode + decode + ( QString & url ) + + + dirPath + dirPath + () + + + encode + encode + ( QString & url ) + + + fileName + fileName + () + + + hasHost + hasHost + () + + + hasPassword + hasPassword + () + + + hasPath + hasPath + () + + + hasPort + hasPort + () + + + hasRef + hasRef + () + + + hasUser + hasUser + () + + + isRelativeUrl + isRelativeUrl + ( const QString & url ) + + + protocol + protocol + () + + + query + query + () + + + ref + ref + () + + + reset + reset + () + + + setFileName + setFileName + ( const QString & txt ) + + + setProtocol + setProtocol + ( const QString & s ) + + + setQuery + setQuery + ( const QString & txt ) + + + setRef + setRef + ( const QString & txt ) + + + setUser + setUser + ( const QString & s ) + + + user + user + () + + + operator + operator-QString + QString() + + + + QUuid + quuid.html + + Variant + Variant-enum + + + + Version + Version-enum + + + + QUuid + QUuid + () + + + QUuid + QUuid-2 + ( uint l, ushort w1, ushort w2, uchar b1, uchar b2, uchar b3, uchar b4, uchar b5, uchar b6, uchar b7, uchar b8 ) + + + QUuid + QUuid-3 + ( const QString & text ) + + + QUuid + QUuid-5 + ( const GUID & guid ) + + + createUuid + createUuid + () + + + isNull + isNull + () + + + toString + toString + () + + + Variant + variant + QUuid::variant() + + + Version + version + QUuid::version() + + + operator + operator-GUID + GUID() + + + operator + operator-QString + QString() + + + operator!= + operator-not-eq + ( const QUuid & other ) + + + operator!= + operator-not-eq-2 + ( const GUID & guid ) + + + operator< + operator-lt + ( const QUuid & other ) + + + operator= + operator-eq + ( const GUID & guid ) + + + operator== + operator-eq-eq + ( const QUuid & other ) + + + operator== + operator-eq-eq-2 + ( const GUID & guid ) + + + operator> + operator-gt + ( const QUuid & other ) + + + + QValidator + qvalidator.html + + State + State-enum + + + + QValidator + QValidator + ( QObject * parent ) + + + fixup + fixup + ( QString & input ) + + + validate + validate + ( QString & input, int & pos ) + + + QValidator + QValidator-2 + ( QObject * parent, const char * name ) + + + + QVariant + qvariant.html + + Type + Type-enum + + + + QVariant + QVariant + () + + + QVariant + QVariant-2 + ( Type type ) + + + QVariant + QVariant-3 + ( int typeOrUserType, const void * copy ) + + + QVariant + QVariant-4 + ( const QVariant & p ) + + + QVariant + QVariant-5 + ( QDataStream & s ) + + + QVariant + QVariant-6 + ( int val ) + + + QVariant + QVariant-7 + ( uint val ) + + + QVariant + QVariant-8 + ( qlonglong val ) + + + QVariant + QVariant-9 + ( qulonglong val ) + + + QVariant + QVariant-10 + ( bool val ) + + + QVariant + QVariant-11 + ( double val ) + + + QVariant + QVariant-12 + ( const char * val ) + + + QVariant + QVariant-13 + ( const QByteArray & val ) + + + QVariant + QVariant-14 + ( const QBitArray & val ) + + + QVariant + QVariant-15 + ( const QString & val ) + + + QVariant + QVariant-16 + ( const QLatin1String & val ) + + + QVariant + QVariant-17 + ( const QStringList & val ) + + + QVariant + QVariant-18 + ( const QChar & c ) + + + QVariant + QVariant-19 + ( const QDate & val ) + + + QVariant + QVariant-20 + ( const QTime & val ) + + + QVariant + QVariant-21 + ( const QDateTime & val ) + + + QVariant + QVariant-22 + ( const QList<QVariant> & val ) + + + QVariant + QVariant-23 + ( const QMap<QString, QVariant> & val ) + + + QVariant + QVariant-24 + ( const QSize & val ) + + + QVariant + QVariant-25 + ( const QSizeF & val ) + + + QVariant + QVariant-26 + ( const QPoint & val ) + + + QVariant + QVariant-27 + ( const QPointF & val ) + + + QVariant + QVariant-28 + ( const QLine & val ) + + + QVariant + QVariant-29 + ( const QLineF & val ) + + + QVariant + QVariant-30 + ( const QRect & val ) + + + QVariant + QVariant-31 + ( const QRectF & val ) + + + QVariant + QVariant-32 + ( const QUrl & val ) + + + QVariant + QVariant-33 + ( const QLocale & l ) + + + QVariant + QVariant-34 + ( const QRegExp & regExp ) + + + canConvert + canConvert + ( Type t ) + + + canConvert + canConvert-2 + () + + + clear + clear + () + + + convert + convert + ( Type t ) + + + fromValue + fromValue + ( const T & value ) + + + isNull + isNull + () + + + isValid + isValid + () + + + nameToType + nameToType + ( const char * name ) + + + setValue + setValue + ( const T & value ) + + + toBitArray + toBitArray + () + + + toBool + toBool + () + + + toByteArray + toByteArray + () + + + toChar + toChar + () + + + toDate + toDate + () + + + toDateTime + toDateTime + () + + + toDouble + toDouble + ( bool * ok = 0 ) + + + toInt + toInt + ( bool * ok = 0 ) + + + toLine + toLine + () + + + toLineF + toLineF + () + + + toList + toList + () + + + toLocale + toLocale + () + + + toLongLong + toLongLong + ( bool * ok = 0 ) + + + toMap + toMap + () + + + toPoint + toPoint + () + + + toPointF + toPointF + () + + + toRect + toRect + () + + + toRectF + toRectF + () + + + toRegExp + toRegExp + () + + + toSize + toSize + () + + + toSizeF + toSizeF + () + + + toString + toString + () + + + toStringList + toStringList + () + + + toTime + toTime + () + + + toUInt + toUInt + ( bool * ok = 0 ) + + + toULongLong + toULongLong + ( bool * ok = 0 ) + + + toUrl + toUrl + () + + + type + type + () + + + typeName + typeName + () + + + typeToName + typeToName + ( Type typ ) + + + userType + userType + () + + + value + value + () + + + operator!= + operator-not-eq + ( const QVariant & v ) + + + operator= + operator-eq + ( const QVariant & variant ) + + + operator== + operator-eq-eq + ( const QVariant & v ) + + + QVariant + QVariant-35 + ( bool b, int dummy ) + + + asBitArray + asBitArray + () + + + asBool + asBool + () + + + asByteArray + asByteArray + () + + + asCString + asCString + () + + + asDate + asDate + () + + + asDateTime + asDateTime + () + + + asDouble + asDouble + () + + + asInt + asInt + () + + + asList + asList + () + + + asLongLong + asLongLong + () + + + asMap + asMap + () + + + asPoint + asPoint + () + + + asRect + asRect + () + + + asSize + asSize + () + + + asString + asString + () + + + asStringList + asStringList + () + + + asTime + asTime + () + + + asUInt + asUInt + () + + + asULongLong + asULongLong + () + + + canCast + canCast + ( Type t ) + + + cast + cast + ( Type t ) + + + toCString + toCString + () + + + + QVarLengthArray + qvarlengtharray.html + + QVarLengthArray + QVarLengthArray + ( int size = 0 ) + + + QVarLengthArray + QVarLengthArray-2 + ( const QVarLengthArray<T, Prealloc> & other ) + + + append + append + ( const T & t ) + + + append + append-2 + ( const T * buf, int size ) + + + capacity + capacity + () + + + clear + clear + () + + + constData + constData + () + + + count + count + () + + + data + data + () + + + data + data-2 + () + + + isEmpty + isEmpty + () + + + reserve + reserve + ( int size ) + + + resize + resize + ( int size ) + + + size + size + () + + + operator= + operator-eq + ( const QVarLengthArray<T, Prealloc> & other ) + + + operator[] + operator-5b-5d + ( int i ) + + + operator[] + operator-5b-5d-2 + ( int i ) + + + + QVBoxLayout + qvboxlayout.html + + QVBoxLayout + QVBoxLayout + () + + + QVBoxLayout + QVBoxLayout-2 + ( QWidget * parent ) + + + QVBoxLayout + QVBoxLayout-3 + ( QWidget * parent, int margin, int spacing = -1, const char * name = 0 ) + + + QVBoxLayout + QVBoxLayout-4 + ( QLayout * parentLayout, int spacing = -1, const char * name = 0 ) + + + QVBoxLayout + QVBoxLayout-5 + ( int spacing, const char * name = 0 ) + + + + QVector + qvector.html + + ConstIterator + ConstIterator-typedef + + + + Iterator + Iterator-typedef + + + + const_iterator + const_iterator-typedef + + + + iterator + iterator-typedefx + + + + QVector + QVector + () + + + QVector + QVector-2 + ( int size ) + + + QVector + QVector-3 + ( int size, const T & value ) + + + QVector + QVector-4 + ( const QVector<T> & other ) + + + append + append + ( const T & value ) + + + at + at + ( int i ) + + + back + back + () + + + back + back-2 + () + + + begin + begin + () + + + begin + begin-2 + () + + + capacity + capacity + () + + + clear + clear + () + + + constBegin + constBegin + () + + + constData + constData + () + + + constEnd + constEnd + () + + + contains + contains + ( const T & value ) + + + count + count + ( const T & value ) + + + count + count-2 + () + + + data + data + () + + + data + data-2 + () + + + empty + empty + () + + + end + end + () + + + end + end-2 + () + + + erase + erase + ( iterator pos ) + + + erase + erase-2 + ( iterator begin, iterator end ) + + + fill + fill + ( const T & value, int size = -1 ) + + + first + first + () + + + first + first-2 + () + + + fromList + fromList + ( const QList<T> & list ) + + + fromStdVector + fromStdVector + ( const std::vector<T> & vector ) + + + front + front + () + + + front + front-2 + () + + + indexOf + indexOf + ( const T & value, int from = 0 ) + + + insert + insert + ( int i, const T & value ) + + + insert + insert-2 + ( iterator before, int count, const T & value ) + + + insert + insert-3 + ( int i, int count, const T & value ) + + + insert + insert-4 + ( iterator before, const T & value ) + + + isEmpty + isEmpty + () + + + last + last + () + + + last + last-2 + () + + + lastIndexOf + lastIndexOf + ( const T & value, int from = -1 ) + + + mid + mid + ( int pos, int length = -1 ) + + + pop_back + pop_back + () + + + pop_front + pop_front + () + + + prepend + prepend + ( const T & value ) + + + push_back + push_back + ( const T & value ) + + + push_front + push_front + ( const T & value ) + + + remove + remove + ( int i ) + + + remove + remove-2 + ( int i, int count ) + + + replace + replace + ( int i, const T & value ) + + + reserve + reserve + ( int size ) + + + resize + resize + ( int size ) + + + size + size + () + + + squeeze + squeeze + () + + + toList + toList + () + + + vector + toStdVector + <T> QVector::toStdVector() + + + value + value + ( int i ) + + + value + value-2 + ( int i, const T & defaultValue ) + + + operator!= + operator-not-eq + ( const QVector<T> & other ) + + + operator+ + operator-2b + ( const QVector<T> & other ) + + + operator+= + operator-2b-eq + ( const QVector<T> & other ) + + + operator+= + operator-2b-eq-2 + ( const T & value ) + + + operator<< + operator-lt-lt + ( const T & value ) + + + operator<< + operator-lt-lt-2 + ( const QVector<T> & other ) + + + operator= + operator-eq + ( const QVector<T> & other ) + + + operator== + operator-eq-eq + ( const QVector<T> & other ) + + + operator[] + operator-5b-5d + ( int i ) + + + operator[] + operator-5b-5d-2 + ( int i ) + + + + QVectorIterator + qvectoriterator.html + + QVectorIterator + QVectorIterator + ( const QVector<T> & vector ) + + + findNext + findNext + ( const T & value ) + + + findPrevious + findPrevious + ( const T & value ) + + + hasNext + hasNext + () + + + hasPrevious + hasPrevious + () + + + next + next + () + + + peekNext + peekNext + () + + + peekPrevious + peekPrevious + () + + + previous + previous + () + + + toBack + toBack + () + + + toFront + toFront + () + + + operator= + operator-eq + ( const QVector<T> & vector ) + + + + QVFbScreen + qvfbscreen.html + + QVFbScreen + QVFbScreen + ( int displayId ) + + + + QVNCScreen + qvncscreen.html + + QVNCScreen + QVNCScreen + ( int displayId ) + + + + QWaitCondition + qwaitcondition.html + + QWaitCondition + QWaitCondition + () + + + wait + wait + ( QMutex * mutex, unsigned long time = ULONG_MAX ) + + + wakeAll + wakeAll + () + + + wakeOne + wakeOne + () + + + + QWhatsThisClickedEvent + qwhatsthisclickedevent.html + + QWhatsThisClickedEvent + QWhatsThisClickedEvent + ( const QString & href ) + + + href + href + () + + + + QWhatsThis + qwhatsthis.html + + createAction + createAction + ( QObject * parent = 0 ) + + + enterWhatsThisMode + enterWhatsThisMode + () + + + hideText + hideText + () + + + inWhatsThisMode + inWhatsThisMode + () + + + leaveWhatsThisMode + leaveWhatsThisMode + () + + + showText + showText + ( const QPoint & pos, const QString & text, QWidget * w = 0 ) + + + add + add + ( QWidget * w, const QString & s ) + + + remove + remove + ( QWidget * w ) + + + whatsThisButton + whatsThisButton + ( QWidget * parent ) + + + + QWheelEvent + qwheelevent.html + + QWheelEvent + QWheelEvent + ( const QPoint & pos, int delta, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Qt::Orientation orient = Qt::Vertical ) + + + QWheelEvent + QWheelEvent-2 + ( const QPoint & pos, const QPoint & globalPos, int delta, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Qt::Orientation orient = Qt::Vertical ) + + + MouseButtons + buttons + QWheelEvent::buttons() + + + delta + delta + () + + + globalPos + globalPos + () + + + globalX + globalX + () + + + globalY + globalY + () + + + Orientation + orientation + QWheelEvent::orientation() + + + pos + pos + () + + + x + x + () + + + y + y + () + + + QWheelEvent + QWheelEvent-3 + ( const QPoint & pos, int delta, int state, Qt::Orientation orient = Qt::Vertical ) + + + QWheelEvent + QWheelEvent-4 + ( const QPoint & pos, const QPoint & globalPos, int delta, int state, Qt::Orientation orient = Qt::Vertical ) + + + ButtonState + state + QWheelEvent::state() + + + + QWidget + qwidget.html + + ContextMenuPolicy + contextMenuPolicy-prop + + + + FocusPolicy + focusPolicy-prop + + + + LayoutDirection + layoutDirection-prop + + + + WindowFlags + windowFlags-prop + + + + WindowModality + windowModality-prop + + + + QWidget + QWidget + ( QWidget * parent = 0, Qt::WFlags f = 0 ) + + + actionEvent + actionEvent + ( QActionEvent * event ) + + + actions + actions + () + + + activateWindow + activateWindow + () + + + addAction + addAction + ( QAction * action ) + + + addActions + addActions + ( QList<QAction *> actions ) + + + adjustSize + adjustSize + () + + + ColorRole + backgroundRole + QWidget::backgroundRole() + + + changeEvent + changeEvent + ( QEvent * event ) + + + childAt + childAt + ( int x, int y ) + + + childAt + childAt-4 + ( const QPoint & p ) + + + clearFocus + clearFocus + () + + + clearMask + clearMask + () + + + close + close + () + + + closeEvent + closeEvent + ( QCloseEvent * event ) + + + contentsRect + contentsRect + () + + + contextMenuEvent + contextMenuEvent + ( QContextMenuEvent * event ) + + + create + create + ( WId window = 0, bool initializeWindow = true, bool destroyOldWindow = true ) + + + customContextMenuRequested + customContextMenuRequested + ( const QPoint & pos ) + + + destroy + destroy + ( bool destroyWindow = true, bool destroySubWindows = true ) + + + dragEnterEvent + dragEnterEvent + ( QDragEnterEvent * event ) + + + dragLeaveEvent + dragLeaveEvent + ( QDragLeaveEvent * event ) + + + dragMoveEvent + dragMoveEvent + ( QDragMoveEvent * event ) + + + dropEvent + dropEvent + ( QDropEvent * event ) + + + ensurePolished + ensurePolished + () + + + enterEvent + enterEvent + ( QEvent * event ) + + + event + event + ( QEvent * event ) + + + find + find + ( WId id ) + + + focusInEvent + focusInEvent + ( QFocusEvent * event ) + + + focusNextChild + focusNextChild + () + + + focusNextPrevChild + focusNextPrevChild + ( bool next ) + + + focusOutEvent + focusOutEvent + ( QFocusEvent * event ) + + + focusPreviousChild + focusPreviousChild + () + + + focusProxy + focusProxy + () + + + focusWidget + focusWidget + () + + + fontInfo + fontInfo + () + + + fontMetrics + fontMetrics + () + + + ColorRole + foregroundRole + QWidget::foregroundRole() + + + getContentsMargins + getContentsMargins + ( int * left, int * top, int * right, int * bottom ) + + + getDC + getDC + () + + + grabKeyboard + grabKeyboard + () + + + grabMouse + grabMouse + () + + + grabMouse + grabMouse-2 + ( const QCursor & cursor ) + + + grabShortcut + grabShortcut + ( const QKeySequence & key, Qt::ShortcutContext context = Qt::WindowShortcut ) + + + hasEditFocus + hasEditFocus + () + + + heightForWidth + heightForWidth + ( int w ) + + + hide + hide + () + + + hideEvent + hideEvent + ( QHideEvent * event ) + + + inputContext + inputContext + () + + + inputMethodEvent + inputMethodEvent + ( QInputMethodEvent * event ) + + + inputMethodQuery + inputMethodQuery + ( Qt::InputMethodQuery query ) + + + insertAction + insertAction + ( QAction * before, QAction * action ) + + + insertActions + insertActions + ( QAction * before, QList<QAction *> actions ) + + + isAncestorOf + isAncestorOf + ( const QWidget * child ) + + + isEnabledTo + isEnabledTo + ( QWidget * ancestor ) + + + isHidden + isHidden + () + + + isVisibleTo + isVisibleTo + ( QWidget * ancestor ) + + + isWindow + isWindow + () + + + keyPressEvent + keyPressEvent + ( QKeyEvent * event ) + + + keyReleaseEvent + keyReleaseEvent + ( QKeyEvent * event ) + + + keyboardGrabber + keyboardGrabber + () + + + layout + layout + () + + + leaveEvent + leaveEvent + ( QEvent * event ) + + + lower + lower + () + + + macEvent + macEvent + ( EventHandlerCallRef caller, EventRef event ) + + + mapFrom + mapFrom + ( QWidget * parent, const QPoint & pos ) + + + mapFromGlobal + mapFromGlobal + ( const QPoint & pos ) + + + mapFromParent + mapFromParent + ( const QPoint & pos ) + + + mapTo + mapTo + ( QWidget * parent, const QPoint & pos ) + + + mapToGlobal + mapToGlobal + ( const QPoint & pos ) + + + mapToParent + mapToParent + ( const QPoint & pos ) + + + mask + mask + () + + + metric + metric + ( PaintDeviceMetric m ) + + + mouseDoubleClickEvent + mouseDoubleClickEvent + ( QMouseEvent * event ) + + + mouseGrabber + mouseGrabber + () + + + mouseMoveEvent + mouseMoveEvent + ( QMouseEvent * event ) + + + mousePressEvent + mousePressEvent + ( QMouseEvent * event ) + + + mouseReleaseEvent + mouseReleaseEvent + ( QMouseEvent * event ) + + + moveEvent + moveEvent + ( QMoveEvent * event ) + + + nextInFocusChain + nextInFocusChain + () + + + overrideWindowFlags + overrideWindowFlags + ( Qt::WindowFlags flags ) + + + paintEngine + paintEngine + () + + + paintEvent + paintEvent + ( QPaintEvent * event ) + + + parentWidget + parentWidget + () + + + qwsEvent + qwsEvent + ( QWSEvent * event ) + + + raise + raise + () + + + releaseDC + releaseDC + ( HDC hdc ) + + + releaseKeyboard + releaseKeyboard + () + + + releaseMouse + releaseMouse + () + + + releaseShortcut + releaseShortcut + ( int id ) + + + removeAction + removeAction + ( QAction * action ) + + + repaint + repaint + () + + + repaint + repaint-6 + ( int x, int y, int w, int h ) + + + repaint + repaint-7 + ( const QRect & r ) + + + repaint + repaint-8 + ( const QRegion & rgn ) + + + resetInputContext + resetInputContext + () + + + resizeEvent + resizeEvent + ( QResizeEvent * event ) + + + scroll + scroll + ( int dx, int dy ) + + + scroll + scroll-2 + ( int dx, int dy, const QRect & r ) + + + setAttribute + setAttribute + ( Qt::WidgetAttribute attribute, bool on = true ) + + + setBackgroundRole + setBackgroundRole + ( QPalette::ColorRole role ) + + + setContentsMargins + setContentsMargins + ( int left, int top, int right, int bottom ) + + + setDisabled + setDisabled + ( bool disable ) + + + setEditFocus + setEditFocus + ( bool on ) + + + setFixedHeight + setFixedHeight + ( int h ) + + + setFixedSize + setFixedSize + ( const QSize & s ) + + + setFixedSize + setFixedSize-2 + ( int w, int h ) + + + setFixedWidth + setFixedWidth + ( int w ) + + + setFocus + setFocus + ( Qt::FocusReason reason ) + + + setFocus + setFocus-2 + () + + + setFocusProxy + setFocusProxy + ( QWidget * w ) + + + setForegroundRole + setForegroundRole + ( QPalette::ColorRole role ) + + + setHidden + setHidden + ( bool hidden ) + + + setInputContext + setInputContext + ( QInputContext * context ) + + + setLayout + setLayout + ( QLayout * layout ) + + + setMask + setMask + ( const QBitmap & bitmap ) + + + setMask + setMask-2 + ( const QRegion & region ) + + + setParent + setParent + ( QWidget * parent ) + + + setParent + setParent-2 + ( QWidget * parent, Qt::WFlags f ) + + + setShortcutEnabled + setShortcutEnabled + ( int id, bool enable = true ) + + + setStyle + setStyle + ( QStyle * style ) + + + setTabOrder + setTabOrder + ( QWidget * first, QWidget * second ) + + + setWindowRole + setWindowRole + ( const QString & role ) + + + setWindowState + setWindowState + ( Qt::WindowStates windowState ) + + + show + show + () + + + showEvent + showEvent + ( QShowEvent * event ) + + + showFullScreen + showFullScreen + () + + + showMaximized + showMaximized + () + + + showMinimized + showMinimized + () + + + showNormal + showNormal + () + + + stackUnder + stackUnder + ( QWidget * w ) + + + style + style + () + + + tabletEvent + tabletEvent + ( QTabletEvent * event ) + + + testAttribute + testAttribute + ( Qt::WidgetAttribute attribute ) + + + underMouse + underMouse + () + + + update + update + () + + + update + update-2 + ( int x, int y, int w, int h ) + + + update + update-3 + ( const QRect & r ) + + + update + update-4 + ( const QRegion & rgn ) + + + updateGeometry + updateGeometry + () + + + updateMicroFocus + updateMicroFocus + () + + + visibleRegion + visibleRegion + () + + + wheelEvent + wheelEvent + ( QWheelEvent * event ) + + + winEvent + winEvent + ( MSG * message, long * result ) + + + winId + winId + () + + + window + window + () + + + windowRole + windowRole + () + + + WindowStates + windowState + QWidget::windowState() + + + WindowType + windowType + QWidget::windowType() + + + x11Event + x11Event + ( XEvent * event ) + + + x11Info + x11Info + () + + + HANDLE + x11PictureHandle + QWidget::x11PictureHandle() + + + + QWidgetItem + qwidgetitem.html + + QWidgetItem + QWidgetItem + ( QWidget * widget ) + + + isEmpty + isEmpty + () + + + widget + widget + () + + + isEnabledToTLW + isEnabledToTLW + () + + + isTopLevel + isTopLevel + () + + + languageChange + languageChange + () + + + topLevelWidget + topLevelWidget + () + + + BackgroundOrigin + BackgroundOrigin-enum + + + + QWidget + QWidget-3 + ( QWidget * parent, const char * name, Qt::WFlags f = 0 ) + + + BackgroundMode + backgroundMode + QWidget::backgroundMode() + + + backgroundOffset + backgroundOffset + () + + + backgroundOrigin + backgroundOrigin + () + + + caption + caption + () + + + childAt + childAt-2 + ( int x, int y, bool includeThis ) + + + childAt + childAt-3 + ( const QPoint & p, bool includeThis ) + + + close + close-2 + ( bool alsoDelete ) + + + colorGroup + colorGroup + () + + + constPolish + constPolish + () + + + drawText + drawText + ( const QPoint & p, const QString & s ) + + + drawText + drawText-2 + ( int x, int y, const QString & s ) + + + erase + erase + () + + + erase + erase-2 + ( int x, int y, int w, int h ) + + + erase + erase-3 + ( const QRect & rect ) + + + erase + erase-4 + ( const QRegion & rgn ) + + + hasMouse + hasMouse + () + + + icon + icon + () + + + iconText + iconText + () + + + iconify + iconify + () + + + isDesktop + isDesktop + () + + + isDialog + isDialog + () + + + isInputMethodEnabled + isInputMethodEnabled + () + + + isPopup + isPopup + () + + + isShown + isShown + () + + + isUpdatesEnabled + isUpdatesEnabled + () + + + isVisibleToTLW + isVisibleToTLW + () + + + ownCursor + ownCursor + () + + + ownFont + ownFont + () + + + ownPalette + ownPalette + () + + + parentWidget + parentWidget-2 + ( bool sameWindow ) + + + polish + polish + () + + + recreate + recreate + ( QWidget * parent, Qt::WFlags f, const QPoint & p, bool showIt = false ) + + + repaint + repaint-2 + ( bool b ) + + + repaint + repaint-3 + ( int x, int y, int w, int h, bool b ) + + + repaint + repaint-4 + ( const QRect & r, bool b ) + + + repaint + repaint-5 + ( const QRegion & rgn, bool b ) + + + reparent + reparent + ( QWidget * parent, Qt::WFlags f, const QPoint & p, bool showIt = false ) + + + reparent + reparent-2 + ( QWidget * parent, const QPoint & p, bool showIt = false ) + + + setActiveWindow + setActiveWindow + () + + + setBackgroundColor + setBackgroundColor + ( const QColor & color ) + + + setBackgroundMode + setBackgroundMode + ( Qt::BackgroundMode widgetBackground, Qt::BackgroundMode paletteBackground = Qt::PaletteBackground ) + + + setBackgroundOrigin + setBackgroundOrigin + ( BackgroundOrigin background ) + + + setBackgroundPixmap + setBackgroundPixmap + ( const QPixmap & pixmap ) + + + setCaption + setCaption + ( const QString & c ) + + + setEraseColor + setEraseColor + ( const QColor & color ) + + + setErasePixmap + setErasePixmap + ( const QPixmap & pixmap ) + + + setFont + setFont-2 + ( const QFont & f, bool b ) + + + setIcon + setIcon + ( const QPixmap & i ) + + + setIconText + setIconText + ( const QString & it ) + + + setInputMethodEnabled + setInputMethodEnabled + ( bool enabled ) + + + setKeyCompression + setKeyCompression + ( bool b ) + + + setPalette + setPalette-2 + ( const QPalette & p, bool b ) + + + setPaletteBackgroundColor + setPaletteBackgroundColor + ( const QColor & color ) + + + setPaletteBackgroundPixmap + setPaletteBackgroundPixmap + ( const QPixmap & pixmap ) + + + setPaletteForegroundColor + setPaletteForegroundColor + ( const QColor & color ) + + + setShown + setShown + ( bool shown ) + + + setSizePolicy + setSizePolicy-2 + ( QSizePolicy::Policy hor, QSizePolicy::Policy ver, bool hfw ) + + + setStyle + setStyle-2 + ( const QString & style ) + + + unsetFont + unsetFont + () + + + unsetPalette + unsetPalette + () + + + visibleRect + visibleRect + () + + + wmapper + wmapper + () + + + + QWindowsMime + qwindowsmime.html + + QWindowsMime + QWindowsMime + () + + + canConvertFromMime + canConvertFromMime + ( const FORMATETC & formatetc, const QMimeData * mimeData ) + + + canConvertToMime + canConvertToMime + ( const QString & mimeType, IDataObject * pDataObj ) + + + convertFromMime + convertFromMime + ( const FORMATETC & formatetc, const QMimeData * mimeData, STGMEDIUM * pmedium ) + + + convertToMime + convertToMime + ( const QString & mimeType, IDataObject * pDataObj, QVariant::Type preferredType ) + + + formatsForMime + formatsForMime + ( const QString & mimeType, const QMimeData * mimeData ) + + + mimeForFormat + mimeForFormat + ( const FORMATETC & formatetc ) + + + registerMimeType + registerMimeType + ( const QString & mime ) + + + + QWindowsStyle + qwindowsstyle.html + + QWindowsStyle + QWindowsStyle + () + + + + QWindowStateChangeEvent + qwindowstatechangeevent.html + + WindowStates + oldState + QWindowStateChangeEvent::oldState() + + + + QWindowsXPStyle + qwindowsxpstyle.html + + QWindowsXPStyle + QWindowsXPStyle + () + + + + QWorkspace + qworkspace.html + + WindowOrder + WindowOrder-enum + + + + QWorkspace + QWorkspace + ( QWidget * parent = 0 ) + + + activateNextWindow + activateNextWindow + () + + + activatePreviousWindow + activatePreviousWindow + () + + + activeWindow + activeWindow + () + + + addWindow + addWindow + ( QWidget * w, Qt::WFlags flags = 0 ) + + + arrangeIcons + arrangeIcons + () + + + cascade + cascade + () + + + closeActiveWindow + closeActiveWindow + () + + + closeAllWindows + closeAllWindows + () + + + setActiveWindow + setActiveWindow + ( QWidget * w ) + + + tile + tile + () + + + windowActivated + windowActivated + ( QWidget * w ) + + + windowList + windowList + ( WindowOrder order = CreationOrder ) + + + QWorkspace + QWorkspace-2 + ( QWidget * parent, const char * name ) + + + setPaletteBackgroundColor + setPaletteBackgroundColor + ( const QColor & c ) + + + setPaletteBackgroundPixmap + setPaletteBackgroundPixmap + ( const QPixmap & pm ) + + + + QWriteLocker + qwritelocker.html + + QWriteLocker + QWriteLocker + ( QReadWriteLock * lock ) + + + readWriteLock + readWriteLock + () + + + relock + relock + () + + + unlock + unlock + () + + + + QWSCalibratedMouseHandler + qwscalibratedmousehandler.html + + calibrate + calibrate + ( const QWSPointerCalibrationData * data ) + + + clearCalibration + clearCalibration + () + + + readCalibration + readCalibration + () + + + sendFiltered + sendFiltered + ( const QPoint & position, int state ) + + + setFilterSize + setFilterSize + ( int size ) + + + transform + transform + ( const QPoint & position ) + + + writeCalibration + writeCalibration + () + + + + QWSClient + qwsclient.html + + clientId + clientId + () + + + identity + identity + () + + + + QWSEvent + qwsevent.html + + Type + Type-enum + + + + + QWSInputMethod + qwsinputmethod.html + + UpdateType + UpdateType-enum + + + + QWSInputMethod + QWSInputMethod + () + + + filter + filter + ( int unicode, int keycode, int modifiers, bool isPress, bool autoRepeat ) + + + filter + filter-2 + ( const QPoint & position, int state, int wheel ) + + + inputResolutionShift + inputResolutionShift + () + + + mouseHandler + mouseHandler + ( int offset, int state ) + + + queryResponse + queryResponse + ( int property, const QVariant & result ) + + + reset + reset + () + + + sendCommitString + sendCommitString + ( const QString & commitString, int replaceFromPosition = 0, int replaceLength = 0 ) + + + sendEvent + sendEvent + ( const QInputMethodEvent * ) + + + sendMouseEvent + sendMouseEvent + ( const QPoint & position, int state, int wheel ) + + + sendPreeditString + sendPreeditString + ( const QString & preeditString, int cursorPosition, int selectionLength = 0 ) + + + sendQuery + sendQuery + ( int property ) + + + setInputResolution + setInputResolution + ( bool isHigh ) + + + updateHandler + updateHandler + ( int type ) + + + sendIMEvent + sendIMEvent + ( QWSServer::IMState state, const QString & text, int cursorPosition, int selectionLength = 0 ) + + + + QWSKeyboardHandler + qwskeyboardhandler.html + + QWSKeyboardHandler + QWSKeyboardHandler + () + + + beginAutoRepeat + beginAutoRepeat + ( int unicode, int keycode, Qt::KeyboardModifiers modifier ) + + + endAutoRepeat + endAutoRepeat + () + + + processKeyEvent + processKeyEvent + ( int unicode, int keycode, Qt::KeyboardModifiers modifiers, bool isPress, bool autoRepeat ) + + + transformDirKey + transformDirKey + ( int keycode ) + + + + QWSMouseHandler + qwsmousehandler.html + + QWSMouseHandler + QWSMouseHandler + ( const QString & driver = QString() + + + calibrate + calibrate + ( const QWSPointerCalibrationData * data ) + + + clearCalibration + clearCalibration + () + + + limitToScreen + limitToScreen + ( QPoint & position ) + + + mouseChanged + mouseChanged + ( const QPoint & position, int state, int wheel = 0 ) + + + pos + pos + () + + + resume + resume + () + + + suspend + suspend + () + + + + QWSPointerCalibrationData + qwspointercalibrationdata.html + + Location + Location-enum + + + + + QWSScreenSaver + qwsscreensaver.html + + restore + restore + () + + + save + save + ( int level ) + + + + QWSServer + qwsserver.html + + IMMouse + IMMouse-enum + + + + WindowEvent + WindowEvent-enum + + + + addKeyboardFilter + addKeyboardFilter + ( KeyboardFilter * filter ) + + + backgroundBrush + backgroundBrush + () + + + clientWindows + clientWindows + () + + + closeKeyboard + closeKeyboard + () + + + closeMouse + closeMouse + () + + + enablePainting + enablePainting + ( bool enable ) + + + isCursorVisible + isCursorVisible + () + + + keyMap + keyMap + () + + + keyboardHandler + keyboardHandler + () + + + markedText + markedText + ( const QString & selection ) + + + mouseHandler + mouseHandler + () + + + newChannel + newChannel + ( const QString & channel ) + + + openKeyboard + openKeyboard + () + + + openMouse + openMouse + () + + + processKeyEvent + processKeyEvent + ( int unicode, int keycode, Qt::KeyboardModifiers modifiers, bool isPress, bool autoRepeat ) + + + refresh + refresh + () + + + refresh + refresh-2 + ( QRegion & region ) + + + removeKeyboardFilter + removeKeyboardFilter + () + + + removedChannel + removedChannel + ( const QString & channel ) + + + resumeMouse + resumeMouse + () + + + screenSaverActivate + screenSaverActivate + ( bool activate ) + + + screenSaverActive + screenSaverActive + () + + + sendIMEvent + sendIMEvent + ( const QInputMethodEvent * event ) + + + sendIMQuery + sendIMQuery + ( int property ) + + + sendKeyEvent + sendKeyEvent + ( int unicode, int keycode, Qt::KeyboardModifiers modifiers, bool isPress, bool autoRepeat ) + + + setBackground + setBackground + ( const QBrush & brush ) + + + setCurrentInputMethod + setCurrentInputMethod + ( QWSInputMethod * method ) + + + setCursorVisible + setCursorVisible + ( bool visible ) + + + setDefaultKeyboard + setDefaultKeyboard + ( const char * keyboardDriver ) + + + setDefaultMouse + setDefaultMouse + ( const char * mouseDriver ) + + + setKeyboardHandler + setKeyboardHandler + ( QWSKeyboardHandler * handler ) + + + setMaxWindowRect + setMaxWindowRect + ( const QRect & rectangle ) + + + setMouseHandler + setMouseHandler + ( QWSMouseHandler * handler ) + + + setScreenSaver + setScreenSaver + ( QWSScreenSaver * screenSaver ) + + + setScreenSaverInterval + setScreenSaverInterval + ( int milliseconds ) + + + setScreenSaverIntervals + setScreenSaverIntervals + ( int * intervals ) + + + suspendMouse + suspendMouse + () + + + windowAt + windowAt + ( const QPoint & position ) + + + windowEvent + windowEvent + ( QWSWindow * window, QWSServer::WindowEvent eventType ) + + + + QWSServer::KeyboardFilter + qwsserver-keyboardfilter.html + + filter + filter + ( int unicode, int keycode, int modifiers, bool isPress, bool autoRepeat ) + + + + QWSServer::KeyMap + qwsserver-keymap.html + + ctrl_unicode + ctrl_unicode-var + + + + key_code + key_code-var + + + + shift_unicode + shift_unicode-var + + + + unicode + unicode-var + + + + IMState + IMState-enum + + + + QWSServer + QWSServer-2 + ( int flags, QObject * parent, const char * name ) + + + setDesktopBackground + setDesktopBackground + ( const QImage & img ) + + + setDesktopBackground + setDesktopBackground-2 + ( const QColor & c ) + + + + QWSTslibMouseHandler + qwstslibmousehandler.html + + + QWSWindow + qwswindow.html + + caption + caption + () + + + client + client + () + + + isFullyObscured + isFullyObscured + () + + + isOpaque + isOpaque + () + + + isVisible + isVisible + () + + + name + name + () + + + opacity + opacity + () + + + requestedRegion + requestedRegion + () + + + winId + winId + () + + + + QX11EmbedContainer + qx11embedcontainer.html + + Error + Error-enum + + + + QX11EmbedContainer + QX11EmbedContainer + ( QWidget * parent = 0 ) + + + clientClosed + clientClosed + () + + + clientIsEmbedded + clientIsEmbedded + () + + + clientWinId + clientWinId + () + + + discardClient + discardClient + () + + + embedClient + embedClient + ( WId id ) + + + error + error + () + + + error + error-2 + ( QX11EmbedContainer::Error error ) + + + + QX11EmbedWidget + qx11embedwidget.html + + Error + Error-enum + + + + QX11EmbedWidget + QX11EmbedWidget + ( QWidget * parent = 0 ) + + + containerClosed + containerClosed + () + + + containerWinId + containerWinId + () + + + embedInto + embedInto + ( WId id ) + + + embedded + embedded + () + + + error + error + () + + + error + error-2 + ( QX11EmbedWidget::Error error ) + + + + QX11Info + qx11info.html + + QX11Info + QX11Info + () + + + QX11Info + QX11Info-2 + ( const QX11Info & other ) + + + appCells + appCells + ( int screen = -1 ) + + + appClass + appClass + () + + + HANDLE + appColormap + QX11Info::appColormap( int screen = -1 ) + + + appDefaultColormap + appDefaultColormap + ( int screen = -1 ) + + + appDefaultVisual + appDefaultVisual + ( int screen = -1 ) + + + appDepth + appDepth + ( int screen = -1 ) + + + appDpiX + appDpiX + ( int screen = -1 ) + + + appDpiY + appDpiY + ( int screen = -1 ) + + + HANDLE + appRootWindow + QX11Info::appRootWindow( int screen = -1 ) + + + appScreen + appScreen + () + + + appTime + appTime + () + + + appUserTime + appUserTime + () + + + appVisual + appVisual + ( int screen = -1 ) + + + cells + cells + () + + + HANDLE + colormap + QX11Info::colormap() + + + defaultColormap + defaultColormap + () + + + defaultVisual + defaultVisual + () + + + depth + depth + () + + + display + display + () + + + screen + screen + () + + + setAppDpiX + setAppDpiX + ( int screen, int xdpi ) + + + setAppDpiY + setAppDpiY + ( int screen, int ydpi ) + + + setAppTime + setAppTime + ( unsigned long time ) + + + setAppUserTime + setAppUserTime + ( unsigned long time ) + + + visual + visual + () + + + operator= + operator-eq + ( const QX11Info & other ) + + + + QXmlAttributes + qxmlattributes.html + + QXmlAttributes + QXmlAttributes + () + + + append + append + ( const QString & qName, const QString & uri, const QString & localPart, const QString & value ) + + + clear + clear + () + + + count + count + () + + + index + index + ( const QString & qName ) + + + index + index-2 + ( const QString & uri, const QString & localPart ) + + + length + length + () + + + localName + localName + ( int index ) + + + qName + qName + ( int index ) + + + type + type + ( int index ) + + + type + type-2 + ( const QString & qName ) + + + type + type-3 + ( const QString & uri, const QString & localName ) + + + uri + uri + ( int index ) + + + value + value + ( int index ) + + + value + value-2 + ( const QString & qName ) + + + value + value-3 + ( const QString & uri, const QString & localName ) + + + + QXmlContentHandler + qxmlcontenthandler.html + + characters + characters + ( const QString & ch ) + + + endDocument + endDocument + () + + + endElement + endElement + ( const QString & namespaceURI, const QString & localName, const QString & qName ) + + + endPrefixMapping + endPrefixMapping + ( const QString & prefix ) + + + errorString + errorString + () + + + ignorableWhitespace + ignorableWhitespace + ( const QString & ch ) + + + processingInstruction + processingInstruction + ( const QString & target, const QString & data ) + + + setDocumentLocator + setDocumentLocator + ( QXmlLocator * locator ) + + + skippedEntity + skippedEntity + ( const QString & name ) + + + startDocument + startDocument + () + + + startElement + startElement + ( const QString & namespaceURI, const QString & localName, const QString & qName, const QXmlAttributes & atts ) + + + startPrefixMapping + startPrefixMapping + ( const QString & prefix, const QString & uri ) + + + + QXmlDeclHandler + qxmldeclhandler.html + + attributeDecl + attributeDecl + ( const QString & eName, const QString & aName, const QString & type, const QString & valueDefault, const QString & value ) + + + errorString + errorString + () + + + externalEntityDecl + externalEntityDecl + ( const QString & name, const QString & publicId, const QString & systemId ) + + + internalEntityDecl + internalEntityDecl + ( const QString & name, const QString & value ) + + + + QXmlDefaultHandler + qxmldefaulthandler.html + + QXmlDefaultHandler + QXmlDefaultHandler + () + + + + QXmlDTDHandler + qxmldtdhandler.html + + errorString + errorString + () + + + notationDecl + notationDecl + ( const QString & name, const QString & publicId, const QString & systemId ) + + + unparsedEntityDecl + unparsedEntityDecl + ( const QString & name, const QString & publicId, const QString & systemId, const QString & notationName ) + + + + QXmlEntityResolver + qxmlentityresolver.html + + errorString + errorString + () + + + resolveEntity + resolveEntity + ( const QString & publicId, const QString & systemId, QXmlInputSource *& ret ) + + + + QXmlErrorHandler + qxmlerrorhandler.html + + error + error + ( const QXmlParseException & exception ) + + + errorString + errorString + () + + + fatalError + fatalError + ( const QXmlParseException & exception ) + + + warning + warning + ( const QXmlParseException & exception ) + + + + QXmlInputSource + qxmlinputsource.html + + QXmlInputSource + QXmlInputSource + () + + + QXmlInputSource + QXmlInputSource-2 + ( QIODevice * dev ) + + + data + data + () + + + fetchData + fetchData + () + + + fromRawData + fromRawData + ( const QByteArray & data, bool beginning = false ) + + + next + next + () + + + reset + reset + () + + + setData + setData + ( const QString & dat ) + + + setData + setData-2 + ( const QByteArray & dat ) + + + QXmlInputSource + QXmlInputSource-3 + ( QFile & file ) + + + QXmlInputSource + QXmlInputSource-4 + ( QTextStream & stream ) + + + + QXmlLexicalHandler + qxmllexicalhandler.html + + comment + comment + ( const QString & ch ) + + + endCDATA + endCDATA + () + + + endDTD + endDTD + () + + + endEntity + endEntity + ( const QString & name ) + + + errorString + errorString + () + + + startCDATA + startCDATA + () + + + startDTD + startDTD + ( const QString & name, const QString & publicId, const QString & systemId ) + + + startEntity + startEntity + ( const QString & name ) + + + + QXmlLocator + qxmllocator.html + + QXmlLocator + QXmlLocator + () + + + columnNumber + columnNumber + () + + + lineNumber + lineNumber + () + + + + QXmlNamespaceSupport + qxmlnamespacesupport.html + + QXmlNamespaceSupport + QXmlNamespaceSupport + () + + + popContext + popContext + () + + + prefix + prefix + ( const QString & uri ) + + + prefixes + prefixes + () + + + prefixes + prefixes-2 + ( const QString & uri ) + + + processName + processName + ( const QString & qname, bool isAttribute, QString & nsuri, QString & localname ) + + + pushContext + pushContext + () + + + reset + reset + () + + + setPrefix + setPrefix + ( const QString & pre, const QString & uri ) + + + splitName + splitName + ( const QString & qname, QString & prefix, QString & localname ) + + + uri + uri + ( const QString & prefix ) + + + + QXmlParseException + qxmlparseexception.html + + QXmlParseException + QXmlParseException + ( const QString & name = QString() + + + columnNumber + columnNumber + () + + + lineNumber + lineNumber + () + + + message + message + () + + + publicId + publicId + () + + + systemId + systemId + () + + + + QXmlReader + qxmlreader.html + + DTDHandler + DTDHandler + () + + + contentHandler + contentHandler + () + + + declHandler + declHandler + () + + + entityResolver + entityResolver + () + + + errorHandler + errorHandler + () + + + feature + feature + ( const QString & name, bool * ok = 0 ) + + + hasFeature + hasFeature + ( const QString & name ) + + + hasProperty + hasProperty + ( const QString & name ) + + + lexicalHandler + lexicalHandler + () + + + parse + parse-2 + ( const QXmlInputSource * input ) + + + property + property + ( const QString & name, bool * ok = 0 ) + + + setContentHandler + setContentHandler + ( QXmlContentHandler * handler ) + + + setDTDHandler + setDTDHandler + ( QXmlDTDHandler * handler ) + + + setDeclHandler + setDeclHandler + ( QXmlDeclHandler * handler ) + + + setEntityResolver + setEntityResolver + ( QXmlEntityResolver * handler ) + + + setErrorHandler + setErrorHandler + ( QXmlErrorHandler * handler ) + + + setFeature + setFeature + ( const QString & name, bool value ) + + + setLexicalHandler + setLexicalHandler + ( QXmlLexicalHandler * handler ) + + + setProperty + setProperty + ( const QString & name, void * value ) + + + parse + parse + ( const QXmlInputSource & input ) + + + + QXmlSimpleReader + qxmlsimplereader.html + + QXmlSimpleReader + QXmlSimpleReader + () + + + parse + parse-3 + ( const QXmlInputSource * input, bool incremental ) + + + parseContinue + parseContinue + () + + + setFeature + setFeature + ( const QString & name, bool enable ) + + + diff --git a/qt/src/.cvsignore b/qt/src/.cvsignore new file mode 100644 index 00000000..f6454f28 --- /dev/null +++ b/qt/src/.cvsignore @@ -0,0 +1,11 @@ +.deps +.libs +Makefile +Makefile.in +*.lo +*.la +*.bb +*.bbg +*.da +*.gcov +*.moc diff --git a/qt/src/Makefile.am b/qt/src/Makefile.am new file mode 100644 index 00000000..41e3c5eb --- /dev/null +++ b/qt/src/Makefile.am @@ -0,0 +1,70 @@ +INCLUDES=-I$(top_srcdir) $(DBUS_CLIENT_CFLAGS) $(DBUS_QT_CFLAGS) -DDBUS_COMPILATION + +lib_LTLIBRARIES=libdbus-qt4-1.la + +dbusincludedir=$(includedir)/dbus-1.0/dbus +dbusinclude_HEADERS= \ + qdbusbus.h \ + qdbusmacros.h \ + qdbuserror.h \ + qdbusmessage.h \ + qdbusserver.h \ + qdbusconnection.h \ + qdbusabstractinterface.h \ + qdbusinterface.h \ + qdbusutil.h \ + qdbusabstractadaptor.h \ + qdbusreply.h \ + qdbustypehelper_p.h + +noinst_HEADERS= \ + qdbusabstractadaptor_p.h \ + qdbusabstractinterface_p.h \ + qdbusconnection_p.h \ + qdbusinterface_p.h \ + qdbusintrospection_p.h \ + qdbusmarshall_p.h \ + qdbusmessage_p.h \ + qdbusmetaobject_p.h \ + qdbustype_p.h \ + qdbusxmlparser_p.h + +MOCS = qdbusabstractadaptor.moc qdbusserver.moc qdbusconnection_p.moc qdbusconnection_p.moc qdbusabstractadaptor_p.moc qdbusbus.moc qdbusabstractinterface.moc +CLEANFILES = $(MOCS) +BUILT_SOURCES = $(MOCS) + +libdbus_qt4_1_la_SOURCES = \ + qdbusbus.cpp \ + qdbusconnection.cpp \ + qdbuserror.cpp \ + qdbusintegrator.cpp \ + qdbusmarshall.cpp \ + qdbusmessage.cpp \ + qdbusserver.cpp \ + qdbustype.cpp \ + qdbusabstractinterface.cpp \ + qdbusinterface.cpp \ + qdbusxmlparser.cpp \ + qdbusutil.cpp \ + qdbusintrospection.cpp \ + qdbusabstractadaptor.cpp \ + qdbusthread.cpp \ + qdbusinternalfilters.cpp \ + qdbusmetaobject.cpp \ + qdbusmisc.cpp \ + qdbusxmlgenerator.cpp + +qdbusabstractadaptor.lo: qdbusabstractadaptor.moc qdbusabstractadaptor_p.moc +qdbusabstractinterface.lo: qdbusabstractinterface.moc +qdbusbus.lo: qdbusbus.moc +qdbusserver.lo: qdbusserver.moc +qdbusintegrator.lo: qdbusconnection_p.moc + +libdbus_qt4_1_la_LIBADD= $(DBUS_QT_LIBS) $(top_builddir)/dbus/libdbus-1.la +libdbus_qt4_1_la_LDFLAGS= -version-info 1:0 -no-undefined +libdbus_qt4_1_la_CPPFLAGS= -DQDBUS_MAKEDLL + +EXTRA_DIST = qt-dbus.qdocconf + +%.moc: %.h + $(QT_MOC) $< > $@ diff --git a/qt/src/qdbus.h b/qt/src/qdbus.h new file mode 100644 index 00000000..60c35825 --- /dev/null +++ b/qt/src/qdbus.h @@ -0,0 +1,52 @@ +/* qdbus.h precompiled header + * + * Copyright (C) 2005 Harald Fernengel + * + * Licensed under the Academic Free License version 2.1 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#ifndef QDBUS_H +#define QDBUS_H + +#include + +#if !defined(DBUS_COMPILATION) +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +#else +# include "qdbusabstractadaptor.h" +# include "qdbusabstractinterface.h" +# include "qdbusbus.h" +# include "qdbusconnection.h" +# include "qdbuserror.h" +# include "qdbusinterface.h" +# include "qdbusmessage.h" +# include "qdbusreply.h" +# include "qdbusserver.h" +# include "qdbusutil.h" +#endif + +#endif diff --git a/qt/src/qdbusabstractadaptor.cpp b/qt/src/qdbusabstractadaptor.cpp new file mode 100644 index 00000000..b7c41888 --- /dev/null +++ b/qt/src/qdbusabstractadaptor.cpp @@ -0,0 +1,336 @@ +/* -*- mode: C++ -*- + * + * Copyright (C) 2006 Trolltech AS. All rights reserved. + * Author: Thiago Macieira + * + * Licensed under the Academic Free License version 2.1 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "qdbusabstractadaptor.h" + +#include +#include + +#include "qdbusconnection.h" + +#include "qdbusconnection_p.h" // for qDBusParametersForMethod +#include "qdbusabstractadaptor_p.h" + +struct QDBusAdaptorInit +{ + QSignalSpyCallbackSet callbacks; + QDBusAdaptorInit() + { + extern void qt_register_signal_spy_callbacks(const QSignalSpyCallbackSet &callback_set); + callbacks.signal_begin_callback = QDBusAdaptorConnector::signalBeginCallback; + callbacks.signal_end_callback = QDBusAdaptorConnector::signalEndCallback; + callbacks.slot_begin_callback = 0; + callbacks.slot_end_callback = 0; + qt_register_signal_spy_callbacks(callbacks); + + //QDBusAdaptorConnector::id = QObject::registerUserData(); + } +}; + +Q_GLOBAL_STATIC(QDBusAdaptorInit, qAdaptorInit) + +QDBusAdaptorConnector *qDBusFindAdaptorConnector(QObject *obj) +{ + (void)qAdaptorInit(); + + if (!obj) + return 0; + QDBusAdaptorConnector *connector = qFindChild(obj); + if (connector) + connector->polish(); + return connector; +} + +QDBusAdaptorConnector *qDBusFindAdaptorConnector(QDBusAbstractAdaptor *adaptor) +{ + return qDBusFindAdaptorConnector(adaptor->parent()); +} + +QDBusAdaptorConnector *qDBusCreateAdaptorConnector(QObject *obj) +{ + (void)qAdaptorInit(); + + QDBusAdaptorConnector *connector = qDBusFindAdaptorConnector(obj); + if (connector) + return connector; + return new QDBusAdaptorConnector(obj); +} + +QString QDBusAbstractAdaptorPrivate::retrieveIntrospectionXml(QDBusAbstractAdaptor *adaptor) +{ + return adaptor->d->xml; +} + +void QDBusAbstractAdaptorPrivate::saveIntrospectionXml(QDBusAbstractAdaptor *adaptor, + const QString &xml) +{ + adaptor->d->xml = xml; +} + +/*! + \page usingannotations.html + \title Using annotations in adaptors + + It is currently not possible to specify arbitrary annotations in adaptors. +*/ + +/*! + \class QDBusAbstractAdaptor + \brief Abstract adaptor for D-Bus adaptor classes. + + The QDBusAbstractAdaptor class is the starting point for all objects intending to provide + interfaces to the external world using D-Bus. This is accomplished by attaching a one or more + classes derived from QDBusAbstractAdaptor to a normal QObject and then registering that QObject + with QDBusConnection::registerObject. QDBusAbstractAdaptor objects are intended to be + light-weight wrappers, mostly just relaying calls into the real object (see object()) and the + signals from it. + + Each QDBusAbstractAdaptor-derived class should define the D-Bus interface it is implementing + using the Q_CLASSINFO macro in the class definition. + + QDBusAbstractAdaptor uses the standard QObject mechanism of signals, slots and properties to + determine what signals, methods and properties to export to the bus. Any signal emitted by + QDBusAbstractAdaptor-derived classes will be automatically be relayed through any D-Bus + connections the object is registered on. + + Classes derived from QDBusAbstractAdaptor must be created on the heap using the \a new operator + and must not be deleted by the user (they will be deleted automatically when the object they are + connected to is also deleted). + + \sa {usingadaptors.html}{Using adaptors}, QDBusConnection +*/ + +/*! + Constructs a QDBusAbstractAdaptor with \a parent as the object we refer to. +*/ +QDBusAbstractAdaptor::QDBusAbstractAdaptor(QObject* parent) + : QObject(parent), d(new QDBusAbstractAdaptorPrivate) +{ + QDBusAdaptorConnector *connector = qDBusCreateAdaptorConnector(parent); + + connector->waitingForPolish = true; + QTimer::singleShot(0, connector, SLOT(polish())); +} + +/*! + Destroys the adaptor. + + \warning Adaptors are destroyed automatically when the real object they refer to is + destroyed. Do not delete the adaptors yourself. +*/ +QDBusAbstractAdaptor::~QDBusAbstractAdaptor() +{ + delete d; +} + +/*! + Returns the QObject that we're the adaptor for. This is the same object that was passed as an + argument to the QDBusAbstractAdaptor constructor. +*/ +QObject* QDBusAbstractAdaptor::object() const +{ + return parent(); +} + +/*! + Toggles automatic signal relaying from the real object (see object()). + + Automatic signal relaying consists of signal-to-signal connection of the signals on the parent + that have the exact same method signatue in both classes. + + If \a enable is set to true, connect the signals; if set to false, disconnect all signals. +*/ +void QDBusAbstractAdaptor::setAutoRelaySignals(bool enable) +{ + const QMetaObject *us = metaObject(); + const QMetaObject *them = parent()->metaObject(); + for (int idx = staticMetaObject.methodCount(); idx < us->methodCount(); ++idx) { + QMetaMethod mm = us->method(idx); + + if (mm.methodType() != QMetaMethod::Signal) + continue; + + // try to connect/disconnect to a signal on the parent that has the same method signature + QByteArray sig = QMetaObject::normalizedSignature(mm.signature()); + if (them->indexOfSignal(sig) == -1) + continue; + sig.prepend(QSIGNAL_CODE + '0'); + parent()->disconnect(sig, this, sig); + if (enable) + connect(parent(), sig, sig); + } +} + +QDBusAdaptorConnector::QDBusAdaptorConnector(QObject *parent) + : QObject(parent), waitingForPolish(false), lastSignalIdx(0), argv(0) +{ +} + +QDBusAdaptorConnector::~QDBusAdaptorConnector() +{ +} + +void QDBusAdaptorConnector::addAdaptor(QDBusAbstractAdaptor *adaptor) +{ + // find the interface name + const QMetaObject *mo = adaptor->metaObject(); + while (mo != &QDBusAbstractAdaptor::staticMetaObject) { + int ciend = mo->classInfoCount(); + for (int i = mo->classInfoOffset(); i < ciend; ++i) { + QMetaClassInfo mci = mo->classInfo(i); + if (strcmp(mci.name(), QCLASSINFO_DBUS_INTERFACE) == 0 && *mci.value()) { + // find out if this interface exists first + QString interface = QString::fromUtf8(mci.value()); + AdaptorMap::Iterator it = qLowerBound(adaptors.begin(), adaptors.end(), interface); + if (it != adaptors.end() && it->interface == interface) { + // exists. Replace it (though it's probably the same) + it->adaptor = adaptor; + it->metaObject = mo; + } else { + // create a new one + AdaptorData entry; + entry.interface = interface; + entry.adaptor = adaptor; + entry.metaObject = mo; + adaptors << entry; + } + } + } + + mo = mo->superClass(); + } + + // connect the adaptor's signals to our relaySlot slot + mo = adaptor->metaObject(); + for (int i = QDBusAbstractAdaptor::staticMetaObject.methodCount(); + i < mo->methodCount(); ++i) { + QMetaMethod mm = mo->method(i); + + if (mm.methodType() != QMetaMethod::Signal) + continue; + + QByteArray sig = mm.signature(); + sig.prepend(QSIGNAL_CODE + '0'); + disconnect(adaptor, sig, this, SLOT(relaySlot())); + connect(adaptor, sig, this, SLOT(relaySlot())); + } +} + +void QDBusAdaptorConnector::polish() +{ + if (!waitingForPolish) + return; // avoid working multiple times if multiple adaptors were added + + waitingForPolish = false; + const QObjectList &objs = parent()->children(); + foreach (QObject *obj, objs) { + QDBusAbstractAdaptor *adaptor = qobject_cast(obj); + if (adaptor) + addAdaptor(adaptor); + } + + // sort the adaptor list + qSort(adaptors); +} + +void QDBusAdaptorConnector::relaySlot() +{ + relay(sender()); +} + +void QDBusAdaptorConnector::relay(QObject *sender) +{ + // we're being called because there is a signal being emitted that we must relay + Q_ASSERT(lastSignalIdx); + Q_ASSERT(argv); + Q_ASSERT(senderMetaObject); + + if (senderMetaObject != sender->metaObject()) { + qWarning("Inconsistency detected: QDBusAdaptorConnector::relay got called with unexpected sender object!"); + } else { + QMetaMethod mm = senderMetaObject->method(lastSignalIdx); + QObject *object = static_cast(sender)->parent(); + + // break down the parameter list + QList types; + int inputCount = qDBusParametersForMethod(mm, types); + if (inputCount == -1) + // invalid signal signature + // qDBusParametersForMethod has already complained + return; + if (inputCount + 1 != types.count() || + types.at(inputCount) == QDBusConnectionPrivate::messageMetaType) { + // invalid signal signature + // qDBusParametersForMethod has not yet complained about this one + qWarning("Cannot relay signal %s::%s", senderMetaObject->className(), mm.signature()); + return; + } + + QByteArray signature = QMetaObject::normalizedSignature(mm.signature()); + signature.truncate(signature.indexOf('(')); // remove parameter decoration + + QVariantList args; + for (int i = 1; i < types.count(); ++i) + args << QVariant(types.at(i), argv[i]); + + // find all the interfaces this signal belongs to + for (const QMetaObject *mo = senderMetaObject; mo != &QDBusAbstractAdaptor::staticMetaObject; + mo = mo->superClass()) { + if (lastSignalIdx < mo->methodOffset()) + break; + + for (int i = mo->classInfoOffset(); i < mo->classInfoCount(); ++i) { + QMetaClassInfo mci = mo->classInfo(i); + if (qstrcmp(mci.name(), QCLASSINFO_DBUS_INTERFACE) == 0 && *mci.value()) + // now emit the signal with all the information + emit relaySignal(object, mci.value(), signature.constData(), args); + } + } + } +} + +void QDBusAdaptorConnector::signalBeginCallback(QObject *caller, int method_index, void **argv) +{ + QDBusAbstractAdaptor *adaptor = qobject_cast(caller); + if (adaptor) { + QDBusAdaptorConnector *data = qDBusFindAdaptorConnector(adaptor); + data->lastSignalIdx = method_index; + data->argv = argv; + data->senderMetaObject = caller->metaObject(); + data->polish(); // make sure it's polished + } +} + +void QDBusAdaptorConnector::signalEndCallback(QObject *caller, int) +{ + QDBusAbstractAdaptor *adaptor = qobject_cast(caller); + if (adaptor) { + QDBusAdaptorConnector *data = qDBusFindAdaptorConnector(adaptor); + data->lastSignalIdx = 0; + data->argv = 0; + data->senderMetaObject = 0; + } +} + +#include "qdbusabstractadaptor.moc" +#include "qdbusabstractadaptor_p.moc" diff --git a/qt/src/qdbusabstractadaptor.h b/qt/src/qdbusabstractadaptor.h new file mode 100644 index 00000000..16fbf5d9 --- /dev/null +++ b/qt/src/qdbusabstractadaptor.h @@ -0,0 +1,50 @@ +/* -*- mode: C++ -*- + * + * Copyright (C) 2006 Trolltech AS. All rights reserved. + * Author: Thiago Macieira + * + * Licensed under the Academic Free License version 2.1 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef QDBUSABSTRACTADAPTOR_H +#define QDBUSABSTRACTADAPTOR_H + +#include +#include "qdbusmacros.h" + +class QDBusAbstractAdaptorPrivate; +class QDBUS_EXPORT QDBusAbstractAdaptor: public QObject +{ + Q_OBJECT +protected: + QDBusAbstractAdaptor(QObject *parent); + +public: + ~QDBusAbstractAdaptor(); + + Q_DECL_DEPRECATED QObject *object() const; + +protected: + void setAutoRelaySignals(bool enable); + +private: + friend class QDBusAbstractAdaptorPrivate; + QDBusAbstractAdaptorPrivate *d; +}; + +#endif diff --git a/qt/src/qdbusabstractadaptor_p.h b/qt/src/qdbusabstractadaptor_p.h new file mode 100644 index 00000000..71bfb582 --- /dev/null +++ b/qt/src/qdbusabstractadaptor_p.h @@ -0,0 +1,127 @@ +/* -*- mode: C++; set-fill-width: 100 -*- + * + * Copyright (C) 2006 Trolltech AS. All rights reserved. + * Author: Thiago Macieira + * + * Licensed under the Academic Free License version 2.1 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +// +// W A R N I N G +// ------------- +// +// This file is not part of the public API. This header file may +// change from version to version without notice, or even be +// removed. +// +// We mean it. +// +// + +#ifndef QDBUSABSTRACTADAPTORPRIVATE_H +#define QDBUSABSTRACTADAPTORPRIVATE_H + +#include +#include +#include +#include +#include +#include + +#define QCLASSINFO_DBUS_INTERFACE "D-Bus Interface" +#define QCLASSINFO_DBUS_INTROSPECTION "D-Bus Introspection" + +class QDBusAbstractAdaptor; +class QDBusAdaptorConnector; +class QDBusAdaptorManager; +class QDBusConnectionPrivate; + +#if QT_VERSION < 0x040200 +/* mirrored in qobject_p.h, DON'T CHANGE without prior warning */ +struct QSignalSpyCallbackSet +{ + typedef void (*BeginCallback)(QObject *caller, int method_index, void **argv); + typedef void (*EndCallback)(QObject *caller, int method_index); + BeginCallback signal_begin_callback, + slot_begin_callback; + EndCallback signal_end_callback, + slot_end_callback; +}; +#else +# error Qt 4.2.0 is supposed to have a better solution! + CHOKE! +#endif // Qt 4.2.0 + +class QDBusAbstractAdaptorPrivate +{ +public: + QString xml; + + static QString retrieveIntrospectionXml(QDBusAbstractAdaptor *adaptor); + static void saveIntrospectionXml(QDBusAbstractAdaptor *adaptor, const QString &xml); +}; + +class QDBusAdaptorConnector: public QObject +{ + Q_OBJECT +public: // typedefs + struct AdaptorData + { + QString interface; + QDBusAbstractAdaptor *adaptor; + const QMetaObject *metaObject; + + inline bool operator<(const AdaptorData &other) const + { return interface < other.interface; } + inline bool operator<(const QString &other) const + { return interface < other; } + }; + typedef QVector AdaptorMap; + +public: // methods + explicit QDBusAdaptorConnector(QObject *parent); + ~QDBusAdaptorConnector(); + + void addAdaptor(QDBusAbstractAdaptor *adaptor); + void relay(QObject *sender); + +public slots: + void relaySlot(); + void polish(); + +signals: + void relaySignal(QObject *obj, const char *interface, const char *name, const QVariantList &args); + +public: // member variables + AdaptorMap adaptors; + bool waitingForPolish : 1; + + int lastSignalIdx; + void **argv; + const QMetaObject *senderMetaObject; + +public: // static members + static void signalBeginCallback(QObject *caller, int method_index, void **argv); + static void signalEndCallback(QObject *caller, int method_index); + //static int id; +}; + +extern QDBusAdaptorConnector *qDBusFindAdaptorConnector(QObject *object); +extern QDBusAdaptorConnector *qDBusCreateAdaptorConnector(QObject *object); + +#endif // QDBUSABSTRACTADAPTORPRIVATE_H diff --git a/qt/src/qdbusabstractinterface.cpp b/qt/src/qdbusabstractinterface.cpp new file mode 100644 index 00000000..2a6bcf04 --- /dev/null +++ b/qt/src/qdbusabstractinterface.cpp @@ -0,0 +1,389 @@ +/* -*- C++ -*- + * + * Copyright (C) 2005 Thiago Macieira + * Copyright (C) 2006 Trolltech AS. All rights reserved. + * Author: Thiago Macieira + * + * Licensed under the Academic Free License version 2.1 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "qdbusabstractinterface.h" + +#include "qdbusabstractinterface_p.h" +#include "qdbusmetaobject_p.h" +#include "qdbusconnection_p.h" + +QVariant QDBusAbstractInterfacePrivate::property(const QMetaProperty &mp) const +{ + // try to read this property + QDBusMessage msg = QDBusMessage::methodCall(service, path, DBUS_INTERFACE_PROPERTIES, + QLatin1String("Get")); + msg << interface << QString::fromUtf8(mp.name()); + QDBusMessage reply = connp->sendWithReply(msg, QDBusConnection::NoUseEventLoop); + + if (reply.type() == QDBusMessage::ReplyMessage && reply.count() == 1 && + reply.signature() == QLatin1String("v")) { + QVariant value = QDBusTypeHelper::fromVariant(reply.at(0)); + + // make sure the type is right + if (qstrcmp(mp.typeName(), value.typeName()) == 0) { + if (mp.type() == QVariant::LastType) + // QVariant is special in this context + return QDBusTypeHelper::fromVariant(value); + + return value; + } + } + + // there was an error... + if (reply.type() == QDBusMessage::ErrorMessage) + lastError = reply; + else if (reply.signature() != QLatin1String("v")) { + QString errmsg = QLatin1String("Invalid signature `%1' in return from call to " + DBUS_INTERFACE_PROPERTIES); + lastError = QDBusError(QDBusError::InvalidSignature, errmsg.arg(reply.signature())); + } else { + QString errmsg = QLatin1String("Unexpected type `%1' when retrieving property " + "`%2 %3.%4'"); + lastError = QDBusError(QDBusError::InvalidSignature, + errmsg.arg(QLatin1String(reply.at(0).typeName()), + QLatin1String(mp.typeName()), + interface, QString::fromUtf8(mp.name()))); + } + + return QVariant(); +} + +void QDBusAbstractInterfacePrivate::setProperty(const QMetaProperty &mp, const QVariant &value) +{ + // send the value + QDBusMessage msg = QDBusMessage::methodCall(service, path, DBUS_INTERFACE_PROPERTIES, + QLatin1String("Set")); + msg.setSignature(QLatin1String("ssv")); + msg << interface << QString::fromUtf8(mp.name()) << value; + QDBusMessage reply = connp->sendWithReply(msg, QDBusConnection::NoUseEventLoop); + + if (reply.type() != QDBusMessage::ReplyMessage) + lastError = reply; +} + +/*! + \class QDBusAbstractInterface + \brief Base class for all D-Bus interfaces in the QtDBus binding, allowing access to remote interfaces. + + Generated-code classes also derive from QDBusAbstractInterface, all methods described here are also + valid for generated-code classes. In addition to those described here, generated-code classes + provide member functions for the remote methods, which allow for compile-time checking of the + correct parameters and return values, as well as property type-matching and signal + parameter-matching. + + \sa {dbusidl2cpp.html}{The dbusidl2cpp compiler}, QDBusInterface +*/ + +/*! + \enum QDBusAbstractInterface::CallMode + + Specifies how a call should be placed. The valid options are: + \value NoWaitForReply place the call but don't wait for the reply (the reply's contents + will be discarded) + \value NoUseEventLoop don't use an event loop to wait for a reply, but instead block on + network operations while waiting. This option means the + user-interface may not be updated for the duration of the call. + \value UseEventLoop use the Qt event loop to wait for a reply. This option means the + user-interface will update, but it also means other events may + happen, like signal delivery and other D-Bus method calls. + + When using UseEventLoop, applications must be prepared for reentrancy in any function. +*/ + +/*! + \internal +*/ +QDBusAbstractInterface::QDBusAbstractInterface(QDBusAbstractInterfacePrivate* d) +#if QT_VERSION < 0x040200 + : d_ptr(d) +{ + d_ptr->q_ptr = this; +} +#endif + +/*! + Releases this object's resources. +*/ +QDBusAbstractInterface::~QDBusAbstractInterface() +{ + delete d_ptr; +} + +/*! + Returns true if this is a valid reference to a remote object. It returns false if + there was an error during the creation of this interface (for instance, if the remote + application does not exist). + + Note: when dealing with remote objects, it is not always possible to determine if it + exists when creating a QDBusInterface or QDBusInterfacePtr object. +*/ +bool QDBusAbstractInterface::isValid() const +{ + return d_func()->isValid; +} + +/*! + Returns the connection this interface is assocated with. +*/ +QDBusConnection QDBusAbstractInterface::connection() const +{ + return d_func()->conn; +} + +/*! + Returns the name of the service this interface is associated with. +*/ +QString QDBusAbstractInterface::service() const +{ + return d_func()->service; +} + +/*! + Returns the object path that this interface is associated with. +*/ +QString QDBusAbstractInterface::path() const +{ + return d_func()->path; +} + +/*! + Returns the name of this interface. +*/ +QString QDBusAbstractInterface::interface() const +{ + return d_func()->interface; +} + +/*! + Returns the error the last operation produced, or an invalid error if the last operation did not + produce an error. +*/ +QDBusError QDBusAbstractInterface::lastError() const +{ + return d_func()->lastError; +} + +/*! + \threadsafe + Places a call to the remote method specified by \a method on this interface, using \a args as + arguments. This function returns the message that was received as a reply, which can be a normal + QDBusMessage::ReplyMessage (indicating success) or QDBusMessage::ErrorMessage (if the call + failed). The \a mode parameter specifies how this call should be placed. + + If the call succeeds, lastError() will be cleared; otherwise, it will contain the error this + call produced. + + Normally, you should place calls using call(). + + \warning If you use \c UseEventLoop, your code must be prepared to deal with any reentrancy: + other method calls and signals may be delivered before this function returns, as well + as other Qt queued signals and events. +*/ +QDBusMessage QDBusAbstractInterface::callWithArgs(const QString& method, const QList& args, + CallMode mode) +{ + Q_D(QDBusAbstractInterface); + + QString m = method, sig; + // split out the signature from the method + int pos = method.indexOf(QLatin1Char('.')); + if (pos != -1) { + m.truncate(pos); + sig = method.mid(pos + 1); + } + + if (mode == AutoDetect) { + // determine if this a sync or async call + mode = NoUseEventLoop; + const QMetaObject *mo = metaObject(); + QByteArray match = method.toLatin1() + '('; + + for (int i = staticMetaObject.methodCount(); i < mo->methodCount(); ++i) { + QMetaMethod mm = mo->method(i); + if (QByteArray(mm.signature()).startsWith(match)) { + // found a method with the same name as what we're looking for + // hopefully, nobody is overloading asynchronous and synchronous methods with + // the same name + + QList tags = QByteArray(mm.tag()).split(' '); + if (tags.contains("async") || tags.contains("Q_ASYNC")) + mode = NoWaitForReply; + + break; + } + } + } + + QDBusMessage msg = QDBusMessage::methodCall(service(), path(), interface(), m); + msg.setSignature(sig); + msg.QList::operator=(args); + + QDBusMessage reply; + if (mode != NoWaitForReply) + reply = d->conn.sendWithReply(msg, mode == UseEventLoop ? + QDBusConnection::UseEventLoop : QDBusConnection::NoUseEventLoop); + else + d->conn.send(msg); + + d->lastError = reply; // will clear if reply isn't an error + + // ensure that there is at least one element + if (reply.isEmpty()) + reply << QVariant(); + + return reply; +} + +/*! + \overload + Places a call to the remote method specified by \a method on this interface, using \a args as + arguments. This function will return immediately after queueing the call. The reply from the + remote function or any errors emitted by it will be delivered to the \a slot slot on object \a + receiver. + + This function returns true if the queueing succeeded: it does not indicate that the call + succeeded. If it failed, the slot will be called with an error message. lastError() will not be + set under those circumstances. + + \sa QDBusError, QDBusMessage +*/ +bool QDBusAbstractInterface::callWithArgs(const QString &method, QObject *receiver, const char *slot, + const QList &args) +{ + Q_D(QDBusAbstractInterface); + + QString m = method, sig; + // split out the signature from the method + int pos = method.indexOf(QLatin1Char('.')); + if (pos != -1) { + m.truncate(pos); + sig = method.mid(pos + 1); + } + + QDBusMessage msg = QDBusMessage::methodCall(service(), path(), interface(), m); + msg.setSignature(sig); + msg.QList::operator=(args); + + d->lastError = 0; // clear + return d->conn.sendWithReplyAsync(msg, receiver, slot); +} + +/*! + \internal + Catch signal connections. +*/ +void QDBusAbstractInterface::connectNotify(const char *signal) +{ + // someone connecting to one of our signals + Q_D(QDBusAbstractInterface); + + d->connp->connectRelay(d->service, d->path, d->interface, this, signal); +} + +/*! + \internal + Catch signal disconnections. +*/ +void QDBusAbstractInterface::disconnectNotify(const char *signal) +{ + // someone disconnecting from one of our signals + Q_D(QDBusAbstractInterface); + + d->connp->disconnectRelay(d->service, d->path, d->interface, this, signal); +} + +/*! + \internal + Get the value of the property \a propname. +*/ +QVariant QDBusAbstractInterface::internalPropGet(const char *propname) const +{ + // assume this property exists and is readable + // we're only called from generated code anyways + + int idx = metaObject()->indexOfProperty(propname); + if (idx != -1) + return d_func()->property(metaObject()->property(idx)); + qWarning("QDBusAbstractInterface::internalPropGet called with unknown property '%s'", propname); + return QVariant(); // error +} + +/*! + \internal + Set the value of the property \a propname to \a value. +*/ +void QDBusAbstractInterface::internalPropSet(const char *propname, const QVariant &value) +{ + Q_D(QDBusAbstractInterface); + + // assume this property exists and is writeable + // we're only called from generated code anyways + + int idx = metaObject()->indexOfProperty(propname); + if (idx != -1) + d->setProperty(metaObject()->property(idx), value); + else + qWarning("QDBusAbstractInterface::internalPropGet called with unknown property '%s'", propname); +} + +/*! + \overload + \fn QDBusMessage QDBusAbstractInterface::call(const QString &method) + + Calls the method \a method on this interface and passes the parameters to this function to the + method. + + The parameters to \c call are passed on to the remote function via D-Bus as input + arguments. Output arguments are returned in the QDBusMessage reply. If the reply is an error + reply, lastError() will also be set to the contents of the error message. + + This function is implemented by actually 9 different function overloads called \c call, so you + can pass up to 8 parameters to your function call, which can be of any type accepted by QtDBus + (see the \l {allowedparameters.html}{allowed parameters} page for information on what types are + accepted). + + It can be used the following way: + + \code + QString value = retrieveValue(); + QDBusMessage reply; + + QDBusReply api = interface->call(QLatin1String("GetAPIVersion")); + if (api >= 14) + reply = interface->call(QLatin1String("ProcessWorkUnicode"), value); + else + reply = interface->call(QLatin1String("ProcessWork"), QLatin1String("UTF-8"), value.toUtf8()); + \endcode + + This example illustrates function calling with 0, 1 and 2 parameters and illustrates different + parameter types passed in each (the first call to \c "ProcessWorkUnicode" will contain one + Unicode string, the second call to \c "ProcessWork" will contain one string and one byte array). + + \warning This function reenters the Qt event loop in order to wait for the reply, excluding user + input. During the wait, it may deliver signals and other method calls to your + application. Therefore, it must be prepared to handle a reentrancy whenever a call is + placed with call(). +*/ + +#include "qdbusabstractinterface.moc" diff --git a/qt/src/qdbusabstractinterface.h b/qt/src/qdbusabstractinterface.h new file mode 100644 index 00000000..aa6d00d7 --- /dev/null +++ b/qt/src/qdbusabstractinterface.h @@ -0,0 +1,257 @@ +/* -*- C++ -*- + * + * Copyright (C) 2005 Thiago Macieira + * Copyright (C) 2006 Trolltech AS. All rights reserved. + * Author: Thiago Macieira + * + * Licensed under the Academic Free License version 2.1 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef QDBUSABSTRACTINTERFACE_H +#define QDBUSABSTRACTINTERFACE_H + +#include +#include +#include +#include + +#include "qdbusmessage.h" +#include "qdbustypehelper_p.h" + +class QDBusConnection; +class QDBusError; + +class QDBusAbstractInterfacePrivate; +class QDBUS_EXPORT QDBusAbstractInterface: public QObject +{ + Q_OBJECT + +public: + enum CallMode { + NoWaitForReply, + UseEventLoop, + NoUseEventLoop, + AutoDetect + }; + +public: + virtual ~QDBusAbstractInterface(); + bool isValid() const; + + QDBusConnection connection() const; + + QString service() const; + QString path() const; + QString interface() const; + + QDBusError lastError() const; + + QDBusMessage callWithArgs(const QString &method, const QList &args = QList(), + CallMode mode = AutoDetect); + bool callWithArgs(const QString &method, QObject *receiver, const char *slot, + const QList &args = QList()); + + inline QDBusMessage call(const QString &m) + { + return callWithArgs(m); + } + + inline QDBusMessage call(CallMode mode, const QString &m) + { + return callWithArgs(m, QList(), mode); + } + +#ifndef Q_QDOC +private: + template inline QVariant qvfv(const T &t) + { return QDBusTypeHelper::toVariant(t); } + +public: + template + inline QDBusMessage call(const QString &m, const T1 &t1) + { + QList args; + args << qvfv(t1); + return callWithArgs(m, args); + } + + template + inline QDBusMessage call(const QString &m, const T1 &t1, const T2 &t2) + { + QList args; + args << qvfv(t1) << qvfv(t2); + return callWithArgs(m, args); + } + + template + inline QDBusMessage call(const QString &m, const T1 &t1, const T2 &t2, const T3 &t3) + { + QList args; + args << qvfv(t1) << qvfv(t2) << qvfv(t3); + return callWithArgs(m, args); + } + + template + inline QDBusMessage call(const QString &m, const T1 &t1, const T2 &t2, const T3 &t3, + const T4 &t4) + { + QList args; + args << qvfv(t1) << qvfv(t2) << qvfv(t3) + << qvfv(t4); + return callWithArgs(m, args); + } + + template + inline QDBusMessage call(const QString &m, const T1 &t1, const T2 &t2, const T3 &t3, + const T4 &t4, const T5 &t5) + { + QList args; + args << qvfv(t1) << qvfv(t2) << qvfv(t3) + << qvfv(t4) << qvfv(t5); + return callWithArgs(m, args); + } + + template + inline QDBusMessage call(const QString &m, const T1 &t1, const T2 &t2, const T3 &t3, + const T4 &t4, const T5 &t5, const T6 &t6) + { + QList args; + args << qvfv(t1) << qvfv(t2) << qvfv(t3) + << qvfv(t4) << qvfv(t5) << qvfv(t6); + return callWithArgs(m, args); + } + + template + inline QDBusMessage call(const QString &m, const T1 &t1, const T2 &t2, const T3 &t3, + const T4 &t4, const T5 &t5, const T6 &t6, const T7 &t7) + { + QList args; + args << qvfv(t1) << qvfv(t2) << qvfv(t3) + << qvfv(t4) << qvfv(t5) << qvfv(t6) + << qvfv(t7); + return callWithArgs(m, args); + } + + template + inline QDBusMessage call(const QString &m, const T1 &t1, const T2 &t2, const T3 &t3, + const T4 &t4, const T5 &t5, const T6 &t6, const T7 &t7, const T8 &t8) + { + QList args; + args << qvfv(t1) << qvfv(t2) << qvfv(t3) + << qvfv(t4) << qvfv(t5) << qvfv(t6) + << qvfv(t7) << qvfv(t8); + return callWithArgs(m, args); + } + + template + inline QDBusMessage call(CallMode mode, const QString &m, const T1 &t1) + { + QList args; + args << qvfv(t1); + return callWithArgs(m, args, mode); + } + + template + inline QDBusMessage call(CallMode mode, const QString &m, const T1 &t1, const T2 &t2) + { + QList args; + args << qvfv(t1) << qvfv(t2); + return callWithArgs(m, args, mode); + } + + template + inline QDBusMessage call(CallMode mode, const QString &m, const T1 &t1, const T2 &t2, + const T3 &t3) + { + QList args; + args << qvfv(t1) << qvfv(t2) << qvfv(t3); + return callWithArgs(m, args, mode); + } + + template + inline QDBusMessage call(CallMode mode, const QString &m, const T1 &t1, const T2 &t2, + const T3 &t3, const T4 &t4) + { + QList args; + args << qvfv(t1) << qvfv(t2) << qvfv(t3) + << qvfv(t4); + return callWithArgs(m, args, mode); + } + + template + inline QDBusMessage call(CallMode mode, const QString &m, const T1 &t1, const T2 &t2, + const T3 &t3, const T4 &t4, const T5 &t5) + { + QList args; + args << qvfv(t1) << qvfv(t2) << qvfv(t3) + << qvfv(t4) << qvfv(t5); + return callWithArgs(m, args, mode); + } + + template + inline QDBusMessage call(CallMode mode, const QString &m, const T1 &t1, const T2 &t2, + const T3 &t3, const T4 &t4, const T5 &t5, const T6 &t6) + { + QList args; + args << qvfv(t1) << qvfv(t2) << qvfv(t3) + << qvfv(t4) << qvfv(t5) << qvfv(t6); + return callWithArgs(m, args, mode); + } + + template + inline QDBusMessage call(CallMode mode, const QString &m, const T1 &t1, const T2 &t2, + const T3 &t3, const T4 &t4, const T5 &t5, const T6 &t6, const T7 &t7) + { + QList args; + args << qvfv(t1) << qvfv(t2) << qvfv(t3) + << qvfv(t4) << qvfv(t5) << qvfv(t6) + << qvfv(t7); + return callWithArgs(m, args, mode); + } + + template + inline QDBusMessage call(CallMode mode, const QString &m, const T1 &t1, const T2 &t2, + const T3 &t3, const T4 &t4, const T5 &t5, const T6 &t6, const T7 &t7, + const T8 &t8) + { + QList args; + args << qvfv(t1) << qvfv(t2) << qvfv(t3) + << qvfv(t4) << qvfv(t5) << qvfv(t6) + << qvfv(t7) << qvfv(t8); + return callWithArgs(m, args, mode); + } +#endif + +protected: + QDBusAbstractInterface(QDBusAbstractInterfacePrivate *); + void connectNotify(const char *signal); + void disconnectNotify(const char *signal); + QVariant internalPropGet(const char *propname) const; + void internalPropSet(const char *propname, const QVariant &value); + +private: + friend class QDBusInterface; + QDBusAbstractInterfacePrivate *d_ptr; // remove for Qt 4.2.0 + + Q_DECLARE_PRIVATE(QDBusAbstractInterface) + Q_DISABLE_COPY(QDBusAbstractInterface) +}; + +#endif diff --git a/qt/src/qdbusabstractinterface_p.h b/qt/src/qdbusabstractinterface_p.h new file mode 100644 index 00000000..43807071 --- /dev/null +++ b/qt/src/qdbusabstractinterface_p.h @@ -0,0 +1,72 @@ +/* + * + * Copyright (C) 2006 Thiago José Macieira + * Copyright (C) 2006 Trolltech AS. All rights reserved. + * Author: Thiago Macieira + * + * Licensed under the Academic Free License version 2.1 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +// +// W A R N I N G +// ------------- +// +// This file is not part of the public API. This header file may +// change from version to version without notice, or even be +// removed. +// +// We mean it. +// +// + +#ifndef QDBUSABSTRACTINTERFACEPRIVATE_H +#define QDBUSABSTRACTINTERFACEPRIVATE_H + +#include "qdbusabstractinterface.h" +#include "qdbusconnection.h" +#include "qdbuserror.h" + +#define ANNOTATION_NO_WAIT "org.freedesktop.DBus.Method.NoReply" + +class QDBusAbstractInterfacePrivate//: public QObjectPrivate +{ +public: + Q_DECLARE_PUBLIC(QDBusAbstractInterface) + + QDBusAbstractInterface *q_ptr; // remove in Qt 4.2 + QDBusConnection conn; + QDBusConnectionPrivate *connp; + QString service; + QString path; + QString interface; + mutable QDBusError lastError; + bool isValid; + + inline QDBusAbstractInterfacePrivate(const QDBusConnection& con, QDBusConnectionPrivate *conp, + const QString &serv, const QString &p, const QString &iface) + : conn(con), connp(conp), service(serv), path(p), interface(iface), isValid(true) + { } + virtual ~QDBusAbstractInterfacePrivate() { } + + // these functions do not check if the property is valid + QVariant property(const QMetaProperty &mp) const; + void setProperty(const QMetaProperty &mp, const QVariant &value); +}; + + +#endif diff --git a/qt/src/qdbusbus.cpp b/qt/src/qdbusbus.cpp new file mode 100644 index 00000000..02c231eb --- /dev/null +++ b/qt/src/qdbusbus.cpp @@ -0,0 +1,302 @@ +/* -*- C++ -*- + * + * Copyright (C) 2006 Trolltech AS. All rights reserved. + * Author: Thiago Macieira + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +/* + * This file was generated by dbusidl2cpp version 0.3 + * when processing input file - + * + * dbusidl2cpp is Copyright (C) 2006 Trolltech AS. All rights reserved. + * + * This file has been hand-edited! Be careful when re-generating it! + * + */ + +#include "qdbusbus.h" + +#include +#include +#include +#include +#include +#include + +/* + * Implementation of interface class QDBusBusService + */ + +/*! + \class QDBusBusService + \brief Provides access to the D-Bus bus daemon service. + +*/ + +/*! + \enum QDBusBusService::RequestNameOption + + Flags for requesting a name on the bus. + + \value AllowReplacingName Allow another application requesting the same name to take the name + from this application. + \value ReplaceExistingName If another application already has the name and allows replacing, + take the name and assign it to us. + \value DoNotQueueName Without this flag, if an application requests a name that is already + owned and does not allow replacing, it will be queued until the + name is given up. If this flag is given, no queueing will be + performed and the requestName() call will simply fail. +*/ + +/*! + \enum QDBusBusService::RequestNameReply + + The possible return values from requestName(): + + \value PrimaryOwnerReply The caller is now the primary owner of the name. + \value InQueueReply The caller is in queue for the name, but does not own it. + \value NameExistsReply The name exists and could not be replaced, or the caller did + specify DoNotQueueName. + \value AlreadyOwnerReply The caller tried to request a name that it already owns. +*/ + +/*! + \enum QDBusBusService::ReleaseNameReply + + The possible return values from releaseName(): + + \value NameReleasedReply The caller released his claim on the name. + \value NameNonExistentReply The caller tried to release a name that did not exist. + \value NotOwnerReply The caller tried to release a name that it did not own or was not in + queue for. +*/ + +/*! + \enum QDBusBusService::StartServiceReply + + The possible return values from startServiceByName(): + + \value Success The service was successfully started. + \value AlreadyRunning The service was already running. +*/ + +/*! + \internal +*/ +const char *QDBusBusService::staticInterfaceName() +{ return "org.freedesktop.DBus"; } + + +/*! + \internal +*/ +QDBusBusService::QDBusBusService(QDBusAbstractInterfacePrivate *p) + : QDBusAbstractInterface(p) +{ + connect(this, SIGNAL(NameAcquired(QString)), this, SIGNAL(nameAcquired(QString))); + connect(this, SIGNAL(NameLost(QString)), this, SIGNAL(nameLost(QString))); + connect(this, SIGNAL(NameOwnerChanged(QString,QString,QString)), + this, SIGNAL(nameOwnerChanged(QString,QString,QString))); +} + +/*! + \internal +*/ +QDBusBusService::~QDBusBusService() +{ +} + +/*! + \fn QDBusBusService::hello() + \internal + Sends a "Hello" request to the bus service. You do not want to call this. +*/ +QDBusReply QDBusBusService::Hello() +{ + return call(QLatin1String("Hello")); +} + +/*! + \fn QDBusBusService::nameOwner(const QString &name) + Returns the unique connection name of the primary owner of the name \a name. If the requested + name doesn't have an owner, returns a org.freedesktop.DBus.Error.NameHasNoOwner error. +*/ +QDBusReply QDBusBusService::GetNameOwner(const QString &name) +{ + return call(QLatin1String("GetNameOwner.s"), name); +} + +/*! + \fn QDBusBusService::listNames() + Lists all names currently existing on the bus. +*/ +QDBusReply QDBusBusService::ListNames() +{ + return call(QLatin1String("ListNames")); +} + +/*! + \fn QDBusBusService::listQueuedOwners(const QString &service) + Returns a list of all unique connection names in queue for the service name \a service. +*/ +QDBusReply QDBusBusService::ListQueuedOwners(const QString &service) +{ + return call(QLatin1String("ListQueuedOwners.s"), service); +} + +/*! + \fn QDBusBusService::nameHasOwner(const QString &service) + Returns true if the service name \a service has an owner. +*/ +QDBusReply QDBusBusService::NameHasOwner(const QString &service) +{ + return call(QLatin1String("NameHasOwner.s"), service); +} + +/*! + \fn QDBusBusService::addMatch(const QString &rule) + Adds the rule \a rule for requesting messages from the bus. + + \sa removeMatch() +*/ +QDBusReply QDBusBusService::AddMatch(const QString &rule) +{ + return call(QLatin1String("AddMatch.s"), rule); +} + +/*! + \fn QDBusBusService::removeMatch(const QString &rule) + Removes the rule \a rule, that had previously been added with addMatch(). +*/ +QDBusReply QDBusBusService::RemoveMatch(const QString &rule) +{ + return call(QLatin1String("RemoveMatch.s"), rule); +} + +/*! + \fn QDBusBusService::connectionSELinuxSecurityContext(const QString &service) + Returns the SELinux security context of the process currently holding the bus service \a + service. +*/ +QDBusReply QDBusBusService::GetConnectionSELinuxSecurityContext(const QString &service) +{ + return call(QLatin1String("GetConnectionSELinuxSecurityContext.s"), service); +} + +/*! + \fn QDBusBusService::connectionUnixProcessID(const QString &service) + Returns the Unix Process ID (PID) for the process currently holding the bus service \a service. +*/ +QDBusReply QDBusBusService::GetConnectionUnixProcessID(const QString &service) +{ + return call(QLatin1String("GetConnectionUnixProcessID.s"), service); +} + +/*! + \fn QDBusBusService::connectionUnixUser(const QString &service) + Returns the Unix User ID (UID) for the process currently holding the bus service \a service. +*/ +QDBusReply QDBusBusService::GetConnectionUnixUser(const QString &service) +{ + return call(QLatin1String("GetConnectionUnixUser.s"), service); +} + +/*! + \fn QDBusBusService::reloadConfig() + Asks the D-Bus server daemon to reload its configuration. +*/ +QDBusReply QDBusBusService::ReloadConfig() +{ + return call(QLatin1String("ReloadConfig")); +} + +inline QDBUS_EXPORT int qDBusMetaTypeId(QDBusBusService::StartServiceReply *) +{ return QVariant::Int; } + +/*! + \fn QDBusBusService::startServiceByName(const QString &name, uint flags) + Requests that the bus start the service given by the name \a name. + + The \a flags parameter is currently not used. +*/ +QDBusReply +QDBusBusService::StartServiceByName(const QString &name, uint flags) +{ + return call(QLatin1String("StartServiceByName.su"), name, flags); +} + +inline QDBUS_EXPORT int qDBusMetaTypeId(QDBusBusService::RequestNameReply *) +{ return QVariant::Int; } + +/*! + \fn QDBusBusService::requestName(const QString &service, RequestNameOptions flags) + Requests the bus service name \a service from the bus. The \a flags parameter specifies how the + bus server daemon should act when the same name is requested by two different applications. + + \sa releaseName() +*/ +QDBusReply +QDBusBusService::RequestName(const QString &service, RequestNameOptions flags) +{ + return call(QLatin1String("RequestName.su"), service, uint(int(flags))); +} + +inline QDBUS_EXPORT int qDBusMetaTypeId(QDBusBusService::ReleaseNameReply *) +{ return QVariant::Int; } + +/*! + \fn QDBusBusService::releaseName(const QString &service) + Releases the claim on the bus service name \a service, that had been previously requested with + requestName(). If this application had ownership of the name, it will be released for other + applications to claim. If it only had the name queued, it gives up its position in the queue. +*/ +QDBusReply +QDBusBusService::ReleaseName(const QString &service) +{ + return call(QLatin1String("ReleaseName.s"), service); +} + +// signals +/*! + \fn QDBusBusService::nameAcquired(const QString &service) + + This signal is emitted by the D-Bus bus server when the bus service name (unique connection name + or well-known service name) given by \a service is acquired by this application. + + Name acquisition happens after the application requested a name using requestName(). +*/ + +/*! + \fn QDBusBusService::nameLost(const QString &service) + + This signal is emitted by the D-Bus bus server when the application loses ownership of the bus + service name given by \a service. +*/ + +/*! + \fn QDBusBusService::nameOwnerChanged(const QString &name, const QString &oldOwner, const QString &newOwner) + + This signal is emitted by the D-Bus bus server whenever a name ownership change happens in the + bus, including apparition and disparition of names. + + This signal means the application \a oldOwner lost ownership of bus name \a name to application + \a newOwner. If \a oldOwner is an empty string, it means the name \a name has just been created; + if \a newOwner is empty, the name \a name has no current owner. +*/ + +#include "qdbusbus.moc" diff --git a/qt/src/qdbusbus.h b/qt/src/qdbusbus.h new file mode 100644 index 00000000..22606852 --- /dev/null +++ b/qt/src/qdbusbus.h @@ -0,0 +1,158 @@ +/* -*- C++ -*- + * + * Copyright (C) 2006 Trolltech AS. All rights reserved. + * Author: Thiago Macieira + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +/* + * This file was generated by dbusidl2cpp version 0.3 + * when processing input file - + * + * dbusidl2cpp is Copyright (C) 2006 Trolltech AS. All rights reserved. + * + * This file has been hand-edited! Be careful when re-generating it! + * + */ + +#ifndef QDBUSBUS_H +#define QDBUSBUS_H + +#include + +#include "qdbusabstractinterface.h" +#include "qdbusreply.h" + +class QDBusConnection; +class QString; +class QByteArray; + +/* + * Proxy class for interface org.freedesktop.DBus + */ +class QDBUS_EXPORT QDBusBusService: public QDBusAbstractInterface +{ + Q_OBJECT + friend class QDBusConnection; + static inline const char *staticInterfaceName(); + + explicit QDBusBusService(QDBusAbstractInterfacePrivate *p); + + ~QDBusBusService(); + +public: + // taken out of http://dbus.freedesktop.org/doc/dbus-specification.html + // update if the standard updates + enum RequestNameOption { + AllowReplacingName = 0x1, + ReplaceExistingName = 0x2, + DoNotQueueName = 0x4 + }; + Q_DECLARE_FLAGS(RequestNameOptions, RequestNameOption) + + enum RequestNameReply { + PrimaryOwnerReply = 1, + InQueueReply = 2, + NameExistsReply = 3, + AlreadyOwnerReply = 4 + }; + + enum ReleaseNameReply { + NameReleasedReply = 1, + NameNonExistentReply = 2, + NotOwnerReply = 3 + }; + + enum StartServiceReply { + Success = 1, + AlreadyRunning = 2 + }; + +#ifndef Q_QDOC + // D-Bus names +public: // METHODS + QDBusReply Hello(); + QDBusReply ReloadConfig(); + + QDBusReply ListNames(); + + QDBusReply NameHasOwner(const QString &service); + QDBusReply GetNameOwner(const QString &name); + QDBusReply ReleaseName(const QString &service); + QDBusReply RequestName(const QString &service, RequestNameOptions flags); + QDBusReply ListQueuedOwners(const QString &service); + + QDBusReply AddMatch(const QString &rule); + QDBusReply RemoveMatch(const QString &rule); + + QDBusReply GetConnectionSELinuxSecurityContext(const QString &service); + QDBusReply GetConnectionUnixProcessID(const QString &service); + QDBusReply GetConnectionUnixUser(const QString &service); + + QDBusReply StartServiceByName(const QString &name, uint flags); + +signals: // SIGNALS + void NameAcquired(const QString &service); + void NameLost(const QString &service); + void NameOwnerChanged(const QString &name, const QString &oldOwner, const QString &newOwner); +#endif + + // Qt-style naming +public slots: + QDBusReply hello() + { return Hello(); } + QDBusReply reloadConfig() + { return ReloadConfig(); } + + QDBusReply listNames() + { return ListNames(); } + + QDBusReply nameHasOwner(const QString &service) + { return NameHasOwner(service); } + QDBusReply nameOwner(const QString &name) + { return GetNameOwner(name); } + QDBusReply releaseName(const QString &service) + { return ReleaseName(service); } + QDBusReply requestName(const QString &service, RequestNameOptions flags) + { return RequestName(service, flags); } + QDBusReply listQueuedOwners(const QString &service) + { return ListQueuedOwners(service); } + + QDBusReply addMatch(const QString &rule) + { return AddMatch(rule); } + QDBusReply removeMatch(const QString &rule) + { return RemoveMatch(rule); } + + QDBusReply connectionSELinuxSecurityContext(const QString &service) + { return GetConnectionSELinuxSecurityContext(service); } + QDBusReply connectionUnixProcessID(const QString &service) + { return GetConnectionUnixProcessID(service); } + QDBusReply connectionUnixUser(const QString &service) + { return GetConnectionUnixUser(service); } + + QDBusReply startServiceByName(const QString &name, uint flags) + { return StartServiceByName(name, flags); } + +signals: + void nameAcquired(const QString &service); + void nameLost(const QString &service); + void nameOwnerChanged(const QString &name, const QString &oldOwner, const QString &newOwner); +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QDBusBusService::RequestNameOptions) + +#endif diff --git a/qt/src/qdbusconnection.cpp b/qt/src/qdbusconnection.cpp new file mode 100644 index 00000000..6cd733cb --- /dev/null +++ b/qt/src/qdbusconnection.cpp @@ -0,0 +1,753 @@ +/* qdbusconnection.cpp + * + * Copyright (C) 2005 Harald Fernengel + * Copyright (C) 2006 Trolltech AS. All rights reserved. + * Author: Thiago Macieira + * + * Licensed under the Academic Free License version 2.1 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include +#include +#include + +#include "qdbusbus.h" +#include "qdbusconnection.h" +#include "qdbuserror.h" +#include "qdbusmessage.h" +#include "qdbusconnection_p.h" +#include "qdbusinterface_p.h" +#include "qdbusutil.h" + +class QDBusConnectionManager +{ +public: + QDBusConnectionManager() {} + ~QDBusConnectionManager(); + void bindToApplication(); + QDBusConnectionPrivate *connection(const QString &name) const; + void removeConnection(const QString &name); + void setConnection(const QString &name, QDBusConnectionPrivate *c); + +private: + mutable QMutex mutex; + QHash connectionHash; +}; + +Q_GLOBAL_STATIC(QDBusConnectionManager, manager) + +QDBusConnectionPrivate *QDBusConnectionManager::connection(const QString &name) const +{ + QMutexLocker locker(&mutex); + return connectionHash.value(name, 0); +} + +void QDBusConnectionManager::removeConnection(const QString &name) +{ + QMutexLocker locker(&mutex); + + QDBusConnectionPrivate *d = 0; + d = connectionHash.take(name); + if (d && !d->ref.deref()) + delete d; +} + +QDBusConnectionManager::~QDBusConnectionManager() +{ + for (QHash::const_iterator it = connectionHash.constBegin(); + it != connectionHash.constEnd(); ++it) { + delete it.value(); + } + connectionHash.clear(); +} + +void QDBusConnectionManager::bindToApplication() +{ + QMutexLocker locker(&mutex); + for (QHash::const_iterator it = connectionHash.constBegin(); + it != connectionHash.constEnd(); ++it) { + (*it)->bindToApplication(); + } +} + +QDBUS_EXPORT void qDBusBindToApplication(); +void qDBusBindToApplication() +{ + manager()->bindToApplication(); +} + +void QDBusConnectionManager::setConnection(const QString &name, QDBusConnectionPrivate *c) +{ + connectionHash[name] = c; + c->name = name; +} + +/*! + \fn QDBusConnection QDBus::sessionBus() + \relates QDBusConnection + + Returns a QDBusConnection object opened with the session bus. The object reference returned + by this function is valid until the QCoreApplication's destructor is run, when the + connection will be closed and the object, deleted. +*/ +/*! + \fn QDBusConnection QDBus::systemBus() + \relates QDBusConnection + + Returns a QDBusConnection object opened with the system bus. The object reference returned + by this function is valid until the QCoreApplication's destructor is run, when the + connection will be closed and the object, deleted. +*/ + +/*! + \class QDBusConnection + \brief A connection to the D-Bus bus daemon. + + This class is the initial point in a D-Bus session. Using it, you can get access to remote + objects, interfaces; connect remote signals to your object's slots; register objects, etc. + + D-Bus connections are created using the QDBusConnection::addConnection() function, which opens a + connection to the server daemon and does the initial handshaking, associating that connection + with a name. Further attempts to connect using the same name will return the same + connection. + + The connection is then torn down using the QDBusConnection::closeConnection() function. + + As a convenience for the two most common connection types, the QDBus::sessionBus() and + QDBus::systemBus() functions return open connections to the session server daemon and the system + server daemon, respectively. Those connections are opened when first used and are closed when + the QCoreApplication destructor is run. + + D-Bus also supports peer-to-peer connections, without the need for a bus server daemon. Using + this facility, two applications can talk to each other and exchange messages. This can be + achieved by passing an address to QDBusConnection::addConnection() + function, which was opened by another D-Bus application using QDBusServer. +*/ + +/*! + \enum QDBusConnection::BusType + Specifies the type of the bus connection. The valid bus types are: + + \value SessionBus the session bus, associated with the running desktop session + \value SystemBus the system bus, used to communicate with system-wide processes + \value ActivationBus the activation bus, whose purpose I have no idea... + + On the Session Bus, one can find other applications by the same user that are sharing the same + desktop session (hence the name). On the System Bus, however, processes shared for the whole + system are usually found. +*/ + +/*! + \enum QDBusConnection::WaitMode + Specifies the call waiting mode. + + \value UseEventLoop use the Qt Event Loop to wait for the reply + \value NoUseEventLoop don't use the event loop + + The \c UseEventLoop option allows for the application to continue to update its UI while the + call is performed, but it also opens up the possibility for reentrancy: socket notifiers may + fire, signals may be delivered and other D-Bus calls may be processed. The \c NoUseEventLoop + does not use the event loop, thus being safe from those problems, but it may block the + application for a noticeable period of time, in case the remote application fails to respond. + + Also note that calls that go back to the local application can only be placed in \c UseEventLoop + mode. +*/ + +/*! + \enum QDBusConnection::RegisterOption + Specifies the options for registering objects with the connection. The possible values are: + + \value ExportAdaptors export the contents of adaptors found in this object + + \value ExportSlots export this object's scriptable slots + \value ExportSignals export this object's scriptable signals + \value ExportProperties export this object's scriptable properties + \value ExportContents shorthand form for ExportSlots | ExportSignals | + ExportProperties + + \value ExportAllSlots export all of this object's slots, including + non-scriptable ones + \value ExportAllSignals export all of this object's signals, including + non-scriptable ones + \value ExportAllProperties export all of this object's properties, including + non-scriptable ones + \value ExportAllContents export all of this object's slots, signals and + properties, including non-scriptable ones + + \value ExportChildObjects export this object's child objects + + \warning It is currently not possible to export signals from objects. If you pass the flag + ExportSignals or ExportAllSignals, the registerObject() function will print a warning. + + \sa registerObject(), QDBusAbstractAdaptor, {usingadaptors.html}{Using adaptors} +*/ + +/*! + \enum QDBusConnection::UnregisterMode + The mode for unregistering an object path: + + \value UnregisterNode unregister this node only: do not unregister child objects + \value UnregisterTree unregister this node and all its sub-tree + + Note, however, if this object was registered with the ExportChildObjects option, UnregisterNode + will unregister the child objects too. +*/ + +/*! + Creates a QDBusConnection object attached to the connection with name \a name. + + This does not open the connection. You have to call QDBusConnection::addConnection to open it. +*/ +QDBusConnection::QDBusConnection(const QString &name) +{ + d = manager()->connection(name); + if (d) + d->ref.ref(); +} + +/*! + Creates a copy of the \a other connection. +*/ +QDBusConnection::QDBusConnection(const QDBusConnection &other) +{ + d = other.d; + if (d) + d->ref.ref(); +} + +/*! + Disposes of this object. This does not close the connection: you have to call + QDBusConnection::closeConnection to do that. +*/ +QDBusConnection::~QDBusConnection() +{ + if (d && !d->ref.deref()) + delete d; +} + +/*! + Creates a copy of the connection \a other in this object. The connection this object referenced + before the copy is not spontaneously disconnected. See QDBusConnection::closeConnection for more + information. +*/ +QDBusConnection &QDBusConnection::operator=(const QDBusConnection &other) +{ + if (other.d) + other.d->ref.ref(); + QDBusConnectionPrivate *old = static_cast( + q_atomic_set_ptr(&d, other.d)); + if (old && !old->ref.deref()) + delete old; + + return *this; +} + +/*! + Opens a connection of type \a type to one of the known busses and associate with it the + connection name \a name. Returns a QDBusConnection object associated with that connection. +*/ +QDBusConnection QDBusConnection::addConnection(BusType type, const QString &name) +{ +// Q_ASSERT_X(QCoreApplication::instance(), "QDBusConnection::addConnection", +// "Cannot create connection without a Q[Core]Application instance"); + + QDBusConnectionPrivate *d = manager()->connection(name); + if (d || name.isEmpty()) + return QDBusConnection(name); + + d = new QDBusConnectionPrivate; + DBusConnection *c = 0; + switch (type) { + case SystemBus: + c = dbus_bus_get_private(DBUS_BUS_SYSTEM, &d->error); + break; + case SessionBus: + c = dbus_bus_get_private(DBUS_BUS_SESSION, &d->error); + break; + case ActivationBus: + c = dbus_bus_get_private(DBUS_BUS_STARTER, &d->error); + break; + } + d->setConnection(c); //setConnection does the error handling for us + + manager()->setConnection(name, d); + + QDBusConnection retval(name); + + // create the bus service + QDBusAbstractInterfacePrivate *p; + p = retval.findInterface_helper(QLatin1String(DBUS_SERVICE_DBUS), + QLatin1String(DBUS_PATH_DBUS), + QLatin1String(DBUS_INTERFACE_DBUS)); + if (p) { + d->busService = new QDBusBusService(p); + d->busService->setParent(d); // auto-deletion + d->ref.deref(); // busService has a increased the refcounting to us + } + + return retval; +} + +/*! + Opens a peer-to-peer connection on address \a address and associate with it the + connection name \a name. Returns a QDBusConnection object associated with that connection. +*/ +QDBusConnection QDBusConnection::addConnection(const QString &address, + const QString &name) +{ +// Q_ASSERT_X(QCoreApplication::instance(), "QDBusConnection::addConnection", +// "Cannot create connection without a Q[Core]Application instance"); + + QDBusConnectionPrivate *d = manager()->connection(name); + if (d || name.isEmpty()) + return QDBusConnection(name); + + d = new QDBusConnectionPrivate; + // setConnection does the error handling for us + d->setConnection(dbus_connection_open(address.toUtf8().constData(), &d->error)); + + manager()->setConnection(name, d); + + QDBusConnection retval(name); + + // create the bus service + QDBusAbstractInterfacePrivate *p; + p = retval.findInterface_helper(QLatin1String(DBUS_SERVICE_DBUS), + QLatin1String(DBUS_PATH_DBUS), + QLatin1String(DBUS_INTERFACE_DBUS)); + if (p) { + d->busService = new QDBusBusService(p); + d->busService->setParent(d); // auto-deletion + d->ref.deref(); // busService has a increased the refcounting to us + } + + return retval; +} + +/*! + Closes the connection of name \a name. + + Note that if there are still QDBusConnection objects associated with the same connection, the + connection will not be closed until all references are dropped. However, no further references + can be created using the QDBusConnection::QDBusConnection constructor. +*/ +void QDBusConnection::closeConnection(const QString &name) +{ + manager()->removeConnection(name); +} + +/*! + Sends the \a message over this connection, without waiting for a reply. This is suitable for + errors, signals, and return values as well as calls whose return values are not necessary. + + Returns true if the message was queued successfully, false otherwise. +*/ +bool QDBusConnection::send(const QDBusMessage &message) const +{ + if (!d || !d->connection) + return false; + return d->send(message) != 0; +} + +/*! + Sends the \a message over this connection and returns immediately after queueing it. When the + reply is received, the slot \a method is called in the object \a receiver. This function is + suitable for method calls only. + + This function guarantees that the slot will be called exactly once with the reply, as long as + the parameter types match. If they don't, the reply cannot be delivered. + + Returns the identification of the message that was sent or 0 if nothing was sent. +*/ +int QDBusConnection::sendWithReplyAsync(const QDBusMessage &message, QObject *receiver, + const char *method) const +{ + if (!d || !d->connection) + return 0; + + return d->sendWithReplyAsync(message, receiver, method); +} + +/*! + Sends the \a message over this connection and blocks, waiting for a reply. This function is + suitable for method calls only. It returns the reply message as its return value, which will be + either of type QDBusMessage::ReplyMessage or QDBusMessage::ErrorMessage. + + See the QDBusInterface::call function for a more friendly way of placing calls. + + \warning If \a mode is \c UseEventLoop, this function will reenter the Qt event loop in order to + wait for the reply. During the wait, it may deliver signals and other method calls to + your application. Therefore, it must be prepared to handle a reentrancy whenever a call + is placed with sendWithReply. +*/ +QDBusMessage QDBusConnection::sendWithReply(const QDBusMessage &message, WaitMode mode) const +{ + if (!d || !d->connection) + return QDBusMessage(); + return d->sendWithReply(message, mode); +} + +/*! + Connects the signal specified by the \a service, \a path, \a interface and \a name parameters to + the slot \a slot in object \a receiver. The arguments \a service and \a path can be empty, + denoting a connection to any signal of the \a interface - \a name pair, from any remote + application. + + Returns true if the connection was successful. + + \warning The signal will only be delivered to the slot if the parameters match. This verification + can be done only when the signal is received, not at connection time. +*/ +bool QDBusConnection::connect(const QString &service, const QString &path, const QString& interface, + const QString &name, QObject *receiver, const char *slot) +{ + return connect(service, path, interface, name, QString(), receiver, slot); +} + +/*! + \overload + Connects the signal to the slot \a slot in object \a receiver. Unlike the other + QDBusConnection::connect overload, this function allows one to specify the parameter signature + to be connected using the \a signature variable. The function will then verify that this + signature can be delivered to the slot specified by \a slot and return false otherwise. +*/ +bool QDBusConnection::connect(const QString &service, const QString &path, const QString& interface, + const QString &name, const QString &signature, + QObject *receiver, const char *slot) +{ + if (!receiver || !slot || !d || !d->connection || !QDBusUtil::isValidInterfaceName(interface)) + return false; + + QString source; + if (!service.isEmpty()) { + source = d->getNameOwner(service); + if (source.isEmpty()) + return false; + } + + // check the slot + QDBusConnectionPrivate::SignalHook hook; + QString key; + hook.signature = signature; + if (!d->prepareHook(hook, key, source, path, interface, name, receiver, slot, 0, false)) + return false; // don't connect + + // avoid duplicating: + QWriteLocker locker(&d->lock); + QDBusConnectionPrivate::SignalHookHash::ConstIterator it = d->signalHooks.find(key); + for ( ; it != d->signalHooks.end() && it.key() == key; ++it) { + const QDBusConnectionPrivate::SignalHook &entry = it.value(); + if (entry.sender == hook.sender && + entry.path == hook.path && + entry.signature == hook.signature && + entry.obj == hook.obj && + entry.midx == hook.midx) { + // no need to compare the parameters if it's the same slot + return true; // already there + } + } + + + d->connectSignal(key, hook); + return true; +} + +/*! + Registers the object \a object at path \a path and returns true if the registration was + successful. The \a options parameter specifies how much of the object \a object will be exposed + through D-Bus. + + This function does not replace existing objects: if there is already an object registered at + path \a path, this function will return false. Use unregisterObject() to unregister it first. + + You cannot register an object as a child object of an object that was registered with + QDBusConnection::ExportChildObjects. +*/ +bool QDBusConnection::registerObject(const QString &path, QObject *object, RegisterOptions options) +{ + if (!d || !d->connection || !object || !options || !QDBusUtil::isValidObjectPath(path)) + return false; + + if (options & ExportSignals) { + qWarning("Cannot export signals from objects. Use an adaptor for that purpose."); + return false; + } + + QStringList pathComponents = path.split(QLatin1Char('/')); + if (pathComponents.last().isEmpty()) + pathComponents.removeLast(); + QWriteLocker locker(&d->lock); + + // lower-bound search for where this object should enter in the tree + QDBusConnectionPrivate::ObjectTreeNode *node = &d->rootNode; + int i = 1; + while (node) { + if (pathComponents.count() == i) { + // this node exists + // consider it free if there's no object here and the user is not trying to + // replace the object sub-tree + if ((options & ExportChildObjects && !node->children.isEmpty()) || node->obj) + return false; + + // we can add the object here + node->obj = object; + node->flags = options; + + d->registerObject(node); + qDebug("REGISTERED FOR %s", path.toLocal8Bit().constData()); + return true; + } + + // find the position where we'd insert the node + QVector::Iterator it = + qLowerBound(node->children.begin(), node->children.end(), pathComponents.at(i)); + if (it != node->children.constEnd() && it->name == pathComponents.at(i)) { + // match: this node exists + node = it->node; + + // are we allowed to go deeper? + if (node->flags & ExportChildObjects) { + // we're not + qDebug("Cannot register object at %s because %s exports its own child objects", + qPrintable(path), qPrintable(pathComponents.at(i))); + return false; + } + } else { + // add entry + QDBusConnectionPrivate::ObjectTreeNode::Data entry; + entry.name = pathComponents.at(i); + entry.node = new QDBusConnectionPrivate::ObjectTreeNode; + node->children.insert(it, entry); + + node = entry.node; + } + + // iterate + ++i; + } + + Q_ASSERT_X(false, "QDBusConnection::registerObject", "The impossible happened"); + return false; +} + +/*! + Unregisters an object that was registered with the registerObject() at the object path given by + \a path and, if \a mode is QDBusConnection::UnregisterTree, all of its sub-objects too. + + Note that you cannot unregister objects that were not registered with registerObject(). +*/ +void QDBusConnection::unregisterObject(const QString &path, UnregisterMode mode) +{ + if (!d || !d->connection || !QDBusUtil::isValidObjectPath(path)) + return; + + QStringList pathComponents = path.split(QLatin1Char('/')); + QWriteLocker locker(&d->lock); + QDBusConnectionPrivate::ObjectTreeNode *node = &d->rootNode; + int i = 1; + + // find the object + while (node) { + if (pathComponents.count() == i) { + // found it + node->obj = 0; + node->flags = 0; + + if (mode == UnregisterTree) { + // clear the sub-tree as well + node->clear(); // can't disconnect the objects because we really don't know if they can + // be found somewhere else in the path too + } + + return; + } + + QVector::ConstIterator it = + qLowerBound(node->children.constBegin(), node->children.constEnd(), pathComponents.at(i)); + if (it == node->children.constEnd() || it->name != pathComponents.at(i)) + break; // node not found + + node = it->node; + ++i; + } +} + +/*! + Returns a dynamic QDBusInterface associated with the interface \a interface on object at path \a + path on service \a service. + + This function creates a new object. It is your resposibility to ensure it is properly deleted + (you can use all normal QObject deletion mechanisms, including the QObject::deleteLater() slot + and QObject::setParent()). + + If the searching for this interface on the remote object failed, this function returns 0. +*/ +QDBusInterface *QDBusConnection::findInterface(const QString& service, const QString& path, + const QString& interface) +{ + if (!d) + return 0; + + QDBusInterfacePrivate *p = d->findInterface(service, path, interface); + QDBusInterface *retval = new QDBusInterface(p); + retval->setParent(d); + return retval; +} + +/*! + \fn QDBusConnection::findInterface(const QString &service, const QString &path) + Returns an interface of type \c Interface associated with the object on path \a path at service + \a service. + + \c Interface must be a class generated by \l {dbusidl2cpp.html}. + + This function creates a new object. It is your resposibility to ensure it is properly deleted + (you can use all normal QObject deletion mechanisms, including the QObject::deleteLater() slot + and QObject::setParent()). +*/ + +/*! + Returns a QDBusBusService object that represents the D-Bus bus service on this connection. + + This function returns 0 for peer-to-peer connections. +*/ +QDBusBusService *QDBusConnection::busService() const +{ + if (!d) + return 0; + return d->busService; +} + +QDBusAbstractInterfacePrivate * +QDBusConnection::findInterface_helper(const QString &service, const QString &path, + const QString &interface) +{ + if (!d) + return 0; + if (!interface.isEmpty() && !QDBusUtil::isValidInterfaceName(interface)) + return 0; + + QString owner; + if (!service.isEmpty()) { + if (!QDBusUtil::isValidObjectPath(path)) + return 0; + + // check if it's there first -- FIXME: add binding mode + owner = d->getNameOwner(service); + if (owner.isEmpty()) + return 0; + } else if (!path.isEmpty()) + return 0; + + return new QDBusAbstractInterfacePrivate(*this, d, owner, path, interface); +} + +/*! + Returns true if this QDBusConnection object is connected. + + If it isn't connected, calling QDBusConnection::addConnection on the same connection name + will not make be connected. You need to call the QDBusConnection constructor again. +*/ +bool QDBusConnection::isConnected( ) const +{ + return d && d->connection && dbus_connection_get_is_connected(d->connection); +} + +/*! + Returns the last error that happened in this connection. + + This function is provided for low-level code. If you're using QDBusInterface::call, error codes are + reported by its return value. + + \sa QDBusInterface, QDBusMessage +*/ +QDBusError QDBusConnection::lastError() const +{ + return d ? d->lastError : QDBusError(); +} + +/*! + Returns the unique connection name for this connection, if this QDBusConnection object is + connected, or an empty QString otherwise. + + A Unique Connection Name is a string in the form ":x.xxx" (where x are decimal digits) that is + assigned by the D-Bus server daemon upon connection. It uniquely identifies this client in the + bus. + + This function returns an empty QString for peer-to-peer connections. +*/ +QString QDBusConnection::baseService() const +{ + return d && d->connection ? + QString::fromUtf8(dbus_bus_get_unique_name(d->connection)) + : QString(); +} + +Q_GLOBAL_STATIC(QMutex, defaultBussesMutex) +static const char sessionBusName[] = "qt_default_session_bus"; +static const char systemBusName[] = "qt_default_system_bus"; +static QDBusConnection *sessionBus = 0; +static QDBusConnection *systemBus = 0; + +static void closeConnections() +{ + QMutexLocker locker(defaultBussesMutex()); + delete sessionBus; + delete systemBus; + QDBusConnection::closeConnection(QLatin1String(sessionBusName)); + QDBusConnection::closeConnection(QLatin1String(systemBusName)); + sessionBus = systemBus = 0; +} + +static QDBusConnection *openConnection(QDBusConnection::BusType type) +{ + QMutexLocker locker(defaultBussesMutex()); + qAddPostRoutine(closeConnections); + + if (type == QDBusConnection::SystemBus) { + if (systemBus) + // maybe it got created before we locked the mutex + return systemBus; + systemBus = new QDBusConnection(QDBusConnection::addConnection(QDBusConnection::SystemBus, + QLatin1String(systemBusName))); + return systemBus; + } else { + if (sessionBus) + // maybe it got created before we locked the mutex + return sessionBus; + sessionBus = new QDBusConnection(QDBusConnection::addConnection(QDBusConnection::SessionBus, + QLatin1String(sessionBusName))); + return sessionBus; + } +} + +namespace QDBus { + QDBusConnection &sessionBus() + { + if (::sessionBus) return *::sessionBus; + return *openConnection(QDBusConnection::SessionBus); + } + + QDBusConnection &systemBus() + { + if (::systemBus) return *::systemBus; + return *openConnection(QDBusConnection::SystemBus); + } +} + diff --git a/qt/src/qdbusconnection.h b/qt/src/qdbusconnection.h new file mode 100644 index 00000000..c1c420a6 --- /dev/null +++ b/qt/src/qdbusconnection.h @@ -0,0 +1,124 @@ +/* qdbusconnection.h QDBusConnection object + * + * Copyright (C) 2005 Harald Fernengel + * Copyright (C) 2006 Trolltech AS. All rights reserved. + * Author: Thiago Macieira + * + * Licensed under the Academic Free License version 2.1 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef QDBUSCONNECTION_H +#define QDBUSCONNECTION_H + +#include "qdbusmacros.h" +#include + +class QDBusAbstractInterfacePrivate; +class QDBusInterface; +class QDBusError; +class QDBusMessage; +class QDBusBusService; +class QObject; + +class QDBusConnectionPrivate; +class QDBUS_EXPORT QDBusConnection +{ +public: + enum BusType { SessionBus, SystemBus, ActivationBus }; + enum WaitMode { UseEventLoop, NoUseEventLoop }; + enum RegisterOption { + ExportAdaptors = 0x01, + + ExportSlots = 0x10, + ExportSignals = 0x20, + ExportProperties = 0x40, + ExportContents = 0xf0, + + ExportAllSlots = 0x110, + ExportAllSignals = 0x220, + ExportAllProperties = 0x440, + ExportAllContents = 0xff0, + + ExportChildObjects = 0x1000 + }; + enum UnregisterMode { + UnregisterNode, + UnregisterTree + }; + + Q_DECLARE_FLAGS(RegisterOptions, RegisterOption) + + QDBusConnection(const QString &name); + QDBusConnection(const QDBusConnection &other); + ~QDBusConnection(); + + QDBusConnection &operator=(const QDBusConnection &other); + + bool isConnected() const; + QString baseService() const; + QDBusError lastError() const; + + bool send(const QDBusMessage &message) const; + QDBusMessage sendWithReply(const QDBusMessage &message, WaitMode mode = NoUseEventLoop) const; + int sendWithReplyAsync(const QDBusMessage &message, QObject *receiver, + const char *slot) const; + + bool connect(const QString &service, const QString &path, const QString &interface, + const QString &name, QObject *receiver, const char *slot); + bool connect(const QString &service, const QString &path, const QString &interface, + const QString &name, const QString& signature, + QObject *receiver, const char *slot); + + bool registerObject(const QString &path, QObject *object, + RegisterOptions options = ExportAdaptors); + void unregisterObject(const QString &path, UnregisterMode mode = UnregisterNode); + + template + inline Interface *findInterface(const QString &service, const QString &path); + QDBusInterface *findInterface(const QString& service, const QString& path, + const QString& interface = QString()); + + QDBusBusService *busService() const; + + static QDBusConnection addConnection(BusType type, const QString &name); + static QDBusConnection addConnection(const QString &address, const QString &name); + static void closeConnection(const QString &name); + +private: + QDBusAbstractInterfacePrivate *findInterface_helper(const QString &, const QString &, + const QString&); + QDBusConnectionPrivate *d; +}; + +template +inline Interface *QDBusConnection::findInterface(const QString &service, const QString &path) +{ + register QDBusAbstractInterfacePrivate *d; + d = findInterface_helper(service, path, Interface::staticInterfaceName()); + if (d) + return new Interface(d); + return 0; +} + +namespace QDBus { + QDBUS_EXPORT QDBusConnection &sessionBus(); + QDBUS_EXPORT QDBusConnection &systemBus(); +} + +Q_DECLARE_OPERATORS_FOR_FLAGS(QDBusConnection::RegisterOptions) +#endif diff --git a/qt/src/qdbusconnection_p.h b/qt/src/qdbusconnection_p.h new file mode 100644 index 00000000..bab0b65d --- /dev/null +++ b/qt/src/qdbusconnection_p.h @@ -0,0 +1,245 @@ +/* qdbusconnection_p.h QDBusConnection private object + * + * Copyright (C) 2005 Harald Fernengel + * Copyright (C) 2006 Trolltech AS. All rights reserved. + * Author: Thiago Macieira + * + * Licensed under the Academic Free License version 2.1 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +// +// W A R N I N G +// ------------- +// +// This file is not part of the public API. This header file may +// change from version to version without notice, or even be +// removed. +// +// We mean it. +// +// + +#ifndef QDBUSCONNECTION_P_H +#define QDBUSCONNECTION_P_H + +#include "qdbuserror.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "qdbusmessage.h" + +class QDBusMessage; +class QSocketNotifier; +class QTimerEvent; +class QDBusObjectPrivate; +class CallDeliveryEvent; +class QMetaMethod; +class QDBusInterfacePrivate; +struct QDBusMetaObject; +class QDBusAbstractInterface; +class QDBusBusService; + +class QDBusConnectionPrivate: public QObject +{ + Q_OBJECT +public: + // structs and enums + enum ConnectionMode { InvalidMode, ServerMode, ClientMode }; + + struct Watcher + { + Watcher(): watch(0), read(0), write(0) {} + DBusWatch *watch; + QSocketNotifier *read; + QSocketNotifier *write; + }; + + struct SignalHook + { + inline SignalHook() : obj(0), midx(-1) { } + QString sender, path, signature; + QObject* obj; + int midx; + QList params; + }; + + struct ObjectTreeNode + { + struct Data + { + QString name; + ObjectTreeNode *node; + + inline bool operator<(const QString &other) const + { return name < other; } + }; + + inline ObjectTreeNode() : obj(0), flags(0) { } + inline ~ObjectTreeNode() { clear(); } + inline void clear() + { + foreach (const Data &entry, children) { + entry.node->clear(); + delete entry.node; + } + children.clear(); + } + + QObject* obj; + int flags; + QVector children; + }; + +public: + // typedefs + typedef QMultiHash WatcherHash; + typedef QHash TimeoutHash; + typedef QMultiHash SignalHookHash; + typedef QHash MetaObjectHash; + +public: + // public methods + QDBusConnectionPrivate(QObject *parent = 0); + ~QDBusConnectionPrivate(); + + void bindToApplication(); + + void setConnection(DBusConnection *connection); + void setServer(DBusServer *server); + void closeConnection(); + void timerEvent(QTimerEvent *e); + + QString getNameOwner(const QString &service); + + int send(const QDBusMessage &message) const; + QDBusMessage sendWithReply(const QDBusMessage &message, int mode); + int sendWithReplyAsync(const QDBusMessage &message, QObject *receiver, + const char *method); + void connectSignal(const QString &key, const SignalHook &hook); + void registerObject(const ObjectTreeNode *node); + void connectRelay(const QString &service, const QString &path, const QString &interface, + QDBusAbstractInterface *receiver, const char *signal); + void disconnectRelay(const QString &service, const QString &path, const QString &interface, + QDBusAbstractInterface *receiver, const char *signal); + + bool handleSignal(const QString &key, const QDBusMessage &msg); + bool handleSignal(const QDBusMessage &msg); + bool handleObjectCall(const QDBusMessage &message); + bool handleError(); + + bool activateSignal(const SignalHook& hook, const QDBusMessage &msg); + bool activateCall(QObject* object, int flags, const QDBusMessage &msg); + bool activateObject(const ObjectTreeNode *node, const QDBusMessage &msg); + bool activateInternalFilters(const ObjectTreeNode *node, const QDBusMessage &msg); + + void postCallDeliveryEvent(CallDeliveryEvent *data); + CallDeliveryEvent *postedCallDeliveryEvent(); + void deliverCall(const CallDeliveryEvent &data) const; + + QDBusInterfacePrivate *findInterface(const QString &service, const QString &path, + const QString &interface); + +protected: + virtual void customEvent(QEvent *event); + +private: + QDBusMetaObject *findMetaObject(const QString &service, const QString &path, + const QString &interface); + +public slots: + // public slots + void doDispatch(); + void socketRead(int); + void socketWrite(int); + void objectDestroyed(QObject *o); + void relaySignal(QObject *obj, const char *interface, const char *name, const QVariantList &args); + +public: + // public member variables + QString name; // this connection's name + + DBusError error; + QDBusError lastError; + + QAtomic ref; + QReadWriteLock lock; + ConnectionMode mode; + DBusConnection *connection; + DBusServer *server; + QDBusBusService *busService; + + WatcherHash watchers; + TimeoutHash timeouts; + SignalHookHash signalHooks; + QList pendingTimeouts; + + ObjectTreeNode rootNode; + MetaObjectHash cachedMetaObjects; + + QMutex callDeliveryMutex; + CallDeliveryEvent *callDeliveryState; // protected by the callDeliveryMutex mutex + +public: + // static methods + static int messageMetaType; + static int registerMessageMetaType(); + static int findSlot(QObject *obj, const QByteArray &normalizedName, QList& params); + static bool prepareHook(QDBusConnectionPrivate::SignalHook &hook, QString &key, + const QString &service, const QString &path, + const QString &interface, const QString &name, + QObject *receiver, const char *signal, int minMIdx, + bool buildSignature); + static DBusHandlerResult messageFilter(DBusConnection *, DBusMessage *, void *); + static void messageResultReceived(DBusPendingCall *, void *); +}; + +class QDBusReplyWaiter: public QEventLoop +{ + Q_OBJECT +public: + QDBusMessage replyMsg; + +public slots: + void reply(const QDBusMessage &msg); +}; + +// in qdbusmisc.cpp +extern int qDBusParametersForMethod(const QMetaMethod &mm, QList& metaTypes); +extern int qDBusNameToTypeId(const char *name); +extern bool qDBusCheckAsyncTag(const char *tag); + +// in qdbusinternalfilters.cpp +extern QString qDBusIntrospectObject(const QDBusConnectionPrivate::ObjectTreeNode *node); +extern void qDBusIntrospectObject(const QDBusConnectionPrivate::ObjectTreeNode *node, + const QDBusMessage &msg); +extern void qDBusPropertyGet(const QDBusConnectionPrivate::ObjectTreeNode *node, + const QDBusMessage &msg); +extern void qDBusPropertySet(const QDBusConnectionPrivate::ObjectTreeNode *node, + const QDBusMessage &msg); + +#endif diff --git a/qt/src/qdbuserror.cpp b/qt/src/qdbuserror.cpp new file mode 100644 index 00000000..d5cd6758 --- /dev/null +++ b/qt/src/qdbuserror.cpp @@ -0,0 +1,244 @@ +/* qdbuserror.h QDBusError object + * + * Copyright (C) 2005 Harald Fernengel + * Copyright (C) 2006 Trolltech AS. All rights reserved. + * Author: Thiago Macieira + * + * Licensed under the Academic Free License version 2.1 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "qdbuserror.h" + +#include +#include + +#include +#include "qdbusmessage.h" + +struct ErrorMessageMapping +{ + ErrorMessageMapping(); + QVarLengthArray messages; + + inline const char *get(QDBusError::KnownErrors code) const + { + if (code <= QDBusError::Other || code > QDBusError::qKnownErrorsMax) + return messages[int(QDBusError::Other) - 1]; + return messages[int(code) - 1]; + } + + inline QDBusError::KnownErrors get(const char *name) const + { + if (!name || !*name) + return QDBusError::NoError; + for (int i = QDBusError::Other; i <= QDBusError::qKnownErrorsMax; ++i) + if (strcmp(name, messages[i - 1]) == 0) + return QDBusError::KnownErrors(i); + return QDBusError::Other; + } +}; + +static const char errorMessages_string[] = + // in the same order as KnownErrors! + "other\0" // Other -- shouldn't happen + DBUS_ERROR_FAILED "\0" // Failed + DBUS_ERROR_NO_MEMORY "\0" // NoMemory + DBUS_ERROR_SERVICE_UNKNOWN "\0" // ServiceUnknown + DBUS_ERROR_NO_REPLY "\0" // NoReply + DBUS_ERROR_BAD_ADDRESS "\0" // BadAddress + DBUS_ERROR_NOT_SUPPORTED "\0" // NotSupported + DBUS_ERROR_LIMITS_EXCEEDED "\0" // LimitsExceeded + DBUS_ERROR_ACCESS_DENIED "\0" // AccessDenied + DBUS_ERROR_NO_SERVER "\0" // NoServer + DBUS_ERROR_TIMEOUT "\0" // Timeout + DBUS_ERROR_NO_NETWORK "\0" // NoNetwork + DBUS_ERROR_ADDRESS_IN_USE "\0" // AddressInUse + DBUS_ERROR_DISCONNECTED "\0" // Disconnected + DBUS_ERROR_INVALID_ARGS "\0" // InvalidArgs + DBUS_ERROR_UNKNOWN_METHOD "\0" // UnknownMethod + DBUS_ERROR_TIMED_OUT "\0" // TimedOut + DBUS_ERROR_INVALID_SIGNATURE "\0" // InvalidSignature + "com.trolltech.QtDBus.Error.UnknownInterface\0" // UnknownInterface + "com.trolltech.QtDBus.Error.InternalError\0" // InternalError + "\0"; + +ErrorMessageMapping::ErrorMessageMapping() + : messages(int(QDBusError::qKnownErrorsMax)) +{ + // create the list: + const char *p = errorMessages_string; + int i = 0; + while (*p) { + messages[i] = p; + p += strlen(p) + 1; + ++i; + } +} + +Q_GLOBAL_STATIC(ErrorMessageMapping, errorMessages) + +/*! + \class QDBusError + \brief Represents an error received from the D-Bus bus or from remote applications found in the bus. + + When dealing with the D-Bus bus service or with remote applications over D-Bus, a number of + error conditions can happen. This error conditions are sometimes signalled by a returned error + value or by a QDBusError. + + C++ and Java exceptions are a valid analogy for D-Bus errors: instead of returning normally with + a return value, remote applications and the bus may decide to throw an error condition. However, + the QtDBus implementation does not use the C++ exception-throwing mechanism, so you will receive + QDBusErrors in the return reply (see QDBusReply::error()). + + QDBusError objects are used to inspect the error name and message as received from the bus and + remote applications. You should not create such objects yourself to signal error conditions when + called from D-Bus: instead, use QDBusMessage::error and QDBusConnection::send. + + \sa QDBusConnection::send(), QDBusMessage, QDBusReply +*/ + +/*! + \enum QDBusError::KnownErrors + + In order to facilitate verification of the most common D-Bus errors generated by the D-Bus + implementation and by the bus daemon itself, QDBusError can be compared to a set of pre-defined + values: + + \value NoError QDBusError is invalid (i.e., the call succeeded) + \value Other QDBusError contains an error that is one of the well-known ones + \value Failed The call failed (\c org.freedesktop.DBus.Error.Failed) + \value NoMemory Out of memory (\c org.freedesktop.DBus.Error.NoMemory) + \value ServiceUnknown The called service is not known + (\c org.freedesktop.DBus.Error.ServiceUnknown) + \value NoReply The called method did not reply within the specified timeout + (\c org.freedesktop.DBus.Error.NoReply) + \value BadAddress The address given is not valid + (\c org.freedesktop.DBus.Error.BadAddress) + \value NotSupported The call/operation is not supported + (\c org.freedesktop.DBus.Error.NotSupported) + \value LimitsExceeded The limits allocated to this process/call/connection exceeded the + pre-defined values (\c org.freedesktop.DBus.Error.LimitsExceeded) + \value AccessDenied The call/operation tried to access a resource it isn't allowed to + (\c org.freedesktop.DBus.Error.AccessDenied) + \value NoServer \i{Documentation doesn't say what this is for} + (\c org.freedesktop.DBus.Error.NoServer) + \value Timeout \i{Documentation doesn't say what this is for or how it's used} + (\c org.freedesktop.DBus.Error.Timeout) + \value NoNetwork \i{Documentation doesn't say what this is for} + (\c org.freedesktop.DBus.Error.NoNetwork) + \value AddressInUse QDBusServer tried to bind to an address that is already in use + (\c org.freedesktop.DBus.Error.AddressInUse) + \value Disconnected The call/process/message was sent after QDBusConnection disconnected + (\c org.freedesktop.DBus.Error.Disconnected) + \value InvalidArgs The arguments passed to this call/operation are not valid + (\c org.freedesktop.DBus.Error.InvalidArgs) + \value UnknownMethod The method called was not found in this object/interface with the + given parameters (\c org.freedesktop.DBus.Error.UnknownMethod) + \value TimedOut \i{Documentation doesn't say...} + (\c org.freedesktop.DBus.Error.TimedOut) + \value InvalidSignature The type signature is not valid or compatible + (\c org.freedesktop.DBus.Error.InvalidSignature) + \value UnknownInterface The interface is not known + \value InternalError An internal error occurred + (\c com.trolltech.QtDBus.Error.InternalError) + +*/ + +/*! + \internal + Constructs a QDBusError from a DBusError structure. +*/ +QDBusError::QDBusError(const DBusError *error) + : code(NoError) +{ + if (!error || !dbus_error_is_set(error)) + return; + + code = errorMessages()->get(error->name); + nm = QString::fromUtf8(error->name); + msg = QString::fromUtf8(error->message); +} + +/*! + \internal + Constructs a QDBusError from a QDBusMessage. +*/ +QDBusError::QDBusError(const QDBusMessage &qdmsg) + : code(Other) +{ + if (qdmsg.type() != QDBusMessage::ErrorMessage) + return; + + nm = qdmsg.name(); + if (qdmsg.count()) + msg = qdmsg[0].toString(); + code = errorMessages()->get(nm.toUtf8().constData()); +} + +/*! + \internal + Constructs a QDBusError from a well-known error code +*/ +QDBusError::QDBusError(KnownErrors error, const QString &message) + : code(error) +{ + nm = errorMessages()->get(error); + msg = message; +} + +/*! + \fn QDBusError::name() const + Returns this error's name. Error names are similar to D-Bus Interface names, like + "org.freedesktop.DBus.InvalidArgs". +*/ + +/*! + \fn QDBusError::message() const + Returns the message that the callee associated with this error. Error messages are + implementation defined and usually contain a human-readable error code, though this does not + mean it is suitable for your end-users. +*/ + +/*! + \fn QDBusError::isValid() const + Returns true if this is a valid error condition (i.e., if there was an error), false otherwise. +*/ + +/*! + \fn QDBusError::operator==(KnownErrors error) const + Compares this QDBusError against the well-known error code \a error and returns true if they + match. +*/ + +/*! + \fn operator==(QDBusError::KnownErrors p1, const QDBusError &p2) + \relates QDBusError + + Compares the QDBusError \a p2 against the well-known error code \a p1 and returns true if they + match. +*/ + +#ifndef QT_NO_DEBUG +QDebug operator<<(QDebug dbg, const QDBusError &msg) +{ + dbg.nospace() << "QDBusError(" << msg.name() << ", " << msg.message() << ")"; + return dbg.space(); +} +#endif + + diff --git a/qt/src/qdbuserror.h b/qt/src/qdbuserror.h new file mode 100644 index 00000000..71c636df --- /dev/null +++ b/qt/src/qdbuserror.h @@ -0,0 +1,93 @@ +/* qdbuserror.h QDBusError object + * + * Copyright (C) 2005 Harald Fernengel + * Copyright (C) 2006 Trolltech AS. All rights reserved. + * Author: Thiago Macieira + * + * Licensed under the Academic Free License version 2.1 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef QDBUSERROR_H +#define QDBUSERROR_H + +#include "qdbusmacros.h" +#include + +struct DBusError; +class QDBusMessage; + +class QDBUS_EXPORT QDBusError +{ +public: + enum KnownErrors { + NoError = 0, + Other = 1, + Failed, + NoMemory, + ServiceUnknown, + NoReply, + BadAddress, + NotSupported, + LimitsExceeded, + AccessDenied, + NoServer, + Timeout, + NoNetwork, + AddressInUse, + Disconnected, + InvalidArgs, + UnknownMethod, + TimedOut, + InvalidSignature, + UnknownInterface, + InternalError, + +#ifndef Q_QDOC + // don't use this one! + qKnownErrorsMax = InternalError +#endif + }; + + QDBusError(const DBusError *error = 0); + QDBusError(const QDBusMessage& msg); + QDBusError(KnownErrors error, const QString &message); + + inline QString name() const { return nm; } + inline QString message() const { return msg; } + inline bool isValid() const { return !nm.isNull() && !msg.isNull(); } + + inline bool operator==(KnownErrors error) const + { return code == error; } + +private: + KnownErrors code; + QString nm, msg; +}; + +inline bool operator==(QDBusError::KnownErrors p1, const QDBusError &p2) +{ return p2 == p1; } +inline bool operator!=(QDBusError::KnownErrors p1, const QDBusError &p2) +{ return !(p2 == p1); } +inline bool operator!=(const QDBusError &p1, QDBusError::KnownErrors p2) +{ return !(p1 == p2); } + +#ifndef QT_NO_DEBUG +QDebug operator<<(QDebug, const QDBusError &); +#endif + +#endif diff --git a/qt/src/qdbusintegrator.cpp b/qt/src/qdbusintegrator.cpp new file mode 100644 index 00000000..07921cf9 --- /dev/null +++ b/qt/src/qdbusintegrator.cpp @@ -0,0 +1,1552 @@ +/* qdbusintegrator.cpp QDBusConnection private implementation + * + * Copyright (C) 2005 Harald Fernengel + * Copyright (C) 2006 Trolltech AS. All rights reserved. + * Author: Thiago Macieira + * + * Licensed under the Academic Free License version 2.1 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "qdbusconnection_p.h" +#include "qdbusinterface_p.h" +#include "qdbusmessage.h" +#include "qdbusabstractadaptor.h" +#include "qdbusabstractadaptor_p.h" +#include "qdbustypehelper_p.h" +#include "qdbusutil.h" +#include "qdbustype_p.h" + +#ifndef USE_OUTSIDE_DISPATCH +# define USE_OUTSIDE_DISPATCH 0 +#endif + +int QDBusConnectionPrivate::messageMetaType = 0; + +typedef void (*QDBusSpyHook)(const QDBusMessage&); +typedef QVarLengthArray QDBusSpyHookList; +Q_GLOBAL_STATIC(QDBusSpyHookList, qDBusSpyHookList) + +struct QDBusPendingCall +{ + QPointer receiver; + QList metaTypes; + int methodIdx; + DBusPendingCall *pending; + const QDBusConnectionPrivate *connection; +}; + +class CallDeliveryEvent: public QEvent +{ +public: + CallDeliveryEvent() + : QEvent(QEvent::User), object(0), flags(0), slotIdx(-1) + { } + + const QDBusConnectionPrivate *conn; + QPointer object; + QDBusMessage message; + QList metaTypes; + + int flags; + int slotIdx; +}; + +static dbus_bool_t qDBusAddTimeout(DBusTimeout *timeout, void *data) +{ + Q_ASSERT(timeout); + Q_ASSERT(data); + + // qDebug("addTimeout %d", dbus_timeout_get_interval(timeout)); + + QDBusConnectionPrivate *d = static_cast(data); + + if (!dbus_timeout_get_enabled(timeout)) + return true; + + if (!QCoreApplication::instance()) { + d->pendingTimeouts.append(timeout); + return true; + } + int timerId = d->startTimer(dbus_timeout_get_interval(timeout)); + if (!timerId) + return false; + + d->timeouts[timerId] = timeout; + return true; +} + +static void qDBusRemoveTimeout(DBusTimeout *timeout, void *data) +{ + Q_ASSERT(timeout); + Q_ASSERT(data); + + // qDebug("removeTimeout"); + + QDBusConnectionPrivate *d = static_cast(data); + d->pendingTimeouts.removeAll(timeout); + + QDBusConnectionPrivate::TimeoutHash::iterator it = d->timeouts.begin(); + while (it != d->timeouts.end()) { + if (it.value() == timeout) { + d->killTimer(it.key()); + it = d->timeouts.erase(it); + } else { + ++it; + } + } +} + +static void qDBusToggleTimeout(DBusTimeout *timeout, void *data) +{ + Q_ASSERT(timeout); + Q_ASSERT(data); + + //qDebug("ToggleTimeout"); + + qDBusRemoveTimeout(timeout, data); + qDBusAddTimeout(timeout, data); +} + +static dbus_bool_t qDBusAddWatch(DBusWatch *watch, void *data) +{ + Q_ASSERT(watch); + Q_ASSERT(data); + + QDBusConnectionPrivate *d = static_cast(data); + + int flags = dbus_watch_get_flags(watch); + int fd = dbus_watch_get_fd(watch); + + QDBusConnectionPrivate::Watcher watcher; + if (flags & DBUS_WATCH_READABLE) { + //qDebug("addReadWatch %d", fd); + watcher.watch = watch; + if (QCoreApplication::instance()) { + watcher.read = new QSocketNotifier(fd, QSocketNotifier::Read, d); + watcher.read->setEnabled(dbus_watch_get_enabled(watch)); + d->connect(watcher.read, SIGNAL(activated(int)), SLOT(socketRead(int))); + } + } + if (flags & DBUS_WATCH_WRITABLE) { + //qDebug("addWriteWatch %d", fd); + watcher.watch = watch; + if (QCoreApplication::instance()) { + watcher.write = new QSocketNotifier(fd, QSocketNotifier::Write, d); + watcher.write->setEnabled(dbus_watch_get_enabled(watch)); + d->connect(watcher.write, SIGNAL(activated(int)), SLOT(socketWrite(int))); + } + } + d->watchers.insertMulti(fd, watcher); + + return true; +} + +static void qDBusRemoveWatch(DBusWatch *watch, void *data) +{ + Q_ASSERT(watch); + Q_ASSERT(data); + + //qDebug("remove watch"); + + QDBusConnectionPrivate *d = static_cast(data); + int fd = dbus_watch_get_fd(watch); + + QDBusConnectionPrivate::WatcherHash::iterator i = d->watchers.find(fd); + while (i != d->watchers.end() && i.key() == fd) { + if (i.value().watch == watch) { + delete i.value().read; + delete i.value().write; + d->watchers.erase(i); + return; + } + ++i; + } +} + +static void qDBusToggleWatch(DBusWatch *watch, void *data) +{ + Q_ASSERT(watch); + Q_ASSERT(data); + + QDBusConnectionPrivate *d = static_cast(data); + int fd = dbus_watch_get_fd(watch); + + QDBusConnectionPrivate::WatcherHash::iterator i = d->watchers.find(fd); + while (i != d->watchers.end() && i.key() == fd) { + if (i.value().watch == watch) { + bool enabled = dbus_watch_get_enabled(watch); + int flags = dbus_watch_get_flags(watch); + + //qDebug("toggle watch %d to %d (write: %d, read: %d)", dbus_watch_get_fd(watch), enabled, flags & DBUS_WATCH_WRITABLE, flags & DBUS_WATCH_READABLE); + + if (flags & DBUS_WATCH_READABLE && i.value().read) + i.value().read->setEnabled(enabled); + if (flags & DBUS_WATCH_WRITABLE && i.value().write) + i.value().write->setEnabled(enabled); + return; + } + ++i; + } +} + +static void qDBusNewConnection(DBusServer *server, DBusConnection *c, void *data) +{ + Q_ASSERT(data); Q_ASSERT(server); Q_ASSERT(c); + Q_UNUSED(data); Q_UNUSED(server); Q_UNUSED(c); + + qDebug("SERVER: GOT A NEW CONNECTION"); // TODO +} + +extern QDBUS_EXPORT void qDBusAddSpyHook(QDBusSpyHook); +void qDBusAddSpyHook(QDBusSpyHook hook) +{ + qDBusSpyHookList()->append(hook); +} + +#if USE_OUTSIDE_DISPATCH +# define HANDLED DBUS_HANDLER_RESULT_HANDLED_OUTSIDE_DISPATCH +static DBusHandlerResult qDBusSignalFilterOutside(DBusConnection *connection, + DBusMessage *message, void *data) +{ + Q_ASSERT(data); + Q_UNUSED(connection); + Q_UNUSED(message); + + QDBusConnectionPrivate *d = static_cast(data); + if (d->mode == QDBusConnectionPrivate::InvalidMode) + return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; // internal error, actually + + CallDeliveryEvent *e = d->postedCallDeliveryEvent(); + + d->deliverCall(*e); + delete e; + + return DBUS_HANDLER_RESULT_HANDLED; +} +#else +# define HANDLED DBUS_HANDLER_RESULT_HANDLED +#endif + +extern "C" { +static DBusHandlerResult +qDBusSignalFilter(DBusConnection *connection, DBusMessage *message, void *data) +{ + return QDBusConnectionPrivate::messageFilter(connection, message, data); +} +} + +DBusHandlerResult QDBusConnectionPrivate::messageFilter(DBusConnection *connection, + DBusMessage *message, void *data) +{ + Q_ASSERT(data); + Q_UNUSED(connection); + + QDBusConnectionPrivate *d = static_cast(data); + if (d->mode == QDBusConnectionPrivate::InvalidMode) + return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; + + QDBusMessage amsg = QDBusMessage::fromDBusMessage(message, QDBusConnection(d->name)); + qDebug() << "got message:" << amsg; + + const QDBusSpyHookList *list = qDBusSpyHookList(); + for (int i = 0; i < list->size(); ++i) { + qDebug() << "calling the message spy hook"; + (*(*list)[i])(amsg); + } + + bool handled = false; + int msgType = dbus_message_get_type(message); + if (msgType == DBUS_MESSAGE_TYPE_SIGNAL) { + handled = d->handleSignal(amsg); + } else if (msgType == DBUS_MESSAGE_TYPE_METHOD_CALL) { + handled = d->handleObjectCall(amsg); + } + + return handled ? HANDLED : + DBUS_HANDLER_RESULT_NOT_YET_HANDLED; +} + +static void huntAndDestroy(QObject *needle, QDBusConnectionPrivate::ObjectTreeNode *haystack) +{ + foreach (const QDBusConnectionPrivate::ObjectTreeNode::Data &entry, haystack->children) + huntAndDestroy(needle, entry.node); + + if (needle == haystack->obj) { + haystack->obj = 0; + haystack->flags = 0; + } +} + +static void huntAndEmit(DBusConnection *connection, DBusMessage *msg, + QObject *needle, QDBusConnectionPrivate::ObjectTreeNode *haystack, + const QString &path = QString()) +{ + foreach (const QDBusConnectionPrivate::ObjectTreeNode::Data &entry, haystack->children) + huntAndEmit(connection, msg, needle, entry.node, path + QLatin1String("/") + entry.name); + + if (needle == haystack->obj && haystack->flags & QDBusConnection::ExportAdaptors) { + QByteArray p = path.toLatin1(); + if (p.isEmpty()) + p = "/"; + //qDebug() << p; + DBusMessage *msg2 = dbus_message_copy(msg); + dbus_message_set_path(msg2, p); + dbus_connection_send(connection, msg2, 0); + dbus_message_unref(msg2); + } +} + +static bool typesMatch(int metaId, int variantType) +{ + if (metaId == int(variantType)) + return true; + + if (variantType == QVariant::Int && metaId == QMetaType::Short) + return true; + + if (variantType == QVariant::UInt && (metaId == QMetaType::UShort || + metaId == QMetaType::UChar)) + return true; + + if (variantType == QVariant::List) { + if (metaId == QDBusTypeHelper::listId() || + metaId == QDBusTypeHelper::listId() || + metaId == QDBusTypeHelper::listId() || + metaId == QDBusTypeHelper::listId() || + metaId == QDBusTypeHelper::listId() || + metaId == QDBusTypeHelper::listId() || + metaId == QDBusTypeHelper::listId() || + metaId == QDBusTypeHelper::listId()) + return true; + } + + return false; // no match +} + +static int findSlot(const QMetaObject *mo, const QByteArray &name, int flags, + const QDBusTypeList &types, QList& metaTypes) +{ + // find the first slot + const QMetaObject *super = mo; + while (super != &QObject::staticMetaObject && + super != &QDBusAbstractAdaptor::staticMetaObject) + super = super->superClass(); + + int attributeMask = (flags & QDBusConnection::ExportAllSlots) ? + 0 : QMetaMethod::Scriptable; + + for (int idx = super->methodCount() ; idx <= mo->methodCount(); ++idx) { + QMetaMethod mm = mo->method(idx); + + // check access: + if (mm.access() != QMetaMethod::Public) + continue; + + // check type: + // unnecessary, since slots are never public: + //if (mm.methodType() != QMetaMethod::Slot) + // continue; + + // check name: + QByteArray sig = QMetaObject::normalizedSignature(mm.signature()); + int paren = sig.indexOf('('); + if (paren != name.length() || !sig.startsWith( name )) + continue; + + int returnType = qDBusNameToTypeId(mm.typeName()); + bool isAsync = qDBusCheckAsyncTag(mm.tag()); + + // consistency check: + if (isAsync && returnType != QMetaType::Void) + continue; + + int inputCount = qDBusParametersForMethod(mm, metaTypes); + if (inputCount == -1) + continue; // problem parsing + + metaTypes[0] = returnType; + bool hasMessage = false; + if (inputCount > 0 && + metaTypes.at(inputCount) == QDBusConnectionPrivate::messageMetaType) { + // "no input parameters" is allowed as long as the message meta type is there + hasMessage = true; + --inputCount; + } + + // try to match the parameters + if (inputCount != types.count()) + continue; // not enough parameters + + bool matches = true; + int i; + for (i = 0; i < types.count(); ++i) + if ( !typesMatch(metaTypes.at(i + 1), types.at(i).qvariantType()) ) { + matches = false; + break; + } + + if (!matches) + continue; // we didn't match them all + + // consistency check: + if (isAsync && metaTypes.count() > i + 1) + continue; + + if (hasMessage && (mm.attributes() & attributeMask) != attributeMask) + continue; // not exported + + // if we got here, this slot matched + return idx; + } + + // no slot matched + return -1; +} + +static CallDeliveryEvent* prepareReply(QObject *object, int idx, const QList &metaTypes, + const QDBusMessage &msg) +{ + Q_ASSERT(object); + + int n = metaTypes.count() - 1; + if (metaTypes[n] == QDBusConnectionPrivate::messageMetaType) + --n; + + // check that types match + for (int i = 0; i < n; ++i) + if (!typesMatch(metaTypes.at(i + 1), msg.at(i).type())) + return 0; // no match + + // we can deliver + // prepare for the call + CallDeliveryEvent *data = new CallDeliveryEvent; + data->object = object; + data->flags = 0; + data->message = msg; + data->metaTypes = metaTypes; + data->slotIdx = idx; + + return data; +} + +bool QDBusConnectionPrivate::activateSignal(const QDBusConnectionPrivate::SignalHook& hook, + const QDBusMessage &msg) +{ + // This is called by QDBusConnectionPrivate::handleSignal to deliver a signal + // that was received from D-Bus + // + // Signals are delivered to slots if the parameters match + // Slots can have less parameters than there are on the message + // Slots can optionally have one final parameter that is a QDBusMessage + // Slots receive read-only copies of the message (i.e., pass by value or by const-ref) + CallDeliveryEvent *call = prepareReply(hook.obj, hook.midx, hook.params, msg); + if (call) { + postCallDeliveryEvent(call); + return true; + } + return false; +} + +bool QDBusConnectionPrivate::activateCall(QObject* object, int flags, + const QDBusMessage &msg) +{ + // This is called by QDBusConnectionPrivate::handleObjectCall to place a call + // to a slot on the object. + // + // The call is delivered to the first slot that matches the following conditions: + // - has the same name as the message's target name + // - ALL of the message's types are found in slot's parameter list + // - optionally has one more parameter of type QDBusMessage + // If none match, then the slot of the same name as the message target and with + // the first type of QDBusMessage is delivered. + // + // Because the marshalling of D-Bus data into QVariant loses the information on + // the original types, the message signature is used to determine the original type. + // Aside from that, the "int" and "unsigned" types will be tried as well. + // + // The D-Bus specification requires that all MethodCall messages be replied to, unless the + // caller specifically waived this requirement. This means that we inspect if the user slot + // generated a reply and, if it didn't, we will. Obviously, if the user slot doesn't take a + // QDBusMessage parameter, it cannot generate a reply. + // + // When a return message is generated, the slot's return type, if any, will be placed + // in the message's first position. If there are non-const reference parameters to the + // slot, they must appear at the end and will be placed in the subsequent message + // positions. + + if (!object) + return false; + + QList metaTypes; + int idx; + + { + const QMetaObject *mo = object->metaObject(); + QDBusTypeList typeList(msg.signature().toUtf8()); + QByteArray name = msg.name().toUtf8(); + + // find a slot that matches according to the rules above + idx = ::findSlot(mo, name, flags, typeList, metaTypes); + if (idx == -1) { + // try with no parameters, but with a QDBusMessage + idx = ::findSlot(mo, name, flags, QDBusTypeList(), metaTypes); + if (metaTypes.count() != 2 || metaTypes.at(1) != messageMetaType) + return false; + } + } + + // found the slot to be called + // prepare for the call: + CallDeliveryEvent *call = new CallDeliveryEvent; + + // parameters: + call->object = object; + call->flags = flags; + call->message = msg; + + // save our state: + call->metaTypes = metaTypes; + call->slotIdx = idx; + + postCallDeliveryEvent(call); + + // ready + return true; +} + +void QDBusConnectionPrivate::postCallDeliveryEvent(CallDeliveryEvent *data) +{ + Q_ASSERT(data); + data->conn = this; +#if USE_OUTSIDE_DISPATCH + callDeliveryMutex.lock(); + callDeliveryState = data; +#else + QCoreApplication::postEvent( this, data ); +#endif +} + +CallDeliveryEvent *QDBusConnectionPrivate::postedCallDeliveryEvent() +{ + CallDeliveryEvent *e = callDeliveryState; + Q_ASSERT(e && e->conn == this); + + // release it: + callDeliveryState = 0; + callDeliveryMutex.unlock(); + + return e; +} + +void QDBusConnectionPrivate::deliverCall(const CallDeliveryEvent& data) const +{ + // resume state: + const QList& metaTypes = data.metaTypes; + const QDBusMessage& msg = data.message; + + QVarLengthArray params; + params.reserve(metaTypes.count()); + + QVariantList auxParameters; + // let's create the parameter list + + // first one is the return type -- add it below + params.append(0); + + // add the input parameters + int i; + for (i = 1; i <= msg.count(); ++i) { + int id = metaTypes[i]; + if (id == QDBusConnectionPrivate::messageMetaType) + break; + + if (id == int(msg.at(i - 1).userType())) + // no conversion needed + params.append(const_cast( msg.at(i - 1).constData() )); + else { + // convert to what the function expects + auxParameters.append(QVariant()); + + const QVariant &in = msg.at(i - 1); + QVariant &out = auxParameters[auxParameters.count() - 1]; + + bool error = false; + if (id == QVariant::List) { + int mid = in.userType(); + // the only conversion possible here is from a specialised QList to QVariantList + if (mid == QDBusTypeHelper::listId()) + out = qVariantFromValue(QDBusTypeHelper::toVariantList(in)); + else if (mid == QDBusTypeHelper::listId()) + out = qVariantFromValue(QDBusTypeHelper::toVariantList(in)); + else if (mid == QDBusTypeHelper::listId()) + out = qVariantFromValue(QDBusTypeHelper::toVariantList(in)); + else if (mid == QDBusTypeHelper::listId()) + out = qVariantFromValue(QDBusTypeHelper::toVariantList(in)); + else if (mid == QDBusTypeHelper::listId()) + out = qVariantFromValue(QDBusTypeHelper::toVariantList(in)); + else if (mid == QDBusTypeHelper::listId()) + out = qVariantFromValue(QDBusTypeHelper::toVariantList(in)); + else if (mid == QDBusTypeHelper::listId()) + out = qVariantFromValue(QDBusTypeHelper::toVariantList(in)); + else if (mid == QDBusTypeHelper::listId()) + out = qVariantFromValue(QDBusTypeHelper::toVariantList(in)); + else + error = true; + } else if (in.type() == QVariant::UInt) { + if (id == QMetaType::UChar) { + uchar uc = in.toUInt(); + out = qVariantFromValue(uc); + } else if (id == QMetaType::UShort) { + ushort us = in.toUInt(); + out = qVariantFromValue(us); + } else { + error = true; + } + } else if (in.type() == QVariant::Int) { + if (id == QMetaType::Short) { + short s = in.toInt(); + out = qVariantFromValue(s); + } else { + error = true; + } + } else { + error = true; + } + + if (error) + qFatal("Internal error: got invalid meta type %d when trying to convert to meta type %d", + in.userType(), id); + + params.append( const_cast(out.constData()) ); + } + } + + bool takesMessage = false; + if (metaTypes.count() > i && metaTypes[i] == QDBusConnectionPrivate::messageMetaType) { + params.append(const_cast(static_cast(&msg))); + takesMessage = true; + ++i; + } + + // output arguments + QVariantList outputArgs; + void *null = 0; + if (metaTypes[0] != QMetaType::Void) { + QVariant arg(metaTypes[0], null); + outputArgs.append( arg ); + params[0] = const_cast(outputArgs.at( outputArgs.count() - 1 ).constData()); + } + for ( ; i < metaTypes.count(); ++i) { + QVariant arg(metaTypes[i], null); + outputArgs.append( arg ); + params.append( const_cast(outputArgs.at( outputArgs.count() - 1 ).constData()) ); + } + + // make call: + bool fail; + if (data.object.isNull()) + fail = true; + else + fail = data.object->qt_metacall(QMetaObject::InvokeMetaMethod, + data.slotIdx, params.data()) >= 0; + + // do we create a reply? Only if the caller is waiting for a reply and one hasn't been sent + // yet. + if (!msg.noReply() && !msg.wasRepliedTo()) { + if (!fail) { + // normal reply + QDBusMessage reply = QDBusMessage::methodReply(msg); + reply += outputArgs; + + qDebug() << "Automatically sending reply:" << reply; + send(reply); + } + else { + // generate internal error + QDBusMessage reply = QDBusMessage::error(msg, QDBusError(QDBusError::InternalError, + QLatin1String("Failed to deliver message"))); + qWarning("Internal error: Failed to deliver message"); + send(reply); + } + } + + return; +} + +void QDBusConnectionPrivate::customEvent(QEvent *event) +{ + // nothing else should be sending custom events at us + CallDeliveryEvent* call = static_cast(event); + + // self check: + Q_ASSERT(call->conn == this); + + deliverCall(*call); +} + +QDBusConnectionPrivate::QDBusConnectionPrivate(QObject *parent) + : QObject(parent), ref(1), mode(InvalidMode), connection(0), server(0), busService(0) +{ + extern bool qDBusInitThreads(); + static const int msgType = registerMessageMetaType(); + static const bool threads = qDBusInitThreads(); + static const bool metatypes = QDBusMetaTypeId::innerInitialize(); + + Q_UNUSED(msgType); + Q_UNUSED(threads); + Q_UNUSED(metatypes); + + dbus_error_init(&error); + + rootNode.flags = 0; +} + +QDBusConnectionPrivate::~QDBusConnectionPrivate() +{ + if (dbus_error_is_set(&error)) + dbus_error_free(&error); + + closeConnection(); + rootNode.clear(); // free resources + qDeleteAll(cachedMetaObjects); +} + +void QDBusConnectionPrivate::closeConnection() +{ + QWriteLocker locker(&lock); + ConnectionMode oldMode = mode; + mode = InvalidMode; // prevent reentrancy + if (oldMode == ServerMode) { + if (server) { + dbus_server_disconnect(server); + dbus_server_unref(server); + server = 0; + } + } else if (oldMode == ClientMode) { + if (connection) { + dbus_connection_close(connection); + // send the "close" message + while (dbus_connection_dispatch(connection) == DBUS_DISPATCH_DATA_REMAINS) + ; + dbus_connection_unref(connection); + connection = 0; + } + } +} + +bool QDBusConnectionPrivate::handleError() +{ + lastError = QDBusError(&error); + if (dbus_error_is_set(&error)) + dbus_error_free(&error); + return lastError.isValid(); +} + +void QDBusConnectionPrivate::bindToApplication() +{ + // Yay, now that we have an application we are in business + Q_ASSERT_X(QCoreApplication::instance(), "QDBusConnection", + "qDBusBindToApplication called without an application"); + moveToThread(QCoreApplication::instance()->thread()); + + // Re-add all watchers + WatcherHash oldWatchers = watchers; + watchers.clear(); + QHashIterator it(oldWatchers); + while (it.hasNext()) { + it.next(); + if (!it.value().read && !it.value().write) { + qDBusAddWatch(it.value().watch, this); + } else { + watchers.insertMulti(it.key(), it.value()); + } + } + + // Re-add all timeouts + while (!pendingTimeouts.isEmpty()) + qDBusAddTimeout(pendingTimeouts.takeFirst(), this); +} + +void QDBusConnectionPrivate::timerEvent(QTimerEvent *e) +{ + DBusTimeout *timeout = timeouts.value(e->timerId(), 0); + dbus_timeout_handle(timeout); +} + +void QDBusConnectionPrivate::doDispatch() +{ + if (mode == ClientMode) + while (dbus_connection_dispatch(connection) == DBUS_DISPATCH_DATA_REMAINS); +} + +void QDBusConnectionPrivate::socketRead(int fd) +{ + QHashIterator it(watchers); + while (it.hasNext()) { + it.next(); + if (it.key() == fd && it.value().read && it.value().read->isEnabled()) { + if (!dbus_watch_handle(it.value().watch, DBUS_WATCH_READABLE)) + qDebug("OUT OF MEM"); + } + } + + doDispatch(); +} + +void QDBusConnectionPrivate::socketWrite(int fd) +{ + QHashIterator it(watchers); + while (it.hasNext()) { + it.next(); + if (it.key() == fd && it.value().write && it.value().write->isEnabled()) { + if (!dbus_watch_handle(it.value().watch, DBUS_WATCH_WRITABLE)) + qDebug("OUT OF MEM"); + } + } +} + +void QDBusConnectionPrivate::objectDestroyed(QObject *obj) +{ + QWriteLocker locker(&lock); + huntAndDestroy(obj, &rootNode); + + SignalHookHash::iterator sit = signalHooks.begin(); + while (sit != signalHooks.end()) { + if (static_cast(sit.value().obj) == obj) + sit = signalHooks.erase(sit); + else + ++sit; + } + + obj->disconnect(this); +} + +void QDBusConnectionPrivate::relaySignal(QObject *obj, const char *interface, const char *name, + const QVariantList &args) +{ + QReadLocker locker(&lock); + QDBusMessage message = QDBusMessage::signal(QLatin1String("/"), QLatin1String(interface), + QLatin1String(name)); + message += args; + DBusMessage *msg = message.toDBusMessage(); + if (!msg) { + qWarning("Could not emit signal %s.%s", interface, name); + return; + } + + //qDebug() << "Emitting signal" << message; + //qDebug() << "for paths:"; + dbus_message_set_no_reply(msg, true); // the reply would not be delivered to anything + huntAndEmit(connection, msg, obj, &rootNode); + dbus_message_unref(msg); +} + +int QDBusConnectionPrivate::registerMessageMetaType() +{ + int tp = messageMetaType = qRegisterMetaType("QDBusMessage"); + return tp; +} + +int QDBusConnectionPrivate::findSlot(QObject* obj, const QByteArray &normalizedName, + QList ¶ms) +{ + int midx = obj->metaObject()->indexOfMethod(normalizedName); + if (midx == -1) { + qWarning("No such slot '%s' while connecting D-Bus", normalizedName.constData()); + return -1; + } + + int inputCount = qDBusParametersForMethod(obj->metaObject()->method(midx), params); + if ( inputCount == -1 || inputCount + 1 != params.count() ) + return -1; // failed to parse or invalid arguments or output arguments + + return midx; +} + +bool QDBusConnectionPrivate::prepareHook(QDBusConnectionPrivate::SignalHook &hook, QString &key, + const QString &service, const QString &path, + const QString &interface, const QString &name, + QObject *receiver, const char *signal, int minMIdx, + bool buildSignature) +{ + QByteArray normalizedName = QMetaObject::normalizedSignature(signal + 1); + hook.midx = findSlot(receiver, normalizedName, hook.params); + if (hook.midx < minMIdx) + return false; + + hook.sender = service; + hook.path = path; + hook.obj = receiver; + + // build the D-Bus signal name and signature + QString mname = name; + if (mname.isEmpty()) { + normalizedName.truncate(normalizedName.indexOf('(')); + mname = QString::fromUtf8(normalizedName); + } + key = mname; + key.reserve(interface.length() + 1 + mname.length()); + key += ':'; + key += interface; + + if (buildSignature) { + hook.signature.clear(); + for (int i = 1; i < hook.params.count(); ++i) + if (hook.params.at(i) != messageMetaType) + hook.signature += QLatin1String( QDBusType::dbusSignature( QVariant::Type(hook.params.at(i)) ) ); + } + + return true; // connect to this signal +} + +bool QDBusConnectionPrivate::activateInternalFilters(const ObjectTreeNode *node, const QDBusMessage &msg) +{ + // object may be null + + if (msg.interface().isEmpty() || msg.interface() == QLatin1String(DBUS_INTERFACE_INTROSPECTABLE)) { + if (msg.method() == QLatin1String("Introspect") && msg.signature().isEmpty()) + qDBusIntrospectObject(node, msg); + if (msg.interface() == QLatin1String(DBUS_INTERFACE_INTROSPECTABLE)) + return true; + } + + if (node->obj && (msg.interface().isEmpty() || + msg.interface() == QLatin1String(DBUS_INTERFACE_PROPERTIES))) { + if (msg.method() == QLatin1String("Get") && msg.signature() == QLatin1String("ss")) + qDBusPropertyGet(node, msg); + else if (msg.method() == QLatin1String("Set") && msg.signature() == QLatin1String("ssv")) + qDBusPropertySet(node, msg); + + if (msg.interface() == QLatin1String(DBUS_INTERFACE_PROPERTIES)) + return true; + } + + return false; +} + +bool QDBusConnectionPrivate::activateObject(const ObjectTreeNode *node, const QDBusMessage &msg) +{ + // This is called by QDBusConnectionPrivate::handleObjectCall to place a call to a slot + // on the object. + // + // The call is routed through the adaptor sub-objects if we have any + + // object may be null + + QDBusAdaptorConnector *connector; + if (node->flags & QDBusConnection::ExportAdaptors && + (connector = qDBusFindAdaptorConnector(node->obj))) { + int newflags = node->flags | QDBusConnection::ExportAllSlots; + + if (msg.interface().isEmpty()) { + // place the call in all interfaces + // let the first one that handles it to work + foreach (const QDBusAdaptorConnector::AdaptorData &entry, connector->adaptors) + if (activateCall(entry.adaptor, newflags, msg)) + return true; + } else { + // check if we have an interface matching the name that was asked: + QDBusAdaptorConnector::AdaptorMap::ConstIterator it; + it = qLowerBound(connector->adaptors.constBegin(), connector->adaptors.constEnd(), + msg.interface()); + if (it != connector->adaptors.end() && it->interface == msg.interface()) + if (activateCall(it->adaptor, newflags, msg)) + return true; + } + } + + // no adaptors matched + // try our standard filters + if (activateInternalFilters(node, msg)) + return true; + + // try the object itself: + if (node->flags & QDBusConnection::ExportSlots && activateCall(node->obj, node->flags, msg)) + return true; +#if 0 + // nothing matched + qDebug("Call failed: no match for %s%s%s at %s", + qPrintable(msg.interface()), msg.interface().isEmpty() ? "" : ".", + qPrintable(msg.name()), + qPrintable(msg.path())); +#endif + return false; +} + +template +static bool applyForObject(QDBusConnectionPrivate::ObjectTreeNode *root, const QString &fullpath, + Func& functor) +{ + // walk the object tree + QStringList path = fullpath.split(QLatin1Char('/')); + if (path.last().isEmpty()) + path.removeLast(); // happens if path is "/" + int i = 1; + QDBusConnectionPrivate::ObjectTreeNode *node = root; + + // try our own tree first + while (node && !(node->flags & QDBusConnection::ExportChildObjects) ) { + if (i == path.count()) { + // found our object + functor(node); + return true; + } + + QVector::ConstIterator it = + qLowerBound(node->children.constBegin(), node->children.constEnd(), path.at(i)); + if (it != node->children.constEnd() && it->name == path.at(i)) + // match + node = it->node; + else + node = 0; + + ++i; + } + + // any object in the tree can tell us to switch to its own object tree: + if (node && node->flags & QDBusConnection::ExportChildObjects) { + QObject *obj = node->obj; + + while (obj) { + if (i == path.count()) { + // we're at the correct level + QDBusConnectionPrivate::ObjectTreeNode fakenode(*node); + fakenode.obj = obj; + functor(&fakenode); + return true; + } + + const QObjectList children = obj->children(); + + // find a child with the proper name + QObject *next = 0; + foreach (QObject *child, children) + if (child->objectName() == path.at(i)) { + next = child; + break; + } + + if (!next) + break; + + ++i; + obj = next; + } + } + + // object not found + return false; +} + +struct qdbus_activateObject +{ + QDBusConnectionPrivate *self; + const QDBusMessage &msg; + bool returnVal; + inline qdbus_activateObject(QDBusConnectionPrivate *s, const QDBusMessage &m) + : self(s), msg(m) + { } + + inline void operator()(QDBusConnectionPrivate::ObjectTreeNode *node) + { returnVal = self->activateObject(node, msg); } +}; + +bool QDBusConnectionPrivate::handleObjectCall(const QDBusMessage &msg) +{ + QReadLocker locker(&lock); + + qdbus_activateObject apply(this, msg); + if (applyForObject(&rootNode, msg.path(), apply)) + return apply.returnVal; + + qDebug("Call failed: no object found at %s", qPrintable(msg.path())); + return false; +} + +bool QDBusConnectionPrivate::handleSignal(const QString &key, const QDBusMessage& msg) +{ + bool result = false; + SignalHookHash::const_iterator it = signalHooks.find(key); + //qDebug("looking for: %s", path.toLocal8Bit().constData()); + //qDebug() << signalHooks.keys(); + for ( ; it != signalHooks.constEnd() && it.key() == key; ++it) { + const SignalHook &hook = it.value(); + if ( !hook.sender.isEmpty() && hook.sender != msg.sender() ) + continue; + if ( !hook.path.isEmpty() && hook.path != msg.path() ) + continue; + if ( !hook.signature.isEmpty() && hook.signature != msg.signature() ) + continue; + if ( hook.signature.isEmpty() && !hook.signature.isNull() && !msg.signature().isEmpty()) + continue; + + // yes, |= + result |= activateSignal(hook, msg); + } + return result; +} + +bool QDBusConnectionPrivate::handleSignal(const QDBusMessage& msg) +{ + QString key = msg.member(); + key.reserve(key.length() + 1 + msg.interface().length()); + key += ':'; + key += msg.interface(); + + QReadLocker locker(&lock); + bool result = handleSignal(key, msg); // one try + + key.truncate(msg.member().length() + 1); // keep the ':' + result |= handleSignal(key, msg); // second try + return result; +} + +static dbus_int32_t server_slot = -1; + +void QDBusConnectionPrivate::setServer(DBusServer *s) +{ + if (!server) { + handleError(); + return; + } + + server = s; + mode = ServerMode; + + dbus_server_allocate_data_slot(&server_slot); + if (server_slot < 0) + return; + + dbus_server_set_watch_functions(server, qDBusAddWatch, qDBusRemoveWatch, + qDBusToggleWatch, this, 0); // ### check return type? + dbus_server_set_timeout_functions(server, qDBusAddTimeout, qDBusRemoveTimeout, + qDBusToggleTimeout, this, 0); + dbus_server_set_new_connection_function(server, qDBusNewConnection, this, 0); + + dbus_server_set_data(server, server_slot, this, 0); +} + +void QDBusConnectionPrivate::setConnection(DBusConnection *dbc) +{ + if (!dbc) { + handleError(); + return; + } + + connection = dbc; + mode = ClientMode; + + dbus_connection_set_exit_on_disconnect(connection, false); + dbus_connection_set_watch_functions(connection, qDBusAddWatch, qDBusRemoveWatch, + qDBusToggleWatch, this, 0); + dbus_connection_set_timeout_functions(connection, qDBusAddTimeout, qDBusRemoveTimeout, + qDBusToggleTimeout, this, 0); +// dbus_bus_add_match(connection, "type='signal',interface='com.trolltech.dbus.Signal'", &error); +// dbus_bus_add_match(connection, "type='signal'", &error); + + dbus_bus_add_match(connection, "type='signal'", &error); + if (handleError()) { + closeConnection(); + return; + } + + const char *service = dbus_bus_get_unique_name(connection); + if (service) { + QVarLengthArray filter; + filter.append("destination='", 13); + filter.append(service, qstrlen(service)); + filter.append("\'\0", 2); + + dbus_bus_add_match(connection, filter.constData(), &error); + if (handleError()) { + closeConnection(); + return; + } + } else { + qWarning("QDBusConnectionPrivate::SetConnection: Unable to get base service"); + } + +#if USE_OUTSIDE_DISPATCH + dbus_connection_add_filter_outside(connection, qDBusSignalFilter, qDBusSignalFilterOutside, this, 0); +#else + dbus_connection_add_filter(connection, qDBusSignalFilter, this, 0); +#endif + + //qDebug("base service: %s", service); + + // schedule a dispatch: + QMetaObject::invokeMethod(this, "doDispatch", Qt::QueuedConnection); +} + +extern "C"{ +static void qDBusResultReceived(DBusPendingCall *pending, void *user_data) +{ + QDBusConnectionPrivate::messageResultReceived(pending, user_data); +} +} + +void QDBusConnectionPrivate::messageResultReceived(DBusPendingCall *pending, void *user_data) +{ + QDBusPendingCall *call = reinterpret_cast(user_data); + QDBusConnectionPrivate *connection = const_cast(call->connection); + Q_ASSERT(call->pending == pending); + + if (!call->receiver.isNull() && call->methodIdx != -1) { + DBusMessage *reply = dbus_pending_call_steal_reply(pending); + + // Deliver the return values of a remote function call. + // + // There is only one connection and it is specified by idx + // The slot must have the same parameter types that the message does + // The slot may have less parameters than the message + // The slot may optionally have one final parameter that is QDBusMessage + // The slot receives read-only copies of the message (i.e., pass by value or by const-ref) + + QDBusMessage msg = QDBusMessage::fromDBusMessage(reply, QDBusConnection(connection->name)); + qDebug() << "got message: " << msg; + CallDeliveryEvent *e = prepareReply(call->receiver, call->methodIdx, call->metaTypes, msg); + if (e) + connection->postCallDeliveryEvent(e); + else + qDebug() << "Deliver failed!"; + } + dbus_pending_call_unref(pending); + delete call; +} + +int QDBusConnectionPrivate::send(const QDBusMessage& message) const +{ + DBusMessage *msg = message.toDBusMessage(); + if (!msg) + return 0; + + dbus_message_set_no_reply(msg, true); // the reply would not be delivered to anything + + qDebug() << "sending message:" << message; + bool isOk = dbus_connection_send(connection, msg, 0); + int serial = 0; + if (isOk) + serial = dbus_message_get_serial(msg); + + dbus_message_unref(msg); + return serial; +} + +QDBusMessage QDBusConnectionPrivate::sendWithReply(const QDBusMessage &message, + int mode) +{ + if (!QCoreApplication::instance() || mode == QDBusConnection::NoUseEventLoop) { + DBusMessage *msg = message.toDBusMessage(); + if (!msg) + return QDBusMessage(); + + qDebug() << "sending message:" << message; + DBusMessage *reply = dbus_connection_send_with_reply_and_block(connection, msg, + -1, &error); + handleError(); + dbus_message_unref(msg); + + if (lastError.isValid()) + return QDBusMessage::fromError(lastError); + + QDBusMessage amsg = QDBusMessage::fromDBusMessage(reply, QDBusConnection(name)); + qDebug() << "got message:" << amsg; + + if (dbus_connection_get_dispatch_status(connection) == DBUS_DISPATCH_DATA_REMAINS) + QMetaObject::invokeMethod(this, "doDispatch", Qt::QueuedConnection); + return amsg; + } else { // use the event loop + QDBusReplyWaiter waiter; + if (sendWithReplyAsync(message, &waiter, SLOT(reply(const QDBusMessage&))) > 0) { + // enter the event loop and wait for a reply + waiter.exec(QEventLoop::ExcludeUserInputEvents | QEventLoop::WaitForMoreEvents); + + lastError = waiter.replyMsg; // set or clear error + return waiter.replyMsg; + } + + return QDBusMessage(); + } +} + +int QDBusConnectionPrivate::sendWithReplyAsync(const QDBusMessage &message, QObject *receiver, + const char *method) +{ + if (!receiver || !method || !*method) + // would not be able to deliver a reply + return send(message); + + int slotIdx = -1; + QList metaTypes; + QByteArray normalizedName = QMetaObject::normalizedSignature(method + 1); + slotIdx = findSlot(receiver, normalizedName, metaTypes); + if (slotIdx == -1) + // would not be able to deliver a reply + return send(message); + + DBusMessage *msg = message.toDBusMessage(); + if (!msg) + return 0; + + qDebug() << "sending message:" << message; + DBusPendingCall *pending = 0; + if (dbus_connection_send_with_reply(connection, msg, &pending, message.timeout())) { + if (slotIdx != -1) { + QDBusPendingCall *pcall = new QDBusPendingCall; + pcall->receiver = receiver; + pcall->metaTypes = metaTypes; + pcall->methodIdx = slotIdx; + pcall->connection = this; + pcall->pending = dbus_pending_call_ref(pending); + dbus_pending_call_set_notify(pending, qDBusResultReceived, pcall, 0); + } + dbus_pending_call_unref(pending); + return dbus_message_get_serial(msg); + } + + return 0; +} + +void QDBusConnectionPrivate::connectSignal(const QString &key, const SignalHook &hook) +{ + signalHooks.insertMulti(key, hook); + connect(hook.obj, SIGNAL(destroyed(QObject*)), SLOT(objectDestroyed(QObject*))); +} + +void QDBusConnectionPrivate::registerObject(const ObjectTreeNode *node) +{ + connect(node->obj, SIGNAL(destroyed(QObject*)), SLOT(objectDestroyed(QObject*))); + + if (node->flags & QDBusConnection::ExportAdaptors) { + QDBusAdaptorConnector *connector = qDBusCreateAdaptorConnector(node->obj); + + // disconnect and reconnect to avoid duplicates + connector->disconnect(SIGNAL(relaySignal(QObject*,const char*,const char*,QVariantList)), + this, SLOT(relaySignal(QObject*,const char*,const char*,QVariantList))); + connect(connector, SIGNAL(relaySignal(QObject*,const char*,const char*,QVariantList)), + SLOT(relaySignal(QObject*,const char*,const char*,QVariantList))); + } +} + +void QDBusConnectionPrivate::connectRelay(const QString &service, const QString &path, + const QString &interface, + QDBusAbstractInterface *receiver, + const char *signal) +{ + // this function is called by QDBusAbstractInterface when one of its signals is connected + // we set up a relay from D-Bus into it + SignalHook hook; + QString key; + if (!prepareHook(hook, key, service, path, interface, QString(), receiver, signal, + QDBusAbstractInterface::staticMetaObject.methodCount(), true)) + return; // don't connect + + // add it to our list: + QWriteLocker locker(&lock); + SignalHookHash::ConstIterator it = signalHooks.find(key); + SignalHookHash::ConstIterator end = signalHooks.end(); + for ( ; it != end && it.key() == key; ++it) { + const SignalHook &entry = it.value(); + if (entry.sender == hook.sender && + entry.path == hook.path && + entry.signature == hook.signature && + entry.obj == hook.obj && + entry.midx == hook.midx) + return; // already there, no need to re-add + } + + connectSignal(key, hook); +} + +void QDBusConnectionPrivate::disconnectRelay(const QString &service, const QString &path, + const QString &interface, + QDBusAbstractInterface *receiver, + const char *signal) +{ + // this function is called by QDBusAbstractInterface when one of its signals is disconnected + // we remove relay from D-Bus into it + SignalHook hook; + QString key; + if (!prepareHook(hook, key, service, path, interface, QString(), receiver, signal, + QDBusAbstractInterface::staticMetaObject.methodCount(), true)) + return; // don't connect + + // remove it from our list: + QWriteLocker locker(&lock); + SignalHookHash::Iterator it = signalHooks.find(key); + SignalHookHash::Iterator end = signalHooks.end(); + for ( ; it != end && it.key() == key; ++it) { + const SignalHook &entry = it.value(); + if (entry.sender == hook.sender && + entry.path == hook.path && + entry.signature == hook.signature && + entry.obj == hook.obj && + entry.midx == hook.midx) { + // found it + signalHooks.erase(it); + return; + } + } + + qWarning("QDBusConnectionPrivate::disconnectRelay called for a signal that was not found"); +} + +QString QDBusConnectionPrivate::getNameOwner(const QString& name) +{ + if (QDBusUtil::isValidUniqueConnectionName(name)) + return name; + if (!connection || !QDBusUtil::isValidBusName(name)) + return QString(); + + QDBusMessage msg = QDBusMessage::methodCall(QLatin1String(DBUS_SERVICE_DBUS), + QLatin1String(DBUS_PATH_DBUS), QLatin1String(DBUS_INTERFACE_DBUS), + QLatin1String("GetNameOwner")); + msg << name; + QDBusMessage reply = sendWithReply(msg, QDBusConnection::NoUseEventLoop); + if (!lastError.isValid() && reply.type() == QDBusMessage::ReplyMessage) + return reply.first().toString(); + return QString(); +} + +QDBusInterfacePrivate * +QDBusConnectionPrivate::findInterface(const QString &service, + const QString &path, + const QString &interface) +{ + // check if it's there first -- FIXME: add binding mode + QDBusMetaObject *mo = 0; + QString owner = getNameOwner(service); + if (connection && !owner.isEmpty() && QDBusUtil::isValidObjectPath(path) && + (interface.isEmpty() || QDBusUtil::isValidInterfaceName(interface))) + // always call here with the unique connection name + mo = findMetaObject(owner, path, interface); + + QDBusInterfacePrivate *p = new QDBusInterfacePrivate(QDBusConnection(name), this, owner, path, interface, mo); + + if (!mo) { + // invalid object + p->isValid = false; + p->lastError = lastError; + if (!lastError.isValid()) { + // try to determine why we couldn't get the data + if (!connection) + p->lastError = QDBusError(QDBusError::Disconnected, + QLatin1String("Not connected to D-Bus server")); + else if (owner.isEmpty()) + p->lastError = QDBusError(QDBusError::ServiceUnknown, + QString(QLatin1String("Service %1 is unknown")).arg(service)); + else if (!QDBusUtil::isValidObjectPath(path)) + p->lastError = QDBusError(QDBusError::InvalidArgs, + QString(QLatin1String("Object path %1 is invalid")).arg(path)); + else if (!interface.isEmpty() && !QDBusUtil::isValidInterfaceName(interface)) + p->lastError = QDBusError(QDBusError::InvalidArgs, + QString(QLatin1String("Interface %1 is invalid")).arg(interface)); + else + p->lastError = QDBusError(QDBusError::Other, QLatin1String("Unknown error")); + } + } + + return p; +} + +struct qdbus_Introspect +{ + QString xml; + inline void operator()(QDBusConnectionPrivate::ObjectTreeNode *node) + { xml = qDBusIntrospectObject(node); } +}; + +QDBusMetaObject * +QDBusConnectionPrivate::findMetaObject(const QString &service, const QString &path, + const QString &interface) +{ + // service must be a unique connection name + if (!interface.isEmpty()) { + QReadLocker locker(&lock); + QDBusMetaObject *mo = cachedMetaObjects.value(interface, 0); + if (mo) + return mo; + } + if (service == QString::fromUtf8(dbus_bus_get_unique_name(connection))) { + // it's one of our own + QWriteLocker locker(&lock); + QDBusMetaObject *mo = 0; + if (!interface.isEmpty()) + mo = cachedMetaObjects.value(interface, 0); + if (mo) + // maybe it got created when we switched from read to write lock + return mo; + + qdbus_Introspect apply; + if (!applyForObject(&rootNode, path, apply)) { + lastError = QDBusError(QDBusError::InvalidArgs, + QString(QLatin1String("No object at %1")).arg(path)); + return 0; // no object at path + } + + // release the lock and return + return QDBusMetaObject::createMetaObject(interface, apply.xml, cachedMetaObjects, lastError); + } + + // not local: introspect the target object: + QDBusMessage msg = QDBusMessage::methodCall(service, path, + QLatin1String(DBUS_INTERFACE_INTROSPECTABLE), + QLatin1String("Introspect")); + + + QDBusMessage reply = sendWithReply(msg, QDBusConnection::NoUseEventLoop); + + // it doesn't exist yet, we have to create it + QWriteLocker locker(&lock); + QDBusMetaObject *mo = 0; + if (!interface.isEmpty()) + mo = cachedMetaObjects.value(interface, 0); + if (mo) + // maybe it got created when we switched from read to write lock + return mo; + + QString xml; + if (reply.type() == QDBusMessage::ReplyMessage) + // fetch the XML description + xml = reply.first().toString(); + else { + lastError = reply; + if (reply.type() != QDBusMessage::ErrorMessage || lastError != QDBusError::UnknownMethod) + return 0; // error + } + + // release the lock and return + return QDBusMetaObject::createMetaObject(interface, xml, cachedMetaObjects, lastError); +} + +void QDBusReplyWaiter::reply(const QDBusMessage &msg) +{ + replyMsg = msg; + QTimer::singleShot(0, this, SLOT(quit())); +} + +#include "qdbusconnection_p.moc" diff --git a/qt/src/qdbusinterface.cpp b/qt/src/qdbusinterface.cpp new file mode 100644 index 00000000..6367654d --- /dev/null +++ b/qt/src/qdbusinterface.cpp @@ -0,0 +1,203 @@ +/* -*- C++ -*- + * + * Copyright (C) 2006 Trolltech AS. All rights reserved. + * Author: Thiago Macieira + * + * Licensed under the Academic Free License version 2.1 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "qdbusinterface.h" + +#include +#include + +#include "qdbusinterface_p.h" +#include "qdbusconnection_p.h" + +/*! + \class QDBusInterface + \brief Proxy class for interfaces on remote objects. + + QDBusInterface is a generic accessor class that is used to place calls to remote objects, + connect to signals exported by remote objects and get/set the value of remote properties. This + class is useful for dynamic access to remote objects: that is, when you do not have a generated + code that represents the remote interface. + + Calls are usually placed by using the call() function, which constructs the message, sends it + over the bus, waits for the reply and decodes the reply. Signals are connected to by using the + normal QObject::connect() function. Finally, properties are accessed using the + QObject::property() and QObject::setProperty() functions. +*/ + +QDBusInterface::QDBusInterface(QDBusInterfacePrivate *p) + : QDBusAbstractInterface(p) +{ +} + +/*! + Destroy the object interface and frees up any resource used. +*/ +QDBusInterface::~QDBusInterface() +{ + // resources are freed in QDBusInterfacePrivate::~QDBusInterfacePrivate() +} + +/*! + \internal + Overrides QObject::metaObject to return our own copy. +*/ +const QMetaObject *QDBusInterface::metaObject() const +{ + return d_func()->isValid ? d_func()->metaObject : &QDBusAbstractInterface::staticMetaObject; +} + +/*! + \internal + Override QObject::qt_metacast to catch the interface name too. +*/ +void *QDBusInterface::qt_metacast(const char *_clname) +{ + if (!_clname) return 0; + if (!strcmp(_clname, "QDBusInterface")) + return static_cast(const_cast(this)); + if (d_func()->interface == _clname) + return static_cast(const_cast(this)); + return QDBusAbstractInterface::qt_metacast(_clname); +} + +/*! + \internal + Dispatch the call through the private. +*/ +int QDBusInterface::qt_metacall(QMetaObject::Call _c, int _id, void **_a) +{ + _id = QDBusAbstractInterface::qt_metacall(_c, _id, _a); + if (_id < 0 || !d_func()->isValid) + return _id; + return d_func()->metacall(_c, _id, _a); +} + +int QDBusInterfacePrivate::metacall(QMetaObject::Call c, int id, void **argv) +{ + Q_Q(QDBusInterface); + + if (c == QMetaObject::InvokeMetaMethod) { + int offset = metaObject->methodOffset(); + QMetaMethod mm = metaObject->method(id + offset); + + if (mm.methodType() == QMetaMethod::Signal) { + // signal relay from D-Bus world to Qt world + QMetaObject::activate(q, metaObject, id, argv); + + } else if (mm.methodType() == QMetaMethod::Slot) { + // method call relay from Qt world to D-Bus world + // get D-Bus equivalent signature + QString methodName = metaObject->dbusNameForMethod(id); + const int *inputTypes = metaObject->inputTypesForMethod(id); + const int *outputTypes = metaObject->outputTypesForMethod(id); + + int inputTypesCount = *inputTypes; + int outputTypesCount = *outputTypes++; + + // we will assume that the input arguments were passed correctly + QVariantList args; + for (int i = 1; i <= inputTypesCount; ++i) + args << QVariant(inputTypes[i], argv[i]); + + // make the call + QPointer qq = q; + QDBusMessage reply = q->callWithArgs(methodName, args); + args.clear(); + + // access to "this" or to "q" below this point must check for "qq" + // we may have been deleted! + + // check if we got the right number of parameters back: + bool success = false; + if (reply.count() == outputTypesCount) { + // copy the values out + for (int i = 0; i < outputTypesCount; ++i) { + // treat the return value specially, since it may be null: + if (i == 0 && argv[0] == 0) + continue; + + // ensure that the types are correct: + const QVariant &item = reply.at(i); + if (outputTypes[i] != item.userType()) { + success = false; + break; + } + + if (i == 0) + QDBusMetaObject::assign(argv[0], item); + else + QDBusMetaObject::assign(argv[inputTypesCount + i], item); + } + } + + // bail out, something weird happened + if (!success && !qq.isNull()) { + QString errmsg = QLatin1String("Invalid signature `%1' in return from call to %2.%3"); + lastError = QDBusError(QDBusError::InvalidSignature, + errmsg.arg(reply.signature(), interface, methodName)); + } + + // done + return -1; + } + } else if (c == QMetaObject::ReadProperty) { + // Qt doesn't support non-readable properties + // we have to re-check + QMetaProperty mp = metaObject->property(id + metaObject->propertyOffset()); + if (!mp.isReadable()) + return -1; // don't read + + QVariant value = property(mp); + if (value.type() == QVariant::Invalid) + // an error occurred -- property already set lastError + return -1; + else if (mp.type() == QVariant::LastType) + // QVariant is special in this context + *reinterpret_cast(argv[0]) = value; + else + QDBusMetaObject::assign(argv[0], value); + + return -1; // handled + } else if (c == QMetaObject::WriteProperty) { + // QMetaProperty::write has already checked that we're writable + // it has also checked that the type is right + QVariant value(metaObject->propertyMetaType(id), argv[0]); + QMetaProperty mp = metaObject->property(id + metaObject->propertyOffset()); + + setProperty(mp, value); + return -1; + } + return id; +} + +QDBusInterfacePtr::QDBusInterfacePtr(QDBusConnection &conn, const QString &service, const QString &path, + const QString &interface) + : d(conn.findInterface(service, path, interface)) +{ +} + +QDBusInterfacePtr::QDBusInterfacePtr(const QString &service, const QString &path, const QString &interface) + : d(QDBus::sessionBus().findInterface(service, path, interface)) +{ +} + diff --git a/qt/src/qdbusinterface.h b/qt/src/qdbusinterface.h new file mode 100644 index 00000000..0b4d1874 --- /dev/null +++ b/qt/src/qdbusinterface.h @@ -0,0 +1,63 @@ +/* -*- C++ -*- + * + * Copyright (C) 2006 Trolltech AS. All rights reserved. + * Author: Thiago Macieira + * + * Licensed under the Academic Free License version 2.1 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef QDBUSINTERFACE_H +#define QDBUSINTERFACE_H + +#include "qdbusabstractinterface.h" + +class QDBusInterfacePrivate; +class QDBUS_EXPORT QDBusInterface: public QDBusAbstractInterface +{ + friend class QDBusConnection; +private: + QDBusInterface(QDBusInterfacePrivate *p); + +public: + ~QDBusInterface(); + + virtual const QMetaObject *metaObject() const; + virtual void *qt_metacast(const char *); + virtual int qt_metacall(QMetaObject::Call, int, void **); + +private: + Q_DECLARE_PRIVATE(QDBusInterface) + Q_DISABLE_COPY(QDBusInterface) +}; + +struct QDBUS_EXPORT QDBusInterfacePtr +{ + QDBusInterfacePtr(QDBusInterface *iface) : d(iface) { } + QDBusInterfacePtr(QDBusConnection &conn, const QString &service, const QString &path, + const QString &interface = QString()); + QDBusInterfacePtr(const QString &service, const QString &path, const QString &interface = QString()); + ~QDBusInterfacePtr() { delete d; } + + QDBusInterface *interface() { return d; } + QDBusInterface *operator->() { return d; } +private: + QDBusInterface *const d; + Q_DISABLE_COPY(QDBusInterfacePtr) +}; + +#endif diff --git a/qt/src/qdbusinterface_p.h b/qt/src/qdbusinterface_p.h new file mode 100644 index 00000000..25cb9ffa --- /dev/null +++ b/qt/src/qdbusinterface_p.h @@ -0,0 +1,65 @@ +/* + * + * Copyright (C) 2006 Trolltech AS. All rights reserved. + * Author: Thiago Macieira + * + * Licensed under the Academic Free License version 2.1 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +// +// W A R N I N G +// ------------- +// +// This file is not part of the public API. This header file may +// change from version to version without notice, or even be +// removed. +// +// We mean it. +// +// + +#ifndef QDBUSINTERFACEPRIVATE_H +#define QDBUSINTERFACEPRIVATE_H + +#include "qdbusabstractinterface_p.h" +#include "qdbusmetaobject_p.h" +#include "qdbusinterface.h" + +class QDBusInterfacePrivate: public QDBusAbstractInterfacePrivate +{ +public: + Q_DECLARE_PUBLIC(QDBusInterface) + + QDBusMetaObject *metaObject; + + inline QDBusInterfacePrivate(const QDBusConnection &con, QDBusConnectionPrivate *conp, + const QString &serv, const QString &p, const QString &iface, + QDBusMetaObject *mo = 0) + : QDBusAbstractInterfacePrivate(con, conp, serv, p, iface), metaObject(mo) + { + } + ~QDBusInterfacePrivate() + { + if (metaObject && !metaObject->cached) + delete metaObject; + } + + int metacall(QMetaObject::Call c, int id, void **argv); +}; + +#endif diff --git a/qt/src/qdbusinternalfilters.cpp b/qt/src/qdbusinternalfilters.cpp new file mode 100644 index 00000000..8886d3bf --- /dev/null +++ b/qt/src/qdbusinternalfilters.cpp @@ -0,0 +1,235 @@ +/* -*- mode: C++ -*- + * + * Copyright (C) 2006 Trolltech AS. All rights reserved. + * Author: Thiago Macieira + * + * Licensed under the Academic Free License version 2.1 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "qdbusconnection_p.h" + +#include +#include +#include +#include + +#include "qdbusabstractadaptor.h" +#include "qdbusabstractadaptor_p.h" +#include "qdbusconnection.h" +#include "qdbusmessage.h" +#include "qdbustypehelper_p.h" +#include "qdbusutil.h" + +// defined in qdbusxmlgenerator.cpp +extern QString qDBusGenerateMetaObjectXml(QString interface, const QMetaObject *mo, + const QMetaObject *base, int flags); + +static const char introspectableInterfaceXml[] = + " \n" + " \n" + " \n" + " \n" + " \n"; + +static const char propertiesInterfaceXml[] = + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n"; + +static QString generateSubObjectXml(QObject *object) +{ + QString retval; + foreach (QObject *child, object->children()) { + QString name = child->objectName(); + if (!name.isEmpty()) + retval += QString(QLatin1String(" \n")) + .arg(name); + } + return retval; +} + +QString qDBusIntrospectObject(const QDBusConnectionPrivate::ObjectTreeNode *node) +{ + // object may be null + + QString xml_data(QLatin1String(DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE)); + xml_data += QLatin1String("\n"); + + if (node->obj) { + if (node->flags & QDBusConnection::ExportContents) { + const QMetaObject *mo = node->obj->metaObject(); + for ( ; mo != &QObject::staticMetaObject; mo = mo->superClass()) + xml_data += qDBusGenerateMetaObjectXml(QString(), mo, mo->superClass(), + node->flags); + } + + // does this object have adaptors? + QDBusAdaptorConnector *connector; + if (node->flags & QDBusConnection::ExportAdaptors && + (connector = qDBusFindAdaptorConnector(node->obj))) { + + // trasverse every adaptor in this object + QDBusAdaptorConnector::AdaptorMap::ConstIterator it = connector->adaptors.constBegin(); + QDBusAdaptorConnector::AdaptorMap::ConstIterator end = connector->adaptors.constEnd(); + for ( ; it != end; ++it) { + // add the interface: + QString ifaceXml = QDBusAbstractAdaptorPrivate::retrieveIntrospectionXml(it->adaptor); + if (ifaceXml.isEmpty()) { + // add the interface's contents: + ifaceXml += qDBusGenerateMetaObjectXml(it->interface, it->metaObject, + &QDBusAbstractAdaptor::staticMetaObject, + QDBusConnection::ExportAllContents); + + QDBusAbstractAdaptorPrivate::saveIntrospectionXml(it->adaptor, ifaceXml); + } + + xml_data += ifaceXml; + } + } + + xml_data += QLatin1String( introspectableInterfaceXml ); + xml_data += QLatin1String( propertiesInterfaceXml ); + } + + if (node->flags & QDBusConnection::ExportChildObjects) { + xml_data += generateSubObjectXml(node->obj); + } else { + // generate from the object tree + foreach (const QDBusConnectionPrivate::ObjectTreeNode::Data &entry, node->children) { + if (entry.node && (entry.node->obj || !entry.node->children.isEmpty())) + xml_data += QString(QLatin1String(" \n")) + .arg(entry.name); + } + } + + xml_data += QLatin1String("\n"); + return xml_data; +} + +void qDBusIntrospectObject(const QDBusConnectionPrivate::ObjectTreeNode *node, + const QDBusMessage &msg) +{ + // now send it + QDBusMessage reply = QDBusMessage::methodReply(msg); + reply << qDBusIntrospectObject(node); + msg.connection().send(reply); +} + +// implement the D-Bus interface org.freedesktop.DBus.Properties + +static void sendPropertyError(const QDBusMessage &msg, const QString &interface_name) +{ + QDBusMessage error = QDBusMessage::error(msg, QLatin1String(DBUS_ERROR_INVALID_ARGS), + QString::fromLatin1("Interface %1 was not found in object %2") + .arg(interface_name) + .arg(msg.path())); + msg.connection().send(error); +} + +void qDBusPropertyGet(const QDBusConnectionPrivate::ObjectTreeNode *node, const QDBusMessage &msg) +{ + Q_ASSERT(msg.count() == 2); + QString interface_name = msg.at(0).toString(); + QByteArray property_name = msg.at(1).toString().toUtf8(); + + QDBusAdaptorConnector *connector; + QVariant value; + if (node->flags & QDBusConnection::ExportAdaptors && + (connector = qDBusFindAdaptorConnector(node->obj))) { + + // find the class that implements interface_name + QDBusAdaptorConnector::AdaptorMap::ConstIterator it; + it = qLowerBound(connector->adaptors.constBegin(), connector->adaptors.constEnd(), + interface_name); + if (it != connector->adaptors.end() && it->interface == interface_name) + value = it->adaptor->property(property_name); + } + + if (!value.isValid() && node->flags & QDBusConnection::ExportProperties) { + // try the object itself + int pidx = node->obj->metaObject()->indexOfProperty(property_name); + if (pidx != -1) { + QMetaProperty mp = node->obj->metaObject()->property(pidx); + if (mp.isScriptable() || (node->flags & QDBusConnection::ExportAllProperties) == + QDBusConnection::ExportAllProperties) + value = mp.read(node->obj); + } + } + + if (!value.isValid()) { + // the property was not found + sendPropertyError(msg, interface_name); + return; + } + + QDBusMessage reply = QDBusMessage::methodReply(msg); + reply.setSignature(QLatin1String("v")); + reply << value; + msg.connection().send(reply); +} + +void qDBusPropertySet(const QDBusConnectionPrivate::ObjectTreeNode *node, const QDBusMessage &msg) +{ + Q_ASSERT(msg.count() == 3); + QString interface_name = msg.at(0).toString(); + QByteArray property_name = msg.at(1).toString().toUtf8(); + QVariant value = QDBusTypeHelper::fromVariant(msg.at(2)); + + QDBusAdaptorConnector *connector; + if (node->flags & QDBusConnection::ExportAdaptors && + (connector = qDBusFindAdaptorConnector(node->obj))) { + + // find the class that implements interface_name + QDBusAdaptorConnector::AdaptorMap::ConstIterator it; + it = qLowerBound(connector->adaptors.constBegin(), connector->adaptors.constEnd(), + interface_name); + if (it != connector->adaptors.end() && it->interface == interface_name) + if (it->adaptor->setProperty(property_name, value)) { + msg.connection().send(QDBusMessage::methodReply(msg)); + return; + } + } + + if (node->flags & QDBusConnection::ExportProperties) { + // try the object itself + int pidx = node->obj->metaObject()->indexOfProperty(property_name); + if (pidx != -1) { + QMetaProperty mp = node->obj->metaObject()->property(pidx); + if (mp.isScriptable() || (node->flags & QDBusConnection::ExportAllProperties) == + QDBusConnection::ExportAllProperties) { + + if (mp.write(node->obj, value)) { + msg.connection().send(QDBusMessage::methodReply(msg)); + return; + } + } + } + } + + // the property was not found or not written to + sendPropertyError(msg, interface_name); +} diff --git a/qt/src/qdbusintrospection.cpp b/qt/src/qdbusintrospection.cpp new file mode 100644 index 00000000..20acbd21 --- /dev/null +++ b/qt/src/qdbusintrospection.cpp @@ -0,0 +1,403 @@ +/* -*- C++ -*- + * + * Copyright (C) 2006 Trolltech AS. All rights reserved. + * Author: Thiago Macieira + * + * Licensed under the Academic Free License version 2.1 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "qdbusintrospection_p.h" +#include "qdbusxmlparser_p.h" + +/*! + \class QDBusIntrospection + \brief Information about introspected objects and interfaces on D-Bus. + \internal + + This class provides structures and methods for parsing the XML introspection data for D-Bus. + Normally, you don't have to use the methods provided here: QDBusInterface and QDBusObject will + do that for you. + + But they may prove useful if the XML data was obtained through other means (like parsing a file). +*/ + +/*! + \class QDBusIntrospection::Argument + \brief One argument to a D-Bus method or signal. + + This struct represents one argument passed to a method or received from a method or signal in + D-Bus. The struct does not contain information on the direction (input or output). +*/ + +/*! + \var QDBusIntrospection::Argument::type + The argument type. +*/ + +/*! + \var QDBusIntrospection::Argument::name + The argument name. The argument name is optional, so this may be a null QString. +*/ + +/*! + \fn QDBusIntrospection::Argument::operator==(const Argument &other) const + Compares this object against \a other and return true if they are the same. +*/ + +/*! + \class QDBusIntrospection::Method + \brief Information about one method. + + This struct represents one method discovered through introspection. A method is composed of + its \a name, its input arguments, its output arguments, and, optionally, annotations. There are no + "in-out" arguments. +*/ + +/*! + \var QDBusIntrospection::Method::name + The method's name. +*/ + +/*! + \var QDBusIntrospection::Method::inputArgs + A list of the method's input arguments. +*/ + +/*! + \var QDBusIntrospection::Method::outputArgs + A list of the method's output arguments (i.e., return values). +*/ + +/*! + \var QDBusIntrospection::Method::annotations + The annotations associated with the method. Each annotation is a pair of strings, where the key + is of the same format as a D-Bus interface name. The value is arbitrary. +*/ + +/*! + \fn QDBusIntrospection::Method::operator==(const Method &other) const + Compares this object against \a other and return true if they are the same. +*/ + +/*! + \class QDBusIntrospection::Signal + \brief Information about one signal. + + This struct represents one signal discovered through introspection. A signal is composed of + its \a name, its output arguments, and, optionally, annotations. +*/ + +/*! + \var QDBusIntrospection::Signal::name + The signal's name. +*/ + +/*! + \var QDBusIntrospection::Signal::outputArgs + A list of the signal's arguments. +*/ + +/*! + \var QDBusIntrospection::Signal::annotations + The annotations associated with the signal. Each annotation is a pair of strings, where the key + is of the same format as a D-Bus interface name. The value is arbitrary. +*/ + +/*! + \fn QDBusIntrospection::Signal::operator==(const Signal& other) const + Compares this object against \a other and return true if they are the same. +*/ + +/*! + \class QDBusIntrospection::Property + \brief Information about one property. + + This struct represents one property discovered through introspection. A property is composed of + its \a name, its \a type, its \a access rights, and, optionally, annotations. +*/ + +/*! + \var QDBusIntrospection::Property::name + The property's name. +*/ + +/*! + \var QDBusIntrospection::Property::type + The property's type. +*/ + +/*! + \enum QDBusIntrospection::Property::Access + The possible access rights for a property: + \value Read + \value Write + \value ReadWrite +*/ + +/*! + \var QDBusIntrospection::Property::access + The property's access rights. +*/ + +/*! + \var QDBusIntrospection::Property::annotations + The annotations associated with the property. Each annotation is a pair of strings, where the key + is of the same format as a D-Bus interface name. The value is arbitrary. +*/ + +/*! + \fn QDBusIntrospection::Property::operator==(const Property &other) const + Compares this object against \a other and return true if they are the same. +*/ + +/*! + \class QDBusIntrospection::Interface + \brief Information about one interface on the bus. + + Each interface on D-Bus has an unique \a name, identifying where that interface was defined. + Interfaces may have annotations, methods, signals and properties, but none are mandatory. +*/ + +/*! + \var QDBusIntrospection::Interface::name + The interface's name. +*/ + +/*! + \var QDBusIntrospection::Interface::introspection + The XML document fragment describing this interface. + + If parsed again through parseInterface, the object returned should have the same contents as + this object. +*/ + +/*! + \var QDBusIntrospection::Interface::annotations + The annotations associated with the interface. Each annotation is a pair of strings, where the key + is of the same format as a D-Bus interface name. The value is arbitrary. +*/ + +/*! + \var QDBusIntrospection::Interface::methods + The methods available in this interface. Note that method names are not unique (i.e., methods + can be overloaded with multiple arguments types). +*/ + +/*! + \var QDBusIntrospection::Interface::signals_ + The signals available in this interface. Note that signal names are not unique (i.e., signals + can be overloaded with multiple argument types). + + This member is called "signals_" because "signals" is a reserved keyword in Qt. +*/ + +/*! + \var QDBusIntrospection::Interface::properties + The properties available in this interface. Property names are unique. +*/ + +/*! + \fn QDBusIntrospection::Interface::operator==(const Interface &other) const + Compares this object against \a other and return true if they are the same. + + Note that two interfaces are considered to be the same if they have the same name. The internal + structures in the objects are not compared. +*/ + +/*! + \class QDBusIntrospection::Object + \brief Information about one object on the bus. + + An object on the D-Bus bus is represented by its service and path on the service but, unlike + interfaces, objects are mutable. That is, their contents can change with time. Therefore, + while the (service, path) pair uniquely identifies an object, the information contained in + this struct may no longer represent the object. + + An object can contain interfaces and child (sub) objects. +*/ + +/*! + \var QDBusIntrospection::Object::service + The object's service name. + + \sa parseObject(), parseObjectTree() +*/ + +/*! + \var QDBusIntrospection::Object::path + The object's path on the service. This is an absolute path. + + \sa parseObject(), parseObjectTree() +*/ + +/*! + \var QDBusIntrospection::Object::introspection + The XML document fragment describing this object, its interfaces and sub-objects at the time + of the parsing. + + The result of parseObject with this XML data should be the same as the Object struct. +*/ + +/*! + \var QDBusIntrospection::Object::interfaces + The list of interface names in this object. +*/ + +/*! + \var QDBusIntrospection::Object::childObjects + The list of child object names in this object. Note that this is a relative name, not an + absolute path. To obtain the absolute path, concatenate with \l + {QDBusIntrospection::Object::path}{path}. +*/ + +/*! + \class QDBusIntrospection::ObjectTree + \brief Complete information about one object node and its descendency. + + This struct contains the same data as QDBusIntrospection::Object, plus the actual data for the + interfaces and child (sub) objects that was available in the XML document. +*/ + +/*! + \var QDBusIntrospection::ObjectTree::interfaceData + A map of interfaces and their names. +*/ + +/*! + \var QDBusIntrospection::ObjectTree::childObjectData + A map of object paths and their data. The map key contains the relative path to the object. + + Note this map contains only the child notes that do have information about the sub-object's + contents. If the XML data did not contain the information, only the object name will be listed + in childObjects, but not in childObjectData. +*/ + +/*! + \typedef QDBusIntrospection::Annotations + Contains a QMap of an annotation pair. The annotation's name is stored in the QMap key and + must be unique. The annotation's value is stored in the QMap's value and is arbitrary. +*/ + +/*! + \typedef QDBusIntrospection::Arguments + Contains a list of arguments to either a Method or a Signal. The arguments' order is important. +*/ + +/*! + \typedef QDBusIntrospection::Methods + Contains a QMap of methods and their names. The method's name is stored in the map's key and + is not necessarily unique. The order in which multiple methods with the same name are stored + in this map is undefined. +*/ + +/*! + \typedef QDBusIntrospection::Signals + Contains a QMap of signals and their names. The signal's name is stored in the map's key and + is not necessarily unique. The order in which multiple signals with the same name are stored + in this map is undefined. +*/ + +/*! + \typedef QDBusIntrospection::Properties + Contains a QMap of properties and their names. Each property must have a unique name. +*/ + +/*! + \typedef QDBusIntrospection::Interfaces + Contains a QMap of interfaces and their names. Each interface has a unique name. +*/ + +/*! + \typedef QDBusIntrospection::Objects + Contains a QMap of objects and their paths relative to their immediate parent. + + \sa parseObjectTree() +*/ + +/*! + Parses the XML document fragment (given by \a xml) containing one interface. + + The first element tag in this XML data must be either \ or \. If it is + \, then the \ tag must be a child tag of the \ one. + + If there are multiple interfaces in this XML data, it is undefined which one will be + returned. +*/ +QDBusIntrospection::Interface +QDBusIntrospection::parseInterface(const QString &xml) +{ + // be lazy + Interfaces ifs = parseInterfaces(xml); + if (ifs.isEmpty()) + return Interface(); + + // return the first in map order (probably alphabetical order) + return *ifs.constBegin().value(); +} + +/*! + Parses the XML document fragment (given by \a xml) containing several interfaces. + + If the first element tag in this document fragment is \, the interfaces parsed will + be those found as child elements of the \ tag. +*/ +QDBusIntrospection::Interfaces +QDBusIntrospection::parseInterfaces(const QString &xml) +{ + QString null; + QDBusXmlParser parser(null, null, xml); + return parser.interfaces(); +} + +/*! + Parses the XML document fragment (given by \a xml) containing one object, found at the service + \a service and path \a path. + + The first element tag in this document must be \. If that tag does not contain + a name attribute, the \a path argument will be used to determine the path of this + object node. + + This function does not parse the interfaces contained in the node, nor sub-object's contents. + It will only list their names. If you need to know their contents, use parseObjectTree. +*/ +QDBusIntrospection::Object +QDBusIntrospection::parseObject(const QString &xml, const QString &service, const QString &path) +{ + QDBusXmlParser parser(service, path, xml); + QSharedDataPointer retval = parser.object(); + if (!retval) + return QDBusIntrospection::Object(); + return *retval; +} + +/*! + Parses the XML document fragment (given by \a xml) containing one object node and returns all + the information about the interfaces and sub-objects, found at the service \a service and path + \a path. + + The Objects map returned will contain the absolute path names in the key. +*/ +QDBusIntrospection::ObjectTree +QDBusIntrospection::parseObjectTree(const QString &xml, const QString &service, const QString &path) +{ + QDBusXmlParser parser(service, path, xml); + QSharedDataPointer retval = parser.objectTree(); + if (!retval) + return QDBusIntrospection::ObjectTree(); + return *retval; +} diff --git a/qt/src/qdbusintrospection_p.h b/qt/src/qdbusintrospection_p.h new file mode 100644 index 00000000..0e4e9015 --- /dev/null +++ b/qt/src/qdbusintrospection_p.h @@ -0,0 +1,147 @@ +/* -*- C++ -*- + * + * Copyright (C) 2006 Trolltech AS. All rights reserved. + * Author: Thiago Macieira + * + * Licensed under the Academic Free License version 2.1 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef QDBUSINTROSPECTION_H +#define QDBUSINTROSPECTION_H + +#include +#include +#include +#include +#include +#include +#include "qdbusmacros.h" + +class QDBUS_EXPORT QDBusIntrospection +{ +public: + // forward declarations + struct Argument; + struct Method; + struct Signal; + struct Property; + struct Interface; + struct Object; + struct ObjectTree; + + // typedefs + typedef QMap Annotations; + typedef QList Arguments; + typedef QMultiMap Methods; + typedef QMultiMap Signals; + typedef QMap Properties; + typedef QMap > Interfaces; + typedef QMap > Objects; + +public: + // the structs + + struct Argument + { + QString type; + QString name; + + inline bool operator==(const Argument& other) const + { return name == other.name && type == other.type; } + }; + + struct Method + { + QString name; + Arguments inputArgs; + Arguments outputArgs; + Annotations annotations; + + inline bool operator==(const Method& other) const + { return name == other.name && annotations == other.annotations && + inputArgs == other.inputArgs && outputArgs == other.outputArgs; } + }; + + struct Signal + { + QString name; + Arguments outputArgs; + Annotations annotations; + + inline bool operator==(const Signal& other) const + { return name == other.name && annotations == other.annotations && + outputArgs == other.outputArgs; } + }; + + struct Property + { + enum Access { Read, Write, ReadWrite }; + QString name; + QString type; + Access access; + Annotations annotations; + + inline bool operator==(const Property& other) const + { return access == other.access && name == other.name && + annotations == other.annotations && type == other.type; } + }; + + struct Interface: public QSharedData + { + QString name; + QString introspection; + + Annotations annotations; + Methods methods; + Signals signals_; + Properties properties; + + inline bool operator==(const Interface &other) const + { return !name.isEmpty() && name == other.name; } + }; + + struct Object: public QSharedData + { + QString service; + QString path; + QString introspection; + + QStringList interfaces; + QStringList childObjects; + }; + + struct ObjectTree: public Object + { + Interfaces interfaceData; + Objects childObjectData; + }; + +public: + static Interface parseInterface(const QString &xml); + static Interfaces parseInterfaces(const QString &xml); + static Object parseObject(const QString &xml, const QString &service = QString(), + const QString &path = QString()); + static ObjectTree parseObjectTree(const QString &xml, + const QString &service, + const QString &path); + +private: + QDBusIntrospection(); +}; + +#endif diff --git a/qt/src/qdbusmacros.h b/qt/src/qdbusmacros.h new file mode 100644 index 00000000..0af5b5b3 --- /dev/null +++ b/qt/src/qdbusmacros.h @@ -0,0 +1,60 @@ +/* qdbusmessage.h QDBusMessage object + * + * Copyright (C) 2005 Harald Fernengel + * Copyright (C) 2006 Trolltech AS. All rights reserved. + * Author: Thiago Macieira + * + * Licensed under the Academic Free License version 2.1 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +/*! + \file qdbusmacros.h +*/ + +#ifndef QDBUSMACROS_H +#define QDBUSMACROS_H + +#include +#include +#include + +#ifdef QT_NO_MEMBER_TEMPLATES +# error Sorry, you need a compiler with support for template member functions to compile QtDBus. +#endif + +#if defined(QDBUS_MAKEDLL) +# define QDBUS_EXPORT Q_DECL_EXPORT +#else +# define QDBUS_EXPORT Q_DECL_IMPORT +#endif + +#ifndef Q_MOC_RUN +# define Q_ASYNC +#endif + +#ifdef Q_CC_MSVC +#include +#include +#include +#include +class QDBusType; +inline uint qHash(const QVariant&) { Q_ASSERT(0); return 0; } +inline uint qHash(const QDBusType&) { Q_ASSERT(0); return 0; } +#endif + +#endif diff --git a/qt/src/qdbusmarshall.cpp b/qt/src/qdbusmarshall.cpp new file mode 100644 index 00000000..6209ffb3 --- /dev/null +++ b/qt/src/qdbusmarshall.cpp @@ -0,0 +1,554 @@ +/* qdbusmarshall.cpp + * + * Copyright (C) 2005 Harald Fernengel + * Copyright (C) 2006 Trolltech AS. All rights reserved. + * Author: Thiago Macieira + * + * Licensed under the Academic Free License version 2.1 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "qdbusmarshall_p.h" +#include "qdbustype_p.h" +#include "qdbustypehelper_p.h" + +#include +#include +#include +#include +#include +#include +#include + +#include + +static QVariant qFetchParameter(DBusMessageIter *it); + +template +inline T qIterGet(DBusMessageIter *it) +{ + T t; + dbus_message_iter_get_basic(it, &t); + return t; +} + +template<> +inline QVariant qIterGet(DBusMessageIter *it) +{ + DBusMessageIter sub; + dbus_message_iter_recurse(it, &sub); + return QDBusTypeHelper::toVariant(qFetchParameter(&sub)); +} + +template +inline QVariant qFetchList(DBusMessageIter *arrayIt) +{ + QList list; + + DBusMessageIter it; + dbus_message_iter_recurse(arrayIt, &it); + if (dbus_message_iter_get_array_len(&it) == 0) + return QDBusTypeHelper >::toVariant(list); + + do { + list.append( static_cast( qIterGet(&it) ) ); + } while (dbus_message_iter_next(&it)); + + return QDBusTypeHelper >::toVariant(list); +} + +static QStringList qFetchStringList(DBusMessageIter *arrayIt) +{ + QStringList list; + + DBusMessageIter it; + dbus_message_iter_recurse(arrayIt, &it); + if (dbus_message_iter_get_array_len(&it) == 0) + return list; + + do { + list.append(QString::fromUtf8(qIterGet(&it))); + } while (dbus_message_iter_next(&it)); + + return list; +} + +static QVariant qFetchParameter(DBusMessageIter *it) +{ + switch (dbus_message_iter_get_arg_type(it)) { + case DBUS_TYPE_BYTE: + return qVariantFromValue(qIterGet(it)); + case DBUS_TYPE_INT16: + return qVariantFromValue(qIterGet(it)); + case DBUS_TYPE_UINT16: + return qVariantFromValue(qIterGet(it)); + case DBUS_TYPE_INT32: + return qIterGet(it); + case DBUS_TYPE_UINT32: + return qIterGet(it); + case DBUS_TYPE_DOUBLE: + return qIterGet(it); + case DBUS_TYPE_BOOLEAN: + return bool(qIterGet(it)); + case DBUS_TYPE_INT64: + return static_cast(qIterGet(it)); + case DBUS_TYPE_UINT64: + return static_cast(qIterGet(it)); + case DBUS_TYPE_STRING: + case DBUS_TYPE_OBJECT_PATH: + case DBUS_TYPE_SIGNATURE: + return QString::fromUtf8(qIterGet(it)); + case DBUS_TYPE_VARIANT: + return qIterGet(it); + case DBUS_TYPE_ARRAY: { + int arrayType = dbus_message_iter_get_element_type(it); + switch (arrayType) + { + case DBUS_TYPE_BYTE: { + // QByteArray + DBusMessageIter sub; + dbus_message_iter_recurse(it, &sub); + int len = dbus_message_iter_get_array_len(&sub); + char* data; + dbus_message_iter_get_fixed_array(&sub,&data,&len); + return QByteArray(data,len); + } + case DBUS_TYPE_INT16: + return qFetchList(it); + case DBUS_TYPE_UINT16: + return qFetchList(it); + case DBUS_TYPE_INT32: + return qFetchList(it); + case DBUS_TYPE_UINT32: + return qFetchList(it); + case DBUS_TYPE_BOOLEAN: + return qFetchList(it); + case DBUS_TYPE_DOUBLE: + return qFetchList(it); + case DBUS_TYPE_INT64: + return qFetchList(it); + case DBUS_TYPE_UINT64: + return qFetchList(it); + case DBUS_TYPE_STRING: + case DBUS_TYPE_OBJECT_PATH: + case DBUS_TYPE_SIGNATURE: + return qFetchStringList(it); + case DBUS_TYPE_VARIANT: + return qFetchList(it); + case DBUS_TYPE_DICT_ENTRY: { + // ### support other types of maps? + QMap map; + DBusMessageIter sub; + + dbus_message_iter_recurse(it, &sub); + if (dbus_message_iter_get_array_len(&sub) == 0) + // empty map + return map; + + do { + DBusMessageIter itemIter; + dbus_message_iter_recurse(&sub, &itemIter); + Q_ASSERT(dbus_message_iter_has_next(&itemIter)); + QString key = qFetchParameter(&itemIter).toString(); + dbus_message_iter_next(&itemIter); + map.insertMulti(key, qFetchParameter(&itemIter)); + } while (dbus_message_iter_next(&sub)); + return map; + } + } + } + // fall through + // common handling for structs and lists of lists (for now) + case DBUS_TYPE_STRUCT: { + QList list; + DBusMessageIter sub; + dbus_message_iter_recurse(it, &sub); + if (dbus_message_iter_get_array_len(&sub) == 0) + return list; + do { + list.append(qFetchParameter(&sub)); + } while (dbus_message_iter_next(&sub)); + return list; + } + + default: + qWarning("Don't know how to handle type %d '%c'", dbus_message_iter_get_arg_type(it), dbus_message_iter_get_arg_type(it)); + return QVariant(); + break; + } +} + +void QDBusMarshall::messageToList(QList &list, DBusMessage *message) +{ + Q_ASSERT(message); + + DBusMessageIter it; + if (!dbus_message_iter_init(message, &it)) + return; + + do { + list.append(qFetchParameter(&it)); + } while (dbus_message_iter_next(&it)); +} + +// convert the variant to the given type and return true if it worked. +// if the type is not known, guess it from the variant and set. +// return false if conversion failed. +static bool checkType(QVariant &var, QDBusType &type) +{ + if (!type.isValid()) { + // guess it from the variant + type = QDBusType::guessFromVariant(var); + return true; + } + + int id = var.userType(); + + if (type.dbusType() == DBUS_TYPE_VARIANT) { + // this is a non symmetrical operation: + // nest a QVariant if we want variant and it isn't so + if (id != QDBusTypeHelper::id()) { + QVariant tmp = var; + var = QDBusTypeHelper::toVariant(tmp); + } + return true; + } + + switch (id) { + case QVariant::Bool: + case QMetaType::Short: + case QMetaType::UShort: + case QMetaType::UChar: + case QVariant::Int: + case QVariant::UInt: + case QVariant::LongLong: + case QVariant::ULongLong: + case QVariant::Double: + case QVariant::String: + if (type.isBasic()) + // QVariant can handle this on its own + return true; + + // cannot handle this + qWarning("Invalid conversion from %s to '%s'", var.typeName(), + type.dbusSignature().constData()); + var.clear(); + return false; + + case QVariant::ByteArray: + // make sure it's an "ARRAY of BYTE" + if (type.qvariantType() != QVariant::ByteArray) { + qWarning("Invalid conversion from %s to '%s'", var.typeName(), + type.dbusSignature().constData()); + var.clear(); + return false; + } + return true; + + case QVariant::StringList: + // make sure it's "ARRAY of STRING" + if (type.qvariantType() != QVariant::StringList) { + qWarning("Invalid conversion from %s to '%s'", var.typeName(), + type.dbusSignature().constData()); + var.clear(); + return false; + } + return true; + + case QVariant::List: + // could be either struct or array + if (type.dbusType() != DBUS_TYPE_ARRAY && type.dbusType() != DBUS_TYPE_STRUCT) { + qWarning("Invalid conversion from %s to '%s'", var.typeName(), + type.dbusSignature().constData()); + var.clear(); + return false; + } + + return true; + + case QVariant::Map: + if (!type.isMap()) { + qWarning("Invalid conversion from %s to '%s'", var.typeName(), + type.dbusSignature().constData()); + var.clear(); + return false; + } + + return true; + + case QVariant::Invalid: { + // create an empty variant + void *null = 0; + var = QVariant(type.qvariantType(), null); + break; + } + + default: + if (id == QDBusTypeHelper::id()) { + // if we got here, it means the match above for DBUS_TYPE_VARIANT didn't work + qWarning("Invalid conversion from nested variant to '%s'", + type.dbusSignature().constData()); + return false; + } else if (type.dbusType() == DBUS_TYPE_ARRAY) { + int subType = type.arrayElement().dbusType(); + if ((id == QDBusTypeHelper::listId() && subType == DBUS_TYPE_BOOLEAN) || + (id == QDBusTypeHelper::listId() && subType == DBUS_TYPE_INT16) || + (id == QDBusTypeHelper::listId() && subType == DBUS_TYPE_UINT16) || + (id == QDBusTypeHelper::listId() && subType == DBUS_TYPE_INT32) || + (id == QDBusTypeHelper::listId() && subType == DBUS_TYPE_UINT32) || + (id == QDBusTypeHelper::listId() && subType == DBUS_TYPE_INT64) || + (id == QDBusTypeHelper::listId() && subType == DBUS_TYPE_UINT64) || + (id == QDBusTypeHelper::listId() && subType == DBUS_TYPE_DOUBLE)) + return true; + } + + qWarning("Invalid conversion from %s to '%s'", var.typeName(), + type.dbusSignature().constData()); + return false; + } + + qWarning("Found unknown QVariant type %d (%s) when converting to DBus", (int)var.type(), + var.typeName()); + var.clear(); + return false; +} + +static void qVariantToIteratorInternal(DBusMessageIter *it, const QVariant &var, + const QDBusType &type); + +static void qListToIterator(DBusMessageIter *it, const QList &list, + const QDBusTypeList &typelist); + +template +static void qIterAppend(DBusMessageIter *it, const QDBusType &type, T arg) +{ + dbus_message_iter_append_basic(it, type.dbusType(), &arg); +} + +template +static void qAppendListToMessage(DBusMessageIter *it, const QDBusType &subType, + const QVariant &var) +{ + QList list = QDBusTypeHelper >::fromVariant(var); + foreach (const QtType &item, list) + qIterAppend(it, subType, static_cast(item)); +} + +static void qAppendArrayToMessage(DBusMessageIter *it, const QDBusType &subType, + const QVariant &var) +{ + DBusMessageIter sub; + dbus_message_iter_open_container(it, DBUS_TYPE_ARRAY, subType.dbusSignature(), &sub); + + switch (var.type()) + { + case QVariant::StringList: { + const QStringList list = var.toStringList(); + foreach (QString str, list) + qIterAppend(&sub, subType, str.toUtf8().constData()); + break; + } + + case QVariant::ByteArray: { + const QByteArray array = var.toByteArray(); + const char* cdata = array.constData(); + dbus_message_iter_append_fixed_array(&sub, DBUS_TYPE_BYTE, &cdata, array.length()); + break; + } + + case QVariant::Map: { + const QVariantMap map = var.toMap(); + const QDBusTypeList& subTypes = subType.subTypes(); + for (QMap::const_iterator mit = map.constBegin(); + mit != map.constEnd(); ++mit) { + DBusMessageIter itemIterator; + dbus_message_iter_open_container(&sub, DBUS_TYPE_DICT_ENTRY, 0, &itemIterator); + + // let the string be converted to QVariant + qVariantToIteratorInternal(&itemIterator, mit.key(), subTypes[0]); + qVariantToIteratorInternal(&itemIterator, mit.value(), subTypes[1]); + + dbus_message_iter_close_container(&sub, &itemIterator); + } + break; + } + + case QVariant::List: { + const QVariantList list = var.toList(); + foreach (QVariant v, list) + qVariantToIteratorInternal(&sub, v, subType); + break; + } + + default: { + int id = var.userType(); + if (id == QDBusTypeHelper::listId()) + qAppendListToMessage(&sub, subType, var); + else if (id == QDBusTypeHelper::listId()) + qAppendListToMessage(&sub, subType, var); + else if (id == QDBusTypeHelper::listId()) + qAppendListToMessage(&sub, subType, var); + else if (id == QDBusTypeHelper::listId()) + qAppendListToMessage(&sub, subType, var); + else if (id == QDBusTypeHelper::listId()) + qAppendListToMessage(&sub, subType, var); + else if (id == QDBusTypeHelper::listId()) + qAppendListToMessage(&sub, subType, var); + else if (id == QDBusTypeHelper::listId()) + qAppendListToMessage(&sub, subType, var); + else if (id == QDBusTypeHelper::listId()) + qAppendListToMessage(&sub, subType, var); +#if 0 // never reached, since QVariant::List mached + else if (id == QDBusTypeHelper::listId()) + qAppendListToMessage(&sub, subType, var); +#endif + else + qFatal("qAppendArrayToMessage got unknown type!"); + break; + } + } + + dbus_message_iter_close_container(it, &sub); +} + +static void qAppendStructToMessage(DBusMessageIter *it, const QDBusTypeList &typeList, + const QVariantList &list) +{ + DBusMessageIter sub; + dbus_message_iter_open_container(it, DBUS_TYPE_STRUCT, NULL, &sub); + qListToIterator(&sub, list, typeList); + dbus_message_iter_close_container(it, &sub); +} + +static void qAppendVariantToMessage(DBusMessageIter *it, const QDBusType &type, + const QVariant &var) +{ + Q_UNUSED(type); // type is 'v' + + QVariant arg = var; + if (var.userType() == QDBusTypeHelper::id()) + arg = QDBusTypeHelper::fromVariant(var); // extract the inner variant + + QDBusType t = QDBusType::guessFromVariant(arg); + + // now add this variant + DBusMessageIter sub; + dbus_message_iter_open_container(it, DBUS_TYPE_VARIANT, t.dbusSignature(), &sub); + qVariantToIteratorInternal(&sub, arg, t); + dbus_message_iter_close_container(it, &sub); +} + +static void qVariantToIterator(DBusMessageIter *it, QVariant var, QDBusType type) +{ + if (var.isNull() && !type.isValid()) + return; // cannot add a null like this + if (!checkType(var, type)) + return; // type checking failed + + qVariantToIteratorInternal(it, var, type); +} + +static void qVariantToIteratorInternal(DBusMessageIter *it, const QVariant &var, + const QDBusType &type) +{ + switch (type.dbusType()) { + case DBUS_TYPE_BYTE: + qIterAppend( it, type, QDBusTypeHelper::fromVariant(var) ); + break; + case DBUS_TYPE_BOOLEAN: + qIterAppend( it, type, static_cast(var.toBool()) ); + break; + case DBUS_TYPE_INT16: + qIterAppend( it, type, QDBusTypeHelper::fromVariant(var) ); + break; + case DBUS_TYPE_UINT16: + qIterAppend( it, type, QDBusTypeHelper::fromVariant(var) ); + break; + case DBUS_TYPE_INT32: + qIterAppend( it, type, static_cast(var.toInt()) ); + break; + case DBUS_TYPE_UINT32: + qIterAppend( it, type, static_cast(var.toUInt()) ); + break; + case DBUS_TYPE_INT64: + qIterAppend( it, type, static_cast(var.toLongLong()) ); + break; + case DBUS_TYPE_UINT64: + qIterAppend( it, type, static_cast(var.toULongLong()) ); + break; + case DBUS_TYPE_DOUBLE: + qIterAppend( it, type, var.toDouble() ); + break; + case DBUS_TYPE_STRING: + case DBUS_TYPE_OBJECT_PATH: + case DBUS_TYPE_SIGNATURE: + qIterAppend( it, type, var.toString().toUtf8().constData() ); + break; + + // compound types: + case DBUS_TYPE_ARRAY: + // could be many things + qAppendArrayToMessage( it, type.arrayElement(), var ); + break; + + case DBUS_TYPE_VARIANT: + qAppendVariantToMessage( it, type, var ); + break; + + case DBUS_TYPE_STRUCT: + qAppendStructToMessage( it, type.subTypes(), var.toList() ); + break; + + case DBUS_TYPE_DICT_ENTRY: + qFatal("qVariantToIterator got a DICT_ENTRY!"); + break; + + default: + qWarning("Found unknown DBus type '%s'", type.dbusSignature().constData()); + break; + } +} + +void qListToIterator(DBusMessageIter *it, const QList &list) +{ + for (int i = 0; i < list.count(); ++i) + qVariantToIterator(it, list.at(i), QDBusType()); +} + +void qListToIterator(DBusMessageIter *it, const QList &list, const QDBusTypeList &types) +{ + int min = qMin(list.count(), types.count()); + for (int i = 0; i < min; ++i) + qVariantToIterator(it, list.at(i), types.at(i)); + + for (int i = min; i < types.count(); ++i) + // we're missing a few arguments, so add default parameters + qVariantToIterator(it, QVariant(), types.at(i)); +} + +void QDBusMarshall::listToMessage(const QList &list, DBusMessage *msg, + const QString &signature) +{ + Q_ASSERT(msg); + DBusMessageIter it; + dbus_message_iter_init_append(msg, &it); + + if (signature.isEmpty()) + qListToIterator(&it, list); + else + qListToIterator(&it, list, QDBusTypeList(signature.toUtf8())); +} diff --git a/qt/src/qdbusmarshall_p.h b/qt/src/qdbusmarshall_p.h new file mode 100644 index 00000000..7a2d46f5 --- /dev/null +++ b/qt/src/qdbusmarshall_p.h @@ -0,0 +1,57 @@ +/* qdbusmarshall_p.h QDBusMarshall object + * + * Copyright (C) 2005 Harald Fernengel + * Copyright (C) 2006 Trolltech AS. All rights reserved. + * Author: Thiago Macieira + * + * Licensed under the Academic Free License version 2.1 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +// +// W A R N I N G +// ------------- +// +// This file is not part of the public API. This header file may +// change from version to version without notice, or even be +// removed. +// +// We mean it. +// +// + +#ifndef QDBUSMARSHALLPRIVATE_H +#define QDBUSMARSHALLPRIVATE_H + +struct DBusMessage; + +template class QList; +class QVariant; +class QString; + +/*! + \internal +*/ +class QDBusMarshall +{ +public: + static void listToMessage(const QList &list, DBusMessage *message, + const QString& signature); + static void messageToList(QList &list, DBusMessage *message); +}; + +#endif diff --git a/qt/src/qdbusmessage.cpp b/qt/src/qdbusmessage.cpp new file mode 100644 index 00000000..d0a0f1e5 --- /dev/null +++ b/qt/src/qdbusmessage.cpp @@ -0,0 +1,706 @@ +/* qdbusmessage.cpp + * + * Copyright (C) 2005 Harald Fernengel + * Copyright (C) 2006 Trolltech AS. All rights reserved. + * Author: Thiago Macieira + * + * Licensed under the Academic Free License version 2.1 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "qdbusmessage.h" + +#include +#include + +#include + +#include "qdbuserror.h" +#include "qdbusmarshall_p.h" +#include "qdbusmessage_p.h" +#include "qdbustypehelper_p.h" + +QDBusMessagePrivate::QDBusMessagePrivate() + : connection(QString()), msg(0), reply(0), type(DBUS_MESSAGE_TYPE_INVALID), + timeout(-1), ref(1), repliedTo(false) +{ +} + +QDBusMessagePrivate::~QDBusMessagePrivate() +{ + if (msg) + dbus_message_unref(msg); + if (reply) + dbus_message_unref(reply); +} + +/////////////// +/*! + \class QDBusMessage + \brief Represents one message sent or received over the DBus bus. + + This object can represent any of four different types of messages possible on the bus + (see MessageType) + \list + \o Method calls + \o Method return values + \o Signal emissions + \o Error codes + \endlist + + Objects of this type are created with the four static functions signal, methodCall, + methodReply and error. +*/ + +/*! + \enum QDBusMessage::MessageType + The possible message types: + + \value MethodCallMessage a message representing an outgoing or incoming method call + \value SignalMessage a message representing an outgoing or incoming signal emission + \value ReplyMessage a message representing the return values of a method call + \value ErrorMessage a message representing an error condition in response to a method call + \value InvalidMessage an invalid message: this is never set on messages received from D-Bus +*/ + +/*! + Constructs a new DBus message representing a signal emission. A DBus signal is emitted + from one application and is received by all applications that are listening for that signal + from that interface. + + The signal will be constructed to represent a signal coming from the path \a path, interface \a + interface and signal name \a name. + + The QDBusMessage object that is returned can be sent with QDBusConnection::send(). +*/ +QDBusMessage QDBusMessage::signal(const QString &path, const QString &interface, + const QString &name) +{ + QDBusMessage message; + message.d_ptr->type = DBUS_MESSAGE_TYPE_SIGNAL; + message.d_ptr->path = path; + message.d_ptr->interface = interface; + message.d_ptr->name = name; + + return message; +} + +/*! + Constructs a new DBus message representing a method call. A method call always informs + its destination address (\a service, \a path, \a interface and \a method). + + The DBus bus allows calling a method on a given remote object without specifying the + destination interface, if the method name is unique. However, if two interfaces on the + remote object export the same method name, the result is undefined (one of the two may be + called or an error may be returned). + + When using DBus in a peer-to-peer context (i.e., not on a bus), the \a service parameter is + optional. + + The QDBusObject and QDBusInterface classes provide a simpler abstraction to synchronous + method calling. + + This function returns a QDBusMessage object that can be sent with QDBusConnection::send(), + QDBusConnection::sendWithReply(), or QDBusConnection::sendWithReplyAsync(). +*/ +QDBusMessage QDBusMessage::methodCall(const QString &service, const QString &path, + const QString &interface, const QString &method) +{ + QDBusMessage message; + message.d_ptr->type = DBUS_MESSAGE_TYPE_METHOD_CALL; + message.d_ptr->service = service; + message.d_ptr->path = path; + message.d_ptr->interface = interface; + message.d_ptr->name = method; + + return message; +} + +/*! + Constructs a new DBus message representing the return values from a called method. The \a other + variable represents the method call that the reply will be for. + + This function returns a QDBusMessage object that can be sent with QDBusConnection::send(). +*/ +QDBusMessage QDBusMessage::methodReply(const QDBusMessage &other) +{ + Q_ASSERT(other.d_ptr->msg); + + QDBusMessage message; + message.d_ptr->connection = other.d_ptr->connection; + message.d_ptr->type = DBUS_MESSAGE_TYPE_METHOD_RETURN; + message.d_ptr->reply = dbus_message_ref(other.d_ptr->msg); + other.d_ptr->repliedTo = true; + + return message; +} + +/*! + Constructs a DBus message representing an error condition described by the \a name + parameter. The \a msg parameter is optional and may contain a human-readable description of the + error. The \a other variable represents the method call that this error relates to. + + This function returns a QDBusMessage object that can be sent with QDBusMessage::send(). +*/ +QDBusMessage QDBusMessage::error(const QDBusMessage &other, const QString &name, + const QString &msg) +{ + Q_ASSERT(other.d_ptr->msg); + + QDBusMessage message; + message.d_ptr->connection = other.d_ptr->connection; + message.d_ptr->type = DBUS_MESSAGE_TYPE_ERROR; + message.d_ptr->name = name; + message.d_ptr->message = msg; + message.d_ptr->reply = dbus_message_ref(other.d_ptr->msg); + other.d_ptr->repliedTo = true; + + return message; +} + +/*! + \overload + Constructs a DBus message representing an error, where \a other is the method call that + generated this error and \a error is the error code. +*/ +QDBusMessage QDBusMessage::error(const QDBusMessage &other, const QDBusError &error) +{ + Q_ASSERT(other.d_ptr->msg); + + QDBusMessage message; + message.d_ptr->connection = other.d_ptr->connection; + message.d_ptr->type = DBUS_MESSAGE_TYPE_ERROR; + message.d_ptr->name = error.name(); + message.d_ptr->message = error.message(); + message.d_ptr->reply = dbus_message_ref(other.d_ptr->msg); + other.d_ptr->repliedTo = true; + + return message; +} + +/*! + Constructs an empty, invalid QDBusMessage object. + + \sa methodCall(), methodReply(), signal(), error() +*/ +QDBusMessage::QDBusMessage() +{ + d_ptr = new QDBusMessagePrivate; +} + +/*! + Constructs a copy of the object given by \a other. +*/ +QDBusMessage::QDBusMessage(const QDBusMessage &other) + : QList(other) +{ + d_ptr = other.d_ptr; + d_ptr->ref.ref(); +} + +/*! + Disposes of the object and frees any resources that were being held. +*/ +QDBusMessage::~QDBusMessage() +{ + if (!d_ptr->ref.deref()) + delete d_ptr; +} + +/*! + Copies the contents of the object given by \a other. +*/ +QDBusMessage &QDBusMessage::operator=(const QDBusMessage &other) +{ + QList::operator=(other); + qAtomicAssign(d_ptr, other.d_ptr); + return *this; +} + +static inline const char *data(const QByteArray &arr) +{ + return arr.isEmpty() ? 0 : arr.constData(); +} + +/*! + \internal + Constructs a DBusMessage object from this object. The returned value must be de-referenced + with dbus_message_unref. +*/ +DBusMessage *QDBusMessage::toDBusMessage() const +{ + DBusMessage *msg = 0; + + switch (d_ptr->type) { + case DBUS_MESSAGE_TYPE_METHOD_CALL: + msg = dbus_message_new_method_call(data(d_ptr->service.toUtf8()), data(d_ptr->path.toUtf8()), + data(d_ptr->interface.toUtf8()), data(d_ptr->name.toUtf8())); + break; + case DBUS_MESSAGE_TYPE_SIGNAL: + msg = dbus_message_new_signal(data(d_ptr->path.toUtf8()), data(d_ptr->interface.toUtf8()), + data(d_ptr->name.toUtf8())); + break; + case DBUS_MESSAGE_TYPE_METHOD_RETURN: + msg = dbus_message_new_method_return(d_ptr->reply); + break; + case DBUS_MESSAGE_TYPE_ERROR: + msg = dbus_message_new_error(d_ptr->reply, data(d_ptr->name.toUtf8()), data(d_ptr->message.toUtf8())); + break; + } + if (!msg) + return 0; + + QDBusMarshall::listToMessage(*this, msg, d_ptr->signature); + return msg; +} + +/*! + \internal + Constructs a QDBusMessage by parsing the given DBusMessage object. +*/ +QDBusMessage QDBusMessage::fromDBusMessage(DBusMessage *dmsg, const QDBusConnection &connection) +{ + QDBusMessage message; + if (!dmsg) + return message; + + message.d_ptr->connection = connection; + message.d_ptr->type = dbus_message_get_type(dmsg); + message.d_ptr->path = QString::fromUtf8(dbus_message_get_path(dmsg)); + message.d_ptr->interface = QString::fromUtf8(dbus_message_get_interface(dmsg)); + message.d_ptr->name = message.d_ptr->type == DBUS_MESSAGE_TYPE_ERROR ? + QString::fromUtf8(dbus_message_get_error_name(dmsg)) : + QString::fromUtf8(dbus_message_get_member(dmsg)); + message.d_ptr->service = QString::fromUtf8(dbus_message_get_sender(dmsg)); + message.d_ptr->signature = QString::fromUtf8(dbus_message_get_signature(dmsg)); + message.d_ptr->msg = dbus_message_ref(dmsg); + + QDBusMarshall::messageToList(message, dmsg); + return message; +} + +/*! + Creates a QDBusMessage that represents the same error as the QDBusError object. +*/ +QDBusMessage QDBusMessage::fromError(const QDBusError &error) +{ + QDBusMessage message; + message.d_ptr->type = DBUS_MESSAGE_TYPE_ERROR; + message.d_ptr->name = error.name(); + message << error.message(); + return message; +} + +/*! + Returns the path of the object that this message is being sent to (in the case of a + method call) or being received from (for a signal). +*/ +QString QDBusMessage::path() const +{ + return d_ptr->path; +} + +/*! + Returns the interface of the method being called (in the case of a method call) or of + the signal being received from. +*/ +QString QDBusMessage::interface() const +{ + return d_ptr->interface; +} + +/*! + Returns the name of the signal that was emitted or the name of the error that was + received. + \sa member() +*/ +QString QDBusMessage::name() const +{ + return d_ptr->name; +} + +/*! + \fn QDBusMessage::member() const + Returns the name of the method being called. +*/ + +/*! + \fn QDBusMessage::method() const + \overload + Returns the name of the method being called. +*/ + +/*! + Returns the name of the service or the bus address of the remote method call. +*/ +QString QDBusMessage::service() const +{ + return d_ptr->service; +} + +/*! + \fn QDBusMessage::sender() const + Returns the unique name of the remote sender. +*/ + +/*! + Returns the timeout (in milliseconds) for this message to be processed. +*/ +int QDBusMessage::timeout() const +{ + return d_ptr->timeout; +} + +/*! + Sets the timeout for this message to be processed, given by \a ms, in milliseconds. +*/ +void QDBusMessage::setTimeout(int ms) +{ + qAtomicDetach(d_ptr); + d_ptr->timeout = ms; +} + +/*! + Returns the flag that indicates if this message should see a reply or not. This is only + meaningful for MethodCall messages: any other kind of message cannot have replies and this + function will always return false for them. +*/ +bool QDBusMessage::noReply() const +{ + if (!d_ptr->msg) + return false; + return dbus_message_get_no_reply(d_ptr->msg); +} + +/*! + Returns the unique serial number assigned to this message + or 0 if the message was not sent yet. + */ +int QDBusMessage::serialNumber() const +{ + if (!d_ptr->msg) + return 0; + return dbus_message_get_serial(d_ptr->msg); +} + +/*! + Returns the unique serial number assigned to the message + that triggered this reply message. + + If this message is not a reply to another message, 0 + is returned. + + */ +int QDBusMessage::replySerialNumber() const +{ + if (!d_ptr->msg) + return 0; + return dbus_message_get_reply_serial(d_ptr->msg); +} + +/*! + Returns true if this is a MethodCall message and a reply for it has been generated using + QDBusMessage::methodReply or QDBusMessage::error. +*/ +bool QDBusMessage::wasRepliedTo() const +{ + return d_ptr->repliedTo; +} + +/*! + Returns the signature of the signal that was received or for the output arguments + of a method call. +*/ +QString QDBusMessage::signature() const +{ + return d_ptr->signature; +} + +/*! + Sets the signature for the output arguments of this method call to be the value of \a + signature. This function has no meaning in other types of messages or when dealing with received + method calls. + + A message's signature indicate the type of the parameters to + be marshalled over the bus. If there are more arguments than entries in the signature, the + tailing arguments will be silently dropped and not sent. If there are less arguments, + default values will be inserted (default values are those created by QVariant::convert + when a variant of type QVariant::Invalid is converted to the type). + +*/ +void QDBusMessage::setSignature(const QString &signature) +{ + qAtomicDetach(d_ptr); + d_ptr->signature = signature; +} + +/*! + Returns the connection this message was received on or an unconnected QDBusConnection object if + this isn't a message that has been received. +*/ +QDBusConnection QDBusMessage::connection() const +{ + return d_ptr->connection; +} + +/*! + Returns the message type. +*/ +QDBusMessage::MessageType QDBusMessage::type() const +{ + switch (d_ptr->type) { + case DBUS_MESSAGE_TYPE_METHOD_CALL: + return MethodCallMessage; + case DBUS_MESSAGE_TYPE_METHOD_RETURN: + return ReplyMessage; + case DBUS_MESSAGE_TYPE_ERROR: + return ErrorMessage; + case DBUS_MESSAGE_TYPE_SIGNAL: + return SignalMessage; + default: + return InvalidMessage; + } +} + +// Document QDBusReply here +/*! + \class QDBusReply + \brief The reply for a method call to a remote object. + + A QDBusReply object is a subset of the QDBusMessage object that represents a method call's + reply. It contains only the first output argument or the error code and is used by + QDBusInterface-derived classes to allow returning the error code as the function's return + argument. + + It can be used in the following manner: + \code + QDBusReply reply = interface->call("RemoteMethod"); + if (reply.isSuccess()) + // use the returned value + useValue(reply.value()); + else + // call failed. Show an error condition. + showError(reply.error()); + \endcode + + If the remote method call cannot fail, you can skip the error checking: + \code + QString reply = interface->call("RemoteMethod"); + \endcode + + However, if it does fail under those conditions, the value returned by QDBusReply::value() is + undefined. It may be undistinguishable from a valid return value. + + QDBusReply objects are used for remote calls that have no output arguments or return values + (i.e., they have a "void" return type). In this case, you can only test if the reply succeeded + or not, by calling isError() and isSuccess(), and inspecting the error condition by calling + error(). You cannot call value(). + + \sa QDBusMessage, QDBusInterface +*/ + +/*! + \fn QDBusReply::QDBusReply(const QDBusMessage &reply) + Automatically construct a QDBusReply object from the reply message \a reply, extracting the + first return value from it if it is a success reply. +*/ + +/*! + \fn QDBusReply::QDBusReply(const QDBusError &error) + Constructs an error reply from the D-Bus error code given by \a error. +*/ + +/*! + \fn QDBusReply::isError() const + Returns true if this reply is an error reply. You can extract the error contents using the + error() function. +*/ + +/*! + \fn QDBusReply::isSuccess() const + Returns true if this reply is a normal error reply (not an error). You can extract the returned + value with value() +*/ + +/*! + \fn QDBusReply::error() + Returns the error code that was returned from the remote function call. If the remote call did + not return an error (i.e., if it succeeded), then the QDBusError object that is returned will + not be a valid error code (QDBusError::isValid() will return false). +*/ + +/*! + \fn QDBusReply::value() + Returns the remote function's calls return value. If the remote call returned with an error, + the return value of this function is undefined and may be undistinguishable from a valid return + value. + + This function is not available if the remote call returns \c void. +*/ + +/*! + \fn QDBusReply::operator Type() + Returns the same as value(). + + This function is not available if the remote call returns \c void. +*/ + +/*! + \internal + \fn QDBusReply::fromVariant(const QDBusReply &variantReply) + Converts the QDBusReply object to this type by converting the variant contained in + \a variantReply to the template's type and copying the error condition. + + If the QVariant in variantReply is not convertible to this type, it will assume an undefined + value. +*/ + +#ifndef QT_NO_DEBUG +QDebug operator<<(QDebug dbg, QDBusMessage::MessageType t) +{ + switch (t) + { + case QDBusMessage::MethodCallMessage: + return dbg << "MethodCall"; + case QDBusMessage::ReplyMessage: + return dbg << "MethodReturn"; + case QDBusMessage::SignalMessage: + return dbg << "Signal"; + case QDBusMessage::ErrorMessage: + return dbg << "Error"; + default: + return dbg << "Invalid"; + } +} + +static void debugVariantList(QDebug dbg, const QVariantList &list); +static void debugVariantMap(QDebug dbg, const QVariantMap &map); + +static void debugVariant(QDebug dbg, const QVariant &v) +{ + dbg.nospace() << v.typeName() << "("; + switch (v.userType()) + { + case QVariant::Bool: + dbg.nospace() << v.toBool(); + break; + case QMetaType::UChar: + dbg.nospace() << qvariant_cast(v); + break; + case QMetaType::Short: + dbg.nospace() << qvariant_cast(v); + break; + case QMetaType::UShort: + dbg.nospace() << qvariant_cast(v); + break; + case QVariant::Int: + dbg.nospace() << v.toInt(); + break; + case QVariant::UInt: + dbg.nospace() << v.toUInt(); + break; + case QVariant::LongLong: + dbg.nospace() << v.toLongLong(); + break; + case QVariant::ULongLong: + dbg.nospace() << v.toULongLong(); + break; + case QVariant::Double: + dbg.nospace() << v.toDouble(); + break; + case QVariant::String: + dbg.nospace() << v.toString(); + break; + case QVariant::ByteArray: + dbg.nospace() << v.toByteArray(); + break; + case QVariant::StringList: + dbg.nospace() << v.toStringList(); + break; + case QVariant::List: + debugVariantList(dbg, v.toList()); + break; + case QVariant::Map: + debugVariantMap(dbg, v.toMap()); + break; + + default: { + int id = v.userType(); + if (id == QDBusTypeHelper::id()) + debugVariant(dbg, QDBusTypeHelper::fromVariant(v)); + else if (id == QDBusTypeHelper::listId()) + dbg.nospace() << QDBusTypeHelper >::fromVariant(v); + else if (id == QDBusTypeHelper::listId()) + dbg.nospace() << QDBusTypeHelper >::fromVariant(v); + else if (id == QDBusTypeHelper::listId()) + dbg.nospace() << QDBusTypeHelper >::fromVariant(v); + else if (id == QDBusTypeHelper::listId()) + dbg.nospace() << QDBusTypeHelper >::fromVariant(v); + else if (id == QDBusTypeHelper::listId()) + dbg.nospace() << QDBusTypeHelper >::fromVariant(v); + else if (id == QDBusTypeHelper::listId()) + dbg.nospace() << QDBusTypeHelper >::fromVariant(v); + else if (id == QDBusTypeHelper::listId()) + dbg.nospace() << QDBusTypeHelper >::fromVariant(v); + else if (id == QDBusTypeHelper::listId()) + dbg.nospace() << QDBusTypeHelper >::fromVariant(v); + else + dbg.nospace() << "unknown"; + } + } + dbg.nospace() << ")"; +} + +static void debugVariantList(QDebug dbg, const QVariantList &list) +{ + bool first = true; + QVariantList::ConstIterator it = list.constBegin(); + QVariantList::ConstIterator end = list.constEnd(); + for ( ; it != end; ++it) { + if (!first) + dbg.nospace() << ", "; + debugVariant(dbg, *it); + first = false; + } +} + +static void debugVariantMap(QDebug dbg, const QVariantMap &map) +{ + QVariantMap::ConstIterator it = map.constBegin(); + QVariantMap::ConstIterator end = map.constEnd(); + for ( ; it != end; ++it) { + dbg << "(" << it.key() << ", "; + debugVariant(dbg, it.value()); + dbg << ") "; + } +} + +QDebug operator<<(QDebug dbg, const QDBusMessage &msg) +{ + dbg.nospace() << "QDBusMessage(type=" << msg.type() + << ", service=" << msg.service() + << ", path=" << msg.path() + << ", interface=" << msg.interface() + << ", name=" << msg.name() + << ", signature=" << msg.signature() + << ", contents=("; + debugVariantList(dbg, msg); + dbg.nospace() << " ) )"; + return dbg.space(); +} +#endif + diff --git a/qt/src/qdbusmessage.h b/qt/src/qdbusmessage.h new file mode 100644 index 00000000..f8feeae4 --- /dev/null +++ b/qt/src/qdbusmessage.h @@ -0,0 +1,99 @@ +/* qdbusmessage.h QDBusMessage object + * + * Copyright (C) 2005 Harald Fernengel + * Copyright (C) 2006 Trolltech AS. All rights reserved. + * Author: Thiago Macieira + * + * Licensed under the Academic Free License version 2.1 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef QDBUSMESSAGE_H +#define QDBUSMESSAGE_H + +#include "qdbusmacros.h" +#include "qdbuserror.h" +#include +#include + +#include + +class QDBusMessagePrivate; +class QDBusConnection; +class QDBusConnectionPrivate; +struct DBusMessage; + +class QDBUS_EXPORT QDBusMessage: public QList +{ + //friend class QDBusConnection; + friend class QDBusConnectionPrivate; +public: + enum { DefaultTimeout = -1, NoTimeout = INT_MAX}; + enum MessageType { InvalidMessage, MethodCallMessage, ReplyMessage, + ErrorMessage, SignalMessage }; + + QDBusMessage(); + QDBusMessage(const QDBusMessage &other); + ~QDBusMessage(); + + QDBusMessage &operator=(const QDBusMessage &other); + + static QDBusMessage signal(const QString &path, const QString &interface, + const QString &name); + static QDBusMessage methodCall(const QString &destination, const QString &path, + const QString &interface, const QString &method); + static QDBusMessage methodReply(const QDBusMessage &other); + static QDBusMessage error(const QDBusMessage &other, const QString &name, + const QString &message = QString()); + static QDBusMessage error(const QDBusMessage &other, const QDBusError &error); + + QString path() const; + QString interface() const; + QString name() const; + inline QString member() const { return name(); } + inline QString method() const { return name(); } + QString service() const; + inline QString sender() const { return service(); } + MessageType type() const; + + int timeout() const; + void setTimeout(int ms); + + bool noReply() const; + + QString signature() const; + void setSignature(const QString &signature); + + QDBusConnection connection() const; + + int serialNumber() const; + int replySerialNumber() const; + bool wasRepliedTo() const; + +private: + DBusMessage *toDBusMessage() const; + static QDBusMessage fromDBusMessage(DBusMessage *dmsg, const QDBusConnection &connection); + static QDBusMessage fromError(const QDBusError& error); + QDBusMessagePrivate *d_ptr; +}; + +#ifndef QT_NO_DEBUG +QDebug operator<<(QDebug, const QDBusMessage &); +#endif + +#endif + diff --git a/qt/src/qdbusmessage_p.h b/qt/src/qdbusmessage_p.h new file mode 100644 index 00000000..ea958b24 --- /dev/null +++ b/qt/src/qdbusmessage_p.h @@ -0,0 +1,50 @@ +/* qdbusmessage.h QDBusMessage private object + * + * Copyright (C) 2005 Harald Fernengel + * Copyright (C) 2006 Trolltech AS. All rights reserved. + * Author: Thiago Macieira + * + * Licensed under the Academic Free License version 2.1 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef QDBUSMESSAGE_P_H +#define QDBUSMESSAGE_P_H + +#include +#include +#include "qdbusconnection.h" +struct DBusMessage; + +class QDBusMessagePrivate +{ +public: + QDBusMessagePrivate(); + ~QDBusMessagePrivate(); + + QString service, path, interface, name, message, signature; + QDBusConnection connection; + DBusMessage *msg; + DBusMessage *reply; + int type; + int timeout; + QAtomic ref; + + mutable bool repliedTo : 1; +}; + +#endif diff --git a/qt/src/qdbusmetaobject.cpp b/qt/src/qdbusmetaobject.cpp new file mode 100644 index 00000000..a923d79a --- /dev/null +++ b/qt/src/qdbusmetaobject.cpp @@ -0,0 +1,689 @@ +/* -*- C++ -*- + * + * Copyright (C) 2006 Trolltech AS. All rights reserved. + * Author: Thiago Macieira + * + * Licensed under the Academic Free License version 2.1 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "qdbusmetaobject_p.h" + +#include +#include +#include +#include + +#include "qdbusutil.h" +#include "qdbuserror.h" +#include "qdbusintrospection_p.h" +#include "qdbusabstractinterface_p.h" + +class QDBusMetaObjectGenerator +{ +public: + QDBusMetaObjectGenerator(const QString &interface, + const QDBusIntrospection::Interface *parsedData); + void write(QDBusMetaObject *obj); + void writeWithoutXml(QDBusMetaObject *obj); + +private: + struct Method { + QByteArray parameters; + QByteArray typeName; + QByteArray tag; + QByteArray inputSignature; + QByteArray outputSignature; + QVarLengthArray inputTypes; + QVarLengthArray outputTypes; + int flags; + }; + + struct Property { + QByteArray typeName; + QByteArray signature; + int type; + int flags; + }; + + enum PropertyFlags { + Invalid = 0x00000000, + Readable = 0x00000001, + Writable = 0x00000002, + Resettable = 0x00000004, + EnumOrFlag = 0x00000008, + StdCppSet = 0x00000100, + // Override = 0x00000200, + Designable = 0x00001000, + ResolveDesignable = 0x00002000, + Scriptable = 0x00004000, + ResolveScriptable = 0x00008000, + Stored = 0x00010000, + ResolveStored = 0x00020000, + Editable = 0x00040000, + ResolveEditable = 0x00080000, + User = 0x00100000, + ResolveUser = 0x00200000 + }; + + enum MethodFlags { + AccessPrivate = 0x00, + AccessProtected = 0x01, + AccessPublic = 0x02, + AccessMask = 0x03, //mask + + MethodMethod = 0x00, + MethodSignal = 0x04, + MethodSlot = 0x08, + MethodTypeMask = 0x0c, + + MethodCompatibility = 0x10, + MethodCloned = 0x20, + MethodScriptable = 0x40 + }; + + QMap methods; + QMap properties; + + const QDBusIntrospection::Interface *data; + QString interface; + + void parseMethods(); + void parseSignals(); + void parseProperties(); +}; + +static const int intsPerProperty = 2; +static const int intsPerMethod = 4; + +// ### from kernel/qmetaobject.cpp (Qt 4.1.2): +struct QDBusMetaObjectPrivate +{ + int revision; + int className; + int classInfoCount, classInfoData; + int methodCount, methodData; + int propertyCount, propertyData; + int enumeratorCount, enumeratorData; + + // this is specific for QDBusMetaObject: + int propertyDBusData; + int methodDBusData; +}; + +QDBusMetaObjectGenerator::QDBusMetaObjectGenerator(const QString &interfaceName, + const QDBusIntrospection::Interface *parsedData) + : data(parsedData), interface(interfaceName) +{ + if (data) { + parseProperties(); + parseSignals(); // call parseSignals first so that slots override signals + parseMethods(); + } +} + +void QDBusMetaObjectGenerator::parseMethods() +{ + foreach (const QDBusIntrospection::Method &m, data->methods) { + Method mm; + + QByteArray prototype = m.name.toLatin1(); + prototype += '('; + + bool ok = true; + + // build the input argument list + foreach (const QDBusIntrospection::Argument &arg, m.inputArgs) { + int typeId = QDBusUtil::signatureToType(arg.type); + if (typeId == QVariant::Invalid) { + ok = false; + break; + } + + mm.inputSignature += arg.type; + mm.inputTypes.append(typeId); + + mm.parameters.append(arg.name.toLatin1()); + mm.parameters.append(','); + + prototype.append( QVariant::typeToName( QVariant::Type(typeId) ) ); + prototype.append(','); + } + if (!ok) continue; + + // build the output argument list: + for (int i = 0; i < m.outputArgs.count(); ++i) { + const QDBusIntrospection::Argument &arg = m.outputArgs.at(i); + + int typeId = QDBusUtil::signatureToType(arg.type); + if (typeId == QVariant::Invalid) { + ok = false; + break; + } + + mm.outputSignature += arg.type; + mm.outputTypes.append(typeId); + + if (i == 0) { + // return value + mm.typeName = QVariant::typeToName( QVariant::Type(typeId) ); + } else { + // non-const ref parameter + mm.parameters.append(arg.name.toLatin1()); + mm.parameters.append(','); + + prototype.append( QVariant::typeToName( QVariant::Type(typeId) ) ); + prototype.append("&,"); + } + } + if (!ok) continue; + + // convert the last commas: + if (!mm.parameters.isEmpty()) { + mm.parameters.truncate(mm.parameters.length() - 1); + prototype[prototype.length() - 1] = ')'; + } else { + prototype.append(')'); + } + + // check the async tag + if (m.annotations.value(QLatin1String(ANNOTATION_NO_WAIT)) == QLatin1String("true")) + mm.tag = "Q_ASYNC"; + + // meta method flags + mm.flags = AccessPublic | MethodSlot | MethodScriptable; + + // add + methods.insert(QMetaObject::normalizedSignature(prototype), mm); + } +} + +void QDBusMetaObjectGenerator::parseSignals() +{ + foreach (const QDBusIntrospection::Signal &s, data->signals_) { + Method mm; + + QByteArray prototype = s.name.toLatin1(); + prototype += '('; + + bool ok = true; + + // build the output argument list + foreach (const QDBusIntrospection::Argument &arg, s.outputArgs) { + int typeId = QDBusUtil::signatureToType(arg.type); + if (typeId == QVariant::Invalid) { + ok = false; + break; + } + + mm.inputSignature += arg.type; + mm.inputTypes.append(typeId); + + mm.parameters.append(arg.name.toLatin1()); + mm.parameters.append(','); + + prototype.append( QVariant::typeToName( QVariant::Type(typeId) ) ); + prototype.append(','); + } + if (!ok) continue; + + // convert the last commas: + if (!mm.parameters.isEmpty()) { + mm.parameters.truncate(mm.parameters.length() - 1); + prototype[prototype.length() - 1] = ')'; + } else { + prototype.append(')'); + } + + // meta method flags + mm.flags = AccessProtected | MethodSignal | MethodScriptable; + + // add + methods.insert(QMetaObject::normalizedSignature(prototype), mm); + } +} + +void QDBusMetaObjectGenerator::parseProperties() +{ + foreach (const QDBusIntrospection::Property &p, data->properties) { + Property mp; + mp.type = QDBusUtil::signatureToType(p.type); + if (mp.type == QVariant::Invalid) + continue; + + QByteArray name = p.name.toLatin1(); + mp.signature = p.type.toLatin1(); + mp.typeName = QVariant::typeToName( QVariant::Type(mp.type) ); + + // build the flags: + mp.flags = StdCppSet | Scriptable | Stored; + if (p.access != QDBusIntrospection::Property::Write) + mp.flags |= Readable; + if (p.access != QDBusIntrospection::Property::Read) + mp.flags |= Writable; + + if (mp.typeName == "QVariant") + mp.flags |= 0xff << 24; + else if (mp.type < 0xff) + // encode the type in the flags + mp.flags |= mp.type << 24; + + // add the property: + properties.insert(name, mp); + } +} + +void QDBusMetaObjectGenerator::write(QDBusMetaObject *obj) +{ + // this code here is mostly copied from qaxbase.cpp + // with a few modifications to make it cleaner + + QString className = interface; + className.replace(QLatin1Char('.'), QLatin1String("::")); + if (className.isEmpty()) + className = QLatin1String("QDBusInterface"); + + QVarLengthArray data; + data.resize(sizeof(QDBusMetaObjectPrivate) / sizeof(int)); + + QDBusMetaObjectPrivate *header = reinterpret_cast(data.data()); + header->revision = 1; + header->className = 0; + header->classInfoCount = 0; + header->classInfoData = 0; + header->methodCount = methods.count(); + header->methodData = data.size(); + header->propertyCount = properties.count(); + header->propertyData = header->methodData + header->methodCount * 5; + header->enumeratorCount = 0; + header->enumeratorData = 0; + header->propertyDBusData = header->propertyData + header->propertyCount * 3; + header->methodDBusData = header->propertyDBusData + header->propertyCount * intsPerProperty; + + int data_size = data.size() + + (header->methodCount * (5+intsPerMethod)) + + (header->propertyCount * (3+intsPerProperty)); + foreach (const Method &mm, methods) + data_size += 2 + mm.inputTypes.count() + mm.outputTypes.count(); + data.resize(data_size + 1); + + char null('\0'); + QByteArray stringdata = className.toLatin1(); + stringdata += null; + stringdata.reserve(8192); + + int offset = header->methodData; + int signatureOffset = header->methodDBusData; + int typeidOffset = header->methodDBusData + header->methodCount * intsPerMethod; + data[typeidOffset++] = 0; // eod + + // add each method: + for (QMap::ConstIterator it = methods.constBegin(); + it != methods.constEnd(); ++it) { + // form "prototype\0parameters\0typeName\0tag\0inputSignature\0outputSignature" + const Method &mm = it.value(); + + data[offset++] = stringdata.length(); + stringdata += it.key(); // prototype + stringdata += null; + data[offset++] = stringdata.length(); + stringdata += mm.parameters; + stringdata += null; + data[offset++] = stringdata.length(); + stringdata += mm.typeName; + stringdata += null; + data[offset++] = stringdata.length(); + stringdata += mm.tag; + stringdata += null; + data[offset++] = mm.flags; + + data[signatureOffset++] = stringdata.length(); + stringdata += mm.inputSignature; + stringdata += null; + data[signatureOffset++] = stringdata.length(); + stringdata += mm.outputSignature; + stringdata += null; + + data[signatureOffset++] = typeidOffset; + data[typeidOffset++] = mm.inputTypes.count(); + memcpy(data.data() + typeidOffset, mm.inputTypes.data(), mm.inputTypes.count() * sizeof(int)); + typeidOffset += mm.inputTypes.count(); + + data[signatureOffset++] = typeidOffset; + data[typeidOffset++] = mm.outputTypes.count(); + memcpy(data.data() + typeidOffset, mm.outputTypes.data(), mm.outputTypes.count() * sizeof(int)); + typeidOffset += mm.outputTypes.count(); + } + + Q_ASSERT(offset == header->propertyData); + Q_ASSERT(signatureOffset == header->methodDBusData + header->methodCount * intsPerMethod); + Q_ASSERT(typeidOffset == data.size()); + + // add each property + signatureOffset = header->propertyDBusData; + for (QMap::ConstIterator it = properties.constBegin(); + it != properties.constEnd(); ++it) { + const Property &mp = it.value(); + + // form is "name\0typeName\0signature\0" + data[offset++] = stringdata.length(); + stringdata += it.key(); // name + stringdata += null; + data[offset++] = stringdata.length(); + stringdata += mp.typeName; + stringdata += null; + data[offset++] = mp.flags; + + data[signatureOffset++] = stringdata.length(); + stringdata += mp.signature; + stringdata += null; + data[signatureOffset++] = mp.type; + } + + Q_ASSERT(offset == header->propertyDBusData); + Q_ASSERT(signatureOffset == header->methodDBusData); + + char *string_data = new char[stringdata.length()]; + memcpy(string_data, stringdata, stringdata.length()); + + uint *uint_data = new uint[data.size()]; + memcpy(uint_data, data.data(), data.size() * sizeof(int)); + + // put the metaobject together + obj->d.data = uint_data; + obj->d.extradata = 0; + obj->d.stringdata = string_data; + obj->d.superdata = &QDBusAbstractInterface::staticMetaObject; +} + +#if 0 +void QDBusMetaObjectGenerator::writeWithoutXml(const QString &interface) +{ + // no XML definition + QString tmp(interface); + tmp.replace(QLatin1Char('.'), QLatin1String("::")); + QByteArray name(tmp.toLatin1()); + + QDBusMetaObjectPrivate *header = new QDBusMetaObjectPrivate; + memset(header, 0, sizeof *header); + header->revision = 1; + // leave the rest with 0 + + char *stringdata = new char[name.length() + 1]; + stringdata[name.length()] = '\0'; + + d.data = reinterpret_cast(header); + d.extradata = 0; + d.stringdata = stringdata; + d.superdata = &QDBusAbstractInterface::staticMetaObject; + cached = false; +} +#endif + +///////// +// class QDBusMetaObject + +QDBusMetaObject *QDBusMetaObject::createMetaObject(const QString &interface, const QString &xml, + QHash &cache, + QDBusError &error) +{ + error = QDBusError(); + QDBusIntrospection::Interfaces parsed = QDBusIntrospection::parseInterfaces(xml); + + QDBusMetaObject *we = 0; + QDBusIntrospection::Interfaces::ConstIterator it = parsed.constBegin(); + QDBusIntrospection::Interfaces::ConstIterator end = parsed.constEnd(); + for ( ; it != end; ++it) { + // check if it's in the cache + QDBusMetaObject *obj = cache.value(it.key(), 0); + if (!obj) { + // not in cache; create + obj = new QDBusMetaObject; + QDBusMetaObjectGenerator generator(it.key(), it.value().constData()); + generator.write(obj); + + if ( (obj->cached = !it.key().startsWith( QLatin1String("local.") )) ) + // cache it + cache.insert(it.key(), obj); + + } + + if (it.key() == interface) + // it's us + we = obj; + } + + if (we) + return we; + // still nothing? + + if (parsed.isEmpty()) { + // object didn't return introspection + we = new QDBusMetaObject; + QDBusMetaObjectGenerator generator(interface, 0); + generator.write(we); + we->cached = false; + return we; + } else if (interface.isEmpty()) { + // merge all interfaces + it = parsed.constBegin(); + QDBusIntrospection::Interface merged = *it.value().constData(); + + for (++it; it != end; ++it) { + merged.annotations.unite(it.value()->annotations); + merged.methods.unite(it.value()->methods); + merged.signals_.unite(it.value()->signals_); + merged.properties.unite(it.value()->properties); + } + + merged.name = QLatin1String("local.Merged"); + merged.introspection.clear(); + + we = new QDBusMetaObject; + QDBusMetaObjectGenerator generator(merged.name, &merged); + generator.write(we); + we->cached = false; + return we; + } + + // mark as an error + error = QDBusError(QDBusError::UnknownInterface, + QString( QLatin1String("Interface '%1' was not found") ) + .arg(interface)); + return 0; +} + +QDBusMetaObject::QDBusMetaObject() +{ +} + +inline const QDBusMetaObjectPrivate *priv(const uint* data) +{ + return reinterpret_cast(data); +} + +const char *QDBusMetaObject::dbusNameForMethod(int id) const +{ + //id -= methodOffset(); + if (id >= 0 && id < priv(d.data)->methodCount) { + int handle = priv(d.data)->methodDBusData + id*intsPerMethod; + return d.stringdata + d.data[handle]; + } + return 0; +} + +const char *QDBusMetaObject::inputSignatureForMethod(int id) const +{ + //id -= methodOffset(); + if (id >= 0 && id < priv(d.data)->methodCount) { + int handle = priv(d.data)->methodDBusData + id*intsPerMethod; + return d.stringdata + d.data[handle + 1]; + } + return 0; +} + +const char *QDBusMetaObject::outputSignatureForMethod(int id) const +{ + //id -= methodOffset(); + if (id >= 0 && id < priv(d.data)->methodCount) { + int handle = priv(d.data)->methodDBusData + id*intsPerMethod; + return d.stringdata + d.data[handle + 2]; + } + return 0; +} + +const int *QDBusMetaObject::inputTypesForMethod(int id) const +{ + //id -= methodOffset(); + if (id >= 0 && id < priv(d.data)->methodCount) { + int handle = priv(d.data)->methodDBusData + id*intsPerMethod; + return reinterpret_cast(d.data + d.data[handle + 3]); + } + return 0; +} + +const int *QDBusMetaObject::outputTypesForMethod(int id) const +{ + //id -= methodOffset(); + if (id >= 0 && id < priv(d.data)->methodCount) { + int handle = priv(d.data)->methodDBusData + id*intsPerMethod; + return reinterpret_cast(d.data + d.data[handle + 4]); + } + return 0; +} + +int QDBusMetaObject::propertyMetaType(int id) const +{ + //id -= propertyOffset(); + if (id >= 0 && id < priv(d.data)->propertyCount) { + int handle = priv(d.data)->propertyDBusData + id*intsPerProperty; + return d.data[handle + 1]; + } + return 0; +} + +template +static inline void assign_helper(void *ptr, const QVariant &value) +{ + *reinterpret_cast(ptr) = qvariant_cast(value); +} + +void QDBusMetaObject::assign(void *ptr, const QVariant &value) +{ + switch (value.userType()) + { + case QVariant::Bool: + assign_helper(ptr, value); + return; + + case QMetaType::UChar: + assign_helper(ptr, value); + return; + + case QMetaType::Short: + assign_helper(ptr, value); + return; + + case QMetaType::UShort: + assign_helper(ptr, value); + return; + + case QVariant::Int: + assign_helper(ptr, value); + return; + + case QVariant::UInt: + assign_helper(ptr, value); + return; + + case QVariant::LongLong: + assign_helper(ptr, value); + return; + + case QVariant::ULongLong: + assign_helper(ptr, value); + return; + + case QVariant::Double: + assign_helper(ptr, value); + return; + + case QVariant::String: + assign_helper(ptr, value); + return; + + case QVariant::ByteArray: + assign_helper(ptr, value); + return; + + case QVariant::List: + assign_helper(ptr, value); + return; + + case QVariant::Map: + assign_helper(ptr, value); + return; + + default: + ; + } +} + +bool QDBusMetaTypeId::initialized = false; +int QDBusMetaTypeId::variant = 0; +int QDBusMetaTypeId::boollist = 0; +int QDBusMetaTypeId::shortlist = 0; +int QDBusMetaTypeId::ushortlist = 0; +int QDBusMetaTypeId::intlist = 0; +int QDBusMetaTypeId::uintlist = 0; +int QDBusMetaTypeId::longlonglist = 0; +int QDBusMetaTypeId::ulonglonglist = 0; +int QDBusMetaTypeId::doublelist = 0; + +bool QDBusMetaTypeId::innerInitialize() +{ + variant = qRegisterMetaType("QVariant"); + boollist = qRegisterMetaType >("QList"); + shortlist = qRegisterMetaType >("QList"); + ushortlist = qRegisterMetaType >("QList"); + intlist = qRegisterMetaType >("QList"); + uintlist = qRegisterMetaType >("QList"); + longlonglist = qRegisterMetaType >("QList"); + ulonglonglist = qRegisterMetaType >("QList"); + doublelist = qRegisterMetaType >("QList"); + initialized = true; + return true; +} + +int qDBusMetaTypeId(QVariant *) +{ QDBusMetaTypeId::initialize(); return QDBusMetaTypeId::variant; } +int qDBusMetaTypeId(QList *) +{ QDBusMetaTypeId::initialize(); return QDBusMetaTypeId::boollist; } +int qDBusMetaTypeId(QList *) +{ QDBusMetaTypeId::initialize(); return QDBusMetaTypeId::shortlist; } +int qDBusMetaTypeId(QList *) +{ QDBusMetaTypeId::initialize(); return QDBusMetaTypeId::ushortlist; } +int qDBusMetaTypeId(QList *) +{ QDBusMetaTypeId::initialize(); return QDBusMetaTypeId::intlist; } +int qDBusMetaTypeId(QList *) +{ QDBusMetaTypeId::initialize(); return QDBusMetaTypeId::uintlist; } +int qDBusMetaTypeId(QList *) +{ QDBusMetaTypeId::initialize(); return QDBusMetaTypeId::longlonglist; } +int qDBusMetaTypeId(QList *) +{ QDBusMetaTypeId::initialize(); return QDBusMetaTypeId::ulonglonglist; } +int qDBusMetaTypeId(QList *) +{ QDBusMetaTypeId::initialize(); return QDBusMetaTypeId::doublelist; } diff --git a/qt/src/qdbusmetaobject_p.h b/qt/src/qdbusmetaobject_p.h new file mode 100644 index 00000000..746240d1 --- /dev/null +++ b/qt/src/qdbusmetaobject_p.h @@ -0,0 +1,96 @@ +/* + * + * Copyright (C) 2006 Trolltech AS. All rights reserved. + * Author: Thiago Macieira + * + * Licensed under the Academic Free License version 2.1 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +// +// W A R N I N G +// ------------- +// +// This file is not part of the public API. This header file may +// change from version to version without notice, or even be +// removed. +// +// We mean it. +// +// + +#ifndef QDBUSMETAOBJECTPRIVATE_H +#define QDBUSMETAOBJECTPRIVATE_H + +#include +#include "qdbusmacros.h" + +class QDBusError; + +struct QDBusMetaObjectPrivate; +struct QDBUS_EXPORT QDBusMetaObject: public QMetaObject +{ + bool cached; + + static QDBusMetaObject *createMetaObject(const QString &interface, const QString &xml, + QHash &map, + QDBusError &error); + ~QDBusMetaObject() + { + delete [] d.stringdata; + delete [] d.data; + } + + // methods (slots & signals): + const char *dbusNameForMethod(int id) const; + const char *inputSignatureForMethod(int id) const; + const char *outputSignatureForMethod(int id) const; + const int *inputTypesForMethod(int id) const; + const int *outputTypesForMethod(int id) const; + + // properties: + int propertyMetaType(int id) const; + + // helper function: + static void assign(void *, const QVariant &value); + +private: + QDBusMetaObject(); +}; + +struct QDBusMetaTypeId +{ + static bool innerInitialize(); + static bool initialized; + static inline void initialize() + { + if (initialized) return; + innerInitialize(); + } + + static int variant; + static int boollist; + static int shortlist; + static int ushortlist; + static int intlist; + static int uintlist; + static int longlonglist; + static int ulonglonglist; + static int doublelist; +}; + +#endif diff --git a/qt/src/qdbusmisc.cpp b/qt/src/qdbusmisc.cpp new file mode 100644 index 00000000..9aaf9f24 --- /dev/null +++ b/qt/src/qdbusmisc.cpp @@ -0,0 +1,156 @@ +/* qdbusmisc.cpp Miscellaneous routines that didn't fit anywhere else + * + * Copyright (C) 2006 Trolltech AS. All rights reserved. + * Author: Thiago Macieira + * + * Licensed under the Academic Free License version 2.1 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include + +#include +#include + +#include "qdbusconnection_p.h" +#include "qdbustypehelper_p.h" + +bool qDBusCheckAsyncTag(const char *tag) +{ + if (!tag || !*tag) + return false; + + const char *p = strstr(tag, "async"); + if (p != NULL && + (p == tag || *(p-1) == ' ') && + (p[5] == '\0' || p[5] == ' ')) + return true; + + p = strstr(tag, "Q_ASYNC"); + if (p != NULL && + (p == tag || *(p-1) == ' ') && + (p[7] == '\0' || p[7] == ' ')) + return true; + + return false; +} + +int qDBusNameToTypeId(const char *name) +{ + int id = static_cast( QVariant::nameToType(name) ); + if (id == QVariant::UserType) + id = QMetaType::type(name); + + switch (id) { + case QVariant::Bool: + case QVariant::Int: + case QVariant::UInt: + case QVariant::Char: + case QMetaType::Short: + case QMetaType::UShort: + case QMetaType::UChar: + case QVariant::LongLong: + case QVariant::ULongLong: + case QVariant::Double: + case QVariant::String: + case QVariant::Date: + case QVariant::Time: + case QVariant::DateTime: + case QVariant::Map: + case QVariant::StringList: + case QVariant::ByteArray: + case QVariant::List: + return id; + + default: + if (id == QDBusConnectionPrivate::registerMessageMetaType() || + id == QDBusTypeHelper::id() || + id == QDBusTypeHelper::listId() || + id == QDBusTypeHelper::listId() || + id == QDBusTypeHelper::listId() || + id == QDBusTypeHelper::listId() || + id == QDBusTypeHelper::listId() || + id == QDBusTypeHelper::listId() || + id == QDBusTypeHelper::listId()) + return id; + + return 0; // invalid + } +} + +// calculates the metatypes for the method +// the slot must have the parameters in the following form: +// - zero or more value or const-ref parameters of any kind +// - zero or one const ref of QDBusMessage +// - zero or more non-const ref parameters +// No parameter may be a template. +// this function returns -1 if the parameters don't match the above form +// this function returns the number of *input* parameters, including the QDBusMessage one if any +// this function does not check the return type, so metaTypes[0] is always 0 and always present +// metaTypes.count() >= retval + 1 in all cases +// +// sig must be the normalised signature for the method +int qDBusParametersForMethod(const QMetaMethod &mm, QList& metaTypes) +{ + QList parameterTypes = mm.parameterTypes(); + metaTypes.clear(); + + metaTypes.append(0); // return type + int inputCount = 0; + bool seenMessage = false; + foreach (QByteArray type, parameterTypes) { + if (type.endsWith('*')) { + //qWarning("Could not parse the method '%s'", mm.signature()); + // pointer? + return -1; + } + + if (type.endsWith('&')) { + type.truncate(type.length() - 1); + int id = qDBusNameToTypeId(type); + if (id == 0) { + //qWarning("Could not parse the method '%s'", mm.signature()); + // invalid type in method parameter list + return -1; + } + + metaTypes.append( id ); + seenMessage = true; // it cannot appear anymore anyways + continue; + } + + if (seenMessage) { // && !type.endsWith('&') + //qWarning("Could not parse the method '%s'", mm.signature()); + // non-output parameters after message or after output params + return -1; // not allowed + } + + int id = qDBusNameToTypeId(type); + if (id == 0) { + //qWarning("Could not parse the method '%s'", mm.signature()); + // invalid type in method parameter list + return -1; + } + metaTypes.append(id); + ++inputCount; + + if (id == QDBusConnectionPrivate::registerMessageMetaType()) + seenMessage = true; + } + + return inputCount; +} diff --git a/qt/src/qdbusreply.h b/qt/src/qdbusreply.h new file mode 100644 index 00000000..0b5c12d9 --- /dev/null +++ b/qt/src/qdbusreply.h @@ -0,0 +1,132 @@ +/* qdbusreply.h QDBusReply object - a reply from D-Bus + * + * Copyright (C) 2006 Trolltech AS. All rights reserved. + * Author: Thiago Macieira + * + * Licensed under the Academic Free License version 2.1 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef QDBUSREPLY_H +#define QDBUSREPLY_H + +#include +#include + +#include "qdbusmacros.h" +#include "qdbusmessage.h" +#include "qdbuserror.h" + +#include "qdbustypehelper_p.h" + +template +class QDBusReply +{ + typedef T Type; +public: + inline QDBusReply(const QDBusMessage &reply) + : m_data(Type()) + { + *this = reply; + } + inline QDBusReply& operator=(const QDBusMessage& reply) + { + m_error = reply; + if (isSuccess()) + m_data = QDBusTypeHelper::fromVariant(reply.at(0)); + else + m_data = Type(); + return *this; + } + + inline QDBusReply(const QDBusError &error = QDBusError()) + : m_error(error), m_data(Type()) + { + } + inline QDBusReply& operator=(const QDBusError& error) + { + m_error = error; + m_data = Type(); + return *this; + } + + inline QDBusReply& operator=(const QDBusReply& other) + { + m_error = other.m_error; + m_data = other.m_data; + return *this; + } + + inline bool isError() const { return m_error.isValid(); } + inline bool isSuccess() const { return !m_error.isValid(); } + + inline const QDBusError& error() { return m_error; } + + inline Type value() + { + return m_data; + } + + inline operator Type () + { + return m_data; + } + + static QDBusReply fromVariant(const QDBusReply &variantReply) + { + QDBusReply retval; + retval.m_error = variantReply.m_error; + if (retval.isSuccess()) { + retval.m_data = qvariant_cast(variantReply.m_data); + if (!qVariantCanConvert(variantReply.m_data)) + retval.m_error = QDBusError(QDBusError::InvalidSignature, + QLatin1String("Unexpected reply signature")); + } + return retval; + } + +private: + QDBusError m_error; + Type m_data; +}; + +# ifndef Q_QDOC +// specialize for void: +template<> +class QDBUS_EXPORT QDBusReply +{ +public: + inline QDBusReply(const QDBusMessage &reply) + : m_error(reply) + { + } + inline QDBusReply(const QDBusError &error) + : m_error(error) + { + } + + inline bool isError() const { return m_error.isValid(); } + inline bool isSuccess() const { return !m_error.isValid(); } + + inline const QDBusError& error() { return m_error; } + +private: + QDBusError m_error; +}; +# endif + +#endif diff --git a/qt/src/qdbusserver.cpp b/qt/src/qdbusserver.cpp new file mode 100644 index 00000000..b3b9835e --- /dev/null +++ b/qt/src/qdbusserver.cpp @@ -0,0 +1,61 @@ +/* qdbusserver.cpp + * + * Copyright (C) 2005 Harald Fernengel + * Copyright (C) 2006 Trolltech AS. All rights reserved. + * Author: Thiago Macieira + * + * Licensed under the Academic Free License version 2.1 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "qdbusserver.h" +#include "qdbusconnection_p.h" + +QDBusServer::QDBusServer(const QString &addr, QObject *parent) + : QObject(parent) +{ + d = new QDBusConnectionPrivate(this); + + if (addr.isEmpty()) + return; + + d->setServer(dbus_server_listen(addr.toUtf8().constData(), &d->error)); +} + +bool QDBusServer::isConnected() const +{ + return d->server && dbus_server_get_is_connected(d->server); +} + +QDBusError QDBusServer::lastError() const +{ + return d->lastError; +} + +QString QDBusServer::address() const +{ + QString addr; + if (d->server) { + char *c = dbus_server_get_address(d->server); + addr = QString::fromUtf8(c); + dbus_free(c); + } + + return addr; +} + +#include "qdbusserver.moc" diff --git a/qt/src/qdbusserver.h b/qt/src/qdbusserver.h new file mode 100644 index 00000000..55607860 --- /dev/null +++ b/qt/src/qdbusserver.h @@ -0,0 +1,48 @@ +/* qdbusserver.h QDBusServer object + * + * Copyright (C) 2005 Harald Fernengel + * + * Licensed under the Academic Free License version 2.1 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#ifndef QDBUSSERVER_H +#define QDBUSSERVER_H + +#include "qdbusmacros.h" +#include +#include + +class QDBusConnectionPrivate; +class QDBusError; + +class QDBUS_EXPORT QDBusServer: public QObject +{ + Q_OBJECT +public: + QDBusServer(const QString &address, QObject *parent = 0); + + bool isConnected() const; + QDBusError lastError() const; + QString address() const; + +private: + Q_DISABLE_COPY(QDBusServer) + QDBusConnectionPrivate *d; +}; + +#endif diff --git a/qt/src/qdbusthread.cpp b/qt/src/qdbusthread.cpp new file mode 100644 index 00000000..f45a0096 --- /dev/null +++ b/qt/src/qdbusthread.cpp @@ -0,0 +1,116 @@ +/* qdbusintegrator.cpp QDBusConnection private implementation + * + * Copyright (C) 2005 Harald Fernengel + * Copyright (C) 2006 Trolltech AS. All rights reserved. + * Author: Thiago Macieira + * + * Licensed under the Academic Free License version 2.1 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include +#include + +#include + +struct DBusMutex: public QMutex +{ + inline DBusMutex() + : QMutex( QMutex::NonRecursive ) + { } + + static DBusMutex* mutex_new() + { + return new DBusMutex; + } + + static void mutex_free(DBusMutex *mutex) + { + delete mutex; + } + + static dbus_bool_t mutex_lock(DBusMutex *mutex) + { + mutex->lock(); + return true; + } + + static dbus_bool_t mutex_unlock(DBusMutex *mutex) + { + mutex->unlock(); + return true; + } +}; + +struct DBusCondVar: public QWaitCondition +{ + inline DBusCondVar() + { } + + static DBusCondVar* condvar_new() + { + return new DBusCondVar; + } + + static void condvar_free(DBusCondVar *cond) + { + delete cond; + } + + static void condvar_wait(DBusCondVar *cond, DBusMutex *mutex) + { + cond->wait(mutex); + } + + static dbus_bool_t condvar_wait_timeout(DBusCondVar *cond, DBusMutex *mutex, int msec) + { + return cond->wait(mutex, msec); + } + + static void condvar_wake_one(DBusCondVar *cond) + { + cond->wakeOne(); + } + + static void condvar_wake_all(DBusCondVar *cond) + { + cond->wakeAll(); + } +}; + +bool qDBusInitThreads() +{ + static DBusThreadFunctions fcn = { + DBUS_THREAD_FUNCTIONS_ALL_MASK, + DBusMutex::mutex_new, + DBusMutex::mutex_free, + DBusMutex::mutex_lock, + DBusMutex::mutex_unlock, + DBusCondVar::condvar_new, + DBusCondVar::condvar_free, + DBusCondVar::condvar_wait, + DBusCondVar::condvar_wait_timeout, + DBusCondVar::condvar_wake_one, + DBusCondVar::condvar_wake_all, + 0, 0, 0, 0, 0, 0, 0, 0 + }; + + dbus_threads_init(&fcn); + return true; +} + + diff --git a/qt/src/qdbustype.cpp b/qt/src/qdbustype.cpp new file mode 100644 index 00000000..7f17a372 --- /dev/null +++ b/qt/src/qdbustype.cpp @@ -0,0 +1,847 @@ +/* -*- C++ -*- + * + * Copyright (C) 2005 Thiago Macieira + * Copyright (C) 2006 Trolltech AS. All rights reserved. + * Author: Thiago Macieira + * + * Licensed under the Academic Free License version 2.1 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "qdbustype_p.h" +#include "qdbustypehelper_p.h" +#include + +#include + +class QDBusTypePrivate: public QSharedData +{ +public: + int code; + mutable int qvariantType; + mutable QByteArray signature; + QDBusTypeList subTypes; + + inline QDBusTypePrivate() + : code(0), qvariantType(QVariant::Invalid) + { } +}; + +/*! + \class QDBusType + \brief Represents one single D-Bus type. + \internal + + D-Bus provides a set of primitive types that map to normal, C++ types and to QString, as well as + the possibility to extend the set with the so-called "container" types. The available types are + as follows: + + - Primitive (or basic): integers of 16, 32 and 64 bits, both signed and unsigned; byte (8 bits); + double-precision floating point and Unicode strings + - Arrays: a homogeneous, ordered list of zero or more entries + - Maps: an unordered list of (key, value) pairs, where key must be a primitive type and value + can be any D-Bus type + - Structs: an ordered list of a fixed number of entries of any type + - Variants: a "wildcard" container that can assume the value of any other type, including + structs and arrays + + Any type can be placed inside an array (including other arrays), but only entries of the same + type can be placed inside the same array. The analogous type for D-Bus arrays are the Qt + #QList template classes. + + Structs have a fixed number of entries and each entry has a fixed type. They are analogous to C + and C++ structs (hence the name). + + Maps or dictionaries are analogous to the Qt #QMap template class, with the additional + restriction that the key type must be a primitive one. D-Bus implements maps by using arrays of + a special type (a "dictionary entry"), so inspecting a QDBusType of a Map will reveal that it is + an array (see isArray()). + + Variants contain exactly one entry, but the type can vary freely. It is analogous to the Qt + class #QVariant, but the QtDBus implementation uses #QDBusVariant to represent D-Bus Variants. +*/ + +/*! + Constructs an empty (invalid) type. +*/ +QDBusType::QDBusType() + : d(0) +{ +} + +/*! + Constructs the type based on the D-Bus type given by \a type. +*/ +QDBusType::QDBusType(int type) +{ + char c[2] = { type, 0 }; + *this = QDBusType(c); +} + +/*! + Constructs the type based on the QVariant type given by \a type. + + \sa QVariant::Type +*/ +QDBusType::QDBusType(QVariant::Type type) +{ + const char *sig = dbusSignature(type); + + // it never returns NULL + // but it may return an empty string: + if (sig[0] == '\0') + return; + + if (qstrlen(sig) > 2) { + *this = QDBusType(sig); + } else { + d = new QDBusTypePrivate; + d->qvariantType = type; + d->code = sig[0]; + if (sig[1] == '\0') + // single-letter type + return; + else { + // two-letter type + // must be an array + d->code = sig[0]; + QDBusType t; + t.d = new QDBusTypePrivate; + t.d->code = sig[1]; + d->subTypes << t; + } + } +} + +/*! + Parses the D-Bus signature given by \a signature and constructs the type it represents. +*/ +QDBusType::QDBusType(const char* signature) +{ + if ( !dbus_signature_validate_single(signature, 0) ) + return; + + DBusSignatureIter iter; + dbus_signature_iter_init(&iter, signature); + *this = QDBusType(&iter); + if (d) + d->signature = signature; +} + +/*! + \overload + Parses the D-Bus signature given by \a str and constructs the type it represents. +*/ +QDBusType::QDBusType(const QString& str) +{ + *this = QDBusType( str.toUtf8().constData() ); +} + +/*! + \overload + Parses the D-Bus signature given by \a str and constructs the type it represents. +*/ +QDBusType::QDBusType(const QByteArray& str) +{ + *this = QDBusType( str.constData() ); +} + +/*! + \internal + Creates a QDBusType object based on the current element pointed to by \a iter. +*/ +QDBusType::QDBusType(DBusSignatureIter* iter) + : d(new QDBusTypePrivate) +{ + if ( dbus_type_is_container( d->code = dbus_signature_iter_get_current_type(iter) ) ) { + // we have to recurse + if ( d->code == DBUS_TYPE_VARIANT ) + return; // no we don't. dbus_type_is_container lies to us + + // we have to recurse + DBusSignatureIter subiter; + dbus_signature_iter_recurse(iter, &subiter); + + d->subTypes = QDBusTypeList(&subiter); + + // sanity checking: + if ( d->code == DBUS_TYPE_ARRAY ) + Q_ASSERT_X(d->subTypes.size() == 1, "QDBusType", + "more than one element in array"); + else if (d->code == DBUS_TYPE_DICT_ENTRY ) + Q_ASSERT_X(d->subTypes.size() == 2, "QDBusType", + "maps must have exactly two elements"); + } +} + +/*! + Copies the type from the object \a other. +*/ +QDBusType::QDBusType(const QDBusType& other) + : d(other.d) +{ +} + +/*! + Release the resources associated with this type. +*/ +QDBusType::~QDBusType() +{ +} + +/*! + Copies the type from the object given by \a other. +*/ +QDBusType& QDBusType::operator=(const QDBusType& other) +{ + d = other.d; + return *this; +} + +/*! + Returns the DBus type for this type. +*/ +int QDBusType::dbusType() const +{ + return d ? d->code : DBUS_TYPE_INVALID; +} + +/*! + Returns the DBus signature for this type and subtypes. +*/ +QByteArray QDBusType::dbusSignature() const +{ + if (!d) + return QByteArray(); + + if (!d->signature.isEmpty()) + return d->signature; + + if (d->subTypes.isEmpty()) + return d->signature = QByteArray(1, d->code); + + QByteArray retval; + switch (d->code) { + // can only be array, map or struct + + case DBUS_TYPE_ARRAY: + Q_ASSERT_X(d->subTypes.size() == 1, "QDBusType::dbusSignature", + "more than one element in array"); + + retval += DBUS_TYPE_ARRAY; + retval += d->subTypes.at(0).dbusSignature(); + break; + + case DBUS_TYPE_DICT_ENTRY: { + Q_ASSERT_X(d->subTypes.size() == 2, "QDBusType::dbusSignature", + "maps must have exactly two elements"); + + QByteArray value = d->subTypes.at(1).dbusSignature(); + char key = d->subTypes.at(0).dbusType(); + + Q_ASSERT(key != DBUS_TYPE_INVALID); + Q_ASSERT(!value.isEmpty()); + + retval.reserve(value.length() + 3); + retval = DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING; + retval += key; + retval += value; + retval += DBUS_DICT_ENTRY_END_CHAR; + break; + } + + case DBUS_TYPE_STRUCT: + retval = d->subTypes.dbusSignature(); + retval.prepend(DBUS_STRUCT_BEGIN_CHAR); + retval.append(DBUS_STRUCT_END_CHAR); + break; + + default: + Q_ASSERT_X(false, "QDBusType::dbusSignature", "invalid container type"); + } + + d->signature = retval; + return retval; +} + +/*! + Returns the QVariant::Type for this entry. +*/ +int QDBusType::qvariantType() const +{ + if (d && d->qvariantType != QVariant::Invalid) + return d->qvariantType; + + if (!d) + return QVariant::Invalid; + + return d->qvariantType = qvariantType(dbusSignature().constData()); +} + +/*! + Returns true if this type is a valid one. +*/ +bool QDBusType::isValid() const +{ + return d && d->code != DBUS_TYPE_INVALID; +} + +/*! + Returns true if this type is a basic one. +*/ +bool QDBusType::isBasic() const +{ + return d && dbus_type_is_basic(d->code); +} + +/*! + Returns true if this type is a container. +*/ +bool QDBusType::isContainer() const +{ + return d && dbus_type_is_container(d->code); +} + +/*! + Returns the subtypes of this type, if this is a container. + + \sa isContainer() +*/ +QDBusTypeList QDBusType::subTypes() const +{ + if (d) + return d->subTypes; + return QDBusTypeList(); +} + +/*! + Returns true if this type is an array. + + \sa isContainer(), arrayElement() +*/ +bool QDBusType::isArray() const +{ + return dbusType() == DBUS_TYPE_ARRAY; +} + +/*! + This is a convenience function that returns the element type of an array. + If this object is not an array, it returns an invalid QDBusType. + + \sa isArray() +*/ +QDBusType QDBusType::arrayElement() const +{ + if (isArray() && d->subTypes.count() == 1) + return d->subTypes.first(); + return QDBusType(); +} + +/*! + Returns true if this type is a map (i.e., an array of dictionary entries). + + \sa isContainer(), isArray(), arrayElement() +*/ +bool QDBusType::isMap() const +{ + return arrayElement().dbusType() == DBUS_TYPE_DICT_ENTRY; +} + +/*! + If this object is a map, returns the (basic) type that corresponds to the key type. + If this object is not a map, returns an invalid QDBusType. + + \sa isMap() +*/ +QDBusType QDBusType::mapKey() const +{ + if (isMap()) + return arrayElement().d->subTypes.first(); + return QDBusType(); +} + +/*! + If this object is a map, returns the type that corresponds to the value type. + If this object is not a map, returns an invalid QDBusType. + + \sa isMap() +*/ +QDBusType QDBusType::mapValue() const +{ + if (isMap()) + return arrayElement().d->subTypes.at(1); + return QDBusType(); +} + +/*! + Returns true if this type is the same one as \a other. +*/ +bool QDBusType::operator==(const QDBusType& other) const +{ + if (!d && !other.d) + return true; + if (!d || !other.d) + return false; + return d->code == other.d->code && d->subTypes == other.d->subTypes; +} + +/*! + \fn QDBusType::operator!=(const QDBusType &other) const + Returns true if the this type and the one given by \a other are different. +*/ + +/*! + Converts the DBus type code \a type to QVariant::Type. +*/ +int QDBusType::qvariantType(int type) +{ + char c[2] = { type, 0 }; + return qvariantType(c); +} + +/*! + Converts the DBus type signature \a signature to QVariant::Type. +*/ +int QDBusType::qvariantType(const char* signature) +{ + if (!signature) + return QVariant::Invalid; + + // three special cases that don't validate as single: + if (qstrlen(signature) == 1) { + if (signature[0] == DBUS_TYPE_STRUCT) + return QVariant::List; + else if (signature[0] == DBUS_TYPE_DICT_ENTRY) + return QVariant::Map; + else if (signature[0] == DBUS_TYPE_ARRAY) + return QVariant::List; + } + + // now we can validate + if ( !dbus_signature_validate_single(signature, 0) ) + return QVariant::Invalid; + + switch (signature[0]) + { + case DBUS_TYPE_BOOLEAN: + return QVariant::Bool; + + case DBUS_TYPE_BYTE: + return QMetaType::UChar; + + case DBUS_TYPE_INT16: + return QMetaType::Short; + + case DBUS_TYPE_UINT16: + return QMetaType::UShort; + + case DBUS_TYPE_INT32: + return QVariant::Int; + + case DBUS_TYPE_UINT32: + return QVariant::UInt; + + case DBUS_TYPE_INT64: + return QVariant::LongLong; + + case DBUS_TYPE_UINT64: + return QVariant::ULongLong; + + case DBUS_TYPE_DOUBLE: + return QVariant::Double; + + case DBUS_TYPE_STRING: + case DBUS_TYPE_OBJECT_PATH: + case DBUS_TYPE_SIGNATURE: + return QVariant::String; + + case DBUS_STRUCT_BEGIN_CHAR: + return QVariant::List; // change to QDBusStruct in the future + + case DBUS_TYPE_VARIANT: + return QDBusTypeHelper::id(); + + case DBUS_TYPE_ARRAY: // special case + switch (signature[1]) { + case DBUS_TYPE_BOOLEAN: + return QDBusTypeHelper::listId(); + + case DBUS_TYPE_BYTE: + return QVariant::ByteArray; + + case DBUS_TYPE_INT16: + return QDBusTypeHelper::listId(); + + case DBUS_TYPE_UINT16: + return QDBusTypeHelper::listId(); + + case DBUS_TYPE_INT32: + return QDBusTypeHelper::listId(); + + case DBUS_TYPE_UINT32: + return QDBusTypeHelper::listId(); + + case DBUS_TYPE_INT64: + return QDBusTypeHelper::listId(); + + case DBUS_TYPE_UINT64: + return QDBusTypeHelper::listId(); + + case DBUS_TYPE_DOUBLE: + return QDBusTypeHelper::listId(); + + case DBUS_TYPE_STRING: + case DBUS_TYPE_OBJECT_PATH: + case DBUS_TYPE_SIGNATURE: + return QVariant::StringList; + + case DBUS_TYPE_VARIANT: + return QVariant::List; + + case DBUS_DICT_ENTRY_BEGIN_CHAR: + return QVariant::Map; + + default: + return QVariant::List; + } + default: + return QVariant::Invalid; + + } +} + +/*! + Converts the QVariant::Type \a t to a DBus type code. +*/ +int QDBusType::dbusType(QVariant::Type t) +{ + switch (t) + { + case QVariant::Bool: + return DBUS_TYPE_BOOLEAN; + + case QVariant::Int: + return DBUS_TYPE_INT32; + + case QVariant::UInt: + return DBUS_TYPE_UINT32; + + case QVariant::LongLong: + return DBUS_TYPE_INT64; + + case QVariant::ULongLong: + return DBUS_TYPE_UINT64; + + case QVariant::Double: + return DBUS_TYPE_DOUBLE; + + // from QMetaType: + case QMetaType::Short: + return DBUS_TYPE_INT16; + + case QMetaType::UShort: + return DBUS_TYPE_UINT16; + + case QMetaType::UChar: + return DBUS_TYPE_BYTE; + + case QVariant::String: + return DBUS_TYPE_STRING; + + case QVariant::Map: + // internal type information has been lost + return DBUS_TYPE_DICT_ENTRY; + + case QVariant::List: + case QVariant::StringList: + case QVariant::ByteArray: + // could also be a struct... + return DBUS_TYPE_ARRAY; + + case QVariant::UserType: + return DBUS_TYPE_INVALID; // invalid + + default: + break; // avoid compiler warnings + } + + if (int(t) == QDBusTypeHelper::id()) + return DBUS_TYPE_VARIANT; + + return DBUS_TYPE_INVALID; +} + +/*! + Converts the QVariant::Type \a t to a DBus type signature. +*/ +const char* QDBusType::dbusSignature(QVariant::Type t) +{ + switch (t) + { + case QVariant::Bool: + return DBUS_TYPE_BOOLEAN_AS_STRING; + + case QVariant::Int: + return DBUS_TYPE_INT32_AS_STRING; + + case QVariant::UInt: + return DBUS_TYPE_UINT32_AS_STRING; + + case QMetaType::Short: + return DBUS_TYPE_INT16_AS_STRING; + + case QMetaType::UShort: + return DBUS_TYPE_UINT16_AS_STRING; + + case QMetaType::UChar: + return DBUS_TYPE_BYTE_AS_STRING; + + case QVariant::LongLong: + return DBUS_TYPE_INT64_AS_STRING; + + case QVariant::ULongLong: + return DBUS_TYPE_UINT64_AS_STRING; + + case QVariant::Double: + return DBUS_TYPE_DOUBLE_AS_STRING; + + case QVariant::String: + return DBUS_TYPE_STRING_AS_STRING; + + case QVariant::Map: + // internal type information has been lost + return DBUS_TYPE_ARRAY_AS_STRING + DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING + DBUS_TYPE_STRING_AS_STRING + DBUS_TYPE_VARIANT_AS_STRING + DBUS_DICT_ENTRY_END_CHAR_AS_STRING; // a{sv} + + case QVariant::StringList: + return DBUS_TYPE_ARRAY_AS_STRING + DBUS_TYPE_STRING_AS_STRING; // as + + case QVariant::ByteArray: + return DBUS_TYPE_ARRAY_AS_STRING + DBUS_TYPE_BYTE_AS_STRING; // ay + + case QVariant::List: + // not a string list + // internal list data has been lost + // could also be a struct... + return DBUS_TYPE_ARRAY_AS_STRING + DBUS_TYPE_VARIANT_AS_STRING; // av + + default: + if (int(t) == QDBusTypeHelper::id()) + return DBUS_TYPE_VARIANT_AS_STRING; + if (int(t) == QDBusTypeHelper::listId()) + return DBUS_TYPE_ARRAY_AS_STRING DBUS_TYPE_BOOLEAN_AS_STRING; + if (int(t) == QDBusTypeHelper::listId()) + return DBUS_TYPE_ARRAY_AS_STRING DBUS_TYPE_INT16_AS_STRING; + if (int(t) == QDBusTypeHelper::listId()) + return DBUS_TYPE_ARRAY_AS_STRING DBUS_TYPE_UINT16_AS_STRING; + if (int(t) == QDBusTypeHelper::listId()) + return DBUS_TYPE_ARRAY_AS_STRING DBUS_TYPE_INT32_AS_STRING; + if (int(t) == QDBusTypeHelper::listId()) + return DBUS_TYPE_ARRAY_AS_STRING DBUS_TYPE_UINT32_AS_STRING; + if (int(t) == QDBusTypeHelper::listId()) + return DBUS_TYPE_ARRAY_AS_STRING DBUS_TYPE_INT64_AS_STRING; + if (int(t) == QDBusTypeHelper::listId()) + return DBUS_TYPE_ARRAY_AS_STRING DBUS_TYPE_UINT64_AS_STRING; + if (int(t) == QDBusTypeHelper::listId()) + return DBUS_TYPE_ARRAY_AS_STRING DBUS_TYPE_DOUBLE_AS_STRING; + + return DBUS_TYPE_INVALID_AS_STRING; + } +} + +/*! + \enum QDBusType::VariantListMode + Defines how the guessFromVariant() function will behave when the QVariant is of type + QVariant::List. +*/ + +/*! + Guesses the DBus type from the given \a variant. +*/ +QDBusType QDBusType::guessFromVariant(const QVariant& variant, VariantListMode mode) +{ + if (variant.type() == QVariant::List) { + // investigate deeper + QDBusType t; + t.d = new QDBusTypePrivate; + const QVariantList list = variant.toList(); + + t.d->code = DBUS_TYPE_ARRAY; + if (!list.isEmpty()) { + // check if all elements have the same type + QVariant::Type type = list.first().type(); + foreach (const QVariant& v, list) + if (type != v.type()) { + // at least one is different + type = QVariant::Invalid; + break; + } + + if (type != QVariant::Invalid) { + // all are of the same type + t.d->subTypes << guessFromVariant(list.first()); + return t; + } + } else { + // an array of "something" + t.d->subTypes << QDBusType('v'); + return t; + } + + // treat it as a struct + t.d->code = DBUS_TYPE_STRUCT; + foreach (const QVariant& v, list) + t.d->subTypes << guessFromVariant(v, mode); + + return t; + } + else if (variant.type() == QVariant::Map) { + // investigate deeper + QDBusType t, t2, t3; + t2.d = new QDBusTypePrivate; + t2.d->code = DBUS_TYPE_DICT_ENTRY; + + // the key + t3.d = new QDBusTypePrivate; + t3.d->code = DBUS_TYPE_STRING; + t2.d->subTypes << t3; + + const QVariantMap map = variant.toMap(); + if (!map.isEmpty()) { + // check if all elements have the same type + QVariantMap::const_iterator it = map.constBegin(), + end = map.constEnd(); + QVariant::Type type = it.value().type(); + for ( ; it != end; ++it) + if (type != it.value().type()) { + // at least one is different + type = QVariant::Invalid; + break; + } + + if (type != QVariant::Invalid) + t2.d->subTypes << guessFromVariant(map.constBegin().value()); + else { + // multiple types + t3.d->code = DBUS_TYPE_VARIANT; + t2.d->subTypes << t3; + } + } + else { + // information lost + t3.d->code = DBUS_TYPE_VARIANT; + t2.d->subTypes << t3; + } + + t.d = new QDBusTypePrivate; + t.d->code = DBUS_TYPE_ARRAY; + t.d->subTypes << t2; + return t; + } + else + return QDBusType( QVariant::Type( variant.userType() ) ); +} + +/*! + \class QDBusTypeList + \brief A list of DBus types. + \internal + + Represents zero or more DBus types in sequence, such as those used in argument lists + or in subtypes of structs and maps. +*/ + +/*! + \fn QDBusTypeList::QDBusTypeList() + + Default constructor. + */ + +/*! + \fn QDBusTypeList::QDBusTypeList(const QDBusTypeList& other) + + Copy constructor: copies the type list from \a other. +*/ + +/*! + \fn QDBusTypeList::QDBusTypeList(const QList& other) + + Copy constructor: copies the type list from \a other. +*/ + +/*! + Constructs a type list by parsing the given \a signature. +*/ +QDBusTypeList::QDBusTypeList(const char* signature) +{ + if (!signature || !*signature) + return; // empty + + // validate it first + if ( !dbus_signature_validate(signature, 0) ) + return; + + // split it into components + DBusSignatureIter iter; + dbus_signature_iter_init(&iter, signature); + + do { + *this << QDBusType(&iter); + } while (dbus_signature_iter_next(&iter)); +} + +/*! + \internal + Constructs a type list by parsing the elements on this iterator level. +*/ +QDBusTypeList::QDBusTypeList(DBusSignatureIter* iter) +{ + do { + QDBusType item(iter); + if (!item.isValid()) { + clear(); + return; + } + + *this << item; + } while (dbus_signature_iter_next(iter)); +} + +/*! + Returns true if this type list can represent the inner components of a map. +*/ +bool QDBusTypeList::canBeMap() const +{ + return size() == 2 && at(0).isBasic(); +} + +/*! + Reconstructs the type signature that this type list represents. +*/ +QByteArray QDBusTypeList::dbusSignature() const +{ + QByteArray retval; + foreach (QDBusType t, *this) + retval += t.dbusSignature(); + return retval; +} diff --git a/qt/src/qdbustype_p.h b/qt/src/qdbustype_p.h new file mode 100644 index 00000000..b719960e --- /dev/null +++ b/qt/src/qdbustype_p.h @@ -0,0 +1,109 @@ +/* -*- C++ -*- + * + * Copyright (C) 2005 Thiago Macieira + * Copyright (C) 2006 Trolltech AS. All rights reserved. + * Author: Thiago Macieira + * + * Licensed under the Academic Free License version 2.1 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef QDBUSTYPE_H +#define QDBUSTYPE_H + +#include +#include +#include +#include +#include "qdbusmacros.h" +#include + +// forward declaration +class QDBusTypeList; + +class QDBusTypePrivate; +class QDBUS_EXPORT QDBusType +{ +public: + QDBusType(); + explicit QDBusType(int type); + explicit QDBusType(QVariant::Type type); + explicit QDBusType(const char* signature); + explicit QDBusType(DBusSignatureIter*); + explicit QDBusType(const QString& str); + explicit QDBusType(const QByteArray& str); + QDBusType(const QDBusType& other); + + ~QDBusType(); + + QDBusType& operator=(const QDBusType& other); + + int qvariantType() const; + + int dbusType() const; + QByteArray dbusSignature() const; + bool isValid() const; + bool isBasic() const; + bool isContainer() const; + + QDBusTypeList subTypes() const; + + bool isArray() const; + QDBusType arrayElement() const; + + bool isMap() const; + QDBusType mapKey() const; + QDBusType mapValue() const; + + bool operator==(const QDBusType& other) const; + inline bool operator!=(const QDBusType &other) const + { return !(*this == other); } + + static int qvariantType(int type); + static int qvariantType(const char* signature); + static int dbusType(QVariant::Type); + static const char* dbusSignature(QVariant::Type); + + enum VariantListMode { + ListIsArray, + ListIsStruct + }; + static QDBusType guessFromVariant(const QVariant &variant, VariantListMode = ListIsArray); + +private: + QSharedDataPointer d; +}; + +class QDBUS_EXPORT QDBusTypeList: public QList +{ +public: + inline QDBusTypeList() { } + inline QDBusTypeList(const QDBusTypeList& other) + : QList(other) + { } + inline QDBusTypeList(const QList& other) + : QList(other) + { } + QDBusTypeList(const char* signature); + QDBusTypeList(DBusSignatureIter*); + + bool canBeMap() const; + + QByteArray dbusSignature() const; +}; + +#endif // QDBUSTYPE_H diff --git a/qt/src/qdbustypehelper_p.h b/qt/src/qdbustypehelper_p.h new file mode 100644 index 00000000..7ebd7f3e --- /dev/null +++ b/qt/src/qdbustypehelper_p.h @@ -0,0 +1,231 @@ +/* qdbuslisthelper_p.h Helper class to convert to and from QVariantList + * + * Copyright (C) 2005 Harald Fernengel + * Copyright (C) 2006 Trolltech AS. All rights reserved. + * Author: Thiago Macieira + * + * Licensed under the Academic Free License version 2.1 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +// +// W A R N I N G +// ------------- +// +// This file is not part of the public API. This header file may +// change from version to version without notice, or even be +// removed. +// +// We mean it. +// +// + +#ifndef QDBUSTYPEHELPERPRIVATE_H +#define QDBUSTYPEHELPERPRIVATE_H + +#include +#include +#include + +// we're going to support all D-Bus primitive types here: +// uchar -- not needed: QByteArray +// bool +// short +// ushort +// int +// uint +// qlonglong +// qulonglong +// double +// QString -- not needed: QStringList +// QList -- not possible: will use QVariant +// QVariant +// QDBusStruct -- not yet existant +// QMap -- not possible: will use QVariant + +inline QDBUS_EXPORT int qDBusMetaTypeId(bool *) { return QVariant::Bool; } +inline QDBUS_EXPORT int qDBusMetaTypeId(uchar *) { return QMetaType::UChar; } +inline QDBUS_EXPORT int qDBusMetaTypeId(short *) { return QMetaType::Short; } +inline QDBUS_EXPORT int qDBusMetaTypeId(ushort *) { return QMetaType::UShort; } +inline QDBUS_EXPORT int qDBusMetaTypeId(int *) { return QVariant::Int; } +inline QDBUS_EXPORT int qDBusMetaTypeId(uint *) { return QVariant::UInt; } +inline QDBUS_EXPORT int qDBusMetaTypeId(qlonglong *) { return QVariant::LongLong; } +inline QDBUS_EXPORT int qDBusMetaTypeId(qulonglong *) { return QVariant::ULongLong; } +inline QDBUS_EXPORT int qDBusMetaTypeId(double *) { return QVariant::Double; } +inline QDBUS_EXPORT int qDBusMetaTypeId(QString *) { return QVariant::String; } +QDBUS_EXPORT int qDBusMetaTypeId(QVariant *); +QDBUS_EXPORT int qDBusMetaTypeId(QList *); +inline QDBUS_EXPORT int qDBusMetaTypeId(QByteArray *) { return QVariant::ByteArray; } +QDBUS_EXPORT int qDBusMetaTypeId(QList *); +QDBUS_EXPORT int qDBusMetaTypeId(QList *); +QDBUS_EXPORT int qDBusMetaTypeId(QList *); +QDBUS_EXPORT int qDBusMetaTypeId(QList *); +QDBUS_EXPORT int qDBusMetaTypeId(QList *); +QDBUS_EXPORT int qDBusMetaTypeId(QList *); +QDBUS_EXPORT int qDBusMetaTypeId(QList *); +inline QDBUS_EXPORT int qDBusMetaTypeId(QStringList *) { return QVariant::StringList; } +inline QDBUS_EXPORT int qDBusMetaTypeId(QVariantList *) { return QVariant::List; } +inline QDBUS_EXPORT int qDBusMetaTypeId(QVariantMap *) { return QVariant::Map; } + +// implement the copy mechanism +template +struct QDBusTypeHelper +{ + typedef T Type; + typedef QList List; + + static inline int id() + { + Type* t = 0; + return qDBusMetaTypeId(t); + } + + static inline int listId() + { + List *l = 0; + return qDBusMetaTypeId(l); + } + + static inline QVariant toVariant(const Type &t) + { + return QVariant(id(), &t); + } + + static bool canSpecialConvert(const QVariant &); + static Type specialConvert(const QVariant &); + + static inline Type fromVariant(const QVariant &v) + { + if (canSpecialConvert(v)) + return specialConvert(v); + + QVariant copy(v); + if (copy.convert( QVariant::Type(id()) )) + return *reinterpret_cast(copy.constData()); + return Type(); + } + + static inline QVariantList toVariantList(const List list) + { + QVariantList tmp; + Q_FOREACH (const Type &t, list) + tmp.append(toVariant(t)); + return tmp; + } + + static inline QVariantList toVariantList(const QVariant &v) + { + return toVariantList(QDBusTypeHelper::fromVariant(v)); + } + + static inline List fromVariantList(const QVariantList list) + { + List tmp; + Q_FOREACH (const QVariant &v, list) + tmp.append(fromVariant(v)); + return tmp; + } +}; + +template<> +struct QDBusTypeHelper +{ + static inline int id() + { + QVariant *t = 0; + return qDBusMetaTypeId(t); + } + + static inline int listId() + { + return QVariant::List; + } + + static inline QVariant toVariant(const QVariant &t) + { + return QVariant(id(), &t); + } + + static inline QVariant fromVariant(const QVariant &v) + { + if (v.userType() == id()) + return *reinterpret_cast(v.constData()); + return v; + } + + static inline QVariantList toVariantList(const QVariantList &list) + { + return list; + } + + static inline QVariantList fromVariantList(const QVariantList &list) + { + return list; + } +}; + +#if !defined(QT_NO_CAST_FROM_ASCII) && !defined(QT_NO_CAST_TO_ASCII) +template<> +struct QDBusTypeHelper +{ + static inline int id() + { return QVariant::String; } + + static inline QVariant toVariant(const char *t) + { return QVariant(t); } + + static inline QByteArray fromVariant(const QVariant &v) + { return v.toString().toAscii(); } +}; + +template<> +struct QDBusTypeHelper +{ + static inline int id() + { return QVariant::String; } + + static inline QVariant toVariant(const char *t) + { return QVariant(t); } + + static inline QByteArray fromVariant(const QVariant &v) + { return v.toString().toAscii(); } +}; +#endif + +// support three exceptions: uchar, short and ushort +// we have to do this as long as QVariant can't convert to/from the integer metatypes +template<> inline bool QDBusTypeHelper::canSpecialConvert(const QVariant &v) +{ return v.userType() < int(QVariant::UserType); } +template<> inline short QDBusTypeHelper::specialConvert(const QVariant &v) +{ return v.toInt(); } + +template<> inline bool QDBusTypeHelper::canSpecialConvert(const QVariant &v) +{ return v.userType() < int(QVariant::UserType); } +template<> inline ushort QDBusTypeHelper::specialConvert(const QVariant &v) +{ return v.toUInt(); } + +template<> inline bool QDBusTypeHelper::canSpecialConvert(const QVariant &v) +{ return v.userType() < int(QVariant::UserType); } +template<> inline uchar QDBusTypeHelper::specialConvert(const QVariant &v) +{ return v.toUInt(); } + +template inline bool QDBusTypeHelper::canSpecialConvert(const QVariant &) +{ return false; } +template inline T QDBusTypeHelper::specialConvert(const QVariant &) +{ return T(); } + +#endif diff --git a/qt/src/qdbusutil.cpp b/qt/src/qdbusutil.cpp new file mode 100644 index 00000000..872434c5 --- /dev/null +++ b/qt/src/qdbusutil.cpp @@ -0,0 +1,235 @@ +/* -*- C++ -*- + * + * Copyright (C) 2006 Trolltech AS. All rights reserved. + * Author: Thiago Macieira + * + * Licensed under the Academic Free License version 2.1 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "qdbusutil.h" + +#include + +#include +#include + +#include "qdbustype_p.h" + +/*! + \namespace QDBusUtil + The QDBusUtil namespace contains a few functions that are of general use when dealing with D-Bus + strings. +*/ +namespace QDBusUtil +{ + /*! + \fn QDBusUtil::isValidInterfaceName(const QString &ifaceName) + Returns true if this is \a ifaceName is a valid interface name. + + Valid interface names must: + \list + \o not be empty + \o not exceed 255 characters in length + \o be composed of dot-separated string components that contain only ASCII letters, digits + and the underscore ("_") character + \o contain at least two such components + \endlist + */ + bool isValidInterfaceName(const QString& ifaceName) + { + if (ifaceName.isEmpty() || ifaceName.length() > DBUS_MAXIMUM_NAME_LENGTH) + return false; + + QStringList parts = ifaceName.split(QLatin1Char('.')); + if (parts.count() < 2) + return false; // at least two parts + + foreach (QString part, parts) + if (!isValidMemberName(part)) + return false; + + return true; + } + + /*! + \fn QDBusUtil::isValidUniqueConnectionName(const QString &connName) + Returns true if \a connName is a valid unique connection name. + + Unique connection names start with a colon (":") and are followed by a list of dot-separated + components composed of ASCII letters, digits, the hypen or the underscore ("_") character. + */ + bool isValidUniqueConnectionName(const QString &connName) + { + if (connName.isEmpty() || connName.length() > DBUS_MAXIMUM_NAME_LENGTH || + !connName.startsWith(QLatin1Char(':'))) + return false; + + QStringList parts = connName.mid(1).split(QLatin1Char('.')); + if (parts.count() < 1) + return false; + + QRegExp regex(QLatin1String("[a-zA-Z0-9_-]+")); + foreach (QString part, parts) + if (!regex.exactMatch(part)) + return false; + + return true; + } + + /*! + \fn QDBusUtil::isValidBusName(const QString &busName) + Returns true if \a busName is a valid bus name. + + A valid bus name is either a valid unique connection name or follows the rules: + \list + \o is not empty + \o does not exceed 255 characters in length + \o be composed of dot-separated string components that contain only ASCII letters, digits, + hyphens or underscores ("_"), but don't start with a digit + \o contains at least two such elements + \endlist + + \sa isValidUniqueConnectionName() + */ + bool isValidBusName(const QString &busName) + { + if (busName.isEmpty() || busName.length() > DBUS_MAXIMUM_NAME_LENGTH) + return false; + + if (busName.startsWith(QLatin1Char(':'))) + return isValidUniqueConnectionName(busName); + + QStringList parts = busName.split(QLatin1Char('.')); + if (parts.count() < 1) + return false; + + QRegExp regex(QLatin1String("[a-zA-Z_-][a-zA-Z0-9_-]*")); + foreach (QString part, parts) + if (!regex.exactMatch(part)) + return false; + + return true; + } + + /*! + \fn QDBusUtil::isValidMemberName(const QString &memberName) + Returns true if \a memberName is a valid member name. A valid member name does not exceed + 255 characters in length, is not empty, is composed only of ASCII letters, digits and + underscores, but does not start with a digit. + */ + bool isValidMemberName(const QString &memberName) + { + if (memberName.isEmpty() || memberName.length() > DBUS_MAXIMUM_NAME_LENGTH) + return false; + + QRegExp regex(QLatin1String("[a-zA-Z_][a-zA-Z0-9_]+")); + return regex.exactMatch(memberName); + } + + /*! + \fn QDBusUtil::isValidErrorName(const QString &errorName) + Returns true if \a errorName is a valid error name. Valid error names are valid interface + names and vice-versa, so this function is actually an alias for isValidInterfaceName. + */ + bool isValidErrorName(const QString &errorName) + { + return isValidInterfaceName(errorName); + } + + /*! + \fn QDBusUtil::isValidObjectPath(const QString &path) + Returns true if \a path is valid object path. + + Valid object paths follow the rules: + \list + \o start with the slash character ("/") + \o do not end in a slash, unless the path is just the initial slash + \o do not contain any two slashes in sequence + \o contain slash-separated parts, each of which is composed of ASCII letters, digits and + underscores ("_") + \endlist + */ + bool isValidObjectPath(const QString &path) + { + if (path == QLatin1String("/")) + return true; + + if (!path.startsWith(QLatin1Char('/')) || path.indexOf(QLatin1String("//")) != -1 || + path.endsWith(QLatin1Char('/'))) + return false; + + QStringList parts = path.split(QLatin1Char('/')); + Q_ASSERT(parts.count() >= 1); + parts.removeFirst(); // it starts with /, so we get an empty first part + + QRegExp regex(QLatin1String("[a-zA-Z0-9_]+")); + foreach (QString part, parts) + if (!regex.exactMatch(part)) + return false; + + return true; + } + + /*! + \fn QDBusUtil::isValidSignature(const QString &signature) + Returns true if \a signature is a valid D-Bus type signature for one or more types. + This function returns true if it can all of \a signature into valid, individual types and no + characters remain in \a signature. + + \sa isValidSingleSignature() + */ + bool isValidSignature(const QString &signature) + { + return dbus_signature_validate(signature.toUtf8(), 0); + } + + /*! + \fn QDBusUtil::isValidSingleSignature(const QString &signature) + Returns true if \a signature is a valid D-Bus type signature for exactly one full type. This + function tries to convert the type signature into a D-Bus type and, if it succeeds and no + characters remain in the signature, it returns true. + */ + bool isValidSingleSignature(const QString &signature) + { + return dbus_signature_validate_single(signature.toUtf8(), 0); + } + + /*! + \fn QDBusUtil::signatureToType(const QString &signature) + Returns the Qt meta type id for the given D-Bus signature for exactly one full type, given + by \a signature. + + \sa isValidSingleSignature(), typeToSignature(), QVariant::type(), QVariant::userType() + */ + QVariant::Type signatureToType(const QString &signature) + { + return QVariant::Type( QDBusType::qvariantType(signature.toLatin1().constData()) ); + } + + /*! + \fn QDBusUtil::typeToSignature(QVariant::Type type) + Returns the D-Bus signature equivalent to the supplied meta type id \a type. + + \sa isValidSingleSignature(), signatureToType(), QVariant::type(), QVariant::userType() + */ + const char *typeToSignature(QVariant::Type type) + { + return QDBusType::dbusSignature( type ); + } + +} // namespace QDBusUtil diff --git a/qt/src/qdbusutil.h b/qt/src/qdbusutil.h new file mode 100644 index 00000000..dd2b4df9 --- /dev/null +++ b/qt/src/qdbusutil.h @@ -0,0 +1,55 @@ +/* -*- C++ -*- + * + * Copyright (C) 2006 Trolltech AS. All rights reserved. + * Author: Thiago Macieira + * + * Licensed under the Academic Free License version 2.1 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef QDBUSUTIL_H +#define QDBUSUTIL_H + +#include +#include + +#include "qdbusmacros.h" + +namespace QDBusUtil +{ + QDBUS_EXPORT bool isValidInterfaceName(const QString &ifaceName); + + QDBUS_EXPORT bool isValidUniqueConnectionName(const QString &busName); + + QDBUS_EXPORT bool isValidBusName(const QString &busName); + + QDBUS_EXPORT bool isValidMemberName(const QString &memberName); + + QDBUS_EXPORT bool isValidErrorName(const QString &errorName); + + QDBUS_EXPORT bool isValidObjectPath(const QString &path); + + QDBUS_EXPORT bool isValidSignature(const QString &signature); + + QDBUS_EXPORT bool isValidSingleSignature(const QString &signature); + + QDBUS_EXPORT QVariant::Type signatureToType(const QString &signature); + + QDBUS_EXPORT const char *typeToSignature(QVariant::Type type); +} + +#endif diff --git a/qt/src/qdbusxmlgenerator.cpp b/qt/src/qdbusxmlgenerator.cpp new file mode 100644 index 00000000..cbd5388b --- /dev/null +++ b/qt/src/qdbusxmlgenerator.cpp @@ -0,0 +1,194 @@ +/* -*- mode: C++ -*- + * + * Copyright (C) 2006 Trolltech AS. All rights reserved. + * Author: Thiago Macieira + * + * Licensed under the Academic Free License version 2.1 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include +#include +#include + +#include "qdbusinterface_p.h" // for ANNOTATION_NO_WAIT +#include "qdbusabstractadaptor_p.h" // for QCLASSINFO_DBUS_* +#include "qdbusconnection_p.h" // for the flags +#include "qdbusutil.h" + +extern QDBUS_EXPORT QString qDBusGenerateMetaObjectXml(QString interface, const QMetaObject *mo, + const QMetaObject *base, int flags); + +// implement the D-Bus org.freedesktop.DBus.Introspectable interface +// we do that by analysing the metaObject of all the adaptor interfaces + +static QString generateInterfaceXml(const QMetaObject *mo, int flags, int methodOffset, int propOffset) +{ + QString retval; + + // start with properties: + if (flags & QDBusConnection::ExportProperties) { + for (int i = propOffset; i < mo->propertyCount(); ++i) { + static const char *accessvalues[] = {0, "read", "write", "readwrite"}; + + QMetaProperty mp = mo->property(i); + + if (!mp.isScriptable() && (flags & QDBusConnection::ExportAllProperties) != + QDBusConnection::ExportAllProperties) + continue; + + int access = 0; + if (mp.isReadable()) + access |= 1; + if (mp.isWritable()) + access |= 2; + + int typeId = qDBusNameToTypeId(mp.typeName()); + if (!typeId) + continue; + + retval += QString(QLatin1String(" \n")) + .arg(mp.name()) + .arg(QLatin1String( QDBusUtil::typeToSignature( QVariant::Type(typeId) ))) + .arg(QLatin1String( accessvalues[access] )); + } + } + + // now add methods: + for (int i = methodOffset; i < mo->methodCount(); ++i) { + QMetaMethod mm = mo->method(i); + QByteArray signature = mm.signature(); + int paren = signature.indexOf('('); + + bool isSignal; + if (mm.methodType() == QMetaMethod::Signal) + // adding a signal + isSignal = true; + else if (mm.methodType() == QMetaMethod::Slot && mm.access() == QMetaMethod::Public) + isSignal = false; + else + continue; // neither signal nor public slot + + if ((isSignal && !(flags & QDBusConnection::ExportSignals)) || + (!isSignal && !(flags & QDBusConnection::ExportSlots))) + continue; + + QString xml = QString(QLatin1String(" <%1 name=\"%2\">\n")) + .arg(isSignal ? QLatin1String("signal") : QLatin1String("method")) + .arg(QLatin1String(signature.left(paren))); + + // check the return type first + int typeId = qDBusNameToTypeId(mm.typeName()); + if (typeId) + xml += QString(QLatin1String(" \n")) + .arg(QLatin1String(QDBusUtil::typeToSignature( QVariant::Type(typeId) ))); + else if (*mm.typeName()) + continue; // wasn't a valid type + + QList names = mm.parameterNames(); + QList types; + int inputCount = qDBusParametersForMethod(mm, types); + if (inputCount == -1) + continue; // invalid form + if (isSignal && inputCount + 1 != types.count()) + continue; // signal with output arguments? + if (isSignal && types.at(inputCount) == QDBusConnectionPrivate::messageMetaType) + continue; // signal with QDBusMessage argument? + + int j; + bool isScriptable = mm.attributes() & QMetaMethod::Scriptable; + for (j = 1; j < types.count(); ++j) { + // input parameter for a slot or output for a signal + if (types.at(j) == QDBusConnectionPrivate::messageMetaType) { + isScriptable = true; + continue; + } + + QString name; + if (!names.at(j - 1).isEmpty()) + name = QString(QLatin1String("name=\"%1\" ")).arg(QLatin1String(names.at(j - 1))); + + bool isOutput = isSignal || j > inputCount; + + xml += QString(QLatin1String(" \n")) + .arg(name) + .arg(QLatin1String(QDBusUtil::typeToSignature( QVariant::Type(types.at(j)) ))) + .arg(isOutput ? QLatin1String("out") : QLatin1String("in")); + } + + if (!isScriptable) { + // check if this was added by other means + if (isSignal && (flags & QDBusConnection::ExportAllSignals) != QDBusConnection::ExportAllSignals) + continue; + if (!isSignal && (flags & QDBusConnection::ExportAllSlots) != QDBusConnection::ExportAllSlots) + continue; + } + + if (qDBusCheckAsyncTag(mm.tag())) + // add the no-reply annotation + xml += QLatin1String(" \n"); + + retval += xml; + retval += QString(QLatin1String(" \n")) + .arg(isSignal ? QLatin1String("signal") : QLatin1String("method")); + } + + return retval; +} + +QString qDBusGenerateMetaObjectXml(QString interface, const QMetaObject *mo, const QMetaObject *base, + int flags) +{ + if (interface.isEmpty()) { + // generate the interface name from the meta object + int idx = mo->indexOfClassInfo(QCLASSINFO_DBUS_INTERFACE); + if (idx >= mo->classInfoOffset()) { + interface = QLatin1String(mo->classInfo(idx).value()); + } else { + interface = QLatin1String(mo->className()); + interface.replace(QLatin1String("::"), QLatin1String(".")); + + if (interface.startsWith( QLatin1String("QDBus") )) { + interface.prepend( QLatin1String("com.trolltech.QtDBus.") ); + } else if (interface.startsWith( QLatin1Char('Q') )) { + // assume it's Qt + interface.prepend( QLatin1String("com.trolltech.Qt.") ); + } else if (!QCoreApplication::instance() || + QCoreApplication::instance()->applicationName().isEmpty()) { + interface.prepend( QLatin1String("local.") ); + } else { + interface.prepend(QLatin1Char('.')).prepend( QCoreApplication::instance()->applicationName() ); + QStringList domainName = QCoreApplication::instance()->organizationDomain().split(QLatin1Char('.')); + foreach (const QString &part, domainName) + interface.prepend(QLatin1Char('.')).prepend(part); + } + } + } + + QString xml; + int idx = mo->indexOfClassInfo(QCLASSINFO_DBUS_INTROSPECTION); + if (idx >= mo->classInfoOffset()) + return QString::fromUtf8(mo->classInfo(idx).value()); + else + xml = generateInterfaceXml(mo, flags, base->methodCount(), base->propertyCount()); + + if (xml.isEmpty()) + return QString(); // don't add an empty interface + return QString(QLatin1String(" \n%2 \n")) + .arg(interface, xml); +} diff --git a/qt/src/qdbusxmlparser.cpp b/qt/src/qdbusxmlparser.cpp new file mode 100644 index 00000000..0370cb23 --- /dev/null +++ b/qt/src/qdbusxmlparser.cpp @@ -0,0 +1,308 @@ +/* -*- C++ -*- + * + * Copyright (C) 2005 Thiago Macieira + * Copyright (C) 2006 Trolltech AS. All rights reserved. + * Author: Thiago Macieira + * + * Licensed under the Academic Free License version 2.1 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "qdbusxmlparser_p.h" +#include "qdbusinterface.h" +#include "qdbusinterface_p.h" +#include "qdbusconnection_p.h" +#include "qdbusutil.h" + +#include +#include +#include +#include + +static QDBusIntrospection::Annotations +parseAnnotations(const QDomElement& elem) +{ + QDBusIntrospection::Annotations retval; + QDomNodeList list = elem.elementsByTagName(QLatin1String("annotation")); + for (int i = 0; i < list.count(); ++i) + { + QDomElement ann = list.item(i).toElement(); + if (ann.isNull()) + continue; + + QString name = ann.attribute(QLatin1String("name")), + value = ann.attribute(QLatin1String("value")); + + if (name.isEmpty()) + continue; + + retval.insert(name, value); + } + + return retval; +} + +static QDBusIntrospection::Arguments +parseArgs(const QDomElement& elem, const QLatin1String& direction, bool acceptEmpty = false) +{ + QDBusIntrospection::Arguments retval; + QDomNodeList list = elem.elementsByTagName(QLatin1String("arg")); + for (int i = 0; i < list.count(); ++i) + { + QDomElement arg = list.item(i).toElement(); + if (arg.isNull()) + continue; + + if ((acceptEmpty && !arg.hasAttribute(QLatin1String("direction"))) || + arg.attribute(QLatin1String("direction")) == direction) { + + QDBusIntrospection::Argument argData; + if (arg.hasAttribute(QLatin1String("name"))) + argData.name = arg.attribute(QLatin1String("name")); // can be empty + argData.type = arg.attribute(QLatin1String("type")); + if (!QDBusUtil::isValidSingleSignature(argData.type)) + continue; + + retval << argData; + } + } + return retval; +} + +QDBusXmlParser::QDBusXmlParser(const QString& service, const QString& path, + const QString& xmlData) + : m_service(service), m_path(path) +{ + QDomDocument doc; + doc.setContent(xmlData); + m_node = doc.firstChildElement(QLatin1String("node")); +} + +QDBusXmlParser::QDBusXmlParser(const QString& service, const QString& path, + const QDomElement& node) + : m_service(service), m_path(path), m_node(node) +{ +} + +QDBusIntrospection::Interfaces +QDBusXmlParser::interfaces() const +{ + QDBusIntrospection::Interfaces retval; + + if (m_node.isNull()) + return retval; + + QDomNodeList interfaces = m_node.elementsByTagName(QLatin1String("interface")); + for (int i = 0; i < interfaces.count(); ++i) + { + QDomElement iface = interfaces.item(i).toElement(); + QString ifaceName = iface.attribute(QLatin1String("name")); + if (iface.isNull() || ifaceName.isEmpty()) + continue; // for whatever reason + + QDBusIntrospection::Interface *ifaceData = new QDBusIntrospection::Interface; + ifaceData->name = ifaceName; + { + // save the data + QTextStream ts(&ifaceData->introspection); + iface.save(ts,2); + } + + // parse annotations + ifaceData->annotations = parseAnnotations(iface); + + // parse methods + QDomNodeList list = iface.elementsByTagName(QLatin1String("method")); + for (int j = 0; j < list.count(); ++j) + { + QDomElement method = list.item(j).toElement(); + QString methodName = method.attribute(QLatin1String("name")); + if (method.isNull() || methodName.isEmpty()) + continue; + + QDBusIntrospection::Method methodData; + methodData.name = methodName; + + // parse arguments + methodData.inputArgs = parseArgs(method, QLatin1String("in")); + methodData.outputArgs = parseArgs(method, QLatin1String("out")); + methodData.annotations = parseAnnotations(method); + + // add it + ifaceData->methods.insert(methodName, methodData); + } + + // parse signals + list = iface.elementsByTagName(QLatin1String("signal")); + for (int j = 0; j < list.count(); ++j) + { + QDomElement signal = list.item(j).toElement(); + QString signalName = signal.attribute(QLatin1String("name")); + if (signal.isNull() || signalName.isEmpty()) + continue; + + QDBusIntrospection::Signal signalData; + signalData.name = signalName; + + // parse data + signalData.outputArgs = parseArgs(signal, QLatin1String("out"), true); + signalData.annotations = parseAnnotations(signal); + + // add it + ifaceData->signals_.insert(signalName, signalData); + } + + // parse properties + list = iface.elementsByTagName(QLatin1String("property")); + for (int j = 0; j < list.count(); ++j) + { + QDomElement property = list.item(j).toElement(); + QString propertyName = property.attribute(QLatin1String("name")); + if (property.isNull() || propertyName.isEmpty()) + continue; + + QDBusIntrospection::Property propertyData; + + // parse data + propertyData.name = propertyName; + propertyData.type = property.attribute(QLatin1String("type")); + propertyData.annotations = parseAnnotations(property); + + if (!QDBusUtil::isValidSingleSignature(propertyData.type)) + // cannot be! + continue; + + QString access = property.attribute(QLatin1String("access")); + if (access.isEmpty()) + // can't be empty either! + continue; + else if (access == QLatin1String("read")) + propertyData.access = QDBusIntrospection::Property::Read; + else if (access == QLatin1String("write")) + propertyData.access = QDBusIntrospection::Property::Write; + else if (access == QLatin1String("readwrite")) + propertyData.access = QDBusIntrospection::Property::ReadWrite; + else + continue; // invalid one! + + // add it + ifaceData->properties.insert(propertyName, propertyData); + } + + // add it + retval.insert(ifaceName, QSharedDataPointer(ifaceData)); + } + + return retval; +} + +QSharedDataPointer +QDBusXmlParser::object() const +{ + if (m_node.isNull()) + return QSharedDataPointer(); + + QDBusIntrospection::Object* objData; + objData = new QDBusIntrospection::Object; + objData->service = m_service; + objData->path = m_path; + + // check if we have anything to process + if (objData->introspection.isNull() && !m_node.firstChild().isNull()) { + // yes, introspect this object + QTextStream ts(&objData->introspection); + m_node.save(ts,2); + + QDomNodeList objects = m_node.elementsByTagName(QLatin1String("node")); + for (int i = 0; i < objects.count(); ++i) { + QDomElement obj = objects.item(i).toElement(); + QString objName = obj.attribute(QLatin1String("name")); + if (obj.isNull() || objName.isEmpty()) + continue; // for whatever reason + + objData->childObjects.append(objName); + } + + QDomNodeList interfaces = m_node.elementsByTagName(QLatin1String("interface")); + for (int i = 0; i < interfaces.count(); ++i) { + QDomElement iface = interfaces.item(i).toElement(); + QString ifaceName = iface.attribute(QLatin1String("name")); + if (iface.isNull() || ifaceName.isEmpty()) + continue; + + objData->interfaces.append(ifaceName); + } + } else { + objData->introspection = QLatin1String("\n"); + } + + QSharedDataPointer retval; + retval = objData; + return retval; +} + +QSharedDataPointer +QDBusXmlParser::objectTree() const +{ + QSharedDataPointer retval; + + if (m_node.isNull()) + return retval; + + retval = new QDBusIntrospection::ObjectTree; + + retval->service = m_service; + retval->path = m_path; + + QTextStream ts(&retval->introspection); + m_node.save(ts,2); + + // interfaces are easy: + retval->interfaceData = interfaces(); + retval->interfaces = retval->interfaceData.keys(); + + // sub-objects are slightly more difficult: + QDomNodeList objects = m_node.elementsByTagName(QLatin1String("node")); + for (int i = 0; i < objects.count(); ++i) { + QDomElement obj = objects.item(i).toElement(); + QString objName = obj.attribute(QLatin1String("name")); + if (obj.isNull() || objName.isEmpty()) + continue; // for whatever reason + + // check if we have anything to process + if (!obj.firstChild().isNull()) { + // yes, introspect this object + QString xml; + QTextStream ts(&xml); + obj.save(ts,0); + + // parse it + QString objAbsName = m_path; + if (!objAbsName.endsWith(QLatin1Char('/'))) + objAbsName.append(QLatin1Char('/')); + objAbsName += objName; + + QDBusXmlParser parser(m_service, objAbsName, obj); + retval->childObjectData.insert(objName, parser.objectTree()); + } + + retval->childObjects << objName; + } + + return QSharedDataPointer( retval ); +} + diff --git a/qt/src/qdbusxmlparser_p.h b/qt/src/qdbusxmlparser_p.h new file mode 100644 index 00000000..8f4f69b1 --- /dev/null +++ b/qt/src/qdbusxmlparser_p.h @@ -0,0 +1,53 @@ +/* -*- C++ -*- + * + * Copyright (C) 2005 Thiago Macieira + * Copyright (C) 2006 Trolltech AS. All rights reserved. + * Author: Thiago Macieira + * + * Licensed under the Academic Free License version 2.1 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef QDBUSXMLPARSER_H +#define QDBUSXMLPARSER_H + +#include +#include +#include "qdbusmacros.h" +#include "qdbusintrospection_p.h" + +/*! + \internal +*/ +class QDBusXmlParser +{ + QString m_service; + QString m_path; + QDomElement m_node; + +public: + QDBusXmlParser(const QString& service, const QString& path, + const QString& xmlData); + QDBusXmlParser(const QString& service, const QString& path, + const QDomElement& node); + + QDBusIntrospection::Interfaces interfaces() const; + QSharedDataPointer object() const; + QSharedDataPointer objectTree() const; +}; + +#endif diff --git a/qt/tools/.cvsignore b/qt/tools/.cvsignore new file mode 100644 index 00000000..f6454f28 --- /dev/null +++ b/qt/tools/.cvsignore @@ -0,0 +1,11 @@ +.deps +.libs +Makefile +Makefile.in +*.lo +*.la +*.bb +*.bbg +*.da +*.gcov +*.moc diff --git a/qt/tools/Makefile.am b/qt/tools/Makefile.am new file mode 100644 index 00000000..a79aafd6 --- /dev/null +++ b/qt/tools/Makefile.am @@ -0,0 +1,10 @@ +INCLUDES=-I$(top_srcdir)/qt $(DBUS_CLIENT_CFLAGS) $(DBUS_QT_CFLAGS) -DDBUS_COMPILATION +bin_PROGRAMS = dbusidl2cpp dbuscpp2xml + +dbusidl2cpp_SOURCES = dbusidl2cpp.cpp +dbusidl2cpp_LDFLAGS = -no-undefined +dbusidl2cpp_LDADD = $(DBUS_QT_LIBS) ../src/libdbus-qt4-1.la + +dbuscpp2xml_SOURCES = dbuscpp2xml.cpp +dbuscpp2xml_LDFLAGS = -no-undefined +dbuscpp2xml_LDADD = $(DBUS_QT_LIBS) ../src/libdbus-qt4-1.la diff --git a/qt/tools/dbuscpp2xml.cpp b/qt/tools/dbuscpp2xml.cpp new file mode 100644 index 00000000..dd08b5fd --- /dev/null +++ b/qt/tools/dbuscpp2xml.cpp @@ -0,0 +1,409 @@ +/* -*- C++ -*- + * + * Copyright (C) 2006 Trolltech AS. All rights reserved. + * Author: Thiago Macieira + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "../src/qdbusconnection.h" // for the Export* flags + +// copied from dbus-protocol.h: +static const char docTypeHeader[] = + "\n"; + +// in qdbusxmlgenerator.cpp +extern QDBUS_EXPORT QString qDBusGenerateMetaObjectXml(QString interface, const QMetaObject *mo, + const QMetaObject *base, int flags); + +#define PROGRAMNAME "dbuscpp2xml" +#define PROGRAMVERSION "0.1" +#define PROGRAMCOPYRIGHT "Copyright (C) 2006 Trolltech AS. All rights reserved." + +static const char cmdlineOptions[] = "psmaPSMAo:hV"; +static const char *outputFile; +static int flags; + +static const char help[] = + "Usage: " PROGRAMNAME " [options...] [files...]\n" + "Parses the C++ source or header file containing a QObject-derived class and\n" + "produces the D-Bus Introspection XML." + "\n" + "Options:\n" + " -p|-s|-m Only parse scriptable Properties, Signals and Methods (slots)\n" + " -P|-S|-M Parse all Properties, Signals and Methods (slots)\n" + " -a Output all scriptable contents (equivalent to -psm)\n" + " -A Output all contents (equivalent to -PSM)\n" + " -o Write the output to file \n" + " -h Show this information\n" + " -V Show the program version and quit.\n" + "\n"; + +class MocParser +{ + void parseError(); + QByteArray readLine(); + void loadIntData(uint *&data); + void loadStringData(char *&stringdata); + + QIODevice *input; + const char *filename; + int line; +public: + ~MocParser(); + void parse(const char *filename, QIODevice *input, int lineNumber = 0); + + QList objects; +}; + +void MocParser::parseError() +{ + fprintf(stderr, PROGRAMNAME ": error parsing input file '%s' line %d \n", filename, line); + exit(1); +} + +QByteArray MocParser::readLine() +{ + ++line; + return input->readLine(); +} + +void MocParser::loadIntData(uint *&data) +{ + data = 0; // initialise + QVarLengthArray array; + QRegExp rx("(\\d+|0x[0-9abcdef]+)", Qt::CaseInsensitive); + + while (!input->atEnd()) { + QString line = QLatin1String(readLine()); + int pos = line.indexOf("//"); + if (pos != -1) + line.truncate(pos); // drop comments + + if (line == "};\n") { + // end of data + data = new uint[array.count()]; + memcpy(data, array.data(), array.count() * sizeof(*data)); + return; + } + + pos = 0; + while ((pos = rx.indexIn(line, pos)) != -1) { + QString num = rx.cap(1); + if (num.startsWith("0x")) + array.append(num.mid(2).toUInt(0, 16)); + else + array.append(num.toUInt()); + pos += rx.matchedLength(); + } + } + + parseError(); +} + +void MocParser::loadStringData(char *&stringdata) +{ + stringdata = 0; + QVarLengthArray array; + + while (!input->atEnd()) { + QByteArray line = readLine(); + if (line == "};\n") { + // end of data + stringdata = new char[array.count()]; + memcpy(stringdata, array.data(), array.count() * sizeof(*stringdata)); + return; + } + + int start = line.indexOf('"'); + if (start == -1) + parseError(); + + int len = line.length() - 1; + line.truncate(len); // drop ending \n + if (line.at(len - 1) != '"') + parseError(); + + --len; + ++start; + for ( ; start < len; ++start) + if (line.at(start) == '\\') { + // parse escaped sequence + ++start; + if (start == len) + parseError(); + + QChar c(QLatin1Char(line.at(start))); + if (!c.isDigit()) { + switch (c.toLatin1()) { + case 'a': + array.append('\a'); + break; + case 'b': + array.append('\b'); + break; + case 'f': + array.append('\f'); + break; + case 'n': + array.append('\n'); + break; + case 'r': + array.append('\r'); + break; + case 't': + array.append('\t'); + break; + case 'v': + array.append('\v'); + break; + case '\\': + case '?': + case '\'': + case '"': + array.append(c.toLatin1()); + break; + + case 'x': + if (start + 2 <= len) + parseError(); + array.append(char(line.mid(start + 1, 2).toInt(0, 16))); + break; + + default: + array.append(c.toLatin1()); + fprintf(stderr, PROGRAMNAME ": warning: invalid escape sequence '\\%c' found in input", + c.toLatin1()); + } + } else { + // octal + QRegExp octal("([0-7]+)"); + if (octal.indexIn(QLatin1String(line), start) == -1) + parseError(); + array.append(char(octal.cap(1).toInt(0, 8))); + } + } else { + array.append(line.at(start)); + } + } + + parseError(); +} + +void MocParser::parse(const char *fname, QIODevice *io, int lineNumber) +{ + filename = fname; + input = io; + line = lineNumber; + + while (!input->atEnd()) { + QByteArray line = readLine(); + if (line.startsWith("static const uint qt_meta_data_")) { + // start of new class data + uint *data; + loadIntData(data); + + // find the start of the string data + do { + line = readLine(); + if (input->atEnd()) + parseError(); + } while (!line.startsWith("static const char qt_meta_stringdata_")); + + char *stringdata; + loadStringData(stringdata); + + QMetaObject mo; + mo.d.superdata = &QObject::staticMetaObject; + mo.d.stringdata = stringdata; + mo.d.data = data; + mo.d.extradata = 0; + objects.append(mo); + } + } + + fname = 0; + input = 0; +} + +MocParser::~MocParser() +{ + foreach (QMetaObject mo, objects) { + delete const_cast(mo.d.stringdata); + delete const_cast(mo.d.data); + } +} + +static void showHelp() +{ + printf("%s", help); + exit(0); +} + +static void showVersion() +{ + printf("%s version %s\n", PROGRAMNAME, PROGRAMVERSION); + printf("D-Bus QObject-to-XML converter\n"); + exit(0); +} + +static void parseCmdLine(int argc, char **argv) +{ + int c; + opterr = true; + while ((c = getopt(argc, argv, cmdlineOptions)) != -1) + switch (c) + { + case 'p': + flags |= QDBusConnection::ExportProperties; + break; + + case 's': + flags |= QDBusConnection::ExportSignals; + break; + + case 'm': + flags |= QDBusConnection::ExportSlots; + break; + + case 'a': + flags |= QDBusConnection::ExportContents; + break; + + case 'P': + flags |= QDBusConnection::ExportAllProperties; + break; + + case 'S': + flags |= QDBusConnection::ExportAllSignals; + break; + + case 'M': + flags |= QDBusConnection::ExportAllSlots; + break; + + case 'A': + flags |= QDBusConnection::ExportAllContents; + break; + + case 'o': + outputFile = optarg; + break; + + case 'h': + showHelp(); + break; + + case 'V': + showVersion(); + break; + + case '?': + exit(1); + default: + abort(); + } + + if (flags == 0) + flags = QDBusConnection::ExportAllContents; +} + +int main(int argc, char **argv) +{ + MocParser parser; + parseCmdLine(argc, argv); + + for (int i = optind; i < argc; ++i) { + FILE *in = fopen(argv[i], "r"); + if (in == 0) { + fprintf(stderr, PROGRAMNAME ": could not open '%s': %s\n", + argv[i], strerror(errno)); + return 1; + } + + QFile f; + f.open(in, QIODevice::ReadOnly); + f.readLine(); + + QByteArray line = f.readLine(); + if (line.contains("Meta object code from reading C++ file")) + // this is a moc-generated file + parser.parse(argv[i], &f, 3); + else { + // run moc on this file + QProcess proc; + proc.start("moc", QStringList() << QFile::encodeName(argv[i])); + + if (!proc.waitForStarted()) { + fprintf(stderr, PROGRAMNAME ": could not execute moc! Aborting.\n"); + return 1; + } + + proc.closeWriteChannel(); + + if (!proc.waitForFinished() || proc.exitStatus() != QProcess::NormalExit || + proc.exitCode() != 0) { + // output the moc errors: + fprintf(stderr, "%s", proc.readAllStandardError().constData()); + fprintf(stderr, PROGRAMNAME ": exit code %d from moc. Aborting\n", proc.exitCode()); + return 1; + } + fprintf(stderr, "%s", proc.readAllStandardError().constData()); + + parser.parse(argv[i], &proc, 1); + } + + f.close(); + fclose(in); + } + + FILE *output = stdout; + if (outputFile != 0) { + output = fopen(outputFile, "w"); + if (output == 0) { + fprintf(stderr, PROGRAMNAME ": could not open output file '%s': %s", + outputFile, strerror(errno)); + return 1; + } + } + + fprintf(output, "%s\n", docTypeHeader); + foreach (QMetaObject mo, parser.objects) { + QString xml = qDBusGenerateMetaObjectXml(QString(), &mo, &QObject::staticMetaObject, + flags); + fprintf(output, "%s", qPrintable(xml)); + } + fprintf(output, "\n"); + + if (output != stdout) + fclose(output); +} + diff --git a/qt/tools/dbusidl2cpp.cpp b/qt/tools/dbusidl2cpp.cpp new file mode 100644 index 00000000..091685b4 --- /dev/null +++ b/qt/tools/dbusidl2cpp.cpp @@ -0,0 +1,960 @@ +/* -*- C++ -*- + * + * Copyright (C) 2006 Trolltech AS. All rights reserved. + * Author: Thiago Macieira + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include "../src/qdbusmetaobject_p.h" +#include "../src/qdbusintrospection_p.h" + +#define PROGRAMNAME "dbusidl2cpp" +#define PROGRAMVERSION "0.4" +#define PROGRAMCOPYRIGHT "Copyright (C) 2006 Trolltech AS. All rights reserved." + +#define ANNOTATION_NO_WAIT "org.freedesktop.DBus.Method.NoReply" + +static const char cmdlineOptions[] = "a:c:hmNp:vV"; +static const char *globalClassName; +static const char *proxyFile; +static const char *adaptorFile; +static const char *inputFile; +static bool skipNamespaces; +static bool verbose; +static bool includeMocs; +static QStringList wantedInterfaces; + +static const char help[] = + "Usage: " PROGRAMNAME " [options...] [idl-or-xml-file] [interfaces...]\n" + "Produces the C++ code to implement the interfaces defined in the input file.\n" + "If no options are given, the code is written to the standard output.\n" + "\n" + "Options:\n" + " -a Write the adaptor code to \n" + " -c Use as the class name for the generated classes\n" + " -h Show this information\n" + " -m Generate #include \"filename.moc\" statements in the .cpp files\n" + " -N Don't use namespaces\n" + " -p Write the proxy code to \n" + " -v Be verbose.\n" + " -V Show the program version and quit.\n" + "\n" + "If the file name given to the options -a and -p does not end in .cpp or .h, the\n" + "program will automatically append the suffixes and produce both files.\n"; + +static const char includeList[] = + "#include \n" + "#include \n" + "#include \n" + "#include \n" + "#include \n" + "#include \n"; + +static const char forwardDeclarations[] = + "class QByteArray;\n" + "template class QList;\n" + "template class QMap;\n" + "class QString;\n" + "class QStringList;\n" + "class QVariant;\n"; + +static void showHelp() +{ + printf("%s", help); + exit(0); +} + +static void showVersion() +{ + printf("%s version %s\n", PROGRAMNAME, PROGRAMVERSION); + printf("D-Bus binding tool for Qt\n"); + exit(0); +} + +static void parseCmdLine(int argc, char **argv) +{ + int c; + opterr = true; + while ((c = getopt(argc, argv, cmdlineOptions)) != -1) + switch (c) + { + case 'a': + adaptorFile = optarg; + break; + + case 'c': + globalClassName = optarg; + break; + + case 'v': + verbose = true; + break; + + case 'm': + includeMocs = true; + break; + + case 'N': + skipNamespaces = true; + break; + + case 'h': + showHelp(); + break; + + case 'V': + showVersion(); + break; + + case 'p': + proxyFile = optarg; + break; + + case '?': + exit(1); + default: + abort(); + } + + if (optind != argc) + inputFile = argv[optind++]; + + while (optind != argc) + wantedInterfaces << QString::fromLocal8Bit(argv[optind++]); +} + +static QDBusIntrospection::Interfaces readInput() +{ + QFile input(QFile::decodeName(inputFile)); + if (inputFile && QLatin1String("-") != inputFile) + input.open(QIODevice::ReadOnly); + else + input.open(stdin, QIODevice::ReadOnly); + + QByteArray data = input.readAll(); + + // check if the input is already XML + data = data.trimmed(); + if (data.startsWith("") << endl + << " *" << endl + << " * " PROGRAMNAME " is " PROGRAMCOPYRIGHT << endl + << " *" << endl + << " * This is an auto-generated file." << endl; + + if (changesWillBeLost) + ts << " * Do not edit! All changes made to it will be lost." << endl; + + ts << " */" << endl + << endl; + + return ts; +} + +enum ClassType { Proxy, Adaptor }; +static QString classNameForInterface(const QString &interface, ClassType classType) +{ + if (globalClassName) + return QLatin1String(globalClassName); + + QStringList parts = interface.split('.'); + + QString retval; + if (classType == Proxy) + foreach (QString part, parts) { + part[0] = part[0].toUpper(); + retval += part; + } + else { + retval = parts.last(); + retval[0] = retval[0].toUpper(); + } + + if (classType == Proxy) + retval += "Interface"; + else + retval += "Adaptor"; + + return retval; +} + +static QByteArray qtTypeName(const QString &signature) +{ + QVariant::Type type = QDBusUtil::signatureToType(signature); + if (type == QVariant::Invalid) + qFatal("Got unknown type `%s'", qPrintable(signature)); + + return QVariant::typeToName(type); +} + +static QString nonConstRefArg(const QByteArray &arg) +{ + return QLatin1String(arg + " &"); +} + +static QString templateArg(const QByteArray &arg) +{ + if (!arg.endsWith('>')) + return QLatin1String(arg); + + return QLatin1String(arg + ' '); +} + +static QString constRefArg(const QByteArray &arg) +{ + if (!arg.startsWith('Q')) + return QLatin1String(arg + ' '); + else + return QString("const %1 &").arg( QLatin1String(arg) ); +} + +static QStringList makeArgNames(const QDBusIntrospection::Arguments &inputArgs, + const QDBusIntrospection::Arguments &outputArgs = + QDBusIntrospection::Arguments()) +{ + QStringList retval; + for (int i = 0; i < inputArgs.count(); ++i) { + const QDBusIntrospection::Argument &arg = inputArgs.at(i); + QString name = arg.name; + if (name.isEmpty()) + name = QString("in%1").arg(i); + while (retval.contains(name)) + name += "_"; + retval << name; + } + for (int i = 0; i < outputArgs.count(); ++i) { + const QDBusIntrospection::Argument &arg = outputArgs.at(i); + QString name = arg.name; + if (name.isEmpty()) + name = QString("out%1").arg(i); + while (retval.contains(name)) + name += "_"; + retval << name; + } + return retval; +} + +static void writeArgList(QTextStream &ts, const QStringList &argNames, + const QDBusIntrospection::Arguments &inputArgs, + const QDBusIntrospection::Arguments &outputArgs = QDBusIntrospection::Arguments()) +{ + // input args: + bool first = true; + int argPos = 0; + for (int i = 0; i < inputArgs.count(); ++i) { + const QDBusIntrospection::Argument &arg = inputArgs.at(i); + QString type = constRefArg(qtTypeName(arg.type)); + + if (!first) + ts << ", "; + ts << type << argNames.at(argPos++); + first = false; + } + + argPos++; + + // output args + // yes, starting from 1 + for (int i = 1; i < outputArgs.count(); ++i) { + const QDBusIntrospection::Argument &arg = outputArgs.at(i); + QString name = arg.name; + + if (!first) + ts << ", "; + ts << nonConstRefArg(qtTypeName(arg.type)) << argNames.at(argPos++); + first = false; + } +} + +static QString propertyGetter(const QDBusIntrospection::Property &property) +{ + QString getter = property.annotations.value("com.trolltech.QtDBus.propertyGetter"); + if (getter.isEmpty()) { + getter = property.name; + getter[0] = getter[0].toLower(); + } + return getter; +} + +static QString propertySetter(const QDBusIntrospection::Property &property) +{ + QString setter = property.annotations.value("com.trolltech.QtDBus.propertySetter"); + if (setter.isEmpty()) { + setter = "set" + property.name; + setter[3] = setter[3].toUpper(); + } + return setter; +} + +static QString stringify(const QString &data) +{ + QString retval; + int i; + for (i = 0; i < data.length(); ++i) { + retval += '\"'; + for ( ; i < data.length() && data[i] != QChar('\n'); ++i) + if (data[i] == '\"') + retval += "\\\""; + else + retval += data[i]; + retval += "\\n\"\n"; + } + return retval; +} + +static void writeProxy(const char *proxyFile, const QDBusIntrospection::Interfaces &interfaces) +{ + // open the file + QString headerName = header(proxyFile); + QFile file(headerName); + if (!headerName.isEmpty()) + file.open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text); + else + file.open(stdout, QIODevice::WriteOnly | QIODevice::Text); + QTextStream hs(&file); + + QString cppName = cpp(proxyFile); + QByteArray cppData; + QTextStream cs(&cppData); + + // write the header: + writeHeader(hs, true); + + // include guards: + QString includeGuard; + if (!headerName.isEmpty()) { + includeGuard = headerName.toUpper().replace(QChar('.'), QChar('_')); + int pos = includeGuard.lastIndexOf('/'); + if (pos != -1) + includeGuard = includeGuard.mid(pos + 1); + } else { + includeGuard = QString("QDBUSIDL2CPP_PROXY"); + } + includeGuard = QString("%1_%2%3") + .arg(includeGuard) + .arg(getpid()) + .arg(QDateTime::currentDateTime().toTime_t()); + hs << "#ifndef " << includeGuard << endl + << "#define " << includeGuard << endl + << endl; + + // include our stuff: + hs << "#include " << endl + << includeList + << "#include " << endl + << endl; + + if (cppName != headerName) { + writeHeader(cs, false); + cs << "#include \"" << headerName << "\"" << endl + << endl; + } + + foreach (const QDBusIntrospection::Interface *interface, interfaces) { + QString className = classNameForInterface(interface->name, Proxy); + + // comment: + hs << "/*" << endl + << " * Proxy class for interface " << interface->name << endl + << " */" << endl; + cs << "/*" << endl + << " * Implementation of interface class " << className << endl + << " */" << endl + << endl; + + // class header: + hs << "class " << className << ": public QDBusAbstractInterface" << endl + << "{" << endl + << " Q_OBJECT" << endl; + + // the interface name + hs << "public:" << endl + << " static inline const char *staticInterfaceName()" << endl + << " { return \"" << interface->name << "\"; }" << endl + << endl; + + // constructors/destructors: + hs << "public:" << endl + << " explicit " << className << "(QDBusAbstractInterfacePrivate *p);" << endl + << endl + << " ~" << className << "();" << endl + << endl; + cs << className << "::" << className << "(QDBusAbstractInterfacePrivate *p)" << endl + << " : QDBusAbstractInterface(p)" << endl + << "{" << endl + << "}" << endl + << endl + << className << "::~" << className << "()" << endl + << "{" << endl + << "}" << endl + << endl; + + // properties: + foreach (const QDBusIntrospection::Property &property, interface->properties) { + QByteArray type = qtTypeName(property.type); + QString templateType = templateArg(type); + QString constRefType = constRefArg(type); + QString getter = propertyGetter(property); + QString setter = propertySetter(property); + + hs << " Q_PROPERTY(" << type << " " << property.name; + + // getter: + if (property.access != QDBusIntrospection::Property::Write) + // it's readble + hs << " READ " << getter; + + // setter + if (property.access != QDBusIntrospection::Property::Read) + // it's writeable + hs << " WRITE " << setter; + + hs << ")" << endl; + + // getter: + if (property.access != QDBusIntrospection::Property::Write) { + hs << " inline " << type << " " << getter << "() const" << endl; + if (type != "QVariant") + hs << " { return qvariant_cast< " << type << " >(internalPropGet(\"" + << property.name << "\")); }" << endl; + else + hs << " { return internalPropGet(\"" << property.name << "\"); }" << endl; + } + + // setter: + if (property.access != QDBusIntrospection::Property::Read) { + hs << " inline void " << setter << "(" << constRefArg(type) << "value)" << endl + << " { internalPropSet(\"" << property.name + << "\", qVariantFromValue(value)); }" << endl; + } + + hs << endl; + } + + // methods: + hs << "public Q_SLOTS: // METHODS" << endl; + foreach (const QDBusIntrospection::Method &method, interface->methods) { + bool isAsync = method.annotations.value(ANNOTATION_NO_WAIT) == "true"; + if (isAsync && !method.outputArgs.isEmpty()) { + fprintf(stderr, "warning: method %s in interface %s is marked 'async' but has output arguments.\n", + qPrintable(method.name), qPrintable(interface->name)); + continue; + } + + hs << " inline "; + + if (method.annotations.value("org.freedesktop.DBus.Deprecated") == "true") + hs << "Q_DECL_DEPRECATED "; + + if (isAsync) + hs << "Q_ASYNC void "; + else if (method.outputArgs.isEmpty()) + hs << "QDBusReply "; + else { + hs << "QDBusReply<" << templateArg(qtTypeName(method.outputArgs.first().type)) << "> "; + } + + hs << method.name << "("; + + QStringList argNames = makeArgNames(method.inputArgs, method.outputArgs); + writeArgList(hs, argNames, method.inputArgs, method.outputArgs); + + hs << ")" << endl + << " {" << endl; + + if (method.outputArgs.count() > 1) + hs << " QDBusMessage reply = call(QLatin1String(\""; + else if (!isAsync) + hs << " return call(QLatin1String(\""; + else + hs << " call(NoWaitForReply, QLatin1String(\""; + + // rebuild the method input signature: + QString signature = QChar('.'); + foreach (const QDBusIntrospection::Argument &arg, method.inputArgs) + signature += arg.type; + if (signature.length() == 1) + signature.clear(); + hs << method.name << signature << "\")"; + + int argPos = 0; + for (int i = 0; i < method.inputArgs.count(); ++i) + hs << ", " << argNames.at(argPos++); + + // close the QDBusIntrospection::call call + hs << ");" << endl; + + argPos++; + if (method.outputArgs.count() > 1) { + hs << " if (reply.type() == QDBusMessage::ReplyMessage) {" << endl; + + // yes, starting from 1 + for (int i = 1; i < method.outputArgs.count(); ++i) + hs << " " << argNames.at(argPos++) << " = qvariant_cast<" + << templateArg(qtTypeName(method.outputArgs.at(i).type)) + << ">(reply.at(" << i << "));" << endl; + hs << " }" << endl + << " return reply;" << endl; + } + + // close the function: + hs << " }" << endl + << endl; + } + + hs << "Q_SIGNALS: // SIGNALS" << endl; + foreach (const QDBusIntrospection::Signal &signal, interface->signals_) { + hs << " "; + if (signal.annotations.value("org.freedesktop.DBus.Deprecated") == "true") + hs << "Q_DECL_DEPRECATED "; + + hs << "void " << signal.name << "("; + + QStringList argNames = makeArgNames(signal.outputArgs); + writeArgList(hs, argNames, signal.outputArgs); + + hs << ");" << endl; // finished for header + } + + // close the class: + hs << "};" << endl + << endl; + } + + if (!skipNamespaces) { + QStringList last; + QDBusIntrospection::Interfaces::ConstIterator it = interfaces.constBegin(); + do + { + QStringList current; + QString name; + if (it != interfaces.constEnd()) { + current = it->constData()->name.split('.'); + name = current.takeLast(); + } + + int i = 0; + while (i < current.count() && i < last.count() && current.at(i) == last.at(i)) + ++i; + + // i parts matched + // close last.count() - i namespaces: + for (int j = i; j < last.count(); ++j) + hs << QString((last.count() - j - 1 + i) * 2, ' ') << "}" << endl; + + // open current.count() - i namespaces + for (int j = i; j < current.count(); ++j) + hs << QString(j * 2, ' ') << "namespace " << current.at(j) << " {" << endl; + + // add this class: + if (!name.isEmpty()) { + hs << QString(current.count() * 2, ' ') + << "typedef ::" << classNameForInterface(it->constData()->name, Proxy) + << " " << name << ";" << endl; + } + + if (it == interfaces.constEnd()) + break; + ++it; + last = current; + } while (true); + } + + // close the include guard + hs << "#endif" << endl; + + if (includeMocs) + cs << endl + << "#include \"" << proxyFile << ".moc\"" << endl; + + cs.flush(); + hs.flush(); + if (headerName == cppName) + file.write(cppData); + else { + // write to cpp file + QFile f(cppName); + f.open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text); + f.write(cppData); + } +} + +static void writeAdaptor(const char *adaptorFile, const QDBusIntrospection::Interfaces &interfaces) +{ + // open the file + QString headerName = header(adaptorFile); + QFile file(headerName); + if (!headerName.isEmpty()) + file.open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text); + else + file.open(stdout, QIODevice::WriteOnly | QIODevice::Text); + QTextStream hs(&file); + + QString cppName = cpp(adaptorFile); + QByteArray cppData; + QTextStream cs(&cppData); + + // write the headers + writeHeader(hs, false); + + // include guards: + QString includeGuard; + if (!headerName.isEmpty()) { + includeGuard = headerName.toUpper().replace(QChar('.'), QChar('_')); + int pos = includeGuard.lastIndexOf('/'); + if (pos != -1) + includeGuard = includeGuard.mid(pos + 1); + } else { + includeGuard = QString("QDBUSIDL2CPP_ADAPTOR"); + } + includeGuard = QString("%1_%2%3") + .arg(includeGuard) + .arg(getpid()) + .arg(QDateTime::currentDateTime().toTime_t()); + hs << "#ifndef " << includeGuard << endl + << "#define " << includeGuard << endl + << endl; + + // include our stuff: + hs << "#include " << endl; + if (cppName == headerName) + hs << "#include " << endl + << "#include " << endl; + hs << "#include " << endl; + + if (cppName != headerName) { + writeHeader(cs, false); + cs << "#include \"" << headerName << "\"" << endl + << "#include " << endl + << includeList + << endl; + hs << forwardDeclarations; + } else { + hs << includeList; + } + + hs << endl; + + foreach (const QDBusIntrospection::Interface *interface, interfaces) { + QString className = classNameForInterface(interface->name, Adaptor); + + // comment: + hs << "/*" << endl + << " * Adaptor class for interface " << interface->name << endl + << " */" << endl; + cs << "/*" << endl + << " * Implementation of adaptor class " << className << endl + << " */" << endl + << endl; + + // class header: + hs << "class " << className << ": public QDBusAbstractAdaptor" << endl + << "{" << endl + << " Q_OBJECT" << endl + << " Q_CLASSINFO(\"D-Bus Interface\", \"" << interface->name << "\")" << endl + << " Q_CLASSINFO(\"D-Bus Introspection\", \"\"" << endl + << stringify(interface->introspection) + << " \"\")" << endl + << "public:" << endl + << " " << className << "(QObject *parent);" << endl + << " virtual ~" << className << "();" << endl + << endl; + + // constructor/destructor + cs << className << "::" << className << "(QObject *parent)" << endl + << " : QDBusAbstractAdaptor(parent)" << endl + << "{" << endl + << " // constructor" << endl + << " setAutoRelaySignals(true);" << endl + << "}" << endl + << endl + << className << "::~" << className << "()" << endl + << "{" << endl + << " // destructor" << endl + << "}" << endl + << endl; + + hs << "public: // PROPERTIES" << endl; + foreach (const QDBusIntrospection::Property &property, interface->properties) { + QByteArray type = qtTypeName(property.type); + QString constRefType = constRefArg(type); + QString getter = propertyGetter(property); + QString setter = propertySetter(property); + + hs << " Q_PROPERTY(" << type << " " << property.name; + if (property.access != QDBusIntrospection::Property::Write) + hs << " READ " << getter; + if (property.access != QDBusIntrospection::Property::Read) + hs << " WRITE " << setter; + hs << ")" << endl; + + // getter: + if (property.access != QDBusIntrospection::Property::Write) { + hs << " " << type << " " << getter << "() const;" << endl; + cs << type << " " + << className << "::" << getter << "() const" << endl + << "{" << endl + << " // get the value of property " << property.name << endl + << " return qvariant_cast< " << type <<" >(parent()->property(\"" << property.name << "\"));" << endl + << "}" << endl + << endl; + } + + // setter + if (property.access != QDBusIntrospection::Property::Read) { + hs << " void " << setter << "(" << constRefType << "value);" << endl; + cs << "void " << className << "::" << setter << "(" << constRefType << "value)" << endl + << "{" << endl + << " // set the value of property " << property.name << endl + << " parent()->setProperty(\"" << property.name << "\", value);" << endl + << "}" << endl + << endl; + } + + hs << endl; + } + + hs << "public Q_SLOTS: // METHODS" << endl; + foreach (const QDBusIntrospection::Method &method, interface->methods) { + bool isAsync = method.annotations.value(ANNOTATION_NO_WAIT) == "true"; + if (isAsync && !method.outputArgs.isEmpty()) { + fprintf(stderr, "warning: method %s in interface %s is marked 'async' but has output arguments.\n", + qPrintable(method.name), qPrintable(interface->name)); + continue; + } + + hs << " "; + if (method.annotations.value("org.freedesktop.DBus.Deprecated") == "true") + hs << "Q_DECL_DEPRECATED "; + + QByteArray returnType; + if (isAsync) { + hs << "Q_ASYNC void "; + cs << "void "; + } else if (method.outputArgs.isEmpty()) { + hs << "void "; + cs << "void "; + } else { + returnType = qtTypeName(method.outputArgs.first().type); + hs << returnType << " "; + cs << returnType << " "; + } + + QString name = method.name; + hs << name << "("; + cs << className << "::" << name << "("; + + QStringList argNames = makeArgNames(method.inputArgs, method.outputArgs); + writeArgList(hs, argNames, method.inputArgs, method.outputArgs); + writeArgList(cs, argNames, method.inputArgs, method.outputArgs); + + hs << ");" << endl; // finished for header + cs << ")" << endl + << "{" << endl + << " // handle method call " << interface->name << "." << method.name << endl; + + // create the return type + int j = method.inputArgs.count(); + if (!returnType.isEmpty()) + cs << " " << returnType << " " << argNames.at(j) << ";" << endl; + + // make the call + if (method.inputArgs.count() <= 10 && method.outputArgs.count() <= 1) { + // we can use QMetaObject::invokeMethod + static const char invoke[] = " QMetaObject::invokeMethod(parent(), \""; + cs << invoke << name << "\""; + + if (!method.outputArgs.isEmpty()) + cs << ", Q_RETURN_ARG(" + << qtTypeName(method.outputArgs.at(0).type) + << ", " + << argNames.at(method.inputArgs.count()) + << ")"; + + for (int i = 0; i < method.inputArgs.count(); ++i) + cs << ", Q_ARG(" + << qtTypeName(method.inputArgs.at(i).type) + << ", " + << argNames.at(i) + << ")"; + + cs << ");" << endl; + } + + cs << endl + << " // Alternative:" << endl + << " //"; + if (!method.outputArgs.isEmpty()) + cs << argNames.at(method.inputArgs.count()) << " = "; + cs << "static_cast(parent())->" << name << "("; + + int argPos = 0; + bool first = true; + for (int i = 0; i < method.inputArgs.count(); ++i) { + cs << (first ? "" : ", ") << argNames.at(argPos++); + first = false; + } + ++argPos; // skip retval, if any + for (int i = 1; i < method.outputArgs.count(); ++i) { + cs << (first ? "" : ", ") << argNames.at(argPos++); + first = false; + } + + cs << ");" << endl; + if (!method.outputArgs.isEmpty()) + cs << " return " << argNames.at(method.inputArgs.count()) << ";" << endl; + cs << "}" << endl + << endl; + } + + hs << "Q_SIGNALS: // SIGNALS" << endl; + foreach (const QDBusIntrospection::Signal &signal, interface->signals_) { + hs << " "; + if (signal.annotations.value("org.freedesktop.DBus.Deprecated") == "true") + hs << "Q_DECL_DEPRECATED "; + + hs << "void " << signal.name << "("; + + QStringList argNames = makeArgNames(signal.outputArgs); + writeArgList(hs, argNames, signal.outputArgs); + + hs << ");" << endl; // finished for header + } + + // close the class: + hs << "};" << endl + << endl; + } + + // close the include guard + hs << "#endif" << endl; + + if (includeMocs) + cs << endl + << "#include \"" << adaptorFile << ".moc\"" << endl; + + cs.flush(); + hs.flush(); + if (headerName == cppName) + file.write(cppData); + else { + // write to cpp file + QFile f(cppName); + f.open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text); + f.write(cppData); + } +} + +int main(int argc, char **argv) +{ + parseCmdLine(argc, argv); + + QDBusIntrospection::Interfaces interfaces = readInput(); + cleanInterfaces(interfaces); + + writeProxy(proxyFile, interfaces); + + if (adaptorFile) + writeAdaptor(adaptorFile, interfaces); + + return 0; +} + +/*! + \page dbusidl2cpp.html + \title QtDBus IDL compiler (dbusidl2cpp) + + The QtDBus IDL compiler is a tool that can be used to parse interface descriptions and produce + static code representing those interfaces, which can then be used to make calls to remote + objects or implement said interfaces. + + \c dbusidl2dcpp has two modes of operation, that correspond to the two possible outputs it can + produce: the interface (proxy) class or the adaptor class.The latter consists of both a C++ + header and a source file, which are meant to be edited and adapted to your needs. + + The \c dbusidl2dcpp tool is not meant to be run every time you compile your + application. Instead, it's meant to be used when developing the code or when the interface + changes. + + The adaptor classes generated by \c dbusidl2cpp are just a skeleton that must be completed. It + generates, by default, calls to slots with the same name on the object the adaptor is attached + to. However, you may modify those slots or the property accessor functions to suit your needs. +*/ -- cgit