1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
#include "NameKeyObserver.h"
#include "inamespace.h"
#include "ientity.h"
namespace entity {
NameKeyObserver::NameKeyObserver(EntityKeyValue& keyValue, INamespace* ns) :
_keyValue(keyValue),
_namespace(ns)
{
assert(_namespace != NULL);
_oldValue = keyValue.get();
_keyValue.attach(*this);
}
NameKeyObserver::~NameKeyObserver()
{
_keyValue.detach(*this);
}
void NameKeyObserver::onKeyValueChanged(const std::string& newValue)
{
assert(_namespace != NULL);
if (!newValue.empty()) {
// Notify the namespace, so that it can broadcast the event
// only do this for non-empty names (empty names mean key deletion, which is handled elsewhere)
_namespace->nameChanged(_oldValue, newValue);
}
// Remember the new value
_oldValue = newValue;
}
} // namespace entity
|