From ff30737318ae11e8a5839da12d552b48a20405c8 Mon Sep 17 00:00:00 2001
From: Lasse Holmstedt <lasse.holmstedt@nokia.com>
Date: Thu, 18 Mar 2010 14:47:52 +0100
Subject: [PATCH] UI fixes to qml inspector

---
 .../components/objectpropertiesview.cpp       | 13 +++----
 .../components/objectpropertiesview.h         |  5 ++-
 .../qmlinspector/components/watchtable.cpp    | 35 +++++++++++++++----
 .../qmlinspector/components/watchtable.h      |  2 ++
 src/plugins/qmlinspector/qmlinspector.cpp     |  4 ++-
 .../qmlinspector/qmlinspectorplugin.cpp       | 10 +++++-
 6 files changed, 52 insertions(+), 17 deletions(-)

diff --git a/src/plugins/qmlinspector/components/objectpropertiesview.cpp b/src/plugins/qmlinspector/components/objectpropertiesview.cpp
index 3420601483f..890e0c19fd5 100644
--- a/src/plugins/qmlinspector/components/objectpropertiesview.cpp
+++ b/src/plugins/qmlinspector/components/objectpropertiesview.cpp
@@ -28,15 +28,13 @@
 **************************************************************************/
 #include "objectpropertiesview.h"
 
-#include <QtCore/qdebug.h>
+#include <QtCore/QDebug>
 
-#include <QtGui/qtreewidget.h>
-#include <QtGui/qlayout.h>
-#include <QtGui/qheaderview.h>
+#include <QtGui/QTreeWidget>
+#include <QtGui/QLayout>
+#include <QtGui/QHeaderView>
 
 
-QT_BEGIN_NAMESPACE
-
 class PropertiesViewItem : public QObject, public QTreeWidgetItem
 {
     Q_OBJECT
@@ -78,6 +76,7 @@ ObjectPropertiesView::ObjectPropertiesView(QDeclarativeEngineDebug *client, QWid
     m_tree->setFrameStyle(QFrame::NoFrame);
     m_tree->setAlternatingRowColors(true);
     m_tree->setExpandsOnDoubleClick(false);
+    m_tree->setRootIsDecorated(false);
     m_tree->setHeaderLabels(QStringList()
             << tr("Name") << tr("Value") << tr("Type"));
     QObject::connect(m_tree, SIGNAL(itemActivated(QTreeWidgetItem *, int)),
@@ -255,6 +254,4 @@ void ObjectPropertiesView::itemActivated(QTreeWidgetItem *i)
         emit activated(m_object, item->property);
 }
 
-QT_END_NAMESPACE
-
 #include "objectpropertiesview.moc"
diff --git a/src/plugins/qmlinspector/components/objectpropertiesview.h b/src/plugins/qmlinspector/components/objectpropertiesview.h
index e889403105d..9bf382ae531 100644
--- a/src/plugins/qmlinspector/components/objectpropertiesview.h
+++ b/src/plugins/qmlinspector/components/objectpropertiesview.h
@@ -38,6 +38,9 @@ QT_BEGIN_NAMESPACE
 class QTreeWidget;
 class QTreeWidgetItem;
 class QDeclarativeDebugConnection;
+
+QT_END_NAMESPACE
+
 class PropertiesViewItem;
 
 class ObjectPropertiesView : public QWidget
@@ -76,6 +79,6 @@ private:
 };
 
 
-QT_END_NAMESPACE
+
 
 #endif
diff --git a/src/plugins/qmlinspector/components/watchtable.cpp b/src/plugins/qmlinspector/components/watchtable.cpp
index 0f7a2690075..eb710d75524 100644
--- a/src/plugins/qmlinspector/components/watchtable.cpp
+++ b/src/plugins/qmlinspector/components/watchtable.cpp
@@ -153,7 +153,7 @@ QVariant WatchTableModel::data(const QModelIndex &idx, int role) const
             return QVariant(m_entities.at(idx.row()).title);
     } else if (idx.column() == C_VALUE) {
 
-        if (role == Qt::DisplayRole) {
+        if (role == Qt::DisplayRole || role == Qt::EditRole) {
             return QVariant(m_entities.at(idx.row()).value);
 
         } else if(role == Qt::BackgroundRole) {
@@ -164,6 +164,22 @@ QVariant WatchTableModel::data(const QModelIndex &idx, int role) const
     return QVariant();
 }
 
+bool WatchTableModel::setData ( const QModelIndex & index, const QVariant & value, int role)
+{
+    if (role == Qt::EditRole) {
+        return true;
+    }
+    return true;
+}
+
+Qt::ItemFlags WatchTableModel::flags ( const QModelIndex & index ) const
+{
+    if (index.column() == C_VALUE)
+        return Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsEnabled;
+
+    return Qt::ItemIsSelectable | Qt::ItemIsEnabled;
+}
+
 void WatchTableModel::watchStateChanged()
 {
     QDeclarativeDebugWatch *watch = qobject_cast<QDeclarativeDebugWatch*>(sender());
@@ -200,9 +216,8 @@ void WatchTableModel::togglePropertyWatch(const QDeclarativeDebugObjectReference
         delete watch;
         watch = 0;
     } else {
-        QString desc = (object.name().isEmpty() ? QLatin1String("<unnamed object>") : object.name())
-                       + QLatin1String(".") + property.name()
-                       + object.className();
+        QString desc = (object.name().isEmpty() ? QLatin1String("<") + object.className() + QLatin1String(">") : object.name())
+                       + QLatin1String(".") + property.name();
 
         addWatch(watch, desc);
         emit watchCreated(watch);
@@ -278,6 +293,13 @@ WatchTableView::WatchTableView(WatchTableModel *model, QWidget *parent)
 {
     setFrameStyle(QFrame::NoFrame);
     setAlternatingRowColors(true);
+    setSelectionMode(QAbstractItemView::SingleSelection);
+    setSelectionBehavior(QAbstractItemView::SelectItems);
+    setShowGrid(false);
+    setVerticalHeader(0);
+    setEditTriggers(QAbstractItemView::DoubleClicked | QAbstractItemView::EditKeyPressed);
+    setFrameStyle(QFrame::NoFrame);
+
 
     connect(model, SIGNAL(watchCreated(QDeclarativeDebugWatch*)), SLOT(watchCreated(QDeclarativeDebugWatch*)));
     connect(this, SIGNAL(activated(QModelIndex)), SLOT(indexActivated(QModelIndex)));
@@ -292,8 +314,9 @@ void WatchTableView::indexActivated(const QModelIndex &index)
 
 void WatchTableView::watchCreated(QDeclarativeDebugWatch *watch)
 {
-    int column = m_model->rowForWatch(watch);
-    resizeColumnToContents(column);
+    int row = m_model->rowForWatch(watch);
+    resizeRowToContents(row);
+    resizeColumnToContents(C_NAME);
 }
 
 void WatchTableView::mousePressEvent(QMouseEvent *me)
diff --git a/src/plugins/qmlinspector/components/watchtable.h b/src/plugins/qmlinspector/components/watchtable.h
index 7a488dd6d63..effc3b6c3eb 100644
--- a/src/plugins/qmlinspector/components/watchtable.h
+++ b/src/plugins/qmlinspector/components/watchtable.h
@@ -60,10 +60,12 @@ public:
     void removeWatchAt(int row);
     void removeAllWatches();
 
+    Qt::ItemFlags flags ( const QModelIndex & index ) 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;
     QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
+    bool setData ( const QModelIndex & index, const QVariant & value, int role = Qt::EditRole);
 
 signals:
     void watchCreated(QDeclarativeDebugWatch *watch);
diff --git a/src/plugins/qmlinspector/qmlinspector.cpp b/src/plugins/qmlinspector/qmlinspector.cpp
index e16b12aee38..1e010c1bd29 100644
--- a/src/plugins/qmlinspector/qmlinspector.cpp
+++ b/src/plugins/qmlinspector/qmlinspector.cpp
@@ -409,7 +409,9 @@ void QmlInspector::setSimpleDockWidgetArrangement()
     }
 
     mainWindow->tabifyDockWidget(m_frameRateDock, m_propertyWatcherDock);
-    mainWindow->tabifyDockWidget(m_frameRateDock, m_inspectorOutputDock);
+    mainWindow->tabifyDockWidget(m_propertyWatcherDock, m_inspectorOutputDock);
+
+    m_inspectorOutputDock->setVisible(false);
 
     mainWindow->setTrackingEnabled(true);
 }
diff --git a/src/plugins/qmlinspector/qmlinspectorplugin.cpp b/src/plugins/qmlinspector/qmlinspectorplugin.cpp
index 58f789f7ba6..05f873b228b 100644
--- a/src/plugins/qmlinspector/qmlinspectorplugin.cpp
+++ b/src/plugins/qmlinspector/qmlinspectorplugin.cpp
@@ -60,6 +60,7 @@
 
 #include <QtGui/QHBoxLayout>
 #include <QtGui/QToolButton>
+#include <QtGui/QMessageBox>
 
 #include <QtCore/QDebug>
 
@@ -162,9 +163,16 @@ void QmlInspectorPlugin::activateDebuggerForProject(ProjectExplorer::Project *pr
 void QmlInspectorPlugin::pollInspector()
 {
     ++m_connectionAttempts;
-    if (m_inspector->connectToViewer() || m_connectionAttempts == MaxConnectionAttempts) {
+    if (m_inspector->connectToViewer()) {
         m_connectionTimer->stop();
         m_connectionAttempts = 0;
+    } else if (m_connectionAttempts == MaxConnectionAttempts) {
+        m_connectionTimer->stop();
+        m_connectionAttempts = 0;
+
+        QMessageBox::critical(0,
+                              tr("Failed to connect to debugger"),
+                              tr("Could not connect to debugger server. Please check your settings from Projects pane.") );
     }
 }
 
-- 
GitLab