summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorCasper van Donderen <casper.vandonderen@nokia.com>2011-09-30 08:55:26 (GMT)
committerCasper van Donderen <casper.vandonderen@nokia.com>2011-09-30 08:55:26 (GMT)
commita3a5566678256a029893fdfbc0c977e68bb61f2e (patch)
treeee09839c6ce95645da511c5ebd91d19586649976 /tools
parent7e6bf4a06e6f2e8e3a25d1212be766e2e753347a (diff)
parent1f459f4040845919ffd46cea35958486f41abb3c (diff)
downloadQt-a3a5566678256a029893fdfbc0c977e68bb61f2e.zip
Qt-a3a5566678256a029893fdfbc0c977e68bb61f2e.tar.gz
Qt-a3a5566678256a029893fdfbc0c977e68bb61f2e.tar.bz2
Merge remote-tracking branch 'mainline/4.8'
Diffstat (limited to 'tools')
-rw-r--r--tools/assistant/lib/lib.pro1
-rw-r--r--tools/configure/configureapp.cpp26
-rw-r--r--tools/designer/src/components/propertyeditor/propertyeditor.pri11
-rw-r--r--tools/designer/src/lib/uilib/abstractformbuilder.cpp20
-rw-r--r--tools/qdbus/qdbus/qdbus.cpp8
-rw-r--r--tools/qdoc3/cppcodemarker.cpp18
-rw-r--r--tools/qdoc3/ditaxmlgenerator.cpp88
-rw-r--r--tools/qdoc3/ditaxmlgenerator.h11
-rw-r--r--tools/qdoc3/doc.cpp2
-rw-r--r--tools/qdoc3/generator.cpp153
-rw-r--r--tools/qdoc3/generator.h8
-rw-r--r--tools/qdoc3/htmlgenerator.cpp103
-rw-r--r--tools/qdoc3/htmlgenerator.h11
-rw-r--r--tools/qdoc3/node.cpp14
-rw-r--r--tools/qdoc3/node.h2
-rw-r--r--tools/qvfb/qvfb.pro19
-rw-r--r--tools/qvfb/qvfbshmem.cpp6
-rw-r--r--tools/runonphone/codasignalhandler.cpp8
-rw-r--r--tools/runonphone/main.cpp8
-rw-r--r--tools/runonphone/runonphone.pro6
-rw-r--r--tools/runonphone/symbianutils/codadevice.cpp5
-rw-r--r--tools/runonphone/symbianutils/symbiandevicemanager.cpp15
-rw-r--r--tools/runonphone/texttracehandler.cpp89
-rw-r--r--tools/runonphone/texttracehandler.h57
-rw-r--r--tools/runonphone/trksignalhandler.cpp2
25 files changed, 440 insertions, 251 deletions
diff --git a/tools/assistant/lib/lib.pro b/tools/assistant/lib/lib.pro
index 03821b2..d6c3fce 100644
--- a/tools/assistant/lib/lib.pro
+++ b/tools/assistant/lib/lib.pro
@@ -1,5 +1,4 @@
QT += sql \
- xml \
network
TEMPLATE = lib
TARGET = QtHelp
diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp
index 31c359e..e6d8526 100644
--- a/tools/configure/configureapp.cpp
+++ b/tools/configure/configureapp.cpp
@@ -3599,17 +3599,21 @@ void Configure::displayConfig()
#if !defined(EVAL)
void Configure::generateHeaders()
{
- if (dictionary["SYNCQT"] == "yes"
- && findFile("perl.exe")) {
- cout << "Running syncqt..." << endl;
- QStringList args;
- args += buildPath + "/bin/syncqt.bat";
- QStringList env;
- env += QString("QTDIR=" + sourcePath);
- env += QString("PATH=" + buildPath + "/bin/;" + qgetenv("PATH"));
- int retc = Environment::execute(args, env, QStringList());
- if (retc) {
- cout << "syncqt failed, return code " << retc << endl << endl;
+ if (dictionary["SYNCQT"] == "yes") {
+ if (findFile("perl.exe")) {
+ cout << "Running syncqt..." << endl;
+ QStringList args;
+ args += buildPath + "/bin/syncqt.bat";
+ QStringList env;
+ env += QString("QTDIR=" + sourcePath);
+ env += QString("PATH=" + buildPath + "/bin/;" + qgetenv("PATH"));
+ int retc = Environment::execute(args, env, QStringList());
+ if (retc) {
+ cout << "syncqt failed, return code " << retc << endl << endl;
+ dictionary["DONE"] = "error";
+ }
+ } else {
+ cout << "Perl not found in environment - cannot run syncqt." << endl;
dictionary["DONE"] = "error";
}
}
diff --git a/tools/designer/src/components/propertyeditor/propertyeditor.pri b/tools/designer/src/components/propertyeditor/propertyeditor.pri
index bb1afdb..60219e1 100644
--- a/tools/designer/src/components/propertyeditor/propertyeditor.pri
+++ b/tools/designer/src/components/propertyeditor/propertyeditor.pri
@@ -4,15 +4,8 @@
INCLUDEPATH += $$PWD
-# --- Property browser is also linked into the designer_shared library.
-# Avoid conflict when linking statically
-contains(CONFIG, static) {
- INCLUDEPATH *= $$QT_SOURCE_TREE/tools/shared/qtpropertybrowser
- INCLUDEPATH *= $$QT_SOURCE_TREE/tools/shared/qtgradienteditor
-} else {
- include(../../../../shared/qtpropertybrowser/qtpropertybrowser.pri)
- include(../../../../shared/qtgradienteditor/qtcolorbutton.pri)
-}
+include(../../../../shared/qtpropertybrowser/qtpropertybrowser.pri)
+include(../../../../shared/qtgradienteditor/qtcolorbutton.pri)
FORMS += $$PWD/paletteeditor.ui \
$$PWD/stringlisteditor.ui \
diff --git a/tools/designer/src/lib/uilib/abstractformbuilder.cpp b/tools/designer/src/lib/uilib/abstractformbuilder.cpp
index 81f1a3b..665badb 100644
--- a/tools/designer/src/lib/uilib/abstractformbuilder.cpp
+++ b/tools/designer/src/lib/uilib/abstractformbuilder.cpp
@@ -1452,6 +1452,8 @@ struct FormBuilderSaveLayoutEntry {
explicit FormBuilderSaveLayoutEntry(QLayoutItem *li = 0) :
item(li), row(-1), column(-1), rowSpan(0), columnSpan(0), alignment(0) {}
+ void setAlignment(Qt::Alignment al);
+
QLayoutItem *item;
int row;
int column;
@@ -1460,6 +1462,20 @@ struct FormBuilderSaveLayoutEntry {
Qt::Alignment alignment;
};
+// filter out the case of "Spacer" and "QLayoutWidget" widgets
+void FormBuilderSaveLayoutEntry::setAlignment(Qt::Alignment al)
+{
+ if (!item->widget())
+ return;
+
+ const QString className = item->widget()->metaObject()->className();
+ if (className == QLatin1String("Spacer")
+ || className == QLatin1String("QLayoutWidget"))
+ return;
+
+ alignment = al;
+}
+
// Create list from standard box layout
static QList<FormBuilderSaveLayoutEntry> saveLayoutEntries(const QLayout *layout)
{
@@ -1469,7 +1485,7 @@ static QList<FormBuilderSaveLayoutEntry> saveLayoutEntries(const QLayout *layout
for (int idx = 0; idx < count; ++idx) {
QLayoutItem *item = layout->itemAt(idx);
FormBuilderSaveLayoutEntry entry(item);
- entry.alignment = item->alignment();
+ entry.setAlignment(item->alignment());
rc.append(entry);
}
}
@@ -1486,7 +1502,7 @@ static QList<FormBuilderSaveLayoutEntry> saveGridLayoutEntries(QGridLayout *grid
QLayoutItem *item = gridLayout->itemAt(idx);
FormBuilderSaveLayoutEntry entry(item);
gridLayout->getItemPosition(idx, &entry.row, &entry.column, &entry.rowSpan,&entry.columnSpan);
- entry.alignment = item->alignment();
+ entry.setAlignment(item->alignment());
rc.append(entry);
}
}
diff --git a/tools/qdbus/qdbus/qdbus.cpp b/tools/qdbus/qdbus/qdbus.cpp
index 14b4b9e..757267f 100644
--- a/tools/qdbus/qdbus/qdbus.cpp
+++ b/tools/qdbus/qdbus/qdbus.cpp
@@ -59,7 +59,7 @@ static bool printArgumentsLiterally = false;
static void showUsage()
{
- printf("Usage: qdbus [--system] [--literal] [servicename] [path] [method] [args]\n"
+ printf("Usage: qdbus [--system | --address ADDRESS] [--literal] [servicename] [path] [method] [args]\n"
"\n"
" servicename the service to connect to (e.g., org.freedesktop.DBus)\n"
" path the path to the object (e.g., /)\n"
@@ -71,6 +71,7 @@ static void showUsage()
"\n"
"Options:\n"
" --system connect to the system bus\n"
+ " --address ADDRESS connect to the given bus\n"
" --literal print replies literally\n");
}
@@ -454,6 +455,11 @@ int main(int argc, char **argv)
if (arg == QLatin1String("--system")) {
connection = QDBusConnection::systemBus();
connectionOpened = true;
+ } else if (arg == QLatin1String("--address")) {
+ if (!args.isEmpty()) {
+ connection = QDBusConnection::connectToBus(args.takeFirst(), "bus");
+ connectionOpened = true;
+ }
} else if (arg == QLatin1String("--literal")) {
printArgumentsLiterally = true;
} else if (arg == QLatin1String("--help")) {
diff --git a/tools/qdoc3/cppcodemarker.cpp b/tools/qdoc3/cppcodemarker.cpp
index 75d6094..743688f 100644
--- a/tools/qdoc3/cppcodemarker.cpp
+++ b/tools/qdoc3/cppcodemarker.cpp
@@ -919,7 +919,7 @@ QString CppCodeMarker::addMarkUp(const QString &in,
int i = 0;
int start = 0;
int finish = 0;
- char ch;
+ QChar ch;
QRegExp classRegExp("Qt?(?:[A-Z3]+[a-z][A-Za-z]*|t)");
QRegExp functionRegExp("q([A-Z][a-z]+)+");
@@ -929,13 +929,13 @@ QString CppCodeMarker::addMarkUp(const QString &in,
QString tag;
bool target = false;
- if (isalpha(ch) || ch == '_') {
+ if (ch.isLetter() || ch == '_') {
QString ident;
do {
- ident += ch;
- finish = i;
- readChar();
- } while (isalnum(ch) || ch == '_');
+ ident += ch;
+ finish = i;
+ readChar();
+ } while (ch.isLetterOrNumber() || ch == '_');
if (classRegExp.exactMatch(ident)) {
tag = QLatin1String("type");
@@ -952,14 +952,14 @@ QString CppCodeMarker::addMarkUp(const QString &in,
tag = QLatin1String("func");
target = true;
}
- } else if (isdigit(ch)) {
+ } else if (ch.isDigit()) {
do {
finish = i;
readChar();
- } while (isalnum(ch) || ch == '.');
+ } while (ch.isLetterOrNumber() || ch == '.');
tag = QLatin1String("number");
} else {
- switch (ch) {
+ switch (ch.unicode()) {
case '+':
case '-':
case '!':
diff --git a/tools/qdoc3/ditaxmlgenerator.cpp b/tools/qdoc3/ditaxmlgenerator.cpp
index 4393e8d..e3e32a0 100644
--- a/tools/qdoc3/ditaxmlgenerator.cpp
+++ b/tools/qdoc3/ditaxmlgenerator.cpp
@@ -62,25 +62,6 @@ QT_BEGIN_NAMESPACE
#define COMMAND_VERSION Doc::alias("version")
int DitaXmlGenerator::id = 0;
-QString DitaXmlGenerator::sinceTitles[] =
- {
- " New Namespaces",
- " New Classes",
- " New Member Functions",
- " New Functions in Namespaces",
- " New Global Functions",
- " New Macros",
- " New Enum Types",
- " New Typedefs",
- " New Properties",
- " New Variables",
- " New QML Elements",
- " New Qml Properties",
- " New Qml Signal Handlers",
- " New Qml Methods",
- ""
- };
-
/*
The strings in this array must appear in the same order as
the values in enum DitaXmlGenerator::DitaTag.
@@ -1199,7 +1180,10 @@ int DitaXmlGenerator::generateAtom(const Atom *atom,
Just output the href as if the image is in
the images directory...
*/
- fileName = QLatin1String("images/") + protectEnc(atom->string());
+ if (atom->string()[0] == '/')
+ fileName = QLatin1String("images") + atom->string();
+ else
+ fileName = QLatin1String("images/") + atom->string();
}
if (currentTag() != DT_xref)
@@ -3954,70 +3938,6 @@ void DitaXmlGenerator::findAllClasses(const InnerNode* node)
}
}
-/*!
- For generating the "New Classes... in 4.x" section on the
- What's New in 4.x" page.
- */
-void DitaXmlGenerator::findAllSince(const InnerNode* node)
-{
- NodeList::const_iterator child = node->childNodes().constBegin();
- while (child != node->childNodes().constEnd()) {
- QString sinceVersion = (*child)->since();
- if (((*child)->access() != Node::Private) && !sinceVersion.isEmpty()) {
- NewSinceMaps::iterator nsmap = newSinceMaps.find(sinceVersion);
- if (nsmap == newSinceMaps.end())
- nsmap = newSinceMaps.insert(sinceVersion,NodeMultiMap());
- NewClassMaps::iterator ncmap = newClassMaps.find(sinceVersion);
- if (ncmap == newClassMaps.end())
- ncmap = newClassMaps.insert(sinceVersion,NodeMap());
- NewClassMaps::iterator nqcmap = newQmlClassMaps.find(sinceVersion);
- if (nqcmap == newQmlClassMaps.end())
- nqcmap = newQmlClassMaps.insert(sinceVersion,NodeMap());
-
- if ((*child)->type() == Node::Function) {
- FunctionNode *func = static_cast<FunctionNode *>(*child);
- if ((func->status() > Node::Obsolete) &&
- (func->metaness() != FunctionNode::Ctor) &&
- (func->metaness() != FunctionNode::Dtor)) {
- nsmap.value().insert(func->name(),(*child));
- }
- }
- else if ((*child)->url().isEmpty()) {
- if ((*child)->type() == Node::Class && !(*child)->doc().isEmpty()) {
- QString className = (*child)->name();
- if ((*child)->parent() &&
- (*child)->parent()->type() == Node::Namespace &&
- !(*child)->parent()->name().isEmpty())
- className = (*child)->parent()->name()+"::"+className;
- nsmap.value().insert(className,(*child));
- ncmap.value().insert(className,(*child));
- }
- else if ((*child)->subType() == Node::QmlClass) {
- QString className = (*child)->name();
- if ((*child)->parent() &&
- (*child)->parent()->type() == Node::Namespace &&
- !(*child)->parent()->name().isEmpty())
- className = (*child)->parent()->name()+"::"+className;
- nsmap.value().insert(className,(*child));
- nqcmap.value().insert(className,(*child));
- }
- }
- else {
- QString name = (*child)->name();
- if ((*child)->parent() &&
- (*child)->parent()->type() == Node::Namespace &&
- !(*child)->parent()->name().isEmpty())
- name = (*child)->parent()->name()+"::"+name;
- nsmap.value().insert(name,(*child));
- }
- if ((*child)->isInnerNode()) {
- findAllSince(static_cast<InnerNode *>(*child));
- }
- }
- ++child;
- }
-}
-
void DitaXmlGenerator::findAllFunctions(const InnerNode* node)
{
NodeList::ConstIterator c = node->childNodes().begin();
diff --git a/tools/qdoc3/ditaxmlgenerator.h b/tools/qdoc3/ditaxmlgenerator.h
index 408f46c..d8d3563 100644
--- a/tools/qdoc3/ditaxmlgenerator.h
+++ b/tools/qdoc3/ditaxmlgenerator.h
@@ -51,12 +51,6 @@
QT_BEGIN_NAMESPACE
-typedef QMultiMap<QString, Node*> NodeMultiMap;
-typedef QMap<QString, NodeMultiMap> NewSinceMaps;
-typedef QMap<Node*, NodeMultiMap> ParentMaps;
-typedef QMap<QString, const Node*> NodeMap;
-typedef QMap<QString, NodeMap> NewClassMaps;
-
typedef QMap<QString, QString> GuidMap;
typedef QMap<QString, GuidMap*> GuidMaps;
@@ -418,7 +412,6 @@ class DitaXmlGenerator : public PageGenerator
void findAllFunctions(const InnerNode *node);
void findAllLegaleseTexts(const InnerNode *node);
void findAllNamespaces(const InnerNode *node);
- void findAllSince(const InnerNode *node);
static int hOffset(const Node *node);
static bool isThreeColumnEnumValueTable(const Atom *atom);
virtual QString getLink(const Atom *atom,
@@ -515,10 +508,6 @@ class DitaXmlGenerator : public PageGenerator
#endif
QMap<QString, NodeMap > funcIndex;
QMap<Text, const Node*> legaleseTexts;
- NewSinceMaps newSinceMaps;
- static QString sinceTitles[];
- NewClassMaps newClassMaps;
- NewClassMaps newQmlClassMaps;
static int id;
static QString ditaTags[];
QStack<QXmlStreamWriter*> xmlWriterStack;
diff --git a/tools/qdoc3/doc.cpp b/tools/qdoc3/doc.cpp
index f0c4264..f1f1418 100644
--- a/tools/qdoc3/doc.cpp
+++ b/tools/qdoc3/doc.cpp
@@ -828,7 +828,7 @@ void DocParser::parse(const QString& source,
append(Atom::AnnotatedList, getArgument());
break;
case CMD_SINCELIST:
- append(Atom::SinceList, getArgument());
+ append(Atom::SinceList, getRestOfLine().simplified());
break;
case CMD_GENERATELIST:
append(Atom::GeneratedList, getArgument());
diff --git a/tools/qdoc3/generator.cpp b/tools/qdoc3/generator.cpp
index 3367301..355c9b2 100644
--- a/tools/qdoc3/generator.cpp
+++ b/tools/qdoc3/generator.cpp
@@ -77,6 +77,25 @@ QString Generator::outDir;
QString Generator::project;
QHash<QString, QString> Generator::outputPrefixes;
+QString Generator::sinceTitles[] =
+ {
+ " New Namespaces",
+ " New Classes",
+ " New Member Functions",
+ " New Functions in Namespaces",
+ " New Global Functions",
+ " New Macros",
+ " New Enum Types",
+ " New Typedefs",
+ " New Properties",
+ " New Variables",
+ " New QML Elements",
+ " New QML Properties",
+ " New QML Signals",
+ " New QML Methods",
+ ""
+ };
+
static void singularPlural(Text& text, const NodeList& nodes)
{
if (nodes.count() == 1)
@@ -760,8 +779,18 @@ QString Generator::typeString(const Node *node)
case Node::Class:
return "class";
case Node::Fake:
- default:
- return "documentation";
+ {
+ switch (node->subType()) {
+ case Node::QmlClass:
+ return "element";
+ case Node::QmlPropertyGroup:
+ return "property group";
+ case Node::QmlBasicType:
+ return "type";
+ default:
+ return "documentation";
+ }
+ }
case Node::Enum:
return "enum";
case Node::Typedef:
@@ -770,6 +799,8 @@ QString Generator::typeString(const Node *node)
return "function";
case Node::Property:
return "property";
+ default:
+ return "documentation";
}
}
@@ -783,10 +814,13 @@ QString Generator::imageFileName(const Node *relative, const QString& fileBase)
if (filePath.isEmpty())
return QString();
- return QLatin1String("images/")
- + Config::copyFile(relative->doc().location(),
- filePath, userFriendlyFilePath,
- outputDir() + QLatin1String("/images"));
+ QString path = Config::copyFile(relative->doc().location(),
+ filePath,
+ userFriendlyFilePath,
+ outputDir() + QLatin1String("/images"));
+ if (path[0] != '/')
+ return QLatin1String("images/") + path;
+ return QLatin1String("images") + path;
}
void Generator::setImageFileExtensions(const QStringList& extensions)
@@ -1091,11 +1125,21 @@ void Generator::generateSince(const Node *node, CodeMarker *marker)
text << " was introduced or modified in ";
else
text << " was introduced in ";
- if (project.isEmpty())
- text << "version";
- else
- text << project;
- text << " " << node->since() << "." << Atom::ParaRight;
+
+ QStringList since = node->since().split(" ");
+ if (since.count() == 1) {
+ // Handle legacy use of \since <version>.
+ if (project.isEmpty())
+ text << "version";
+ else
+ text << project;
+ text << " " << since[0];
+ } else {
+ // Reconstruct the <project> <version> string.
+ text << " " << since.join(" ");
+ }
+
+ text << "." << Atom::ParaRight;
generateText(text, node, marker);
}
}
@@ -1346,4 +1390,91 @@ QStringList Generator::getMetadataElements(const InnerNode* inner, const QString
return s;
}
+/*!
+ For generating the "New Classes... in 4.6" section on the
+ What's New in 4.6" page.
+ */
+void Generator::findAllSince(const InnerNode *node)
+{
+ NodeList::const_iterator child = node->childNodes().constBegin();
+
+ // Traverse the tree, starting at the node supplied.
+
+ while (child != node->childNodes().constEnd()) {
+
+ QString sinceString = (*child)->since();
+
+ if (((*child)->access() != Node::Private) && !sinceString.isEmpty()) {
+
+ // Insert a new entry into each map for each new since string found.
+ NewSinceMaps::iterator nsmap = newSinceMaps.find(sinceString);
+ if (nsmap == newSinceMaps.end())
+ nsmap = newSinceMaps.insert(sinceString,NodeMultiMap());
+
+ NewClassMaps::iterator ncmap = newClassMaps.find(sinceString);
+ if (ncmap == newClassMaps.end())
+ ncmap = newClassMaps.insert(sinceString,NodeMap());
+
+ NewClassMaps::iterator nqcmap = newQmlClassMaps.find(sinceString);
+ if (nqcmap == newQmlClassMaps.end())
+ nqcmap = newQmlClassMaps.insert(sinceString,NodeMap());
+
+ if ((*child)->type() == Node::Function) {
+ // Insert functions into the general since map.
+ FunctionNode *func = static_cast<FunctionNode *>(*child);
+ if ((func->status() > Node::Obsolete) &&
+ (func->metaness() != FunctionNode::Ctor) &&
+ (func->metaness() != FunctionNode::Dtor)) {
+ nsmap.value().insert(func->name(),(*child));
+ }
+ }
+ else if ((*child)->url().isEmpty()) {
+ if ((*child)->type() == Node::Class && !(*child)->doc().isEmpty()) {
+ // Insert classes into the since and class maps.
+ QString className = (*child)->name();
+ if ((*child)->parent() &&
+ (*child)->parent()->type() == Node::Namespace &&
+ !(*child)->parent()->name().isEmpty())
+ className = (*child)->parent()->name()+"::"+className;
+
+ nsmap.value().insert(className,(*child));
+ ncmap.value().insert(className,(*child));
+ }
+ else if ((*child)->subType() == Node::QmlClass) {
+ // Insert QML elements into the since and element maps.
+ QString className = (*child)->name();
+ if ((*child)->parent() &&
+ (*child)->parent()->type() == Node::Namespace &&
+ !(*child)->parent()->name().isEmpty())
+ className = (*child)->parent()->name()+"::"+className;
+
+ nsmap.value().insert(className,(*child));
+ nqcmap.value().insert(className,(*child));
+ }
+ else if ((*child)->type() == Node::QmlProperty) {
+ // Insert QML properties into the since map.
+ QString propertyName = (*child)->name();
+ nsmap.value().insert(propertyName,(*child));
+ }
+ }
+ else {
+ // Insert external documents into the general since map.
+ QString name = (*child)->name();
+ if ((*child)->parent() &&
+ (*child)->parent()->type() == Node::Namespace &&
+ !(*child)->parent()->name().isEmpty())
+ name = (*child)->parent()->name()+"::"+name;
+
+ nsmap.value().insert(name,(*child));
+ }
+
+ // Find child nodes with since commands.
+ if ((*child)->isInnerNode()) {
+ findAllSince(static_cast<InnerNode *>(*child));
+ }
+ }
+ ++child;
+ }
+}
+
QT_END_NAMESPACE
diff --git a/tools/qdoc3/generator.h b/tools/qdoc3/generator.h
index d4fe76f..e66915b 100644
--- a/tools/qdoc3/generator.h
+++ b/tools/qdoc3/generator.h
@@ -57,6 +57,8 @@
QT_BEGIN_NAMESPACE
+typedef QMap<QString, const Node*> NodeMap;
+typedef QMultiMap<QString, Node*> NodeMultiMap;
typedef QMap<QString, NodeMultiMap> NewSinceMaps;
typedef QMap<Node*, NodeMultiMap> ParentMaps;
typedef QMap<QString, NodeMap> NewClassMaps;
@@ -156,6 +158,7 @@ class Generator
QString getMetadataElement(const InnerNode* inner, const QString& t);
QStringList getMetadataElements(const InnerNode* inner, const QString& t);
+ void findAllSince(const InnerNode *node);
private:
void generateReimplementedFrom(const FunctionNode *func,
@@ -184,6 +187,11 @@ class Generator
const NodeList& subs,
CodeMarker *marker);
+ static QString sinceTitles[];
+ NewSinceMaps newSinceMaps;
+ NewClassMaps newClassMaps;
+ NewClassMaps newQmlClassMaps;
+
private:
QString amp;
QString lt;
diff --git a/tools/qdoc3/htmlgenerator.cpp b/tools/qdoc3/htmlgenerator.cpp
index e79e180..85ce9ac 100644
--- a/tools/qdoc3/htmlgenerator.cpp
+++ b/tools/qdoc3/htmlgenerator.cpp
@@ -66,25 +66,6 @@ bool HtmlGenerator::debugging_on = false;
QString HtmlGenerator::divNavTop = "";
-QString HtmlGenerator::sinceTitles[] =
- {
- " New Namespaces",
- " New Classes",
- " New Member Functions",
- " New Functions in Namespaces",
- " New Global Functions",
- " New Macros",
- " New Enum Types",
- " New Typedefs",
- " New Properties",
- " New Variables",
- " New QML Elements",
- " New QML Properties",
- " New QML Signal Handlers",
- " New QML Methods",
- ""
- };
-
static bool showBrokenLinks = false;
static QRegExp linkTag("(<@link node=\"([^\"]+)\">).*(</@link>)");
@@ -612,14 +593,18 @@ int HtmlGenerator::generateAtom(const Atom *atom,
ncmap = newClassMaps.find(atom->string());
NewClassMaps::const_iterator nqcmap;
nqcmap = newQmlClassMaps.find(atom->string());
+
if ((nsmap != newSinceMaps.constEnd()) && !nsmap.value().isEmpty()) {
QList<Section> sections;
QList<Section>::ConstIterator s;
+
for (int i=0; i<LastSinceType; ++i)
sections.append(Section(sinceTitle(i),QString(),QString(),QString()));
NodeMultiMap::const_iterator n = nsmap.value().constBegin();
+
while (n != nsmap.value().constEnd()) {
+
const Node* node = n.value();
switch (node->type()) {
case Node::Fake:
@@ -1361,6 +1346,7 @@ void HtmlGenerator::generateFakeNode(const FakeNode *fake, CodeMarker *marker)
// Generate brief text and status for modules.
generateBrief(fake, marker);
generateStatus(fake, marker);
+ generateSince(fake, marker);
if (moduleNamespaceMap.contains(fake->name())) {
out() << "<a name=\"" << registerRef("namespaces") << "\"></a>" << divNavTop << "\n";
@@ -1377,6 +1363,7 @@ void HtmlGenerator::generateFakeNode(const FakeNode *fake, CodeMarker *marker)
// Generate brief text and status for modules.
generateBrief(fake, marker);
generateStatus(fake, marker);
+ generateSince(fake, marker);
out() << "<ul>\n";
@@ -1408,6 +1395,7 @@ void HtmlGenerator::generateFakeNode(const FakeNode *fake, CodeMarker *marker)
generateQmlInherits(qml_cn, marker);
generateQmlInheritedBy(qml_cn, marker);
generateQmlInstantiates(qml_cn, marker);
+ generateSince(qml_cn, marker);
QString allQmlMembersLink = generateAllQmlMembersFile(qml_cn, marker);
if (!allQmlMembersLink.isEmpty()) {
@@ -2258,9 +2246,6 @@ void HtmlGenerator::generateCompactList(const Node *relative,
for (int i=0; i<NumParagraphs; i++) // i = 0..36
paragraphOffset[i+1] = paragraphOffset[i] + paragraph[i].count();
- int curParNr = 0;
- int curParOffset = 0;
-
/*
Output the alphabet as a row of links.
*/
@@ -2278,8 +2263,12 @@ void HtmlGenerator::generateCompactList(const Node *relative,
Output a <div> element to contain all the <dl> elements.
*/
out() << "<div class=\"flowListDiv\">\n";
+ numTableRows = 0;
+
+ int curParNr = 0;
+ int curParOffset = 0;
- for (int i=0; i<classMap.count()-1; i++) {
+ for (int i=0; i<classMap.count(); i++) {
while ((curParNr < NumParagraphs) &&
(curParOffset == paragraph[curParNr].count())) {
++curParNr;
@@ -2340,7 +2329,9 @@ void HtmlGenerator::generateCompactList(const Node *relative,
out() << "</dd>\n";
curParOffset++;
}
- out() << "</dl>\n";
+ if (classMap.count() > 0)
+ out() << "</dl>\n";
+
out() << "</div>\n";
}
@@ -3373,70 +3364,6 @@ void HtmlGenerator::findAllClasses(const InnerNode *node)
}
}
-/*!
- For generating the "New Classes... in 4.6" section on the
- What's New in 4.6" page.
- */
-void HtmlGenerator::findAllSince(const InnerNode *node)
-{
- NodeList::const_iterator child = node->childNodes().constBegin();
- while (child != node->childNodes().constEnd()) {
- QString sinceVersion = (*child)->since();
- if (((*child)->access() != Node::Private) && !sinceVersion.isEmpty()) {
- NewSinceMaps::iterator nsmap = newSinceMaps.find(sinceVersion);
- if (nsmap == newSinceMaps.end())
- nsmap = newSinceMaps.insert(sinceVersion,NodeMultiMap());
- NewClassMaps::iterator ncmap = newClassMaps.find(sinceVersion);
- if (ncmap == newClassMaps.end())
- ncmap = newClassMaps.insert(sinceVersion,NodeMap());
- NewClassMaps::iterator nqcmap = newQmlClassMaps.find(sinceVersion);
- if (nqcmap == newQmlClassMaps.end())
- nqcmap = newQmlClassMaps.insert(sinceVersion,NodeMap());
-
- if ((*child)->type() == Node::Function) {
- FunctionNode *func = static_cast<FunctionNode *>(*child);
- if ((func->status() > Node::Obsolete) &&
- (func->metaness() != FunctionNode::Ctor) &&
- (func->metaness() != FunctionNode::Dtor)) {
- nsmap.value().insert(func->name(),(*child));
- }
- }
- else if ((*child)->url().isEmpty()) {
- if ((*child)->type() == Node::Class && !(*child)->doc().isEmpty()) {
- QString className = (*child)->name();
- if ((*child)->parent() &&
- (*child)->parent()->type() == Node::Namespace &&
- !(*child)->parent()->name().isEmpty())
- className = (*child)->parent()->name()+"::"+className;
- nsmap.value().insert(className,(*child));
- ncmap.value().insert(className,(*child));
- }
- else if ((*child)->subType() == Node::QmlClass) {
- QString className = (*child)->name();
- if ((*child)->parent() &&
- (*child)->parent()->type() == Node::Namespace &&
- !(*child)->parent()->name().isEmpty())
- className = (*child)->parent()->name()+"::"+className;
- nsmap.value().insert(className,(*child));
- nqcmap.value().insert(className,(*child));
- }
- }
- else {
- QString name = (*child)->name();
- if ((*child)->parent() &&
- (*child)->parent()->type() == Node::Namespace &&
- !(*child)->parent()->name().isEmpty())
- name = (*child)->parent()->name()+"::"+name;
- nsmap.value().insert(name,(*child));
- }
- if ((*child)->isInnerNode()) {
- findAllSince(static_cast<InnerNode *>(*child));
- }
- }
- ++child;
- }
-}
-
void HtmlGenerator::findAllFunctions(const InnerNode *node)
{
NodeList::ConstIterator c = node->childNodes().begin();
diff --git a/tools/qdoc3/htmlgenerator.h b/tools/qdoc3/htmlgenerator.h
index 70508a0..62a7f605 100644
--- a/tools/qdoc3/htmlgenerator.h
+++ b/tools/qdoc3/htmlgenerator.h
@@ -56,12 +56,6 @@
QT_BEGIN_NAMESPACE
-typedef QMultiMap<QString, Node*> NodeMultiMap;
-typedef QMap<QString, NodeMultiMap> NewSinceMaps;
-typedef QMap<Node*, NodeMultiMap> ParentMaps;
-typedef QMap<QString, const Node*> NodeMap;
-typedef QMap<QString, NodeMap> NewClassMaps;
-
class HelpProjectWriter;
class HtmlGenerator : public PageGenerator
@@ -227,7 +221,6 @@ class HtmlGenerator : public PageGenerator
void findAllFunctions(const InnerNode *node);
void findAllLegaleseTexts(const InnerNode *node);
void findAllNamespaces(const InnerNode *node);
- void findAllSince(const InnerNode *node);
static int hOffset(const Node *node);
static bool isThreeColumnEnumValueTable(const Atom *atom);
virtual QString getLink(const Atom *atom,
@@ -296,10 +289,6 @@ class HtmlGenerator : public PageGenerator
NodeMap qmlClasses;
QMap<QString, NodeMap > funcIndex;
QMap<Text, const Node *> legaleseTexts;
- NewSinceMaps newSinceMaps;
- static QString sinceTitles[];
- NewClassMaps newClassMaps;
- NewClassMaps newQmlClassMaps;
static int id;
public:
static bool debugging_on;
diff --git a/tools/qdoc3/node.cpp b/tools/qdoc3/node.cpp
index 589ff60..709f03f 100644
--- a/tools/qdoc3/node.cpp
+++ b/tools/qdoc3/node.cpp
@@ -39,6 +39,10 @@
**
****************************************************************************/
+/*
+ node.cpp
+*/
+
#include "node.h"
#include "tree.h"
#include "codemarker.h"
@@ -155,6 +159,16 @@ void Node::setLink(LinkType linkType, const QString &link, const QString &desc)
}
/*!
+ Sets the information about the project and version a node was introduced
+ in. The string is simplified, removing excess whitespace before being
+ stored.
+*/
+void Node::setSince(const QString &since)
+{
+ sinc = since.simplified();
+}
+
+/*!
Returns a string representing the access specifier.
*/
QString Node::accessString() const
diff --git a/tools/qdoc3/node.h b/tools/qdoc3/node.h
index 3b031b6..a08151a 100644
--- a/tools/qdoc3/node.h
+++ b/tools/qdoc3/node.h
@@ -159,7 +159,7 @@ class Node
void setDoc(const Doc& doc, bool replace = false);
void setStatus(Status status) { sta = status; }
void setThreadSafeness(ThreadSafeness safeness) { saf = safeness; }
- void setSince(const QString &since) { sinc = since; }
+ void setSince(const QString &since);
void setRelates(InnerNode* pseudoParent);
void setModuleName(const QString &module) { mod = module; }
void setLink(LinkType linkType, const QString &link, const QString &desc);
diff --git a/tools/qvfb/qvfb.pro b/tools/qvfb/qvfb.pro
index 29ce202..ca8f4f4 100644
--- a/tools/qvfb/qvfb.pro
+++ b/tools/qvfb/qvfb.pro
@@ -8,6 +8,9 @@ DESTDIR = ../../bin
target.path=$$[QT_INSTALL_BINS]
INSTALLS += target
+DEPENDPATH += ../../include
+INCLUDEPATH += ../../src/gui/embedded
+
FORMS = config.ui
HEADERS = qvfb.h \
qvfbview.h \
@@ -16,7 +19,10 @@ HEADERS = qvfb.h \
gammaview.h \
qvfbprotocol.h \
qvfbshmem.h \
- qvfbmmap.h
+ qvfbmmap.h \
+ ../../src/gui/embedded/qlock_p.h \
+ ../../src/gui/embedded/qwslock_p.h \
+ ../../src/gui/embedded/qwssignalhandler_p.h
SOURCES = qvfb.cpp \
qvfbview.cpp \
@@ -25,7 +31,16 @@ SOURCES = qvfb.cpp \
qanimationwriter.cpp \
qvfbprotocol.cpp \
qvfbshmem.cpp \
- qvfbmmap.cpp
+ qvfbmmap.cpp \
+ ../../src/gui/embedded/qlock.cpp \
+ ../../src/gui/embedded/qwslock.cpp \
+ ../../src/gui/embedded/qwssignalhandler.cpp
+
+!embedded {
+ DEFINES += QT_NO_QWS_SIGNALHANDLER
+ HEADERS += ../../src/gui/embedded/qlock_p.h
+ SOURCES += ../../src/gui/embedded/qlock.cpp
+}
include(../shared/deviceskin/deviceskin.pri)
diff --git a/tools/qvfb/qvfbshmem.cpp b/tools/qvfb/qvfbshmem.cpp
index c17a680..c9a4293 100644
--- a/tools/qvfb/qvfbshmem.cpp
+++ b/tools/qvfb/qvfbshmem.cpp
@@ -39,9 +39,11 @@
**
****************************************************************************/
+#include <qplatformdefs.h>
+
#include "qvfbshmem.h"
-#include <qvfbhdr.h>
-#include <private/qlock_p.h>
+#include "qvfbhdr.h"
+#include "qlock_p.h"
#include <QFile>
#include <QTimer>
diff --git a/tools/runonphone/codasignalhandler.cpp b/tools/runonphone/codasignalhandler.cpp
index 0d086b5..2de6fbc 100644
--- a/tools/runonphone/codasignalhandler.cpp
+++ b/tools/runonphone/codasignalhandler.cpp
@@ -46,6 +46,7 @@
#include <QObject>
#include <QTimer>
#include "codasignalhandler.h"
+#include "texttracehandler.h"
static const quint64 DEFAULT_CHUNK_SIZE = 40000;
@@ -168,11 +169,14 @@ int CodaSignalHandler::run()
QString deviceError = "No such port";
if (d->codaDevice)
deviceError = d->codaDevice->device()->errorString();
- reportError(tr("Could not open serial device: ").arg(deviceError));
+ reportError(tr("Could not open serial device: %1").arg(deviceError));
SymbianUtils::SymbianDeviceManager::instance()->releaseCodaDevice(d->codaDevice);
return 1;
}
+ TextTraceHandler *traceHandler = new TextTraceHandler(
+ SymbianUtils::SymbianDeviceManager::instance()->getOstChannel(d->serialPortName, 2), this);
+
if (d->loglevel > 1) {
d->codaDevice->setVerbose(1);
}
@@ -190,6 +194,8 @@ int CodaSignalHandler::run()
d->eventLoop->exec();
int result = d->result;
reportMessage(tr("Done."));
+
+ delete traceHandler;
disconnect(d->codaDevice.data(), 0, this, 0);
SymbianUtils::SymbianDeviceManager::instance()->releaseCodaDevice(d->codaDevice);
diff --git a/tools/runonphone/main.cpp b/tools/runonphone/main.cpp
index af349eb..39fa983 100644
--- a/tools/runonphone/main.cpp
+++ b/tools/runonphone/main.cpp
@@ -67,6 +67,7 @@ void printUsage(QTextStream& outstream, QString exeName)
<< "-q, --quiet hide progress messages" << endl
<< "-u, --upload <local file> <remote file> upload file to phone" << endl
<< "-d, --download <remote file> <local file> copy file from phone to PC after running test" << endl
+ << "-T, --tempfile <remote file> specify temporary sis file name" << endl
<< "--nocrashlog Don't capture call stack if test crashes" << endl
<< "--crashlogpath <dir> Path to save crash logs (default=working dir)" << endl
<< "--coda Use CODA instead of TRK (default agent)" << endl
@@ -94,6 +95,7 @@ int main(int argc, char *argv[])
QString uploadRemoteFile;
QString downloadRemoteFile;
QString downloadLocalFile;
+ QString dstName = "c:\\data\\testtemp.sis";
int loglevel=1;
int timeout=0;
bool crashlog = true;
@@ -153,6 +155,10 @@ int main(int argc, char *argv[])
}
else if (arg == "--coda")
coda = true;
+ else if (arg == "--tempfile" || arg == "-T") {
+ CHECK_PARAMETER_EXISTS
+ dstName = it.next();
+ }
else if (arg == "--verbose" || arg == "-v")
loglevel=2;
else if (arg == "--quiet" || arg == "-q")
@@ -225,7 +231,6 @@ int main(int argc, char *argv[])
if (!sisFile.isEmpty()) {
codaHandler.setActionType(ActionCopyInstall);
- QString dstName = "c:\\data\\testtemp.sis";
codaHandler.setCopyFileName(sisFile, dstName);
}
else if (!uploadLocalFile.isEmpty() && uploadInfo.exists()) {
@@ -257,7 +262,6 @@ int main(int argc, char *argv[])
if (!sisFile.isEmpty()) {
launcher->addStartupActions(trk::Launcher::ActionCopyInstall);
srcNames.append(sisFile);
- QLatin1String dstName("c:\\data\\testtemp.sis");
dstNames.append(dstName);
launcher->setInstallFileNames(QStringList(dstName));
}
diff --git a/tools/runonphone/runonphone.pro b/tools/runonphone/runonphone.pro
index d006a05..3d6a995 100644
--- a/tools/runonphone/runonphone.pro
+++ b/tools/runonphone/runonphone.pro
@@ -9,13 +9,15 @@ include(symbianutils/symbianutils.pri)
SOURCES += main.cpp \
trksignalhandler.cpp \
ossignalconverter.cpp \
- codasignalhandler.cpp
+ codasignalhandler.cpp \
+ texttracehandler.cpp
HEADERS += trksignalhandler.h \
serenum.h \
ossignalconverter.h \
ossignalconverter_p.h \
- codasignalhandler.h
+ codasignalhandler.h \
+ texttracehandler.h
DEFINES += SYMBIANUTILS_INCLUDE_PRI
diff --git a/tools/runonphone/symbianutils/codadevice.cpp b/tools/runonphone/symbianutils/codadevice.cpp
index 751f84e..f1f5db5 100644
--- a/tools/runonphone/symbianutils/codadevice.cpp
+++ b/tools/runonphone/symbianutils/codadevice.cpp
@@ -71,6 +71,7 @@ static const int maxSerialMessageLength = 0x10000; // given chunking scheme
static const char validProtocolIdStart = (char)0x90;
static const char validProtocolIdEnd = (char)0x95;
static const char codaProtocolId = (char)0x92;
+static const char textTraceProtocolId = (char)0x02;
static const unsigned char serialChunkingStart = 0xfe;
static const unsigned char serialChunkingContinuation = 0x0;
enum { SerialChunkHeaderSize = 2 };
@@ -495,7 +496,9 @@ QPair<int, int> CodaDevice::findSerialHeader(QByteArray &in)
// Good packet
const int length = trk::extractShort(in.constData() + 2);
return QPair<int, int>(4, length);
- } else if (in.at(0) == header1 && in.at(1) >= validProtocolIdStart && in.at(1) <= validProtocolIdEnd) {
+ } else if (in.at(0) == header1
+ && (in.at(1) == textTraceProtocolId
+ || (in.at(1) >= validProtocolIdStart && in.at(1) <= validProtocolIdEnd))) {
// We recognise it but it's not a TCF message - emit it for any interested party to handle
const int length = trk::extractShort(in.constData() + 2);
if (4 + length <= in.size()) {
diff --git a/tools/runonphone/symbianutils/symbiandevicemanager.cpp b/tools/runonphone/symbianutils/symbiandevicemanager.cpp
index 23f5348..e8d0b5e 100644
--- a/tools/runonphone/symbianutils/symbiandevicemanager.cpp
+++ b/tools/runonphone/symbianutils/symbiandevicemanager.cpp
@@ -57,6 +57,7 @@
#include <QtCore/QThread>
#include <QtCore/QWaitCondition>
#include <QtCore/QTimer>
+#include <QtCore/QDir>
namespace SymbianUtils {
@@ -622,6 +623,20 @@ SymbianDeviceManager::SymbianDeviceList SymbianDeviceManager::blueToothDevices()
}
}
#endif
+#if defined(Q_OS_MAC)
+ QDir dir("/dev");
+ QStringList filters;
+ filters << "cu.usbmodem*";
+ dir.setNameFilters(filters);
+ QStringList entries = dir.entryList(QDir::System, QDir::Name);
+ foreach (const QString &dev, entries) {
+ SymbianDeviceData *device = new SymbianDeviceData;
+ device->type = SerialPortCommunication;
+ device->portName = dir.filePath(dev);
+ device->friendlyName = tr("USB/Serial device (%1)").arg(device->portName);
+ rc.push_back(SymbianDevice(device));
+ }
+#endif
return rc;
}
diff --git a/tools/runonphone/texttracehandler.cpp b/tools/runonphone/texttracehandler.cpp
new file mode 100644
index 0000000..fff02e9
--- /dev/null
+++ b/tools/runonphone/texttracehandler.cpp
@@ -0,0 +1,89 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the tools applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QTextStream>
+#include "texttracehandler.h"
+#include "trkutils.h"
+
+class TextTraceHandlerPrivate
+{
+public:
+ TextTraceHandlerPrivate();
+ ~TextTraceHandlerPrivate();
+ QIODevice *device;
+ QTextStream out;
+};
+
+TextTraceHandlerPrivate::TextTraceHandlerPrivate()
+: out(stdout)
+{
+}
+
+TextTraceHandlerPrivate::~TextTraceHandlerPrivate()
+{
+ delete device;
+}
+
+TextTraceHandler::TextTraceHandler(QIODevice *device, QObject *parent)
+: QObject(parent)
+{
+ d = new TextTraceHandlerPrivate;
+ d->device = device;
+ connect(device, SIGNAL(readyRead()), this, SLOT(dataAvailable()));
+}
+
+TextTraceHandler::~TextTraceHandler()
+{
+ delete d;
+}
+
+void TextTraceHandler::dataAvailable()
+{
+ QByteArray result = d->device->readAll();
+ quint64 secs = 0;
+ quint64 ns = 0;
+ if (result.length() >= 8) {
+ quint64 timestamp = trk::extractInt64(result.constData()) & 0x0FFFFFFFFFFFFFFFULL;
+ secs = timestamp / 1000000000;
+ ns = timestamp % 1000000000;
+ }
+ d->out << QString("[%1.%2] %3").arg(secs).arg(ns).arg(QString(result.mid(8))) << endl;
+}
diff --git a/tools/runonphone/texttracehandler.h b/tools/runonphone/texttracehandler.h
new file mode 100644
index 0000000..2b9359c
--- /dev/null
+++ b/tools/runonphone/texttracehandler.h
@@ -0,0 +1,57 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the tools applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QObject>
+#include <QIODevice>
+
+class TextTraceHandlerPrivate;
+class TextTraceHandler : public QObject
+{
+ Q_OBJECT
+public:
+ TextTraceHandler(QIODevice *device, QObject *parent = 0);
+ ~TextTraceHandler();
+
+public slots:
+ void dataAvailable();
+private:
+ TextTraceHandlerPrivate *d;
+};
diff --git a/tools/runonphone/trksignalhandler.cpp b/tools/runonphone/trksignalhandler.cpp
index 59ff22c..52de3c8 100644
--- a/tools/runonphone/trksignalhandler.cpp
+++ b/tools/runonphone/trksignalhandler.cpp
@@ -106,7 +106,7 @@ void TrkSignalHandler::canNotCloseFile(const QString &filename, const QString &e
void TrkSignalHandler::installingStarted(const QString &packageName)
{
if (d->loglevel > 0)
- d->out << "Installing" << packageName << "..." << endl;
+ d->out << "Installing " << packageName << "..." << endl;
}
void TrkSignalHandler::canNotInstall(const QString &packageFilename, const QString &errorMessage)