Fixed EXT-6597(normal) - Clicking the maturity rating icons in the navbar need tooltips and clicking should link to a help article.

Added LLButton::setImagePressed(), there was no way to set pressed image at run-time. The only place where pressed image is initialized was LLButton constructor.

Replaced Maturity icon with button to simplify handling clicks. Icon does not provide click callback and we would need to handle mouse up/down events and track clicked widget.

Added icon for Moderate regions.

Did not find maturity help topic, added a "TODO".

Reviewed by Sergey Litovchuk - https://codereview.productengine.com/secondlife/r/243/

--HG--
branch : product-engine
master
Dmitry Zaporozhan 2010-04-22 12:40:36 +03:00
parent 41d860deb6
commit edd0e47d5c
6 changed files with 78 additions and 30 deletions

View File

@ -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;

View File

@ -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; }

View File

@ -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)
{
positionMaturityIcon();
mMaturityButton->setImageUnselected(rating_image);
mMaturityButton->setImagePressed(rating_image);
}
if (mMaturityButton->getVisible())
{
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;
}

View File

@ -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

View File

@ -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">

View File

@ -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"