From 8931f02fb85d7cdde878dd08738991ca648ef50b Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Fri, 26 Jan 2024 20:22:24 +0100 Subject: [PATCH] Wizard: Replace QMap with QHash The key is a pointer, so use QHash. Change-Id: I6315ee545bf582078301212f6f8d661a8c95eb87 Reviewed-by: Eike Ziller --- src/libs/utils/wizard.cpp | 30 +++++++++++------------------- 1 file changed, 11 insertions(+), 19 deletions(-) diff --git a/src/libs/utils/wizard.cpp b/src/libs/utils/wizard.cpp index aa4548359cb..8592591f38f 100644 --- a/src/libs/utils/wizard.cpp +++ b/src/libs/utils/wizard.cpp @@ -97,7 +97,7 @@ private: QVBoxLayout *m_mainLayout; QVBoxLayout *m_itemWidgetLayout; WizardProgress *m_wizardProgress; - QMap m_itemToItemWidget; + QHash m_itemToItemWidget; QList m_visibleItems; ProgressItemWidget *m_dotsItemWidget; int m_disableUpdatesCount; @@ -155,15 +155,13 @@ void LinearProgressWidget::slotItemAdded(WizardProgressItem *item) void LinearProgressWidget::slotItemRemoved(WizardProgressItem *item) { - ProgressItemWidget *itemWidget = m_itemToItemWidget.value(item); - if (!itemWidget) + const auto it = m_itemToItemWidget.constFind(item); + if (it == m_itemToItemWidget.constEnd()) return; - m_itemToItemWidget.remove(item); - + delete *it; + m_itemToItemWidget.erase(it); recreateLayout(); - - delete itemWidget; } void LinearProgressWidget::slotItemChanged(WizardProgressItem *item) @@ -209,12 +207,9 @@ void LinearProgressWidget::recreateLayout() { disableUpdates(); - auto it = m_itemToItemWidget.constBegin(); - const auto itEnd = m_itemToItemWidget.constEnd(); - while (it != itEnd) { - it.value()->setVisible(false); - ++it; - } + for (ProgressItemWidget *itemWidget : std::as_const(m_itemToItemWidget)) + itemWidget->setVisible(false); + m_dotsItemWidget->setVisible(false); for (int i = m_itemWidgetLayout->count() - 1; i >= 0; --i) { @@ -223,8 +218,8 @@ void LinearProgressWidget::recreateLayout() } m_visibleItems = m_wizardProgress->directlyReachableItems(); - for (int i = 0; i < m_visibleItems.count(); i++) { - ProgressItemWidget *itemWidget = m_itemToItemWidget.value(m_visibleItems.at(i)); + for (WizardProgressItem *progressItem : std::as_const(m_visibleItems)) { + ProgressItemWidget *itemWidget = m_itemToItemWidget.value(progressItem); m_itemWidgetLayout->addWidget(itemWidget); itemWidget->setVisible(true); } @@ -244,14 +239,11 @@ void LinearProgressWidget::updateProgress() QList visitedItems = m_wizardProgress->visitedItems(); - auto it = m_itemToItemWidget.constBegin(); - const auto itEnd = m_itemToItemWidget.constEnd(); - while (it != itEnd) { + for (auto it = m_itemToItemWidget.cbegin(); it != m_itemToItemWidget.cend(); ++it) { WizardProgressItem *item = it.key(); ProgressItemWidget *itemWidget = it.value(); itemWidget->setEnabled(visitedItems.contains(item)); itemWidget->setIndicatorVisible(false); - ++it; } WizardProgressItem *currentItem = m_wizardProgress->currentItem();