summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--etc/message.xml8
-rw-r--r--indra/llmessage/llregionflags.h3
-rw-r--r--indra/llprimitive/object_flags.h3
-rw-r--r--indra/newview/llagent.cpp71
-rw-r--r--indra/newview/llagent.h3
-rw-r--r--indra/newview/llfloaterland.cpp70
-rw-r--r--indra/newview/llfloaterland.h1
-rw-r--r--indra/newview/llfloaterregioninfo.cpp95
-rw-r--r--indra/newview/llgroupmgr.cpp2
-rw-r--r--indra/newview/llgroupmgr.h1
-rw-r--r--indra/newview/llpanelavatar.cpp28
-rw-r--r--indra/newview/llpanelgroup.cpp2
-rw-r--r--indra/newview/llpanelgroupgeneral.cpp173
-rw-r--r--indra/newview/llpanelgroupgeneral.h3
-rw-r--r--indra/newview/llpanelpermissions.cpp25
-rw-r--r--indra/newview/llpanelpermissions.h1
-rw-r--r--indra/newview/llselectmgr.cpp44
-rw-r--r--indra/newview/llselectmgr.h3
-rw-r--r--indra/newview/llviewerobject.cpp17
-rw-r--r--indra/newview/llviewerobject.h3
-rw-r--r--indra/newview/llviewerregion.cpp1
-rw-r--r--scripts/messages/message_template.msg25
22 files changed, 424 insertions, 158 deletions
diff --git a/etc/message.xml b/etc/message.xml
index 304ba320b1..85b1aac99c 100644
--- a/etc/message.xml
+++ b/etc/message.xml
@@ -276,6 +276,14 @@
<boolean>true</boolean>
</map>
+ <key>AgentGroupDataUpdate</key>
+ <map>
+ <key>flavor</key>
+ <string>llsd</string>
+ <key>trusted-sender</key>
+ <boolean>true</boolean>
+ </map>
+
<key>ChatterBoxSessionStartReply</key>
<map>
<key>flavor</key>
diff --git a/indra/llmessage/llregionflags.h b/indra/llmessage/llregionflags.h
index 28a741789c..6d603e1e69 100644
--- a/indra/llmessage/llregionflags.h
+++ b/indra/llmessage/llregionflags.h
@@ -70,6 +70,8 @@ const U32 REGION_FLAGS_ABUSE_EMAIL_TO_ESTATE_OWNER = (1 << 27);
const U32 REGION_FLAGS_ALLOW_VOICE = (1 << 28);
+const U32 REGION_FLAGS_BLOCK_PARCEL_SEARCH = (1 << 29);
+
const U32 REGION_FLAGS_DEFAULT = REGION_FLAGS_ALLOW_LANDMARK |
REGION_FLAGS_ALLOW_SET_HOME |
@@ -159,3 +161,4 @@ const U32 SWD_SCRIPTED_ONLY = (1 << 2);
#endif
+
diff --git a/indra/llprimitive/object_flags.h b/indra/llprimitive/object_flags.h
index b410171742..b52037109e 100644
--- a/indra/llprimitive/object_flags.h
+++ b/indra/llprimitive/object_flags.h
@@ -26,7 +26,8 @@ const U32 FLAGS_INVENTORY_EMPTY = 0x00000800;
const U32 FLAGS_JOINT_HINGE = 0x00001000;
const U32 FLAGS_JOINT_P2P = 0x00002000;
const U32 FLAGS_JOINT_LP2P = 0x00004000;
-//const U32 FLAGS_JOINT_WHEEL = 0x00008000;
+// const U32 FLAGS_JOINT_WHEEL = 0x00008000;
+const U32 FLAGS_INCLUDE_IN_SEARCH = 0x00008000;
const U32 FLAGS_ALLOW_INVENTORY_DROP = 0x00010000;
const U32 FLAGS_OBJECT_TRANSFER = 0x00020000;
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index e12904ef43..3000cce4f9 100644
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -28,6 +28,7 @@
#include "llquaternion.h"
#include "v3math.h"
#include "v4math.h"
+#include "llsdutil.h"
//#include "vmath.h"
#include "imageids.h"
@@ -4808,7 +4809,7 @@ BOOL LLAgent::setGroupContribution(const LLUUID& group_id, S32 contribution)
return FALSE;
}
-BOOL LLAgent::setGroupAcceptNotices(const LLUUID& group_id, BOOL accept_notices)
+BOOL LLAgent::setUserGroupFlags(const LLUUID& group_id, BOOL accept_notices, BOOL list_in_profile)
{
S32 count = mGroups.count();
for(S32 i = 0; i < count; ++i)
@@ -4816,6 +4817,7 @@ BOOL LLAgent::setGroupAcceptNotices(const LLUUID& group_id, BOOL accept_notices)
if(mGroups.get(i).mID == group_id)
{
mGroups.get(i).mAcceptNotices = accept_notices;
+ mGroups.get(i).mListInProfile = list_in_profile;
LLMessageSystem* msg = gMessageSystem;
msg->newMessage("SetGroupAcceptNotices");
msg->nextBlock("AgentData");
@@ -4824,6 +4826,8 @@ BOOL LLAgent::setGroupAcceptNotices(const LLUUID& group_id, BOOL accept_notices)
msg->nextBlock("Data");
msg->addUUID("GroupID", group_id);
msg->addBOOL("AcceptNotices", accept_notices);
+ msg->nextBlock("NewData");
+ msg->addBOOL("ListInProfile", list_in_profile);
sendReliableMessage();
return TRUE;
}
@@ -5177,6 +5181,70 @@ void LLAgent::processAgentGroupDataUpdate(LLMessageSystem *msg, void **)
}
+class LLAgentGroupDataUpdateViewerNode : public LLHTTPNode
+{
+ virtual void post(
+ LLHTTPNode::ResponsePtr response,
+ const LLSD& context,
+ const LLSD& input) const
+ {
+ LLSD body = input["body"];
+ if(body.has("body"))
+ body = body["body"];
+ LLUUID agent_id = body["AgentData"][0]["AgentID"].asUUID();
+
+ if (agent_id != gAgentID)
+ {
+ llwarns << "processAgentGroupDataUpdate for agent other than me" << llendl;
+ return;
+ }
+
+ LLSD group_data = body["GroupData"];
+
+ LLSD::array_iterator iter_group =
+ group_data.beginArray();
+ LLSD::array_iterator end_group =
+ group_data.endArray();
+ int group_index = 0;
+ for(; iter_group != end_group; ++iter_group)
+ {
+
+ LLGroupData group;
+ S32 index = -1;
+ bool need_floater_update = false;
+
+ group.mID = (*iter_group)["GroupID"].asUUID();
+ group.mPowers = ll_U64_from_sd((*iter_group)["GroupPowers"]);
+ group.mAcceptNotices = (*iter_group)["AcceptNotices"].asBoolean();
+ group.mListInProfile = body["NewGroupData"][group_index]["ListInProfile"].asBoolean();
+ group.mInsigniaID = (*iter_group)["GroupInsigniaID"].asUUID();
+ group.mName = (*iter_group)["GroupName"].asString();
+ group.mContribution = (*iter_group)["Contribution"].asInteger();
+
+ group_index++;
+
+ if(group.mID.notNull())
+ {
+ need_floater_update = true;
+ // Remove the group if it already exists remove it and add the new data to pick up changes.
+ index = gAgent.mGroups.find(group);
+ if (index != -1)
+ {
+ gAgent.mGroups.remove(index);
+ }
+ gAgent.mGroups.put(group);
+ }
+ if (need_floater_update)
+ {
+ update_group_floaters(group.mID);
+ }
+ }
+ }
+};
+
+LLHTTPRegistration<LLAgentGroupDataUpdateViewerNode >
+ gHTTPRegistrationAgentGroupDataUpdateViewerNode ("/message/AgentGroupDataUpdate");
+
// static
void LLAgent::processAgentDataUpdate(LLMessageSystem *msg, void **)
{
@@ -7269,5 +7337,4 @@ void LLAgent::parseTeleportMessages(const LLString& xml_filename)
}//end for (all message sets in xml file)
}
-
// EOF
diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h
index 8b6e1c33a4..053d27728f 100644
--- a/indra/newview/llagent.h
+++ b/indra/newview/llagent.h
@@ -78,6 +78,7 @@ struct LLGroupData
LLUUID mInsigniaID;
U64 mPowers;
BOOL mAcceptNotices;
+ BOOL mListInProfile;
S32 mContribution;
std::string mName;
};
@@ -197,7 +198,7 @@ public:
// new contribution level. Returns true if the group id was found
// and contribution could be set.
BOOL setGroupContribution(const LLUUID& group_id, S32 contribution);
- BOOL setGroupAcceptNotices(const LLUUID& group_id, BOOL accept_notices);
+ BOOL setUserGroupFlags(const LLUUID& group_id, BOOL accept_notices, BOOL list_in_profile);
void setHideGroupTitle(BOOL hide) { mHideGroupTitle = hide; }
//
diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp
index 421066688e..aa9a06555c 100644
--- a/indra/newview/llfloaterland.cpp
+++ b/indra/newview/llfloaterland.cpp
@@ -1957,10 +1957,6 @@ BOOL LLPanelLandOptions::postBuild()
mCategoryCombo = LLUICtrlFactory::getComboBoxByName(this, "land category");
childSetCommitCallback("land category", onCommitAny, this);
- mAllowPublishCtrl = LLUICtrlFactory::getCheckBoxByName(this, "PublishCheck");
- childSetCommitCallback("PublishCheck", onCommitAny, this);
-
-
mMatureCtrl = LLUICtrlFactory::getCheckBoxByName(this, "MatureCheck");
childSetCommitCallback("MatureCheck", onCommitAny, this);
@@ -1971,8 +1967,6 @@ BOOL LLPanelLandOptions::postBuild()
if (gAgent.mAccess < SIM_ACCESS_MATURE)
{
// Disable these buttons if they are PG (Teen) users
- mAllowPublishCtrl->setVisible(FALSE);
- mAllowPublishCtrl->setEnabled(FALSE);
mPublishHelpButton->setVisible(FALSE);
mPublishHelpButton->setEnabled(FALSE);
mMatureCtrl->setVisible(FALSE);
@@ -2094,7 +2088,6 @@ void LLPanelLandOptions::refresh()
mSetBtn->setEnabled(FALSE);
mClearBtn->setEnabled(FALSE);
- mAllowPublishCtrl->setEnabled(FALSE);
mMatureCtrl->setEnabled(FALSE);
mPublishHelpButton->setEnabled(FALSE);
}
@@ -2135,11 +2128,6 @@ void LLPanelLandOptions::refresh()
mCheckOtherScripts ->set( parcel->getAllowOtherScripts() );
mCheckOtherScripts ->setEnabled( can_change_options );
- BOOL can_change_identity = LLViewerParcelMgr::isParcelModifiableByAgent(parcel,
- GP_LAND_CHANGE_IDENTITY);
- mCheckShowDirectory ->set( parcel->getParcelFlag(PF_SHOW_DIRECTORY));
- mCheckShowDirectory ->setEnabled( can_change_identity );
-
mPushRestrictionCtrl->set( parcel->getRestrictPushObject() );
if(parcel->getRegionPushOverride())
{
@@ -2153,6 +2141,9 @@ void LLPanelLandOptions::refresh()
mPushRestrictionCtrl->setEnabled(can_change_options);
}
+ BOOL can_change_identity =
+ LLViewerParcelMgr::isParcelModifiableByAgent(parcel, GP_LAND_CHANGE_IDENTITY);
+
// Set by string in case the order in UI doesn't match the order
// by index.
LLParcel::ECategory cat = parcel->getCategory();
@@ -2186,8 +2177,6 @@ void LLPanelLandOptions::refresh()
mSetBtn->setEnabled( can_change_landing_point );
mClearBtn->setEnabled( can_change_landing_point );
- mAllowPublishCtrl->set(parcel->getAllowPublish());
- mAllowPublishCtrl->setEnabled( can_change_identity );
mMatureCtrl->set(parcel->getMaturePublish());
mMatureCtrl->setEnabled( can_change_identity );
mPublishHelpButton->setEnabled( can_change_identity );
@@ -2195,8 +2184,6 @@ void LLPanelLandOptions::refresh()
if (gAgent.mAccess < SIM_ACCESS_MATURE)
{
// Disable these buttons if they are PG (Teen) users
- mAllowPublishCtrl->setVisible(FALSE);
- mAllowPublishCtrl->setEnabled(FALSE);
mPublishHelpButton->setVisible(FALSE);
mPublishHelpButton->setEnabled(FALSE);
mMatureCtrl->setVisible(FALSE);
@@ -2205,7 +2192,39 @@ void LLPanelLandOptions::refresh()
}
}
+// virtual
+void LLPanelLandOptions::draw()
+{
+ LLParcel *parcel = gParcelMgr->getFloatingParcelSelection()->getParcel();
+
+ if(parcel)
+ {
+ LLViewerRegion* region;
+ region = gParcelMgr->getSelectionRegion();
+ llassert(region); // Region should never be null.
+
+ BOOL can_change_identity = region ?
+ LLViewerParcelMgr::isParcelModifiableByAgent(parcel, GP_LAND_CHANGE_IDENTITY) &&
+ ! (region->getRegionFlags() & REGION_FLAGS_BLOCK_PARCEL_SEARCH) : false;
+
+ // There is a bug with this panel whereby the Show Directory bit can be
+ // slammed off by the Region based on an override. Since this data is cached
+ // locally the change will not reflect in the panel, which could cause confusion
+ // A workaround for this is to flip the bit off in the locally cached version
+ // when we detect a mismatch case.
+ if(! can_change_identity && parcel->getParcelFlag(PF_SHOW_DIRECTORY))
+ {
+ parcel->setParcelFlag(PF_SHOW_DIRECTORY, FALSE);
+ }
+ mCheckShowDirectory ->set(parcel->getParcelFlag(PF_SHOW_DIRECTORY));
+ mCheckShowDirectory ->setEnabled(can_change_identity);
+ mCategoryCombo->setEnabled(can_change_identity);
+ }
+
+ LLPanel::draw();
+
+}
// static
void LLPanelLandOptions::onCommitAny(LLUICtrl *ctrl, void *userdata)
{
@@ -2228,7 +2247,7 @@ void LLPanelLandOptions::onCommitAny(LLUICtrl *ctrl, void *userdata)
BOOL allow_landmark = self->mCheckLandmark->get();
BOOL allow_group_scripts = self->mCheckGroupScripts->get() || self->mCheckOtherScripts->get();
BOOL allow_other_scripts = self->mCheckOtherScripts->get();
- BOOL allow_publish = self->mAllowPublishCtrl->get();
+ BOOL allow_publish = FALSE;
BOOL mature_publish = self->mMatureCtrl->get();
BOOL push_restriction = self->mPushRestrictionCtrl->get();
BOOL show_directory = self->mCheckShowDirectory->get();
@@ -2318,7 +2337,22 @@ void LLPanelLandOptions::onClickClear(void* userdata)
// static
void LLPanelLandOptions::onClickPublishHelp(void*)
{
- gViewerWindow->alertXml("ClickPublishHelpLand");
+ LLViewerRegion* region = gParcelMgr->getSelectionRegion();
+ LLParcel *parcel = gParcelMgr->getFloatingParcelSelection()->getParcel();
+ llassert(region); // Region should never be null.
+
+ bool can_change_identity = region && parcel ?
+ LLViewerParcelMgr::isParcelModifiableByAgent(parcel, GP_LAND_CHANGE_IDENTITY) &&
+ ! (region->getRegionFlags() & REGION_FLAGS_BLOCK_PARCEL_SEARCH) : false;
+
+ if(! can_change_identity)
+ {
+ gViewerWindow->alertXml("ClickPublishHelpLandDisabled");
+ }
+ else
+ {
+ gViewerWindow->alertXml("ClickPublishHelpLand");
+ }
}
//---------------------------------------------------------------------------
diff --git a/indra/newview/llfloaterland.h b/indra/newview/llfloaterland.h
index ab7ff3921c..6e8e525e0d 100644
--- a/indra/newview/llfloaterland.h
+++ b/indra/newview/llfloaterland.h
@@ -301,6 +301,7 @@ public:
static void onClickPublishHelp(void*);
virtual BOOL postBuild();
+ virtual void draw();
protected:
LLCheckBoxCtrl* mCheckEditObjects;
diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp
index f61f43fd5e..d88af396df 100644
--- a/indra/newview/llfloaterregioninfo.cpp
+++ b/indra/newview/llfloaterregioninfo.cpp
@@ -181,6 +181,7 @@ LLFloaterRegionInfo::LLFloaterRegionInfo(const LLRect& rect) :
mInfoPanels.push_back((LLPanelRegionInfo*)panel);
gUICtrlFactory->buildPanel(panel, "panel_region_covenant.xml");
mTab->addTabPanel(panel, panel->getLabel(), FALSE);
+
}
LLFloaterRegionInfo::~LLFloaterRegionInfo()
@@ -214,6 +215,7 @@ void LLFloaterRegionInfo::show(LLViewerRegion* region)
msg->addUUID("AgentID", gAgent.getID());
msg->addUUID("SessionID", gAgent.getSessionID());
gAgent.sendReliableMessage();
+
}
// static
@@ -305,6 +307,7 @@ void LLFloaterRegionInfo::processRegionInfo(LLMessageSystem* msg)
panel->childSetValue("restrict_pushobject", (region_flags & REGION_FLAGS_RESTRICT_PUSHOBJECT) ? TRUE : FALSE );
panel->childSetValue("allow_land_resell_check", (region_flags & REGION_FLAGS_BLOCK_LAND_RESELL) ? FALSE : TRUE );
panel->childSetValue("allow_parcel_changes_check", (region_flags & REGION_FLAGS_ALLOW_PARCEL_CHANGES) ? TRUE : FALSE );
+ panel->childSetValue("block_parcel_search_check", (region_flags & REGION_FLAGS_BLOCK_PARCEL_SEARCH) ? TRUE : FALSE );
panel->childSetValue("agent_limit_spin", LLSD((F32)agent_limit) );
panel->childSetValue("object_bonus_spin", LLSD(object_bonus_factor) );
panel->childSetValue("access_combo", LLSD(LLViewerRegion::accessToString(sim_access)) );
@@ -537,6 +540,7 @@ BOOL LLPanelRegionGeneralInfo::postBuild()
initCtrl("object_bonus_spin");
initCtrl("access_combo");
initCtrl("restrict_pushobject");
+ initCtrl("block_parcel_search_check");
initHelpBtn("terraform_help", "HelpRegionBlockTerraform");
initHelpBtn("fly_help", "HelpRegionBlockFly");
@@ -547,6 +551,7 @@ BOOL LLPanelRegionGeneralInfo::postBuild()
initHelpBtn("restrict_pushobject_help", "HelpRegionRestrictPushObject");
initHelpBtn("land_resell_help", "HelpRegionLandResell");
initHelpBtn("parcel_changes_help", "HelpParcelChanges");
+ initHelpBtn("parcel_search_help", "HelpRegionSearch");
childSetAction("kick_btn", onClickKick, this);
childSetAction("kick_all_btn", onClickKickAll, this);
@@ -672,52 +677,78 @@ void LLPanelRegionGeneralInfo::onClickManageTelehub(void* data)
// strings[6] = sim access (0 = unknown, 13 = PG, 21 = Mature)
// strings[7] = restrict pushobject
// strings[8] = 'Y' - allow parcel subdivide, 'N' - not
+// strings[9] = 'Y' - block parcel search, 'N' - allow
BOOL LLPanelRegionGeneralInfo::sendUpdate()
{
llinfos << "LLPanelRegionGeneralInfo::sendUpdate()" << llendl;
- strings_t strings;
- //integers_t integers;
- char buffer[MAX_STRING]; /* Flawfinder: ignore*/
- snprintf(buffer, MAX_STRING, "%s", (childGetValue("block_terraform_check").asBoolean() ? "Y" : "N")); /* Flawfinder: ignore */
- strings.push_back(strings_t::value_type(buffer));
-
- snprintf(buffer, MAX_STRING, "%s", (childGetValue("block_fly_check").asBoolean() ? "Y" : "N")); /* Flawfinder: ignore */
- strings.push_back(strings_t::value_type(buffer));
- snprintf(buffer, MAX_STRING, "%s", (childGetValue("allow_damage_check").asBoolean() ? "Y" : "N")); /* Flawfinder: ignore */
- strings.push_back(strings_t::value_type(buffer));
+ // First try using a Cap. If that fails use the old method.
+ LLSD body;
+ std::string url = gAgent.getRegion()->getCapability("DispatchRegionInfo");
+ if (!url.empty())
+ {
+ body["block_terraform"] = childGetValue("block_terraform_check");
+ body["block_fly"] = childGetValue("block_fly_check");
+ body["allow_damage"] = childGetValue("allow_damage_check");
+ body["allow_land_resell"] = childGetValue("allow_land_resell_check");
+ body["agent_limit"] = childGetValue("agent_limit_spin");
+ body["prim_bonus"] = childGetValue("object_bonus_spin");
+ body["sim_access"] = childGetValue("access_combo");
+ body["restrict_pushobject"] = childGetValue("restrict_pushobject");
+ body["allow_parcel_changes"] = childGetValue("allow_parcel_changes_check");
+ body["block_parcel_search"] = childGetValue("block_parcel_search_check");
+ LLHTTPClient::post(url, body, new LLHTTPClient::Responder());
+ }
+ else
+ {
+ strings_t strings;
+ char buffer[MAX_STRING]; /* Flawfinder: ignore*/
- snprintf(buffer, MAX_STRING, "%s", (childGetValue("allow_land_resell_check").asBoolean() ? "Y" : "N")); /* Flawfinder: ignore */
- strings.push_back(strings_t::value_type(buffer));
+ snprintf(buffer, MAX_STRING, "%s", (childGetValue("block_terraform_check").asBoolean() ? "Y" : "N")); /* Flawfinder: ignore */
+ strings.push_back(strings_t::value_type(buffer));
- F32 value = (F32)childGetValue("agent_limit_spin").asReal();
- snprintf(buffer, MAX_STRING, "%f", value); /* Flawfinder: ignore */
- strings.push_back(strings_t::value_type(buffer));
+ snprintf(buffer, MAX_STRING, "%s", (childGetValue("block_fly_check").asBoolean() ? "Y" : "N")); /* Flawfinder: ignore */
+ strings.push_back(strings_t::value_type(buffer));
- value = (F32)childGetValue("object_bonus_spin").asReal();
- snprintf(buffer, MAX_STRING, "%f", value); /* Flawfinder: ignore */
- strings.push_back(strings_t::value_type(buffer));
+ snprintf(buffer, MAX_STRING, "%s", (childGetValue("allow_damage_check").asBoolean() ? "Y" : "N")); /* Flawfinder: ignore */
+ strings.push_back(strings_t::value_type(buffer));
- U8 access = LLViewerRegion::stringToAccess(childGetValue("access_combo").asString().c_str());
- snprintf(buffer, MAX_STRING, "%d", (S32)access); /* Flawfinder: ignore */
- strings.push_back(strings_t::value_type(buffer));
+ snprintf(buffer, MAX_STRING, "%s", (childGetValue("allow_land_resell_check").asBoolean() ? "Y" : "N")); /* Flawfinder: ignore */
+ strings.push_back(strings_t::value_type(buffer));
- snprintf(buffer, MAX_STRING, "%s", (childGetValue("restrict_pushobject").asBoolean() ? "Y" : "N")); /* Flawfinder: ignore */
- strings.push_back(strings_t::value_type(buffer));
+ F32 value = (F32)childGetValue("agent_limit_spin").asReal();
+ snprintf(buffer, MAX_STRING, "%f", value); /* Flawfinder: ignore */
+ strings.push_back(strings_t::value_type(buffer));
- snprintf(buffer, MAX_STRING, "%s", (childGetValue("allow_parcel_changes_check").asBoolean() ? "Y" : "N")); /* Flawfinder: ignore */
- strings.push_back(strings_t::value_type(buffer));
+ value = (F32)childGetValue("object_bonus_spin").asReal();
+ snprintf(buffer, MAX_STRING, "%f", value); /* Flawfinder: ignore */
+ strings.push_back(strings_t::value_type(buffer));
- LLUUID invoice(LLFloaterRegionInfo::getLastInvoice());
- sendEstateOwnerMessage(gMessageSystem, "setregioninfo", invoice, strings);
+ U8 access = LLViewerRegion::stringToAccess(childGetValue("access_combo").asString().c_str());
+ snprintf(buffer, MAX_STRING, "%d", (S32)access); /* Flawfinder: ignore */
+ strings.push_back(strings_t::value_type(buffer));
- LLViewerRegion* region = gAgent.getRegion();
- if (region
- && access != region->getSimAccess() ) /* Flawfinder: ignore */
- {
- gViewerWindow->alertXml("RegionMaturityChange");
+ snprintf(buffer, MAX_STRING, "%s", (childGetValue("restrict_pushobject").asBoolean() ? "Y" : "N")); /* Flawfinder: ignore */
+ strings.push_back(strings_t::value_type(buffer));
+
+ snprintf(buffer, MAX_STRING, "%s", (childGetValue("allow_parcel_changes_check").asBoolean() ? "Y" : "N")); /* Flawfinder: ignore */
+ strings.push_back(strings_t::value_type(buffer));
+
+ LLUUID invoice(LLFloaterRegionInfo::getLastInvoice());
+ sendEstateOwnerMessage(gMessageSystem, "setregioninfo", invoice, strings);
+
+ LLViewerRegion* region = gAgent.getRegion();
+ if (region
+ && access != region->getSimAccess() ) /* Flawfinder: ignore */
+ {
+ gViewerWindow->alertXml("RegionMaturityChange");
+ }
}
+
+ //integers_t integers;
+
+
return TRUE;
}
diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp
index 18993e56fa..249012195f 100644
--- a/indra/newview/llgroupmgr.cpp
+++ b/indra/newview/llgroupmgr.cpp
@@ -195,6 +195,7 @@ LLGroupMgrGroupData::LLGroupMgrGroupData(const LLUUID& id) :
mOpenEnrollment(FALSE),
mMembershipFee(0),
mAllowPublish(FALSE),
+ mListInProfile(FALSE),
mMaturePublish(FALSE),
mChanged(FALSE),
mMemberCount(0),
@@ -1240,6 +1241,7 @@ void LLGroupMgr::processCreateGroupReply(LLMessageSystem* msg, void ** data)
// This isn't actually too bad because real data will come down in 2 or 3 miliseconds and replace this.
LLGroupData gd;
gd.mAcceptNotices = TRUE;
+ gd.mListInProfile = TRUE;
gd.mContribution = 0;
gd.mID = group_id;
gd.mName = "new group";
diff --git a/indra/newview/llgroupmgr.h b/indra/newview/llgroupmgr.h
index 7c06acbc1f..2d0dda9e68 100644
--- a/indra/newview/llgroupmgr.h
+++ b/indra/newview/llgroupmgr.h
@@ -232,6 +232,7 @@ public:
BOOL mOpenEnrollment;
S32 mMembershipFee;
BOOL mAllowPublish;
+ BOOL mListInProfile;
BOOL mMaturePublish;
BOOL mChanged;
S32 mMemberCount;
diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp
index ab2e30014d..e0f19c10d1 100644
--- a/indra/newview/llpanelavatar.cpp
+++ b/indra/newview/llpanelavatar.cpp
@@ -1836,11 +1836,6 @@ void LLPanelAvatar::processAvatarPropertiesReply(LLMessageSystem *msg, void**)
allow_publish = (flags & AVATAR_ALLOW_PUBLISH);
online = (flags & AVATAR_ONLINE);
- EOnlineStatus online_status = (online) ? ONLINE_STATUS_YES : ONLINE_STATUS_NO;
-
- self->setOnlineStatus(online_status);
-
- self->mPanelWeb->setWebURL(std::string(profile_url));
U8 caption_index = 0;
LLString caption_text;
charter_member_size = msg->getSize("PropertiesData", "CharterMember");
@@ -1855,12 +1850,6 @@ void LLPanelAvatar::processAvatarPropertiesReply(LLMessageSystem *msg, void**)
caption_text = caption;
}
- LLTextureCtrl* image_ctrl = LLUICtrlFactory::getTexturePickerByName(self->mPanelSecondLife,"img");
- if(image_ctrl)
- {
- image_ctrl->setImageAssetID(image_id);
- }
- self->childSetValue("about", about_text);
if(caption_text.empty())
{
@@ -1903,10 +1892,23 @@ void LLPanelAvatar::processAvatarPropertiesReply(LLMessageSystem *msg, void**)
self->mPanelSecondLife->childSetValue("acct", caption_text);
self->mPanelSecondLife->childSetValue("born", born_on);
-
+
+ EOnlineStatus online_status = (online) ? ONLINE_STATUS_YES : ONLINE_STATUS_NO;
+
+ self->setOnlineStatus(online_status);
+
+ self->mPanelWeb->setWebURL(std::string(profile_url));
+
+ LLTextureCtrl* image_ctrl = LLUICtrlFactory::getTexturePickerByName(self->mPanelSecondLife,"img");
+ if(image_ctrl)
+ {
+ image_ctrl->setImageAssetID(image_id);
+ }
+ self->childSetValue("about", about_text);
+
self->mPanelSecondLife->setPartnerID(partner_id);
self->mPanelSecondLife->updatePartnerName();
-
+
if (self->mPanelFirstLife)
{
// Teens don't get these
diff --git a/indra/newview/llpanelgroup.cpp b/indra/newview/llpanelgroup.cpp
index 7a288a1730..8a10ef0ea4 100644
--- a/indra/newview/llpanelgroup.cpp
+++ b/indra/newview/llpanelgroup.cpp
@@ -322,7 +322,7 @@ void LLPanelGroup::tabChanged()
if ( mApplyBtn )
{
LLString mesg;
- mApplyBtn->setEnabled(mAllowEdit && mCurrentTab->needsApply(mesg));
+ mApplyBtn->setEnabled(mCurrentTab->needsApply(mesg));
}
}
diff --git a/indra/newview/llpanelgroupgeneral.cpp b/indra/newview/llpanelgroupgeneral.cpp
index ce51c59413..ca62790147 100644
--- a/indra/newview/llpanelgroupgeneral.cpp
+++ b/indra/newview/llpanelgroupgeneral.cpp
@@ -53,12 +53,12 @@ LLPanelGroupGeneral::LLPanelGroupGeneral(const std::string& name,
mBtnJoinGroup(NULL),
mListVisibleMembers(NULL),
mCtrlShowInGroupList(NULL),
- mCtrlPublishOnWeb(NULL),
mCtrlMature(NULL),
mCtrlOpenEnrollment(NULL),
mCtrlEnrollmentFee(NULL),
mSpinEnrollmentFee(NULL),
mCtrlReceiveNotices(NULL),
+ mCtrlListGroup(NULL),
mActiveTitleLabel(NULL),
mComboActiveTitle(NULL)
{
@@ -133,13 +133,6 @@ BOOL LLPanelGroupGeneral::postBuild()
mCtrlShowInGroupList->setCallbackUserData(this);
}
- mCtrlPublishOnWeb = (LLCheckBoxCtrl*) getChildByName("publish_on_web", recurse);
- if (mCtrlPublishOnWeb)
- {
- mCtrlPublishOnWeb->setCommitCallback(onCommitAny);
- mCtrlPublishOnWeb->setCallbackUserData(this);
- }
-
mCtrlMature = (LLCheckBoxCtrl*) getChildByName("mature", recurse);
if (mCtrlMature)
{
@@ -170,20 +163,31 @@ BOOL LLPanelGroupGeneral::postBuild()
}
BOOL accept_notices = FALSE;
+ BOOL list_in_profile = FALSE;
LLGroupData data;
if(gAgent.getGroupData(mGroupID,data))
{
accept_notices = data.mAcceptNotices;
+ list_in_profile = data.mListInProfile;
}
mCtrlReceiveNotices = (LLCheckBoxCtrl*) getChildByName("receive_notices", recurse);
if (mCtrlReceiveNotices)
{
- mCtrlReceiveNotices->setCommitCallback(onReceiveNotices);
+ mCtrlReceiveNotices->setCommitCallback(onCommitUserOnly);
mCtrlReceiveNotices->setCallbackUserData(this);
mCtrlReceiveNotices->set(accept_notices);
mCtrlReceiveNotices->setEnabled(data.mID.notNull());
}
+ mCtrlListGroup = (LLCheckBoxCtrl*) getChildByName("list_groups_in_profile", recurse);
+ if (mCtrlListGroup)
+ {
+ mCtrlListGroup->setCommitCallback(onCommitUserOnly);
+ mCtrlListGroup->setCallbackUserData(this);
+ mCtrlListGroup->set(list_in_profile);
+ mCtrlListGroup->setEnabled(data.mID.notNull());
+ }
+
mActiveTitleLabel = (LLTextBox*) getChildByName("active_title_label", recurse);
mComboActiveTitle = (LLComboBox*) getChildByName("active_title", recurse);
@@ -217,7 +221,6 @@ BOOL LLPanelGroupGeneral::postBuild()
mEditCharter->setEnabled(TRUE);
mCtrlShowInGroupList->setEnabled(TRUE);
- mCtrlPublishOnWeb->setEnabled(TRUE);
mCtrlMature->setEnabled(TRUE);
mCtrlOpenEnrollment->setEnabled(TRUE);
mCtrlEnrollmentFee->setEnabled(TRUE);
@@ -240,6 +243,15 @@ void LLPanelGroupGeneral::onCommitAny(LLUICtrl* ctrl, void* data)
}
// static
+void LLPanelGroupGeneral::onCommitUserOnly(LLUICtrl* ctrl, void* data)
+{
+ LLPanelGroupGeneral* self = (LLPanelGroupGeneral*)data;
+ self->mChanged = TRUE;
+ self->notifyObservers();
+}
+
+
+// static
void LLPanelGroupGeneral::onCommitEnrollment(LLUICtrl* ctrl, void* data)
{
onCommitAny(ctrl, data);
@@ -340,16 +352,6 @@ void LLPanelGroupGeneral::joinDlgCB(S32 which, void *userdata)
}
// static
-void LLPanelGroupGeneral::onReceiveNotices(LLUICtrl* ctrl, void* data)
-{
- LLPanelGroupGeneral* self = (LLPanelGroupGeneral*)data;
- LLCheckBoxCtrl* check = (LLCheckBoxCtrl*)ctrl;
-
- if(!self) return;
- gAgent.setGroupAcceptNotices(self->mGroupID, check->get());
-}
-
-// static
void LLPanelGroupGeneral::openProfile(void* data)
{
LLPanelGroupGeneral* self = (LLPanelGroupGeneral*)data;
@@ -406,88 +408,90 @@ void LLPanelGroupGeneral::draw()
bool LLPanelGroupGeneral::apply(LLString& mesg)
{
- if (!mAllowEdit)
- {
- llwarns << "LLPanelGroupGeneral::apply() called with false mAllowEdit"
- << llendl;
- return true;
- }
+ BOOL has_power_in_group = gAgent.hasPowerInGroup(mGroupID,GP_GROUP_CHANGE_IDENTITY);
- llinfos << "LLPanelGroupGeneral::apply" << llendl;
- if (mGroupID.isNull())
+ if (has_power_in_group || mGroupID.isNull())
{
- // Validate the group name length.
- S32 group_name_len = mGroupNameEditor->getText().size();
- if ( group_name_len < DB_GROUP_NAME_MIN_LEN
- || group_name_len > DB_GROUP_NAME_STR_LEN)
+ llinfos << "LLPanelGroupGeneral::apply" << llendl;
+ if (mGroupID.isNull())
{
- std::ostringstream temp_error;
- temp_error << "A group name must be between " << DB_GROUP_NAME_MIN_LEN
- << " and " << DB_GROUP_NAME_STR_LEN << " characters.";
- mesg = temp_error.str();
- return false;
- }
-
- LLString::format_map_t args;
- args["[MESSAGE]"] = mConfirmGroupCreateStr;
- gViewerWindow->alertXml("GenericAlertYesCancel", args,
- createGroupCallback,this);
+ // Validate the group name length.
+ S32 group_name_len = mGroupNameEditor->getText().size();
+ if ( group_name_len < DB_GROUP_NAME_MIN_LEN
+ || group_name_len > DB_GROUP_NAME_STR_LEN)
+ {
+ std::ostringstream temp_error;
+ temp_error << "A group name must be between " << DB_GROUP_NAME_MIN_LEN
+ << " and " << DB_GROUP_NAME_STR_LEN << " characters.";
+ mesg = temp_error.str();
+ return false;
+ }
- return false;
- }
+ LLString::format_map_t args;
+ args["[MESSAGE]"] = mConfirmGroupCreateStr;
+ gViewerWindow->alertXml("GenericAlertYesCancel", args,
+ createGroupCallback,this);
- LLGroupMgrGroupData* gdatap = gGroupMgr->getGroupData(mGroupID);
+ return false;
+ }
- if (!gdatap)
- {
- mesg = "No group data found for group ";
- mesg.append(mGroupID.asString());
- return false;
- }
+ LLGroupMgrGroupData* gdatap = gGroupMgr->getGroupData(mGroupID);
- bool can_change_ident = false;
- bool can_change_member_opts = false;
- can_change_ident = gAgent.hasPowerInGroup(mGroupID,GP_GROUP_CHANGE_IDENTITY);
- can_change_member_opts = gAgent.hasPowerInGroup(mGroupID,GP_MEMBER_OPTIONS);
+ if (!gdatap)
+ {
+ mesg = "No group data found for group ";
+ mesg.append(mGroupID.asString());
+ return false;
+ }
+ bool can_change_ident = false;
+ bool can_change_member_opts = false;
+ can_change_ident = gAgent.hasPowerInGroup(mGroupID,GP_GROUP_CHANGE_IDENTITY);
+ can_change_member_opts = gAgent.hasPowerInGroup(mGroupID,GP_MEMBER_OPTIONS);
- if (can_change_ident)
- {
- if (mCtrlPublishOnWeb) gdatap->mAllowPublish = mCtrlPublishOnWeb->get();
- if (mEditCharter) gdatap->mCharter = mEditCharter->getText();
- if (mInsignia) gdatap->mInsigniaID = mInsignia->getImageAssetID();
- if (mCtrlMature)
+ if (can_change_ident)
{
- if (gAgent.mAccess > SIM_ACCESS_PG)
+ if (mEditCharter) gdatap->mCharter = mEditCharter->getText();
+ if (mInsignia) gdatap->mInsigniaID = mInsignia->getImageAssetID();
+ if (mCtrlMature)
{
- gdatap->mMaturePublish = mCtrlMature->get();
+ if (gAgent.mAccess > SIM_ACCESS_PG)
+ {
+ gdatap->mMaturePublish = mCtrlMature->get();
+ }
+ else
+ {
+ gdatap->mMaturePublish = FALSE;
+ }
}
- else
+ if (mCtrlShowInGroupList) gdatap->mShowInList = mCtrlShowInGroupList->get();
+ }
+
+ if (can_change_member_opts)
+ {
+ if (mCtrlOpenEnrollment) gdatap->mOpenEnrollment = mCtrlOpenEnrollment->get();
+ if (mCtrlEnrollmentFee && mSpinEnrollmentFee)
{
- gdatap->mMaturePublish = FALSE;
+ gdatap->mMembershipFee = (mCtrlEnrollmentFee->get()) ?
+ (S32) mSpinEnrollmentFee->get() : 0;
}
}
- if (mCtrlShowInGroupList) gdatap->mShowInList = mCtrlShowInGroupList->get();
- }
- if (can_change_member_opts)
- {
- if (mCtrlOpenEnrollment) gdatap->mOpenEnrollment = mCtrlOpenEnrollment->get();
- if (mCtrlEnrollmentFee && mSpinEnrollmentFee)
+ if (can_change_ident || can_change_member_opts)
{
- gdatap->mMembershipFee = (mCtrlEnrollmentFee->get()) ?
- (S32) mSpinEnrollmentFee->get() : 0;
+ gGroupMgr->sendUpdateGroupInfo(mGroupID);
}
+ notifyObservers();
}
- if (can_change_ident || can_change_member_opts)
- {
- gGroupMgr->sendUpdateGroupInfo(mGroupID);
- }
-
- if (mCtrlReceiveNotices) gAgent.setGroupAcceptNotices(mGroupID, mCtrlReceiveNotices->get());
+ BOOL receive_notices = false;
+ BOOL list_in_profile = false;
+ if (mCtrlReceiveNotices)
+ receive_notices = mCtrlReceiveNotices->get();
+ if (mCtrlListGroup)
+ list_in_profile = mCtrlListGroup->get();
+ gAgent.setUserGroupFlags(mGroupID, receive_notices, list_in_profile);
mChanged = FALSE;
- notifyObservers();
return true;
}
@@ -521,7 +525,7 @@ void LLPanelGroupGeneral::createGroupCallback(S32 option, void* userdata)
self->mInsignia->getImageAssetID(),
enrollment_fee,
self->mCtrlOpenEnrollment->get(),
- self->mCtrlPublishOnWeb->get(),
+ false,
self->mCtrlMature->get());
}
@@ -607,11 +611,6 @@ void LLPanelGroupGeneral::update(LLGroupChange gc)
mCtrlShowInGroupList->set(gdatap->mShowInList);
mCtrlShowInGroupList->setEnabled(mAllowEdit && can_change_ident);
}
- if (mCtrlPublishOnWeb)
- {
- mCtrlPublishOnWeb->set(gdatap->mAllowPublish);
- mCtrlPublishOnWeb->setEnabled(mAllowEdit && can_change_ident);
- }
if (mCtrlMature)
{
mCtrlMature->set(gdatap->mMaturePublish);
diff --git a/indra/newview/llpanelgroupgeneral.h b/indra/newview/llpanelgroupgeneral.h
index 76a4d791e1..a8f10b04ef 100644
--- a/indra/newview/llpanelgroupgeneral.h
+++ b/indra/newview/llpanelgroupgeneral.h
@@ -44,6 +44,7 @@ public:
private:
static void onCommitAny(LLUICtrl* ctrl, void* data);
+ static void onCommitUserOnly(LLUICtrl* ctrl, void* data);
static void onCommitTitle(LLUICtrl* ctrl, void* data);
static void onCommitEnrollment(LLUICtrl* ctrl, void* data);
static void onClickJoin(void* userdata);
@@ -76,12 +77,12 @@ private:
// Options
LLCheckBoxCtrl *mCtrlShowInGroupList;
- LLCheckBoxCtrl *mCtrlPublishOnWeb;
LLCheckBoxCtrl *mCtrlMature;
LLCheckBoxCtrl *mCtrlOpenEnrollment;
LLCheckBoxCtrl *mCtrlEnrollmentFee;
LLSpinCtrl *mSpinEnrollmentFee;
LLCheckBoxCtrl *mCtrlReceiveNotices;
+ LLCheckBoxCtrl *mCtrlListGroup;
LLTextBox *mActiveTitleLabel;
LLComboBox *mComboActiveTitle;
diff --git a/indra/newview/llpanelpermissions.cpp b/indra/newview/llpanelpermissions.cpp
index d0061e281e..133173b02d 100644
--- a/indra/newview/llpanelpermissions.cpp
+++ b/indra/newview/llpanelpermissions.cpp
@@ -84,6 +84,8 @@ BOOL LLPanelPermissions::postBuild()
this->childSetCommitCallback("checkbox next owner can copy",LLPanelPermissions::onCommitNextOwnerCopy,this);
this->childSetCommitCallback("checkbox next owner can transfer",LLPanelPermissions::onCommitNextOwnerTransfer,this);
this->childSetCommitCallback("clickaction",LLPanelPermissions::onCommitClickAction,this);
+ this->childSetCommitCallback("search_check",LLPanelPermissions::onCommitIncludeInSearch,this);
+
LLTextBox* LabelGroupNameRectProxy = gUICtrlFactory->getTextBoxByName(this,"Group Name Proxy");
if(LabelGroupNameRectProxy )
@@ -197,6 +199,10 @@ void LLPanelPermissions::refresh()
//checkbox for sale
childSetValue("checkbox for sale",FALSE);
childSetEnabled("checkbox for sale",false);
+
+ //checkbox include in search
+ childSetValue("search_check", FALSE);
+ childSetEnabled("search_check", false);
LLRadioGroup* RadioSaleType = gUICtrlFactory->getRadioGroupByName(this,"sale type");
if(RadioSaleType)
@@ -730,8 +736,15 @@ void LLPanelPermissions::refresh()
childSetTentative("checkbox for sale",false);
}
- // Click action (touch, sit, buy)
+ // Check search status of objects
BOOL all_volume = gSelectMgr->selectionAllPCode( LL_PCODE_VOLUME );
+ bool include_in_search;
+ bool all_include_in_search = gSelectMgr->selectionGetIncludeInSearch(&include_in_search);
+ childSetEnabled("search_check", is_perm_modify && all_volume);
+ childSetValue("search_check", include_in_search);
+ childSetTentative("search_check", ! all_include_in_search);
+
+ // Click action (touch, sit, buy)
U8 click_action = 0;
if (gSelectMgr->selectionGetClickAction(&click_action))
{
@@ -1044,3 +1057,13 @@ void LLPanelPermissions::onCommitClickAction(LLUICtrl* ctrl, void*)
}
gSelectMgr->selectionSetClickAction(click_action);
}
+
+// static
+void LLPanelPermissions::onCommitIncludeInSearch(LLUICtrl* ctrl, void*)
+{
+ LLCheckBoxCtrl* box = (LLCheckBoxCtrl*)ctrl;
+ llassert(box);
+
+ gSelectMgr->selectionSetIncludeInSearch(box->get());
+}
+
diff --git a/indra/newview/llpanelpermissions.h b/indra/newview/llpanelpermissions.h
index 286a66f397..48c52b56b9 100644
--- a/indra/newview/llpanelpermissions.h
+++ b/indra/newview/llpanelpermissions.h
@@ -75,6 +75,7 @@ protected:
void setAllSaleInfo();
static void onCommitClickAction(LLUICtrl* ctrl, void*);
+ static void onCommitIncludeInSearch(LLUICtrl* ctrl, void*);
protected:
LLNameBox* mLabelGroupName; // group name
diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp
index 341dec4115..2e67112e3e 100644
--- a/indra/newview/llselectmgr.cpp
+++ b/indra/newview/llselectmgr.cpp
@@ -1997,6 +1997,43 @@ BOOL LLSelectMgr::selectionGetMaterial(U8 *out_material)
return identical;
}
+
+bool LLSelectMgr::selectionGetIncludeInSearch(bool* include_in_search_out)
+{
+ LLViewerObject *object = mSelectedObjects->getFirstRootObject();
+ if (!object) return FALSE;
+
+ bool include_in_search = object->getIncludeInSearch();
+
+ bool identical = true;
+ for ( object = mSelectedObjects->getFirstRootObject(); object; object = mSelectedObjects->getNextRootObject() )
+ {
+ if ( include_in_search != object->getIncludeInSearch())
+ {
+ identical = false;
+ break;
+ }
+ }
+
+ *include_in_search_out = include_in_search;
+ return identical;
+}
+
+void LLSelectMgr::selectionSetIncludeInSearch(bool include_in_search)
+{
+ LLViewerObject* object = NULL;
+ for ( object = mSelectedObjects->getFirstRootObject(); object; object = mSelectedObjects->getNextRootObject() )
+ {
+ object->setIncludeInSearch(include_in_search);
+ }
+ sendListToRegions(
+ "ObjectIncludeInSearch",
+ packAgentAndSessionID,
+ packObjectIncludeInSearch,
+ &include_in_search,
+ SEND_ONLY_ROOTS);
+}
+
BOOL LLSelectMgr::selectionGetClickAction(U8 *out_action)
{
LLViewerObject *object = mSelectedObjects->getFirstObject();
@@ -4022,6 +4059,13 @@ void LLSelectMgr::packObjectClickAction(LLSelectNode* node, void *user_data)
gMessageSystem->addU8("ClickAction", node->getObject()->getClickAction());
}
+void LLSelectMgr::packObjectIncludeInSearch(LLSelectNode* node, void *user_data)
+{
+ gMessageSystem->nextBlockFast(_PREHASH_ObjectData);
+ gMessageSystem->addU32Fast(_PREHASH_ObjectLocalID, node->getObject()->getLocalID() );
+ gMessageSystem->addBOOL("IncludeInSearch", node->getObject()->getIncludeInSearch());
+}
+
// static
void LLSelectMgr::packObjectLocalID(LLSelectNode* node, void *)
{
diff --git a/indra/newview/llselectmgr.h b/indra/newview/llselectmgr.h
index 4986843798..1dc9bce4d5 100644
--- a/indra/newview/llselectmgr.h
+++ b/indra/newview/llselectmgr.h
@@ -334,6 +334,7 @@ public:
BOOL selectionGetFullbright(U8 *fullbright);// true if all selected tes have same
bool selectionGetMediaType(U8 *media_type); // true if all selected tes have same
BOOL selectionGetClickAction(U8* action);
+ bool selectionGetIncludeInSearch(bool* include_in_search_out); // true if all selected objects have same
void selectionSetMaterial(U8 material);
void selectionSetImage(const LLUUID& imageid); // could be item or asset id
@@ -348,6 +349,7 @@ public:
void selectionSetFullbright( U8 fullbright );
void selectionSetMediaTypeAndURL( U8 media_type, const std::string& media_url );
void selectionSetClickAction(U8 action);
+ void selectionSetIncludeInSearch(bool include_in_search);
void selectionSetObjectPermissions(U8 perm_field, BOOL set, U32 perm_mask, BOOL override = FALSE);
void selectionSetObjectName(const LLString& name);
@@ -498,6 +500,7 @@ private:
static void packObjectIDAndRotation( LLSelectNode* node, void *);
static void packObjectLocalID(LLSelectNode* node, void *);
static void packObjectClickAction(LLSelectNode* node, void* data);
+ static void packObjectIncludeInSearch(LLSelectNode* node, void* data);
static void packObjectName(LLSelectNode* node, void* user_data);
static void packObjectDescription(LLSelectNode* node, void* user_data);
static void packObjectCategory(LLSelectNode* node, void* user_data);
diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp
index 2d39bec6a7..fb8d7af004 100644
--- a/indra/newview/llviewerobject.cpp
+++ b/indra/newview/llviewerobject.cpp
@@ -4671,6 +4671,23 @@ void LLViewerObject::markForUpdate(BOOL priority)
}
}
+bool LLViewerObject::getIncludeInSearch() const
+{
+ return ((mFlags & FLAGS_INCLUDE_IN_SEARCH) != 0);
+}
+
+void LLViewerObject::setIncludeInSearch(bool include_in_search)
+{
+ if (include_in_search)
+ {
+ mFlags |= FLAGS_INCLUDE_IN_SEARCH;
+ }
+ else
+ {
+ mFlags &= ~FLAGS_INCLUDE_IN_SEARCH;
+ }
+}
+
void LLViewerObject::setRegion(LLViewerRegion *regionp)
{
llassert(regionp);
diff --git a/indra/newview/llviewerobject.h b/indra/newview/llviewerobject.h
index a7cc4c818c..1ec3c4c6bc 100644
--- a/indra/newview/llviewerobject.h
+++ b/indra/newview/llviewerobject.h
@@ -407,6 +407,9 @@ public:
inline BOOL flagCameraSource() const { return ((mFlags & FLAGS_CAMERA_SOURCE) != 0); }
inline BOOL flagCameraDecoupled() const { return ((mFlags & FLAGS_CAMERA_DECOUPLED) != 0); }
+ bool getIncludeInSearch() const;
+ void setIncludeInSearch(bool include_in_search);
+
// Does "open" object menu item apply?
BOOL allowOpen() const;
diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp
index b7167b7170..8f2362015b 100644
--- a/indra/newview/llviewerregion.cpp
+++ b/indra/newview/llviewerregion.cpp
@@ -1258,6 +1258,7 @@ void LLViewerRegion::setSeedCapability(const std::string& url)
capabilityNames.append("ProvisionVoiceAccountRequest");
capabilityNames.append("ServerReleaseNotes");
capabilityNames.append("CopyInventoryFromNotecard");
+ capabilityNames.append("DispatchRegionInfo");
llinfos << "posting to seed " << url << llendl;
diff --git a/scripts/messages/message_template.msg b/scripts/messages/message_template.msg
index 4572941248..983be8a11d 100644
--- a/scripts/messages/message_template.msg
+++ b/scripts/messages/message_template.msg
@@ -3783,6 +3783,10 @@ version 2.0
{ GroupName Variable 1 }
{ GroupInsigniaID LLUUID }
}
+ {
+ NewGroupData Single
+ { ListInProfile BOOL } // whether group displays in profile
+ }
}
@@ -7823,6 +7827,10 @@ version 2.0
{ GroupID LLUUID }
{ AcceptNotices BOOL }
}
+ {
+ NewData Single
+ { ListInProfile BOOL }
+ }
}
// GroupRoleDataRequest
@@ -8140,7 +8148,7 @@ version 2.0
// dataserver -> simulator -> viewer
// reliable
{
- AgentGroupDataUpdate Low 389 Trusted Zerocoded
+ AgentGroupDataUpdate Low 389 Trusted Zerocoded UDPDeprecated
{
AgentData Single
{ AgentID LLUUID }
@@ -8763,3 +8771,18 @@ version 2.0
}
}
+// ObjectIncludeInSearch
+// viewer -> simulator
+{
+ ObjectIncludeInSearch Low 424 NotTrusted Unencoded
+ {
+ AgentData Single
+ { AgentID LLUUID }
+ { SessionID LLUUID }
+ }
+ {
+ ObjectData Variable
+ { ObjectLocalID U32 }
+ { IncludeInSearch BOOL }
+ }
+}