Wizard: Replace QMap with QHash

The key is a pointer, so use QHash.

Change-Id: I6315ee545bf582078301212f6f8d661a8c95eb87
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
Jarek Kobus
2024-01-26 20:22:24 +01:00
parent e4077d5166
commit 8931f02fb8

View File

@@ -97,7 +97,7 @@ private:
QVBoxLayout *m_mainLayout; QVBoxLayout *m_mainLayout;
QVBoxLayout *m_itemWidgetLayout; QVBoxLayout *m_itemWidgetLayout;
WizardProgress *m_wizardProgress; WizardProgress *m_wizardProgress;
QMap<WizardProgressItem *, ProgressItemWidget *> m_itemToItemWidget; QHash<WizardProgressItem *, ProgressItemWidget *> m_itemToItemWidget;
QList<WizardProgressItem *> m_visibleItems; QList<WizardProgressItem *> m_visibleItems;
ProgressItemWidget *m_dotsItemWidget; ProgressItemWidget *m_dotsItemWidget;
int m_disableUpdatesCount; int m_disableUpdatesCount;
@@ -155,15 +155,13 @@ void LinearProgressWidget::slotItemAdded(WizardProgressItem *item)
void LinearProgressWidget::slotItemRemoved(WizardProgressItem *item) void LinearProgressWidget::slotItemRemoved(WizardProgressItem *item)
{ {
ProgressItemWidget *itemWidget = m_itemToItemWidget.value(item); const auto it = m_itemToItemWidget.constFind(item);
if (!itemWidget) if (it == m_itemToItemWidget.constEnd())
return; return;
m_itemToItemWidget.remove(item); delete *it;
m_itemToItemWidget.erase(it);
recreateLayout(); recreateLayout();
delete itemWidget;
} }
void LinearProgressWidget::slotItemChanged(WizardProgressItem *item) void LinearProgressWidget::slotItemChanged(WizardProgressItem *item)
@@ -209,12 +207,9 @@ void LinearProgressWidget::recreateLayout()
{ {
disableUpdates(); disableUpdates();
auto it = m_itemToItemWidget.constBegin(); for (ProgressItemWidget *itemWidget : std::as_const(m_itemToItemWidget))
const auto itEnd = m_itemToItemWidget.constEnd(); itemWidget->setVisible(false);
while (it != itEnd) {
it.value()->setVisible(false);
++it;
}
m_dotsItemWidget->setVisible(false); m_dotsItemWidget->setVisible(false);
for (int i = m_itemWidgetLayout->count() - 1; i >= 0; --i) { for (int i = m_itemWidgetLayout->count() - 1; i >= 0; --i) {
@@ -223,8 +218,8 @@ void LinearProgressWidget::recreateLayout()
} }
m_visibleItems = m_wizardProgress->directlyReachableItems(); m_visibleItems = m_wizardProgress->directlyReachableItems();
for (int i = 0; i < m_visibleItems.count(); i++) { for (WizardProgressItem *progressItem : std::as_const(m_visibleItems)) {
ProgressItemWidget *itemWidget = m_itemToItemWidget.value(m_visibleItems.at(i)); ProgressItemWidget *itemWidget = m_itemToItemWidget.value(progressItem);
m_itemWidgetLayout->addWidget(itemWidget); m_itemWidgetLayout->addWidget(itemWidget);
itemWidget->setVisible(true); itemWidget->setVisible(true);
} }
@@ -244,14 +239,11 @@ void LinearProgressWidget::updateProgress()
QList<WizardProgressItem *> visitedItems = m_wizardProgress->visitedItems(); QList<WizardProgressItem *> visitedItems = m_wizardProgress->visitedItems();
auto it = m_itemToItemWidget.constBegin(); for (auto it = m_itemToItemWidget.cbegin(); it != m_itemToItemWidget.cend(); ++it) {
const auto itEnd = m_itemToItemWidget.constEnd();
while (it != itEnd) {
WizardProgressItem *item = it.key(); WizardProgressItem *item = it.key();
ProgressItemWidget *itemWidget = it.value(); ProgressItemWidget *itemWidget = it.value();
itemWidget->setEnabled(visitedItems.contains(item)); itemWidget->setEnabled(visitedItems.contains(item));
itemWidget->setIndicatorVisible(false); itemWidget->setIndicatorVisible(false);
++it;
} }
WizardProgressItem *currentItem = m_wizardProgress->currentItem(); WizardProgressItem *currentItem = m_wizardProgress->currentItem();