diff --git a/indra/llui/llpanel.cpp b/indra/llui/llpanel.cpp index 27d0111fc..0e6a4514c 100644 --- a/indra/llui/llpanel.cpp +++ b/indra/llui/llpanel.cpp @@ -759,8 +759,7 @@ void LLPanel::childSetCommitCallback(const std::string& id, void (*cb)(LLUICtrl* LLUICtrl* child = getChild(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(id, true); - if (child) - { - child->setCallbackUserData(userdata); - } -} - void LLPanel::childSetColor(const std::string& id, const LLColor4& color) { LLUICtrl* child = getChild(id, true); diff --git a/indra/llui/llpanel.h b/indra/llui/llpanel.h index d781dbae3..3080eb594 100644 --- a/indra/llui/llpanel.h +++ b/indra/llui/llpanel.h @@ -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); diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp index a5bbc9b90..3f198bbaf 100644 --- a/indra/llui/llscrolllistctrl.cpp +++ b/indra/llui/llscrolllistctrl.cpp @@ -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) diff --git a/indra/llui/llscrolllistctrl.h b/indra/llui/llscrolllistctrl.h index 70f490dcc..528f413ed 100644 --- a/indra/llui/llscrolllistctrl.h +++ b/indra/llui/llscrolllistctrl.h @@ -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; diff --git a/indra/newview/llfloaternotificationsconsole.cpp b/indra/newview/llfloaternotificationsconsole.cpp index ec9bf09b0..fc358d79a 100644 --- a/indra/newview/llfloaternotificationsconsole.cpp +++ b/indra/newview/llfloaternotificationsconsole.cpp @@ -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(); diff --git a/indra/newview/llfloaternotificationsconsole.h b/indra/newview/llfloaternotificationsconsole.h index 1a436b8bf..302428a3f 100644 --- a/indra/newview/llfloaternotificationsconsole.h +++ b/indra/newview/llfloaternotificationsconsole.h @@ -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 diff --git a/indra/newview/llpanelclassified.cpp b/indra/newview/llpanelclassified.cpp index 2b4b7f8eb..de5f765cc 100644 --- a/indra/newview/llpanelclassified.cpp +++ b/indra/newview/llpanelclassified.cpp @@ -244,40 +244,37 @@ void LLPanelClassified::reset() BOOL LLPanelClassified::postBuild() { mSnapshotCtrl = getChild("snapshot_ctrl"); - mSnapshotCtrl->setCommitCallback(onCommitAny); - mSnapshotCtrl->setCallbackUserData(this); + mSnapshotCtrl->setCommitCallback(boost::bind(&LLPanelClassified::checkDirty, this)); mSnapshotSize = mSnapshotCtrl->getRect(); mNameEditor = getChild("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("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("location_editor"); mSetBtn = getChild( "set_location_btn"); - mSetBtn->setClickedCallback(boost::bind(&LLPanelClassified::onClickSet, this)); + mSetBtn->setCommitCallback(boost::bind(&LLPanelClassified::onClickSet, this)); mTeleportBtn = getChild( "classified_teleport_btn"); - mTeleportBtn->setClickedCallback(boost::bind(&LLPanelClassified::onClickTeleport, this)); + mTeleportBtn->setCommitCallback(boost::bind(&LLPanelClassified::onClickTeleport, this)); mMapBtn = getChild( "classified_map_btn"); - mMapBtn->setClickedCallback(boost::bind(&LLPanelClassified::onClickMap, this)); + mMapBtn->setCommitCallback(boost::bind(&LLPanelClassified::onClickMap, this)); if(mInFinder) { mProfileBtn = getChild( "classified_profile_btn"); - mProfileBtn->setClickedCallback(boost::bind(&LLPanelClassified::onClickProfile, this)); + mProfileBtn->setCommitCallback(boost::bind(&LLPanelClassified::onClickProfile, this)); } mCategoryCombo = getChild( "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( "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( "auto_renew_check"); - mAutoRenewCheck->setCommitCallback(onCommitAny); - mAutoRenewCheck->setCallbackUserData(this); + mAutoRenewCheck->setCommitCallback(boost::bind(&LLPanelClassified::checkDirty, this)); } mUpdateBtn = getChild("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("set_price_btn")->setCommitCallback(boost::bind(&LLFloaterPriceForListing::buttonCore, this)); - childSetAction("cancel_btn", onClickCancel, this); + getChild("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() diff --git a/indra/newview/llpanelclassified.h b/indra/newview/llpanelclassified.h index a3bb42554..04432edfd 100644 --- a/indra/newview/llpanelclassified.h +++ b/indra/newview/llpanelclassified.h @@ -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 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; }; diff --git a/indra/newview/llpanelgroupnotices.cpp b/indra/newview/llpanelgroupnotices.cpp index a69b4c76a..3deb47999 100644 --- a/indra/newview/llpanelgroupnotices.cpp +++ b/indra/newview/llpanelgroupnotices.cpp @@ -222,8 +222,7 @@ BOOL LLPanelGroupNotices::postBuild() mNoticesList = getChild("notice_list",recurse); mNoticesList->setCommitOnSelectionChange(TRUE); - mNoticesList->setCommitCallback(onSelectNotice); - mNoticesList->setCallbackUserData(this); + mNoticesList->setCommitCallback(boost::bind(&LLPanelGroupNotices::onSelectNotice, this)); mBtnNewMessage = getChild("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"); diff --git a/indra/newview/llpanelgroupnotices.h b/indra/newview/llpanelgroupnotices.h index 916032c1b..fdd878394 100644 --- a/indra/newview/llpanelgroupnotices.h +++ b/indra/newview/llpanelgroupnotices.h @@ -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 { diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp index d1fc130e9..950c84995 100644 --- a/indra/newview/lltexturectrl.cpp +++ b/indra/newview/lltexturectrl.cpp @@ -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("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] diff --git a/indra/newview/llviewerparcelmedia.cpp b/indra/newview/llviewerparcelmedia.cpp index ee56d7b5d..26b43e526 100644 --- a/indra/newview/llviewerparcelmedia.cpp +++ b/indra/newview/llviewerparcelmedia.cpp @@ -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 ¬ification, 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) diff --git a/indra/newview/slfloatermediafilter.cpp b/indra/newview/slfloatermediafilter.cpp index 54f829126..ce70e62c1 100644 --- a/indra/newview/slfloatermediafilter.cpp +++ b/indra/newview/slfloatermediafilter.cpp @@ -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("clear_lists")->setCommitCallback(boost::bind(LLViewerParcelMedia::clearDomainFilterList)); + getChild("show_ips")->setCommitCallback(boost::bind(&SLFloaterMediaFilter::onShowIPs, this)); + getChild("add_whitelist")->setCommitCallback(boost::bind(&SLFloaterMediaFilter::onWhitelistAdd, this)); + getChild("remove_whitelist")->setCommitCallback(boost::bind(&SLFloaterMediaFilter::onWhitelistRemove, this)); + getChild("add_blacklist")->setCommitCallback(boost::bind(&SLFloaterMediaFilter::onBlacklistAdd, this)); + getChild("remove_blacklist")->setCommitCallback(boost::bind(&SLFloaterMediaFilter::onBlacklistRemove, this)); + getChild("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(); } diff --git a/indra/newview/slfloatermediafilter.h b/indra/newview/slfloatermediafilter.h index dbf974602..b49b828f3 100644 --- a/indra/newview/slfloatermediafilter.h +++ b/indra/newview/slfloatermediafilter.h @@ -37,7 +37,6 @@ #include "llfloater.h" class LLScrollListCtrl; -class LLButton; class SLFloaterMediaFilter : public LLFloater, public LLFloaterSingleton { @@ -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