From 3ee990724a8a903907c27881f520777eeb50488c Mon Sep 17 00:00:00 2001
From: Matthias Puchner <github@mpuchner.de>
Date: Thu, 16 Dec 2021 06:48:41 +0100
Subject: [PATCH] rm unnecessary SessionModel index calculation

---
 GUI/Model/Job/JobModel.cpp             | 17 ++++++++---------
 GUI/Model/Job/JobModel.h               |  6 +++---
 GUI/View/Fit/ParameterTuningWidget.cpp |  4 ++--
 GUI/View/Job/JobListModel.cpp          |  6 +++---
 GUI/View/Toplevel/SimulationView.cpp   |  2 +-
 5 files changed, 17 insertions(+), 18 deletions(-)

diff --git a/GUI/Model/Job/JobModel.cpp b/GUI/Model/Job/JobModel.cpp
index 9b82fab22b0..2be1a6e3301 100644
--- a/GUI/Model/Job/JobModel.cpp
+++ b/GUI/Model/Job/JobModel.cpp
@@ -123,8 +123,8 @@ bool JobModel::hasUnfinishedJobs()
 
 void JobModel::clear()
 {
-    for (auto* item : topItems())
-        removeJob(item->index());
+    for (auto* job : jobItems())
+        removeJob(job);
 
     SessionModel::clear();
 }
@@ -182,24 +182,23 @@ void JobModel::onCancelAllJobs()
     m_queue_data->onCancelAllJobs();
 }
 
-void JobModel::runJob(const QModelIndex& index)
+void JobModel::runJob(JobItem* jobItem)
 {
-    m_queue_data->runJob(getJobItemForIndex(index));
+    m_queue_data->runJob(jobItem);
 }
 
-void JobModel::cancelJob(const QModelIndex& index)
+void JobModel::cancelJob(JobItem* jobItem)
 {
-    m_queue_data->cancelJob(getJobItemForIndex(index)->getIdentifier());
+    m_queue_data->cancelJob(jobItem->getIdentifier());
 }
 
-void JobModel::removeJob(const QModelIndex& index)
+void JobModel::removeJob(JobItem* jobItem)
 {
-    JobItem* jobItem = getJobItemForIndex(index);
     ASSERT(jobItem);
     m_queue_data->removeJob(jobItem->getIdentifier());
 
     emit aboutToDeleteJobItem(jobItem);
-    removeRows(index.row(), 1, QModelIndex());
+    removeRows(jobItem->index().row(), 1, QModelIndex());
 }
 
 //! generates job name
diff --git a/GUI/Model/Job/JobModel.h b/GUI/Model/Job/JobModel.h
index 70b4fb366df..f3a5378b6db 100644
--- a/GUI/Model/Job/JobModel.h
+++ b/GUI/Model/Job/JobModel.h
@@ -56,9 +56,9 @@ signals:
 
 public slots:
     void onCancelAllJobs();
-    void runJob(const QModelIndex& index);
-    void cancelJob(const QModelIndex& index);
-    void removeJob(const QModelIndex& index);
+    void runJob(JobItem* jobItem);
+    void cancelJob(JobItem* jobItem);
+    void removeJob(JobItem* jobItem);
 
 private:
     QString generateJobName();
diff --git a/GUI/View/Fit/ParameterTuningWidget.cpp b/GUI/View/Fit/ParameterTuningWidget.cpp
index d4ae719103a..89b326565b8 100644
--- a/GUI/View/Fit/ParameterTuningWidget.cpp
+++ b/GUI/View/Fit/ParameterTuningWidget.cpp
@@ -97,7 +97,7 @@ void ParameterTuningWidget::onCurrentLinkChanged(ParameterItem* item)
 
     if (item) {
         // link.updateItem(); // FIXME circular dependency if uncomment
-        m_jobModel->runJob(jobItem()->index());
+        m_jobModel->runJob(jobItem());
     }
 }
 
@@ -151,7 +151,7 @@ void ParameterTuningWidget::restoreModelsOfCurrentJobItem()
     closeActiveEditors();
 
     m_jobModel->restore(jobItem());
-    m_jobModel->runJob(jobItem()->index());
+    m_jobModel->runJob(jobItem());
 }
 
 void ParameterTuningWidget::makeSelected(ParameterItem* item)
diff --git a/GUI/View/Job/JobListModel.cpp b/GUI/View/Job/JobListModel.cpp
index 72dc6ad37da..8f0149df37a 100644
--- a/GUI/View/Job/JobListModel.cpp
+++ b/GUI/View/Job/JobListModel.cpp
@@ -78,7 +78,7 @@ QModelIndex JobListModel::indexForJob(JobItem* job)
 
 void JobListModel::runJob(const QModelIndex& index)
 {
-    m_jobs->runJob(m_jobs->indexOfItem(jobForIndex(index)));
+    m_jobs->runJob(jobForIndex(index));
 }
 
 void JobListModel::removeJob(const QModelIndex& index)
@@ -86,13 +86,13 @@ void JobListModel::removeJob(const QModelIndex& index)
     beginRemoveRows(QModelIndex(), index.row(), index.row());
     JobItem* job = jobForIndex(index);
     detachFromJob(job);
-    m_jobs->removeJob(m_jobs->indexOfItem(job));
+    m_jobs->removeJob(job);
     endRemoveRows();
 }
 
 void JobListModel::cancelJob(const QModelIndex& index)
 {
-    m_jobs->cancelJob(m_jobs->indexOfItem(jobForIndex(index)));
+    m_jobs->cancelJob(jobForIndex(index));
 }
 
 //--------------------------------------------------------------------------------------------------
diff --git a/GUI/View/Toplevel/SimulationView.cpp b/GUI/View/Toplevel/SimulationView.cpp
index 386314a1529..a1626b83bca 100644
--- a/GUI/View/Toplevel/SimulationView.cpp
+++ b/GUI/View/Toplevel/SimulationView.cpp
@@ -146,7 +146,7 @@ void SimulationView::runSimulation()
     JobModel* jobModel = m_document->jobModel();
     JobItem* jobItem = jobModel->addJob(selectedSample(), selectedInstrument(), selectedRealData(),
                                         *optionsItem());
-    jobModel->runJob(jobItem->index());
+    jobModel->runJob(jobItem);
 }
 
 void SimulationView::exportPythonScript()
-- 
GitLab