Display Name UIs as links when they can be interacted with

Adds font style member to line editors, might be useful in the future?
This commit is contained in:
Liru Færs
2019-10-10 03:31:31 -04:00
parent d16ff5cb5c
commit 9824cc7068
9 changed files with 40 additions and 8 deletions

View File

@@ -1895,7 +1895,7 @@ void LLLineEditor::draw()
rendered_pixels_right, text_bottom,
text_color,
LLFontGL::LEFT, LLFontGL::BOTTOM,
LLFontGL::NORMAL,
mFontStyle,
LLFontGL::NO_SHADOW,
select_left - mScrollHPos,
mMaxHPixels - ll_round(rendered_pixels_right),
@@ -1916,7 +1916,7 @@ void LLLineEditor::draw()
rendered_pixels_right, text_bottom,
tmp_color,
LLFontGL::LEFT, LLFontGL::BOTTOM,
LLFontGL::NORMAL,
mFontStyle,
LLFontGL::NO_SHADOW,
select_right - mScrollHPos - rendered_text,
mMaxHPixels - ll_round(rendered_pixels_right),
@@ -1931,7 +1931,7 @@ void LLLineEditor::draw()
rendered_pixels_right, text_bottom,
text_color,
LLFontGL::LEFT, LLFontGL::BOTTOM,
LLFontGL::NORMAL,
mFontStyle,
LLFontGL::NO_SHADOW,
S32_MAX,
mMaxHPixels - ll_round(rendered_pixels_right),
@@ -1945,7 +1945,7 @@ void LLLineEditor::draw()
rendered_pixels_right, text_bottom,
text_color,
LLFontGL::LEFT, LLFontGL::BOTTOM,
LLFontGL::NORMAL,
mFontStyle,
LLFontGL::NO_SHADOW,
S32_MAX,
mMaxHPixels - ll_round(rendered_pixels_right),
@@ -1987,7 +1987,7 @@ void LLLineEditor::draw()
mGLFont->render(mText, getCursor(), (F32)(cursor_left + UI_LINEEDITOR_CURSOR_THICKNESS / 2), text_bottom,
tmp_color,
LLFontGL::LEFT, LLFontGL::BOTTOM,
LLFontGL::NORMAL,
mFontStyle,
LLFontGL::NO_SHADOW,
1);
}
@@ -2013,7 +2013,7 @@ void LLLineEditor::draw()
label_color,
LLFontGL::LEFT,
LLFontGL::BOTTOM,
LLFontGL::NORMAL,
mFontStyle,
LLFontGL::NO_SHADOW,
S32_MAX,
mMaxHPixels - ll_round(rendered_pixels_right),
@@ -2038,7 +2038,7 @@ void LLLineEditor::draw()
label_color,
LLFontGL::LEFT,
LLFontGL::BOTTOM,
LLFontGL::NORMAL,
mFontStyle,
LLFontGL::NO_SHADOW,
S32_MAX,
mMaxHPixels - ll_round(rendered_pixels_right),

View File

@@ -315,6 +315,7 @@ protected:
LLViewBorder* mBorder;
const LLFontGL* mGLFont;
U8 mFontStyle = LLFontGL::NORMAL;
S32 mMaxLengthBytes; // Max length of the UTF8 string in bytes
S32 mCursorPos; // I-beam is just after the mCursorPos-th character.
S32 mScrollHPos; // Horizontal offset from the start of mText. Used for scrolling.

View File

@@ -113,6 +113,7 @@ private:
void setLineLengths();
void drawText(S32 x, S32 y, const LLColor4& color );
protected:
LLUIString mText;
const LLFontGL* mFontGL;
LLColor4 mTextColor;
@@ -139,7 +140,6 @@ private:
LLFontGL::VAlign mVAlign;
std::vector<S32> mLineLengthList;
protected:
callback_t mClickedCallback;
};

View File

@@ -48,6 +48,17 @@ LLNameBox::LLNameBox(const std::string& name)
setClickedCallback(boost::bind(&LLNameBox::showProfile, this));
}
void LLNameBox::displayAsLink(bool link)
{
static const LLUICachedControl<LLColor4> color("HTMLAgentColor");
setColor(link ? color : LLUI::sColorsGroup->getColor("LabelTextColor"));
setDisabledColor(link ? color : LLUI::sColorsGroup->getColor("LabelDisabledColor"));
if (link)
mFontStyle |= LLFontGL::UNDERLINE;
else
mFontStyle &= ~LLFontGL::UNDERLINE;
}
void LLNameBox::showProfile()
{
if (!mAllowInteract) return;

View File

@@ -44,6 +44,7 @@ public:
virtual void initFromXML(LLXMLNodePtr node, LLView* parent);
static LLView* fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory);
void displayAsLink(bool link) override final;
void setText(const std::string& text) override final { LLTextBox::setText(text); }
void setValue(const LLSD& value) override final { LLNameUI::setValue(value); }
LLSD getValue() const override final { return LLNameUI::getValue(); }

View File

@@ -76,6 +76,16 @@ BOOL LLNameEditor::handleRightMouseDown(S32 x, S32 y, MASK mask)
return LLLineEditor::handleRightMouseDown(x, y, mask);
}
void LLNameEditor::displayAsLink(bool link)
{
static const LLUICachedControl<LLColor4> color("HTMLAgentColor");
setReadOnlyFgColor(link ? color : LLUI::sColorsGroup->getColor("TextFgReadOnlyColor"));
if (link)
mFontStyle |= LLFontGL::UNDERLINE;
else
mFontStyle &= ~LLFontGL::UNDERLINE;
}
void LLNameEditor::setText(const std::string& text)
{
setToolTip(text);

View File

@@ -57,6 +57,7 @@ public:
void setValue(const LLSD& value) override final { LLNameUI::setValue(value); }
LLSD getValue() const override final { return LLNameUI::getValue(); }
void displayAsLink(bool link) override final;
void setText(const std::string& text) override final;
};

View File

@@ -65,9 +65,14 @@ void LLNameUI::setNameID(const LLUUID& name_id, bool is_group)
mIsGroup = is_group;
if (mAllowInteract = mNameID.notNull())
{
setNameText();
}
else
{
setText(LLTrans::getString(mIsGroup ? "GroupNameNone" : "AvatarNameNobody"));
displayAsLink(false);
}
}
void LLNameUI::setNameText()
@@ -99,6 +104,8 @@ void LLNameUI::setNameText()
else mAllowInteract = true;
}
displayAsLink(mAllowInteract);
// Got the name already? Set it.
// Otherwise it will be set later in refresh().
setText(got_name ? name : mInitialValue);

View File

@@ -58,6 +58,7 @@ struct LLNameUI : public LFIDBearer
void setShowCompleteName(bool show) { mShowCompleteName = show; }
virtual void displayAsLink(bool link) = 0; // Override to make the name display as a link
virtual void setText(const std::string& text) = 0;
// Take either UUID or a map of "id" to UUID and "group" to boolean