From b31ab101fc682c1993f6dad022616fc73590232a Mon Sep 17 00:00:00 2001
From: Joachim Wuttke <j.wuttke@fz-juelich.de>
Date: Tue, 16 Jul 2024 17:54:16 +0200
Subject: [PATCH] mv job properties display from JobEditor to JobsPanel

---
 GUI/View/Job/JobEditor.cpp | 13 -------------
 GUI/View/Job/JobEditor.h   |  5 -----
 GUI/View/Job/JobsPanel.cpp | 14 +++++++++++++-
 GUI/View/Job/JobsPanel.h   |  6 +++++-
 4 files changed, 18 insertions(+), 20 deletions(-)

diff --git a/GUI/View/Job/JobEditor.cpp b/GUI/View/Job/JobEditor.cpp
index f0a8d77492d..b6aadf47832 100644
--- a/GUI/View/Job/JobEditor.cpp
+++ b/GUI/View/Job/JobEditor.cpp
@@ -16,15 +16,11 @@
 #include "GUI/Model/Job/BatchInfo.h"
 #include "GUI/Model/Job/JobItem.h"
 #include "GUI/Model/Job/JobStatus.h"
-#include "GUI/View/Job/JobparQModel.h"
-#include <QHeaderView>
 #include <QLabel>
 #include <QVBoxLayout>
 
 JobEditor::JobEditor(QWidget* parent, Qt::WindowFlags f)
     : QWidget(parent, f)
-    , m_properties_view(new QTreeView(this))
-    , m_properties_model(new JobparQModel(this))
     , m_comments_editor(new QTextEdit(this))
     , m_job_item(nullptr)
 {
@@ -38,14 +34,6 @@ JobEditor::JobEditor(QWidget* parent, Qt::WindowFlags f)
     layout->addWidget(new QLabel("Messages"));
     layout->addWidget(m_comments_editor);
 
-    layout->addWidget(new QLabel("Properties"));
-    layout->addWidget(m_properties_view);
-
-    m_properties_view->setRootIsDecorated(false);
-    m_properties_view->setAlternatingRowColors(true);
-    m_properties_view->setModel(m_properties_model);
-    m_properties_view->header()->setSectionResizeMode(QHeaderView::ResizeToContents);
-
     connect(m_comments_editor, &QTextEdit::textChanged, this, &JobEditor::onCommentsEdited);
 
     setMinimumWidth(10);
@@ -65,7 +53,6 @@ void JobEditor::setJobItem(JobItem* jobItem)
         disconnect(m_job_item->batchInfo());
     }
     m_job_item = jobItem;
-    m_properties_model->setJobItem(m_job_item);
     if (m_job_item) {
         const bool ok = isFailed(m_job_item->batchInfo()->status());
         m_comments_editor->setTextColor(ok ? Qt::black : Qt::red);
diff --git a/GUI/View/Job/JobEditor.h b/GUI/View/Job/JobEditor.h
index 74638b16fe9..be9407748b9 100644
--- a/GUI/View/Job/JobEditor.h
+++ b/GUI/View/Job/JobEditor.h
@@ -16,11 +16,8 @@
 #define BORNAGAIN_GUI_VIEW_JOB_JOBEDITOR_H
 
 #include <QTextEdit>
-#include <QTreeView>
-#include <QWidget>
 
 class JobItem;
-class JobparQModel;
 
 //! Holds tabs for properties view and comments editor.
 
@@ -35,8 +32,6 @@ private slots:
     void onCommentsEdited();
 
 private:
-    QTreeView* m_properties_view;
-    JobparQModel* m_properties_model;
     QTextEdit* m_comments_editor;
     JobItem* m_job_item;
 };
diff --git a/GUI/View/Job/JobsPanel.cpp b/GUI/View/Job/JobsPanel.cpp
index 2a25ce37d4f..18c81552743 100644
--- a/GUI/View/Job/JobsPanel.cpp
+++ b/GUI/View/Job/JobsPanel.cpp
@@ -16,7 +16,9 @@
 #include "Base/Util/Assert.h"
 #include "GUI/View/Base/mainwindow_constants.h"
 #include "GUI/View/Job/JobEditor.h"
+#include "GUI/View/Job/JobparQModel.h"
 #include "GUI/View/Job/JobsListing.h"
+#include <QHeaderView>
 #include <QSettings>
 #include <QVBoxLayout>
 
@@ -45,6 +47,8 @@ QVector<int> qVariantToList(const QVariant& var)
 JobsPanel::JobsPanel(QWidget* parent)
     : QWidget(parent)
     , m_splitter(new QSplitter(Qt::Vertical, this))
+    , m_properties_view(new QTreeView(this))
+    , m_properties_model(new JobparQModel(this))
     , m_job_editor(new JobEditor(this))
 {
     setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Expanding);
@@ -69,6 +73,12 @@ JobsPanel::JobsPanel(QWidget* parent)
     m_splitter->setCollapsible(1, false);
     m_splitter->setStretchFactor(1, 0);
 
+    m_properties_view->setRootIsDecorated(false);
+    m_properties_view->setAlternatingRowColors(true);
+    m_properties_view->setModel(m_properties_model);
+    m_properties_view->header()->setSectionResizeMode(QHeaderView::ResizeToContents);
+    m_splitter->addWidget(m_properties_view);
+
     connect(m_listing, &JobsListing::selectedJobsChanged, this, &JobsPanel::onSelectedJobsChanged);
 
     onSelectedJobsChanged(selectedJobItems());
@@ -102,7 +112,9 @@ void JobsPanel::makeJobItemSelected(JobItem* item)
 
 void JobsPanel::onSelectedJobsChanged(const QVector<JobItem*>& jobs)
 {
-    m_job_editor->setJobItem(jobs.empty() ? nullptr : jobs.front());
+    JobItem* new_job = jobs.empty() ? nullptr : jobs.front();
+    m_properties_model->setJobItem(new_job);
+    m_job_editor->setJobItem(new_job);
     emit selectedJobsChanged();
 }
 
diff --git a/GUI/View/Job/JobsPanel.h b/GUI/View/Job/JobsPanel.h
index 7021878f429..493ee1740f8 100644
--- a/GUI/View/Job/JobsPanel.h
+++ b/GUI/View/Job/JobsPanel.h
@@ -16,10 +16,11 @@
 #define BORNAGAIN_GUI_VIEW_JOB_JOBSPANEL_H
 
 #include <QSplitter>
-#include <QWidget>
+#include <QTreeView>
 
 class JobEditor;
 class JobItem;
+class JobparQModel;
 class JobsListing;
 
 //! A panel with a JobsListing on top and a JobEditor an bottom.
@@ -47,7 +48,10 @@ private:
     void saveSettings();
 
     QSplitter* m_splitter;
+
     JobsListing* m_listing;
+    QTreeView* m_properties_view;
+    JobparQModel* m_properties_model;
     JobEditor* m_job_editor;
 };
 
-- 
GitLab