diff --git a/GUI/coregui/Models/JobModel.h b/GUI/coregui/Models/JobModel.h index 105d172ed7d3033f32212ec51ad1e19ccae16d94..111ec4302ad0ea883185c0f701905989ed6af829 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 dc5621288ad79ef1595ad6e75739a0b950534eaa..905bc91069bfbfd560b4441afe9f4302075b5648 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 fa7c8e3fd73d1b053d58ebc9ad1da3303171af92..6e3034286be0ebe6d762287dbaec50b6ba0796c8 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 7748875109fb29f84c86383d7a98e55da64af77a..4464faebf0adf7fd9227ccead2054d44b02a0857 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 4cf25c7b8f0ade9105d5fa307386847310c79741..7f0b41ddc10702e4c1441ac8c55c07cb336879ac 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 42934c3fe78809ce5aa4d2ce97e96734ada29a22..c99a4135cd82463e1bb846326a98cba90b1872aa 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 5b37e6fbbfbe35cc9cb40a80bad5ff6ff7944e22..8c5dbc195365ab7e4bd2c36ebe6b8c7efa931a79 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)