Revert "ProjectExplorer: Use more Ids instead of Kit in KitModel"

This reverts commit 05e7308c08.

Currently kit cloning crashes, and the trivial fix loses re-foucssing
on the newly cloned kit.

Change-Id: Id34d4430f97ab5825d5203096fbd1551464f80cb
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
hjk
2023-11-09 17:09:54 +01:00
parent c26521aeb3
commit ec99782105

View File

@@ -176,6 +176,7 @@ public:
Kit *kit(const QModelIndex &); Kit *kit(const QModelIndex &);
KitNode *kitNode(const QModelIndex &); KitNode *kitNode(const QModelIndex &);
QModelIndex indexOf(Kit *k) const;
QModelIndex indexOf(Id kitId) const; QModelIndex indexOf(Id kitId) const;
void setDefaultKit(const QModelIndex &index); void setDefaultKit(const QModelIndex &index);
@@ -186,7 +187,7 @@ public:
void apply(); void apply();
void markForRemoval(Kit *k); void markForRemoval(Kit *k);
Id markForAddition(Kit *baseKit); Kit *markForAddition(Kit *baseKit);
void updateVisibility(); void updateVisibility();
@@ -263,6 +264,12 @@ QModelIndex KitModel::indexOf(Id kitId) const
return n ? indexForItem(n) : QModelIndex(); return n ? indexForItem(n) : QModelIndex();
} }
QModelIndex KitModel::indexOf(Kit *k) const
{
KitNode *n = findWorkingCopy(k);
return n ? indexForItem(n) : QModelIndex();
}
void KitModel::setDefaultKit(const QModelIndex &index) void KitModel::setDefaultKit(const QModelIndex &index)
{ {
if (KitNode *n = kitNode(index)) if (KitNode *n = kitNode(index))
@@ -341,7 +348,7 @@ void KitModel::markForRemoval(Kit *k)
validateKitNames(); validateKitNames();
} }
Id KitModel::markForAddition(Kit *baseKit) Kit *KitModel::markForAddition(Kit *baseKit)
{ {
const QString newName = newKitName(baseKit ? baseKit->unexpandedDisplayName() : QString()); const QString newName = newKitName(baseKit ? baseKit->unexpandedDisplayName() : QString());
KitNode *node = createNode(nullptr); KitNode *node = createNode(nullptr);
@@ -360,7 +367,7 @@ Id KitModel::markForAddition(Kit *baseKit)
if (!m_defaultNode) if (!m_defaultNode)
setDefaultNode(node); setDefaultNode(node);
return k->id(); return k;
} }
void KitModel::updateVisibility() void KitModel::updateVisibility()
@@ -618,9 +625,9 @@ void KitOptionsPageWidget::kitSelectionChanged()
void KitOptionsPageWidget::addNewKit() void KitOptionsPageWidget::addNewKit()
{ {
Id kitId = m_model->markForAddition(nullptr); Kit *k = m_model->markForAddition(nullptr);
QModelIndex newIdx = m_sortModel->mapFromSource(m_model->indexOf(kitId)); QModelIndex newIdx = m_sortModel->mapFromSource(m_model->indexOf(k));
m_selectionModel->select(newIdx, m_selectionModel->select(newIdx,
QItemSelectionModel::Clear QItemSelectionModel::Clear
| QItemSelectionModel::SelectCurrent | QItemSelectionModel::SelectCurrent
@@ -641,8 +648,8 @@ void KitOptionsPageWidget::cloneKit()
if (!current) if (!current)
return; return;
Id kitId = m_model->markForAddition(current); Kit *k = m_model->markForAddition(current);
QModelIndex newIdx = m_sortModel->mapFromSource(m_model->indexOf(kitId)); QModelIndex newIdx = m_sortModel->mapFromSource(m_model->indexOf(k));
m_kitsView->scrollTo(newIdx); m_kitsView->scrollTo(newIdx);
m_selectionModel->select(newIdx, m_selectionModel->select(newIdx,
QItemSelectionModel::Clear QItemSelectionModel::Clear