summaryrefslogtreecommitdiff
path: root/src/plugins
diff options
context:
space:
mode:
authorhjk <hjk121@nokiamail.com>2014-09-03 10:34:52 +0200
committerhjk <hjk121@nokiamail.com>2014-09-04 10:23:03 +0200
commitf70ba9930eacdb91e31e8b1f2f4f57afee2aac80 (patch)
tree29896d0ba5dd422979ec36aff6ba42413eb4c41f /src/plugins
parent2e17339b05028dee540cc6da6a481229e98224be (diff)
downloadqt-creator-f70ba9930eacdb91e31e8b1f2f4f57afee2aac80.tar.gz
Core: Use std::function for info bar callbacks
Change-Id: Iae7cbef053bfe86a7692e09f66af91117815d2a6 Reviewed-by: Christian Stenger <christian.stenger@digia.com>
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/android/androidmanifesteditorwidget.cpp9
-rw-r--r--src/plugins/android/androidmanifesteditorwidget.h1
-rw-r--r--src/plugins/cmakeprojectmanager/cmakeeditor.cpp25
-rw-r--r--src/plugins/cmakeprojectmanager/cmakeeditor.h3
-rw-r--r--src/plugins/coreplugin/editormanager/editormanager.cpp4
-rw-r--r--src/plugins/coreplugin/editormanager/editormanager_p.h5
-rw-r--r--src/plugins/coreplugin/find/searchresultwidget.cpp4
-rw-r--r--src/plugins/coreplugin/find/searchresultwidget.h5
-rw-r--r--src/plugins/coreplugin/infobar.cpp26
-rw-r--r--src/plugins/coreplugin/infobar.h16
-rw-r--r--src/plugins/coreplugin/vcsmanager.cpp15
-rw-r--r--src/plugins/coreplugin/vcsmanager.h1
-rw-r--r--src/plugins/debugger/qml/qmllivetextpreview.cpp12
-rw-r--r--src/plugins/debugger/qml/qmllivetextpreview.h1
-rw-r--r--src/plugins/designer/formeditorfactory.cpp8
-rw-r--r--src/plugins/designer/formeditorfactory.h3
-rw-r--r--src/plugins/texteditor/basetexteditor.cpp17
-rw-r--r--src/plugins/texteditor/basetexteditor.h2
18 files changed, 61 insertions, 96 deletions
diff --git a/src/plugins/android/androidmanifesteditorwidget.cpp b/src/plugins/android/androidmanifesteditorwidget.cpp
index 2aeca32965..3025f2fd77 100644
--- a/src/plugins/android/androidmanifesteditorwidget.cpp
+++ b/src/plugins/android/androidmanifesteditorwidget.cpp
@@ -713,7 +713,9 @@ void AndroidManifestEditorWidget::updateInfoBar(const QString &errorMessage, int
else
text = tr("%2: Could not parse file: \"%1\".").arg(errorMessage).arg(line);
Core::InfoBarEntry infoBarEntry(infoBarId, text);
- infoBarEntry.setCustomButtonInfo(tr("Goto error"), this, SLOT(gotoError()));
+ infoBarEntry.setCustomButtonInfo(tr("Goto error"), [this]() {
+ m_textEditorWidget->gotoLine(m_errorLine, m_errorColumn);
+ });
infoBar->removeInfo(infoBarId);
infoBar->addInfo(infoBarEntry);
@@ -729,11 +731,6 @@ void AndroidManifestEditorWidget::hideInfoBar()
m_timerParseCheck.stop();
}
-void AndroidManifestEditorWidget::gotoError()
-{
- m_textEditorWidget->gotoLine(m_errorLine, m_errorColumn);
-}
-
void setApiLevel(QComboBox *box, const QDomElement &element, const QString &attribute)
{
if (!element.isNull() && element.hasAttribute(attribute)) {
diff --git a/src/plugins/android/androidmanifesteditorwidget.h b/src/plugins/android/androidmanifesteditorwidget.h
index 566a6ab5db..40106e55ab 100644
--- a/src/plugins/android/androidmanifesteditorwidget.h
+++ b/src/plugins/android/androidmanifesteditorwidget.h
@@ -126,7 +126,6 @@ private slots:
void updateAddRemovePermissionButtons();
void setAppName();
void setPackageName();
- void gotoError();
void updateInfoBar();
void updateSdkVersions();
void startParseCheck();
diff --git a/src/plugins/cmakeprojectmanager/cmakeeditor.cpp b/src/plugins/cmakeprojectmanager/cmakeeditor.cpp
index 2c09ecac21..47c4c58c53 100644
--- a/src/plugins/cmakeprojectmanager/cmakeeditor.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakeeditor.cpp
@@ -54,6 +54,7 @@
#include <QTextBlock>
using namespace Core;
+using namespace ProjectExplorer;
using namespace TextEditor;
namespace CMakeProjectManager {
@@ -80,24 +81,20 @@ void CMakeEditor::finalizeInitialization()
InfoBarEntry info(infoRunCmake,
tr("Changes to cmake files are shown in the project tree after building."),
InfoBarEntry::GlobalSuppressionEnabled);
- info.setCustomButtonInfo(tr("Build now"), this, SLOT(build()));
+ info.setCustomButtonInfo(tr("Build now"), [document]() {
+ foreach (Project *p, SessionManager::projects()) {
+ if (CMakeProject *cmakeProject = qobject_cast<CMakeProject *>(p)) {
+ if (cmakeProject->isProjectFile(document->filePath())) {
+ ProjectExplorerPlugin::instance()->buildProject(cmakeProject);
+ break;
+ }
+ }
+ }
+ });
infoBar->addInfo(info);
});
}
-void CMakeEditor::build()
-{
- foreach (ProjectExplorer::Project *p, ProjectExplorer::SessionManager::projects()) {
- CMakeProject *cmakeProject = qobject_cast<CMakeProject *>(p);
- if (cmakeProject) {
- if (cmakeProject->isProjectFile(document()->filePath())) {
- ProjectExplorer::ProjectExplorerPlugin::instance()->buildProject(cmakeProject);
- break;
- }
- }
- }
-}
-
QString CMakeEditor::contextHelpId() const
{
int pos = position();
diff --git a/src/plugins/cmakeprojectmanager/cmakeeditor.h b/src/plugins/cmakeprojectmanager/cmakeeditor.h
index 999dcf6d13..0890dc6f0b 100644
--- a/src/plugins/cmakeprojectmanager/cmakeeditor.h
+++ b/src/plugins/cmakeprojectmanager/cmakeeditor.h
@@ -49,9 +49,6 @@ public:
QString contextHelpId() const;
friend class CMakeEditorWidget;
-
-public slots:
- void build();
};
class CMakeEditorFactory : public TextEditor::BaseTextEditorFactory
diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp
index 59cc930b9a..338390a004 100644
--- a/src/plugins/coreplugin/editormanager/editormanager.cpp
+++ b/src/plugins/coreplugin/editormanager/editormanager.cpp
@@ -1269,12 +1269,12 @@ void EditorManagerPrivate::updateMakeWritableWarning()
InfoBarEntry info(Id(kMakeWritableWarning),
tr("<b>Warning:</b> This file was not opened in %1 yet.")
.arg(versionControl->displayName()));
- info.setCustomButtonInfo(tr("Open"), d, SLOT(vcsOpenCurrentEditor()));
+ info.setCustomButtonInfo(tr("Open"), &vcsOpenCurrentEditor);
document->infoBar()->addInfo(info);
} else {
InfoBarEntry info(Id(kMakeWritableWarning),
tr("<b>Warning:</b> You are changing a read-only file."));
- info.setCustomButtonInfo(tr("Make Writable"), d, SLOT(makeCurrentEditorWritable()));
+ info.setCustomButtonInfo(tr("Make Writable"), &makeCurrentEditorWritable);
document->infoBar()->addInfo(info);
}
} else {
diff --git a/src/plugins/coreplugin/editormanager/editormanager_p.h b/src/plugins/coreplugin/editormanager/editormanager_p.h
index b69b8e2144..5d7de60a11 100644
--- a/src/plugins/coreplugin/editormanager/editormanager_p.h
+++ b/src/plugins/coreplugin/editormanager/editormanager_p.h
@@ -110,11 +110,12 @@ public:
static void updateWindowTitleForDocument(IDocument *document, QWidget *window);
+ static void vcsOpenCurrentEditor();
+ static void makeCurrentEditorWritable();
+
public slots:
static bool saveDocument(Core::IDocument *document);
static bool saveDocumentAs(Core::IDocument *document);
- static void makeCurrentEditorWritable();
- static void vcsOpenCurrentEditor();
static void split(Qt::Orientation orientation);
static void removeAllSplits();
diff --git a/src/plugins/coreplugin/find/searchresultwidget.cpp b/src/plugins/coreplugin/find/searchresultwidget.cpp
index 7dc8094506..230b27e9a7 100644
--- a/src/plugins/coreplugin/find/searchresultwidget.cpp
+++ b/src/plugins/coreplugin/find/searchresultwidget.cpp
@@ -260,8 +260,8 @@ void SearchResultWidget::addResults(const QList<SearchResultItem> &items, Search
Core::InfoBarEntry info(sizeWarningId,
tr("The search resulted in more than %n items, do you still want to continue?",
0, SEARCHRESULT_WARNING_LIMIT));
- info.setCancelButtonInfo(tr("Cancel"), this, SLOT(cancelAfterSizeWarning()));
- info.setCustomButtonInfo(tr("Continue"), this, SLOT(continueAfterSizeWarning()));
+ info.setCancelButtonInfo(tr("Cancel"), [this]() { cancelAfterSizeWarning(); });
+ info.setCustomButtonInfo(tr("Continue"), [this]() { continueAfterSizeWarning(); });
m_infoBar.addInfo(info);
emit requestPopup(false/*no focus*/);
}
diff --git a/src/plugins/coreplugin/find/searchresultwidget.h b/src/plugins/coreplugin/find/searchresultwidget.h
index 34f083de30..c93ece7ec0 100644
--- a/src/plugins/coreplugin/find/searchresultwidget.h
+++ b/src/plugins/coreplugin/find/searchresultwidget.h
@@ -110,14 +110,15 @@ signals:
void navigateStateChanged();
private slots:
- void continueAfterSizeWarning();
- void cancelAfterSizeWarning();
void handleJumpToSearchResult(const SearchResultItem &item);
void handleReplaceButton();
void cancel();
void searchAgain();
private:
+ void continueAfterSizeWarning();
+ void cancelAfterSizeWarning();
+
QList<SearchResultItem> checkedItems() const;
void updateMatchesFoundLabel();
diff --git a/src/plugins/coreplugin/infobar.cpp b/src/plugins/coreplugin/infobar.cpp
index cfcadaf728..07b06364f6 100644
--- a/src/plugins/coreplugin/infobar.cpp
+++ b/src/plugins/coreplugin/infobar.cpp
@@ -46,32 +46,25 @@ QSet<Id> InfoBar::globallySuppressed;
InfoBarEntry::InfoBarEntry(Id _id, const QString &_infoText, GlobalSuppressionMode _globalSuppression)
: id(_id)
, infoText(_infoText)
- , object(0)
- , buttonPressMember(0)
- , cancelObject(0)
- , cancelButtonPressMember(0)
, globalSuppression(_globalSuppression)
{
}
-void InfoBarEntry::setCustomButtonInfo(const QString &_buttonText, QObject *_object, const char *_member)
+void InfoBarEntry::setCustomButtonInfo(const QString &_buttonText, CallBack callBack)
{
buttonText = _buttonText;
- object = _object;
- buttonPressMember = _member;
+ m_buttonCallBack = callBack;
}
-void InfoBarEntry::setCancelButtonInfo(QObject *_object, const char *_member)
+void InfoBarEntry::setCancelButtonInfo(CallBack callBack)
{
- cancelObject = _object;
- cancelButtonPressMember = _member;
+ m_cancelButtonCallBack = callBack;
}
-void InfoBarEntry::setCancelButtonInfo(const QString &_cancelButtonText, QObject *_object, const char *_member)
+void InfoBarEntry::setCancelButtonInfo(const QString &_cancelButtonText, CallBack callBack)
{
cancelButtonText = _cancelButtonText;
- cancelObject = _object;
- cancelButtonPressMember = _member;
+ m_cancelButtonCallBack = callBack;
}
@@ -226,7 +219,7 @@ void InfoBarDisplay::update()
if (!info.buttonText.isEmpty()) {
QToolButton *infoWidgetButton = new QToolButton;
infoWidgetButton->setText(info.buttonText);
- connect(infoWidgetButton, SIGNAL(clicked()), info.object, info.buttonPressMember);
+ connect(infoWidgetButton, &QAbstractButton::clicked, [info]() { info.m_buttonCallBack(); });
hbox->addWidget(infoWidgetButton);
}
@@ -244,9 +237,8 @@ void InfoBarDisplay::update()
// need to connect to cancelObjectbefore connecting to cancelButtonClicked,
// because the latter removes the button and with it any connect
- if (info.cancelObject)
- connect(infoWidgetCloseButton, SIGNAL(clicked()),
- info.cancelObject, info.cancelButtonPressMember);
+ if (info.m_cancelButtonCallBack)
+ connect(infoWidgetCloseButton, &QAbstractButton::clicked, info.m_cancelButtonCallBack);
connect(infoWidgetCloseButton, SIGNAL(clicked()), SLOT(cancelButtonClicked()));
if (info.cancelButtonText.isEmpty()) {
diff --git a/src/plugins/coreplugin/infobar.h b/src/plugins/coreplugin/infobar.h
index 78bd7768bf..bacd8add96 100644
--- a/src/plugins/coreplugin/infobar.h
+++ b/src/plugins/coreplugin/infobar.h
@@ -36,6 +36,8 @@
#include <QObject>
#include <QSet>
+#include <functional>
+
QT_BEGIN_NAMESPACE
class QBoxLayout;
QT_END_NAMESPACE
@@ -56,19 +58,19 @@ public:
InfoBarEntry(Id _id, const QString &_infoText, GlobalSuppressionMode _globalSuppression = GlobalSuppressionDisabled);
InfoBarEntry(const InfoBarEntry &other) { *this = other; }
- void setCustomButtonInfo(const QString &_buttonText, QObject *_object, const char *_member);
- void setCancelButtonInfo(QObject *_object, const char *_member);
- void setCancelButtonInfo(const QString &_cancelButtonText, QObject *_object, const char *_member);
+
+ typedef std::function<void()> CallBack;
+ void setCustomButtonInfo(const QString &_buttonText, CallBack callBack);
+ void setCancelButtonInfo(CallBack callBack);
+ void setCancelButtonInfo(const QString &_cancelButtonText, CallBack callBack);
private:
Id id;
QString infoText;
QString buttonText;
- QObject *object;
- const char *buttonPressMember;
+ CallBack m_buttonCallBack;
QString cancelButtonText;
- QObject *cancelObject;
- const char *cancelButtonPressMember;
+ CallBack m_cancelButtonCallBack;
GlobalSuppressionMode globalSuppression;
friend class InfoBar;
friend class InfoBarDisplay;
diff --git a/src/plugins/coreplugin/vcsmanager.cpp b/src/plugins/coreplugin/vcsmanager.cpp
index af42e777fc..97a646173d 100644
--- a/src/plugins/coreplugin/vcsmanager.cpp
+++ b/src/plugins/coreplugin/vcsmanager.cpp
@@ -329,8 +329,12 @@ IVersionControl* VcsManager::findVersionControlForDirectory(const QString &input
.arg(versionControl->displayName()),
InfoBarEntry::GlobalSuppressionEnabled);
d->m_unconfiguredVcs = versionControl;
- info.setCustomButtonInfo(Core::ICore::msgShowOptionsDialog(), m_instance,
- SLOT(configureVcs()));
+ info.setCustomButtonInfo(Core::ICore::msgShowOptionsDialog(), []() {
+ QTC_ASSERT(d->m_unconfiguredVcs, return);
+ ICore::showOptionsDialog(Id(VcsBase::Constants::VCS_SETTINGS_CATEGORY),
+ d->m_unconfiguredVcs->id());
+ });
+
infoBar->addInfo(info);
}
return 0;
@@ -477,13 +481,6 @@ void VcsManager::clearVersionControlCache()
emit m_instance->repositoryChanged(repo);
}
-void VcsManager::configureVcs()
-{
- QTC_ASSERT(d->m_unconfiguredVcs, return);
- ICore::showOptionsDialog(Id(VcsBase::Constants::VCS_SETTINGS_CATEGORY),
- d->m_unconfiguredVcs->id());
-}
-
void VcsManager::handleConfigurationChanges()
{
d->m_cachedAdditionalToolsPathsDirty = true;
diff --git a/src/plugins/coreplugin/vcsmanager.h b/src/plugins/coreplugin/vcsmanager.h
index a8f83c4987..224ca3104a 100644
--- a/src/plugins/coreplugin/vcsmanager.h
+++ b/src/plugins/coreplugin/vcsmanager.h
@@ -105,7 +105,6 @@ public slots:
static void clearVersionControlCache();
private slots:
- static void configureVcs();
void handleConfigurationChanges();
private:
diff --git a/src/plugins/debugger/qml/qmllivetextpreview.cpp b/src/plugins/debugger/qml/qmllivetextpreview.cpp
index 3673724961..03341e3e58 100644
--- a/src/plugins/debugger/qml/qmllivetextpreview.cpp
+++ b/src/plugins/debugger/qml/qmllivetextpreview.cpp
@@ -718,19 +718,15 @@ void QmlLiveTextPreview::showSyncWarning(
Core::InfoBarEntry info(Core::Id(INFO_OUT_OF_SYNC), errorMessage);
BaseToolsClient *toolsClient = m_inspectorAdapter->toolsClient();
if (toolsClient && toolsClient->supportReload())
- info.setCustomButtonInfo(tr("Reload QML"), this,
- SLOT(reloadQml()));
+ info.setCustomButtonInfo(tr("Reload QML"), [this]() {
+ removeOutofSyncInfo();
+ emit reloadRequest();
+ });
infoBar->addInfo(info);
}
}
}
-void QmlLiveTextPreview::reloadQml()
-{
- removeOutofSyncInfo();
- emit reloadRequest();
-}
-
void QmlLiveTextPreview::removeOutofSyncInfo()
{
foreach (TextEditor::BaseTextEditorWidget *editor, m_editors) {
diff --git a/src/plugins/debugger/qml/qmllivetextpreview.h b/src/plugins/debugger/qml/qmllivetextpreview.h
index 783a658578..13a295bb2c 100644
--- a/src/plugins/debugger/qml/qmllivetextpreview.h
+++ b/src/plugins/debugger/qml/qmllivetextpreview.h
@@ -69,7 +69,6 @@ signals:
public slots:
void setApplyChangesToQmlInspector(bool applyChanges);
void updateDebugIds();
- void reloadQml();
private slots:
void changeSelectedElements(const QList<QmlJS::AST::UiObjectMember *> offsets,
diff --git a/src/plugins/designer/formeditorfactory.cpp b/src/plugins/designer/formeditorfactory.cpp
index a07fed0d4d..1a8435dafb 100644
--- a/src/plugins/designer/formeditorfactory.cpp
+++ b/src/plugins/designer/formeditorfactory.cpp
@@ -41,6 +41,7 @@
#include <QCoreApplication>
#include <QDebug>
+using namespace Core;
using namespace Designer::Constants;
namespace Designer {
@@ -62,16 +63,11 @@ Core::IEditor *FormEditorFactory::createEditor()
if (data.formWindowEditor) {
Core::InfoBarEntry info(Core::Id(Constants::INFO_READ_ONLY),
tr("This file can only be edited in <b>Design</b> mode."));
- info.setCustomButtonInfo(tr("Switch Mode"), this, SLOT(designerModeClicked()));
+ info.setCustomButtonInfo(tr("Switch Mode"), []() { ModeManager::activateMode(Core::Constants::MODE_DESIGN); });
data.formWindowEditor->document()->infoBar()->addInfo(info);
}
return data.formWindowEditor;
}
-void FormEditorFactory::designerModeClicked()
-{
- Core::ModeManager::activateMode(Core::Constants::MODE_DESIGN);
-}
-
} // namespace Internal
} // namespace Designer
diff --git a/src/plugins/designer/formeditorfactory.h b/src/plugins/designer/formeditorfactory.h
index 0b0d662071..429bf01436 100644
--- a/src/plugins/designer/formeditorfactory.h
+++ b/src/plugins/designer/formeditorfactory.h
@@ -43,9 +43,6 @@ public:
FormEditorFactory();
Core::IEditor *createEditor();
-
-private slots:
- void designerModeClicked();
};
} // namespace Internal
diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp
index 65bed1c7f7..d3fb93ab78 100644
--- a/src/plugins/texteditor/basetexteditor.cpp
+++ b/src/plugins/texteditor/basetexteditor.cpp
@@ -536,8 +536,12 @@ static void updateEditorInfoBar(BaseTextEditorWidget *widget)
BaseTextEditor::tr("A highlight definition was not found for this file. "
"Would you like to try to find one?"),
InfoBarEntry::GlobalSuppressionEnabled);
- info.setCustomButtonInfo(BaseTextEditor::tr("Show Highlighter Options..."),
- widget, SLOT(acceptMissingSyntaxDefinitionInfo()));
+ info.setCustomButtonInfo(BaseTextEditor::tr("Show Highlighter Options..."), [widget]() {
+ ICore::showOptionsDialog(Constants::TEXT_EDITOR_SETTINGS_CATEGORY,
+ Constants::TEXT_EDITOR_HIGHLIGHTER_SETTINGS,
+ widget);
+ });
+
infoBar->addInfo(info);
}
}
@@ -943,7 +947,7 @@ void BaseTextEditorWidgetPrivate::updateCannotDecodeInfo()
InfoBarEntry info(selectEncodingId,
BaseTextEditorWidget::tr("<b>Error:</b> Could not decode \"%1\" with \"%2\"-encoding. Editing not possible.")
.arg(m_document->displayName()).arg(QString::fromLatin1(m_document->codec()->name())));
- info.setCustomButtonInfo(BaseTextEditorWidget::tr("Select Encoding"), q, SLOT(selectEncoding()));
+ info.setCustomButtonInfo(BaseTextEditorWidget::tr("Select Encoding"), [this]() { q->selectEncoding(); });
infoBar->addInfo(info);
} else {
infoBar->removeInfo(selectEncodingId);
@@ -7139,13 +7143,6 @@ bool BaseTextEditorWidget::isMissingSyntaxDefinition() const
return d->m_isMissingSyntaxDefinition;
}
-void BaseTextEditorWidget::acceptMissingSyntaxDefinitionInfo()
-{
- ICore::showOptionsDialog(Constants::TEXT_EDITOR_SETTINGS_CATEGORY,
- Constants::TEXT_EDITOR_HIGHLIGHTER_SETTINGS,
- this);
-}
-
// The remnants of PlainTextEditor.
void BaseTextEditorWidget::setupAsPlainEditor()
{
diff --git a/src/plugins/texteditor/basetexteditor.h b/src/plugins/texteditor/basetexteditor.h
index 6c878e4c85..76a3684921 100644
--- a/src/plugins/texteditor/basetexteditor.h
+++ b/src/plugins/texteditor/basetexteditor.h
@@ -468,8 +468,6 @@ public:
/// Abort code assistant if it is running.
void abortAssist();
- Q_INVOKABLE void acceptMissingSyntaxDefinitionInfo(); // used internally
-
void configureMimeType(const QString &mimeType);
void configureMimeType(const Core::MimeType &mimeType);