From 19aef645df1e24fa4d9513136c1fee8093173eb1 Mon Sep 17 00:00:00 2001 From: Bea Lam Date: Wed, 30 Sep 2009 10:35:17 +1000 Subject: If there's only one engine, auto-connect to it and hide engines view. Also auto-load available engines on connect. --- tools/qmldebugger/engine.cpp | 17 +++++++++++++++-- tools/qmldebugger/engine.h | 4 +++- tools/qmldebugger/main.cpp | 9 +++++++-- tools/qmldebugger/watchtablemodel.cpp | 8 ++++++++ tools/qmldebugger/watchtablemodel.h | 2 ++ 5 files changed, 35 insertions(+), 5 deletions(-) diff --git a/tools/qmldebugger/engine.cpp b/tools/qmldebugger/engine.cpp index fedae6b..321f5e0 100644 --- a/tools/qmldebugger/engine.cpp +++ b/tools/qmldebugger/engine.cpp @@ -180,8 +180,9 @@ EnginePane::EnginePane(QmlDebugConnection *client, QWidget *parent) QObject::connect(m_engineView->root(), SIGNAL(engineClicked(int)), this, SLOT(engineSelected(int))); QObject::connect(m_engineView->root(), SIGNAL(refreshEngines()), - this, SLOT(queryEngines())); + this, SLOT(refreshEngines())); + m_engineView->setVisible(false); layout->addWidget(m_engineView); QSplitter *splitter = new QSplitter; @@ -421,11 +422,16 @@ void EnginePane::buildTree(const QmlDebugObjectReference &obj, QTreeWidgetItem * buildTree(obj.children().at(ii), item); } -void EnginePane::queryEngines() +void EnginePane::refreshEngines() { if (m_engines) return; + QList watches = m_watchTableModel->watches(); + for (int i=0; iisWaiting()) enginesChanged(); @@ -442,11 +448,18 @@ void EnginePane::enginesChanged() QList engines = m_engines->engines(); delete m_engines; m_engines = 0; + if (engines.isEmpty()) + qWarning("qmldebugger: no engines found!"); + for (int ii = 0; ii < engines.count(); ++ii) m_engineItems << new DebuggerEngineItem(engines.at(ii).name(), engines.at(ii).debugId()); m_engineView->rootContext()->setContextProperty("engines", qVariantFromValue(&m_engineItems)); + + m_engineView->setVisible(m_engineItems.count() > 1); + if (m_engineItems.count() == 1) + engineSelected(qobject_cast(m_engineItems.at(0))->engineId()); } void EnginePane::fetchObject(int id) diff --git a/tools/qmldebugger/engine.h b/tools/qmldebugger/engine.h index 62fc6fb..c7707ed 100644 --- a/tools/qmldebugger/engine.h +++ b/tools/qmldebugger/engine.h @@ -32,8 +32,10 @@ Q_OBJECT public: EnginePane(QmlDebugConnection *, QWidget *parent = 0); +public slots: + void refreshEngines(); + private slots: - void queryEngines(); void enginesChanged(); void queryContext(int); diff --git a/tools/qmldebugger/main.cpp b/tools/qmldebugger/main.cpp index a37a437..7fabfb7 100644 --- a/tools/qmldebugger/main.cpp +++ b/tools/qmldebugger/main.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #include "canvasframerate.h" #include "engine.h" #include @@ -35,6 +36,8 @@ private: QSpinBox *m_port; QPushButton *m_connectButton; QPushButton *m_disconnectButton; + + EnginePane *m_enginePane; }; Shell::Shell(QWidget *parent) @@ -74,8 +77,8 @@ Shell::Shell(QWidget *parent) CanvasFrameRate *cfr = new CanvasFrameRate(&client, this); tabs->addTab(cfr, tr("Frame Rate")); - EnginePane *ep = new EnginePane(&client, this); - tabs->addTab(ep, tr("QML Engine")); + m_enginePane = new EnginePane(&client, this); + tabs->addTab(m_enginePane, tr("QML Engine")); QObject::connect(&client, SIGNAL(stateChanged(QAbstractSocket::SocketState)), this, SLOT(connectionStateChanged())); connectionStateChanged(); @@ -104,6 +107,8 @@ void Shell::connectionStateChanged() m_connectionState->setText(tr("Connected")); m_connectButton->setEnabled(false); m_disconnectButton->setEnabled(true); + + QTimer::singleShot(0, m_enginePane, SLOT(refreshEngines())); break; case QAbstractSocket::ClosingState: m_connectionState->setText(tr("Closing")); diff --git a/tools/qmldebugger/watchtablemodel.cpp b/tools/qmldebugger/watchtablemodel.cpp index 2fed199..9d3ca1e 100644 --- a/tools/qmldebugger/watchtablemodel.cpp +++ b/tools/qmldebugger/watchtablemodel.cpp @@ -87,6 +87,14 @@ QmlDebugWatch *WatchTableModel::findWatch(int objectDebugId, const QString &prop return 0; } +QList WatchTableModel::watches() const +{ + QList watches; + for (int i=0; i watches() const; + int rowCount(const QModelIndex &parent = QModelIndex()) const; int columnCount(const QModelIndex &parent = QModelIndex()) const; QVariant headerData(int section, Qt::Orientation orientation, int role) const; -- cgit v0.12