summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indra/llui/llbutton.cpp5
-rw-r--r--indra/llui/llbutton.h1
-rw-r--r--indra/newview/lllocationinputctrl.cpp74
-rw-r--r--indra/newview/lllocationinputctrl.h21
-rw-r--r--indra/newview/skins/default/xui/en/strings.xml3
-rw-r--r--indra/newview/skins/default/xui/en/widgets/location_input.xml4
6 files changed, 78 insertions, 30 deletions
diff --git a/indra/llui/llbutton.cpp b/indra/llui/llbutton.cpp
index 33c6a8b6ac..0255061b12 100644
--- a/indra/llui/llbutton.cpp
+++ b/indra/llui/llbutton.cpp
@@ -1003,6 +1003,11 @@ void LLButton::setImageDisabledSelected(LLPointer<LLUIImage> image)
mFadeWhenDisabled = TRUE;
}
+void LLButton::setImagePressed(LLPointer<LLUIImage> image)
+{
+ mImagePressed = image;
+}
+
void LLButton::setImageHoverSelected(LLPointer<LLUIImage> image)
{
mImageHoverSelected = image;
diff --git a/indra/llui/llbutton.h b/indra/llui/llbutton.h
index 6a1e3a9425..a4d81ed6c3 100644
--- a/indra/llui/llbutton.h
+++ b/indra/llui/llbutton.h
@@ -246,6 +246,7 @@ public:
void setImageHoverUnselected(LLPointer<LLUIImage> image);
void setImageDisabled(LLPointer<LLUIImage> image);
void setImageDisabledSelected(LLPointer<LLUIImage> image);
+ void setImagePressed(LLPointer<LLUIImage> image);
void setCommitOnReturn(BOOL commit) { mCommitOnReturn = commit; }
BOOL getCommitOnReturn() const { return mCommitOnReturn; }
diff --git a/indra/newview/lllocationinputctrl.cpp b/indra/newview/lllocationinputctrl.cpp
index 4e0be81f62..7abb4f4f16 100644
--- a/indra/newview/lllocationinputctrl.cpp
+++ b/indra/newview/lllocationinputctrl.cpp
@@ -38,6 +38,7 @@
// common includes
#include "llbutton.h"
#include "llfocusmgr.h"
+#include "llhelp.h"
#include "llmenugl.h"
#include "llparcel.h"
#include "llstring.h"
@@ -177,6 +178,7 @@ static LLDefaultChildRegistry::Register<LLLocationInputCtrl> r("location_input")
LLLocationInputCtrl::Params::Params()
: icon_maturity_general("icon_maturity_general"),
icon_maturity_adult("icon_maturity_adult"),
+ icon_maturity_moderate("icon_maturity_moderate"),
add_landmark_image_enabled("add_landmark_image_enabled"),
add_landmark_image_disabled("add_landmark_image_disabled"),
add_landmark_image_hover("add_landmark_image_hover"),
@@ -186,14 +188,15 @@ LLLocationInputCtrl::Params::Params()
add_landmark_button("add_landmark_button"),
for_sale_button("for_sale_button"),
info_button("info_button"),
- maturity_icon("maturity_icon"),
+ maturity_button("maturity_button"),
voice_icon("voice_icon"),
fly_icon("fly_icon"),
push_icon("push_icon"),
build_icon("build_icon"),
scripts_icon("scripts_icon"),
damage_icon("damage_icon"),
- damage_text("damage_text")
+ damage_text("damage_text"),
+ maturity_help_topic("maturity_help_topic")
{
}
@@ -208,7 +211,9 @@ LLLocationInputCtrl::LLLocationInputCtrl(const LLLocationInputCtrl::Params& p)
mLandmarkImageOn(NULL),
mLandmarkImageOff(NULL),
mIconMaturityGeneral(NULL),
- mIconMaturityAdult(NULL)
+ mIconMaturityAdult(NULL),
+ mIconMaturityModerate(NULL),
+ mMaturityHelpTopic(p.maturity_help_topic)
{
// Lets replace default LLLineEditor with LLLocationLineEditor
// to make needed escaping while copying and cutting url
@@ -276,10 +281,15 @@ LLLocationInputCtrl::LLLocationInputCtrl(const LLLocationInputCtrl::Params& p)
{
mIconMaturityAdult = p.icon_maturity_adult;
}
+ if(p.icon_maturity_moderate())
+ {
+ mIconMaturityModerate = p.icon_maturity_moderate;
+ }
- LLIconCtrl::Params maturity_icon = p.maturity_icon;
- mMaturityIcon = LLUICtrlFactory::create<LLIconCtrl>(maturity_icon);
- addChild(mMaturityIcon);
+ LLButton::Params maturity_button = p.maturity_button;
+ mMaturityButton = LLUICtrlFactory::create<LLButton>(maturity_button);
+ addChild(mMaturityButton);
+ mMaturityButton->setClickedCallback(boost::bind(&LLLocationInputCtrl::onMaturityButtonClicked, this));
LLButton::Params for_sale_button = p.for_sale_button;
for_sale_button.tool_tip = LLTrans::getString("LocationCtrlForSaleTooltip");
@@ -576,7 +586,7 @@ void LLLocationInputCtrl::reshape(S32 width, S32 height, BOOL called_from_parent
if (isHumanReadableLocationVisible)
{
- refreshMaturityIcon();
+ refreshMaturityButton();
}
}
@@ -613,6 +623,11 @@ void LLLocationInputCtrl::onAgentParcelChange()
refresh();
}
+void LLLocationInputCtrl::onMaturityButtonClicked()
+{
+ LLUI::sHelpImpl->showTopic(mMaturityHelpTopic);
+}
+
void LLLocationInputCtrl::onLandmarkLoaded(LLLandmark* lm)
{
(void) lm;
@@ -736,7 +751,7 @@ void LLLocationInputCtrl::refreshLocation()
setText(location_name);
isHumanReadableLocationVisible = true;
- refreshMaturityIcon();
+ refreshMaturityButton();
}
// returns new right edge
@@ -852,37 +867,54 @@ void LLLocationInputCtrl::refreshHealth()
}
}
-void LLLocationInputCtrl::refreshMaturityIcon()
+void LLLocationInputCtrl::refreshMaturityButton()
{
// Updating maturity rating icon.
LLViewerRegion* region = gAgent.getRegion();
if (!region)
return;
+ bool button_visible = true;
+ LLPointer<LLUIImage> rating_image = NULL;
+ std::string rating_tooltip;
+
U8 sim_access = region->getSimAccess();
switch(sim_access)
{
case SIM_ACCESS_PG:
- mMaturityIcon->setValue(mIconMaturityGeneral->getName());
- mMaturityIcon->setVisible(TRUE);
+ rating_image = mIconMaturityGeneral;
+ rating_tooltip = LLTrans::getString("LocationCtrlGeneralIconTooltip");
break;
case SIM_ACCESS_ADULT:
- mMaturityIcon->setValue(mIconMaturityAdult->getName());
- mMaturityIcon->setVisible(TRUE);
+ rating_image = mIconMaturityAdult;
+ rating_tooltip = LLTrans::getString("LocationCtrlAdultIconTooltip");
+ break;
+
+ case SIM_ACCESS_MATURE:
+ rating_image = mIconMaturityModerate;
+ rating_tooltip = LLTrans::getString("LocationCtrlModerateIconTooltip");
break;
default:
- mMaturityIcon->setVisible(FALSE);
+ button_visible = false;
+ break;
}
- if (mMaturityIcon->getVisible())
+ mMaturityButton->setVisible(button_visible);
+ mMaturityButton->setToolTip(rating_tooltip);
+ if(rating_image)
+ {
+ mMaturityButton->setImageUnselected(rating_image);
+ mMaturityButton->setImagePressed(rating_image);
+ }
+ if (mMaturityButton->getVisible())
{
- positionMaturityIcon();
+ positionMaturityButton();
}
}
-void LLLocationInputCtrl::positionMaturityIcon()
+void LLLocationInputCtrl::positionMaturityButton()
{
const LLFontGL* font = mTextEntry->getFont();
if (!font)
@@ -894,11 +926,11 @@ void LLLocationInputCtrl::positionMaturityIcon()
// Calculate the right edge of rendered text + a whitespace.
left_pad = left_pad + font->getWidth(mTextEntry->getText()) + font->getWidth(" ");
- LLRect rect = mMaturityIcon->getRect();
- mMaturityIcon->setRect(rect.setOriginAndSize(left_pad, rect.mBottom, rect.getWidth(), rect.getHeight()));
+ LLRect rect = mMaturityButton->getRect();
+ mMaturityButton->setRect(rect.setOriginAndSize(left_pad, rect.mBottom, rect.getWidth(), rect.getHeight()));
// Hide icon if it text area is not width enough to display it, show otherwise.
- mMaturityIcon->setVisible(rect.mRight < mTextEntry->getRect().getWidth() - right_pad);
+ mMaturityButton->setVisible(rect.mRight < mTextEntry->getRect().getWidth() - right_pad);
}
void LLLocationInputCtrl::rebuildLocationHistory(const std::string& filter)
@@ -1014,7 +1046,7 @@ void LLLocationInputCtrl::changeLocationPresentation()
mTextEntry->setText(LLAgentUI::buildSLURL(false));
mTextEntry->selectAll();
- mMaturityIcon->setVisible(FALSE);
+ mMaturityButton->setVisible(FALSE);
isHumanReadableLocationVisible = false;
}
diff --git a/indra/newview/lllocationinputctrl.h b/indra/newview/lllocationinputctrl.h
index f790140f07..fc7adf60b0 100644
--- a/indra/newview/lllocationinputctrl.h
+++ b/indra/newview/lllocationinputctrl.h
@@ -66,17 +66,19 @@ public:
{
Optional<LLUIImage*> icon_maturity_general,
icon_maturity_adult,
+ icon_maturity_moderate,
add_landmark_image_enabled,
add_landmark_image_disabled,
add_landmark_image_hover,
add_landmark_image_selected;
+ Optional<std::string> maturity_help_topic;
Optional<S32> icon_hpad,
add_landmark_hpad;
- Optional<LLButton::Params> add_landmark_button,
+ Optional<LLButton::Params> maturity_button,
+ add_landmark_button,
for_sale_button,
info_button;
- Optional<LLIconCtrl::Params> maturity_icon,
- voice_icon,
+ Optional<LLIconCtrl::Params> voice_icon,
fly_icon,
push_icon,
build_icon,
@@ -136,8 +138,8 @@ private:
void refreshParcelIcons();
// Refresh the value in the health percentage text field
void refreshHealth();
- void refreshMaturityIcon();
- void positionMaturityIcon();
+ void refreshMaturityButton();
+ void positionMaturityButton();
void rebuildLocationHistory(const std::string& filter = LLStringUtil::null);
bool findTeleportItemsByTitle(const LLTeleportHistoryItem& item, const std::string& filter);
@@ -156,6 +158,7 @@ private:
void onForSaleButtonClicked();
void onAddLandmarkButtonClicked();
void onAgentParcelChange();
+ void onMaturityButtonClicked();
// callbacks
bool onLocationContextMenuItemEnabled(const LLSD& userdata);
void onLocationContextMenuItemClicked(const LLSD& userdata);
@@ -168,7 +171,7 @@ private:
S32 mIconHPad; // pad between all icons
S32 mAddLandmarkHPad; // pad to left of landmark star
- LLIconCtrl* mMaturityIcon;
+ LLButton* mMaturityButton;
LLIconCtrl* mParcelIcon[ICON_COUNT];
LLTextBox* mDamageText;
@@ -182,14 +185,16 @@ private:
boost::signals2::connection mLocationHistoryConnection;
LLUIImage* mLandmarkImageOn;
LLUIImage* mLandmarkImageOff;
- LLUIImage* mIconMaturityGeneral;
- LLUIImage* mIconMaturityAdult;
+ LLPointer<LLUIImage> mIconMaturityGeneral;
+ LLPointer<LLUIImage> mIconMaturityAdult;
+ LLPointer<LLUIImage> mIconMaturityModerate;
std::string mAddLandmarkTooltip;
std::string mEditLandmarkTooltip;
// this field holds a human-readable form of the location string, it is needed to be able to compare copy-pated value and real location
std::string mHumanReadableLocation;
bool isHumanReadableLocationVisible;
+ std::string mMaturityHelpTopic;
};
#endif
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index 91c0af118f..023aba8d7b 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -2897,6 +2897,9 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
<string name="LocationCtrlBuildTooltip">Building/dropping objects not allowed</string>
<string name="LocationCtrlScriptsTooltip">Scripts not allowed</string>
<string name="LocationCtrlDamageTooltip">Health</string>
+ <string name="LocationCtrlAdultIconTooltip">Adult Region</string>
+ <string name="LocationCtrlModerateIconTooltip">Moderate Region</string>
+ <string name="LocationCtrlGeneralIconTooltip">General Region</string>
<!-- Strings used by the (currently Linux) auto-updater app -->
<string name="UpdaterWindowTitle">
diff --git a/indra/newview/skins/default/xui/en/widgets/location_input.xml b/indra/newview/skins/default/xui/en/widgets/location_input.xml
index 1d61447e31..02ea661da3 100644
--- a/indra/newview/skins/default/xui/en/widgets/location_input.xml
+++ b/indra/newview/skins/default/xui/en/widgets/location_input.xml
@@ -6,6 +6,8 @@
<location_input font="SansSerifSmall"
icon_maturity_general="Parcel_PG_Light"
icon_maturity_adult="Parcel_R_Light"
+ icon_maturity_moderate="Parcel_M_Light"
+ maturity_help_topic="TODO"
add_landmark_image_enabled="Favorite_Star_Active"
add_landmark_image_disabled="Favorite_Star_Off"
add_landmark_image_hover="Favorite_Star_Over"
@@ -43,7 +45,7 @@
scale_image="false"
top="19"
left="-3" />
- <maturity_icon
+ <maturity_button
name="maturity_icon"
width="18"
height="16"