From 817001a0537a0c6d1d77c07476361bad901e88b6 Mon Sep 17 00:00:00 2001
From: Mikhail Svechnikov <m.svechnikov@fz-juelich.de>
Date: Thu, 8 Sep 2022 10:59:16 +0200
Subject: [PATCH] JobRealTimeWidget: done

---
 GUI/View/Fit/FitActivityPanel.cpp    |  4 +++-
 GUI/View/Fit/JobRealTimeWidget.cpp   | 34 ++++++++++++++++++++++++++++
 GUI/View/Fit/JobRealTimeWidget.h     |  5 ++++
 GUI/View/Job/JobPropertiesWidget.cpp |  6 ++---
 GUI/View/Job/JobSelectorWidget.cpp   |  3 ---
 GUI/View/Job/JobView.cpp             |  2 +-
 6 files changed, 46 insertions(+), 8 deletions(-)

diff --git a/GUI/View/Fit/FitActivityPanel.cpp b/GUI/View/Fit/FitActivityPanel.cpp
index 780200eaded..3a843056302 100644
--- a/GUI/View/Fit/FitActivityPanel.cpp
+++ b/GUI/View/Fit/FitActivityPanel.cpp
@@ -35,9 +35,11 @@ FitActivityPanel::FitActivityPanel(QWidget* parent)
 {
     setWindowTitle(GUI::Constants::JobFitPanelName);
     setObjectName("FitActivityPanel");
-    setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
+    setSizePolicy(QSizePolicy::Expanding, QSizePolicy::MinimumExpanding);
+
 
     auto* layout = new QVBoxLayout(this);
+
     layout->setContentsMargins(0, 0, 0, 0);
     layout->setSpacing(0);
     m_stack = new QStackedWidget(this);
diff --git a/GUI/View/Fit/JobRealTimeWidget.cpp b/GUI/View/Fit/JobRealTimeWidget.cpp
index d214d73a446..039aa1985d1 100644
--- a/GUI/View/Fit/JobRealTimeWidget.cpp
+++ b/GUI/View/Fit/JobRealTimeWidget.cpp
@@ -27,6 +27,7 @@ const bool reuse_widget = true;
 JobRealTimeWidget::JobRealTimeWidget(JobModel* jobModel, QWidget* parent)
     : QWidget(parent)
     , m_stackedWidget(new ItemStackPresenter<ParameterTuningWidget>(reuse_widget))
+    , m_panelWidth(GUI::Constants::FIT_ACTIVITY_PANEL_WIDTH)
 {
     setWindowTitle(GUI::Constants::JobRealTimeWidgetName);
     setObjectName("JobRealTimeWidget");
@@ -39,6 +40,20 @@ JobRealTimeWidget::JobRealTimeWidget(JobModel* jobModel, QWidget* parent)
     setLayout(mainLayout);
 
     m_stackedWidget->setModel(jobModel);
+
+    readSettings();
+    setFixedWidth(m_panelWidth);
+}
+
+JobRealTimeWidget::~JobRealTimeWidget()
+{
+    writeSettings();
+}
+
+void JobRealTimeWidget::resizeEvent(QResizeEvent*)
+{
+    setMinimumWidth(0);
+    setMaximumWidth(QWIDGETSIZE_MAX);
 }
 
 ParameterTuningWidget* JobRealTimeWidget::parameterTuningWidget(JobItem* jobItem)
@@ -61,3 +76,22 @@ bool JobRealTimeWidget::isValidJobItem(JobItem* item)
 {
     return item && (item->isCompleted() || item->isCanceled() || item->isFailed());
 }
+
+void JobRealTimeWidget::readSettings()
+{
+    QSettings settings;
+    if (settings.childGroups().contains(GUI::Constants::S_FIT_ACTIVITY_PANEL)) {
+        settings.beginGroup(GUI::Constants::S_FIT_ACTIVITY_PANEL);
+        m_panelWidth = settings.value(GUI::Constants::S_FIT_ACTIVITY_PANEL_SIZE).toSize().width();
+        settings.endGroup();
+    }
+}
+
+void JobRealTimeWidget::writeSettings()
+{
+    QSettings settings;
+    settings.beginGroup(GUI::Constants::S_FIT_ACTIVITY_PANEL);
+    settings.setValue(GUI::Constants::S_FIT_ACTIVITY_PANEL_SIZE, size());
+    settings.endGroup();
+    settings.sync();
+}
diff --git a/GUI/View/Fit/JobRealTimeWidget.h b/GUI/View/Fit/JobRealTimeWidget.h
index 6ad42486fc0..cd704f08396 100644
--- a/GUI/View/Fit/JobRealTimeWidget.h
+++ b/GUI/View/Fit/JobRealTimeWidget.h
@@ -28,14 +28,19 @@ class JobRealTimeWidget : public QWidget {
     Q_OBJECT
 public:
     JobRealTimeWidget(JobModel* jobModel, QWidget* parent = nullptr);
+    ~JobRealTimeWidget();
 
     ParameterTuningWidget* parameterTuningWidget(JobItem* jobItem);
 
+    void resizeEvent(QResizeEvent*) override;
     void setJobItem(JobItem* jobItem);
 
 private:
     bool isValidJobItem(JobItem* item);
+    void readSettings();
+    void writeSettings();
 
+    int m_panelWidth;
     ItemStackPresenter<ParameterTuningWidget>* m_stackedWidget;
 };
 
diff --git a/GUI/View/Job/JobPropertiesWidget.cpp b/GUI/View/Job/JobPropertiesWidget.cpp
index 8b56e6dec93..9012cb00dc6 100644
--- a/GUI/View/Job/JobPropertiesWidget.cpp
+++ b/GUI/View/Job/JobPropertiesWidget.cpp
@@ -68,7 +68,7 @@ JobPropertiesWidget::JobPropertiesWidget(QWidget* parent, Qt::WindowFlags f)
 
     readSettings();
     adjustSize();
-    setFixedSize(m_panelSize);
+    setFixedHeight(m_panelSize.height());
 }
 
 JobPropertiesWidget::~JobPropertiesWidget()
@@ -80,8 +80,8 @@ JobPropertiesWidget::~JobPropertiesWidget()
 
 void JobPropertiesWidget::resizeEvent(QResizeEvent*)
 {
-    setMinimumSize(0,0);
-    setMaximumSize(QWIDGETSIZE_MAX,QWIDGETSIZE_MAX);
+    setMinimumHeight(0);
+    setMaximumHeight(QWIDGETSIZE_MAX);
 }
 
 QSize JobPropertiesWidget::sizeHint() const
diff --git a/GUI/View/Job/JobSelectorWidget.cpp b/GUI/View/Job/JobSelectorWidget.cpp
index 79aa359e696..72d78a6c76e 100644
--- a/GUI/View/Job/JobSelectorWidget.cpp
+++ b/GUI/View/Job/JobSelectorWidget.cpp
@@ -37,15 +37,12 @@ JobSelectorWidget::JobSelectorWidget(JobModel* jobModel, QWidget* parent)
     auto* splitter = new QSplitter(Qt::Vertical, this);
     splitter->setChildrenCollapsible(true);
     layout->addWidget(splitter);
-//    splitter->hide();
 
     m_jobListView = new JobListView(m_jobModel, splitter);
     splitter->addWidget(m_jobListView);
-//    m_jobListView->hide();
 
     m_jobProperties = new JobPropertiesWidget(this);
     splitter->addWidget(m_jobProperties);
-//    m_jobProperties->hide();
 
     connect(m_jobListView, &JobListView::selectedJobsChanged, this,
             &JobSelectorWidget::onSelectedJobsChanged);
diff --git a/GUI/View/Job/JobView.cpp b/GUI/View/Job/JobView.cpp
index 4099e1baedc..c300c66144a 100644
--- a/GUI/View/Job/JobView.cpp
+++ b/GUI/View/Job/JobView.cpp
@@ -118,7 +118,7 @@ void JobView::createSubWindows()
     m_jobMessagePanel = new JobMessagePanel(this);
 
     m_docks->addWidget(JobViewFlags::JOB_LIST_DOCK, m_jobSelector, Qt::LeftDockWidgetArea);
-//    m_docks->addWidget(JobViewFlags::REAL_TIME_DOCK, m_jobRealTimeWidget, Qt::RightDockWidgetArea);
+    m_docks->addWidget(JobViewFlags::REAL_TIME_DOCK, m_jobRealTimeWidget, Qt::RightDockWidgetArea);
     m_docks->addWidget(JobViewFlags::FIT_PANEL_DOCK, m_fitActivityPanel, Qt::RightDockWidgetArea);
     m_docks->addWidget(JobViewFlags::JOB_MESSAGE_DOCK, m_jobMessagePanel, Qt::BottomDockWidgetArea);
 
-- 
GitLab