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

Tree view to show items of SessionModel via ViewModel mechanism. More...

Inheritance diagram for ModelView::ItemsTreeView:
[legend]
Collaboration diagram for ModelView::ItemsTreeView:
[legend]

Signals

void itemSelected (ModelView::SessionItem *)
 

Public Member Functions

 ItemsTreeView (QWidget *parent=nullptr)
 
 ~ItemsTreeView () override
 
void setRootSessionItem (SessionItem *item)
 
void setSelected (SessionItem *item)
 Make given item selected in QTreeView. More...
 
void setViewModel (std::unique_ptr< ViewModel > viewModel)
 
void setViewModelDelegate (std::unique_ptr< ViewModelDelegate > delegate)
 
QTreeView * treeView ()
 
ViewModelviewModel () const
 

Private Slots

void onSelectionChanged (const QItemSelection &, const QItemSelection &)
 Processes selections in QTreeView. More...
 

Private Member Functions

QItemSelectionModel * selectionModel ()
 
void set_connected (bool flag)
 

Private Attributes

bool m_block_selection
 
std::unique_ptr< ViewModelDelegatem_delegate
 
QTreeView * m_treeView {nullptr}
 
std::unique_ptr< ViewModelm_viewModel
 

Detailed Description

Tree view to show items of SessionModel via ViewModel mechanism.

Provides notification mechanism for SessionItem selections, use custom delegate.

Definition at line 35 of file itemstreeview.h.

Constructor & Destructor Documentation

◆ ItemsTreeView()

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

Definition at line 23 of file itemstreeview.cpp.

24  : QWidget(parent)
25  , m_treeView(new QTreeView)
26  , m_delegate(std::make_unique<ViewModelDelegate>())
27  , m_block_selection(false)
28 {
29  auto layout = new QVBoxLayout;
30  layout->setMargin(0);
31  layout->setSpacing(0);
32  layout->addWidget(m_treeView);
33  setLayout(layout);
34 }
std::unique_ptr< ViewModelDelegate > m_delegate
Definition: itemstreeview.h:67

References m_treeView.

◆ ~ItemsTreeView()

ItemsTreeView::~ItemsTreeView ( )
overridedefault

Member Function Documentation

◆ itemSelected

void ModelView::ItemsTreeView::itemSelected ( ModelView::SessionItem )
signal

Referenced by onSelectionChanged().

◆ onSelectionChanged

void ItemsTreeView::onSelectionChanged ( const QItemSelection &  ,
const QItemSelection &   
)
privateslot

Processes selections in QTreeView.

Finds SessionItem corresponding to selected indexes and emit itemSelected signal.

Definition at line 79 of file itemstreeview.cpp.

80 {
82  return;
83 
84  auto indexes = m_treeView->selectionModel()->selectedIndexes();
85  if (!indexes.empty()) {
86  auto item = m_viewModel->sessionItemFromIndex(indexes.at(0));
87  m_block_selection = true;
88  itemSelected(item);
89  m_block_selection = false;
90  }
91 }
std::unique_ptr< ViewModel > m_viewModel
Definition: itemstreeview.h:66
void itemSelected(ModelView::SessionItem *)

References itemSelected(), m_block_selection, m_treeView, and m_viewModel.

Referenced by set_connected().

◆ selectionModel()

QItemSelectionModel * ItemsTreeView::selectionModel ( )
private

Definition at line 110 of file itemstreeview.cpp.

111 {
112  return m_treeView->selectionModel();
113 }

References m_treeView.

Referenced by set_connected(), and setSelected().

◆ set_connected()

void ItemsTreeView::set_connected ( bool  flag)
private

Definition at line 93 of file itemstreeview.cpp.

94 {
95  Q_ASSERT(selectionModel());
96 
97  if (flag)
98  connect(selectionModel(), &QItemSelectionModel::selectionChanged, this,
100  else
101  disconnect(selectionModel(), &QItemSelectionModel::selectionChanged, this,
103 }
QItemSelectionModel * selectionModel()
void onSelectionChanged(const QItemSelection &, const QItemSelection &)
Processes selections in QTreeView.

References onSelectionChanged(), and selectionModel().

Referenced by setViewModel().

Here is the call graph for this function:

◆ setRootSessionItem()

void ItemsTreeView::setRootSessionItem ( SessionItem item)

Definition at line 65 of file itemstreeview.cpp.

66 {
67  m_viewModel->setRootSessionItem(item);
68  m_treeView->expandAll();
69 }

References m_treeView, and m_viewModel.

◆ setSelected()

void ItemsTreeView::setSelected ( SessionItem item)

Make given item selected in QTreeView.

Definition at line 55 of file itemstreeview.cpp.

56 {
57  if (!m_viewModel)
58  return;
59 
60  auto indexes = m_viewModel->indexOfSessionItem(item);
61  if (!indexes.empty())
62  selectionModel()->select(indexes.at(0), QItemSelectionModel::SelectCurrent);
63 }

References m_viewModel, and selectionModel().

Here is the call graph for this function:

◆ setViewModel()

void ItemsTreeView::setViewModel ( std::unique_ptr< ViewModel viewModel)

Definition at line 38 of file itemstreeview.cpp.

39 {
40  m_viewModel = std::move(viewModel);
41  m_treeView->setItemDelegate(m_delegate.get());
42  m_treeView->setModel(m_viewModel.get());
43  m_treeView->expandAll();
44  m_treeView->resizeColumnToContents(0);
45  set_connected(true);
46 }
void set_connected(bool flag)
ViewModel * viewModel() const

References m_delegate, m_treeView, m_viewModel, set_connected(), and viewModel().

Referenced by ModelView::AllItemsTreeView::AllItemsTreeView(), ModelView::TopItemsTreeView::TopItemsTreeView(), and ModelView::PropertyTreeView::setItem().

Here is the call graph for this function:

◆ setViewModelDelegate()

void ItemsTreeView::setViewModelDelegate ( std::unique_ptr< ViewModelDelegate delegate)

Definition at line 48 of file itemstreeview.cpp.

49 {
50  m_delegate = std::move(delegate);
51 }

References m_delegate.

Referenced by gui2::InstrumentPropertyEditor::setModels().

◆ treeView()

QTreeView * ItemsTreeView::treeView ( )

◆ viewModel()

ViewModel * ItemsTreeView::viewModel ( ) const

Definition at line 71 of file itemstreeview.cpp.

72 {
73  return m_viewModel.get();
74 }

References m_viewModel.

Referenced by ModelView::PropertyTreeView::setItem(), and setViewModel().

Member Data Documentation

◆ m_block_selection

bool ModelView::ItemsTreeView::m_block_selection
private

Definition at line 68 of file itemstreeview.h.

Referenced by onSelectionChanged().

◆ m_delegate

std::unique_ptr<ViewModelDelegate> ModelView::ItemsTreeView::m_delegate
private

Definition at line 67 of file itemstreeview.h.

Referenced by setViewModel(), and setViewModelDelegate().

◆ m_treeView

QTreeView* ModelView::ItemsTreeView::m_treeView {nullptr}
private

◆ m_viewModel

std::unique_ptr<ViewModel> ModelView::ItemsTreeView::m_viewModel
private

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