aboutsummaryrefslogtreecommitdiff
path: root/src/base.cpp
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2018-09-29 17:35:09 +0800
committercrupest <crupest@outlook.com>2018-09-29 17:35:09 +0800
commit20dc75e2ce6a9c38dd1888fdbf793fd8a3bc9cd3 (patch)
tree40285fea213ab85fba79a9a13132c8497e36338e /src/base.cpp
parent398b8f3ba535bb43c4b8593e3027c14894a7a211 (diff)
downloadcru-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.cpp21
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);
+ }
}