diff --git a/indra/newview/fsareasearch.cpp b/indra/newview/fsareasearch.cpp index 6225616d73..4e0ea3c8c6 100644 --- a/indra/newview/fsareasearch.cpp +++ b/indra/newview/fsareasearch.cpp @@ -112,6 +112,10 @@ FSAreaSearch::FSAreaSearch(const LLSD& key) : mFilterDistance(false), mFilterDistanceMin(0), mFilterDistanceMax(999999), + mFilterPermCopy(false), + mFilterPermModify(false), + mFilterPermTransfer(false), + mFilterAgentParcelOnly(false), mBeaconColor(), mBeaconTextColor(), mBeacons(false), @@ -836,6 +840,26 @@ void FSAreaSearch::matchObject(FSObjectProperties& details, LLViewerObject* obje } } + if (mFilterAgentParcelOnly && !LLViewerParcelMgr::instance().inAgentParcel(objectp->getPositionGlobal())) + { + return; + } + + if (mFilterPermCopy && !(details.owner_mask & PERM_COPY)) + { + return; + } + + if (mFilterPermModify && !(details.owner_mask & PERM_MODIFY)) + { + return; + } + + if (mFilterPermTransfer && !(details.owner_mask & PERM_TRANSFER)) + { + return; + } + //----------------------------------------------------------------------- // Find text //----------------------------------------------------------------------- @@ -2064,6 +2088,18 @@ BOOL FSPanelAreaSearchFilter::postBuild() mCheckboxMoaP = getChild("filter_moap"); mCheckboxMoaP->setCommitCallback(boost::bind(&FSPanelAreaSearchFilter::onCommitCheckbox, this)); + mCheckboxPermCopy = getChild("filter_perm_copy"); + mCheckboxPermCopy->setCommitCallback(boost::bind(&FSPanelAreaSearchFilter::onCommitCheckbox, this)); + + mCheckboxPermModify = getChild("filter_perm_modify"); + mCheckboxPermModify->setCommitCallback(boost::bind(&FSPanelAreaSearchFilter::onCommitCheckbox, this)); + + mCheckboxPermTransfer = getChild("filter_perm_transfer"); + mCheckboxPermTransfer->setCommitCallback(boost::bind(&FSPanelAreaSearchFilter::onCommitCheckbox, this)); + + mCheckboxAgentParcelOnly = getChild("filter_agent_parcel_only"); + mCheckboxAgentParcelOnly->setCommitCallback(boost::bind(&FSPanelAreaSearchFilter::onCommitCheckbox, this)); + return LLPanel::postBuild(); } @@ -2124,6 +2160,12 @@ void FSPanelAreaSearchFilter::onCommitCheckbox() mFSAreaSearch->setExcludeChildPrims(mCheckboxExcludeChildPrim->get()); mFSAreaSearch->setExcludeNeighborRegions(mCheckboxExcludeNeighborRegions->get()); + + mFSAreaSearch->setFilterPermCopy(mCheckboxPermCopy->get()); + mFSAreaSearch->setFilterPermModify(mCheckboxPermModify->get()); + mFSAreaSearch->setFilterPermTransfer(mCheckboxPermTransfer->get()); + + mFSAreaSearch->setFilterAgentParcelOnly(mCheckboxAgentParcelOnly->get()); } void FSPanelAreaSearchFilter::onCommitSpin() diff --git a/indra/newview/fsareasearch.h b/indra/newview/fsareasearch.h index 030683104a..86d181f4f8 100644 --- a/indra/newview/fsareasearch.h +++ b/indra/newview/fsareasearch.h @@ -158,6 +158,12 @@ public: void setFilterDistanceMin(S32 s) { mFilterDistanceMin = s; } void setFilterDistanceMax(S32 s) { mFilterDistanceMax = s; } + void setFilterPermCopy(bool b) { mFilterPermCopy = b; } + void setFilterPermModify(bool b) { mFilterPermModify = b; } + void setFilterPermTransfer(bool b) { mFilterPermTransfer = b; } + + void setFilterAgentParcelOnly(bool b) { mFilterAgentParcelOnly = b; } + bool isActive() { return mActive; } private: @@ -243,6 +249,12 @@ private: bool mFilterClickAction; U8 mFilterClickActionType; + bool mFilterPermCopy; + bool mFilterPermModify; + bool mFilterPermTransfer; + + bool mFilterAgentParcelOnly; + protected: static void* createPanelList(void* data); static void* createPanelFind(void* data); @@ -380,6 +392,10 @@ private: LLCheckBoxCtrl* mCheckboxExcludetemporary; LLCheckBoxCtrl* mCheckboxExcludeChildPrim; LLCheckBoxCtrl* mCheckboxExcludeNeighborRegions; + LLCheckBoxCtrl* mCheckboxPermCopy; + LLCheckBoxCtrl* mCheckboxPermModify; + LLCheckBoxCtrl* mCheckboxPermTransfer; + LLCheckBoxCtrl* mCheckboxAgentParcelOnly; }; diff --git a/indra/newview/skins/default/xui/de/floater_fs_area_search.xml b/indra/newview/skins/default/xui/de/floater_fs_area_search.xml index 10e4ff7037..6219da5cba 100644 --- a/indra/newview/skins/default/xui/de/floater_fs_area_search.xml +++ b/indra/newview/skins/default/xui/de/floater_fs_area_search.xml @@ -59,6 +59,9 @@ + + + und @@ -82,6 +85,7 @@ und + Objekte mit diesen Eigenschaften ausschließen: diff --git a/indra/newview/skins/default/xui/en/floater_fs_area_search.xml b/indra/newview/skins/default/xui/en/floater_fs_area_search.xml index 16f510f4c2..759702a71c 100644 --- a/indra/newview/skins/default/xui/en/floater_fs_area_search.xml +++ b/indra/newview/skins/default/xui/en/floater_fs_area_search.xml @@ -4,7 +4,7 @@ help_topic="fs_area_search" title="Area Search for Objects" min_width="430" - min_height="355" + min_height="395" width="610" height="435" save_rect="true" @@ -353,6 +353,28 @@ label="Shared Media" left_pad="0" width="100"/> + + + + Exclude objects that are: @@ -552,7 +582,7 @@ name="exclude_neighbor_region" label="Neighboring Regions" width="80"/> -