From a2df8cb0b7fa83ff530306aae2ddac5a56da1b14 Mon Sep 17 00:00:00 2001
From: Eike Ziller <eike.ziller@digia.com>
Date: Thu, 28 Mar 2013 11:05:35 +0100
Subject: [PATCH] Make adding variable support to textcontrol easier.

Add convenience method in variable chooser and move magic constant to
the place where it's used.

Change-Id: Ie93acb98e13efcacb77d1a478df927a11b16926b
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
---
 src/plugins/coreplugin/coreconstants.h                |  2 --
 src/plugins/coreplugin/dialogs/externaltoolconfig.cpp |  8 ++++----
 src/plugins/coreplugin/variablechooser.cpp            | 11 ++++++++++-
 src/plugins/coreplugin/variablechooser.h              |  3 +++
 .../projectexplorer/projectexplorersettingspage.cpp   |  3 +--
 5 files changed, 18 insertions(+), 9 deletions(-)

diff --git a/src/plugins/coreplugin/coreconstants.h b/src/plugins/coreplugin/coreconstants.h
index c2e3e134dde..ab257ca744d 100644
--- a/src/plugins/coreplugin/coreconstants.h
+++ b/src/plugins/coreplugin/coreconstants.h
@@ -221,8 +221,6 @@ const char SETTINGS_DEFAULTTEXTENCODING[] = "General/DefaultFileEncoding";
 
 const char ALL_FILES_FILTER[]      = QT_TRANSLATE_NOOP("Core", "All Files (*)");
 
-const char VARIABLE_SUPPORT_PROPERTY[] = "QtCreator.VariableSupport";
-
 const char TR_CLEAR_MENU[]         = QT_TRANSLATE_NOOP("Core", "Clear Menu");
 
 const char DEFAULT_BUILD_DIRECTORY[] = "../build-%{CurrentProject:Name}-%{CurrentKit:FileSystemName}-%{CurrentBuild:Name}";
diff --git a/src/plugins/coreplugin/dialogs/externaltoolconfig.cpp b/src/plugins/coreplugin/dialogs/externaltoolconfig.cpp
index 8a0f80f206c..4578a92cab4 100644
--- a/src/plugins/coreplugin/dialogs/externaltoolconfig.cpp
+++ b/src/plugins/coreplugin/dialogs/externaltoolconfig.cpp
@@ -409,10 +409,10 @@ ExternalToolConfig::ExternalToolConfig(QWidget *parent) :
     connect(ui->toolTree->selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)),
             this, SLOT(handleCurrentChanged(QModelIndex,QModelIndex)));
 
-    ui->executable->lineEdit()->setProperty(Constants::VARIABLE_SUPPORT_PROPERTY, true);
-    ui->arguments->setProperty(Constants::VARIABLE_SUPPORT_PROPERTY, true);
-    ui->workingDirectory->lineEdit()->setProperty(Constants::VARIABLE_SUPPORT_PROPERTY, true);
-    ui->inputText->setProperty(Constants::VARIABLE_SUPPORT_PROPERTY, true);
+    Core::VariableChooser::addVariableSupport(ui->executable->lineEdit());
+    Core::VariableChooser::addVariableSupport(ui->arguments);
+    Core::VariableChooser::addVariableSupport(ui->workingDirectory->lineEdit());
+    Core::VariableChooser::addVariableSupport(ui->inputText);
 
     connect(ui->description, SIGNAL(editingFinished()), this, SLOT(updateCurrentItem()));
     connect(ui->executable, SIGNAL(editingFinished()), this, SLOT(updateCurrentItem()));
diff --git a/src/plugins/coreplugin/variablechooser.cpp b/src/plugins/coreplugin/variablechooser.cpp
index 7a1404278be..a92a5cba2d9 100644
--- a/src/plugins/coreplugin/variablechooser.cpp
+++ b/src/plugins/coreplugin/variablechooser.cpp
@@ -33,6 +33,7 @@
 #include "coreconstants.h"
 
 #include <utils/fancylineedit.h> // IconButton
+#include <utils/qtcassert.h>
 
 #include <QTimer>
 #include <QLineEdit>
@@ -42,6 +43,8 @@
 
 using namespace Core;
 
+const char VariableChooser::kVariableSupportProperty[] = "QtCreator.VariableSupport";
+
 VariableChooser::VariableChooser(QWidget *parent) :
     QWidget(parent),
     ui(new Internal::Ui::VariableChooser),
@@ -76,6 +79,12 @@ VariableChooser::~VariableChooser()
     delete ui;
 }
 
+void VariableChooser::addVariableSupport(QWidget *textcontrol)
+{
+    QTC_ASSERT(textcontrol, return);
+    textcontrol->setProperty(kVariableSupportProperty, true);
+}
+
 void VariableChooser::updateDescription(const QString &variable)
 {
     if (variable.isNull())
@@ -109,7 +118,7 @@ void VariableChooser::updateCurrentEditor(QWidget *old, QWidget *widget)
     m_lineEdit = 0;
     m_textEdit = 0;
     m_plainTextEdit = 0;
-    QVariant variablesSupportProperty = widget->property(Constants::VARIABLE_SUPPORT_PROPERTY);
+    QVariant variablesSupportProperty = widget->property(kVariableSupportProperty);
     bool supportsVariables = (variablesSupportProperty.isValid()
                               ? variablesSupportProperty.toBool() : false);
     if (QLineEdit *lineEdit = qobject_cast<QLineEdit *>(widget))
diff --git a/src/plugins/coreplugin/variablechooser.h b/src/plugins/coreplugin/variablechooser.h
index 5fc1d9ac653..daf31863fad 100644
--- a/src/plugins/coreplugin/variablechooser.h
+++ b/src/plugins/coreplugin/variablechooser.h
@@ -56,6 +56,9 @@ public:
     explicit VariableChooser(QWidget *parent = 0);
     ~VariableChooser();
 
+    static const char kVariableSupportProperty[];
+    static void addVariableSupport(QWidget *textcontrol);
+
 protected:
     void keyPressEvent(QKeyEvent *ke);
     bool eventFilter(QObject *, QEvent *event);
diff --git a/src/plugins/projectexplorer/projectexplorersettingspage.cpp b/src/plugins/projectexplorer/projectexplorersettingspage.cpp
index 1482aa86f33..06bc43c44fd 100644
--- a/src/plugins/projectexplorer/projectexplorersettingspage.cpp
+++ b/src/plugins/projectexplorer/projectexplorersettingspage.cpp
@@ -47,12 +47,11 @@ ProjectExplorerSettingsWidget::ProjectExplorerSettingsWidget(QWidget *parent) :
     QWidget(parent)
 {
     m_ui.setupUi(this);
-    m_ui.buildDirectoryEdit->setProperty(Core::Constants::VARIABLE_SUPPORT_PROPERTY, true);
     new Core::VariableChooser(this);
+    Core::VariableChooser::addVariableSupport(m_ui.buildDirectoryEdit);
     setJomVisible(Utils::HostOsInfo::isWindowsHost());
     m_ui.directoryButtonGroup->setId(m_ui.currentDirectoryRadioButton, UseCurrentDirectory);
     m_ui.directoryButtonGroup->setId(m_ui.directoryRadioButton, UseProjectDirectory);
-    m_ui.buildDirectoryEdit->setProperty(Core::Constants::VARIABLE_SUPPORT_PROPERTY, true);
 
     connect(m_ui.directoryButtonGroup, SIGNAL(buttonClicked(int)),
             this, SLOT(slotDirectoryButtonGroupChanged()));
-- 
GitLab