BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
gui2::MaterialSelectionModel Class Reference

Custom selection model for material view model (AbstractViewModel). More...

Inheritance diagram for gui2::MaterialSelectionModel:
[legend]
Collaboration diagram for gui2::MaterialSelectionModel:
[legend]

Public Member Functions

 MaterialSelectionModel (ModelView::ViewModel *view_model, QObject *parent=nullptr)
 
 ~MaterialSelectionModel ()=default
 
std::vector< MaterialBaseItem * > selectedMaterials () const
 Returns vector of selected materials. More...
 
void selectItem (ModelView::SessionItem *item)
 
void selectItems (std::vector< ModelView::SessionItem * > items)
 
const ModelView::ViewModelviewModel () const
 

Detailed Description

Custom selection model for material view model (AbstractViewModel).

Reports clients about selected MaterialItem in material table and hides QModelIndex related machinery.

Definition at line 36 of file materialselectionmodel.h.

Constructor & Destructor Documentation

◆ MaterialSelectionModel()

gui2::MaterialSelectionModel::MaterialSelectionModel ( ModelView::ViewModel view_model,
QObject *  parent = nullptr 
)

Definition at line 22 of file materialselectionmodel.cpp.

23  : QItemSelectionModel(view_model, parent)
24 {
25  // FIXME cover with unit tests after implementing ViewItemSelectionModel
26  connect(view_model, &ModelView::ViewModel::modelAboutToBeReset, [this]() { clearSelection(); });
27 }

◆ ~MaterialSelectionModel()

gui2::MaterialSelectionModel::~MaterialSelectionModel ( )
default

Member Function Documentation

◆ selectedMaterials()

std::vector< MaterialBaseItem * > gui2::MaterialSelectionModel::selectedMaterials ( ) const

Returns vector of selected materials.

Definition at line 52 of file materialselectionmodel.cpp.

53 {
54  std::vector<MaterialBaseItem*> result;
55  auto selected_items = ModelView::Utils::ParentItemsFromIndex(selectedIndexes());
56  std::transform(std::begin(selected_items), std::end(selected_items), std::back_inserter(result),
57  [](auto item) { return dynamic_cast<MaterialBaseItem*>(item); });
58  return result;
59 }
MVVM_VIEWMODEL_EXPORT std::vector< SessionItem * > ParentItemsFromIndex(const QModelIndexList &index_list)
Returns vector of parent items from given index list.

References ModelView::Utils::ParentItemsFromIndex().

Here is the call graph for this function:

◆ selectItem()

void gui2::MaterialSelectionModel::selectItem ( ModelView::SessionItem item)

Definition at line 29 of file materialselectionmodel.cpp.

30 {
31  selectItems({item});
32 }
void selectItems(std::vector< ModelView::SessionItem * > items)

References selectItems().

Here is the call graph for this function:

◆ selectItems()

void gui2::MaterialSelectionModel::selectItems ( std::vector< ModelView::SessionItem * >  items)

Definition at line 34 of file materialselectionmodel.cpp.

35 {
36  QModelIndexList indexes;
37  for (auto item : items)
38  indexes << viewModel()->indexOfSessionItem(item->getItem(MaterialBaseItem::P_NAME));
39 
40  if (indexes.empty())
41  return;
42 
43  clearSelection();
44 
45  QItemSelection selection(indexes.front(), indexes.back());
46  auto flags = QItemSelectionModel::SelectCurrent | QItemSelectionModel::Rows;
47  select(selection, flags);
48 }
QModelIndexList indexOfSessionItem(const SessionItem *item) const
Returns list of model indices representing given SessionItem.
Definition: viewmodel.cpp:71
static const std::string P_NAME
Definition: materialitems.h:43
const ModelView::ViewModel * viewModel() const

References ModelView::ViewModel::indexOfSessionItem(), gui2::MaterialBaseItem::P_NAME, and viewModel().

Referenced by selectItem().

Here is the call graph for this function:

◆ viewModel()

const ModelView::ViewModel * gui2::MaterialSelectionModel::viewModel ( ) const

Definition at line 61 of file materialselectionmodel.cpp.

62 {
63  return static_cast<const ModelView::ViewModel*>(model());
64 }
Main class to represent content of SessionModel in Qt's trees and tables.
Definition: viewmodel.h:29

Referenced by selectItems().


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