parent
84ea29c69c
commit
b2595c369f
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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; }
|
||||
|
||||
//
|
||||
|
|
|
|||
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -301,6 +301,7 @@ public:
|
|||
static void onClickPublishHelp(void*);
|
||||
|
||||
virtual BOOL postBuild();
|
||||
virtual void draw();
|
||||
|
||||
protected:
|
||||
LLCheckBoxCtrl* mCheckEditObjects;
|
||||
|
|
|
|||
|
|
@ -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,51 +677,77 @@ 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));
|
||||
|
||||
snprintf(buffer, MAX_STRING, "%s", (childGetValue("allow_land_resell_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));
|
||||
|
||||
value = (F32)childGetValue("object_bonus_spin").asReal();
|
||||
snprintf(buffer, MAX_STRING, "%f", value); /* 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("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 */
|
||||
// First try using a Cap. If that fails use the old method.
|
||||
LLSD body;
|
||||
std::string url = gAgent.getRegion()->getCapability("DispatchRegionInfo");
|
||||
if (!url.empty())
|
||||
{
|
||||
gViewerWindow->alertXml("RegionMaturityChange");
|
||||
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("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));
|
||||
|
||||
snprintf(buffer, MAX_STRING, "%s", (childGetValue("allow_land_resell_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));
|
||||
|
||||
value = (F32)childGetValue("object_bonus_spin").asReal();
|
||||
snprintf(buffer, MAX_STRING, "%f", value); /* 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("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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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";
|
||||
|
|
|
|||
|
|
@ -232,6 +232,7 @@ public:
|
|||
BOOL mOpenEnrollment;
|
||||
S32 mMembershipFee;
|
||||
BOOL mAllowPublish;
|
||||
BOOL mListInProfile;
|
||||
BOOL mMaturePublish;
|
||||
BOOL mChanged;
|
||||
S32 mMemberCount;
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -322,7 +322,7 @@ void LLPanelGroup::tabChanged()
|
|||
if ( mApplyBtn )
|
||||
{
|
||||
LLString mesg;
|
||||
mApplyBtn->setEnabled(mAllowEdit && mCurrentTab->needsApply(mesg));
|
||||
mApplyBtn->setEnabled(mCurrentTab->needsApply(mesg));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
@ -239,6 +242,15 @@ void LLPanelGroupGeneral::onCommitAny(LLUICtrl* ctrl, void* data)
|
|||
self->notifyObservers();
|
||||
}
|
||||
|
||||
// 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)
|
||||
{
|
||||
|
|
@ -339,16 +351,6 @@ void LLPanelGroupGeneral::joinDlgCB(S32 which, void *userdata)
|
|||
gGroupMgr->sendGroupMemberJoin(self->mGroupID);
|
||||
}
|
||||
|
||||
// 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)
|
||||
{
|
||||
|
|
@ -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();
|
||||
// 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;
|
||||
}
|
||||
|
||||
LLString::format_map_t args;
|
||||
args["[MESSAGE]"] = mConfirmGroupCreateStr;
|
||||
gViewerWindow->alertXml("GenericAlertYesCancel", args,
|
||||
createGroupCallback,this);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
LLString::format_map_t args;
|
||||
args["[MESSAGE]"] = mConfirmGroupCreateStr;
|
||||
gViewerWindow->alertXml("GenericAlertYesCancel", args,
|
||||
createGroupCallback,this);
|
||||
LLGroupMgrGroupData* gdatap = gGroupMgr->getGroupData(mGroupID);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
LLGroupMgrGroupData* gdatap = gGroupMgr->getGroupData(mGroupID);
|
||||
|
||||
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 (!gdatap)
|
||||
{
|
||||
if (gAgent.mAccess > SIM_ACCESS_PG)
|
||||
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 (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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -75,6 +75,7 @@ protected:
|
|||
void setAllSaleInfo();
|
||||
|
||||
static void onCommitClickAction(LLUICtrl* ctrl, void*);
|
||||
static void onCommitIncludeInSearch(LLUICtrl* ctrl, void*);
|
||||
|
||||
protected:
|
||||
LLNameBox* mLabelGroupName; // group name
|
||||
|
|
|
|||
|
|
@ -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 *)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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 }
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue