AUI Framework
master
Cross-platform module-based framework for developing C++20 desktop applications
|
Data binding implementation. More...
Data binding implementation.
Model | Your model type. |
If const reference of your model passed, ADataBinding will create and manage its own copy of your model.
If pointer of your model passed, ADataBinding will reference to your model and write directly to your model. When ADataBinding is destructed the pointer will not be deleted.
Example:
This code will bind ATextField with username field in the User model.
Another example:
Here, we use getEditableModel() in order to change data in our model and notifyUpdate() to notify.
Also, we use let construction to define custom format for label.
Public Member Functions | |
ADataBinding (const Model &m) | |
ADataBinding (Model *m) | |
template<typename View , typename ModelField , typename SetterArg > | |
auto | operator() (ModelField(Model::*field), void(View::*setterFunc)(SetterArg)) |
Create a connection to setter only. More... | |
template<typename ModelField , typename SetterLambda > | |
auto | operator() (ModelField(Model::*field), SetterLambda setterLambda) |
Create a connection to specified lambda setter only. More... | |
template<typename View , typename ModelField , typename GetterRV , aui::invocable< View *, const ModelField & > Setter> | |
auto | operator() (ModelField(Model::*field), ASignal< GetterRV >(View::*getter), Setter setter=(void(View::*)(const ModelField &)) nullptr) |
Create a connection to specified pointer-to-member-field signal and pointer-to-member-function setter. More... | |
template<typename Data > | |
auto | operator() (Data(Model::*field)) |
Create a connection via ADataBindingDefault. More... | |
template<typename Data , aui::invocable< Data > Projection> | |
ADataBindingLinker2< Model, Data, Projection > | operator() (Data(Model::*field), Projection projection) |
Create a connection via ADataBindingDefault and projection (setter only). More... | |
const Model & | getModel () const noexcept |
Model const * | operator-> () const noexcept |
Model & | getEditableModel () |
void | setModel (const Model &model) |
void | setModel (Model *model) |
const void * | getExclusion () const |
void | notifyUpdate (void *except=nullptr, unsigned field=-1) |
template<typename ModelField > | |
void | notifyUpdate (ModelField(Model::*field)) |
template<typename ModelField , aui::convertible_to< ModelField > U> | |
void | setValue (ModelField(Model::*field), U &&value) |
void | addObserver (Observer applier) |
template<aui::invocable T> | |
void | addObserver (T &&applier) |
template<typename ModelField , typename FieldObserver > | |
void | addObserverNoInitialCall (ModelField(Model::*field), FieldObserver &&observer) |
template<typename ModelField , typename FieldObserver > | |
void | addObserver (ModelField(Model::*field), FieldObserver &&observer) |
Public Member Functions inherited from AObject | |
_< AObject > | sharedPtr () |
_weak< AObject > | weakPtr () |
void | clearSignals () noexcept |
template<AAnySignal Signal, ACompatibleSlotFor< Signal > Function> | |
void | connect (Signal &signal, Function &&function) |
void | setSignalsEnabled (bool enabled) |
bool | isSignalsEnabled () const noexcept |
template<ASignalInvokable T> | |
void | operator^ (T &&t) |
_< AAbstractThread > | getThread () const |
bool | isSlotsCallsOnlyOnMyThread () const noexcept |
void | setSlotsCallsOnlyOnMyThread (bool slotsCallsOnlyOnMyThread) |
Public Member Functions inherited from aui::noncopyable | |
noncopyable (const noncopyable &)=delete | |
noncopyable & | operator= (const noncopyable &)=delete |
Signals and public fields | |
emits | modelChanged |
Data in the model has changed. | |
Additional Inherited Members | |
Static Public Member Functions inherited from AObject | |
static void | disconnect () |
template<AAnySignal Signal, aui::derived_from< AObject > Object, ACompatibleSlotFor< Signal > Function> | |
static void | connect (Signal &signal, Object *object, Function &&function) |
template<AAnySignal Signal, aui::derived_from< AObject > Object, ACompatibleSlotFor< Signal > Function> | |
static void | connect (Signal &signal, Object &object, Function &&function) |
template<AAnySignal Signal, aui::derived_from< AObject > Object, ACompatibleSlotFor< Signal > Function> | |
static void | connect (Signal &signal, _< Object > object, Function &&function) |
static void | moveToThread (aui::no_escape< AObject > object, _< AAbstractThread > thread) |
Protected Member Functions inherited from AObject | |
void | setThread (_< AAbstractThread > thread) |
Set thread of the object. | |
|
inline |
Create a connection via ADataBindingDefault.
field | pointer-to-member-field of model. |
ADataBindingDefault must be defined for model type and your view.
|
inline |
Create a connection via ADataBindingDefault and projection (setter only).
ADataBindingDefault must be defined for model type and your view.
|
inline |
Create a connection to specified pointer-to-member-field signal and pointer-to-member-function setter.
field | pointer-to-member-field of model. |
|
inline |
Create a connection to specified lambda setter only.
field | pointer-to-member-field of model. |
setterLambda | lambda which accepts reference to your view type and const reference to data (see examples). |
View type is deduces from the first argument of your lambda.
|
inline |
Create a connection to setter only.
field | pointer-to-member-field of model. |
setterFunc | pointer-to-member-function setter. |
#include <AUI/Util/ADataBinding.h>