Aria
2.0.0
C++23 MVVM framework (C++20 minimum) — reactive, coroutine-first, ABI-layered
Toggle main menu visibility
Loading...
Searching...
No Matches
view_model.hpp
Go to the documentation of this file.
1
#pragma once
2
3
#include "
aria/abi/export.hpp
"
4
#include "
aria/property.hpp
"
5
#include "
aria/subscription.hpp
"
6
7
#include <functional>
8
#include <memory>
9
#include <vector>
10
11
namespace
aria::binding
{
12
28
#ifdef _MSC_VER
29
#pragma warning(push)
30
#pragma warning(disable: 4251)
31
#endif
32
class
ARIA_BINDING_API
ViewModel
:
public
std::enable_shared_from_this<ViewModel> {
33
public
:
34
ViewModel
();
35
virtual
~ViewModel
();
36
40
[[nodiscard]]
Property<bool>
&
is_active
();
41
[[nodiscard]]
const
Property<bool>
&
is_active
()
const
;
42
43
virtual
void
on_activate
() {}
44
virtual
void
on_deactivate
() {}
45
46
void
activate
();
47
void
deactivate
();
48
49
void
add_child
(std::shared_ptr<ViewModel> child);
50
52
void
track
(
Subscription
sub);
53
54
void
add_destroy_hook
(std::function<
void
()> hook);
55
56
protected
:
59
[[nodiscard]]
SubscriptionBag
&
bag
();
60
61
private
:
62
struct
Impl;
63
std::unique_ptr<Impl> impl_;
64
};
65
#ifdef _MSC_VER
66
#pragma warning(pop)
67
#endif
68
80
using
IViewModel
=
ViewModel
;
81
82
}
// namespace aria::binding
aria::SubscriptionBag
Aggregate holder: owns multiple Subscriptions and drops them together.
Definition
subscription.hpp:116
aria::Subscription
RAII handle to a single subscription.
Definition
subscription.hpp:44
aria::binding::ViewModel
Base class for view models.
Definition
view_model.hpp:32
aria::binding::ViewModel::is_active
const Property< bool > & is_active() const
aria::binding::ViewModel::ViewModel
ViewModel()
aria::binding::ViewModel::bag
SubscriptionBag & bag()
Access the subscription bag.
aria::binding::ViewModel::track
void track(Subscription sub)
Add a subscription that will be released on destruction.
aria::binding::ViewModel::add_child
void add_child(std::shared_ptr< ViewModel > child)
aria::binding::ViewModel::deactivate
void deactivate()
aria::binding::ViewModel::activate
void activate()
aria::binding::ViewModel::on_activate
virtual void on_activate()
Definition
view_model.hpp:43
aria::binding::ViewModel::add_destroy_hook
void add_destroy_hook(std::function< void()> hook)
aria::binding::ViewModel::~ViewModel
virtual ~ViewModel()
aria::binding::ViewModel::on_deactivate
virtual void on_deactivate()
Definition
view_model.hpp:44
aria::binding::ViewModel::is_active
Property< bool > & is_active()
Activation state (Property<bool>).
aria::reactive::Property
Definition
property.hpp:103
export.hpp
ARIA_BINDING_API
#define ARIA_BINDING_API
Definition
export.hpp:39
aria::binding
Definition
binding_engine.hpp:25
aria::binding::IViewModel
ViewModel IViewModel
IViewModel is an alias for ViewModel, provided for users coming from WPF / Avalonia / MAUI where the ...
Definition
view_model.hpp:80
property.hpp
subscription.hpp
modules
binding
include
aria
binding
view_model.hpp
Generated by
1.18.0