Change SignaledTyped signal to pass the new value to the callback method

meow-7.2.2
Ansariel 2017-12-07 00:00:14 +01:00
parent fd834b39d7
commit 658d08aed5
6 changed files with 27 additions and 26 deletions

View File

@ -271,37 +271,37 @@ void LFSimFeatureHandler::updateCurrencySymbols()
}
// </COLOSI opensim multi-currency support>
boost::signals2::connection LFSimFeatureHandler::setSupportsExportCallback(const boost::signals2::signal<void()>::slot_type& slot)
boost::signals2::connection LFSimFeatureHandler::setSupportsExportCallback(const SignaledType<bool>::changed_signal_t& slot)
{
return mSupportsExport.connect(slot);
}
boost::signals2::connection LFSimFeatureHandler::setSearchURLCallback(const boost::signals2::signal<void()>::slot_type& slot)
boost::signals2::connection LFSimFeatureHandler::setSearchURLCallback(const SignaledType<std::string>::changed_signal_t& slot)
{
return mSearchURL.connect(slot);
}
boost::signals2::connection LFSimFeatureHandler::setSayRangeCallback(const boost::signals2::signal<void()>::slot_type& slot)
boost::signals2::connection LFSimFeatureHandler::setSayRangeCallback(const SignaledType<U32>::changed_signal_t& slot)
{
return mSayRange.connect(slot);
}
boost::signals2::connection LFSimFeatureHandler::setShoutRangeCallback(const boost::signals2::signal<void()>::slot_type& slot)
boost::signals2::connection LFSimFeatureHandler::setShoutRangeCallback(const SignaledType<U32>::changed_signal_t& slot)
{
return mShoutRange.connect(slot);
}
boost::signals2::connection LFSimFeatureHandler::setWhisperRangeCallback(const boost::signals2::signal<void()>::slot_type& slot)
boost::signals2::connection LFSimFeatureHandler::setWhisperRangeCallback(const SignaledType<U32>::changed_signal_t& slot)
{
return mWhisperRange.connect(slot);
}
boost::signals2::connection LFSimFeatureHandler::setAvatarPickerCallback(const boost::signals2::signal<void()>::slot_type& slot)
boost::signals2::connection LFSimFeatureHandler::setAvatarPickerCallback(const SignaledType<std::string>::changed_signal_t& slot)
{
return mAvatarPickerURL.connect(slot);
}
boost::signals2::connection LFSimFeatureHandler::setDestinationGuideCallback(const boost::signals2::signal<void()>::slot_type& slot)
boost::signals2::connection LFSimFeatureHandler::setDestinationGuideCallback(const SignaledType<std::string>::changed_signal_t& slot)
{
return mDestinationGuideURL.connect(slot);
}

View File

@ -21,21 +21,22 @@
#include "llsingleton.h"
#include "llpermissions.h" // ExportPolicy
template<typename Type, typename Signal = boost::signals2::signal<void()> >
template<typename Type, typename Signal = boost::signals2::signal<void(Type)> >
class SignaledType
{
public:
SignaledType() : mValue() {}
SignaledType(Type b) : mValue(b) {}
boost::signals2::connection connect(const typename Signal::slot_type& slot) { return mSignal.connect(slot); }
typedef typename Signal::slot_type changed_signal_t;
boost::signals2::connection connect(const typename changed_signal_t& slot) { return mSignal.connect(slot); }
SignaledType& operator =(Type val)
{
if (val != mValue)
{
mValue = val;
mSignal();
mSignal(mValue);
}
return *this;
}
@ -76,13 +77,13 @@ public:
// </COLOSI opensim multi-currency support>
// Connection setters
boost::signals2::connection setSupportsExportCallback(const boost::signals2::signal<void()>::slot_type& slot);
boost::signals2::connection setSearchURLCallback(const boost::signals2::signal<void()>::slot_type& slot);
boost::signals2::connection setSayRangeCallback(const boost::signals2::signal<void()>::slot_type& slot);
boost::signals2::connection setShoutRangeCallback(const boost::signals2::signal<void()>::slot_type& slot);
boost::signals2::connection setWhisperRangeCallback(const boost::signals2::signal<void()>::slot_type& slot);
boost::signals2::connection setAvatarPickerCallback(const boost::signals2::signal<void()>::slot_type& slot);
boost::signals2::connection setDestinationGuideCallback(const boost::signals2::signal<void()>::slot_type& slot);
boost::signals2::connection setSupportsExportCallback(const SignaledType<bool>::changed_signal_t& slot);
boost::signals2::connection setSearchURLCallback(const SignaledType<std::string>::changed_signal_t& slot);
boost::signals2::connection setSayRangeCallback(const SignaledType<U32>::changed_signal_t& slot);
boost::signals2::connection setShoutRangeCallback(const SignaledType<U32>::changed_signal_t& slot);
boost::signals2::connection setWhisperRangeCallback(const SignaledType<U32>::changed_signal_t& slot);
boost::signals2::connection setAvatarPickerCallback(const SignaledType<std::string>::changed_signal_t& slot);
boost::signals2::connection setDestinationGuideCallback(const SignaledType<std::string>::changed_signal_t& slot);
// Accessors
bool simSupportsExport() const { return mSupportsExport; }

View File

@ -80,13 +80,13 @@ void LLFloaterAvatar::onOpen(const LLSD& key)
// region the avatar logs into as well.
if (!mAvatarPickerUrlChangedSignal.connected())
{
mAvatarPickerUrlChangedSignal = LFSimFeatureHandler::instance().setAvatarPickerCallback(boost::bind(&LLFloaterAvatar::handleUrlChanged, this));
mAvatarPickerUrlChangedSignal = LFSimFeatureHandler::instance().setAvatarPickerCallback(boost::bind(&LLFloaterAvatar::handleUrlChanged, this, _1));
}
}
void LLFloaterAvatar::handleUrlChanged()
void LLFloaterAvatar::handleUrlChanged(const std::string& url)
{
getChild<LLMediaCtrl>("avatar_picker_contents")->navigateTo(LLWeb::expandURLSubstitutions(LFSimFeatureHandler::instance().avatarPickerURL(), LLSD()), HTTP_CONTENT_TEXT_HTML);
getChild<LLMediaCtrl>("avatar_picker_contents")->navigateTo(LLWeb::expandURLSubstitutions(url, LLSD()), HTTP_CONTENT_TEXT_HTML);
}
// </FS:Ansariel>

View File

@ -41,7 +41,7 @@ private:
// <FS:Ansariel> Avatar chooser does not change between OpenSim grids
/*virtual*/ void onOpen(const LLSD& key);
void handleUrlChanged();
void handleUrlChanged(const std::string& url);
boost::signals2::connection mAvatarPickerUrlChangedSignal;
// </FS:Ansariel>

View File

@ -72,14 +72,14 @@ void LLFloaterDestinations::onOpen(const LLSD& key)
// region the avatar logs into as well.
if (!mDestinationGuideUrlChangedSignal.connected())
{
mDestinationGuideUrlChangedSignal = LFSimFeatureHandler::instance().setDestinationGuideCallback(boost::bind(&LLFloaterDestinations::handleUrlChanged, this));
mDestinationGuideUrlChangedSignal = LFSimFeatureHandler::instance().setDestinationGuideCallback(boost::bind(&LLFloaterDestinations::handleUrlChanged, this, _1));
}
handleUrlChanged();
handleUrlChanged(LFSimFeatureHandler::instance().destinationGuideURL());
}
void LLFloaterDestinations::handleUrlChanged()
void LLFloaterDestinations::handleUrlChanged(const std::string& url)
{
getChild<LLMediaCtrl>("destination_guide_contents")->navigateTo(LLWeb::expandURLSubstitutions(LFSimFeatureHandler::instance().destinationGuideURL(), LLSD()), HTTP_CONTENT_TEXT_HTML);
getChild<LLMediaCtrl>("destination_guide_contents")->navigateTo(LLWeb::expandURLSubstitutions(url, LLSD()), HTTP_CONTENT_TEXT_HTML);
}
// </FS:Ansariel>

View File

@ -41,7 +41,7 @@ private:
// <FS:Ansariel> FIRE-16833: Destination guide does not change between OpenSim grids
/*virtual*/ void onOpen(const LLSD& key);
void handleUrlChanged();
void handleUrlChanged(const std::string& url);
boost::signals2::connection mDestinationGuideUrlChangedSignal;
// </FS:Ansariel>