From 4c3832c50876043a15a5e151fc31e9ac5a100058 Mon Sep 17 00:00:00 2001 From: Gennady Pospelov <g.pospelov@fz-juelich.de> Date: Thu, 9 Jun 2016 14:46:38 +0200 Subject: [PATCH] Unnecessary modelLoaded signal is removed. Default JobItem selection on project load. --- GUI/coregui/Models/JobModel.h | 1 - GUI/coregui/Views/JobView.cpp | 2 ++ GUI/coregui/Views/JobWidgets/JobListWidget.cpp | 13 ++++++------- GUI/coregui/Views/JobWidgets/JobListWidget.h | 6 ++++-- GUI/coregui/Views/JobWidgets/JobSelectorWidget.cpp | 12 ++++++++++++ GUI/coregui/Views/JobWidgets/JobSelectorWidget.h | 1 + GUI/coregui/mainwindow/projectdocument.cpp | 2 -- 7 files changed, 25 insertions(+), 12 deletions(-) diff --git a/GUI/coregui/Models/JobModel.h b/GUI/coregui/Models/JobModel.h index 105d172ed7d..111ec4302ad 100644 --- a/GUI/coregui/Models/JobModel.h +++ b/GUI/coregui/Models/JobModel.h @@ -58,7 +58,6 @@ signals: void aboutToDeleteJobItem(JobItem *item); void focusRequest(JobItem *item); void globalProgress(int); - void modelLoaded(); public slots: void onCancelAllJobs(); diff --git a/GUI/coregui/Views/JobView.cpp b/GUI/coregui/Views/JobView.cpp index dc5621288ad..905bc91069b 100644 --- a/GUI/coregui/Views/JobView.cpp +++ b/GUI/coregui/Views/JobView.cpp @@ -78,6 +78,8 @@ void JobView::showEvent(QShowEvent *) { if(isVisible()) m_jobActivityStatusBar->show(); + + m_docks->jobSelector()->makeSelectionIfNoneSelected(); } void JobView::hideEvent(QHideEvent *) diff --git a/GUI/coregui/Views/JobWidgets/JobListWidget.cpp b/GUI/coregui/Views/JobWidgets/JobListWidget.cpp index fa7c8e3fd73..6e3034286be 100644 --- a/GUI/coregui/Views/JobWidgets/JobListWidget.cpp +++ b/GUI/coregui/Views/JobWidgets/JobListWidget.cpp @@ -63,15 +63,8 @@ void JobListWidget::setModel(JobModel *model) m_jobModel = model; m_listView->setModel(model); -// connect(m_listView->selectionModel(), -// SIGNAL( selectionChanged(const QItemSelection&, const QItemSelection&) ), -// m_jobModel, -// SLOT( onSelectionChanged(const QItemSelection&, const QItemSelection&) ) -// ); - connect(m_listViewDelegate, SIGNAL(cancelButtonClicked(QModelIndex)), m_jobModel, SLOT(cancelJob(QModelIndex)), Qt::UniqueConnection); - } } @@ -80,6 +73,11 @@ QItemSelectionModel *JobListWidget::selectionModel() return m_listView->selectionModel(); } +QModelIndexList JobListWidget::selected() +{ + return m_listView->selectionModel()->selectedIndexes(); +} + //! setup context menu for listView //void JobListWidget::setupContextMenuActions() @@ -139,6 +137,7 @@ QItemSelectionModel *JobListWidget::selectionModel() void JobListWidget::makeJobItemSelected(JobItem *jobItem) { + Q_ASSERT(jobItem); QModelIndexList selected = m_listView->selectionModel()->selectedIndexes(); // Already selected, but we still will emit the signal to notify widgets. diff --git a/GUI/coregui/Views/JobWidgets/JobListWidget.h b/GUI/coregui/Views/JobWidgets/JobListWidget.h index 7748875109f..4464faebf0a 100644 --- a/GUI/coregui/Views/JobWidgets/JobListWidget.h +++ b/GUI/coregui/Views/JobWidgets/JobListWidget.h @@ -19,6 +19,7 @@ #include "WinDllMacros.h" #include <QWidget> +#include <QModelIndexList> class JobModel; class JobListViewDelegate; @@ -41,16 +42,17 @@ public: QItemSelectionModel *selectionModel(); + QModelIndexList selected(); + signals: void contextMenuRequest(const QPoint &point, const QModelIndex &index); void selectionChanged(class JobItem *); public slots: void makeJobItemSelected(class JobItem *jobItem); -// void makeJobItemSelected(const QModelIndex &index); + void onItemSelectionChanged(class SessionItem *item); private slots: - void onItemSelectionChanged(class SessionItem *item); private: JobListViewDelegate *m_listViewDelegate; diff --git a/GUI/coregui/Views/JobWidgets/JobSelectorWidget.cpp b/GUI/coregui/Views/JobWidgets/JobSelectorWidget.cpp index 4cf25c7b8f0..7f0b41ddc10 100644 --- a/GUI/coregui/Views/JobWidgets/JobSelectorWidget.cpp +++ b/GUI/coregui/Views/JobWidgets/JobSelectorWidget.cpp @@ -24,6 +24,8 @@ #include "StyledToolBar.h" #include "minisplitter.h" #include <QHBoxLayout> +#include <QItemSelectionModel> + JobSelectorWidget::JobSelectorWidget(JobModel *jobModel, QWidget *parent) : QWidget(parent) @@ -75,6 +77,16 @@ void JobSelectorWidget::makeJobItemSelected(JobItem *item) m_jobListWidget->makeJobItemSelected(item); } +//! If no selection exist, select first item + +void JobSelectorWidget::makeSelectionIfNoneSelected() +{ + if(m_jobListWidget->selected().isEmpty()) { + if(SessionItem *item = m_jobModel->topItem()) + m_jobListWidget->selectionModel()->select(item->index(), QItemSelectionModel::Select); + } +} + void JobSelectorWidget::onSelectionChanged(JobItem *jobItem) { m_jobProperties->setItem(jobItem); diff --git a/GUI/coregui/Views/JobWidgets/JobSelectorWidget.h b/GUI/coregui/Views/JobWidgets/JobSelectorWidget.h index 42934c3fe78..c99a4135cd8 100644 --- a/GUI/coregui/Views/JobWidgets/JobSelectorWidget.h +++ b/GUI/coregui/Views/JobWidgets/JobSelectorWidget.h @@ -43,6 +43,7 @@ signals: public slots: void makeJobItemSelected(JobItem *); + void makeSelectionIfNoneSelected(); private slots: void onSelectionChanged(JobItem *jobItem); diff --git a/GUI/coregui/mainwindow/projectdocument.cpp b/GUI/coregui/mainwindow/projectdocument.cpp index 5b37e6fbbfb..8c5dbc19536 100644 --- a/GUI/coregui/mainwindow/projectdocument.cpp +++ b/GUI/coregui/mainwindow/projectdocument.cpp @@ -248,8 +248,6 @@ void ProjectDocument::readFrom(QIODevice *device) m_messageService->send_message(this, XML_FORMAT_ERROR, reader.errorString()); return; } - - m_applicationModels->jobModel()->modelLoaded(); } void ProjectDocument::writeTo(QIODevice *device) -- GitLab