Omnidome
Fulldome Mapping Software Toolkit
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Public Member Functions | Private Member Functions | Private Attributes
omni::ui::mixin::DataModel< DATAMODEL, SHARED > Class Template Referenceabstract

Holds a specific data model with frontend update mechanism. More...

#include <DataModel.h>

Inheritance diagram for omni::ui::mixin::DataModel< DATAMODEL, SHARED >:
Inheritance graph
[legend]
Collaboration diagram for omni::ui::mixin::DataModel< DATAMODEL, SHARED >:
Collaboration graph
[legend]

Public Types

typedef DATAMODEL data_model_type
 Data type. More...
 
typedef DataModel
< data_model_type, SHARED > 
type
 This type. More...
 
typedef detail::PointerType
< data_model_type, SHARED > 
pointer_type_handler
 Pointer type handler. More...
 
typedef pointer_type_handler::type pointer_type
 Derived pointer type. More...
 

Public Member Functions

 DataModel ()
 
void setDataModel (pointer_type _dataModel)
 Set new data model. More...
 
pointer_type dataModel ()
 Return pointer to data model. More...
 
const pointer_type dataModel () const
 Return pointer to data model (const version) More...
 
virtual void updateFrontend ()
 Push data to frontend widgets and all child widgets. More...
 
virtual void updateDataModel ()
 Update the data model interface. More...
 

Private Member Functions

virtual void dataToFrontend ()=0
 Pure virtual method which determines how data model is represented in frontend. More...
 
virtual bool frontendToData ()=0
 Return true if data has changed by front end. More...
 
virtual void emitDataModelChangedSignal ()
 Internal method used to emit dataModelChanged signal. More...
 

Private Attributes

pointer_type dataModel_
 

Additional Inherited Members

- Protected Member Functions inherited from omni::ui::mixin::Locked
template<typename F >
void locked (F f)
 Lock widget and execute given functor. More...
 
bool isLocked () const
 Return true if widget is locked. More...
 

Detailed Description

template<typename DATAMODEL, bool SHARED>
class omni::ui::mixin::DataModel< DATAMODEL, SHARED >

Holds a specific data model with frontend update mechanism.

Template Parameters
DATAMODELType of data which is stored
SHAREDBoolean flag to tell of data model is encapsulared in a shared_ptr

Member Typedef Documentation

template<typename DATAMODEL , bool SHARED>
typedef DATAMODEL omni::ui::mixin::DataModel< DATAMODEL, SHARED >::data_model_type

Data type.

template<typename DATAMODEL , bool SHARED>
typedef pointer_type_handler::type omni::ui::mixin::DataModel< DATAMODEL, SHARED >::pointer_type

Derived pointer type.

template<typename DATAMODEL , bool SHARED>
typedef detail::PointerType<data_model_type, SHARED> omni::ui::mixin::DataModel< DATAMODEL, SHARED >::pointer_type_handler

Pointer type handler.

template<typename DATAMODEL , bool SHARED>
typedef DataModel<data_model_type, SHARED> omni::ui::mixin::DataModel< DATAMODEL, SHARED >::type

This type.

Constructor & Destructor Documentation

template<typename DATAMODEL , bool SHARED>
omni::ui::mixin::DataModel< DATAMODEL, SHARED >::DataModel ( )
inline
105  {
106  pointer_type_handler::initialize(dataModel_);
107  }
pointer_type dataModel_
Definition: DataModel.h:156

Member Function Documentation

template<typename DATAMODEL , bool SHARED>
pointer_type omni::ui::mixin::DataModel< DATAMODEL, SHARED >::dataModel ( )
inline

Return pointer to data model.

118  {
119  return dataModel_;
120  }
pointer_type dataModel_
Definition: DataModel.h:156
template<typename DATAMODEL , bool SHARED>
const pointer_type omni::ui::mixin::DataModel< DATAMODEL, SHARED >::dataModel ( ) const
inline

Return pointer to data model (const version)

123  {
124  return dataModel_;
125  }
pointer_type dataModel_
Definition: DataModel.h:156
template<typename DATAMODEL , bool SHARED>
virtual void omni::ui::mixin::DataModel< DATAMODEL, SHARED >::dataToFrontend ( )
privatepure virtual
template<typename DATAMODEL , bool SHARED>
virtual void omni::ui::mixin::DataModel< DATAMODEL, SHARED >::emitDataModelChangedSignal ( )
inlineprivatevirtual

Internal method used to emit dataModelChanged signal.

154 {}
template<typename DATAMODEL , bool SHARED>
virtual bool omni::ui::mixin::DataModel< DATAMODEL, SHARED >::frontendToData ( )
privatepure virtual
template<typename DATAMODEL , bool SHARED>
void omni::ui::mixin::DataModel< DATAMODEL, SHARED >::setDataModel ( pointer_type  _dataModel)
inline

Set new data model.

110  {
111  this->locked([&]() {
112  dataModel_ = _dataModel;
113  updateFrontend();
114  });
115  }
pointer_type dataModel_
Definition: DataModel.h:156
void locked(F f)
Lock widget and execute given functor.
Definition: Locked.h:30
virtual void updateFrontend()
Push data to frontend widgets and all child widgets.
Definition: DataModel.h:128
template<typename DATAMODEL , bool SHARED>
virtual void omni::ui::mixin::DataModel< DATAMODEL, SHARED >::updateDataModel ( )
inlinevirtual

Update the data model interface.

Implements omni::ui::mixin::DataModelInterface.

134  {
135  if (this->isLocked()) {
136  return;
137  }
138  this->locked([&]() {
139  if (frontendToData()) {
141  }
142  });
143  }
void locked(F f)
Lock widget and execute given functor.
Definition: Locked.h:30
bool isLocked() const
Return true if widget is locked.
Definition: Locked.h:40
virtual bool frontendToData()=0
Return true if data has changed by front end.
virtual void emitDataModelChangedSignal()
Internal method used to emit dataModelChanged signal.
Definition: DataModel.h:154
template<typename DATAMODEL , bool SHARED>
virtual void omni::ui::mixin::DataModel< DATAMODEL, SHARED >::updateFrontend ( )
inlinevirtual

Push data to frontend widgets and all child widgets.

Implements omni::ui::mixin::DataModelInterface.

128  {
129  if (dataModel_ && this->isLocked()) {
130  dataToFrontend();
131  }
132  }
pointer_type dataModel_
Definition: DataModel.h:156
bool isLocked() const
Return true if widget is locked.
Definition: Locked.h:40
virtual void dataToFrontend()=0
Pure virtual method which determines how data model is represented in frontend.

Field Documentation

template<typename DATAMODEL , bool SHARED>
pointer_type omni::ui::mixin::DataModel< DATAMODEL, SHARED >::dataModel_
private

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