summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorQt Continuous Integration System <qt-info@nokia.com>2010-03-17 06:18:30 (GMT)
committerQt Continuous Integration System <qt-info@nokia.com>2010-03-17 06:18:30 (GMT)
commit85e625accb7f55b51e19016313bb204f6f0f835c (patch)
treeb60a7fd15f68d49c530bfa3ca326bdcfe070a9c3 /tools
parent53fd1e2fd9c75d7d55606d4ac5df75eda96b9cc9 (diff)
parent67d8b96d11b560367f068c2466664898a6fb5aed (diff)
downloadQt-85e625accb7f55b51e19016313bb204f6f0f835c.zip
Qt-85e625accb7f55b51e19016313bb204f6f0f835c.tar.gz
Qt-85e625accb7f55b51e19016313bb204f6f0f835c.tar.bz2
Merge branch '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-1 into 4.7-integration
* '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-1: (83 commits) probably need to update user configurations once in a while too use dynamicstore instead Define JS_NO_EXPORT to avoid JSC C API functions being exported Don't use QScriptValueIterator to iterate over an array QtScript: Fix regression when calling newQObject() from native constructor Added note to OS X installation instructions. Keypress events ignored in listview on Cocoa (64 Bit) with Japanese IME Update only appropriate rectangles during update_sys(). Marked QTDS obsolete from Qt 4.7. QNetworkReply: Fix canReadLine() Abort waiting replies on session error. different approach to fixing "the other" aliasing issue fix aliasing issue in node_construct() detach in fewer cases, remove redundant calculation SSL: Fix memleak related to local certificate Improve keyboard layout detection on X11 Compile on ARM with -Werror -Wold-style-cast Use the vista-style native dialog for QFileDialog::getExistingDirectory Apply the stdset attribute for resource properties doc: Completed sentence about HideNameFilterDetails ...
Diffstat (limited to 'tools')
-rw-r--r--tools/assistant/lib/qhelpcontentwidget.cpp3
-rw-r--r--tools/assistant/lib/qhelpengine.cpp17
-rw-r--r--tools/assistant/lib/qhelpindexwidget.cpp3
-rw-r--r--tools/assistant/tools/assistant/helpenginewrapper.cpp10
-rw-r--r--tools/assistant/tools/assistant/mainwindow.cpp2
-rw-r--r--tools/configure/configureapp.cpp42
-rw-r--r--tools/designer/src/lib/uilib/properties.cpp11
-rw-r--r--tools/qdbus/qdbusviewer/qdbusmodel.cpp14
-rw-r--r--tools/qdbus/qdbusviewer/qdbusmodel.h1
-rw-r--r--tools/qdbus/qdbusviewer/qdbusviewer.cpp97
-rw-r--r--tools/qdbus/qdbusviewer/qdbusviewer.h7
-rw-r--r--tools/qdoc3/codeparser.cpp1
-rw-r--r--tools/qdoc3/generator.cpp4
-rw-r--r--tools/qdoc3/htmlgenerator.cpp9
-rw-r--r--tools/qdoc3/main.cpp7
-rw-r--r--tools/qdoc3/node.cpp23
-rw-r--r--tools/qdoc3/tree.cpp2
-rw-r--r--tools/qml/content/Browser.qml10
-rw-r--r--tools/qml/qml.pro2
19 files changed, 184 insertions, 81 deletions
diff --git a/tools/assistant/lib/qhelpcontentwidget.cpp b/tools/assistant/lib/qhelpcontentwidget.cpp
index a80dc39..6f3f942 100644
--- a/tools/assistant/lib/qhelpcontentwidget.cpp
+++ b/tools/assistant/lib/qhelpcontentwidget.cpp
@@ -370,7 +370,8 @@ void QHelpContentModel::invalidateContents(bool onShutDown)
delete d->rootItem;
d->rootItem = 0;
}
- reset();
+ if (!onShutDown)
+ reset();
}
/*!
diff --git a/tools/assistant/lib/qhelpengine.cpp b/tools/assistant/lib/qhelpengine.cpp
index 96cf0fd..e8ae31b 100644
--- a/tools/assistant/lib/qhelpengine.cpp
+++ b/tools/assistant/lib/qhelpengine.cpp
@@ -75,14 +75,15 @@ void QHelpEnginePrivate::init(const QString &collectionFile,
{
QHelpEngineCorePrivate::init(collectionFile, helpEngineCore);
- contentModel = new QHelpContentModel(this);
- indexModel = new QHelpIndexModel(this);
-
- connect(helpEngineCore, SIGNAL(setupFinished()),
- this, SLOT(applyCurrentFilter()));
- connect(helpEngineCore, SIGNAL(currentFilterChanged(QString)),
- this, SLOT(applyCurrentFilter()));
-
+ if (!contentModel)
+ contentModel = new QHelpContentModel(this);
+ if (!indexModel)
+ indexModel = new QHelpIndexModel(this);
+
+ connect(helpEngineCore, SIGNAL(setupFinished()), this,
+ SLOT(applyCurrentFilter()));
+ connect(helpEngineCore, SIGNAL(currentFilterChanged(QString)), this,
+ SLOT(applyCurrentFilter()));
}
void QHelpEnginePrivate::applyCurrentFilter()
diff --git a/tools/assistant/lib/qhelpindexwidget.cpp b/tools/assistant/lib/qhelpindexwidget.cpp
index 270bcdd..11b9966 100644
--- a/tools/assistant/lib/qhelpindexwidget.cpp
+++ b/tools/assistant/lib/qhelpindexwidget.cpp
@@ -244,7 +244,8 @@ void QHelpIndexModel::invalidateIndex(bool onShutDown)
disconnect(this, SLOT(insertIndices()));
d->indexProvider->stopCollecting();
d->indices.clear();
- filter(QString());
+ if (!onShutDown)
+ filter(QString());
}
/*!
diff --git a/tools/assistant/tools/assistant/helpenginewrapper.cpp b/tools/assistant/tools/assistant/helpenginewrapper.cpp
index 41ad633..9748702 100644
--- a/tools/assistant/tools/assistant/helpenginewrapper.cpp
+++ b/tools/assistant/tools/assistant/helpenginewrapper.cpp
@@ -112,7 +112,6 @@ private:
QFileSystemWatcher * const m_qchWatcher;
typedef QPair<QDateTime, QSharedPointer<TimeoutForwarder> > RecentSignal;
QMap<QString, RecentSignal> m_recentQchUpdates;
- bool m_initialReindexingNeeded;
};
const QString HelpEngineWrapper::TrUnfiltered = tr("Unfiltered");
@@ -182,8 +181,7 @@ void HelpEngineWrapper::initialDocSetupDone()
TRACE_OBJ
connect(d->m_helpEngine, SIGNAL(setupFinished()),
searchEngine(), SLOT(indexDocumentation()));
- if (d->m_initialReindexingNeeded)
- setupData();
+ setupData();
}
QHelpSearchEngine *HelpEngineWrapper::searchEngine() const
@@ -236,7 +234,6 @@ bool HelpEngineWrapper::registerDocumentation(const QString &docFile)
return false;
d->m_qchWatcher->addPath(docFile);
d->checkDocFilesWatched();
- d->m_initialReindexingNeeded = true;
return true;
}
@@ -249,7 +246,6 @@ bool HelpEngineWrapper::unregisterDocumentation(const QString &namespaceName)
return false;
d->m_qchWatcher->removePath(file);
d->checkDocFilesWatched();
- d->m_initialReindexingNeeded = true;
return true;
}
@@ -729,8 +725,7 @@ void TimeoutForwarder::forward()
HelpEngineWrapperPrivate::HelpEngineWrapperPrivate(const QString &collectionFile)
: m_helpEngine(new QHelpEngine(collectionFile, this)),
- m_qchWatcher(new QFileSystemWatcher(this)),
- m_initialReindexingNeeded(false)
+ m_qchWatcher(new QFileSystemWatcher(this))
{
TRACE_OBJ
if (!m_helpEngine->customFilters().contains(Unfiltered))
@@ -829,7 +824,6 @@ void HelpEngineWrapperPrivate::qchFileChanged(const QString &fileName,
} else {
emit documentationUpdated(ns);
}
- m_initialReindexingNeeded = true;
m_helpEngine->setupData();
}
m_recentQchUpdates.erase(it);
diff --git a/tools/assistant/tools/assistant/mainwindow.cpp b/tools/assistant/tools/assistant/mainwindow.cpp
index 687e6bc..c403aa7 100644
--- a/tools/assistant/tools/assistant/mainwindow.cpp
+++ b/tools/assistant/tools/assistant/mainwindow.cpp
@@ -361,6 +361,7 @@ void MainWindow::qtDocumentationInstalled()
void MainWindow::checkInitState()
{
TRACE_OBJ
+ HelpEngineWrapper::instance().initialDocSetupDone();
if (!m_cmdLine->enableRemoteControl())
return;
@@ -381,7 +382,6 @@ void MainWindow::checkInitState()
}
emit initDone();
}
- HelpEngineWrapper::instance().initialDocSetupDone();
}
void MainWindow::insertLastPages()
diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp
index dd68fcd..8a47991 100644
--- a/tools/configure/configureapp.cpp
+++ b/tools/configure/configureapp.cpp
@@ -2082,12 +2082,10 @@ bool Configure::checkAvailability(const QString &part)
}
} else if (part == "WMSDK") {
available = findFile("wmsdk.h");
- } else if (part == "MULTIMEDIA" || part == "SCRIPT" || part == "SCRIPTTOOLS") {
+ } else if (part == "MULTIMEDIA" || part == "SCRIPT" || part == "SCRIPTTOOLS" || part == "DECLARATIVE") {
available = true;
} else if (part == "WEBKIT") {
available = (dictionary.value("QMAKESPEC") == "win32-msvc2005") || (dictionary.value("QMAKESPEC") == "win32-msvc2008") || (dictionary.value("QMAKESPEC") == "win32-g++");
- } else if (part == "DECLARATIVE") {
- available = QFile::exists(sourcePath + "/src/declarative/qml/qdeclarativecomponent.h");
} else if (part == "AUDIO_BACKEND") {
available = true;
if (dictionary.contains("XQMAKESPEC") && dictionary["XQMAKESPEC"].startsWith("symbian")) {
@@ -2213,7 +2211,7 @@ void Configure::autoDetection()
if (dictionary["SCRIPT"] == "auto")
dictionary["SCRIPT"] = checkAvailability("SCRIPT") ? "yes" : "no";
if (dictionary["SCRIPTTOOLS"] == "auto")
- dictionary["SCRIPTTOOLS"] = checkAvailability("SCRIPTTOOLS") ? "yes" : "no";
+ dictionary["SCRIPTTOOLS"] = dictionary["SCRIPT"] == "yes" ? "yes" : "no";
if (dictionary["XMLPATTERNS"] == "auto")
dictionary["XMLPATTERNS"] = checkAvailability("XMLPATTERNS") ? "yes" : "no";
if (dictionary["PHONON"] == "auto")
@@ -2221,7 +2219,7 @@ void Configure::autoDetection()
if (dictionary["WEBKIT"] == "auto")
dictionary["WEBKIT"] = checkAvailability("WEBKIT") ? "yes" : "no";
if (dictionary["DECLARATIVE"] == "auto")
- dictionary["DECLARATIVE"] = checkAvailability("DECLARATIVE") ? "yes" : "no";
+ dictionary["DECLARATIVE"] = dictionary["SCRIPT"] == "yes" ? "yes" : "no";
if (dictionary["AUDIO_BACKEND"] == "auto")
dictionary["AUDIO_BACKEND"] = checkAvailability("AUDIO_BACKEND") ? "yes" : "no";
if (dictionary["MEDIASERVICE"] == "auto")
@@ -2271,15 +2269,23 @@ bool Configure::verifyConfiguration()
if(_getch() == 3) // _Any_ keypress w/no echo(eat <Enter> for stdout)
exit(0); // Exit cleanly for Ctrl+C
}
- if (0 != dictionary["ARM_FPU_TYPE"].size())
- {
- QStringList l= QStringList()
- << "softvfp"
- << "softvfp+vfpv2"
- << "vfpv2";
- if (!(l.contains(dictionary["ARM_FPU_TYPE"])))
- cout << QString("WARNING: Using unsupported fpu flag: %1").arg(dictionary["ARM_FPU_TYPE"]) << endl;
- }
+ if (0 != dictionary["ARM_FPU_TYPE"].size()) {
+ QStringList l= QStringList()
+ << "softvfp"
+ << "softvfp+vfpv2"
+ << "vfpv2";
+ if (!(l.contains(dictionary["ARM_FPU_TYPE"])))
+ cout << QString("WARNING: Using unsupported fpu flag: %1").arg(dictionary["ARM_FPU_TYPE"]) << endl;
+ }
+ if (dictionary["DECLARATIVE"] == "yes" && dictionary["SCRIPT"] == "no") {
+ cout << "WARNING: To be able to compile QtDeclarative we need to also compile the" << endl
+ << "QtScript module. If you continue, we will turn on the QtScript module." << endl
+ << "(Press any key to continue..)";
+ if(_getch() == 3) // _Any_ keypress w/no echo(eat <Enter> for stdout)
+ exit(0); // Exit cleanly for Ctrl+C
+
+ dictionary["SCRIPT"] = "yes";
+ }
return true;
}
@@ -2628,8 +2634,14 @@ void Configure::generateOutputVars()
if (dictionary["WEBKIT"] == "yes")
qtConfig += "webkit";
- if (dictionary["DECLARATIVE"] == "yes")
+ if (dictionary["DECLARATIVE"] == "yes") {
+ if (dictionary[ "SCRIPT" ] == "no") {
+ cout << "QtDeclarative was requested, but it can't be built due to QtScript being "
+ "disabled." << endl;
+ dictionary[ "DONE" ] = "error";
+ }
qtConfig += "declarative";
+ }
if( dictionary[ "NATIVE_GESTURES" ] == "yes" )
qtConfig += "native-gestures";
diff --git a/tools/designer/src/lib/uilib/properties.cpp b/tools/designer/src/lib/uilib/properties.cpp
index 8eccee1..615aa8a 100644
--- a/tools/designer/src/lib/uilib/properties.cpp
+++ b/tools/designer/src/lib/uilib/properties.cpp
@@ -655,16 +655,21 @@ DomProperty *variantToDomProperty(QAbstractFormBuilder *afb, const QMetaObject *
case QVariant::Brush:
dom_prop->setElementBrush(afb->saveBrush(qvariant_cast<QBrush>(v)));
break;
- default:
+ default: {
+ const bool hadAttributeStdset = dom_prop->hasAttributeStdset();
+ const bool attributeStdset = dom_prop->attributeStdset();
delete dom_prop;
if (afb->resourceBuilder()->isResourceType(v)) {
dom_prop = afb->resourceBuilder()->saveResource(afb->workingDirectory(), v);
- if (dom_prop)
+ if (dom_prop) {
dom_prop->setAttributeName(pname);
+ if (hadAttributeStdset)
+ dom_prop->setAttributeStdset(attributeStdset);
+ }
break;
}
uiLibWarning(msgCannotWriteProperty(pname, v));
- return 0;
+ } return 0;
}
return dom_prop;
}
diff --git a/tools/qdbus/qdbusviewer/qdbusmodel.cpp b/tools/qdbus/qdbusviewer/qdbusmodel.cpp
index befe4b4..f85e288 100644
--- a/tools/qdbus/qdbusviewer/qdbusmodel.cpp
+++ b/tools/qdbus/qdbusviewer/qdbusmodel.cpp
@@ -75,6 +75,7 @@ struct QDBusItem
bool isPrefetched;
QString name;
QString caption;
+ QString typeSignature;
};
QDomDocument QDBusModel::introspect(const QString &path)
@@ -118,6 +119,13 @@ void QDBusModel::addMethods(QDBusItem *parent, const QDomElement &iface)
item = new QDBusItem(QDBusModel::MethodItem,
child.attribute(QLatin1String("name")), parent);
item->caption = QLatin1String("Method: ") + item->name;
+ //get "type" from <arg> where "direction" is "in"
+ QDomElement n = child.firstChildElement();
+ while (!n.isNull()) {
+ if (n.attribute(QLatin1String("direction")) == QLatin1String("in"))
+ item->typeSignature += n.attribute(QLatin1String("type"));
+ n = n.nextSiblingElement();
+ }
} else if (child.tagName() == QLatin1String("signal")) {
item = new QDBusItem(QDBusModel::SignalItem,
child.attribute(QLatin1String("name")), parent);
@@ -298,6 +306,12 @@ QString QDBusModel::dBusMethodName(const QModelIndex &index) const
return item ? item->name : QString();
}
+QString QDBusModel::dBusTypeSignature(const QModelIndex &index) const
+{
+ QDBusItem *item = static_cast<QDBusItem *>(index.internalPointer());
+ return item ? item->typeSignature : QString();
+}
+
QModelIndex QDBusModel::findObject(const QDBusObjectPath &objectPath)
{
QStringList path = objectPath.path().split(QLatin1Char('/'), QString::SkipEmptyParts);
diff --git a/tools/qdbus/qdbusviewer/qdbusmodel.h b/tools/qdbus/qdbusviewer/qdbusmodel.h
index 1a3d8f0..e83c381 100644
--- a/tools/qdbus/qdbusviewer/qdbusmodel.h
+++ b/tools/qdbus/qdbusviewer/qdbusmodel.h
@@ -72,6 +72,7 @@ public:
QString dBusPath(const QModelIndex &index) const;
QString dBusInterface(const QModelIndex &index) const;
QString dBusMethodName(const QModelIndex &index) const;
+ QString dBusTypeSignature(const QModelIndex &index) const;
void refresh(const QModelIndex &index = QModelIndex());
diff --git a/tools/qdbus/qdbusviewer/qdbusviewer.cpp b/tools/qdbus/qdbusviewer/qdbusviewer.cpp
index e9695dc..9878aff 100644
--- a/tools/qdbus/qdbusviewer/qdbusviewer.cpp
+++ b/tools/qdbus/qdbusviewer/qdbusviewer.cpp
@@ -69,9 +69,16 @@ QDBusViewer::QDBusViewer(const QDBusConnection &connection, QWidget *parent) :
c(connection),
objectPathRegExp(QLatin1String("\\[ObjectPath: (.*)\\]"))
{
- services = new QTreeWidget;
- services->setRootIsDecorated(false);
- services->setHeaderLabels(QStringList(QLatin1String("Services")));
+ servicesModel = new QStringListModel(this);
+ servicesFilterModel = new QSortFilterProxyModel(this);
+ servicesFilterModel->setSourceModel(servicesModel);
+ servicesFilterModel->setFilterCaseSensitivity(Qt::CaseInsensitive);
+ serviceFilterLine = new QLineEdit(this);
+ serviceFilterLine->setPlaceholderText(tr("Search..."));
+ servicesView = new QListView(this);
+ servicesView->setModel(servicesFilterModel);
+
+ connect(serviceFilterLine, SIGNAL(textChanged(QString)), servicesFilterModel, SLOT(setFilterFixedString(QString)));
tree = new QTreeView;
tree->setContextMenuPolicy(Qt::CustomContextMenu);
@@ -86,19 +93,28 @@ QDBusViewer::QDBusViewer(const QDBusConnection &connection, QWidget *parent) :
QShortcut *refreshShortcut = new QShortcut(QKeySequence::Refresh, tree);
connect(refreshShortcut, SIGNAL(activated()), this, SLOT(refreshChildren()));
- QVBoxLayout *topLayout = new QVBoxLayout(this);
+ QVBoxLayout *layout = new QVBoxLayout(this);
+ QSplitter *topSplitter = new QSplitter(Qt::Vertical, this);
+ layout->addWidget(topSplitter);
+
log = new QTextBrowser;
connect(log, SIGNAL(anchorClicked(QUrl)), this, SLOT(anchorClicked(QUrl)));
- QHBoxLayout *layout = new QHBoxLayout;
- layout->addWidget(services, 1);
- layout->addWidget(tree, 2);
+ QSplitter *splitter = new QSplitter(topSplitter);
+ splitter->addWidget(servicesView);
+
+ QWidget *servicesWidget = new QWidget;
+ QVBoxLayout *servicesLayout = new QVBoxLayout(servicesWidget);
+ servicesLayout->addWidget(serviceFilterLine);
+ servicesLayout->addWidget(servicesView);
+ splitter->addWidget(servicesWidget);
+ splitter->addWidget(tree);
- topLayout->addLayout(layout);
- topLayout->addWidget(log);
+ topSplitter->addWidget(splitter);
+ topSplitter->addWidget(log);
- connect(services, SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)),
- this, SLOT(serviceChanged(QTreeWidgetItem*)));
+ connect(servicesView->selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)),
+ this, SLOT(serviceChanged(QModelIndex)));
connect(tree, SIGNAL(customContextMenuRequested(QPoint)),
this, SLOT(showContextMenu(QPoint)));
@@ -133,12 +149,11 @@ void QDBusViewer::logError(const QString &msg)
void QDBusViewer::refresh()
{
- services->clear();
+ servicesModel->removeRows(0, servicesModel->rowCount());
if (c.isConnected()) {
const QStringList serviceNames = c.interface()->registeredServiceNames();
- foreach (QString service, serviceNames)
- new QTreeWidgetItem(services, QStringList(service));
+ servicesModel->setStringList(serviceNames);
}
}
@@ -154,6 +169,7 @@ void QDBusViewer::activate(const QModelIndex &item)
sig.mPath = model->dBusPath(item);
sig.mInterface = model->dBusInterface(item);
sig.mName = model->dBusMethodName(item);
+ sig.mTypeSig = model->dBusTypeSignature(item);
switch (model->itemType(item)) {
case QDBusModel::SignalItem:
@@ -207,6 +223,17 @@ void QDBusViewer::setProperty(const BusSignature &sig)
}
+static QString getDbusSignature(const QMetaMethod& method)
+{
+ // create a D-Bus type signature from QMetaMethod's parameters
+ QString sig;
+ for (int i = 0; i < method.parameterTypes().count(); ++i) {
+ QVariant::Type type = QVariant::nameToType(method.parameterTypes().at(i));
+ sig.append(QString::fromLatin1(QDBusMetaType::typeToSignature(type)));
+ }
+ return sig;
+}
+
void QDBusViewer::callMethod(const BusSignature &sig)
{
QDBusInterface iface(sig.mService, sig.mPath, sig.mInterface, c);
@@ -217,7 +244,8 @@ void QDBusViewer::callMethod(const BusSignature &sig)
for (int i = 0; i < mo->methodCount(); ++i) {
const QString signature = QString::fromLatin1(mo->method(i).signature());
if (signature.startsWith(sig.mName) && signature.at(sig.mName.length()) == QLatin1Char('('))
- method = mo->method(i);
+ if (getDbusSignature(mo->method(i)) == sig.mTypeSig)
+ method = mo->method(i);
}
if (!method.signature()) {
QMessageBox::warning(this, tr("Unable to find method"),
@@ -277,6 +305,7 @@ void QDBusViewer::showContextMenu(const QPoint &point)
sig.mPath = model->dBusPath(item);
sig.mInterface = model->dBusInterface(item);
sig.mName = model->dBusMethodName(item);
+ sig.mTypeSig = model->dBusTypeSignature(item);
QMenu menu;
menu.addAction(refreshAction);
@@ -379,14 +408,14 @@ void QDBusViewer::dumpMessage(const QDBusMessage &message)
log->append(out);
}
-void QDBusViewer::serviceChanged(QTreeWidgetItem *item)
+void QDBusViewer::serviceChanged(const QModelIndex &index)
{
delete tree->model();
currentService.clear();
- if (!item)
+ if (!index.isValid())
return;
- currentService = item->text(0);
+ currentService = index.data().toString();
tree->setModel(new QDBusViewModel(currentService, c));
connect(tree->model(), SIGNAL(busError(QString)), this, SLOT(logError(QString)));
@@ -397,34 +426,38 @@ void QDBusViewer::serviceRegistered(const QString &service)
if (service == c.baseService())
return;
- new QTreeWidgetItem(services, QStringList(service));
+ servicesModel->insertRows(0, 1);
+ servicesModel->setData(servicesModel->index(0, 0), service);
}
-static QTreeWidgetItem *findItem(const QTreeWidget *services, const QString &name)
+static QModelIndex findItem(QStringListModel *servicesModel, const QString &name)
{
- for (int i = 0; i < services->topLevelItemCount(); ++i) {
- if (services->topLevelItem(i)->text(0) == name)
- return services->topLevelItem(i);
- }
- return 0;
+ QModelIndexList hits = servicesModel->match(servicesModel->index(0, 0), Qt::DisplayRole, name);
+ if (hits.isEmpty())
+ return QModelIndex();
+
+ return hits.first();
}
void QDBusViewer::serviceUnregistered(const QString &name)
{
- delete findItem(services, name);
+ QModelIndex hit = findItem(servicesModel, name);
+ if (!hit.isValid())
+ return;
+ servicesModel->removeRows(hit.row(), 1);
}
void QDBusViewer::serviceOwnerChanged(const QString &name, const QString &oldOwner,
const QString &newOwner)
{
- QTreeWidgetItem *item = findItem(services, name);
+ QModelIndex hit = findItem(servicesModel, name);
- if (!item && oldOwner.isEmpty() && !newOwner.isEmpty())
+ if (!hit.isValid() && oldOwner.isEmpty() && !newOwner.isEmpty())
serviceRegistered(name);
- else if (item && !oldOwner.isEmpty() && newOwner.isEmpty())
- delete item;
- else if (item && !oldOwner.isEmpty() && !newOwner.isEmpty()) {
- delete item;
+ else if (hit.isValid() && !oldOwner.isEmpty() && newOwner.isEmpty())
+ servicesModel->removeRows(hit.row(), 1);
+ else if (hit.isValid() && !oldOwner.isEmpty() && !newOwner.isEmpty()) {
+ servicesModel->removeRows(hit.row(), 1);
serviceRegistered(name);
}
}
diff --git a/tools/qdbus/qdbusviewer/qdbusviewer.h b/tools/qdbus/qdbusviewer/qdbusviewer.h
index 207f7a3..d5d1a69 100644
--- a/tools/qdbus/qdbusviewer/qdbusviewer.h
+++ b/tools/qdbus/qdbusviewer/qdbusviewer.h
@@ -52,6 +52,7 @@ QT_FORWARD_DECLARE_CLASS(QDomElement);
struct BusSignature
{
QString mService, mPath, mInterface, mName;
+ QString mTypeSig;
};
class QDBusViewer: public QWidget
@@ -65,7 +66,7 @@ public slots:
void about();
private slots:
- void serviceChanged(QTreeWidgetItem *item);
+ void serviceChanged(const QModelIndex &index);
void showContextMenu(const QPoint &);
void connectionRequested(const BusSignature &sig);
void callMethod(const BusSignature &sig);
@@ -91,6 +92,10 @@ private:
QTreeView *tree;
QAction *refreshAction;
QTreeWidget *services;
+ QStringListModel *servicesModel;
+ QSortFilterProxyModel *servicesFilterModel;
+ QLineEdit *serviceFilterLine;
+ QListView *servicesView;
QTextBrowser *log;
QRegExp objectPathRegExp;
};
diff --git a/tools/qdoc3/codeparser.cpp b/tools/qdoc3/codeparser.cpp
index 042378e..a717ff1 100644
--- a/tools/qdoc3/codeparser.cpp
+++ b/tools/qdoc3/codeparser.cpp
@@ -47,6 +47,7 @@
#include "node.h"
#include "tree.h"
#include "config.h"
+#include <QDebug>
QT_BEGIN_NAMESPACE
diff --git a/tools/qdoc3/generator.cpp b/tools/qdoc3/generator.cpp
index 80f7e45..0c6497b 100644
--- a/tools/qdoc3/generator.cpp
+++ b/tools/qdoc3/generator.cpp
@@ -1194,10 +1194,14 @@ void Generator::appendSortedQmlNames(Text& text,
QMap<QString,Text> classMap;
int index = 0;
+#ifdef DEBUG_MULTIPLE QDOCCONF_FILES
qDebug() << "Generator::appendSortedQmlNames():" << base->name() << "is inherited by...";
+#endif
for (int i = 0; i < subs.size(); ++i) {
Text t;
+#ifdef DEBUG_MULTIPLE QDOCCONF_FILES
qDebug() << " " << subs[i]->name();
+#endif
appendFullName(t, subs[i], base, marker);
classMap[t.toString().toLower()] = t;
}
diff --git a/tools/qdoc3/htmlgenerator.cpp b/tools/qdoc3/htmlgenerator.cpp
index 411a886..c1e3678 100644
--- a/tools/qdoc3/htmlgenerator.cpp
+++ b/tools/qdoc3/htmlgenerator.cpp
@@ -703,8 +703,6 @@ int HtmlGenerator::generateAtom(const Atom *atom,
case Node::Fake:
if (node->subType() == Node::QmlClass) {
sections[QmlClass].appendMember((Node*)node);
- //qDebug() << "HtmlGenerator::generateAtom(): Atom::SinceList, append"
- // << node->name();
}
break;
case Node::Namespace:
@@ -3769,7 +3767,6 @@ void HtmlGenerator::findAllSince(const InnerNode *node)
className = (*child)->parent()->name()+"::"+className;
nsmap.value().insert(className,(*child));
nqcmap.value().insert(className,(*child));
- //qDebug() << "findAllSince(): insert" << className << sinceVersion;
}
}
else {
@@ -3991,10 +3988,12 @@ QString HtmlGenerator::getLink(const Atom *atom,
}
else {
*node = marker->resolveTarget(first, myTree, relative);
- if (!*node)
+ if (!*node) {
*node = myTree->findFakeNodeByTitle(first);
- if (!*node)
+ }
+ if (!*node) {
*node = myTree->findUnambiguousTarget(first, targetAtom);
+ }
}
if (*node) {
diff --git a/tools/qdoc3/main.cpp b/tools/qdoc3/main.cpp
index ea843ba..fe4ad86 100644
--- a/tools/qdoc3/main.cpp
+++ b/tools/qdoc3/main.cpp
@@ -70,6 +70,7 @@
#include "webxmlgenerator.h"
#include "tokenizer.h"
#include "tree.h"
+#include <qdebug.h>
#include "qtranslator.h"
#ifndef QT_BOOTSTRAPPED
@@ -362,7 +363,13 @@ static void processQdocconfFile(const QString &fileName)
#ifndef QT_NO_TRANSLATION
qDeleteAll(translators);
#endif
+#ifdef DEBUG_SHUTDOWN_CRASH
+ qDebug() << "main(): Delete tree";
+#endif
delete tree;
+#ifdef DEBUG_SHUTDOWN_CRASH
+ qDebug() << "main(): Tree deleted";
+#endif
}
QT_END_NAMESPACE
diff --git a/tools/qdoc3/node.cpp b/tools/qdoc3/node.cpp
index d4e4196..d60ff73 100644
--- a/tools/qdoc3/node.cpp
+++ b/tools/qdoc3/node.cpp
@@ -207,16 +207,33 @@ InnerNode::~InnerNode()
}
/*!
+ Find the node in this node's children that has the
+ given \a name. If this node is a QML class node, be
+ sure to also look in the children of its property
+ group nodes. Return the matching node or 0.
*/
Node *InnerNode::findNode(const QString& name)
{
Node *node = childMap.value(name);
if (node)
return node;
+ if ((type() == Fake) && (subType() == QmlClass)) {
+ for (int i=0; i<children.size(); ++i) {
+ Node* n = children.at(i);
+ if (n->subType() == QmlPropertyGroup) {
+ node = static_cast<InnerNode*>(n)->findNode(name);
+ if (node)
+ return node;
+ }
+ }
+ }
return primaryFunctionMap.value(name);
}
/*!
+ Same as the other findNode(), but if the node with the
+ specified \a name is not of the specified \a type, return
+ 0.
*/
Node *InnerNode::findNode(const QString& name, Type type)
{
@@ -1280,7 +1297,9 @@ QmlClassNode::QmlClassNode(InnerNode *parent,
*/
QmlClassNode::~QmlClassNode()
{
+#ifdef DEBUG_MULTIPLE QDOCCONF_FILES
qDebug() << "Deleting QmlClassNode:" << name();
+#endif
}
/*!
@@ -1315,7 +1334,9 @@ QString QmlClassNode::fileBase() const
void QmlClassNode::addInheritedBy(const QString& base, Node* sub)
{
inheritedBy.insert(base,sub);
+#ifdef DEBUG_MULTIPLE QDOCCONF_FILES
qDebug() << "QmlClassNode::addInheritedBy(): insert" << base << sub->name() << inheritedBy.size();
+#endif
}
/*!
@@ -1326,8 +1347,10 @@ void QmlClassNode::subclasses(const QString& base, NodeList& subs)
subs.clear();
if (inheritedBy.count(base) > 0) {
subs = inheritedBy.values(base);
+#ifdef DEBUG_MULTIPLE QDOCCONF_FILES
qDebug() << "QmlClassNode::subclasses():" << inheritedBy.count(base) << base
<< "subs:" << subs.size() << "total size:" << inheritedBy.size();
+#endif
}
}
diff --git a/tools/qdoc3/tree.cpp b/tools/qdoc3/tree.cpp
index 922c23e..7dcc8c3 100644
--- a/tools/qdoc3/tree.cpp
+++ b/tools/qdoc3/tree.cpp
@@ -54,6 +54,7 @@
#include "tree.h"
#include <limits.h>
+#include <qdebug.h>
QT_BEGIN_NAMESPACE
@@ -150,6 +151,7 @@ const Node *Tree::findNode(const QStringList &path,
const Node *next =
static_cast<const InnerNode*>(node)->findNode(path.at(i));
+
if (!next && (findFlags & SearchEnumValues) && i == path.size()-1)
next = static_cast<const InnerNode*>(node)->findEnumNodeForValue(path.at(i));
diff --git a/tools/qml/content/Browser.qml b/tools/qml/content/Browser.qml
index 35120bc..62996ef 100644
--- a/tools/qml/content/Browser.qml
+++ b/tools/qml/content/Browser.qml
@@ -137,12 +137,12 @@ Rectangle {
Transition {
to: "current"
SequentialAnimation {
- NumberAnimation { matchProperties: "x"; duration: 250 }
+ NumberAnimation { properties: "x"; duration: 250 }
}
},
Transition {
- NumberAnimation { matchProperties: "x"; duration: 250 }
- NumberAnimation { matchProperties: "x"; duration: 250 }
+ NumberAnimation { properties: "x"; duration: 250 }
+ NumberAnimation { properties: "x"; duration: 250 }
}
]
Keys.onPressed: { root.keyPressed = true; }
@@ -177,11 +177,11 @@ Rectangle {
Transition {
to: "current"
SequentialAnimation {
- NumberAnimation { matchProperties: "x"; duration: 250 }
+ NumberAnimation { properties: "x"; duration: 250 }
}
},
Transition {
- NumberAnimation { matchProperties: "x"; duration: 250 }
+ NumberAnimation { properties: "x"; duration: 250 }
}
]
Keys.onPressed: { root.keyPressed = true; }
diff --git a/tools/qml/qml.pro b/tools/qml/qml.pro
index 9b68dbc..a7eb6f5 100644
--- a/tools/qml/qml.pro
+++ b/tools/qml/qml.pro
@@ -55,6 +55,6 @@ symbian {
include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri)
TARGET.EPOCHEAPSIZE = 0x20000 0x2000000
HEADERS += $$QT_SOURCE_TREE/examples/network/qftp/sym_iap_util.h
- LIBS += -lesock -lconnmon -linsock
+ LIBS += -lesock -lcommdb -lconnmon -linsock
TARGET.CAPABILITY = "All -TCB"
}