From 20dc75e2ce6a9c38dd1888fdbf793fd8a3bc9cd3 Mon Sep 17 00:00:00 2001 From: crupest Date: Sat, 29 Sep 2018 17:35:09 +0800 Subject: Add PropertyChangedNotifyObject and BorderProperty. --- src/base.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'src/base.cpp') 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 listener) + { + listeners_.push_back(std::move(listener)); + } + + void PropertyChangedNotifyObject::RemovePropertyChangedListener(const FunctionPtr& 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); + } } -- cgit v1.2.3