From cf5bd6de4e3f29207b4edbda9907e15c90ea1c89 Mon Sep 17 00:00:00 2001
From: Lasse Holmstedt <lasse.holmstedt@nokia.com>
Date: Thu, 18 Mar 2010 12:20:07 +0100
Subject: [PATCH] Made qml inspector look nicer and clear its contents upon
 close

---
 .../components/expressionquerywidget.cpp      | 33 +++++++++++++++----
 .../components/expressionquerywidget.h        | 12 +++++--
 src/plugins/qmlinspector/qmlinspector.cpp     | 16 ++++++---
 src/plugins/qmlinspector/qmlinspector.h       |  2 +-
 4 files changed, 48 insertions(+), 15 deletions(-)

diff --git a/src/plugins/qmlinspector/components/expressionquerywidget.cpp b/src/plugins/qmlinspector/components/expressionquerywidget.cpp
index 2a9c5d242c2..32cb1b25de9 100644
--- a/src/plugins/qmlinspector/components/expressionquerywidget.cpp
+++ b/src/plugins/qmlinspector/components/expressionquerywidget.cpp
@@ -29,12 +29,14 @@
 #include "expressionquerywidget.h"
 #include "qmlinspectorconstants.h"
 
-#include <utils/fancylineedit.h>
+#include <utils/styledbar.h>
+#include <utils/filterlineedit.h>
 #include <texteditor/texteditorconstants.h>
 #include <texteditor/texteditorsettings.h>
 #include <texteditor/fontsettings.h>
 #include <qmljseditor/qmljshighlighter.h>
 #include <coreplugin/icore.h>
+#include <coreplugin/coreconstants.h>
 #include <coreplugin/actionmanager/actionmanager.h>
 #include <coreplugin/actionmanager/command.h>
 
@@ -44,7 +46,7 @@
 #include <QtGui/QLabel>
 #include <QtGui/QTextEdit>
 #include <QtGui/QLineEdit>
-#include <QtGui/QPushButton>
+#include <QtGui/QToolButton>
 #include <QtGui/QGroupBox>
 #include <QtGui/QTextObject>
 #include <QtGui/QLayout>
@@ -74,16 +76,25 @@ ExpressionQueryWidget::ExpressionQueryWidget(Mode mode, QDeclarativeEngineDebug
     m_highlighter->setParent(m_textEdit->document());
 
     if (m_mode == SeparateEntryMode) {
-        m_lineEdit = new QLineEdit;
+        Utils::StyledBar *bar = new Utils::StyledBar;
+        m_lineEdit = new Utils::FilterLineEdit;
 
         m_lineEdit->setPlaceholderText(tr("<Expression>"));
+        m_lineEdit->setToolTip(tr("Write and evaluate QtScript expressions."));
+
+        m_clearButton = new QToolButton();
+        m_clearButton->setIcon(QIcon(QLatin1String(":/utils/images/reset.png")));
+        m_clearButton->setToolTip(tr("Clear Output"));
+        m_clearButton->setIcon(QIcon(Core::Constants::ICON_CLEAN_PANE));
+        connect(m_clearButton, SIGNAL(clicked()), this, SLOT(clearTextEditor()));
+
         connect(m_lineEdit, SIGNAL(returnPressed()), SLOT(executeExpression()));
-        QHBoxLayout *hbox = new QHBoxLayout;
+        QHBoxLayout *hbox = new QHBoxLayout(bar);
         hbox->setMargin(1);
         hbox->setSpacing(1);
-        //hbox->addWidget(new QLabel(tr("Expression:")));
         hbox->addWidget(m_lineEdit);
-        layout->addLayout(hbox);
+        hbox->addWidget(m_clearButton);
+        layout->addWidget(bar);
 
         m_textEdit->setReadOnly(true);
         m_lineEdit->installEventFilter(this);
@@ -92,6 +103,13 @@ ExpressionQueryWidget::ExpressionQueryWidget(Mode mode, QDeclarativeEngineDebug
         appendPrompt();
     }
     setFontSettings();
+    clear();
+}
+
+void ExpressionQueryWidget::clearTextEditor()
+{
+    m_textEdit->clear();
+    m_textEdit->appendPlainText(tr("Debug Console\n"));
 }
 
 void ExpressionQueryWidget::setFontSettings()
@@ -147,7 +165,8 @@ void ExpressionQueryWidget::setEngineDebug(QDeclarativeEngineDebug *client)
 
 void ExpressionQueryWidget::clear()
 {
-    m_textEdit->clear();
+    clearTextEditor();
+
     if (m_lineEdit)
         m_lineEdit->clear();
     if (m_mode == ShellMode)
diff --git a/src/plugins/qmlinspector/components/expressionquerywidget.h b/src/plugins/qmlinspector/components/expressionquerywidget.h
index 41a8dc155ef..cb1aaa44cb8 100644
--- a/src/plugins/qmlinspector/components/expressionquerywidget.h
+++ b/src/plugins/qmlinspector/components/expressionquerywidget.h
@@ -39,10 +39,14 @@ QT_BEGIN_NAMESPACE
 class QGroupBox;
 class QPlainTextEdit;
 class QLineEdit;
-class QPushButton;
+class QToolButton;
 
 QT_END_NAMESPACE
 
+namespace Utils {
+    class FancyLineEdit;
+}
+
 namespace Core {
     class IContext;
 }
@@ -73,6 +77,7 @@ public slots:
     void setCurrentObject(const QDeclarativeDebugObjectReference &obj);
 
 private slots:
+    void clearTextEditor();
     void executeExpression();
     void showResult();
     void invokeCompletion();
@@ -89,8 +94,9 @@ private:
     QDeclarativeEngineDebug *m_client;
     QDeclarativeDebugExpressionQuery *m_query;
     QPlainTextEdit *m_textEdit;
-    QLineEdit *m_lineEdit;
-    QPushButton *m_button;
+    Utils::FancyLineEdit *m_lineEdit;
+
+    QToolButton *m_clearButton;
     QString m_prompt;
     QString m_expr;
     QString m_lastExpr;
diff --git a/src/plugins/qmlinspector/qmlinspector.cpp b/src/plugins/qmlinspector/qmlinspector.cpp
index 4cd0efe196f..e16b12aee38 100644
--- a/src/plugins/qmlinspector/qmlinspector.cpp
+++ b/src/plugins/qmlinspector/qmlinspector.cpp
@@ -234,6 +234,9 @@ void QmlInspector::connectionStateChanged()
             m_engineQuery = 0;
             delete m_contextQuery;
             m_contextQuery = 0;
+
+            resetViews();
+
             break;
         }
         case QAbstractSocket::HostLookupState:
@@ -254,10 +257,7 @@ void QmlInspector::connectionStateChanged()
                 m_expressionWidget->setEngineDebug(m_client);
             }
 
-            m_objectTreeWidget->clear();
-            m_propertiesWidget->clear();
-            m_expressionWidget->clear();
-            m_watchTableModel->removeAllWatches();
+            resetViews();
             m_frameRateWidget->reset(m_conn);
 
             reloadEngines();
@@ -272,6 +272,14 @@ void QmlInspector::connectionStateChanged()
     }
 }
 
+void QmlInspector::resetViews()
+{
+    m_objectTreeWidget->clear();
+    m_propertiesWidget->clear();
+    m_expressionWidget->clear();
+    m_watchTableModel->removeAllWatches();
+}
+
 Core::IContext *QmlInspector::context() const
 {
     return m_context;
diff --git a/src/plugins/qmlinspector/qmlinspector.h b/src/plugins/qmlinspector/qmlinspector.h
index cadfabe1620..efdde4b7bdc 100644
--- a/src/plugins/qmlinspector/qmlinspector.h
+++ b/src/plugins/qmlinspector/qmlinspector.h
@@ -95,7 +95,7 @@ private slots:
     void treeObjectActivated(const QDeclarativeDebugObjectReference &obj);
 
 private:
-
+    void resetViews();
     void initWidgets();
 
     QDeclarativeDebugConnection *m_conn;
-- 
GitLab