diff options
author | crupest <crupest@outlook.com> | 2018-09-29 17:35:09 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2018-09-29 17:35:09 +0800 |
commit | 20dc75e2ce6a9c38dd1888fdbf793fd8a3bc9cd3 (patch) | |
tree | 40285fea213ab85fba79a9a13132c8497e36338e /src/base.cpp | |
parent | 398b8f3ba535bb43c4b8593e3027c14894a7a211 (diff) | |
download | cru-20dc75e2ce6a9c38dd1888fdbf793fd8a3bc9cd3.tar.gz cru-20dc75e2ce6a9c38dd1888fdbf793fd8a3bc9cd3.tar.bz2 cru-20dc75e2ce6a9c38dd1888fdbf793fd8a3bc9cd3.zip |
Add PropertyChangedNotifyObject and BorderProperty.
Diffstat (limited to 'src/base.cpp')
-rw-r--r-- | src/base.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/base.cpp b/src/base.cpp index f5868170..57a4848e 100644 --- a/src/base.cpp +++ b/src/base.cpp @@ -17,4 +17,25 @@ namespace cru throw Win32Error(::GetLastError(), "Failed to convert wide string to UTF-8."); return result; } + + void PropertyChangedNotifyObject::AddPropertyChangedListener(FunctionPtr<void(String)> listener) + { + listeners_.push_back(std::move(listener)); + } + + void PropertyChangedNotifyObject::RemovePropertyChangedListener(const FunctionPtr<void(String)>& listener) + { + for (auto i = listeners_.cbegin(); i != listeners_.cend(); ++i) + if (*i == listener) + { + listeners_.erase(i); + break; + } + } + + void PropertyChangedNotifyObject::RaisePropertyChangedEvent(String property_name) + { + for (const auto& listener : listeners_) + (*listener)(property_name); + } } |