From 6a6d903db8548290e7ca08291efcd53236cc7994 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Mon, 23 Jun 2014 11:54:39 +0200 Subject: [PATCH] SettingsDialog: Add warnings when category or page to show is invalid Change-Id: Ide7ef2eb1a9be9a363e5e062214a20da76d2064b Reviewed-by: Tobias Hunger --- .../coreplugin/dialogs/settingsdialog.cpp | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/plugins/coreplugin/dialogs/settingsdialog.cpp b/src/plugins/coreplugin/dialogs/settingsdialog.cpp index c28f3907667..c4fd7e78f5c 100644 --- a/src/plugins/coreplugin/dialogs/settingsdialog.cpp +++ b/src/plugins/coreplugin/dialogs/settingsdialog.cpp @@ -34,6 +34,7 @@ #include #include #include +#include #include #include @@ -353,6 +354,9 @@ void SettingsDialog::showPage(Id categoryId, Id pageId) initialPage = Id::fromSetting(settings->value(QLatin1String(pageKeyC))); } + if (!initialCategory.isValid()) // no category given and no old setting + return; + int initialCategoryIndex = -1; int initialPageIndex = -1; const QList &categories = m_model->categories(); @@ -360,13 +364,22 @@ void SettingsDialog::showPage(Id categoryId, Id pageId) Category *category = categories.at(i); if (category->id == initialCategory) { initialCategoryIndex = i; - for (int j = 0; j < category->pages.size(); ++j) { - IOptionsPage *page = category->pages.at(j); - if (page->id() == initialPage) - initialPageIndex = j; + if (initialPage.isValid()) { + for (int j = 0; j < category->pages.size(); ++j) { + IOptionsPage *page = category->pages.at(j); + if (page->id() == initialPage) + initialPageIndex = j; + } } + break; } } + + QTC_ASSERT(initialCategoryIndex != -1, + qDebug("Unknown category: %s", initialCategory.name().constData()); return); + QTC_ASSERT(!initialPage.isValid() || initialPageIndex != -1, + qDebug("Unknown page: %s", initialPage.name().constData())); + if (initialCategoryIndex != -1) { const QModelIndex modelIndex = m_proxyModel->mapFromSource(m_model->index(initialCategoryIndex)); m_categoryList->setCurrentIndex(modelIndex);