BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
JobListWidget Class Reference

The JobListWidget class contains list view to select job items. More...

Inheritance diagram for JobListWidget:
[legend]
Collaboration diagram for JobListWidget:
[legend]

Public Slots

void makeJobItemSelected (JobItem *jobItem)
 

Signals

void contextMenuRequest (const QPoint &point, const QModelIndex &index)
 
void selectionChanged (JobItem *)
 

Public Member Functions

 JobListWidget (QWidget *parent=nullptr)
 
const JobItemcurrentJobItem () const
 Returns currently selected JobItem. More...
 
QSize minimumSizeHint () const
 
QItemSelectionModel * selectionModel ()
 
void setModel (JobModel *model)
 
QSize sizeHint () const
 

Private Slots

void onItemSelectionChanged (SessionItem *item)
 Recieves SeesionItem from ItemSelectorWidget and emits it further as JobItem. More...
 

Private Attributes

JobModelm_jobModel
 
ItemSelectorWidgetm_listView
 
JobListViewDelegatem_listViewDelegate
 

Detailed Description

The JobListWidget class contains list view to select job items.

Definition at line 31 of file JobListWidget.h.

Constructor & Destructor Documentation

◆ JobListWidget()

JobListWidget::JobListWidget ( QWidget *  parent = nullptr)
explicit

Definition at line 25 of file JobListWidget.cpp.

26  : QWidget(parent)
28  , m_listView(new ItemSelectorWidget(this))
29  , m_jobModel(nullptr)
30 {
31  setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
32 
33  m_listView->listView()->setItemDelegate(m_listViewDelegate);
34  m_listView->listView()->setSelectionMode(QAbstractItemView::ExtendedSelection);
35 
36  auto mainLayout = new QVBoxLayout;
37  mainLayout->setMargin(0);
38  mainLayout->setSpacing(0);
39 
40  auto vlayout = new QVBoxLayout;
41  vlayout->setMargin(10);
42  vlayout->setSpacing(10);
43 
44  vlayout->addWidget(m_listView);
45  mainLayout->addLayout(vlayout);
46 
47  setLayout(mainLayout);
48 
51 
54 }
The ItemSelectorWidget class holds QListView to show top level items of SessionModel.
void contextMenuRequest(const QPoint &point, const QModelIndex &index)
void selectionChanged(SessionItem *item)
ViewDelegate to show progress bar JobQueuListView.
JobListViewDelegate * m_listViewDelegate
Definition: JobListWidget.h:56
ItemSelectorWidget * m_listView
Definition: JobListWidget.h:57
void contextMenuRequest(const QPoint &point, const QModelIndex &index)
void onItemSelectionChanged(SessionItem *item)
Recieves SeesionItem from ItemSelectorWidget and emits it further as JobItem.
JobModel * m_jobModel
Definition: JobListWidget.h:58

References ItemSelectorWidget::contextMenuRequest(), contextMenuRequest(), ItemSelectorWidget::listView(), m_listView, m_listViewDelegate, onItemSelectionChanged(), and ItemSelectorWidget::selectionChanged().

Here is the call graph for this function:

Member Function Documentation

◆ contextMenuRequest

void JobListWidget::contextMenuRequest ( const QPoint &  point,
const QModelIndex &  index 
)
signal

◆ currentJobItem()

const JobItem * JobListWidget::currentJobItem ( ) const

Returns currently selected JobItem.

Definition at line 75 of file JobListWidget.cpp.

76 {
77  QModelIndexList selected = m_listView->selectionModel()->selectedIndexes();
78  return selected.size() == 1 ? m_jobModel->getJobItemForIndex(selected.at(0)) : nullptr;
79 }
QItemSelectionModel * selectionModel()
const JobItem * getJobItemForIndex(const QModelIndex &index) const
Definition: JobModel.cpp:46

References JobModel::getJobItemForIndex(), m_jobModel, m_listView, and ItemSelectorWidget::selectionModel().

Referenced by JobSelectorWidget::currentJobItem().

Here is the call graph for this function:

◆ makeJobItemSelected

void JobListWidget::makeJobItemSelected ( JobItem jobItem)
slot

Definition at line 91 of file JobListWidget.cpp.

92 {
93  ASSERT(jobItem);
94  QModelIndexList selected = m_listView->selectionModel()->selectedIndexes();
95 
96  // Already selected, but we still will emit the signal to notify widgets.
97  // To handle the case, when the job was selected before it completed (and some stack widgets
98  // were refusing to show the content for non-complete job).
99  if (selected.size() == 1 && selected.at(0) == jobItem->index()) {
100  emit selectionChanged(jobItem);
101  return;
102  }
103 
104  m_listView->selectionModel()->clearSelection();
105  m_listView->selectionModel()->select(jobItem->index(), QItemSelectionModel::Select);
106 }
#define ASSERT(condition)
Definition: Assert.h:31
void selectionChanged(JobItem *)
QModelIndex index() const
Returns model index of this item.
Definition: SessionItem.cpp:80

References ASSERT, SessionItem::index(), m_listView, selectionChanged(), and ItemSelectorWidget::selectionModel().

Referenced by JobSelectorWidget::makeJobItemSelected().

Here is the call graph for this function:

◆ minimumSizeHint()

QSize JobListWidget::minimumSizeHint ( ) const

Definition at line 86 of file JobListWidget.cpp.

87 {
89 }
int PropertyPanelWidth()
Returns typical width of the vertical property panel.
Definition: StyleUtils.cpp:121

References StyleUtils::PropertyPanelWidth().

Here is the call graph for this function:

◆ onItemSelectionChanged

void JobListWidget::onItemSelectionChanged ( SessionItem item)
privateslot

Recieves SeesionItem from ItemSelectorWidget and emits it further as JobItem.

Null item means the absence of selection.

Definition at line 111 of file JobListWidget.cpp.

112 {
113  JobItem* jobItem(nullptr);
114  if (item) {
115  jobItem = dynamic_cast<JobItem*>(item);
116  ASSERT(jobItem);
117  }
118  emit selectionChanged(jobItem);
119 }

References ASSERT, and selectionChanged().

Referenced by JobListWidget().

◆ selectionChanged

void JobListWidget::selectionChanged ( JobItem )
signal

◆ selectionModel()

QItemSelectionModel * JobListWidget::selectionModel ( )

Definition at line 68 of file JobListWidget.cpp.

69 {
70  return m_listView->selectionModel();
71 }

References m_listView, and ItemSelectorWidget::selectionModel().

Referenced by JobSelectorWidget::JobSelectorWidget().

Here is the call graph for this function:

◆ setModel()

void JobListWidget::setModel ( JobModel model)

Definition at line 56 of file JobListWidget.cpp.

57 {
58  ASSERT(model);
59  if (model != m_jobModel) {
60  m_jobModel = model;
61  m_listView->setModel(model);
62 
64  &JobModel::cancelJob, Qt::UniqueConnection);
65  }
66 }
void setModel(SessionModel *model)
void cancelButtonClicked(const QModelIndex &index)
void cancelJob(const QModelIndex &index)
Definition: JobModel.cpp:184

References ASSERT, JobListViewDelegate::cancelButtonClicked(), JobModel::cancelJob(), m_jobModel, m_listView, m_listViewDelegate, and ItemSelectorWidget::setModel().

Referenced by JobSelectorWidget::setModel().

Here is the call graph for this function:

◆ sizeHint()

QSize JobListWidget::sizeHint ( ) const

Definition at line 81 of file JobListWidget.cpp.

82 {
84 }

References StyleUtils::PropertyPanelWidth().

Here is the call graph for this function:

Member Data Documentation

◆ m_jobModel

JobModel* JobListWidget::m_jobModel
private

Definition at line 58 of file JobListWidget.h.

Referenced by currentJobItem(), and setModel().

◆ m_listView

ItemSelectorWidget* JobListWidget::m_listView
private

◆ m_listViewDelegate

JobListViewDelegate* JobListWidget::m_listViewDelegate
private

Definition at line 56 of file JobListWidget.h.

Referenced by JobListWidget(), and setModel().


The documentation for this class was generated from the following files: