Eliminated most instances of the legacy setCallbackUserData (and modernized up a bunch of callbacks)

Also cleaned up slfloatermediafilter to act as a proper singleton.
Removes childSetUserData entirely.
This commit is contained in:
Lirusaito
2013-06-16 20:00:00 -04:00
parent 4fe2396203
commit 7303bfcb78
14 changed files with 193 additions and 366 deletions

View File

@@ -759,8 +759,7 @@ void LLPanel::childSetCommitCallback(const std::string& id, void (*cb)(LLUICtrl*
LLUICtrl* child = getChild<LLUICtrl>(id, true);
if (child)
{
child->setCommitCallback(cb);
child->setCallbackUserData(userdata);
child->setCommitCallback(cb, userdata);
}
}
@@ -773,15 +772,6 @@ void LLPanel::childSetValidate(const std::string& id, BOOL (*cb)(LLUICtrl*, void
}
}
void LLPanel::childSetUserData(const std::string& id, void* userdata)
{
LLUICtrl* child = getChild<LLUICtrl>(id, true);
if (child)
{
child->setCallbackUserData(userdata);
}
}
void LLPanel::childSetColor(const std::string& id, const LLColor4& color)
{
LLUICtrl* child = getChild<LLUICtrl>(id, true);

View File

@@ -172,7 +172,6 @@ public:
void childSetCommitCallback(const std::string& id, void (*cb)(LLUICtrl*, void*), void* userdata = NULL );
void childSetValidate(const std::string& id, BOOL (*cb)(LLUICtrl*, void*) );
void childSetUserData(const std::string& id, void* userdata);
void childSetColor(const std::string& id, const LLColor4& color);
void childSetAlpha(const std::string& id, F32 alpha);

View File

@@ -3869,16 +3869,14 @@ LLScrollColumnHeader::LLScrollColumnHeader(const std::string& label, const LLRec
mHasResizableElement(FALSE)
{
mListPosition = LLComboBox::ABOVE;
setCommitCallback(onSelectSort);
setCallbackUserData(this);
setCommitCallback(boost::bind(&LLScrollColumnHeader::onSelectSort, this));
mButton->setTabStop(FALSE);
// require at least two frames between mouse down and mouse up event to capture intentional "hold" not just bad framerate
mButton->setHeldDownDelay(LLUI::sConfigGroup->getF32("ColumnHeaderDropDownDelay"), 2);
mButton->setHeldDownCallback(boost::bind(&LLScrollColumnHeader::onHeldDown, this));
mButton->setHeldDownCallback(boost::bind(&LLScrollColumnHeader::showList, this));
mButton->setClickedCallback(boost::bind(&LLScrollColumnHeader::onClick, this));
mButton->setMouseDownCallback(boost::bind(&LLScrollColumnHeader::onMouseDown, this));
mButton->setCallbackUserData(this);
mButton->setToolTip(label);
mAscendingText = std::string("[LOW]...[HIGH](Ascending)"); // *TODO: Translate
@@ -4037,7 +4035,7 @@ BOOL LLScrollColumnHeader::handleDoubleClick(S32 x, S32 y, MASK mask)
}
else
{
onClick(this);
onClick();
}
return TRUE;
}
@@ -4065,42 +4063,29 @@ void LLScrollColumnHeader::setImageOverlay(const std::string &image_name, LLFont
}
}
//static
void LLScrollColumnHeader::onClick(void* user_data)
void LLScrollColumnHeader::onClick()
{
LLScrollColumnHeader* headerp = (LLScrollColumnHeader*)user_data;
if (!headerp) return;
if (!mColumn) return;
LLScrollListColumn* column = headerp->mColumn;
if (!column) return;
if (headerp->mList->getVisible())
if (mList->getVisible())
{
headerp->hideList();
hideList();
}
LLScrollListCtrl::onClickColumn(column);
LLScrollListCtrl::onClickColumn(mColumn);
// propagate new sort order to sort order list
headerp->mList->selectNthItem(column->mParentCtrl->getSortAscending() ? 0 : 1);
mList->selectNthItem(mColumn->mParentCtrl->getSortAscending() ? 0 : 1);
headerp->mList->setFocus(TRUE);
mList->setFocus(TRUE);
}
//static
void LLScrollColumnHeader::onMouseDown(void* user_data)
void LLScrollColumnHeader::onMouseDown()
{
// for now, do nothing but block the normal showList() behavior
return;
}
//static
void LLScrollColumnHeader::onHeldDown(void* user_data)
{
LLScrollColumnHeader* headerp = (LLScrollColumnHeader*)user_data;
headerp->showList();
}
void LLScrollColumnHeader::showList()
{
if (mShowSortOptions)
@@ -4183,30 +4168,25 @@ void LLScrollColumnHeader::showList()
}
}
//static
void LLScrollColumnHeader::onSelectSort(LLUICtrl* ctrl, void* user_data)
void LLScrollColumnHeader::onSelectSort()
{
LLScrollColumnHeader* headerp = (LLScrollColumnHeader*)user_data;
if (!headerp) return;
LLScrollListColumn* column = headerp->mColumn;
if (!column) return;
LLScrollListCtrl *parent = column->mParentCtrl;
if (!mColumn) return;
LLScrollListCtrl* parent = mColumn->mParentCtrl;
if (!parent) return;
if (headerp->getCurrentIndex() == 0)
if (getCurrentIndex() == 0)
{
// ascending
parent->sortByColumn(column->mSortingColumn, TRUE);
parent->sortByColumn(mColumn->mSortingColumn, TRUE);
}
else
{
// descending
parent->sortByColumn(column->mSortingColumn, FALSE);
parent->sortByColumn(mColumn->mSortingColumn, FALSE);
}
// restore original column header
headerp->setLabel(headerp->mOrigLabel);
setLabel(mOrigLabel);
}
LLView* LLScrollColumnHeader::findSnapEdge(S32& new_edge_val, const LLCoordGL& mouse_dir, ESnapEdge snap_edge, ESnapType snap_type, S32 threshold, S32 padding)

View File

@@ -241,10 +241,9 @@ public:
void enableResizeBar(BOOL enable);
std::string getLabel() { return mOrigLabel; }
static void onSelectSort(LLUICtrl* ctrl, void* user_data);
static void onClick(void* user_data);
static void onMouseDown(void* user_data);
static void onHeldDown(void* user_data);
void onSelectSort();
void onClick();
void onMouseDown();
private:
LLScrollListColumn* mColumn;

View File

@@ -263,8 +263,7 @@ BOOL LLFloaterNotification::postBuild()
return TRUE;
}
responses_combo->setCommitCallback(onCommitResponse);
responses_combo->setCallbackUserData(this);
responses_combo->setCommitCallback(boost::bind(&LLFloaterNotification::respond, this));
LLSD form_sd = form->asLLSD();

View File

@@ -72,7 +72,6 @@ public:
void onClose(bool app_quitting) { setVisible(FALSE); }
private:
static void onCommitResponse(LLUICtrl* ctrl, void* data) { ((LLFloaterNotification*)data)->respond(); }
LLNotification* mNote;
};
#endif

View File

@@ -244,40 +244,37 @@ void LLPanelClassified::reset()
BOOL LLPanelClassified::postBuild()
{
mSnapshotCtrl = getChild<LLTextureCtrl>("snapshot_ctrl");
mSnapshotCtrl->setCommitCallback(onCommitAny);
mSnapshotCtrl->setCallbackUserData(this);
mSnapshotCtrl->setCommitCallback(boost::bind(&LLPanelClassified::checkDirty, this));
mSnapshotSize = mSnapshotCtrl->getRect();
mNameEditor = getChild<LLLineEditor>("given_name_editor");
mNameEditor->setMaxTextLength(DB_PARCEL_NAME_LEN);
mNameEditor->setCommitOnFocusLost(TRUE);
mNameEditor->setFocusReceivedCallback(boost::bind(focusReceived, _1, this));
mNameEditor->setCommitCallback(onCommitAny);
mNameEditor->setCallbackUserData(this);
mNameEditor->setFocusReceivedCallback(boost::bind(&LLPanelClassified::checkDirty, this));
mNameEditor->setCommitCallback(boost::bind(&LLPanelClassified::checkDirty, this));
mNameEditor->setPrevalidate( LLLineEditor::prevalidateASCII );
mDescEditor = getChild<LLTextEditor>("desc_editor");
mDescEditor->setCommitOnFocusLost(TRUE);
mDescEditor->setFocusReceivedCallback(boost::bind(focusReceived, _1, this));
mDescEditor->setCommitCallback(onCommitAny);
mDescEditor->setCallbackUserData(this);
mDescEditor->setFocusReceivedCallback(boost::bind(&LLPanelClassified::checkDirty, this));
mDescEditor->setCommitCallback(boost::bind(&LLPanelClassified::checkDirty, this));
mDescEditor->setTabsToNextField(TRUE);
mLocationEditor = getChild<LLLineEditor>("location_editor");
mSetBtn = getChild<LLButton>( "set_location_btn");
mSetBtn->setClickedCallback(boost::bind(&LLPanelClassified::onClickSet, this));
mSetBtn->setCommitCallback(boost::bind(&LLPanelClassified::onClickSet, this));
mTeleportBtn = getChild<LLButton>( "classified_teleport_btn");
mTeleportBtn->setClickedCallback(boost::bind(&LLPanelClassified::onClickTeleport, this));
mTeleportBtn->setCommitCallback(boost::bind(&LLPanelClassified::onClickTeleport, this));
mMapBtn = getChild<LLButton>( "classified_map_btn");
mMapBtn->setClickedCallback(boost::bind(&LLPanelClassified::onClickMap, this));
mMapBtn->setCommitCallback(boost::bind(&LLPanelClassified::onClickMap, this));
if(mInFinder)
{
mProfileBtn = getChild<LLButton>( "classified_profile_btn");
mProfileBtn->setClickedCallback(boost::bind(&LLPanelClassified::onClickProfile, this));
mProfileBtn->setCommitCallback(boost::bind(&LLPanelClassified::onClickProfile, this));
}
mCategoryCombo = getChild<LLComboBox>( "classified_category_combo");
@@ -289,13 +286,11 @@ BOOL LLPanelClassified::postBuild()
mCategoryCombo->add(iter->second, (void *)((intptr_t)iter->first), ADD_BOTTOM);
}
mCategoryCombo->setCurrentByIndex(0);
mCategoryCombo->setCommitCallback(onCommitAny);
mCategoryCombo->setCallbackUserData(this);
mCategoryCombo->setCommitCallback(boost::bind(&LLPanelClassified::checkDirty, this));
mMatureCombo = getChild<LLComboBox>( "classified_mature_check");
mMatureCombo->setCurrentByIndex(0);
mMatureCombo->setCommitCallback(onCommitAny);
mMatureCombo->setCallbackUserData(this);
mMatureCombo->setCommitCallback(boost::bind(&LLPanelClassified::checkDirty, this));
if (gAgent.wantsPGOnly())
{
// Teens don't get to set mature flag. JC
@@ -306,13 +301,11 @@ BOOL LLPanelClassified::postBuild()
if (!mInFinder)
{
mAutoRenewCheck = getChild<LLCheckBoxCtrl>( "auto_renew_check");
mAutoRenewCheck->setCommitCallback(onCommitAny);
mAutoRenewCheck->setCallbackUserData(this);
mAutoRenewCheck->setCommitCallback(boost::bind(&LLPanelClassified::checkDirty, this));
}
mUpdateBtn = getChild<LLButton>("classified_update_btn");
mUpdateBtn->setClickedCallback(boost::bind(&LLPanelClassified::onClickUpdate, this));
mUpdateBtn->setCallbackUserData(this);
mUpdateBtn->setCommitCallback(boost::bind(&LLPanelClassified::onClickUpdate, this));
if (!mInFinder)
{
@@ -392,9 +385,6 @@ void LLPanelClassified::processProperties(void* data, EAvatarProcessorType type)
mUpdateBtn->setLabel(getString("update_txt"));
resetDirty();
// I don't know if a second call is deliberate or a bad merge, so I'm leaving it here.
resetDirty();
}
}
}
@@ -496,7 +486,7 @@ void LLPanelClassified::initNewClassified()
mUpdateBtn->setLabel(getString("publish_txt"));
// simulate clicking the "location" button
LLPanelClassified::onClickSet(this);
onClickSet();
}
@@ -713,33 +703,28 @@ void LLPanelClassified::refresh()
}
}
// static
void LLPanelClassified::onClickUpdate(void* data)
void LLPanelClassified::onClickUpdate()
{
LLPanelClassified* self = (LLPanelClassified*)data;
if(self == NULL) return;
// Disallow leading spaces, punctuation, etc. that screw up
// sort order.
if ( ! self->titleIsValid() )
if (!titleIsValid())
{
return;
};
}
// If user has not set mature, do not allow publish
if(self->mMatureCombo->getCurrentIndex() == DECLINE_TO_STATE)
if (mMatureCombo->getCurrentIndex() == DECLINE_TO_STATE)
{
// Tell user about it
LLNotificationsUtil::add("SetClassifiedMature",
LLSD(),
LLSD(),
boost::bind(&LLPanelClassified::confirmMature, self, _1, _2));
boost::bind(&LLPanelClassified::confirmMature, this, _1, _2));
return;
}
// Mature content flag is set, proceed
self->gotMature();
gotMature();
}
// Callback from a dialog indicating response to mature notification
@@ -781,38 +766,30 @@ void LLPanelClassified::gotMature()
else
{
// Ask the user how much they want to pay
LLFloaterPriceForListing::show( callbackGotPriceForListing, this );
new LLFloaterPriceForListing(boost::bind(&LLPanelClassified::callbackGotPriceForListing, this, _1));
}
}
// static
void LLPanelClassified::callbackGotPriceForListing(S32 option, std::string text, void* data)
void LLPanelClassified::callbackGotPriceForListing(const std::string& text)
{
LLPanelClassified* self = (LLPanelClassified*)data;
// Only do something if user hits publish
if (option != 0) return;
S32 price_for_listing = strtol(text.c_str(), NULL, 10);
if (price_for_listing < MINIMUM_PRICE_FOR_LISTING)
{
LLSD args;
std::string price_text = llformat("%d", MINIMUM_PRICE_FOR_LISTING);
args["MIN_PRICE"] = price_text;
args["MIN_PRICE"] = llformat("%d", MINIMUM_PRICE_FOR_LISTING);
LLNotificationsUtil::add("MinClassifiedPrice", args);
return;
}
// price is acceptable, put it in the dialog for later read by
// update send
self->mPriceForListing = price_for_listing;
mPriceForListing = price_for_listing;
LLSD args;
args["AMOUNT"] = llformat("%d", price_for_listing);
args["CURRENCY"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol();
LLNotificationsUtil::add("PublishClassified", args, LLSD(),
boost::bind(&LLPanelClassified::confirmPublish, self, _1, _2));
boost::bind(&LLPanelClassified::confirmPublish, this, _1, _2));
}
void LLPanelClassified::resetDirty()
@@ -862,51 +839,39 @@ bool LLPanelClassified::confirmPublish(const LLSD& notification, const LLSD& res
return false;
}
// static
void LLPanelClassified::onClickTeleport(void* data)
void LLPanelClassified::onClickTeleport()
{
LLPanelClassified* self = (LLPanelClassified*)data;
if (!self->mPosGlobal.isExactlyZero())
if (!mPosGlobal.isExactlyZero())
{
gAgent.teleportViaLocation(self->mPosGlobal);
gFloaterWorldMap->trackLocation(self->mPosGlobal);
gAgent.teleportViaLocation(mPosGlobal);
gFloaterWorldMap->trackLocation(mPosGlobal);
self->sendClassifiedClickMessage("teleport");
sendClassifiedClickMessage("teleport");
}
}
// static
void LLPanelClassified::onClickMap(void* data)
void LLPanelClassified::onClickMap()
{
LLPanelClassified* self = (LLPanelClassified*)data;
gFloaterWorldMap->trackLocation(self->mPosGlobal);
gFloaterWorldMap->trackLocation(mPosGlobal);
LLFloaterWorldMap::show(true);
self->sendClassifiedClickMessage("map");
sendClassifiedClickMessage("map");
}
// static
void LLPanelClassified::onClickProfile(void* data)
void LLPanelClassified::onClickProfile()
{
LLPanelClassified* self = (LLPanelClassified*)data;
LLAvatarActions::showProfile(self->mCreatorID);
self->sendClassifiedClickMessage("profile");
LLAvatarActions::showProfile(mCreatorID);
sendClassifiedClickMessage("profile");
}
// static
/*
void LLPanelClassified::onClickLandmark(void* data)
void LLPanelClassified::onClickLandmark()
{
LLPanelClassified* self = (LLPanelClassified*)data;
create_landmark(self->mNameEditor->getText(), "", self->mPosGlobal);
create_landmark(mNameEditor->getText(), "", mPosGlobal);
}
*/
// static
void LLPanelClassified::onClickSet(void* data)
void LLPanelClassified::onClickSet()
{
// [RLVa:KB] - Checked: 2009-07-04 (RLVa-1.0.0a)
if (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWLOC))
@@ -914,10 +879,9 @@ void LLPanelClassified::onClickSet(void* data)
return;
}
// [/RLVa:KB]
LLPanelClassified* self = (LLPanelClassified*)data;
// Save location for later.
self->mPosGlobal = gAgent.getPositionGlobal();
mPosGlobal = gAgent.getPositionGlobal();
std::string location_text;
std::string regionName = "(will update after publish)";
@@ -929,22 +893,22 @@ void LLPanelClassified::onClickSet(void* data)
location_text.assign(regionName);
location_text.append(", ");
S32 region_x = llround((F32)self->mPosGlobal.mdV[VX]) % REGION_WIDTH_UNITS;
S32 region_y = llround((F32)self->mPosGlobal.mdV[VY]) % REGION_WIDTH_UNITS;
S32 region_z = llround((F32)self->mPosGlobal.mdV[VZ]);
S32 region_x = llround((F32)mPosGlobal.mdV[VX]) % REGION_WIDTH_UNITS;
S32 region_y = llround((F32)mPosGlobal.mdV[VY]) % REGION_WIDTH_UNITS;
S32 region_z = llround((F32)mPosGlobal.mdV[VZ]);
location_text.append(self->mSimName);
location_text.append(mSimName);
location_text.append(llformat(" (%d, %d, %d)", region_x, region_y, region_z));
self->mLocationEditor->setText(location_text);
self->mLocationChanged = true;
mLocationEditor->setText(location_text);
mLocationChanged = true;
self->setDefaultAccessCombo();
setDefaultAccessCombo();
// Set this to null so it updates on the next save.
self->mParcelID.setNull();
mParcelID.setNull();
onCommitAny(NULL, data);
checkDirty();
}
@@ -963,23 +927,6 @@ BOOL LLPanelClassified::checkDirty()
return mDirty;
}
// static
void LLPanelClassified::onCommitAny(LLUICtrl* ctrl, void* data)
{
LLPanelClassified* self = (LLPanelClassified*)data;
if (self)
{
self->checkDirty();
}
}
// static
void LLPanelClassified::focusReceived(LLFocusableElement* ctrl, void* data)
{
// allow the data to be saved
onCommitAny((LLUICtrl*)ctrl, data);
}
void LLPanelClassified::sendClassifiedClickMessage(const std::string& type)
{
@@ -1000,15 +947,22 @@ void LLPanelClassified::sendClassifiedClickMessage(const std::string& type)
////////////////////////////////////////////////////////////////////////////////////////////
LLFloaterPriceForListing::LLFloaterPriceForListing()
LLFloaterPriceForListing::LLFloaterPriceForListing(const signal_t::slot_type& cb)
: LLFloater(std::string("PriceForListing")),
mCallback(NULL),
mUserData(NULL)
{ }
mSignal(new signal_t)
{
// Builds and adds to gFloaterView
LLUICtrlFactory::getInstance()->buildFloater(this, "floater_price_for_listing.xml");
center();
mSignal->connect(cb);
}
//virtual
LLFloaterPriceForListing::~LLFloaterPriceForListing()
{ }
{
delete mSignal;
}
//virtual
BOOL LLFloaterPriceForListing::postBuild()
@@ -1023,50 +977,18 @@ BOOL LLFloaterPriceForListing::postBuild()
edit->setFocus(TRUE);
}
childSetAction("set_price_btn", onClickSetPrice, this);
getChild<LLUICtrl>("set_price_btn")->setCommitCallback(boost::bind(&LLFloaterPriceForListing::buttonCore, this));
childSetAction("cancel_btn", onClickCancel, this);
getChild<LLUICtrl>("cancel_btn")->setCommitCallback(boost::bind(&LLFloater::close, this, false));
setDefaultBtn("set_price_btn");
return TRUE;
}
//static
void LLFloaterPriceForListing::show( void (*callback)(S32, std::string, void*), void* userdata)
void LLFloaterPriceForListing::buttonCore()
{
LLFloaterPriceForListing *self = new LLFloaterPriceForListing();
// Builds and adds to gFloaterView
LLUICtrlFactory::getInstance()->buildFloater(self, "floater_price_for_listing.xml");
self->center();
self->mCallback = callback;
self->mUserData = userdata;
}
//static
void LLFloaterPriceForListing::onClickSetPrice(void* data)
{
buttonCore(0, data);
}
//static
void LLFloaterPriceForListing::onClickCancel(void* data)
{
buttonCore(1, data);
}
//static
void LLFloaterPriceForListing::buttonCore(S32 button, void* data)
{
LLFloaterPriceForListing* self = (LLFloaterPriceForListing*)data;
if (self->mCallback)
{
std::string text = self->childGetText("price_edit");
self->mCallback(button, text, self->mUserData);
self->close();
}
(*mSignal)(childGetText("price_edit"));
close();
}
void LLPanelClassified::setDefaultAccessCombo()

View File

@@ -38,23 +38,19 @@
#define LL_LLPANELCLASSIFIED_H
#include "llavatarpropertiesprocessor.h"
#include "llpanel.h"
#include "llclassifiedinfo.h"
#include "v3dmath.h"
#include "lluuid.h"
#include "llfloater.h"
//#include "llrect.h"
class LLButton;
class LLCheckBoxCtrl;
class LLComboBox;
class LLIconCtrl;
class LLLineEditor;
class LLTextBox;
class LLTextEditor;
class LLTextureCtrl;
class LLUICtrl;
class LLMessageSystem;
class LLPanelClassified : public LLPanel, public LLAvatarPropertiesObserver
{
@@ -104,7 +100,7 @@ public:
// Confirmation dialogs flow in this order
bool confirmMature(const LLSD& notification, const LLSD& response);
void gotMature();
static void callbackGotPriceForListing(S32 option, std::string text, void* data);
void callbackGotPriceForListing(const std::string& text);
bool confirmPublish(const LLSD& notification, const LLSD& response);
void sendClassifiedClickMessage(const std::string& type);
@@ -112,14 +108,11 @@ public:
protected:
bool saveCallback(const LLSD& notification, const LLSD& response);
static void onClickUpdate(void* data);
static void onClickTeleport(void* data);
static void onClickMap(void* data);
static void onClickProfile(void* data);
static void onClickSet(void* data);
static void focusReceived(LLFocusableElement* ctrl, void* data);
static void onCommitAny(LLUICtrl* ctrl, void* data);
void onClickUpdate();
void onClickTeleport();
void onClickMap();
void onClickProfile();
void onClickSet();
void setDefaultAccessCombo(); // Default AO and PG regions to proper classified access
@@ -183,20 +176,15 @@ class LLFloaterPriceForListing
: public LLFloater
{
public:
LLFloaterPriceForListing();
typedef boost::signals2::signal<void(const std::string& value)> signal_t;
LLFloaterPriceForListing(const signal_t::slot_type& cb);
virtual ~LLFloaterPriceForListing();
virtual BOOL postBuild();
static void show( void (*callback)(S32 option, std::string value, void* userdata), void* userdata );
private:
static void onClickSetPrice(void*);
static void onClickCancel(void*);
static void buttonCore(S32 button, void* data);
void buttonCore();
private:
void (*mCallback)(S32 option, std::string, void*);
void* mUserData;
signal_t* mSignal;
};

View File

@@ -222,8 +222,7 @@ BOOL LLPanelGroupNotices::postBuild()
mNoticesList = getChild<LLScrollListCtrl>("notice_list",recurse);
mNoticesList->setCommitOnSelectionChange(TRUE);
mNoticesList->setCommitCallback(onSelectNotice);
mNoticesList->setCallbackUserData(this);
mNoticesList->setCommitCallback(boost::bind(&LLPanelGroupNotices::onSelectNotice, this));
mBtnNewMessage = getChild<LLButton>("create_new_notice",recurse);
mBtnNewMessage->setClickedCallback(boost::bind(&LLPanelGroupNotices::onClickNewMessage,this));
@@ -494,14 +493,11 @@ void LLPanelGroupNotices::processNotices(LLMessageSystem* msg)
mNoticesList->updateSort();
}
void LLPanelGroupNotices::onSelectNotice(LLUICtrl* ctrl, void* data)
void LLPanelGroupNotices::onSelectNotice()
{
LLPanelGroupNotices* self = (LLPanelGroupNotices*)data;
if(!self) return;
LLScrollListItem* item = self->mNoticesList->getFirstSelected();
LLScrollListItem* item = mNoticesList->getFirstSelected();
if (!item) return;
LLMessageSystem* msg = gMessageSystem;
msg->newMessage("GroupNoticeRequest");
msg->nextBlock("AgentData");

View File

@@ -78,7 +78,7 @@ private:
static void onClickRefreshNotices(void* data);
void processNotices(LLMessageSystem* msg);
static void onSelectNotice(LLUICtrl* ctrl, void* data);
void onSelectNotice();
enum ENoticeView
{

View File

@@ -185,7 +185,7 @@ public:
static void onBtnRemove( void* userdata );
static void onBtnBrowser( void* userdata );
static void onLocalScrollCommit ( LLUICtrl* ctrl, void *userdata );
void onLocalScrollCommit();
// tag: vaa emerald local_asset_browser [end]
protected:
@@ -483,8 +483,7 @@ BOOL LLFloaterTexturePicker::postBuild()
childSetAction("Browser", LLFloaterTexturePicker::onBtnBrowser, this);
mLocalScrollCtrl = getChild<LLScrollListCtrl>("local_name_list");
mLocalScrollCtrl->setCallbackUserData(this);
mLocalScrollCtrl->setCommitCallback(onLocalScrollCommit);
mLocalScrollCtrl->setCommitCallback(boost::bind(&LLFloaterTexturePicker::onLocalScrollCommit, this));
LocalAssetBrowser::UpdateTextureCtrlList( mLocalScrollCtrl );
// tag: vaa emerald local_asset_browser [end]
@@ -906,15 +905,14 @@ void LLFloaterTexturePicker::onBtnBrowser(void *userdata)
FloaterLocalAssetBrowser::show(NULL);
}
// static, reacts to user clicking a valid field in the local scroll list.
void LLFloaterTexturePicker::onLocalScrollCommit(LLUICtrl *ctrl, void *userdata)
// reacts to user clicking a valid field in the local scroll list.
void LLFloaterTexturePicker::onLocalScrollCommit()
{
LLFloaterTexturePicker* self = (LLFloaterTexturePicker*) userdata;
LLUUID id = (LLUUID)self->mLocalScrollCtrl->getSelectedItemLabel( LOCALLIST_COL_ID );
LLUUID id(mLocalScrollCtrl->getSelectedItemLabel(LOCALLIST_COL_ID));
self->mOwner->setImageAssetID( id );
if ( self->childGetValue("apply_immediate_check").asBoolean() )
{ self->mOwner->onFloaterCommit(LLTextureCtrl::TEXTURE_CHANGE, id); } // calls an overridden function.
mOwner->setImageAssetID(id);
if (childGetValue("apply_immediate_check").asBoolean())
mOwner->onFloaterCommit(LLTextureCtrl::TEXTURE_CHANGE, id); // calls an overridden function.
}
// tag: vaa emerald local_asset_browser [end]

View File

@@ -766,9 +766,9 @@ void LLViewerParcelMedia::filterMedia(LLParcel* parcel, U32 type)
sDeniedMedia.erase(ip);
dirty = true;
}
if (dirty)
if (dirty && SLFloaterMediaFilter::findInstance())
{
SLFloaterMediaFilter::setDirty();
SLFloaterMediaFilter::getInstance()->setDirty();
}
}
@@ -944,7 +944,7 @@ void callback_media_alert(const LLSD &notification, const LLSD &response, LLParc
}
LLViewerParcelMedia::sMediaQueries.erase(domain);
SLFloaterMediaFilter::setDirty();
if (SLFloaterMediaFilter::findInstance()) SLFloaterMediaFilter::getInstance()->setDirty();
}
void LLViewerParcelMedia::saveDomainFilterList()
@@ -975,7 +975,7 @@ bool LLViewerParcelMedia::loadDomainFilterList()
llifstream medialistFile(medialist_filename);
LLSDSerialize::fromXML(sMediaFilterList, medialistFile);
medialistFile.close();
SLFloaterMediaFilter::setDirty();
if (SLFloaterMediaFilter::findInstance()) SLFloaterMediaFilter::getInstance()->setDirty();
return true;
}
else
@@ -991,7 +991,7 @@ void LLViewerParcelMedia::clearDomainFilterList()
sDeniedMedia.clear();
saveDomainFilterList();
LLNotificationsUtil::add("MediaFiltersCleared");
SLFloaterMediaFilter::setDirty();
if (SLFloaterMediaFilter::findInstance()) SLFloaterMediaFilter::getInstance()->setDirty();
}
std::string LLViewerParcelMedia::extractDomain(std::string url)

View File

@@ -33,18 +33,12 @@
#include "llviewerprecompiledheaders.h"
#include "lllineeditor.h"
#include "slfloatermediafilter.h"
#include "llscrolllistctrl.h"
#include "lluictrlfactory.h"
#include "slfloatermediafilter.h"
#include "llviewercontrol.h"
#include "llviewerparcelmedia.h"
SLFloaterMediaFilter* SLFloaterMediaFilter::sInstance = NULL;
bool SLFloaterMediaFilter::sIsWhitelist = false;
bool SLFloaterMediaFilter::sShowIPs = false;
SLFloaterMediaFilter::SLFloaterMediaFilter(const LLSD& key) : LLFloater(std::string("media filter")), mIsDirty(false)
{
LLUICtrlFactory::getInstance()->buildFloater(this, "floater_media_filter.xml");
@@ -52,7 +46,6 @@ SLFloaterMediaFilter::SLFloaterMediaFilter(const LLSD& key) : LLFloater(std::str
SLFloaterMediaFilter::~SLFloaterMediaFilter()
{
sInstance = NULL;
}
BOOL SLFloaterMediaFilter::postBuild()
@@ -62,15 +55,13 @@ BOOL SLFloaterMediaFilter::postBuild()
if (mWhitelistSLC && mBlacklistSLC)
{
childSetAction("clear_lists", onClearLists, this);
childSetAction("show_ips", onShowIPs, this);
childSetAction("add_whitelist", onWhitelistAdd, this);
childSetAction("remove_whitelist", onWhitelistRemove, this);
childSetAction("add_blacklist", onBlacklistAdd, this);
childSetAction("remove_blacklist", onBlacklistRemove, this);
childSetAction("commit_domain", onCommitDomain, this);
childSetUserData("whitelist_list", this);
childSetUserData("blacklist_list", this);
getChild<LLUICtrl>("clear_lists")->setCommitCallback(boost::bind(LLViewerParcelMedia::clearDomainFilterList));
getChild<LLUICtrl>("show_ips")->setCommitCallback(boost::bind(&SLFloaterMediaFilter::onShowIPs, this));
getChild<LLUICtrl>("add_whitelist")->setCommitCallback(boost::bind(&SLFloaterMediaFilter::onWhitelistAdd, this));
getChild<LLUICtrl>("remove_whitelist")->setCommitCallback(boost::bind(&SLFloaterMediaFilter::onWhitelistRemove, this));
getChild<LLUICtrl>("add_blacklist")->setCommitCallback(boost::bind(&SLFloaterMediaFilter::onBlacklistAdd, this));
getChild<LLUICtrl>("remove_blacklist")->setCommitCallback(boost::bind(&SLFloaterMediaFilter::onBlacklistRemove, this));
getChild<LLUICtrl>("commit_domain")->setCommitCallback(boost::bind(&SLFloaterMediaFilter::onCommitDomain, this));
mIsDirty = true;
}
@@ -96,7 +87,7 @@ void SLFloaterMediaFilter::draw()
for (S32 i = 0; i < (S32)LLViewerParcelMedia::sMediaFilterList.size(); i++)
{
domain = LLViewerParcelMedia::sMediaFilterList[i]["domain"].asString();
if (sShowIPs)
if (mShowIPs)
{
host.setHostByName(domain);
ip = host.getIPString();
@@ -137,7 +128,7 @@ void SLFloaterMediaFilter::draw()
for (it = LLViewerParcelMedia::sAllowedMedia.begin(); it != LLViewerParcelMedia::sAllowedMedia.end(); it++)
{
domain = *it;
if (sShowIPs)
if (mShowIPs)
{
host.setHostByName(domain);
ip = host.getIPString();
@@ -156,7 +147,7 @@ void SLFloaterMediaFilter::draw()
for (it = LLViewerParcelMedia::sDeniedMedia.begin(); it != LLViewerParcelMedia::sDeniedMedia.end(); it++)
{
domain = *it;
if (sShowIPs)
if (mShowIPs)
{
host.setHostByName(domain);
ip = host.getIPString();
@@ -191,7 +182,7 @@ void SLFloaterMediaFilter::draw()
}
mIsDirty = false;
sShowIPs = false;
mShowIPs = false;
}
LLFloater::draw();
@@ -199,55 +190,38 @@ void SLFloaterMediaFilter::draw()
void SLFloaterMediaFilter::setDirty()
{
if (sInstance)
{
sInstance->mIsDirty = true;
sInstance->draw();
}
mIsDirty = true;
}
void SLFloaterMediaFilter::onClearLists(void* data)
void SLFloaterMediaFilter::onShowIPs()
{
LLViewerParcelMedia::clearDomainFilterList();
mShowIPs = true;
mIsDirty = true;
}
void SLFloaterMediaFilter::onShowIPs(void* data)
void SLFloaterMediaFilter::onWhitelistAdd()
{
sShowIPs = true;
setDirty();
childDisable("clear_lists");
childDisable("show_ips");
childDisable("blacklist_list");
childDisable("whitelist_list");
childDisable("remove_whitelist");
childDisable("add_whitelist");
childDisable("remove_blacklist");
childDisable("add_blacklist");
childEnable("input_domain");
childEnable("commit_domain");
childSetText("add_text", std::string("Enter the domain/url to add to the white list:"));
mIsWhitelist = true;
}
void SLFloaterMediaFilter::onWhitelistAdd(void* data)
void SLFloaterMediaFilter::onWhitelistRemove()
{
if (!sInstance)
{
return;
}
sInstance->childDisable("clear_lists");
sInstance->childDisable("show_ips");
sInstance->childDisable("blacklist_list");
sInstance->childDisable("whitelist_list");
sInstance->childDisable("remove_whitelist");
sInstance->childDisable("add_whitelist");
sInstance->childDisable("remove_blacklist");
sInstance->childDisable("add_blacklist");
sInstance->childEnable("input_domain");
sInstance->childEnable("commit_domain");
sInstance->childSetText("add_text", std::string("Enter the domain/url to add to the white list:"));
sIsWhitelist = true;
}
void SLFloaterMediaFilter::onWhitelistRemove(void* data)
{
if (!sInstance)
{
return;
}
LLScrollListItem* selected = sInstance->mWhitelistSLC->getFirstSelected();
LLScrollListItem* selected = mWhitelistSLC->getFirstSelected();
if (selected)
{
std::string domain = sInstance->mWhitelistSLC->getSelectedItemLabel();
std::string domain = mWhitelistSLC->getSelectedItemLabel();
size_t pos = domain.find(' ');
if (pos != std::string::npos)
{
@@ -265,7 +239,7 @@ void SLFloaterMediaFilter::onWhitelistRemove(void* data)
}
}
if (sInstance->childGetValue("match_ip") && domain.find('/') == std::string::npos)
if (childGetValue("match_ip") && domain.find('/') == std::string::npos)
{
LLHost host;
host.setHostByName(domain);
@@ -291,37 +265,29 @@ void SLFloaterMediaFilter::onWhitelistRemove(void* data)
}
}
void SLFloaterMediaFilter::onBlacklistAdd(void* data)
void SLFloaterMediaFilter::onBlacklistAdd()
{
if (!sInstance)
{
return;
}
sInstance->childDisable("clear_lists");
sInstance->childDisable("show_ips");
sInstance->childDisable("blacklist_list");
sInstance->childDisable("whitelist_list");
sInstance->childDisable("remove_whitelist");
sInstance->childDisable("add_whitelist");
sInstance->childDisable("remove_blacklist");
sInstance->childDisable("add_blacklist");
sInstance->childEnable("input_domain");
sInstance->childEnable("commit_domain");
sInstance->childSetText("add_text", std::string("Enter the domain/url to add to the black list:"));
sIsWhitelist = false;
childDisable("clear_lists");
childDisable("show_ips");
childDisable("blacklist_list");
childDisable("whitelist_list");
childDisable("remove_whitelist");
childDisable("add_whitelist");
childDisable("remove_blacklist");
childDisable("add_blacklist");
childEnable("input_domain");
childEnable("commit_domain");
childSetText("add_text", std::string("Enter the domain/url to add to the black list:"));
mIsWhitelist = false;
}
void SLFloaterMediaFilter::onBlacklistRemove(void* data)
void SLFloaterMediaFilter::onBlacklistRemove()
{
if (!sInstance)
{
return;
}
LLScrollListItem* selected = sInstance->mBlacklistSLC->getFirstSelected();
LLScrollListItem* selected = mBlacklistSLC->getFirstSelected();
if (selected)
{
std::string domain = sInstance->mBlacklistSLC->getSelectedItemLabel();
std::string domain = mBlacklistSLC->getSelectedItemLabel();
size_t pos = domain.find(' ');
if (pos != std::string::npos)
{
@@ -339,7 +305,7 @@ void SLFloaterMediaFilter::onBlacklistRemove(void* data)
}
}
if (sInstance->childGetValue("match_ip") && domain.find('/') == std::string::npos)
if (childGetValue("match_ip") && domain.find('/') == std::string::npos)
{
LLHost host;
host.setHostByName(domain);
@@ -365,18 +331,14 @@ void SLFloaterMediaFilter::onBlacklistRemove(void* data)
}
}
void SLFloaterMediaFilter::onCommitDomain(void* data)
void SLFloaterMediaFilter::onCommitDomain()
{
if (!sInstance)
{
return;
}
std::string domain = sInstance->childGetText("input_domain");
std::string domain = childGetText("input_domain");
domain = LLViewerParcelMedia::extractDomain(domain);
LLHost host;
host.setHostByName(domain);
std::string ip = host.getIPString();
bool match_ip = (sInstance->childGetValue("match_ip") && ip != domain && domain.find('/') == std::string::npos);
bool match_ip = (childGetValue("match_ip") && ip != domain && domain.find('/') == std::string::npos);
if (!domain.empty())
{
@@ -403,7 +365,7 @@ void SLFloaterMediaFilter::onCommitDomain(void* data)
}
LLSD newmedia;
newmedia["domain"] = domain;
if (sIsWhitelist)
if (mIsWhitelist)
{
newmedia["action"] = "allow";
}
@@ -420,17 +382,17 @@ void SLFloaterMediaFilter::onCommitDomain(void* data)
LLViewerParcelMedia::saveDomainFilterList();
}
sInstance->childEnable("clear_lists");
sInstance->childEnable("show_ips");
sInstance->childEnable("blacklist_list");
sInstance->childEnable("whitelist_list");
sInstance->childEnable("remove_whitelist");
sInstance->childEnable("add_whitelist");
sInstance->childEnable("remove_blacklist");
sInstance->childEnable("add_blacklist");
sInstance->childDisable("input_domain");
sInstance->childDisable("commit_domain");
sInstance->childSetText("add_text", std::string("New domain:"));
sInstance->childSetText("input_domain", std::string(""));
childEnable("clear_lists");
childEnable("show_ips");
childEnable("blacklist_list");
childEnable("whitelist_list");
childEnable("remove_whitelist");
childEnable("add_whitelist");
childEnable("remove_blacklist");
childEnable("add_blacklist");
childDisable("input_domain");
childDisable("commit_domain");
childSetText("add_text", std::string("New domain:"));
childSetText("input_domain", std::string(""));
setDirty();
}

View File

@@ -37,7 +37,6 @@
#include "llfloater.h"
class LLScrollListCtrl;
class LLButton;
class SLFloaterMediaFilter : public LLFloater, public LLFloaterSingleton<SLFloaterMediaFilter>
{
@@ -48,24 +47,20 @@ public:
virtual void draw();
virtual ~SLFloaterMediaFilter();
static void setDirty();
void setDirty();
static void onClearLists(void*);
static void onShowIPs(void*);
static void onWhitelistAdd(void*);
static void onWhitelistRemove(void*);
static void onBlacklistAdd(void*);
static void onBlacklistRemove(void*);
static void onCommitDomain(void*);
void onShowIPs();
void onWhitelistAdd();
void onWhitelistRemove();
void onBlacklistAdd();
void onBlacklistRemove();
void onCommitDomain();
private:
static bool sIsWhitelist;
static bool sShowIPs;
bool mIsWhitelist;
bool mShowIPs;
LLScrollListCtrl* mWhitelistSLC;
LLScrollListCtrl* mBlacklistSLC;
bool mIsDirty;
static SLFloaterMediaFilter* sInstance;
};
#endif