diff options
Diffstat (limited to 'indra/newview')
-rw-r--r-- | indra/newview/llappviewer.cpp | 1 | ||||
-rw-r--r-- | indra/newview/llfloateravatartextures.cpp | 2 | ||||
-rw-r--r-- | indra/newview/llfloaterland.cpp | 713 | ||||
-rw-r--r-- | indra/newview/llfloaterland.h | 82 | ||||
-rw-r--r-- | indra/newview/llfloaterregioninfo.cpp | 52 | ||||
-rw-r--r-- | indra/newview/llfloaterregioninfo.h | 4 | ||||
-rw-r--r-- | indra/newview/llpanelavatar.cpp | 8 | ||||
-rw-r--r-- | indra/newview/llstatusbar.cpp | 2 | ||||
-rw-r--r-- | indra/newview/lltexturectrl.cpp | 8 | ||||
-rw-r--r-- | indra/newview/llviewermessage.cpp | 33 | ||||
-rw-r--r-- | indra/newview/llviewermessage.h | 2 | ||||
-rw-r--r-- | indra/newview/llviewerparcelmgr.cpp | 13 | ||||
-rw-r--r-- | indra/newview/llweb.cpp | 21 | ||||
-rw-r--r-- | indra/newview/llweb.h | 16 |
14 files changed, 456 insertions, 501 deletions
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index c763ff928c..fc8d44e990 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -1137,6 +1137,7 @@ bool LLAppViewer::init() ui_audio_callback, &LLUI::sGLScaleFactor); + LLWeb::initClass(); // do this after LLUI gUICtrlFactory->setupPaths(); // update paths with correct language set ///////////////////////////////////////////////// diff --git a/indra/newview/llfloateravatartextures.cpp b/indra/newview/llfloateravatartextures.cpp index 904f47de3c..64dc96807c 100644 --- a/indra/newview/llfloateravatartextures.cpp +++ b/indra/newview/llfloateravatartextures.cpp @@ -110,7 +110,7 @@ static void update_texture_ctrl(LLVOAvatar* avatarp, if (id == IMG_DEFAULT_AVATAR) { ctrl->setImageAssetID(LLUUID::null); - ctrl->setToolTip("IMG_DEFAULT_AVATAR"); + ctrl->setToolTip(LLString("IMG_DEFAULT_AVATAR")); } else { diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp index 283b3f45fa..543dd94f3b 100644 --- a/indra/newview/llfloaterland.cpp +++ b/indra/newview/llfloaterland.cpp @@ -239,7 +239,6 @@ LLFloaterLand::LLFloaterLand() factory_map["land_options_panel"] = LLCallbackMap(createPanelLandOptions, this); factory_map["land_media_panel"] = LLCallbackMap(createPanelLandMedia, this); factory_map["land_access_panel"] = LLCallbackMap(createPanelLandAccess, this); - factory_map["land_ban_panel"] = LLCallbackMap(createPanelLandBan, this); gUICtrlFactory->buildFloater(this, "floater_about_land.xml", &factory_map); @@ -271,7 +270,6 @@ void LLFloaterLand::refresh() mPanelOptions->refresh(); mPanelMedia->refresh(); mPanelAccess->refresh(); - mPanelBan->refresh(); } @@ -326,15 +324,6 @@ void* LLFloaterLand::createPanelLandAccess(void* data) return self->mPanelAccess; } -// static -void* LLFloaterLand::createPanelLandBan(void* data) -{ - LLFloaterLand* self = (LLFloaterLand*)data; - self->mPanelBan = new LLPanelLandBan(self->mParcel); - return self->mPanelBan; -} - - //--------------------------------------------------------------------------- // LLPanelLandGeneral //--------------------------------------------------------------------------- @@ -2558,35 +2547,27 @@ LLPanelLandAccess::LLPanelLandAccess(LLParcelSelectionHandle& parcel) BOOL LLPanelLandAccess::postBuild() { - - - mCheckGroup = LLUICtrlFactory::getCheckBoxByName(this, "GroupCheck"); + childSetCommitCallback("public_access", onCommitAny, this); + childSetCommitCallback("limit_payment", onCommitAny, this); + childSetCommitCallback("limit_age_verified", onCommitAny, this); childSetCommitCallback("GroupCheck", onCommitAny, this); - - mCheckAccess = LLUICtrlFactory::getCheckBoxByName(this, "AccessCheck"); - childSetCommitCallback("AccessCheck", onCommitAny, this); - - mListAccess = LLUICtrlFactory::getNameListByName(this, "AccessList"); - mListAccess->sortByColumn(0, TRUE); // ascending - - mBtnAddAccess = LLUICtrlFactory::getButtonByName(this, "Add..."); - - mBtnAddAccess->setClickedCallback(onClickAdd, this); - - mBtnRemoveAccess = LLUICtrlFactory::getButtonByName(this, "Remove"); - - mBtnRemoveAccess->setClickedCallback(onClickRemove, this); - - mCheckPass = LLUICtrlFactory::getCheckBoxByName(this, "PassCheck"); childSetCommitCallback("PassCheck", onCommitAny, this); - - - mSpinPrice = LLUICtrlFactory::getSpinnerByName(this, "PriceSpin"); + childSetCommitCallback("pass_combo", onCommitAny, this); childSetCommitCallback("PriceSpin", onCommitAny, this); - - mSpinHours = LLUICtrlFactory::getSpinnerByName(this, "HoursSpin"); childSetCommitCallback("HoursSpin", onCommitAny, this); + childSetAction("add_allowed", onClickAddAccess, this); + childSetAction("remove_allowed", onClickRemoveAccess, this); + childSetAction("add_banned", onClickAddBanned, this); + childSetAction("remove_banned", onClickRemoveBanned, this); + + mListAccess = LLUICtrlFactory::getNameListByName(this, "AccessList"); + if (mListAccess) + mListAccess->sortByColumn(0, TRUE); // ascending + + mListBanned = LLUICtrlFactory::getNameListByName(this, "BannedList"); + if (mListBanned) + mListBanned->sortByColumn(0, TRUE); // ascending return TRUE; } @@ -2598,106 +2579,241 @@ LLPanelLandAccess::~LLPanelLandAccess() void LLPanelLandAccess::refresh() { - mListAccess->deleteAllItems(); - + if (mListAccess) + mListAccess->deleteAllItems(); + if (mListBanned) + mListBanned->deleteAllItems(); + LLParcel *parcel = mParcel->getParcel(); - + + // Display options if (parcel) { - // Display options + BOOL use_access_list = parcel->getParcelFlag(PF_USE_ACCESS_LIST); BOOL use_group = parcel->getParcelFlag(PF_USE_ACCESS_GROUP); - mCheckGroup->set( use_group ); + BOOL public_access = !use_access_list && !use_group; + + childSetValue("public_access", public_access ); + childSetValue("GroupCheck", use_group ); char group_name[MAX_STRING]; /*Flawfinder: ignore*/ gCacheName->getGroupName(parcel->getGroupID(), group_name); - mCheckGroup->setLabelArg( "[GROUP]", LLString(group_name) ); - - S32 count = parcel->mAccessList.size(); - - BOOL use_list = parcel->getParcelFlag(PF_USE_ACCESS_LIST); - mCheckAccess->set( use_list ); - mCheckAccess->setLabelArg( "[LISTED]", llformat("%d",count)); - mCheckAccess->setLabelArg( "[MAX]", llformat("%d",PARCEL_MAX_ACCESS_LIST)); - - access_map_const_iterator cit = parcel->mAccessList.begin(); - access_map_const_iterator end = parcel->mAccessList.end(); - - for (; cit != end; ++cit) + childSetLabelArg("GroupCheck", "[GROUP]", LLString(group_name) ); + + // Allow list { - const LLAccessEntry& entry = (*cit).second; - LLString suffix; - if (entry.mTime != 0) + S32 count = parcel->mAccessList.size(); + childSetToolTipArg("AccessList", "[LISTED]", llformat("%d",count)); + childSetToolTipArg("AccessList", "[MAX]", llformat("%d",PARCEL_MAX_ACCESS_LIST)); + + // *TODO: Translate + for (access_map_const_iterator cit = parcel->mAccessList.begin(); + cit != parcel->mAccessList.end(); ++cit) { - S32 now = time(NULL); - S32 seconds = entry.mTime - now; - if (seconds < 0) seconds = 0; - suffix.assign(" ("); - if (seconds >= 120) + const LLAccessEntry& entry = (*cit).second; + LLString suffix; + if (entry.mTime != 0) { - char buf[30]; /*Flawfinder: ignore*/ - snprintf(buf, sizeof(buf), "%d minutes", (seconds/60)); /* Flawfinder: ignore */ - suffix.append(buf); + S32 now = time(NULL); + S32 seconds = entry.mTime - now; + if (seconds < 0) seconds = 0; + suffix.assign(" ("); + if (seconds >= 120) + { + std::string buf = llformat("%d minutes", (seconds/60)); + suffix.append(buf); + } + else if (seconds >= 60) + { + suffix.append("1 minute"); + } + else + { + std::string buf = llformat("%d seconds", seconds); + suffix.append(buf); + } + suffix.append(" remaining)"); } - else if (seconds >= 60) - { - suffix.append("1 minute"); - } - else - { - char buf[30]; /*Flawfinder: ignore*/ - snprintf(buf, sizeof(buf), "%d seconds", seconds); /* Flawfinder: ignore */ - suffix.append(buf); - } - suffix.append(" remaining)"); + if (mListAccess) + mListAccess->addNameItem(entry.mID, ADD_SORTED, TRUE, suffix); } - mListAccess->addNameItem(entry.mID, ADD_SORTED, TRUE, suffix); } - BOOL can_manage_allowed = LLViewerParcelMgr::isParcelModifiableByAgent(parcel, GP_LAND_MANAGE_ALLOWED); - - BOOL enable_add = can_manage_allowed && (count < PARCEL_MAX_ACCESS_LIST); - mBtnAddAccess->setEnabled(enable_add); + // Ban List + { + S32 count = parcel->mBanList.size(); - BOOL enable_remove = can_manage_allowed && (count > 0); - mBtnRemoveAccess->setEnabled(enable_remove); + childSetToolTipArg("BannedList", "[LISTED]", llformat("%d",count)); + childSetToolTipArg("BannedList", "[MAX]", llformat("%d",PARCEL_MAX_ACCESS_LIST)); - // Can only sell passes when limiting the access. - BOOL can_manage_passes = LLViewerParcelMgr::isParcelModifiableByAgent(parcel, GP_LAND_MANAGE_PASSES); - mCheckPass->setEnabled( (use_group || use_list) && can_manage_passes ); + for (access_map_const_iterator cit = parcel->mBanList.begin(); + cit != parcel->mBanList.end(); ++cit) + { + const LLAccessEntry& entry = (*cit).second; + LLString suffix; + if (entry.mTime != 0) + { + S32 now = time(NULL); + S32 seconds = entry.mTime - now; + if (seconds < 0) seconds = 0; + suffix.assign(" ("); + if (seconds >= 120) + { + std::string buf = llformat("%d minutes", (seconds/60)); + suffix.append(buf); + } + else if (seconds >= 60) + { + suffix.append("1 minute"); + } + else + { + std::string buf = llformat("%d seconds", seconds); + suffix.append(buf); + } + suffix.append(" remaining)"); + } + mListBanned->addNameItem(entry.mID, ADD_SORTED, TRUE, suffix); + } + } + if(parcel->getRegionDenyAnonymousOverride()) + { + childSetValue("limit_payment", TRUE); + } + else + { + childSetValue("limit_payment", (parcel->getParcelFlag(PF_DENY_ANONYMOUS))); + } + if(parcel->getRegionDenyAgeUnverifiedOverride()) + { + childSetValue("limit_age_verified", TRUE); + } + else + { + childSetValue("limit_age_verified", (parcel->getParcelFlag(PF_DENY_AGEUNVERIFIED))); + } + BOOL use_pass = parcel->getParcelFlag(PF_USE_PASS_LIST); - mCheckPass->set( use_pass ); - - BOOL enable_pass = can_manage_passes && use_pass; - mSpinPrice->setEnabled( enable_pass ); - mSpinHours->setEnabled( enable_pass ); - + childSetValue("PassCheck", use_pass ); + LLCtrlSelectionInterface* passcombo = childGetSelectionInterface("pass_combo"); + if (passcombo) + { + if (public_access || !use_pass || !use_group) + { + passcombo->selectByValue("anyone"); + } + } + S32 pass_price = parcel->getPassPrice(); - mSpinPrice->set( F32(pass_price) ); + childSetValue( "PriceSpin", (F32)pass_price ); F32 pass_hours = parcel->getPassHours(); - mSpinHours->set( pass_hours ); - - mCheckGroup->setEnabled( can_manage_allowed ); - mCheckAccess->setEnabled( can_manage_allowed ); - + childSetValue( "HoursSpin", pass_hours ); } else { - mCheckGroup->set(FALSE); - mCheckGroup->setLabelArg( "[GROUP]", LLString::null ); - mCheckAccess->set(FALSE); - mCheckAccess->setLabelArg( "[LISTED]", llformat("%d",0)); - mBtnAddAccess->setEnabled(FALSE); - mBtnRemoveAccess->setEnabled(FALSE); - mSpinPrice->set((F32)PARCEL_PASS_PRICE_DEFAULT); - mSpinPrice->setEnabled(FALSE); - mSpinHours->set( PARCEL_PASS_HOURS_DEFAULT ); - mSpinHours->setEnabled(FALSE); - mCheckGroup->setEnabled(FALSE); - mCheckAccess->setEnabled(FALSE); + childSetValue("public_access", FALSE); + childSetValue("limit_payment", FALSE); + childSetValue("limit_age_verified", FALSE); + childSetValue("GroupCheck", FALSE); + childSetLabelArg("GroupCheck", "[GROUP]", LLString::null ); + childSetValue("PassCheck", FALSE); + childSetValue("PriceSpin", (F32)PARCEL_PASS_PRICE_DEFAULT); + childSetValue( "HoursSpin", PARCEL_PASS_HOURS_DEFAULT ); + childSetToolTipArg("AccessList", "[LISTED]", llformat("%d",0)); + childSetToolTipArg("AccessList", "[MAX]", llformat("%d",0)); + childSetToolTipArg("BannedList", "[LISTED]", llformat("%d",0)); + childSetToolTipArg("BannedList", "[MAX]", llformat("%d",0)); + } +} + +void LLPanelLandAccess::refresh_ui() +{ + childSetEnabled("public_access", FALSE); + childSetEnabled("limit_payment", FALSE); + childSetEnabled("limit_age_verified", FALSE); + childSetEnabled("GroupCheck", FALSE); + childSetEnabled("PassCheck", FALSE); + childSetEnabled("pass_combo", FALSE); + childSetEnabled("PriceSpin", FALSE); + childSetEnabled("HoursSpin", FALSE); + childSetEnabled("AccessList", FALSE); + childSetEnabled("BannedList", FALSE); + + LLParcel *parcel = mParcel->getParcel(); + if (parcel) + { + BOOL can_manage_allowed = LLViewerParcelMgr::isParcelModifiableByAgent(parcel, GP_LAND_MANAGE_ALLOWED); + BOOL can_manage_banned = LLViewerParcelMgr::isParcelModifiableByAgent(parcel, GP_LAND_MANAGE_BANNED); + + childSetEnabled("public_access", can_manage_allowed); + BOOL public_access = childGetValue("public_access").asBoolean(); + if (public_access) + { + bool override = false; + if(parcel->getRegionDenyAnonymousOverride()) + { + override = true; + childSetEnabled("limit_payment", FALSE); + } + else + { + childSetEnabled("limit_payment", can_manage_allowed); + } + if(parcel->getRegionDenyAgeUnverifiedOverride()) + { + override = true; + childSetEnabled("limit_age_verified", FALSE); + } + else + { + childSetEnabled("limit_age_verified", can_manage_allowed); + } + if (override) + { + childSetToolTip("Only Allow", getUIString("estate_override")); + } + else + { + childSetToolTip("Only Allow", LLString()); + } + childSetEnabled("GroupCheck", FALSE); + childSetEnabled("PassCheck", FALSE); + childSetEnabled("pass_combo", FALSE); + childSetEnabled("AccessList", FALSE); + } + else + { + childSetEnabled("limit_payment", FALSE); + childSetEnabled("limit_age_verified", FALSE); + char group_name[MAX_STRING]; /*Flawfinder: ignore*/ + if (gCacheName->getGroupName(parcel->getGroupID(), group_name)) + { + childSetEnabled("GroupCheck", can_manage_allowed); + } + BOOL group_access = childGetValue("GroupCheck").asBoolean(); + BOOL sell_passes = childGetValue("PassCheck").asBoolean(); + childSetEnabled("PassCheck", can_manage_allowed); + if (sell_passes) + { + childSetEnabled("pass_combo", group_access && can_manage_allowed); + childSetEnabled("PriceSpin", can_manage_allowed); + childSetEnabled("HoursSpin", can_manage_allowed); + } + } + childSetEnabled("AccessList", can_manage_allowed); + S32 allowed_list_count = parcel->mAccessList.size(); + childSetEnabled("add_allowed", can_manage_allowed && allowed_list_count < PARCEL_MAX_ACCESS_LIST); + childSetEnabled("remove_allowed", can_manage_allowed && allowed_list_count > 0); + + childSetEnabled("BannedList", can_manage_banned); + S32 banned_list_count = parcel->mBanList.size(); + childSetEnabled("add_banned", can_manage_banned && banned_list_count < PARCEL_MAX_ACCESS_LIST); + childSetEnabled("remove_banned", can_manage_banned && banned_list_count > 0); } } + // public void LLPanelLandAccess::refreshNames() @@ -2709,23 +2825,19 @@ void LLPanelLandAccess::refreshNames() { gCacheName->getGroupName(parcel->getGroupID(), group_name); } - mCheckGroup->setLabelArg("[GROUP]", LLString(group_name)); + childSetLabelArg("GroupCheck", "[GROUP]", LLString(group_name)); } // virtual void LLPanelLandAccess::draw() { + refresh_ui(); refreshNames(); LLPanel::draw(); } -void LLPanelLandAccess::onAccessLevelChange(LLUICtrl*, void *userdata) -{ - LLPanelLandAccess::onCommitAny(NULL, userdata); -} - // static void LLPanelLandAccess::onCommitAny(LLUICtrl *ctrl, void *userdata) { @@ -2738,27 +2850,53 @@ void LLPanelLandAccess::onCommitAny(LLUICtrl *ctrl, void *userdata) } // Extract data from UI - BOOL use_access_group = self->mCheckGroup->get(); - BOOL use_access_list = self->mCheckAccess->get(); - BOOL use_pass_list = self->mCheckPass->get(); - - - - // Must be limiting access to sell passes - if (!use_access_group && !use_access_list) + BOOL public_access = self->childGetValue("public_access").asBoolean(); + BOOL limit_payment = FALSE, limit_age_verified = FALSE; + BOOL use_access_group = FALSE; + BOOL use_access_list = FALSE; + BOOL use_pass_list = FALSE; + if (public_access) { - use_pass_list = FALSE; + use_access_list = FALSE; + limit_payment = self->childGetValue("limit_payment").asBoolean(); + limit_age_verified = self->childGetValue("limit_age_verified").asBoolean(); + } + else + { + use_access_list = TRUE; + use_access_group = self->childGetValue("GroupCheck").asBoolean(); + use_pass_list = self->childGetValue("PassCheck").asBoolean(); + if (use_access_group) + { + char group_name[MAX_STRING]; /*Flawfinder: ignore*/ + if (!gCacheName->getGroupName(parcel->getGroupID(), group_name)) + { + use_access_group = FALSE; + } + if (use_pass_list) + { + LLCtrlSelectionInterface* passcombo = self->childGetSelectionInterface("pass_combo"); + if (passcombo) + { + if (passcombo->getSimpleSelectedValue().asString() == "group") + { + use_access_list = FALSE; + } + } + } + } } - S32 pass_price = llfloor(self->mSpinPrice->get()); - F32 pass_hours = self->mSpinHours->get(); - - // Validate extracted data + S32 pass_price = llfloor((F32)self->childGetValue("PriceSpin").asReal()); + F32 pass_hours = (F32)self->childGetValue("HoursSpin").asReal(); // Push data into current parcel parcel->setParcelFlag(PF_USE_ACCESS_GROUP, use_access_group); parcel->setParcelFlag(PF_USE_ACCESS_LIST, use_access_list); parcel->setParcelFlag(PF_USE_PASS_LIST, use_pass_list); + parcel->setParcelFlag(PF_USE_BAN_LIST, TRUE); + parcel->setParcelFlag(PF_DENY_ANONYMOUS, limit_payment); + parcel->setParcelFlag(PF_DENY_AGEUNVERIFIED, limit_age_verified); parcel->setPassPrice( pass_price ); parcel->setPassHours( pass_hours ); @@ -2771,287 +2909,100 @@ void LLPanelLandAccess::onCommitAny(LLUICtrl *ctrl, void *userdata) } // static -void LLPanelLandAccess::onClickAdd(void* data) +void LLPanelLandAccess::onClickAddAccess(void* data) { LLPanelLandAccess* panelp = (LLPanelLandAccess*)data; - gFloaterView->getParentFloater(panelp)->addDependentFloater(LLFloaterAvatarPicker::show(callbackAvatarID, data) ); -} - -// static -void LLPanelLandAccess::callbackAvatarID(const std::vector<std::string>& names, const std::vector<LLUUID>& ids, void* userdata) -{ - LLPanelLandAccess* self = (LLPanelLandAccess*)userdata; - if (names.empty() || ids.empty()) return; - self->addAvatar(ids[0]); -} - - -void LLPanelLandAccess::addAvatar(LLUUID id) -{ - LLParcel* parcel = mParcel->getParcel(); - if (!parcel) return; - - parcel->addToAccessList(id, 0); - - gParcelMgr->sendParcelAccessListUpdate(AL_ACCESS); - - refresh(); + if (panelp) + { + gFloaterView->getParentFloater(panelp)->addDependentFloater(LLFloaterAvatarPicker::show(callbackAvatarCBAccess, data) ); + } } - // static -void LLPanelLandAccess::onClickRemove(void* data) +void LLPanelLandAccess::callbackAvatarCBAccess(const std::vector<std::string>& names, const std::vector<LLUUID>& ids, void* userdata) { - LLPanelLandAccess* self = (LLPanelLandAccess*)data; - if (!self) return; - - LLScrollListItem* item = self->mListAccess->getFirstSelected(); - if (!item) return; - - LLParcel* parcel = self->mParcel->getParcel(); - if (!parcel) return; - - const LLUUID& agent_id = item->getUUID(); - - parcel->removeFromAccessList(agent_id); - - gParcelMgr->sendParcelAccessListUpdate(AL_ACCESS); - - self->refresh(); -} - - - -//--------------------------------------------------------------------------- -// LLPanelLandBan -//--------------------------------------------------------------------------- -LLPanelLandBan::LLPanelLandBan(LLParcelSelectionHandle& parcel) -: LLPanel("land_ban_panel"), mParcel(parcel) -{ - -} - - - -BOOL LLPanelLandBan::postBuild() -{ - - mCheck = LLUICtrlFactory::getCheckBoxByName(this, "LandBanCheck"); - childSetCommitCallback("LandBanCheck", onCommitAny, this); - - mList = LLUICtrlFactory::getNameListByName(this, "LandBanList"); - mList->sortByColumn(0, TRUE); // ascending - - mBtnAdd = LLUICtrlFactory::getButtonByName(this, "Add..."); - - mBtnAdd->setClickedCallback(onClickAdd, this); - - mBtnRemove = LLUICtrlFactory::getButtonByName(this, "Remove"); - - mBtnRemove->setClickedCallback(onClickRemove, this); - - mCheckDenyAnonymous = LLUICtrlFactory::getCheckBoxByName(this, "DenyAnonymousCheck"); - childSetCommitCallback("DenyAnonymousCheck", onCommitAny, this); - - mCheckDenyIdentified = LLUICtrlFactory::getCheckBoxByName(this, "DenyIdentifiedCheck"); - childSetCommitCallback("DenyIdentifiedCheck", onCommitAny, this); - - mCheckDenyTransacted = LLUICtrlFactory::getCheckBoxByName(this, "DenyTransactedCheck"); - childSetCommitCallback("DenyTransactedCheck", onCommitAny, this); - - return TRUE; - -} - - -LLPanelLandBan::~LLPanelLandBan() -{ } - -void LLPanelLandBan::refresh() -{ - mList->deleteAllItems(); - - LLParcel *parcel = mParcel->getParcel(); - - if (parcel) + LLPanelLandAccess* panelp = (LLPanelLandAccess*)userdata; + if (!names.empty() && !ids.empty()) { - // Display options - - S32 count = parcel->mBanList.size(); - - BOOL use_ban = parcel->getParcelFlag(PF_USE_BAN_LIST); - mCheck->set( use_ban ); - mCheck->setLabelArg( "[LISTED]", llformat("%d",count)); - mCheck->setLabelArg( "[MAX]", llformat("%d",PARCEL_MAX_ACCESS_LIST)); - - access_map_const_iterator cit = parcel->mBanList.begin(); - access_map_const_iterator end = parcel->mBanList.end(); - for ( ; cit != end; ++cit) - { - const LLAccessEntry& entry = (*cit).second; - LLString suffix; - if (entry.mTime != 0) - { - S32 now = time(NULL); - S32 seconds = entry.mTime - now; - if (seconds < 0) seconds = 0; - suffix.assign(" ("); - if (seconds >= 120) - { - char buf[30]; /*Flawfinder: ignore*/ - snprintf(buf, sizeof(buf), "%d minutes", (seconds/60)); /* Flawfinder: ignore */ - suffix.append(buf); - } - else if (seconds >= 60) - { - suffix.append("1 minute"); - } - else - { - char buf[30]; /*Flawfinder: ignore*/ - snprintf(buf, sizeof(buf), "%d seconds", seconds); /* Flawfinder: ignore */ - suffix.append(buf); - } - suffix.append(" remaining)"); - } - mList->addNameItem(entry.mID, ADD_SORTED, TRUE, suffix); - } - - BOOL can_manage_banned = LLViewerParcelMgr::isParcelModifiableByAgent(parcel, GP_LAND_MANAGE_BANNED); - mCheck->setEnabled( can_manage_banned ); - mCheckDenyAnonymous->setEnabled( FALSE ); - mCheckDenyIdentified->setEnabled( FALSE ); - mCheckDenyTransacted->setEnabled( FALSE ); - - if(parcel->getRegionDenyAnonymousOverride()) - { - mCheckDenyAnonymous->set(TRUE); - } - else if(can_manage_banned) - { - mCheckDenyAnonymous->setEnabled(TRUE); - mCheckDenyAnonymous->set(parcel->getParcelFlag(PF_DENY_ANONYMOUS)); - } - if(parcel->getRegionDenyIdentifiedOverride()) - { - mCheckDenyIdentified->set(TRUE); - } - else if(can_manage_banned) - { - mCheckDenyIdentified->setEnabled(TRUE); - mCheckDenyIdentified->set(parcel->getParcelFlag(PF_DENY_IDENTIFIED)); - } - if(parcel->getRegionDenyTransactedOverride()) - { - mCheckDenyTransacted->set(TRUE); - } - else if(can_manage_banned) + LLUUID id = ids[0]; + LLParcel* parcel = panelp->mParcel->getParcel(); + if (parcel) { - mCheckDenyTransacted->setEnabled(TRUE); - mCheckDenyTransacted->set(parcel->getParcelFlag(PF_DENY_TRANSACTED)); + parcel->addToAccessList(id, 0); + gParcelMgr->sendParcelAccessListUpdate(AL_ACCESS); + panelp->refresh(); } - - - BOOL enable_add = can_manage_banned && (count < PARCEL_MAX_ACCESS_LIST); - mBtnAdd->setEnabled(enable_add); - - BOOL enable_remove = can_manage_banned && (count > 0); - mBtnRemove->setEnabled(enable_remove); - } - else - { - mCheck->set(FALSE); - mCheck->setLabelArg( "[LISTED]", llformat("%d",0)); - mCheck->setEnabled(FALSE); - mBtnAdd->setEnabled(FALSE); - mBtnRemove->setEnabled(FALSE); - mCheckDenyAnonymous->set(FALSE); - mCheckDenyAnonymous->setEnabled(FALSE); - mCheckDenyIdentified->set(FALSE); - mCheckDenyIdentified->setEnabled(FALSE); - mCheckDenyTransacted->set(FALSE); - mCheckDenyTransacted->setEnabled(FALSE); } } // static -void LLPanelLandBan::onCommitAny(LLUICtrl *ctrl, void *userdata) +void LLPanelLandAccess::onClickRemoveAccess(void* data) { - LLPanelLandBan *self = (LLPanelLandBan*)userdata; - - LLParcel* parcel = self->mParcel->getParcel(); - if (!parcel) + LLPanelLandAccess* panelp = (LLPanelLandAccess*)data; + if (panelp && panelp->mListAccess) { - return; + LLParcel* parcel = panelp->mParcel->getParcel(); + if (parcel) + { + std::vector<LLScrollListItem*> names = panelp->mListAccess->getAllSelected(); + for (std::vector<LLScrollListItem*>::iterator iter = names.begin(); + iter != names.end(); ) + { + LLScrollListItem* item = *iter++; + const LLUUID& agent_id = item->getUUID(); + parcel->removeFromAccessList(agent_id); + } + gParcelMgr->sendParcelAccessListUpdate(AL_ACCESS); + panelp->refresh(); + } } - - // Extract data from UI - BOOL use_ban_list = self->mCheck->get(); - BOOL deny_access_anonymous = self->mCheckDenyAnonymous->get(); - BOOL deny_access_identified = self->mCheckDenyIdentified->get(); - BOOL deny_access_transacted = self->mCheckDenyTransacted->get(); - - // Push data into current parcel - parcel->setParcelFlag(PF_USE_BAN_LIST, use_ban_list); - parcel->setParcelFlag(PF_DENY_ANONYMOUS, deny_access_anonymous); - parcel->setParcelFlag(PF_DENY_IDENTIFIED, deny_access_identified); - parcel->setParcelFlag(PF_DENY_TRANSACTED, deny_access_transacted); - - // Send current parcel data upstream to server - gParcelMgr->sendParcelPropertiesUpdate( parcel ); - - // Might have changed properties, so let's redraw! - self->refresh(); } // static -void LLPanelLandBan::onClickAdd(void* data) +void LLPanelLandAccess::onClickAddBanned(void* data) { - LLPanelLandBan* panelp = (LLPanelLandBan*)data; - gFloaterView->getParentFloater(panelp)->addDependentFloater(LLFloaterAvatarPicker::show(callbackAvatarID, data) ); + LLPanelLandAccess* panelp = (LLPanelLandAccess*)data; + gFloaterView->getParentFloater(panelp)->addDependentFloater(LLFloaterAvatarPicker::show(callbackAvatarCBBanned, data) ); } // static -void LLPanelLandBan::callbackAvatarID(const std::vector<std::string>& names, const std::vector<LLUUID>& ids, void* userdata) +void LLPanelLandAccess::callbackAvatarCBBanned(const std::vector<std::string>& names, const std::vector<LLUUID>& ids, void* userdata) { - LLPanelLandBan* self = (LLPanelLandBan*)userdata; - if (names.empty() || ids.empty()) return; - self->addAvatar(ids[0]); -} - - -void LLPanelLandBan::addAvatar(LLUUID id) -{ - LLParcel* parcel = mParcel->getParcel(); - if (!parcel) return; - - parcel->addToBanList(id, 0); - - gParcelMgr->sendParcelAccessListUpdate(AL_BAN); - - refresh(); + LLPanelLandAccess* panelp = (LLPanelLandAccess*)userdata; + if (!names.empty() && !ids.empty()) + { + LLUUID id = ids[0]; + LLParcel* parcel = panelp->mParcel->getParcel(); + if (parcel) + { + parcel->addToBanList(id, 0); + gParcelMgr->sendParcelAccessListUpdate(AL_BAN); + panelp->refresh(); + } + } } - // static -void LLPanelLandBan::onClickRemove(void* data) +void LLPanelLandAccess::onClickRemoveBanned(void* data) { - LLPanelLandBan* self = (LLPanelLandBan*)data; - if (!self) return; - - LLScrollListItem* item = self->mList->getFirstSelected(); - if (!item) return; - - LLParcel* parcel = self->mParcel->getParcel(); - if (!parcel) return; - - const LLUUID& agent_id = item->getUUID(); - - parcel->removeFromBanList(agent_id); - - gParcelMgr->sendParcelAccessListUpdate(AL_BAN); - - self->refresh(); + LLPanelLandAccess* panelp = (LLPanelLandAccess*)data; + if (panelp && panelp->mListBanned) + { + LLParcel* parcel = panelp->mParcel->getParcel(); + if (parcel) + { + std::vector<LLScrollListItem*> names = panelp->mListBanned->getAllSelected(); + for (std::vector<LLScrollListItem*>::iterator iter = names.begin(); + iter != names.end(); ) + { + LLScrollListItem* item = *iter++; + const LLUUID& agent_id = item->getUUID(); + parcel->removeFromBanList(agent_id); + } + gParcelMgr->sendParcelAccessListUpdate(AL_BAN); + panelp->refresh(); + } + } } //--------------------------------------------------------------------------- diff --git a/indra/newview/llfloaterland.h b/indra/newview/llfloaterland.h index d8b7ecfe88..9be813f8fd 100644 --- a/indra/newview/llfloaterland.h +++ b/indra/newview/llfloaterland.h @@ -112,7 +112,6 @@ protected: LLPanelLandOptions* mPanelOptions; LLPanelLandMedia* mPanelMedia; LLPanelLandAccess* mPanelAccess; - LLPanelLandBan* mPanelBan; LLPanelLandCovenant* mPanelCovenant; LLHandle<LLParcelSelection> mParcel; @@ -392,93 +391,28 @@ public: LLPanelLandAccess(LLHandle<LLParcelSelection>& parcelp); virtual ~LLPanelLandAccess(); void refresh(); + void refresh_ui(); void refreshNames(); virtual void draw(); - void addAvatar(LLUUID id); - static void onCommitAny(LLUICtrl* ctrl, void *userdata); - static void onClickAdd(void*); - static void onClickRemove(void*); - static void callbackAvatarID(const std::vector<std::string>& names, const std::vector<LLUUID>& ids, void* userdata); - static void onAccessLevelChange(LLUICtrl* ctrl, void* userdata); + static void onClickAddAccess(void*); + static void callbackAvatarCBAccess(const std::vector<std::string>& names, const std::vector<LLUUID>& ids, void* userdata); + static void onClickRemoveAccess(void*); + static void onClickAddBanned(void*); + static void callbackAvatarCBBanned(const std::vector<std::string>& names, const std::vector<LLUUID>& ids, void* userdata); + static void onClickRemoveBanned(void*); virtual BOOL postBuild(); protected: - LLTextBox* mLabelTitle; - - LLCheckBoxCtrl* mCheckGroup; - - LLCheckBoxCtrl* mCheckAccess; LLNameListCtrl* mListAccess; - LLButton* mBtnAddAccess; - LLButton* mBtnRemoveAccess; - - LLCheckBoxCtrl* mCheckPass; - LLSpinCtrl* mSpinPrice; - LLSpinCtrl* mSpinHours; - - LLCheckBoxCtrl* mCheckIdentified; - LLCheckBoxCtrl* mCheckTransacted; - LLRadioGroup* mCheckStatusLevel; + LLNameListCtrl* mListBanned; LLHandle<LLParcelSelection>& mParcel; }; -class LLPanelLandBan -: public LLPanel -{ -public: - LLPanelLandBan(LLHandle<LLParcelSelection>& parcelp); - virtual ~LLPanelLandBan(); - void refresh(); - - void addAvatar(LLUUID id); - - static void onCommitAny(LLUICtrl* ctrl, void *userdata); - static void onClickAdd(void*); - static void onClickRemove(void*); - static void callbackAvatarID(const std::vector<std::string>& names, const std::vector<LLUUID>& ids, void* userdata); - - virtual BOOL postBuild(); - -protected: - LLTextBox* mLabelTitle; - - LLCheckBoxCtrl* mCheck; - LLNameListCtrl* mList; - LLButton* mBtnAdd; - LLButton* mBtnRemove; - LLCheckBoxCtrl* mCheckDenyAnonymous; - LLCheckBoxCtrl* mCheckDenyIdentified; - LLCheckBoxCtrl* mCheckDenyTransacted; - - LLHandle<LLParcelSelection>& mParcel; -}; - - -class LLPanelLandRenters -: public LLPanel -{ -public: - LLPanelLandRenters(LLHandle<LLParcelSelection>& parcelp); - virtual ~LLPanelLandRenters(); - void refresh(); - - static void onClickAdd(void*); - static void onClickRemove(void*); - -protected: - LLCheckBoxCtrl* mCheckRenters; - LLNameListCtrl* mListRenters; - LLButton* mBtnAddRenter; - LLButton* mBtnRemoveRenter; - - LLHandle<LLParcelSelection>& mParcel; -}; - class LLPanelLandCovenant : public LLPanel { diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp index 20f3192939..3306142856 100644 --- a/indra/newview/llfloaterregioninfo.cpp +++ b/indra/newview/llfloaterregioninfo.cpp @@ -408,6 +408,15 @@ void LLFloaterRegionInfo::refreshFromRegion(LLViewerRegion* region) region)); } +// public +void LLFloaterRegionInfo::refresh() +{ + for(info_panels_t::iterator iter = mInfoPanels.begin(); + iter != mInfoPanels.end(); ++iter) + { + (*iter)->refresh(); + } +} ///---------------------------------------------------------------------------- @@ -447,6 +456,7 @@ void LLPanelRegionInfo::onChangeAnything(LLUICtrl* ctrl, void* user_data) if(panel) { panel->enableButton("apply_btn"); + panel->refresh(); } } @@ -455,6 +465,7 @@ BOOL LLPanelRegionInfo::postBuild() { childSetAction("apply_btn", onBtnSet, this); childDisable("apply_btn"); + refresh(); return TRUE; } @@ -716,6 +727,8 @@ BOOL LLPanelRegionGeneralInfo::sendUpdate() body["allow_land_resell"] = childGetValue("allow_land_resell_check"); body["agent_limit"] = childGetValue("agent_limit_spin"); body["prim_bonus"] = childGetValue("object_bonus_spin"); + // the combo box stores strings "Mature" and "PG", but we have to convert back to a number, + // because the sim doesn't know from strings for this stuff body["sim_access"] = LLViewerRegion::stringToAccess(childGetValue("access_combo").asString().c_str()); body["restrict_pushobject"] = childGetValue("restrict_pushobject"); body["allow_parcel_changes"] = childGetValue("allow_parcel_changes_check"); @@ -1907,6 +1920,7 @@ bool LLPanelEstateInfo::refreshFromRegion(LLViewerRegion* region) BOOL owner = (region && (region->getOwner() == gAgent.getID())); BOOL manager = (region && region->isEstateManager()); setCtrlsEnabled(god || owner || manager); + childDisable("apply_btn"); childSetEnabled("add_allowed_avatar_btn", god || owner || manager); childSetEnabled("remove_allowed_avatar_btn", god || owner || manager); @@ -1942,8 +1956,7 @@ bool LLPanelEstateInfo::refreshFromRegion(LLViewerRegion* region) sendEstateOwnerMessage(gMessageSystem, "getinfo", invoice, strings); - - + refresh(); return rv; } @@ -1974,9 +1987,8 @@ BOOL LLPanelEstateInfo::postBuild() initCtrl("use_global_time_check"); initCtrl("fixed_sun_check"); initCtrl("allow_direct_teleport"); - initCtrl("deny_anonymous"); - initCtrl("deny_identified"); - initCtrl("deny_transacted"); + initCtrl("limit_payment"); + initCtrl("limit_age_verified"); initCtrl("voice_chat_check"); initHelpBtn("estate_manager_help", "HelpEstateEstateManager"); @@ -2043,6 +2055,19 @@ BOOL LLPanelEstateInfo::postBuild() return LLPanelRegionInfo::postBuild(); } +void LLPanelEstateInfo::refresh() +{ + bool public_access = childGetValue("externally_visible_check").asBoolean(); + childSetEnabled("Only Allow", public_access); + childSetEnabled("limit_payment", public_access); + childSetEnabled("limit_age_verified", public_access); + // if this is set to false, then the limit fields are meaningless and should be turned off + if (public_access == false) + { + childSetValue("limit_payment", false); + childSetValue("limit_age_verified", false); + } +} BOOL LLPanelEstateInfo::sendUpdate() { @@ -2157,10 +2182,11 @@ void LLPanelEstateInfo::setEstateFlags(U32 flags) "voice_chat_check", LLSD(flags & REGION_FLAGS_ALLOW_VOICE ? TRUE : FALSE)); childSetValue("allow_direct_teleport", LLSD(flags & REGION_FLAGS_ALLOW_DIRECT_TELEPORT ? TRUE : FALSE) ); - childSetValue("deny_anonymous", LLSD(flags & REGION_FLAGS_DENY_ANONYMOUS ? TRUE : FALSE) ); - childSetValue("deny_identified", LLSD(flags & REGION_FLAGS_DENY_IDENTIFIED ? TRUE : FALSE) ); - childSetValue("deny_transacted", LLSD(flags & REGION_FLAGS_DENY_TRANSACTED ? TRUE : FALSE) ); + childSetValue("limit_payment", LLSD(flags & REGION_FLAGS_DENY_ANONYMOUS ? TRUE : FALSE) ); + childSetValue("limit_age_verified", LLSD(flags & REGION_FLAGS_DENY_AGEUNVERIFIED ? TRUE : FALSE) ); childSetVisible("abuse_email_text", flags & REGION_FLAGS_ABUSE_EMAIL_TO_ESTATE_OWNER); + + refresh(); } U32 LLPanelEstateInfo::computeEstateFlags() @@ -2187,20 +2213,16 @@ U32 LLPanelEstateInfo::computeEstateFlags() flags |= REGION_FLAGS_SUN_FIXED; } - if (childGetValue("deny_anonymous").asBoolean()) + if (childGetValue("limit_payment").asBoolean()) { flags |= REGION_FLAGS_DENY_ANONYMOUS; } - if (childGetValue("deny_identified").asBoolean()) + if (childGetValue("limit_age_verified").asBoolean()) { - flags |= REGION_FLAGS_DENY_IDENTIFIED; + flags |= REGION_FLAGS_DENY_AGEUNVERIFIED; } - if (childGetValue("deny_transacted").asBoolean()) - { - flags |= REGION_FLAGS_DENY_TRANSACTED; - } return flags; } diff --git a/indra/newview/llfloaterregioninfo.h b/indra/newview/llfloaterregioninfo.h index 656583b276..abf4789b6d 100644 --- a/indra/newview/llfloaterregioninfo.h +++ b/indra/newview/llfloaterregioninfo.h @@ -79,6 +79,9 @@ public: static LLPanelEstateInfo* getPanelEstate(); static LLPanelEstateCovenant* getPanelCovenant(); + // from LLPanel + virtual void refresh(); + protected: LLFloaterRegionInfo(const LLRect& rect); void refreshFromRegion(LLViewerRegion* region); @@ -294,6 +297,7 @@ public: // LLPanel virtual BOOL postBuild(); virtual void updateChild(LLUICtrl* child_ctrl); + virtual void refresh(); U32 computeEstateFlags(); void setEstateFlags(U32 flags); diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp index 706e05328c..5b43497f03 100644 --- a/indra/newview/llpanelavatar.cpp +++ b/indra/newview/llpanelavatar.cpp @@ -1788,6 +1788,7 @@ void LLPanelAvatar::processAvatarPropertiesReply(LLMessageSystem *msg, void**) //BOOL mature = FALSE; BOOL identified = FALSE; BOOL transacted = FALSE; + BOOL age_verified = FALSE; BOOL online = FALSE; char profile_url[DB_USER_PROFILE_URL_BUF_SIZE]; /*Flawfinder: ignore*/ @@ -1825,6 +1826,7 @@ void LLPanelAvatar::processAvatarPropertiesReply(LLMessageSystem *msg, void**) identified = (flags & AVATAR_IDENTIFIED); transacted = (flags & AVATAR_TRANSACTED); + age_verified = (flags & AVATAR_AGEVERIFIED); allow_publish = (flags & AVATAR_ALLOW_PUBLISH); online = (flags & AVATAR_ONLINE); @@ -1874,6 +1876,12 @@ void LLPanelAvatar::processAvatarPropertiesReply(LLMessageSystem *msg, void**) payment_text = "NoPaymentInfoOnFile"; } args["[PAYMENTINFO]"] = self->mPanelSecondLife->childGetValue(payment_text).asString(); + LLString age_text = "NotAgeVerified"; + if(age_verified) + { + age_text = "AgeVerified"; + } + args["[PAYMENTINFO]"] += self->mPanelSecondLife->childGetValue(age_text).asString(); } else { diff --git a/indra/newview/llstatusbar.cpp b/indra/newview/llstatusbar.cpp index 27081d15dc..856943da6e 100644 --- a/indra/newview/llstatusbar.cpp +++ b/indra/newview/llstatusbar.cpp @@ -256,7 +256,7 @@ void LLStatusBar::refresh() << std::setfill('0') << std::setw(2) << internal_time->tm_mday << " " << sMonths[internal_time->tm_mon] << " " << internal_time->tm_year + 1900; - mTextTime->setToolTip(date.str().c_str()); + mTextTime->setToolTip(date.str()); LLRect r; const S32 MENU_RIGHT = gMenuBarView->getRightmostMenuEdge(); diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp index b961053799..706587abb0 100644 --- a/indra/newview/lltexturectrl.cpp +++ b/indra/newview/lltexturectrl.cpp @@ -1037,19 +1037,21 @@ void LLTextureCtrl::setVisible( BOOL visible ) void LLTextureCtrl::setEnabled( BOOL enabled ) { + LLFloaterTexturePicker* floaterp = (LLFloaterTexturePicker*)LLFloater::getFloaterByHandle(mFloaterHandle); if( enabled ) { - setToolTip( "Click to choose a picture" ); + LLString tooltip; + if (floaterp) tooltip = floaterp->getUIString("choose_picture"); + setToolTip( tooltip ); } else { - setToolTip( "" ); + setToolTip( LLString() ); // *TODO: would be better to keep floater open and show // disabled state. closeFloater(); } - LLFloaterTexturePicker* floaterp = (LLFloaterTexturePicker*)LLFloater::getFloaterByHandle(mFloaterHandle); if( floaterp ) { floaterp->setActive(enabled); diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index ce3a3f1ae9..2fdc040684 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -4064,18 +4064,18 @@ void process_alert_message(LLMessageSystem *msgsystem, void **user_data) process_alert_core(buffer, modal); } -void process_alert_core(const char* buffer, BOOL modal) +void process_alert_core(const std::string& message, BOOL modal) { // make sure the cursor is back to the usual default since the // alert is probably due to some kind of error. gViewerWindow->getWindow()->resetBusyCount(); - // HACK -- handle callbacks for specific alerts - if( !strcmp( buffer, "You died and have been teleported to your home location" ) ) + // HACK -- handle callbacks for specific alerts + if ( message == "You died and have been teleported to your home location") { gViewerStats->incStat(LLViewerStats::ST_KILLED_COUNT); } - else if( !strcmp( buffer, "Home position set." ) ) + else if( message == "Home position set." ) { // save the home location image to disk LLString snap_filename = gDirUtilp->getLindenUserDir(); @@ -4084,19 +4084,26 @@ void process_alert_core(const char* buffer, BOOL modal) gViewerWindow->saveSnapshot(snap_filename, gViewerWindow->getWindowWidth(), gViewerWindow->getWindowHeight(), FALSE, FALSE); } - const char ALERT_PREFIX[] = "ALERT: "; - const size_t ALERT_PREFIX_LEN = sizeof(ALERT_PREFIX) - 1; - if (!strncmp(buffer, ALERT_PREFIX, ALERT_PREFIX_LEN)) + const std::string ALERT_PREFIX("ALERT: "); + const std::string NOTIFY_PREFIX("NOTIFY: "); + if (message.find(ALERT_PREFIX) == 0) { // Allow the server to spawn a named alert so that server alerts can be - // translated out of English. JC - std::string alert_name(buffer + ALERT_PREFIX_LEN); + // translated out of English. + std::string alert_name(message.substr(ALERT_PREFIX.length())); LLAlertDialog::showXml(alert_name); } - else if (buffer[0] == '/') + else if (message.find(NOTIFY_PREFIX) == 0) + { + // Allow the server to spawn a named notification so that server notifications can be + // translated out of English. + std::string notify_name(message.substr(NOTIFY_PREFIX.length())); + LLNotifyBox::showXml(notify_name); + } + else if (message[0] == '/') { // System message is important, show in upper-right box not tip - LLString text(buffer+1); + LLString text(message.substr(1)); LLString::format_map_t args; if (text.substr(0,17) == "RESTART_X_MINUTES") { @@ -4123,14 +4130,14 @@ void process_alert_core(const char* buffer, BOOL modal) { // *TODO:translate LLString::format_map_t args; - args["[ERROR_MESSAGE]"] = buffer; + args["[ERROR_MESSAGE]"] = message; gViewerWindow->alertXml("ErrorMessage", args); } else { // *TODO:translate LLString::format_map_t args; - args["[MESSAGE]"] = buffer; + args["[MESSAGE]"] = message; LLNotifyBox::showXml("SystemMessageTip", args); } } diff --git a/indra/newview/llviewermessage.h b/indra/newview/llviewermessage.h index 2cbd16377d..2c5005c167 100644 --- a/indra/newview/llviewermessage.h +++ b/indra/newview/llviewermessage.h @@ -110,7 +110,7 @@ void process_adjust_balance(LLMessageSystem* msg_system, void**); void process_alert_message(LLMessageSystem* msg, void**); void process_agent_alert_message(LLMessageSystem* msgsystem, void** user_data); -void process_alert_core(const char* buffer, BOOL modal); +void process_alert_core(const std::string& message, BOOL modal); // "Mean" or player-vs-player abuse void handle_show_mean_events(void *); diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp index d5fc9fa381..f0d6fd11c3 100644 --- a/indra/newview/llviewerparcelmgr.cpp +++ b/indra/newview/llviewerparcelmgr.cpp @@ -1398,8 +1398,9 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use F32 parcel_prim_bonus = 1.f; BOOL region_push_override = false; BOOL region_deny_anonymous_override = false; - BOOL region_deny_identified_override = false; - BOOL region_deny_transacted_override = false; + BOOL region_deny_identified_override = false; // Deprecated + BOOL region_deny_transacted_override = false; // Deprecated + BOOL region_deny_age_unverified_override = false; S32 other_clean_time = 0; @@ -1474,8 +1475,9 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use msg->getF32Fast(_PREHASH_ParcelData, _PREHASH_ParcelPrimBonus, parcel_prim_bonus ); msg->getBOOLFast(_PREHASH_ParcelData, _PREHASH_RegionPushOverride, region_push_override ); msg->getBOOLFast(_PREHASH_ParcelData, _PREHASH_RegionDenyAnonymous, region_deny_anonymous_override ); - msg->getBOOLFast(_PREHASH_ParcelData, _PREHASH_RegionDenyIdentified, region_deny_identified_override ); - msg->getBOOLFast(_PREHASH_ParcelData, _PREHASH_RegionDenyTransacted, region_deny_transacted_override ); + msg->getBOOLFast(_PREHASH_ParcelData, _PREHASH_RegionDenyIdentified, region_deny_identified_override ); // Deprecated + msg->getBOOLFast(_PREHASH_ParcelData, _PREHASH_RegionDenyTransacted, region_deny_transacted_override ); // Deprecated + msg->getBOOLFast(_PREHASH_AgeVerificationBlock, _PREHASH_RegionDenyAgeUnverified, region_deny_age_unverified_override ); msg->getS32("ParcelData", "OtherCleanTime", other_clean_time ); @@ -1505,8 +1507,7 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use parcel->setCleanOtherTime(other_clean_time); parcel->setRegionPushOverride(region_push_override); parcel->setRegionDenyAnonymousOverride(region_deny_anonymous_override); - parcel->setRegionDenyIdentifiedOverride(region_deny_identified_override); - parcel->setRegionDenyTransactedOverride(region_deny_transacted_override); + parcel->setRegionDenyAgeUnverifiedOverride(region_deny_age_unverified_override); parcel->unpackMessage(msg); if (parcel == gParcelMgr->mAgentParcel) diff --git a/indra/newview/llweb.cpp b/indra/newview/llweb.cpp index 7ee4869153..eac24cebf5 100644 --- a/indra/newview/llweb.cpp +++ b/indra/newview/llweb.cpp @@ -40,14 +40,20 @@ #include "llviewercontrol.h" // static -void LLWeb::loadURL(std::string url) +void LLWeb::initClass() +{ + LLAlertDialog::setURLLoader(&sAlertURLLoader); +} + +// static +void LLWeb::loadURL(const std::string& url) { loadURLExternal(url); } // static -void LLWeb::loadURLExternal(std::string url) +void LLWeb::loadURLExternal(const std::string& url) { std::string escaped_url = escapeURL(url); #if LL_LIBXUL_ENABLED @@ -57,7 +63,7 @@ void LLWeb::loadURLExternal(std::string url) // static -std::string LLWeb::escapeURL(std::string url) +std::string LLWeb::escapeURL(const std::string& url) { // The CURL curl_escape() function escapes colons, slashes, // and all characters but A-Z and 0-9. Do a cheesy mini-escape. @@ -81,3 +87,12 @@ std::string LLWeb::escapeURL(std::string url) } return escaped_url; } + +// virtual +void LLWeb::URLLoader::load(const std::string& url) +{ + loadURL(url); +} + +// static +LLWeb::URLLoader LLWeb::sAlertURLLoader; diff --git a/indra/newview/llweb.h b/indra/newview/llweb.h index b339f2d8fd..318410bb3b 100644 --- a/indra/newview/llweb.h +++ b/indra/newview/llweb.h @@ -34,21 +34,31 @@ #define LL_LLWEB_H #include <string> +#include "llalertdialog.h" class LLWeb { public: + static void initClass(); + // Loads unescaped url in either internal web browser or external // browser, depending on user settings. - static void loadURL(std::string url); + static void loadURL(const std::string& url); static void loadURL(const char* url) { loadURL( std::string(url) ); } // Loads unescaped url in external browser. - static void loadURLExternal(std::string url); + static void loadURLExternal(const std::string& url); // Returns escaped (eg, " " to "%20") url - static std::string escapeURL(std::string url); + static std::string escapeURL(const std::string& url); + + class URLLoader : public LLAlertDialog::URLLoader + { + virtual void load(const std::string& url); + }; + + static URLLoader sAlertURLLoader; }; #endif |