From 8bad963dee60534d2d7c72daedab60136541bbc2 Mon Sep 17 00:00:00 2001 From: Konstantin Tokarev Date: Sun, 6 May 2012 12:26:39 +0400 Subject: [PATCH] Show editor display names in "Open With" dialog instead of their Id's. Change-Id: I5cf7b5b53ce05b422aec87f7cf347670133a81a9 Reviewed-by: Eike Ziller --- src/plugins/coreplugin/dialogs/openwithdialog.cpp | 6 ++---- src/plugins/coreplugin/dialogs/openwithdialog.h | 2 +- src/plugins/coreplugin/editormanager/editormanager.cpp | 8 ++++++-- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/plugins/coreplugin/dialogs/openwithdialog.cpp b/src/plugins/coreplugin/dialogs/openwithdialog.cpp index d767c802836..ef03824c678 100644 --- a/src/plugins/coreplugin/dialogs/openwithdialog.cpp +++ b/src/plugins/coreplugin/dialogs/openwithdialog.cpp @@ -70,11 +70,9 @@ void OpenWithDialog::setEditors(const QStringList &editors) editorListWidget->addItem(e); } -QString OpenWithDialog::editor() const +int OpenWithDialog::editor() const { - if (const QListWidgetItem *item = editorListWidget->currentItem()) - return item->text(); - return QString(); + return editorListWidget->currentRow(); } void OpenWithDialog::setCurrentEditor(int index) diff --git a/src/plugins/coreplugin/dialogs/openwithdialog.h b/src/plugins/coreplugin/dialogs/openwithdialog.h index 08494078a9c..631aff65ec7 100644 --- a/src/plugins/coreplugin/dialogs/openwithdialog.h +++ b/src/plugins/coreplugin/dialogs/openwithdialog.h @@ -52,7 +52,7 @@ public: OpenWithDialog(const QString &fileName, QWidget *parent); void setEditors(const QStringList &); - QString editor() const; + int editor() const; void setCurrentEditor(int index); diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp index 7a6dc9b24dd..4a9a631d97a 100644 --- a/src/plugins/coreplugin/editormanager/editormanager.cpp +++ b/src/plugins/coreplugin/editormanager/editormanager.cpp @@ -1222,12 +1222,14 @@ Core::Id EditorManager::getOpenWithEditorId(const QString &fileName, if (!mt) return Id(); QStringList allEditorIds; + QStringList allEditorDisplayNames; QList externalEditorIds; // Built-in const EditorFactoryList editors = editorFactories(mt, false); const int size = editors.size(); for (int i = 0; i < size; i++) { allEditorIds.push_back(editors.at(i)->id().toString()); + allEditorDisplayNames.push_back(editors.at(i)->displayName()); } // External editors const ExternalEditorList exEditors = externalEditors(mt, false); @@ -1235,16 +1237,18 @@ Core::Id EditorManager::getOpenWithEditorId(const QString &fileName, for (int i = 0; i < esize; i++) { externalEditorIds.push_back(exEditors.at(i)->id()); allEditorIds.push_back(exEditors.at(i)->id().toString()); + allEditorDisplayNames.push_back(exEditors.at(i)->displayName()); } if (allEditorIds.empty()) return Id(); + QTC_ASSERT(allEditorIds.size() == allEditorDisplayNames.size(), return Id()); // Run dialog. OpenWithDialog dialog(fileName, ICore::mainWindow()); - dialog.setEditors(allEditorIds); + dialog.setEditors(allEditorDisplayNames); dialog.setCurrentEditor(0); if (dialog.exec() != QDialog::Accepted) return Id(); - const Id selectedId = Id(dialog.editor()); + const Id selectedId = Id(allEditorIds.at(dialog.editor())); if (isExternalEditor) *isExternalEditor = externalEditorIds.contains(selectedId); return selectedId;