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

Provides subscribe/unsubscribe mechanism for any QObject to track time of life of SessionItem. More...

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

Public Types

using callback_t = std::function< void(void)>
 

Public Member Functions

 SessionItemController (QObject *prt)
 
 ~SessionItemController ()
 
SessionItemcurrentItem ()
 
void setItem (SessionItem *item)
 
void setSubscribeCallback (callback_t fun)
 
void setUnsubscribeCallback (callback_t fun)
 
void subscribe ()
 Subscribe parent to item's signals. More...
 
void unsubscribe ()
 Fully unsubscribes the parent from listening item's signals. More...
 

Private Member Functions

void onControllerDestroy ()
 
void onItemDestroy ()
 
void subscribeParent ()
 
void unsubscribeParent ()
 Calls additional callback on un. More...
 

Private Attributes

SessionItemm_item
 
bool m_parent_subscribed
 
callback_t m_subscribe_callback
 
callback_t m_unsubscribe_callback
 

Detailed Description

Provides subscribe/unsubscribe mechanism for any QObject to track time of life of SessionItem.

Mainly intended for SessionItemWidget.

Definition at line 26 of file SessionItemController.h.

Member Typedef Documentation

◆ callback_t

using SessionItemController::callback_t = std::function<void(void)>

Definition at line 29 of file SessionItemController.h.

Constructor & Destructor Documentation

◆ SessionItemController()

SessionItemController::SessionItemController ( QObject *  prt)
explicit

Definition at line 19 of file SessionItemController.cpp.

20  : QObject(prt), m_item(nullptr), m_parent_subscribed(false)
21 {
22  ASSERT(parent());
23 }
#define ASSERT(condition)
Definition: Assert.h:31

References ASSERT.

◆ ~SessionItemController()

SessionItemController::~SessionItemController ( )

Definition at line 25 of file SessionItemController.cpp.

26 {
28 }

References onControllerDestroy().

Here is the call graph for this function:

Member Function Documentation

◆ currentItem()

SessionItem * SessionItemController::currentItem ( )

Definition at line 47 of file SessionItemController.cpp.

48 {
49  return m_item;
50 }

References m_item.

Referenced by SessionItemWidget::currentItem().

◆ onControllerDestroy()

void SessionItemController::onControllerDestroy ( )
private

Definition at line 94 of file SessionItemController.cpp.

95 {
96  if (m_item) {
97  m_item->mapper()->unsubscribe(this);
98  m_item->mapper()->unsubscribe(parent());
99  }
100 }
void unsubscribe(const void *caller)
Cancells all subscribtion of given caller.
Definition: ModelMapper.cpp:98
ModelMapper * mapper()
Returns the current model mapper of this item. Creates new one if necessary.

References m_item, SessionItem::mapper(), and ModelMapper::unsubscribe().

Referenced by ~SessionItemController().

Here is the call graph for this function:

◆ onItemDestroy()

void SessionItemController::onItemDestroy ( )
private

Definition at line 87 of file SessionItemController.cpp.

88 {
91  m_item = nullptr;
92 }
void unsubscribeParent()
Calls additional callback on un.

References m_item, m_parent_subscribed, and unsubscribeParent().

Referenced by setItem().

Here is the call graph for this function:

◆ setItem()

void SessionItemController::setItem ( SessionItem item)

Definition at line 30 of file SessionItemController.cpp.

31 {
32  if (m_item == item)
33  return;
34 
35  if (m_item) {
36  m_item->mapper()->unsubscribe(this);
37  unsubscribe();
38  }
39 
40  m_item = item;
41  if (!m_item)
42  return;
43 
44  m_item->mapper()->setOnItemDestroy([this](SessionItem*) { onItemDestroy(); }, this);
45 }
void setOnItemDestroy(std::function< void(SessionItem *)> f, const void *caller=0)
Definition: ModelMapper.cpp:87
void unsubscribe()
Fully unsubscribes the parent from listening item's signals.

References m_item, SessionItem::mapper(), onItemDestroy(), ModelMapper::setOnItemDestroy(), unsubscribe(), and ModelMapper::unsubscribe().

Referenced by SessionItemWidget::setItem().

Here is the call graph for this function:

◆ setSubscribeCallback()

void SessionItemController::setSubscribeCallback ( callback_t  fun)

Definition at line 52 of file SessionItemController.cpp.

53 {
55 }

References m_subscribe_callback.

Referenced by SessionItemWidget::SessionItemWidget().

◆ setUnsubscribeCallback()

void SessionItemController::setUnsubscribeCallback ( callback_t  fun)

Definition at line 57 of file SessionItemController.cpp.

58 {
60 }

References m_unsubscribe_callback.

Referenced by SessionItemWidget::SessionItemWidget().

◆ subscribe()

void SessionItemController::subscribe ( )

Subscribe parent to item's signals.

Definition at line 64 of file SessionItemController.cpp.

65 {
66  if (!m_item)
67  return;
68 
71 }

References m_item, m_parent_subscribed, and subscribeParent().

Referenced by SessionItemWidget::setItem(), and SessionItemWidget::showEvent().

Here is the call graph for this function:

◆ subscribeParent()

void SessionItemController::subscribeParent ( )
private

Definition at line 102 of file SessionItemController.cpp.

103 {
105  ASSERT(m_parent_subscribed == false);
107  m_parent_subscribed = true;
108 }

References ASSERT, m_parent_subscribed, and m_subscribe_callback.

Referenced by subscribe().

◆ unsubscribe()

void SessionItemController::unsubscribe ( )

Fully unsubscribes the parent from listening item's signals.

Controller stays active to track item destruction.

Definition at line 76 of file SessionItemController.cpp.

77 {
78  if (!m_item)
79  return;
80 
83 
84  m_item->mapper()->unsubscribe(parent());
85 }

References m_item, m_parent_subscribed, SessionItem::mapper(), ModelMapper::unsubscribe(), and unsubscribeParent().

Referenced by SessionItemWidget::hideEvent(), and setItem().

Here is the call graph for this function:

◆ unsubscribeParent()

void SessionItemController::unsubscribeParent ( )
private

Calls additional callback on un.

Definition at line 112 of file SessionItemController.cpp.

113 {
115  ASSERT(m_parent_subscribed == true);
117  m_parent_subscribed = false;
118 }

References ASSERT, m_parent_subscribed, and m_unsubscribe_callback.

Referenced by onItemDestroy(), and unsubscribe().

Member Data Documentation

◆ m_item

SessionItem* SessionItemController::m_item
private

◆ m_parent_subscribed

bool SessionItemController::m_parent_subscribed
private

◆ m_subscribe_callback

callback_t SessionItemController::m_subscribe_callback
private

Definition at line 50 of file SessionItemController.h.

Referenced by setSubscribeCallback(), and subscribeParent().

◆ m_unsubscribe_callback

callback_t SessionItemController::m_unsubscribe_callback
private

Definition at line 51 of file SessionItemController.h.

Referenced by setUnsubscribeCallback(), and unsubscribeParent().


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