Merge branch 'develop' of https://github.com/secondlife/viewer
# Conflicts: # indra/llui/llconsole.cpp # indra/llui/llcontainerview.cpp # indra/llui/llcontainerview.h # indra/newview/llpaneleditwearable.cpp # indra/newview/llpanelface.cpp # indra/newview/llpanelface.h # indra/newview/llpanelmaininventory.cpp # indra/newview/llpaneloutfitedit.cpp # indra/newview/llpaneloutfitedit.h # indra/newview/llpanelpeople.cpp # indra/newview/llwearableitemslist.cpp # indra/newview/llworldmapview.cppmaster
commit
9e0164e4fc
|
|
@ -432,7 +432,8 @@ S32 LLFontGL::render(const LLWString &wstr, S32 begin_offset, F32 x, F32 y, cons
|
|||
// recursively render ellipses at end of string
|
||||
// we've already reserved enough room
|
||||
gGL.pushUIMatrix();
|
||||
renderUTF8(std::string("..."),
|
||||
static LLWString elipses_wstr(utf8string_to_wstring(std::string("...")));
|
||||
render(elipses_wstr,
|
||||
0,
|
||||
(cur_x - origin.mV[VX]) / sScaleX, (F32)y,
|
||||
color,
|
||||
|
|
|
|||
|
|
@ -243,8 +243,6 @@ void LLBadge::draw()
|
|||
// Calculate badge size based on label text
|
||||
//
|
||||
|
||||
LLWString badge_label_wstring = mLabel;
|
||||
|
||||
S32 badge_label_begin_offset = 0;
|
||||
S32 badge_char_length = S32_MAX;
|
||||
S32 badge_pixel_length = S32_MAX;
|
||||
|
|
@ -252,7 +250,7 @@ void LLBadge::draw()
|
|||
bool do_not_use_ellipses = false;
|
||||
|
||||
F32 badge_width = (2.0f * mPaddingHoriz) +
|
||||
mGLFont->getWidthF32(badge_label_wstring.c_str(), badge_label_begin_offset, badge_char_length);
|
||||
mGLFont->getWidthF32(mLabel.getWString().c_str(), badge_label_begin_offset, badge_char_length);
|
||||
|
||||
F32 badge_height = (2.0f * mPaddingVert) + mGLFont->getLineHeight();
|
||||
|
||||
|
|
@ -366,7 +364,7 @@ void LLBadge::draw()
|
|||
// Draw the label
|
||||
//
|
||||
|
||||
mGLFont->render(badge_label_wstring,
|
||||
mGLFont->render(mLabel.getWString(),
|
||||
badge_label_begin_offset,
|
||||
badge_center_x + mLabelOffsetHoriz,
|
||||
badge_center_y + mLabelOffsetVert,
|
||||
|
|
|
|||
|
|
@ -860,9 +860,6 @@ void LLButton::draw()
|
|||
if( ll::ui::SearchableControl::getHighlighted() )
|
||||
label_color = ll::ui::SearchableControl::getHighlightColor();
|
||||
|
||||
// Unselected label assignments
|
||||
LLWString label = getCurrentLabel();
|
||||
|
||||
// overlay with keyboard focus border
|
||||
if (hasFocus())
|
||||
{
|
||||
|
|
@ -993,8 +990,9 @@ void LLButton::draw()
|
|||
}
|
||||
|
||||
// Draw label
|
||||
if( !label.empty() )
|
||||
if( !getCurrentLabel().empty() ) // Unselected label assignments
|
||||
{
|
||||
LLWString label = getCurrentLabel();
|
||||
LLWStringUtil::trim(label);
|
||||
|
||||
S32 x;
|
||||
|
|
@ -1157,10 +1155,10 @@ void LLButton::autoResize()
|
|||
resize(getCurrentLabel());
|
||||
}
|
||||
|
||||
void LLButton::resize(LLUIString label)
|
||||
void LLButton::resize(const LLUIString& label)
|
||||
{
|
||||
// get label length
|
||||
S32 label_width = mGLFont->getWidth(label.getString());
|
||||
S32 label_width = mGLFont->getWidth(label.getWString().c_str());
|
||||
// get current btn length
|
||||
S32 btn_width =getRect().getWidth();
|
||||
// check if it need resize
|
||||
|
|
|
|||
|
|
@ -249,7 +249,7 @@ public:
|
|||
void setImageOverlaySelectedColor(const LLColor4& color) { mImageOverlaySelectedColor = color; }
|
||||
|
||||
void autoResize(); // resize with label of current btn state
|
||||
void resize(LLUIString label); // resize with label input
|
||||
void resize(const LLUIString& label); // resize with label input
|
||||
void setLabel(const std::string& label);
|
||||
void setLabel(const LLUIString& label);
|
||||
void setLabel( const LLStringExplicit& label);
|
||||
|
|
|
|||
|
|
@ -222,7 +222,7 @@ void LLConsole::draw()
|
|||
//static LLCachedControl<F32> console_bg_opacity(*LLUI::getInstance()->mSettingGroups["config"], "ConsoleBackgroundOpacity", 0.7f);
|
||||
//F32 console_opacity = llclamp(console_bg_opacity(), 0.f, 1.f);
|
||||
|
||||
//LLColor4 color = LLUIColorTable::instance().getColor("ConsoleBackground");
|
||||
//static LLColor4 color = LLUIColorTable::instance().getColor("ConsoleBackground");
|
||||
//color.mV[VALPHA] *= console_opacity;
|
||||
|
||||
//F32 line_height = (F32)mFont->getLineHeight();
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ static ContainerViewRegistry::Register<LLPanel> r3("panel", &LLPanel::fromXML);
|
|||
LLContainerView::LLContainerView(const LLContainerView::Params& p)
|
||||
: LLView(p),
|
||||
mShowLabel(p.show_label),
|
||||
mLabel(p.label),
|
||||
mLabel(utf8str_to_wstring(p.label)),
|
||||
// <FS:Zi> Add background visible flag and color to container_view so we can have blank scrollview containers
|
||||
mBackgroundVisible(p.background_visible),
|
||||
mBackgroundColor(p.bg_color),
|
||||
|
|
@ -128,8 +128,8 @@ void LLContainerView::draw()
|
|||
// Draw the label
|
||||
if (mShowLabel)
|
||||
{
|
||||
LLFontGL::getFontMonospace()->renderUTF8(
|
||||
mLabel, 0, 2, getRect().getHeight() - 2, LLColor4(1,1,1,1), LLFontGL::LEFT, LLFontGL::TOP);
|
||||
LLFontGL::getFontMonospace()->render(
|
||||
mLabel, 0, 2.f, (F32)(getRect().getHeight() - 2), LLColor4(1,1,1,1), LLFontGL::LEFT, LLFontGL::TOP);
|
||||
}
|
||||
|
||||
LLView::draw();
|
||||
|
|
@ -293,7 +293,7 @@ LLRect LLContainerView::getRequiredRect()
|
|||
|
||||
void LLContainerView::setLabel(const std::string& label)
|
||||
{
|
||||
mLabel = label;
|
||||
mLabel = utf8str_to_wstring(label);
|
||||
}
|
||||
|
||||
void LLContainerView::setDisplayChildren(bool displayChildren)
|
||||
|
|
|
|||
|
|
@ -97,7 +97,7 @@ public:
|
|||
|
||||
protected:
|
||||
bool mDisplayChildren;
|
||||
std::string mLabel;
|
||||
LLWString mLabel;
|
||||
// <FS:Zi> Add background visible flag and color to container_view so we can have blank scrollview containers
|
||||
bool mBackgroundVisible;
|
||||
LLUIColor mBackgroundColor;
|
||||
|
|
|
|||
|
|
@ -215,7 +215,7 @@ LLFolderView::LLFolderView(const Params& p)
|
|||
//clear label
|
||||
// go ahead and render root folder as usual
|
||||
// just make sure the label ("Inventory Folder") never shows up
|
||||
mLabel = LLStringUtil::null;
|
||||
mLabel.clear();
|
||||
|
||||
// Escape is handled by reverting the rename, not commiting it (default behavior)
|
||||
LLLineEditor::Params params;
|
||||
|
|
|
|||
|
|
@ -147,7 +147,7 @@ LLFolderViewItem::LLFolderViewItem(const LLFolderViewItem::Params& p)
|
|||
mItemHeight(p.item_height),
|
||||
mControlLabelRotation(0.f),
|
||||
mDragAndDropTarget(false),
|
||||
mLabel(p.name),
|
||||
mLabel(utf8str_to_wstring(p.name)),
|
||||
mRoot(p.root),
|
||||
mViewModelItem(p.listener),
|
||||
mIsMouseOverTitle(false),
|
||||
|
|
@ -212,7 +212,7 @@ bool LLFolderViewItem::postBuild()
|
|||
{
|
||||
// getDisplayName() is expensive (due to internal getLabelSuffix() and name building)
|
||||
// it also sets search strings so it requires a filter reset
|
||||
mLabel = vmi->getDisplayName();
|
||||
mLabel = utf8str_to_wstring(vmi->getDisplayName());
|
||||
setToolTip(vmi->getName());
|
||||
|
||||
// Dirty the filter flag of the model from the view (CHUI-849)
|
||||
|
|
@ -325,7 +325,7 @@ void LLFolderViewItem::refresh()
|
|||
{
|
||||
LLFolderViewModelItem& vmi = *getViewModelItem();
|
||||
|
||||
mLabel = vmi.getDisplayName();
|
||||
mLabel = utf8str_to_wstring(vmi.getDisplayName());
|
||||
setToolTip(vmi.getName());
|
||||
// icons are slightly expensive to get, can be optimized
|
||||
// see LLInventoryIcon::getIcon()
|
||||
|
|
@ -338,7 +338,7 @@ void LLFolderViewItem::refresh()
|
|||
// Very Expensive!
|
||||
// Can do a number of expensive checks, like checking active motions, wearables or friend list
|
||||
mLabelStyle = vmi.getLabelStyle();
|
||||
mLabelSuffix = vmi.getLabelSuffix();
|
||||
mLabelSuffix = utf8str_to_wstring(vmi.getLabelSuffix());
|
||||
}
|
||||
|
||||
// Dirty the filter flag of the model from the view (CHUI-849)
|
||||
|
|
@ -363,7 +363,7 @@ void LLFolderViewItem::refreshSuffix()
|
|||
// Very Expensive!
|
||||
// Can do a number of expensive checks, like checking active motions, wearables or friend list
|
||||
mLabelStyle = vmi->getLabelStyle();
|
||||
mLabelSuffix = vmi->getLabelSuffix();
|
||||
mLabelSuffix = utf8str_to_wstring(vmi->getLabelSuffix());
|
||||
}
|
||||
|
||||
mLabelWidthDirty = true;
|
||||
|
|
@ -442,7 +442,7 @@ S32 LLFolderViewItem::arrange( S32* width, S32* height )
|
|||
// it is purely visual, so it is fine to do at our laisure
|
||||
refreshSuffix();
|
||||
}
|
||||
mLabelWidth = getLabelXPos() + getLabelFontForStyle(mLabelStyle)->getWidth(mLabel) + getLabelFontForStyle(LLFontGL::NORMAL)->getWidth(mLabelSuffix) + mLabelPaddingRight;
|
||||
mLabelWidth = getLabelXPos() + getLabelFontForStyle(mLabelStyle)->getWidth(mLabel.c_str()) + getLabelFontForStyle(LLFontGL::NORMAL)->getWidth(mLabelSuffix.c_str()) + mLabelPaddingRight;
|
||||
mLabelWidthDirty = false;
|
||||
}
|
||||
|
||||
|
|
@ -959,7 +959,7 @@ void LLFolderViewItem::drawLabel(const LLFontGL * font, const F32 x, const F32 y
|
|||
//--------------------------------------------------------------------------------//
|
||||
// Draw the actual label text
|
||||
//
|
||||
font->renderUTF8(mLabel, 0, x, y, color,
|
||||
font->render(mLabel, 0, x, y, color,
|
||||
LLFontGL::LEFT, LLFontGL::BOTTOM, LLFontGL::NORMAL, LLFontGL::NO_SHADOW,
|
||||
S32_MAX, getRect().getWidth() - (S32) x - mLabelPaddingRight, &right_x, /*use_ellipses*/true);
|
||||
}
|
||||
|
|
@ -1015,7 +1015,7 @@ void LLFolderViewItem::draw()
|
|||
F32 right_x = 0;
|
||||
F32 y = (F32)getRect().getHeight() - font->getLineHeight() - (F32)mTextPad - (F32)TOP_PAD;
|
||||
F32 text_left = (F32)getLabelXPos();
|
||||
std::string combined_string = mLabel + mLabelSuffix;
|
||||
LLWString combined_string = mLabel + mLabelSuffix;
|
||||
|
||||
const LLFontGL* suffix_font = getLabelFontForStyle(LLFontGL::NORMAL);
|
||||
S32 filter_offset = static_cast<S32>(mViewModelItem->getFilterStringOffset());
|
||||
|
|
@ -1025,8 +1025,8 @@ void LLFolderViewItem::draw()
|
|||
S32 top = getRect().getHeight() - TOP_PAD;
|
||||
if(mLabelSuffix.empty() || (font == suffix_font))
|
||||
{
|
||||
S32 left = ll_round(text_left) + font->getWidth(combined_string, 0, static_cast<S32>(mViewModelItem->getFilterStringOffset())) - 2;
|
||||
S32 right = left + font->getWidth(combined_string, static_cast<S32>(mViewModelItem->getFilterStringOffset()), filter_string_length) + 2;
|
||||
S32 left = ll_round(text_left) + font->getWidth(combined_string.c_str(), 0, static_cast<S32>(mViewModelItem->getFilterStringOffset())) - 2;
|
||||
S32 right = left + font->getWidth(combined_string.c_str(), static_cast<S32>(mViewModelItem->getFilterStringOffset()), filter_string_length) + 2;
|
||||
|
||||
LLUIImage* box_image = default_params.selection_image;
|
||||
LLRect box_rect(left, top, right, bottom);
|
||||
|
|
@ -1037,8 +1037,8 @@ void LLFolderViewItem::draw()
|
|||
S32 label_filter_length = llmin((S32)mLabel.size() - filter_offset, (S32)filter_string_length);
|
||||
if(label_filter_length > 0)
|
||||
{
|
||||
S32 left = (S32)(ll_round(text_left) + font->getWidthF32(mLabel, 0, llmin(filter_offset, (S32)mLabel.size()))) - 2;
|
||||
S32 right = left + (S32)font->getWidthF32(mLabel, filter_offset, label_filter_length) + 2;
|
||||
S32 left = (S32)(ll_round(text_left) + font->getWidthF32(mLabel.c_str(), 0, llmin(filter_offset, (S32)mLabel.size()))) - 2;
|
||||
S32 right = left + (S32)font->getWidthF32(mLabel.c_str(), filter_offset, label_filter_length) + 2;
|
||||
LLUIImage* box_image = default_params.selection_image;
|
||||
LLRect box_rect(left, top, right, bottom);
|
||||
box_image->draw(box_rect, sFilterBGColor);
|
||||
|
|
@ -1047,8 +1047,8 @@ void LLFolderViewItem::draw()
|
|||
if(suffix_filter_length > 0)
|
||||
{
|
||||
S32 suffix_offset = llmax(0, filter_offset - (S32)mLabel.size());
|
||||
S32 left = (S32)(ll_round(text_left) + font->getWidthF32(mLabel, 0, static_cast<S32>(mLabel.size())) + suffix_font->getWidthF32(mLabelSuffix, 0, suffix_offset))- 2;
|
||||
S32 right = left + (S32)suffix_font->getWidthF32(mLabelSuffix, suffix_offset, suffix_filter_length) + 2;
|
||||
S32 left = (S32)(ll_round(text_left) + font->getWidthF32(mLabel.c_str(), 0, static_cast<S32>(mLabel.size())) + suffix_font->getWidthF32(mLabelSuffix.c_str(), 0, suffix_offset)) - 2;
|
||||
S32 right = left + (S32)suffix_font->getWidthF32(mLabelSuffix.c_str(), suffix_offset, suffix_filter_length) + 2;
|
||||
LLUIImage* box_image = default_params.selection_image;
|
||||
LLRect box_rect(left, top, right, bottom);
|
||||
box_image->draw(box_rect, sFilterBGColor);
|
||||
|
|
@ -1090,7 +1090,7 @@ void LLFolderViewItem::draw()
|
|||
//
|
||||
if (!mLabelSuffix.empty())
|
||||
{
|
||||
suffix_font->renderUTF8( mLabelSuffix, 0, right_x, y, isFadeItem() ? color : (LLColor4)sSuffixColor,
|
||||
suffix_font->render( mLabelSuffix, 0, right_x, y, isFadeItem() ? color : (LLColor4)sSuffixColor,
|
||||
LLFontGL::LEFT, LLFontGL::BOTTOM, LLFontGL::NORMAL, LLFontGL::NO_SHADOW,
|
||||
S32_MAX, S32_MAX, &right_x);
|
||||
}
|
||||
|
|
@ -1102,9 +1102,9 @@ void LLFolderViewItem::draw()
|
|||
{
|
||||
if(mLabelSuffix.empty() || (font == suffix_font))
|
||||
{
|
||||
F32 match_string_left = text_left + font->getWidthF32(combined_string, 0, filter_offset + filter_string_length) - font->getWidthF32(combined_string, filter_offset, filter_string_length);
|
||||
F32 match_string_left = text_left + font->getWidthF32(combined_string.c_str(), 0, filter_offset + filter_string_length) - font->getWidthF32(combined_string.c_str(), filter_offset, filter_string_length);
|
||||
F32 yy = (F32)getRect().getHeight() - font->getLineHeight() - (F32)mTextPad - (F32)TOP_PAD;
|
||||
font->renderUTF8(combined_string, filter_offset, match_string_left, yy,
|
||||
font->render(combined_string, filter_offset, match_string_left, yy,
|
||||
sFilterTextColor, LLFontGL::LEFT, LLFontGL::BOTTOM, LLFontGL::NORMAL, LLFontGL::NO_SHADOW,
|
||||
filter_string_length, S32_MAX, &right_x);
|
||||
}
|
||||
|
|
@ -1113,9 +1113,9 @@ void LLFolderViewItem::draw()
|
|||
S32 label_filter_length = llmin((S32)mLabel.size() - filter_offset, (S32)filter_string_length);
|
||||
if(label_filter_length > 0)
|
||||
{
|
||||
F32 match_string_left = text_left + font->getWidthF32(mLabel, 0, filter_offset + label_filter_length) - font->getWidthF32(mLabel, filter_offset, label_filter_length);
|
||||
F32 match_string_left = text_left + font->getWidthF32(mLabel.c_str(), 0, filter_offset + label_filter_length) - font->getWidthF32(mLabel.c_str(), filter_offset, label_filter_length);
|
||||
F32 yy = (F32)getRect().getHeight() - font->getLineHeight() - (F32)mTextPad - (F32)TOP_PAD;
|
||||
font->renderUTF8(mLabel, filter_offset, match_string_left, yy,
|
||||
font->render(mLabel, filter_offset, match_string_left, yy,
|
||||
sFilterTextColor, LLFontGL::LEFT, LLFontGL::BOTTOM, LLFontGL::NORMAL, LLFontGL::NO_SHADOW,
|
||||
label_filter_length, S32_MAX, &right_x);
|
||||
}
|
||||
|
|
@ -1124,9 +1124,9 @@ void LLFolderViewItem::draw()
|
|||
if(suffix_filter_length > 0)
|
||||
{
|
||||
S32 suffix_offset = llmax(0, filter_offset - (S32)mLabel.size());
|
||||
F32 match_string_left = text_left + font->getWidthF32(mLabel, 0, static_cast<S32>(mLabel.size())) + suffix_font->getWidthF32(mLabelSuffix, 0, suffix_offset + suffix_filter_length) - suffix_font->getWidthF32(mLabelSuffix, suffix_offset, suffix_filter_length);
|
||||
F32 match_string_left = text_left + font->getWidthF32(mLabel.c_str(), 0, static_cast<S32>(mLabel.size())) + suffix_font->getWidthF32(mLabelSuffix.c_str(), 0, suffix_offset + suffix_filter_length) - suffix_font->getWidthF32(mLabelSuffix.c_str(), suffix_offset, suffix_filter_length);
|
||||
F32 yy = (F32)getRect().getHeight() - suffix_font->getLineHeight() - (F32)mTextPad - (F32)TOP_PAD;
|
||||
suffix_font->renderUTF8(mLabelSuffix, suffix_offset, match_string_left, yy, sFilterTextColor,
|
||||
suffix_font->render(mLabelSuffix, suffix_offset, match_string_left, yy, sFilterTextColor,
|
||||
LLFontGL::LEFT, LLFontGL::BOTTOM, LLFontGL::NORMAL, LLFontGL::NO_SHADOW,
|
||||
suffix_filter_length, S32_MAX, &right_x);
|
||||
}
|
||||
|
|
@ -1161,11 +1161,11 @@ bool LLFolderViewItem::handleToolTip(S32 x, S32 y, MASK mask)
|
|||
return false;
|
||||
|
||||
S32 nStart = mArrowSize + mTextPad + mIconWidth + mIconPad + mIndentation;
|
||||
S32 nWidth = getLabelFontForStyle(mLabelStyle)->getWidth(mLabel) + nStart;
|
||||
S32 nWidth = getLabelFontForStyle(mLabelStyle)->getWidth(mLabel.c_str()) + nStart;
|
||||
|
||||
if (getRoot()->getParentPanel()->getRect().getWidth() < nWidth) // Label is truncated, display tooltip
|
||||
{
|
||||
setToolTip(mLabel);
|
||||
setToolTip(wstring_to_utf8str(mLabel));
|
||||
return LLView::handleToolTip(x, y, mask);
|
||||
}
|
||||
else
|
||||
|
|
|
|||
|
|
@ -93,14 +93,14 @@ protected:
|
|||
|
||||
LLFolderViewItem(const Params& p);
|
||||
|
||||
std::string mLabel;
|
||||
LLWString mLabel;
|
||||
S32 mLabelWidth;
|
||||
bool mLabelWidthDirty;
|
||||
S32 mLabelPaddingRight;
|
||||
LLFolderViewFolder* mParentFolder;
|
||||
LLPointer<LLFolderViewModelItem> mViewModelItem;
|
||||
LLFontGL::StyleFlags mLabelStyle;
|
||||
std::string mLabelSuffix;
|
||||
LLWString mLabelSuffix;
|
||||
bool mSuffixNeedsRefresh; //suffix and icons
|
||||
LLUIImagePtr mIcon,
|
||||
mIconOpen,
|
||||
|
|
@ -252,7 +252,7 @@ public:
|
|||
// This method returns the label displayed on the view. This
|
||||
// method was primarily added to allow sorting on the folder
|
||||
// contents possible before the entire view has been constructed.
|
||||
const std::string& getLabel() const { return mLabel; }
|
||||
const LLWString& getLabel() const { return mLabel; }
|
||||
|
||||
LLFolderViewFolder* getParentFolder( void ) { return mParentFolder; }
|
||||
const LLFolderViewFolder* getParentFolder( void ) const { return mParentFolder; }
|
||||
|
|
|
|||
|
|
@ -566,8 +566,8 @@ void LLMenuItemGL::draw( void )
|
|||
std::string::size_type offset = upper_case_label.find(mJumpKey);
|
||||
if (offset != std::string::npos)
|
||||
{
|
||||
S32 x_begin = LEFT_PLAIN_PIXELS + mFont->getWidth(mLabel, 0, static_cast<S32>(offset));
|
||||
S32 x_end = LEFT_PLAIN_PIXELS + mFont->getWidth(mLabel, 0, static_cast<S32>(offset) + 1);
|
||||
S32 x_begin = LEFT_PLAIN_PIXELS + mFont->getWidth(mLabel.getWString().c_str(), 0, static_cast<S32>(offset));
|
||||
S32 x_end = LEFT_PLAIN_PIXELS + mFont->getWidth(mLabel.getWString().c_str(), 0, static_cast<S32>(offset) + 1);
|
||||
gl_line_2d(x_begin, (MENU_ITEM_PADDING / 2) + 1, x_end, (MENU_ITEM_PADDING / 2) + 1);
|
||||
}
|
||||
}
|
||||
|
|
@ -1671,9 +1671,9 @@ void LLMenuItemBranchDownGL::draw( void )
|
|||
std::string::size_type offset = upper_case_label.find(getJumpKey());
|
||||
if (offset != std::string::npos)
|
||||
{
|
||||
S32 x_offset = ll_round((F32)getRect().getWidth() / 2.f - getFont()->getWidthF32(mLabel.getString(), 0, S32_MAX) / 2.f);
|
||||
S32 x_begin = x_offset + getFont()->getWidth(mLabel, 0, static_cast<S32>(offset));
|
||||
S32 x_end = x_offset + getFont()->getWidth(mLabel, 0, static_cast<S32>(offset) + 1);
|
||||
S32 x_offset = ll_round((F32)getRect().getWidth() / 2.f - getFont()->getWidthF32(mLabel.getWString().c_str(), 0, S32_MAX) / 2.f);
|
||||
S32 x_begin = x_offset + getFont()->getWidth(mLabel.getWString().c_str(), 0, static_cast<S32>(offset));
|
||||
S32 x_end = x_offset + getFont()->getWidth(mLabel.getWString().c_str(), 0, static_cast<S32>(offset) + 1);
|
||||
gl_line_2d(x_begin, LABEL_BOTTOM_PAD_PIXELS, x_end, LABEL_BOTTOM_PAD_PIXELS);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -245,7 +245,7 @@ bool LLMultiSliderCtrl::setLabelArg( const std::string& key, const LLStringExpli
|
|||
res = mLabelBox->setTextArg(key, text);
|
||||
if (res && mLabelWidth == 0)
|
||||
{
|
||||
S32 label_width = mFont->getWidth(mLabelBox->getText());
|
||||
S32 label_width = mFont->getWidth(mLabelBox->getWText().c_str());
|
||||
LLRect rect = mLabelBox->getRect();
|
||||
S32 prev_right = rect.mRight;
|
||||
rect.mRight = rect.mLeft + label_width;
|
||||
|
|
|
|||
|
|
@ -305,7 +305,7 @@ bool LLScrollListText::needsToolTip() const
|
|||
return LLScrollListCell::needsToolTip();
|
||||
|
||||
// ...otherwise, show tooltips for truncated text
|
||||
return mFont->getWidth(mText.getString()) > getWidth();
|
||||
return mFont->getWidth(mText.getWString().c_str()) > getWidth();
|
||||
}
|
||||
|
||||
//virtual
|
||||
|
|
@ -328,7 +328,7 @@ LLScrollListText::~LLScrollListText()
|
|||
|
||||
S32 LLScrollListText::getContentWidth() const
|
||||
{
|
||||
return mFont->getWidth(mText.getString());
|
||||
return mFont->getWidth(mText.getWString().c_str());
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -394,18 +394,18 @@ void LLScrollListText::draw(const LLColor4& color, const LLColor4& highlight_col
|
|||
switch(mFontAlignment)
|
||||
{
|
||||
case LLFontGL::LEFT:
|
||||
left = mFont->getWidth(mText.getString(), 1, mHighlightOffset);
|
||||
left = mFont->getWidth(mText.getWString().c_str(), 1, mHighlightOffset);
|
||||
break;
|
||||
case LLFontGL::RIGHT:
|
||||
left = getWidth() - mFont->getWidth(mText.getString(), mHighlightOffset, S32_MAX);
|
||||
left = getWidth() - mFont->getWidth(mText.getWString().c_str(), mHighlightOffset, S32_MAX);
|
||||
break;
|
||||
case LLFontGL::HCENTER:
|
||||
left = (getWidth() - mFont->getWidth(mText.getString())) / 2;
|
||||
left = (getWidth() - mFont->getWidth(mText.getWString().c_str())) / 2;
|
||||
break;
|
||||
}
|
||||
LLRect highlight_rect(left - 2,
|
||||
mFont->getLineHeight() + 1,
|
||||
left + mFont->getWidth(mText.getString(), mHighlightOffset, mHighlightCount) + 1,
|
||||
left + mFont->getWidth(mText.getWString().c_str(), mHighlightOffset, mHighlightCount) + 1,
|
||||
1);
|
||||
mRoundedRectImage->draw(highlight_rect, highlight_color);
|
||||
}
|
||||
|
|
@ -613,18 +613,18 @@ void LLScrollListIconText::draw(const LLColor4& color, const LLColor4& highlight
|
|||
switch (mFontAlignment)
|
||||
{
|
||||
case LLFontGL::LEFT:
|
||||
left = mFont->getWidth(mText.getString(), icon_space + 1, mHighlightOffset);
|
||||
left = mFont->getWidth(mText.getWString().c_str(), icon_space + 1, mHighlightOffset);
|
||||
break;
|
||||
case LLFontGL::RIGHT:
|
||||
left = getWidth() - mFont->getWidth(mText.getString(), mHighlightOffset, S32_MAX) - icon_space;
|
||||
left = getWidth() - mFont->getWidth(mText.getWString().c_str(), mHighlightOffset, S32_MAX) - icon_space;
|
||||
break;
|
||||
case LLFontGL::HCENTER:
|
||||
left = (getWidth() - mFont->getWidth(mText.getString()) - icon_space) / 2;
|
||||
left = (getWidth() - mFont->getWidth(mText.getWString().c_str()) - icon_space) / 2;
|
||||
break;
|
||||
}
|
||||
LLRect highlight_rect(left - 2,
|
||||
mFont->getLineHeight() + 1,
|
||||
left + mFont->getWidth(mText.getString(), mHighlightOffset, mHighlightCount) + 1,
|
||||
left + mFont->getWidth(mText.getWString().c_str(), mHighlightOffset, mHighlightCount) + 1,
|
||||
1);
|
||||
mRoundedRectImage->draw(highlight_rect, highlight_color);
|
||||
}
|
||||
|
|
@ -642,12 +642,12 @@ void LLScrollListIconText::draw(const LLColor4& color, const LLColor4& highlight
|
|||
break;
|
||||
case LLFontGL::RIGHT:
|
||||
start_text_x = (F32)getWidth();
|
||||
start_icon_x = getWidth() - mFont->getWidth(mText.getString()) - icon_space;
|
||||
start_icon_x = getWidth() - mFont->getWidth(mText.getWString().c_str()) - icon_space;
|
||||
break;
|
||||
case LLFontGL::HCENTER:
|
||||
F32 center = (F32)getWidth()* 0.5f;
|
||||
start_text_x = center + ((F32)icon_space * 0.5f);
|
||||
start_icon_x = (S32)(center - (((F32)icon_space + mFont->getWidth(mText.getString())) * 0.5f));
|
||||
start_icon_x = (S32)(center - (((F32)icon_space + mFont->getWidth(mText.getWString().c_str())) * 0.5f));
|
||||
break;
|
||||
}
|
||||
mFont->render(mText.getWString(), 0,
|
||||
|
|
|
|||
|
|
@ -749,7 +749,7 @@ S32 LLScrollListCtrl::calcMaxContentWidth()
|
|||
if (mColumnWidthsDirty)
|
||||
{
|
||||
// update max content width for this column, by looking at all items
|
||||
column->mMaxContentWidth = column->mHeader ? LLFontGL::getFontSansSerifSmall()->getWidth(column->mLabel) + mColumnPadding + HEADING_TEXT_PADDING : 0;
|
||||
column->mMaxContentWidth = column->mHeader ? LLFontGL::getFontSansSerifSmall()->getWidth(column->mLabel.getWString().c_str()) + mColumnPadding + HEADING_TEXT_PADDING : 0;
|
||||
item_list::iterator iter;
|
||||
for (iter = mItemList.begin(); iter != mItemList.end(); iter++)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -225,7 +225,7 @@ bool LLSliderCtrl::setLabelArg( const std::string& key, const LLStringExplicit&
|
|||
res = mLabelBox->setTextArg(key, text);
|
||||
if (res && mLabelFont && mLabelWidth == 0)
|
||||
{
|
||||
S32 label_width = mLabelFont->getWidth(mLabelBox->getText());
|
||||
S32 label_width = mLabelFont->getWidth(mLabelBox->getWText().c_str());
|
||||
LLRect rect = mLabelBox->getRect();
|
||||
S32 prev_right = rect.mRight;
|
||||
rect.mRight = rect.mLeft + label_width;
|
||||
|
|
|
|||
|
|
@ -676,7 +676,7 @@ LLRect LLStatBar::getRequiredRect()
|
|||
|
||||
void LLStatBar::drawLabelAndValue( F32 value, std::string &label, LLRect &bar_rect, S32 decimal_digits )
|
||||
{
|
||||
LLFontGL::getFontMonospace()->renderUTF8(mLabel, 0, 0, getRect().getHeight(), LLColor4(1.f, 1.f, 1.f, 1.f),
|
||||
LLFontGL::getFontMonospace()->render(mLabel.getWString(), 0, 0.F, (F32)getRect().getHeight(), LLColor4(1.f, 1.f, 1.f, 1.f),
|
||||
LLFontGL::LEFT, LLFontGL::TOP);
|
||||
|
||||
std::string value_str = !llisnan(value)
|
||||
|
|
@ -758,14 +758,14 @@ void LLStatBar::drawTicks( F32 min, F32 max, F32 value_scale, LLRect &bar_rect )
|
|||
{
|
||||
decimal_digits = 0;
|
||||
}
|
||||
std::string tick_label = llformat("%.*f", decimal_digits, tick_value);
|
||||
S32 tick_label_width = LLFontGL::getFontMonospace()->getWidth(tick_label);
|
||||
LLWString tick_label = utf8str_to_wstring(llformat("%.*f", decimal_digits, tick_value));
|
||||
S32 tick_label_width = LLFontGL::getFontMonospace()->getWidth(tick_label.c_str());
|
||||
if (mOrientation == HORIZONTAL)
|
||||
{
|
||||
if (tick_begin > last_label + MIN_LABEL_SPACING)
|
||||
{
|
||||
gl_rect_2d(bar_rect.mLeft, tick_end, bar_rect.mRight - TICK_LENGTH, tick_begin, LLColor4(1.f, 1.f, 1.f, 0.25f));
|
||||
LLFontGL::getFontMonospace()->renderUTF8(tick_label, 0, bar_rect.mRight, tick_begin,
|
||||
LLFontGL::getFontMonospace()->render(tick_label, 0, (F32)bar_rect.mRight, (F32)tick_begin,
|
||||
LLColor4(1.f, 1.f, 1.f, 0.5f),
|
||||
LLFontGL::LEFT, LLFontGL::VCENTER);
|
||||
last_label = tick_begin;
|
||||
|
|
@ -781,7 +781,7 @@ void LLStatBar::drawTicks( F32 min, F32 max, F32 value_scale, LLRect &bar_rect )
|
|||
{
|
||||
gl_rect_2d(tick_begin, bar_rect.mTop, tick_end, bar_rect.mBottom - TICK_LENGTH, LLColor4(1.f, 1.f, 1.f, 0.25f));
|
||||
S32 label_pos = tick_begin - ll_round((F32)tick_label_width * ((F32)tick_begin / (F32)bar_rect.getWidth()));
|
||||
LLFontGL::getFontMonospace()->renderUTF8(tick_label, 0, label_pos, bar_rect.mBottom - TICK_LENGTH,
|
||||
LLFontGL::getFontMonospace()->render(tick_label, 0, (F32)label_pos, (F32)(bar_rect.mBottom - TICK_LENGTH),
|
||||
LLColor4(1.f, 1.f, 1.f, 0.5f),
|
||||
LLFontGL::LEFT, LLFontGL::TOP);
|
||||
last_label = label_pos;
|
||||
|
|
|
|||
|
|
@ -107,8 +107,6 @@ void LLStatGraph::draw()
|
|||
mUpdateTimer.reset();
|
||||
}
|
||||
|
||||
LLColor4 color;
|
||||
|
||||
threshold_vec_t::iterator it = std::lower_bound(mThresholds.begin(), mThresholds.end(), Threshold(mValue / mMax, LLUIColor()));
|
||||
|
||||
if (it != mThresholds.begin())
|
||||
|
|
@ -116,15 +114,14 @@ void LLStatGraph::draw()
|
|||
it--;
|
||||
}
|
||||
|
||||
color = LLUIColorTable::instance().getColor( "MenuDefaultBgColor" );
|
||||
gGL.color4fv(color.mV);
|
||||
static LLColor4 default_color = LLUIColorTable::instance().getColor( "MenuDefaultBgColor" );
|
||||
gGL.color4fv(default_color.mV);
|
||||
gl_rect_2d(0, getRect().getHeight(), getRect().getWidth(), 0, true);
|
||||
|
||||
gGL.color4fv(LLColor4::black.mV);
|
||||
gl_rect_2d(0, getRect().getHeight(), getRect().getWidth(), 0, false);
|
||||
|
||||
color = it->mColor;
|
||||
gGL.color4fv(color.mV);
|
||||
gGL.color4fv(it->mColor().mV);
|
||||
gl_rect_2d(1, ll_round(frac*getRect().getHeight()), getRect().getWidth() - 1, 0, true);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ public:
|
|||
: LLTextSegment(start, end),
|
||||
mEditor(editor),
|
||||
mStyle(style),
|
||||
mExpanderLabel(more_text)
|
||||
mExpanderLabel(utf8str_to_wstring(more_text))
|
||||
{}
|
||||
|
||||
/*virtual*/ bool getDimensionsF32(S32 first_char, S32 num_chars, F32& width, S32& height) const
|
||||
|
|
@ -80,7 +80,7 @@ public:
|
|||
/*virtual*/ F32 draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRectf& draw_rect)
|
||||
{
|
||||
F32 right_x;
|
||||
mStyle->getFont()->renderUTF8(mExpanderLabel, start,
|
||||
mStyle->getFont()->render(mExpanderLabel, start,
|
||||
draw_rect.mRight, draw_rect.mTop,
|
||||
mStyle->getColor(),
|
||||
LLFontGL::RIGHT, LLFontGL::TOP,
|
||||
|
|
@ -103,7 +103,7 @@ public:
|
|||
private:
|
||||
LLTextBase& mEditor;
|
||||
LLStyleSP mStyle;
|
||||
std::string mExpanderLabel;
|
||||
LLWString mExpanderLabel;
|
||||
};
|
||||
|
||||
LLExpandableTextBox::LLTextBoxEx::Params::Params()
|
||||
|
|
|
|||
|
|
@ -60,10 +60,11 @@ bool LLFloaterConversationLog::postBuild()
|
|||
}
|
||||
|
||||
// Use the context menu of the Conversation list for the Conversation tab gear menu.
|
||||
mConversationsGearBtn = getChild<LLMenuButton>("conversations_gear_btn");
|
||||
LLToggleableMenu* conversations_gear_menu = mConversationLogList->getContextMenu();
|
||||
if (conversations_gear_menu)
|
||||
{
|
||||
getChild<LLMenuButton>("conversations_gear_btn")->setMenu(conversations_gear_menu, LLMenuButton::MP_BOTTOM_LEFT);
|
||||
mConversationsGearBtn->setMenu(conversations_gear_menu, LLMenuButton::MP_BOTTOM_LEFT);
|
||||
}
|
||||
|
||||
getChild<LLFilterEditor>("people_filter_input")->setCommitCallback(boost::bind(&LLFloaterConversationLog::onFilterEdit, this, _2));
|
||||
|
|
@ -73,7 +74,7 @@ bool LLFloaterConversationLog::postBuild()
|
|||
|
||||
void LLFloaterConversationLog::draw()
|
||||
{
|
||||
getChild<LLMenuButton>("conversations_gear_btn")->setEnabled(mConversationLogList->getSelectedItem() != NULL);
|
||||
mConversationsGearBtn->setEnabled(mConversationLogList->getSelectedItem() != NULL);
|
||||
LLFloater::draw();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@
|
|||
#include "llfloater.h"
|
||||
|
||||
class LLConversationLogList;
|
||||
class LLMenuButton;
|
||||
|
||||
class LLFloaterConversationLog : public LLFloater
|
||||
{
|
||||
|
|
@ -55,6 +56,7 @@ private:
|
|||
bool isActionChecked(const LLSD& userdata);
|
||||
|
||||
LLConversationLogList* mConversationLogList;
|
||||
LLMenuButton* mConversationsGearBtn = nullptr;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -2188,9 +2188,11 @@ void LLGroupMgr::processGroupBanRequest(const LLSD& content)
|
|||
LLGroupMgr::getInstance()->notifyObservers(GC_BANLIST);
|
||||
}
|
||||
|
||||
void LLGroupMgr::groupMembersRequestCoro(std::string url, LLUUID group_id, U32 page_size, U32 page_start, std::string sort_column)
|
||||
void LLGroupMgr::groupMembersRequestCoro(std::string url, LLUUID group_id, U32 page_size, U32 page_start, U32 sort_column, bool sort_descending)
|
||||
{
|
||||
LL_INFOS("GrpMgr") << "group_id: '" << group_id << "', sort_column: '" << sort_column << "', page_size: " << page_size << ", page_start: " << page_start << LL_ENDL;
|
||||
LL_INFOS("GrpMgr") << "group_id: '" << group_id << "'"
|
||||
<< ", page_size: " << page_size << ", page_start: " << page_start
|
||||
<< ", sort_column: " << sort_column << ", sort_descending: " << sort_descending << LL_ENDL;
|
||||
LLCore::HttpRequest::policy_t httpPolicy(LLCore::HttpRequest::DEFAULT_POLICY_ID);
|
||||
LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t
|
||||
httpAdapter(new LLCoreHttpUtil::HttpCoroutineAdapter("groupMembersRequest", httpPolicy));
|
||||
|
|
@ -2199,6 +2201,7 @@ void LLGroupMgr::groupMembersRequestCoro(std::string url, LLUUID group_id, U32 p
|
|||
|
||||
LLSD postData = LLSD::emptyMap();
|
||||
postData["group_id"] = group_id;
|
||||
|
||||
if (page_size)
|
||||
{
|
||||
postData["page_size"] = LLSD::Integer(page_size);
|
||||
|
|
@ -2206,12 +2209,19 @@ void LLGroupMgr::groupMembersRequestCoro(std::string url, LLUUID group_id, U32 p
|
|||
{
|
||||
postData["page_start"] = LLSD::Integer(page_start);
|
||||
}
|
||||
if (!sort_column.empty())
|
||||
}
|
||||
|
||||
if (sort_column)
|
||||
{
|
||||
postData["sort_column"] = LLSD::Integer(sort_column);
|
||||
if (sort_descending)
|
||||
{
|
||||
postData["sort_column"] = sort_column;
|
||||
postData["sort_descending"] = 1;
|
||||
}
|
||||
}
|
||||
|
||||
mMemberRequestInFlight = true;
|
||||
|
||||
LLSD response = httpAdapter->postAndSuspend(httpRequest, url, postData, httpOpts);
|
||||
|
||||
mMemberRequestInFlight = false;
|
||||
|
|
@ -2226,10 +2236,10 @@ void LLGroupMgr::groupMembersRequestCoro(std::string url, LLUUID group_id, U32 p
|
|||
}
|
||||
|
||||
response.erase(LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS);
|
||||
processCapGroupMembersResponse(response, page_size, page_start, sort_column);
|
||||
processCapGroupMembersResponse(response, url, page_size, page_start, sort_column, sort_descending);
|
||||
}
|
||||
|
||||
void LLGroupMgr::sendCapGroupMembersRequest(const LLUUID& group_id, U32 page_size, U32 page_start, const std::string& sort_column)
|
||||
void LLGroupMgr::sendCapGroupMembersRequest(const LLUUID& group_id, U32 page_size, U32 page_start, const std::string& sort_column_name, bool sort_descending)
|
||||
{
|
||||
static U32 lastGroupMemberRequestFrame = 0;
|
||||
|
||||
|
|
@ -2238,6 +2248,10 @@ void LLGroupMgr::sendCapGroupMembersRequest(const LLUUID& group_id, U32 page_siz
|
|||
if ((lastGroupMemberRequestFrame == gFrameCount) || mMemberRequestInFlight)
|
||||
return;
|
||||
|
||||
LL_INFOS("GrpMgr") << "group_id: '" << group_id << "'"
|
||||
<< ", page_size: " << page_size << ", page_start: " << page_start
|
||||
<< ", sort_column_name: '" << sort_column_name << "', sort_descending: " << sort_descending << LL_ENDL;
|
||||
|
||||
LLViewerRegion* currentRegion = gAgent.getRegion();
|
||||
// Thank you FS:Ansariel!
|
||||
if (!currentRegion)
|
||||
|
|
@ -2269,18 +2283,34 @@ void LLGroupMgr::sendCapGroupMembersRequest(const LLUUID& group_id, U32 page_siz
|
|||
|
||||
lastGroupMemberRequestFrame = gFrameCount;
|
||||
|
||||
mMemberRequestInFlight = true;
|
||||
U32 sort_column = 0; // No sorting by default
|
||||
if (!sort_column_name.empty())
|
||||
{
|
||||
static const std::vector<std::string> column_names = { "name", "donated", "online", "title" };
|
||||
auto it = std::find(column_names.begin(), column_names.end(), sort_column_name);
|
||||
if (it == column_names.end())
|
||||
{
|
||||
LL_WARNS("GrpMgr") << "Invalid column name: '" << sort_column_name << "'" << LL_ENDL;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Use offset (1) because 0 means "no sorting"
|
||||
sort_column = 1 + (U32)std::distance(column_names.begin(), it);
|
||||
}
|
||||
}
|
||||
|
||||
LLCoros::instance().launch("LLGroupMgr::groupMembersRequestCoro", [&]()
|
||||
{
|
||||
groupMembersRequestCoro(cap_url, group_id, page_size, page_start, sort_column);
|
||||
groupMembersRequestCoro(cap_url, group_id, page_size, page_start, sort_column, sort_descending);
|
||||
});
|
||||
}
|
||||
|
||||
void LLGroupMgr::processCapGroupMembersResponse(const LLSD& response, U32 page_size, U32 page_start, const std::string& sort_column)
|
||||
void LLGroupMgr::processCapGroupMembersResponse(const LLSD& response, const std::string& url, U32 page_size, U32 page_start, U32 sort_column, bool sort_descending)
|
||||
{
|
||||
LLUUID group_id = response["group_id"].asUUID();
|
||||
LL_INFOS("GrpMgr") << "group_id: '" << group_id << "', sort_column: '" << sort_column << "', page_size: " << page_size << ", page_start: " << page_start << LL_ENDL;
|
||||
LL_INFOS("GrpMgr") << "group_id: '" << group_id << "'"
|
||||
<< ", page_size: " << page_size << ", page_start: " << page_start
|
||||
<< ", sort_column: " << sort_column << ", sort_descending: " << sort_descending << LL_ENDL;
|
||||
|
||||
// Did we get anything in content?
|
||||
if (!response.size())
|
||||
|
|
@ -2400,7 +2430,10 @@ void LLGroupMgr::processCapGroupMembersResponse(const LLSD& response, U32 page_s
|
|||
|
||||
if (page_size && members_loaded >= page_size && member_count > members_before)
|
||||
{
|
||||
sendCapGroupMembersRequest(group_id, page_size, member_count, sort_column);
|
||||
LLCoros::instance().launch("LLGroupMgr::groupMembersRequestCoro", [&]()
|
||||
{
|
||||
groupMembersRequestCoro(url, group_id, page_size, page_start, sort_column, sort_descending);
|
||||
});
|
||||
}
|
||||
|
||||
// Make the role-member data request
|
||||
|
|
|
|||
|
|
@ -424,7 +424,7 @@ public:
|
|||
|
||||
|
||||
void sendCapGroupMembersRequest(const LLUUID& group_id,
|
||||
U32 page_size = 0, U32 page_start = 0, const std::string& sort_column = LLStringUtil::null);
|
||||
U32 page_size = 0, U32 page_start = 0, const std::string& sort_column_name = LLStringUtil::null, bool sort_descending = false);
|
||||
|
||||
void cancelGroupRoleChanges(const LLUUID& group_id);
|
||||
|
||||
|
|
@ -447,8 +447,8 @@ public:
|
|||
void clearGroupData(const LLUUID& group_id);
|
||||
|
||||
private:
|
||||
void groupMembersRequestCoro(std::string url, LLUUID group_id, U32 page_size, U32 page_start, std::string sort_column);
|
||||
void processCapGroupMembersResponse(const LLSD& response, U32 page_size, U32 page_start, const std::string& sort_column);
|
||||
void groupMembersRequestCoro(std::string url, LLUUID group_id, U32 page_size, U32 page_start, U32 sort_column, bool sort_descending);
|
||||
void processCapGroupMembersResponse(const LLSD& response, const std::string& url, U32 page_size, U32 page_start, U32 sort_column, bool sort_descending);
|
||||
|
||||
void getGroupBanRequestCoro(std::string url, LLUUID group_id);
|
||||
void postGroupBanRequestCoro(std::string url, LLUUID group_id, U32 action, uuid_vec_t ban_list, bool update);
|
||||
|
|
|
|||
|
|
@ -739,13 +739,16 @@ void LLOutfitGallery::onFilterSubStringChanged(const std::string& new_string, co
|
|||
|
||||
void LLOutfitGallery::onHighlightBaseOutfit(LLUUID base_id, LLUUID prev_id)
|
||||
{
|
||||
if (mOutfitMap[base_id])
|
||||
auto base_it = mOutfitMap.find(base_id);
|
||||
if (base_it != mOutfitMap.end())
|
||||
{
|
||||
mOutfitMap[base_id]->setOutfitWorn(true);
|
||||
base_it->second->setOutfitWorn(true);
|
||||
}
|
||||
if (mOutfitMap[prev_id])
|
||||
|
||||
auto prev_it = mOutfitMap.find(prev_id);
|
||||
if (prev_it != mOutfitMap.end())
|
||||
{
|
||||
mOutfitMap[prev_id]->setOutfitWorn(false);
|
||||
prev_it->second->setOutfitWorn(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -859,13 +862,16 @@ void LLOutfitGallery::onChangeOutfitSelection(LLWearableItemsList* list, const L
|
|||
{
|
||||
if (mSelectedOutfitUUID == category_id)
|
||||
return;
|
||||
if (mOutfitMap[mSelectedOutfitUUID])
|
||||
|
||||
auto selected_it = mOutfitMap.find(mSelectedOutfitUUID);
|
||||
if (selected_it != mOutfitMap.end())
|
||||
{
|
||||
mOutfitMap[mSelectedOutfitUUID]->setSelected(false);
|
||||
selected_it->second->setSelected(false);
|
||||
}
|
||||
if (mOutfitMap[category_id])
|
||||
auto category_it = mOutfitMap.find(category_id);
|
||||
if (category_it != mOutfitMap.end())
|
||||
{
|
||||
mOutfitMap[category_id]->setSelected(true);
|
||||
category_it->second->setSelected(true);
|
||||
}
|
||||
// mSelectedOutfitUUID will be set in LLOutfitListBase::ChangeOutfitSelection
|
||||
}
|
||||
|
|
@ -887,9 +893,10 @@ bool LLOutfitGallery::canWearSelected()
|
|||
|
||||
bool LLOutfitGallery::hasDefaultImage(const LLUUID& outfit_cat_id)
|
||||
{
|
||||
if (mOutfitMap[outfit_cat_id])
|
||||
auto outfit_it = mOutfitMap.find(outfit_cat_id);
|
||||
if (outfit_it != mOutfitMap.end())
|
||||
{
|
||||
return mOutfitMap[outfit_cat_id]->isDefaultImage();
|
||||
return outfit_it->second->isDefaultImage();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
@ -937,6 +944,7 @@ LLOutfitGalleryItem::~LLOutfitGalleryItem()
|
|||
|
||||
bool LLOutfitGalleryItem::postBuild()
|
||||
{
|
||||
mPreviewIcon = getChild<LLIconCtrl>("preview_outfit");
|
||||
setDefaultImage();
|
||||
|
||||
mOutfitNameText = getChild<LLTextBox>("outfit_name");
|
||||
|
|
@ -952,10 +960,12 @@ void LLOutfitGalleryItem::draw()
|
|||
LLPanel::draw();
|
||||
|
||||
// Draw border
|
||||
LLUIColor border_color = LLUIColorTable::instance().getColor(mSelected ? "OutfitGalleryItemSelected" : "OutfitGalleryItemUnselected", LLColor4::white);
|
||||
LLRect border = getChildView("preview_outfit")->getRect();
|
||||
static LLUIColor selected_color = LLUIColorTable::instance().getColor("OutfitGalleryItemSelected", LLColor4::white);
|
||||
static LLUIColor unselected_color = LLUIColorTable::instance().getColor("OutfitGalleryItemUnselected", LLColor4::white);
|
||||
const LLColor4& border_color = mSelected ? selected_color : unselected_color;
|
||||
LLRect border = mPreviewIcon->getRect();
|
||||
border.mRight = border.mRight + 1;
|
||||
gl_rect_2d(border, border_color.get(), false);
|
||||
gl_rect_2d(border, border_color, false);
|
||||
|
||||
// If the floater is focused, don't apply its alpha to the texture (STORM-677).
|
||||
const F32 alpha = getTransparencyType() == TT_ACTIVE ? 1.0f : getCurrentTransparency();
|
||||
|
|
@ -1111,7 +1121,7 @@ bool LLOutfitGalleryItem::setImageAssetId(LLUUID image_asset_id)
|
|||
{
|
||||
mImageAssetId = image_asset_id;
|
||||
mTexturep = texture;
|
||||
getChildView("preview_outfit")->setVisible(false);
|
||||
mPreviewIcon->setVisible(false);
|
||||
mDefaultImage = false;
|
||||
mImageUpdatePending = (texture->getDiscardLevel() == -1);
|
||||
return true;
|
||||
|
|
@ -1128,7 +1138,7 @@ void LLOutfitGalleryItem::setDefaultImage()
|
|||
{
|
||||
mTexturep = NULL;
|
||||
mImageAssetId.setNull();
|
||||
getChildView("preview_outfit")->setVisible(true);
|
||||
mPreviewIcon->setVisible(true);
|
||||
mDefaultImage = true;
|
||||
mImageUpdatePending = false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -261,6 +261,7 @@ private:
|
|||
LLTextBox* mOutfitNameText;
|
||||
LLTextBox* mOutfitWornText;
|
||||
LLPanel* mTextBgPanel;
|
||||
LLIconCtrl* mPreviewIcon = nullptr;
|
||||
bool mSelected;
|
||||
bool mWorn;
|
||||
bool mDefaultImage;
|
||||
|
|
|
|||
|
|
@ -48,6 +48,7 @@
|
|||
#include "llscrollingpanelparam.h"
|
||||
#include "llradiogroup.h"
|
||||
#include "llnotificationsutil.h"
|
||||
#include "lliconctrl.h"
|
||||
|
||||
#include "llcolorswatch.h"
|
||||
#include "lltexturectrl.h"
|
||||
|
|
@ -312,12 +313,8 @@ LLEditWearableDictionary::Subparts::Subparts()
|
|||
addEntry(SUBPART_PHYSICS_BREASTS_UPDOWN, new SubpartEntry(SUBPART_PHYSICS_BREASTS_UPDOWN, "mTorso", "physics_breasts_updown", "physics_breasts_updown_param_list", "physics_breasts_updown_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(0.f, 0.f, 0.f),SEX_FEMALE));
|
||||
addEntry(SUBPART_PHYSICS_BREASTS_INOUT, new SubpartEntry(SUBPART_PHYSICS_BREASTS_INOUT, "mTorso", "physics_breasts_inout", "physics_breasts_inout_param_list", "physics_breasts_inout_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(0.f, 0.f, 0.f),SEX_FEMALE));
|
||||
addEntry(SUBPART_PHYSICS_BREASTS_LEFTRIGHT, new SubpartEntry(SUBPART_PHYSICS_BREASTS_LEFTRIGHT, "mTorso", "physics_breasts_leftright", "physics_breasts_leftright_param_list", "physics_breasts_leftright_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(0.f, 0.f, 0.f),SEX_FEMALE));
|
||||
// <FS:Ansariel> Fix XUI warning
|
||||
//addEntry(SUBPART_PHYSICS_BELLY_UPDOWN, new SubpartEntry(SUBPART_PHYSICS_BELLY_UPDOWN, "mTorso", "physics_belly_updown", "physics_belly_updown_param_list", "physics_belly_updown_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(0.f, 0.f, 0.f),SEX_BOTH));
|
||||
//addEntry(SUBPART_PHYSICS_BUTT_UPDOWN, new SubpartEntry(SUBPART_PHYSICS_BUTT_UPDOWN, "mTorso", "physics_butt_updown", "physics_butt_updown_param_list", "physics_butt_updown_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(0.f, 0.f, 0.f),SEX_BOTH));
|
||||
addEntry(SUBPART_PHYSICS_BELLY_UPDOWN, new SubpartEntry(SUBPART_PHYSICS_BELLY_UPDOWN, "mTorso", "physics_belly_updown", "physics_belly_updown_param_list", "physics_belly_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(0.f, 0.f, 0.f),SEX_BOTH));
|
||||
addEntry(SUBPART_PHYSICS_BUTT_UPDOWN, new SubpartEntry(SUBPART_PHYSICS_BUTT_UPDOWN, "mTorso", "physics_butt_updown", "physics_butt_updown_param_list", "physics_butt_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(0.f, 0.f, 0.f),SEX_BOTH));
|
||||
// </FS:Ansariel>
|
||||
addEntry(SUBPART_PHYSICS_BUTT_LEFTRIGHT, new SubpartEntry(SUBPART_PHYSICS_BUTT_LEFTRIGHT, "mTorso", "physics_butt_leftright", "physics_butt_leftright_param_list", "physics_butt_leftright_tab", LLVector3d(0.f, 0.f, 0.f), LLVector3d(0.f, 0.f, 0.f),SEX_BOTH));
|
||||
addEntry(SUBPART_PHYSICS_ADVANCED, new SubpartEntry(SUBPART_PHYSICS_ADVANCED, "mTorso", "physics_advanced", "physics_advanced_param_list", "physics_advanced_tab", LLVector3d(0.f, 0.f, 0.f), LLVector3d(0.f, 0.f, 0.f),SEX_BOTH));
|
||||
}
|
||||
|
|
@ -740,8 +737,14 @@ bool LLPanelEditWearable::postBuild()
|
|||
mPanelTitle = getChild<LLTextBox>("edit_wearable_title");
|
||||
mDescTitle = getChild<LLTextBox>("description_text");
|
||||
|
||||
getChild<LLRadioGroup>("sex_radio")->setCommitCallback(boost::bind(&LLPanelEditWearable::onCommitSexChange, this));
|
||||
getChild<LLButton>("save_as_button")->setCommitCallback(boost::bind(&LLPanelEditWearable::onSaveAsButtonClicked, this));
|
||||
mSexRadio = getChild<LLRadioGroup>("sex_radio");
|
||||
mSexRadio->setCommitCallback(boost::bind(&LLPanelEditWearable::onCommitSexChange, this));
|
||||
|
||||
mMaleIcon = getChild<LLIconCtrl>("male_icon");
|
||||
mFemaleIcon = getChild<LLIconCtrl>("female_icon");
|
||||
|
||||
mBtnSaveAs = getChild<LLButton>("save_as_button");
|
||||
mBtnSaveAs->setCommitCallback(boost::bind(&LLPanelEditWearable::onSaveAsButtonClicked, this));
|
||||
|
||||
// The following panels will be shown/hidden based on what wearable we're editing
|
||||
// body parts
|
||||
|
|
@ -828,9 +831,21 @@ bool LLPanelEditWearable::postBuild()
|
|||
continue;
|
||||
}
|
||||
|
||||
mAccordionTabs.emplace(accordion_tab, tab);
|
||||
|
||||
// initialize callback to ensure camera view changes appropriately.
|
||||
tab->setDropDownStateChangedCallback(boost::bind(&LLPanelEditWearable::onTabExpandedCollapsed,this,_2,index));
|
||||
|
||||
const std::string& scrolling_panel = subpart_entry->mParamList;
|
||||
if (!scrolling_panel.empty())
|
||||
{
|
||||
LLScrollingPanelList* panel_list = tab->findChild<LLScrollingPanelList>(scrolling_panel);
|
||||
if (panel_list)
|
||||
{
|
||||
mParamPanels.emplace(scrolling_panel, panel_list);
|
||||
}
|
||||
}
|
||||
|
||||
// <FS:Ansariel> Appearance panel not updating camera position; Some skins use tabs - in this case
|
||||
// set a callback on the tab container when the tab is changed to switch the camera position
|
||||
if (!tab_container_cb_set)
|
||||
|
|
@ -1267,19 +1282,21 @@ void LLPanelEditWearable::showWearable(LLViewerWearable* wearable, bool show, bo
|
|||
continue;
|
||||
}
|
||||
|
||||
LLScrollingPanelList *panel_list = findChild<LLScrollingPanelList>(scrolling_panel);
|
||||
LLAccordionCtrlTab *tab = findChild<LLAccordionCtrlTab>(accordion_tab);
|
||||
if (!panel_list)
|
||||
auto accord_it = mAccordionTabs.find(accordion_tab);
|
||||
if (accord_it == mAccordionTabs.end())
|
||||
{
|
||||
LL_WARNS() << "could not get scrolling panel list: " << scrolling_panel << LL_ENDL;
|
||||
continue;
|
||||
LL_WARNS() << "could not get llaccordionctrltab from UI with name: " << accordion_tab << LL_ENDL;
|
||||
continue;
|
||||
}
|
||||
LLAccordionCtrlTab* tab = accord_it->second;
|
||||
|
||||
if (!tab)
|
||||
auto panel_it = mParamPanels.find(scrolling_panel);
|
||||
if (panel_it == mParamPanels.end())
|
||||
{
|
||||
LL_WARNS() << "could not get llaccordionctrltab from UI with name: " << accordion_tab << LL_ENDL;
|
||||
continue;
|
||||
LL_WARNS() << "could not get scrolling panel list: " << scrolling_panel << LL_ENDL;
|
||||
continue;
|
||||
}
|
||||
LLScrollingPanelList *panel_list = panel_it->second;
|
||||
|
||||
// Don't show female subparts if you're not female, etc.
|
||||
if (!(gAgentAvatarp->getSex() & subpart_entry->mSex))
|
||||
|
|
@ -1293,7 +1310,7 @@ void LLPanelEditWearable::showWearable(LLViewerWearable* wearable, bool show, bo
|
|||
}
|
||||
|
||||
// what edit group do we want to extract params for?
|
||||
const std::string edit_group = subpart_entry->mEditGroup;
|
||||
const std::string& edit_group = subpart_entry->mEditGroup;
|
||||
|
||||
// storage for ordered list of visual params
|
||||
value_map_t sorted_params;
|
||||
|
|
@ -1448,9 +1465,9 @@ void LLPanelEditWearable::toggleTypeSpecificControls(LLWearableType::EType type)
|
|||
// Toggle controls specific to shape editing panel.
|
||||
{
|
||||
bool is_shape = (type == LLWearableType::WT_SHAPE);
|
||||
getChildView("sex_radio")->setVisible( is_shape);
|
||||
getChildView("female_icon")->setVisible( is_shape);
|
||||
getChildView("male_icon")->setVisible( is_shape);
|
||||
mSexRadio->setVisible(is_shape);
|
||||
mFemaleIcon->setVisible(is_shape);
|
||||
mMaleIcon->setVisible(is_shape);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1515,15 +1532,15 @@ void LLPanelEditWearable::updateScrollingPanelUI()
|
|||
ESubpart subpart_e = wearable_entry->mSubparts[index];
|
||||
const LLEditWearableDictionary::SubpartEntry *subpart_entry = LLEditWearableDictionary::getInstance()->getSubpart(subpart_e);
|
||||
|
||||
const std::string scrolling_panel = subpart_entry->mParamList;
|
||||
const std::string& scrolling_panel = subpart_entry->mParamList;
|
||||
|
||||
LLScrollingPanelList *panel_list = getChild<LLScrollingPanelList>(scrolling_panel);
|
||||
|
||||
if (!panel_list)
|
||||
auto panel_it = mParamPanels.find(scrolling_panel);
|
||||
if (panel_it == mParamPanels.end())
|
||||
{
|
||||
LL_WARNS() << "could not get scrolling panel list: " << scrolling_panel << LL_ENDL;
|
||||
continue;
|
||||
LL_WARNS() << "could not get scrolling panel list: " << scrolling_panel << LL_ENDL;
|
||||
continue;
|
||||
}
|
||||
LLScrollingPanelList* panel_list = panel_it->second;
|
||||
|
||||
panel_list->updatePanels(true);
|
||||
}
|
||||
|
|
@ -1663,7 +1680,7 @@ void LLPanelEditWearable::updateVerbs()
|
|||
bool is_dirty = isDirty();
|
||||
|
||||
mBtnRevert->setEnabled(is_dirty);
|
||||
getChildView("save_as_button")->setEnabled(is_dirty && can_copy);
|
||||
mBtnSaveAs->setEnabled(is_dirty && can_copy);
|
||||
|
||||
// [FS:CR] FIRE-10986 - A little redundant since you shouldn't be able to get here if the wearable is
|
||||
// no modify, but what the hell, check anyways.
|
||||
|
|
@ -1705,7 +1722,7 @@ void LLPanelEditWearable::configureAlphaCheckbox(LLAvatarAppearanceDefines::ETex
|
|||
LLCheckBoxCtrl* checkbox = mPanelAlpha->getChild<LLCheckBoxCtrl>(name);
|
||||
checkbox->setCommitCallback(boost::bind(&LLPanelEditWearable::onInvisibilityCommit, this, checkbox, te));
|
||||
|
||||
mAlphaCheckbox2Index[name] = te;
|
||||
mAlphaCheckbox2Index.push_back(std::make_pair(checkbox,te));
|
||||
}
|
||||
|
||||
void LLPanelEditWearable::onInvisibilityCommit(LLCheckBoxCtrl* checkbox_ctrl, LLAvatarAppearanceDefines::ETextureIndex te)
|
||||
|
|
@ -1766,11 +1783,10 @@ void LLPanelEditWearable::onInvisibilityCommit(LLCheckBoxCtrl* checkbox_ctrl, LL
|
|||
|
||||
void LLPanelEditWearable::updateAlphaCheckboxes()
|
||||
{
|
||||
for (string_texture_index_map_t::iterator iter = mAlphaCheckbox2Index.begin();
|
||||
iter != mAlphaCheckbox2Index.end(); ++iter )
|
||||
for (const auto& check_pair : mAlphaCheckbox2Index)
|
||||
{
|
||||
LLAvatarAppearanceDefines::ETextureIndex te = (LLAvatarAppearanceDefines::ETextureIndex)iter->second;
|
||||
LLCheckBoxCtrl* ctrl = mPanelAlpha->getChild<LLCheckBoxCtrl>(iter->first);
|
||||
LLAvatarAppearanceDefines::ETextureIndex te = (LLAvatarAppearanceDefines::ETextureIndex)check_pair.second;
|
||||
LLCheckBoxCtrl* ctrl = check_pair.first;
|
||||
if (ctrl)
|
||||
{
|
||||
ctrl->set(!gAgentAvatarp->isTextureVisible(te, mWearablePtr));
|
||||
|
|
|
|||
|
|
@ -45,6 +45,8 @@ class LLViewerJointMesh;
|
|||
class LLAccordionCtrlTab;
|
||||
class LLJoint;
|
||||
class LLLineEditor;
|
||||
class LLRadioGroup;
|
||||
class LLIconCtrl;
|
||||
|
||||
class LLPanelEditWearable : public LLPanel, public LLWearable::LLWearableObserver
|
||||
{
|
||||
|
|
@ -133,6 +135,7 @@ private:
|
|||
LLViewerInventoryItem* mWearableItem;
|
||||
|
||||
// these are constant no matter what wearable we're editing
|
||||
LLButton* mBtnSaveAs;
|
||||
LLButton *mBtnRevert;
|
||||
LLButton *mBtnBack;
|
||||
std::string mBackBtnLabel;
|
||||
|
|
@ -141,6 +144,9 @@ private:
|
|||
LLTextBox *mDescTitle;
|
||||
LLTextBox *mTxtAvatarHeight;
|
||||
|
||||
LLRadioGroup* mSexRadio = nullptr;
|
||||
LLIconCtrl* mMaleIcon = nullptr;
|
||||
LLIconCtrl* mFemaleIcon = nullptr;
|
||||
|
||||
// localized and parameterized strings that used to build avatar_height_label
|
||||
std::string mMeters;
|
||||
|
|
@ -180,8 +186,11 @@ private:
|
|||
LLPanel *mPanelUniversal;
|
||||
LLPanel *mPanelPhysics;
|
||||
|
||||
typedef std::map<std::string, LLAvatarAppearanceDefines::ETextureIndex> string_texture_index_map_t;
|
||||
string_texture_index_map_t mAlphaCheckbox2Index;
|
||||
std::unordered_map<std::string, LLAccordionCtrlTab*> mAccordionTabs;
|
||||
std::unordered_map<std::string, LLScrollingPanelList*> mParamPanels;
|
||||
|
||||
typedef std::vector<std::pair<LLCheckBoxCtrl*, LLAvatarAppearanceDefines::ETextureIndex>> checkbox_texture_index_vec_t;
|
||||
checkbox_texture_index_vec_t mAlphaCheckbox2Index;
|
||||
|
||||
typedef std::map<LLAvatarAppearanceDefines::ETextureIndex, LLUUID> s32_uuid_map_t;
|
||||
s32_uuid_map_t mPreviousAlphaTexture;
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@
|
|||
|
||||
class LLViewerRegion;
|
||||
class LLIconCtrl;
|
||||
class LLSettingsDropTarget;
|
||||
|
||||
class LLPanelEnvironmentInfo : public LLPanel
|
||||
{
|
||||
|
|
|
|||
|
|
@ -203,13 +203,11 @@ LLRender::eTexIndex LLPanelFace::getTextureChannelToEdit()
|
|||
U32 matmedia_selection = mComboMatMedia->getCurrentIndex();
|
||||
if (matmedia_selection == MATMEDIA_MATERIAL)
|
||||
{
|
||||
LLRadioGroup* radio_mat_type = getChild<LLRadioGroup>("radio_material_type");
|
||||
channel_to_edit = (LLRender::eTexIndex)radio_mat_type->getSelectedIndex();
|
||||
channel_to_edit = (LLRender::eTexIndex)mRadioMaterialType->getSelectedIndex();
|
||||
}
|
||||
if (matmedia_selection == MATMEDIA_PBR)
|
||||
{
|
||||
LLRadioGroup* radio_mat_type = getChild<LLRadioGroup>("radio_pbr_type");
|
||||
channel_to_edit = (LLRender::eTexIndex)radio_mat_type->getSelectedIndex();
|
||||
channel_to_edit = (LLRender::eTexIndex)mRadioPbrType->getSelectedIndex();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -222,8 +220,7 @@ LLRender::eTexIndex LLPanelFace::getTextureDropChannel()
|
|||
{
|
||||
if (mComboMatMedia && mComboMatMedia->getCurrentIndex() == MATMEDIA_MATERIAL)
|
||||
{
|
||||
LLRadioGroup* radio_mat_type = getChild<LLRadioGroup>("radio_material_type");
|
||||
return LLRender::eTexIndex(radio_mat_type->getSelectedIndex());
|
||||
return LLRender::eTexIndex(mRadioMaterialType->getSelectedIndex());
|
||||
}
|
||||
|
||||
return LLRender::eTexIndex(MATTYPE_DIFFUSE);
|
||||
|
|
@ -233,8 +230,7 @@ LLGLTFMaterial::TextureInfo LLPanelFace::getPBRDropChannel()
|
|||
{
|
||||
if (mComboMatMedia && mComboMatMedia->getCurrentIndex() == MATMEDIA_PBR)
|
||||
{
|
||||
LLRadioGroup* radio_pbr_type = getChild<LLRadioGroup>("radio_pbr_type");
|
||||
return texture_info_from_pbrtype(radio_pbr_type->getSelectedIndex());
|
||||
return texture_info_from_pbrtype(mRadioPbrType->getSelectedIndex());
|
||||
}
|
||||
|
||||
return texture_info_from_pbrtype(PBRTYPE_BASE_COLOR);
|
||||
|
|
@ -242,8 +238,8 @@ LLGLTFMaterial::TextureInfo LLPanelFace::getPBRDropChannel()
|
|||
|
||||
// Things the UI provides...
|
||||
//
|
||||
LLUUID LLPanelFace::getCurrentNormalMap() { return mBumpyTextureCtrl->getImageAssetID(); }
|
||||
LLUUID LLPanelFace::getCurrentSpecularMap() { return mShinyTextureCtrl->getImageAssetID(); }
|
||||
LLUUID LLPanelFace::getCurrentNormalMap() { return mBumpyTextureCtrl->getImageAssetID(); }
|
||||
LLUUID LLPanelFace::getCurrentSpecularMap() { return mShinyTextureCtrl->getImageAssetID(); }
|
||||
U32 LLPanelFace::getCurrentShininess() { return getChild<LLComboBox>("combobox shininess")->getCurrentIndex(); }
|
||||
U32 LLPanelFace::getCurrentBumpiness() { return getChild<LLComboBox>("combobox bumpiness")->getCurrentIndex(); }
|
||||
U8 LLPanelFace::getCurrentDiffuseAlphaMode() { return (U8)getChild<LLComboBox>("combobox alphamode")->getCurrentIndex(); }
|
||||
|
|
@ -404,42 +400,26 @@ bool LLPanelFace::postBuild()
|
|||
childSetAction("edit_selected_pbr", &LLPanelFace::onClickBtnEditPBR, this);
|
||||
childSetAction("save_selected_pbr", &LLPanelFace::onClickBtnSavePBR, this);
|
||||
|
||||
// <FS:CR> Moved to the header so other functions can use them too.
|
||||
//LLTextureCtrl* mTextureCtrl;
|
||||
//LLTextureCtrl* mShinyTextureCtrl;
|
||||
//LLTextureCtrl* mBumpyTextureCtrl;
|
||||
//LLColorSwatchCtrl* mColorSwatch;
|
||||
//LLColorSwatchCtrl* mShinyColorSwatch;
|
||||
|
||||
//LLComboBox* mComboTexGen;
|
||||
|
||||
//LLCheckBoxCtrl *mCheckFullbright;
|
||||
|
||||
//LLTextBox* mLabelColorTransp;
|
||||
//LLSpinCtrl* mCtrlColorTransp; // transparency = 1 - alpha
|
||||
|
||||
//LLSpinCtrl* mCtrlGlow;
|
||||
|
||||
setMouseOpaque(false);
|
||||
|
||||
LLTextureCtrl* pbr_ctrl = findChild<LLTextureCtrl>("pbr_control");
|
||||
if (pbr_ctrl)
|
||||
mPBRTextureCtrl = getChild<LLTextureCtrl>("pbr_control");
|
||||
if (mPBRTextureCtrl)
|
||||
{
|
||||
pbr_ctrl->setDefaultImageAssetID(LLUUID::null);
|
||||
pbr_ctrl->setBlankImageAssetID(BLANK_MATERIAL_ASSET_ID);
|
||||
pbr_ctrl->setCommitCallback(boost::bind(&LLPanelFace::onCommitPbr, this, _2));
|
||||
pbr_ctrl->setOnCancelCallback(boost::bind(&LLPanelFace::onCancelPbr, this, _2));
|
||||
pbr_ctrl->setOnSelectCallback(boost::bind(&LLPanelFace::onSelectPbr, this, _2));
|
||||
pbr_ctrl->setDragCallback(boost::bind(&LLPanelFace::onDragPbr, this, _2));
|
||||
pbr_ctrl->setOnTextureSelectedCallback(boost::bind(&LLPanelFace::onPbrSelectionChanged, this, _1));
|
||||
pbr_ctrl->setOnCloseCallback(boost::bind(&LLPanelFace::onCloseTexturePicker, this, _2));
|
||||
mPBRTextureCtrl->setDefaultImageAssetID(LLUUID::null);
|
||||
mPBRTextureCtrl->setBlankImageAssetID(BLANK_MATERIAL_ASSET_ID);
|
||||
mPBRTextureCtrl->setCommitCallback(boost::bind(&LLPanelFace::onCommitPbr, this, _2));
|
||||
mPBRTextureCtrl->setOnCancelCallback(boost::bind(&LLPanelFace::onCancelPbr, this, _2));
|
||||
mPBRTextureCtrl->setOnSelectCallback(boost::bind(&LLPanelFace::onSelectPbr, this, _2));
|
||||
mPBRTextureCtrl->setDragCallback(boost::bind(&LLPanelFace::onDragPbr, this, _2));
|
||||
mPBRTextureCtrl->setOnTextureSelectedCallback(boost::bind(&LLPanelFace::onPbrSelectionChanged, this, _1));
|
||||
mPBRTextureCtrl->setOnCloseCallback(boost::bind(&LLPanelFace::onCloseTexturePicker, this, _2));
|
||||
|
||||
pbr_ctrl->setFollowsTop();
|
||||
pbr_ctrl->setFollowsLeft();
|
||||
pbr_ctrl->setImmediateFilterPermMask(PERM_NONE);
|
||||
pbr_ctrl->setDnDFilterPermMask(PERM_COPY | PERM_TRANSFER);
|
||||
pbr_ctrl->setBakeTextureEnabled(false);
|
||||
pbr_ctrl->setInventoryPickType(PICK_MATERIAL);
|
||||
mPBRTextureCtrl->setFollowsTop();
|
||||
mPBRTextureCtrl->setFollowsLeft();
|
||||
mPBRTextureCtrl->setImmediateFilterPermMask(PERM_NONE);
|
||||
mPBRTextureCtrl->setDnDFilterPermMask(PERM_COPY | PERM_TRANSFER);
|
||||
mPBRTextureCtrl->setBakeTextureEnabled(false);
|
||||
mPBRTextureCtrl->setInventoryPickType(PICK_MATERIAL);
|
||||
}
|
||||
|
||||
mTextureCtrl = getChild<LLTextureCtrl>("texture control");
|
||||
|
|
@ -552,11 +532,11 @@ bool LLPanelFace::postBuild()
|
|||
mComboMatMedia->selectNthItem(MATMEDIA_MATERIAL);
|
||||
}
|
||||
|
||||
mRadioMatType = findChild<LLRadioGroup>("radio_material_type");
|
||||
if(mRadioMatType)
|
||||
mRadioMaterialType = findChild<LLRadioGroup>("radio_material_type");
|
||||
if(mRadioMaterialType)
|
||||
{
|
||||
mRadioMatType->setCommitCallback(LLPanelFace::onCommitMaterialType, this);
|
||||
mRadioMatType->selectNthItem(MATTYPE_DIFFUSE);
|
||||
mRadioMaterialType->setCommitCallback(LLPanelFace::onCommitMaterialType, this);
|
||||
mRadioMaterialType->selectNthItem(MATTYPE_DIFFUSE);
|
||||
}
|
||||
|
||||
mRadioPbrType = findChild<LLRadioGroup>("radio_pbr_type");
|
||||
|
|
@ -650,7 +630,6 @@ void LLPanelFace::draw()
|
|||
|
||||
void LLPanelFace::sendTexture()
|
||||
{
|
||||
//LLTextureCtrl* mTextureCtrl = getChild<LLTextureCtrl>("texture control");
|
||||
if(!mTextureCtrl) return;
|
||||
if( !mTextureCtrl->getTentative() )
|
||||
{
|
||||
|
|
@ -671,13 +650,10 @@ void LLPanelFace::sendTexture()
|
|||
|
||||
void LLPanelFace::sendBump(U32 bumpiness)
|
||||
{
|
||||
//LLTextureCtrl* bumpytexture_ctrl = getChild<LLTextureCtrl>("bumpytexture control");
|
||||
if (!mBumpyTextureCtrl) return;
|
||||
if (bumpiness < BUMPY_TEXTURE)
|
||||
{
|
||||
LL_DEBUGS("Materials") << "clearing bumptexture control" << LL_ENDL;
|
||||
//bumpytexture_ctrl->clear();
|
||||
//bumpytexture_ctrl->setImageAssetID(LLUUID());
|
||||
mBumpyTextureCtrl->clear();
|
||||
mBumpyTextureCtrl->setImageAssetID(LLUUID());
|
||||
}
|
||||
|
|
@ -697,13 +673,11 @@ void LLPanelFace::sendBump(U32 bumpiness)
|
|||
//
|
||||
LLSelectedTEMaterial::setNormalID(this, current_normal_map);
|
||||
|
||||
//LLSelectMgr::getInstance()->selectionSetBumpmap(bump, bumpytexture_ctrl->getImageItemID());
|
||||
LLSelectMgr::getInstance()->selectionSetBumpmap(bump, mBumpyTextureCtrl->getImageItemID());
|
||||
LLSelectMgr::getInstance()->selectionSetBumpmap( bump, mBumpyTextureCtrl->getImageItemID() );
|
||||
}
|
||||
|
||||
void LLPanelFace::sendTexGen()
|
||||
{
|
||||
//LLComboBox* mComboTexGen = getChild<LLComboBox>("combobox texgen");
|
||||
if(!mComboTexGen)return;
|
||||
U8 tex_gen = (U8) mComboTexGen->getCurrentIndex() << TEM_TEX_GEN_SHIFT;
|
||||
LLSelectMgr::getInstance()->selectionSetTexGen( tex_gen );
|
||||
|
|
@ -711,13 +685,10 @@ void LLPanelFace::sendTexGen()
|
|||
|
||||
void LLPanelFace::sendShiny(U32 shininess)
|
||||
{
|
||||
//LLTextureCtrl* texture_ctrl = getChild<LLTextureCtrl>("shinytexture control");
|
||||
if (!mShinyTextureCtrl) return;
|
||||
|
||||
if (shininess < SHINY_TEXTURE)
|
||||
{
|
||||
//texture_ctrl->clear();
|
||||
//texture_ctrl->setImageAssetID(LLUUID());
|
||||
mShinyTextureCtrl->clear();
|
||||
mShinyTextureCtrl->setImageAssetID(LLUUID());
|
||||
}
|
||||
|
|
@ -730,8 +701,7 @@ void LLPanelFace::sendShiny(U32 shininess)
|
|||
|
||||
LLSelectedTEMaterial::setSpecularID(this, specmap);
|
||||
|
||||
//LLSelectMgr::getInstance()->selectionSetShiny(shiny, texture_ctrl->getImageItemID());
|
||||
LLSelectMgr::getInstance()->selectionSetShiny(shiny, mShinyTextureCtrl->getImageItemID());
|
||||
LLSelectMgr::getInstance()->selectionSetShiny( shiny, mShinyTextureCtrl->getImageItemID() );
|
||||
|
||||
updateShinyControls(!specmap.isNull(), true);
|
||||
|
||||
|
|
@ -739,16 +709,14 @@ void LLPanelFace::sendShiny(U32 shininess)
|
|||
|
||||
void LLPanelFace::sendFullbright()
|
||||
{
|
||||
//LLCheckBoxCtrl* mCheckFullbright = getChild<LLCheckBoxCtrl>("checkbox fullbright");
|
||||
if (!mCheckFullbright) return;
|
||||
if(!mCheckFullbright)return;
|
||||
U8 fullbright = mCheckFullbright->get() ? TEM_FULLBRIGHT_MASK : 0;
|
||||
LLSelectMgr::getInstance()->selectionSetFullbright( fullbright );
|
||||
}
|
||||
|
||||
void LLPanelFace::sendColor()
|
||||
{
|
||||
//LLColorSwatchCtrl* mColorSwatch = getChild<LLColorSwatchCtrl>("colorswatch");
|
||||
if (!mColorSwatch) return;
|
||||
if(!mColorSwatch)return;
|
||||
LLColor4 color = mColorSwatch->get();
|
||||
|
||||
LLSelectMgr::getInstance()->selectionSetColorOnly( color );
|
||||
|
|
@ -756,8 +724,7 @@ void LLPanelFace::sendColor()
|
|||
|
||||
void LLPanelFace::sendAlpha()
|
||||
{
|
||||
//LLSpinCtrl* mCtrlColorTransp = getChild<LLSpinCtrl>("ColorTrans");
|
||||
if (!mCtrlColorTransp) return;
|
||||
if(!mCtrlColorTransp)return;
|
||||
F32 alpha = (100.f - mCtrlColorTransp->get()) / 100.f;
|
||||
|
||||
LLSelectMgr::getInstance()->selectionSetAlphaOnly( alpha );
|
||||
|
|
@ -766,9 +733,6 @@ void LLPanelFace::sendAlpha()
|
|||
|
||||
void LLPanelFace::sendGlow()
|
||||
{
|
||||
//LLSpinCtrl* mCtrlGlow = getChild<LLSpinCtrl>("glow");
|
||||
//llassert(mCtrlGlow);
|
||||
if (!mCtrlGlow) return;
|
||||
if (mCtrlGlow)
|
||||
{
|
||||
F32 glow = mCtrlGlow->get();
|
||||
|
|
@ -1118,14 +1082,13 @@ void LLPanelFace::sendTextureInfo()
|
|||
LLSelectMgr::getInstance()->getSelection()->applyToObjects(&sendfunc);
|
||||
}
|
||||
|
||||
void LLPanelFace::alignTestureLayer()
|
||||
void LLPanelFace::alignTextureLayer()
|
||||
{
|
||||
LLFace* last_face = NULL;
|
||||
bool identical_face = false;
|
||||
LLSelectedTE::getFace(last_face, identical_face);
|
||||
|
||||
LLRadioGroup * radio_mat_type = getChild<LLRadioGroup>("radio_material_type");
|
||||
LLPanelFaceSetAlignedConcreteTEFunctor setfunc(this, last_face, static_cast<LLRender::eTexIndex>(radio_mat_type->getSelectedIndex()));
|
||||
LLPanelFaceSetAlignedConcreteTEFunctor setfunc(this, last_face, static_cast<LLRender::eTexIndex>(mRadioMaterialType->getSelectedIndex()));
|
||||
LLSelectMgr::getInstance()->getSelection()->applyToTEs(&setfunc);
|
||||
}
|
||||
|
||||
|
|
@ -1180,10 +1143,6 @@ void LLPanelFace::updateUI(bool force_set_values /*false*/)
|
|||
bool identical_norm = false;
|
||||
bool identical_spec = false;
|
||||
|
||||
//LLTextureCtrl *texture_ctrl = getChild<LLTextureCtrl>("texture control");
|
||||
//LLTextureCtrl *shinytexture_ctrl = getChild<LLTextureCtrl>("shinytexture control");
|
||||
//LLTextureCtrl *bumpytexture_ctrl = getChild<LLTextureCtrl>("bumpytexture control");
|
||||
|
||||
LLUUID id;
|
||||
LLUUID normmap_id;
|
||||
LLUUID specmap_id;
|
||||
|
|
@ -1247,14 +1206,12 @@ void LLPanelFace::updateUI(bool force_set_values /*false*/)
|
|||
}
|
||||
mComboMatMedia->setEnabled(editable);
|
||||
|
||||
//LLRadioGroup* radio_mat_type = getChild<LLRadioGroup>("radio_material_type");
|
||||
if (mRadioMatType->getSelectedIndex() < MATTYPE_DIFFUSE)
|
||||
if (mRadioMaterialType->getSelectedIndex() < MATTYPE_DIFFUSE)
|
||||
{
|
||||
mRadioMatType->selectNthItem(MATTYPE_DIFFUSE);
|
||||
mRadioMaterialType->selectNthItem(MATTYPE_DIFFUSE);
|
||||
}
|
||||
mRadioMatType->setEnabled(editable);
|
||||
mRadioMaterialType->setEnabled(editable);
|
||||
|
||||
//LLRadioGroup* radio_pbr_type = getChild<LLRadioGroup>("radio_pbr_type");
|
||||
if (mRadioPbrType->getSelectedIndex() < PBRTYPE_RENDER_MATERIAL_ID)
|
||||
{
|
||||
mRadioPbrType->selectNthItem(PBRTYPE_RENDER_MATERIAL_ID);
|
||||
|
|
@ -1272,7 +1229,6 @@ void LLPanelFace::updateUI(bool force_set_values /*false*/)
|
|||
{
|
||||
getChildView("color label")->setEnabled(editable);
|
||||
}
|
||||
//LLColorSwatchCtrl* color_swatch = findChild<LLColorSwatchCtrl>("colorswatch");
|
||||
|
||||
LLColor4 color = LLColor4::white;
|
||||
bool identical_color = false;
|
||||
|
|
@ -1286,16 +1242,16 @@ void LLPanelFace::updateUI(bool force_set_values /*false*/)
|
|||
mColorSwatch->set(color, force_set_values || (prev_color != color) || !editable);
|
||||
|
||||
mColorSwatch->setValid(editable && !has_pbr_material);
|
||||
mColorSwatch->setEnabled(editable && !has_pbr_material);
|
||||
mColorSwatch->setEnabled( editable && !has_pbr_material);
|
||||
mColorSwatch->setCanApplyImmediately( editable && !has_pbr_material);
|
||||
}
|
||||
|
||||
// Color transparency
|
||||
getChildView("color trans")->setEnabled(editable);
|
||||
mLabelColorTransp->setEnabled(editable);
|
||||
|
||||
F32 transparency = (1.f - color.mV[VALPHA]) * 100.f;
|
||||
getChild<LLUICtrl>("ColorTrans")->setValue(editable ? transparency : 0);
|
||||
getChildView("ColorTrans")->setEnabled(editable && has_material);
|
||||
mCtrlColorTransp->setValue(editable ? transparency : 0);
|
||||
mCtrlColorTransp->setEnabled(editable && has_material);
|
||||
|
||||
U8 shiny = 0;
|
||||
bool identical_shiny = false;
|
||||
|
|
@ -1325,10 +1281,8 @@ void LLPanelFace::updateUI(bool force_set_values /*false*/)
|
|||
getChild<LLUICtrl>("combobox shininess")->setTentative(!identical_spec);
|
||||
getChild<LLUICtrl>("glossiness")->setTentative(!identical_spec);
|
||||
getChild<LLUICtrl>("environment")->setTentative(!identical_spec);
|
||||
getChild<LLUICtrl>("shinycolorswatch")->setTentative(!identical_spec);
|
||||
mShinyColorSwatch->setTentative(!identical_spec);
|
||||
|
||||
//LLColorSwatchCtrl* mShinyColorSwatch = getChild<LLColorSwatchCtrl>("shinycolorswatch");
|
||||
if (mShinyColorSwatch)
|
||||
{
|
||||
mShinyColorSwatch->setValid(editable);
|
||||
mShinyColorSwatch->setEnabled( editable );
|
||||
|
|
@ -1490,7 +1444,7 @@ void LLPanelFace::updateUI(bool force_set_values /*false*/)
|
|||
if (mShinyTextureCtrl)
|
||||
{
|
||||
mShinyTextureCtrl->setTentative( !identical_spec );
|
||||
mShinyTextureCtrl->setEnabled( editable && !has_pbr_material );
|
||||
mShinyTextureCtrl->setEnabled( editable && !has_pbr_material);
|
||||
mShinyTextureCtrl->setImageAssetID( specmap_id );
|
||||
|
||||
if (attachment)
|
||||
|
|
@ -1506,7 +1460,7 @@ void LLPanelFace::updateUI(bool force_set_values /*false*/)
|
|||
if (mBumpyTextureCtrl)
|
||||
{
|
||||
mBumpyTextureCtrl->setTentative( !identical_norm );
|
||||
mBumpyTextureCtrl->setEnabled( editable && !has_pbr_material );
|
||||
mBumpyTextureCtrl->setEnabled( editable && !has_pbr_material);
|
||||
mBumpyTextureCtrl->setImageAssetID( normmap_id );
|
||||
|
||||
if (attachment)
|
||||
|
|
@ -1764,27 +1718,18 @@ void LLPanelFace::updateUI(bool force_set_values /*false*/)
|
|||
F32 glow = 0.f;
|
||||
bool identical_glow = false;
|
||||
LLSelectedTE::getGlow(glow,identical_glow);
|
||||
LLUICtrl* glow_ctrl = getChild<LLUICtrl>("glow");
|
||||
glow_ctrl->setValue(glow);
|
||||
glow_ctrl->setTentative(!identical_glow);
|
||||
glow_ctrl->setEnabled(editable);
|
||||
mCtrlGlow->setValue(glow);
|
||||
mCtrlGlow->setTentative(!identical_glow);
|
||||
mCtrlGlow->setEnabled(editable);
|
||||
getChildView("glow label")->setEnabled(editable);
|
||||
}
|
||||
|
||||
{
|
||||
LLCtrlSelectionInterface* combobox_texgen = childGetSelectionInterface("combobox texgen");
|
||||
if (combobox_texgen)
|
||||
{
|
||||
// Maps from enum to combobox entry index
|
||||
combobox_texgen->selectNthItem(((S32)selected_texgen) >> 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_WARNS() << "failed childGetSelectionInterface for 'combobox texgen'" << LL_ENDL;
|
||||
}
|
||||
// Maps from enum to combobox entry index
|
||||
mComboTexGen->selectNthItem(((S32)selected_texgen) >> 1);
|
||||
|
||||
getChildView("combobox texgen")->setEnabled(editable);
|
||||
getChild<LLUICtrl>("combobox texgen")->setTentative(!identical);
|
||||
mComboTexGen->setEnabled(editable);
|
||||
mComboTexGen->setTentative(!identical);
|
||||
getChildView("tex gen")->setEnabled(editable);
|
||||
}
|
||||
|
||||
|
|
@ -1794,10 +1739,9 @@ void LLPanelFace::updateUI(bool force_set_values /*false*/)
|
|||
|
||||
LLSelectedTE::getFullbright(fullbright_flag,identical_fullbright);
|
||||
|
||||
LLUICtrl* check_fullbright = getChild<LLUICtrl>("checkbox fullbright");
|
||||
check_fullbright->setValue((S32)(fullbright_flag != 0));
|
||||
check_fullbright->setEnabled(editable && !has_pbr_material);
|
||||
check_fullbright->setTentative(!identical_fullbright);
|
||||
mCheckFullbright->setValue((S32)(fullbright_flag != 0));
|
||||
mCheckFullbright->setEnabled(editable && !has_pbr_material);
|
||||
mCheckFullbright->setTentative(!identical_fullbright);
|
||||
mComboMatMedia->setEnabledByValue("Materials", !has_pbr_material);
|
||||
}
|
||||
|
||||
|
|
@ -1815,8 +1759,6 @@ void LLPanelFace::updateUI(bool force_set_values /*false*/)
|
|||
LLSelectedTEMaterial::getMaxNormalRepeats(repeats_norm, identical_norm_repeats);
|
||||
LLSelectedTEMaterial::getMaxSpecularRepeats(repeats_spec, identical_spec_repeats);
|
||||
|
||||
LLComboBox* mComboTexGen = getChild<LLComboBox>("combobox texgen");
|
||||
if (mComboTexGen)
|
||||
{
|
||||
S32 index = mComboTexGen ? mComboTexGen->getCurrentIndex() : 0;
|
||||
bool enabled = editable && (index != 1);
|
||||
|
|
@ -1827,7 +1769,7 @@ void LLPanelFace::updateUI(bool force_set_values /*false*/)
|
|||
U32 material_type = MATTYPE_DIFFUSE;
|
||||
if (material_selection == MATMEDIA_MATERIAL)
|
||||
{
|
||||
material_type = mRadioMatType->getSelectedIndex();
|
||||
material_type = mRadioMaterialType->getSelectedIndex();
|
||||
}
|
||||
else if (material_selection == MATMEDIA_PBR)
|
||||
{
|
||||
|
|
@ -1935,7 +1877,6 @@ void LLPanelFace::updateUI(bool force_set_values /*false*/)
|
|||
|
||||
// Shiny (specular)
|
||||
F32 offset_x, offset_y, repeat_x, repeat_y, rot;
|
||||
//LLTextureCtrl* texture_ctrl = getChild<LLTextureCtrl>("shinytexture control");
|
||||
mShinyTextureCtrl->setImageAssetID(material->getSpecularID());
|
||||
|
||||
if (!material->getSpecularID().isNull() && (shiny == SHINY_TEXTURE))
|
||||
|
|
@ -1966,12 +1907,11 @@ void LLPanelFace::updateUI(bool force_set_values /*false*/)
|
|||
//
|
||||
if (!material->getSpecularID().isNull())
|
||||
{
|
||||
LLColorSwatchCtrl* shiny_swatch = getChild<LLColorSwatchCtrl>("shinycolorswatch");
|
||||
LLColor4 new_color = material->getSpecularLightColor();
|
||||
LLColor4 old_color = shiny_swatch->get();
|
||||
LLColor4 old_color = mShinyColorSwatch->get();
|
||||
|
||||
shiny_swatch->setOriginal(new_color);
|
||||
shiny_swatch->set(new_color, force_set_values || old_color != new_color || !editable);
|
||||
mShinyColorSwatch->setOriginal(new_color);
|
||||
mShinyColorSwatch->set(new_color, force_set_values || old_color != new_color || !editable);
|
||||
}
|
||||
|
||||
// Bumpy (normal)
|
||||
|
|
@ -2014,8 +1954,8 @@ void LLPanelFace::updateUI(bool force_set_values /*false*/)
|
|||
calcp->setVar(LLCalc::TEX_U_OFFSET, getCurrentTextureOffsetU());
|
||||
calcp->setVar(LLCalc::TEX_V_OFFSET, getCurrentTextureOffsetV());
|
||||
calcp->setVar(LLCalc::TEX_ROTATION, getCurrentTextureRot());
|
||||
calcp->setVar(LLCalc::TEX_TRANSPARENCY, (F32)childGetValue("ColorTrans").asReal());
|
||||
calcp->setVar(LLCalc::TEX_GLOW, (F32)childGetValue("glow").asReal());
|
||||
calcp->setVar(LLCalc::TEX_TRANSPARENCY, (F32)mCtrlColorTransp->getValue().asReal());
|
||||
calcp->setVar(LLCalc::TEX_GLOW, (F32)mCtrlGlow->getValue().asReal());
|
||||
|
||||
// <FS:Zi> Find all faces with same texture
|
||||
getChild<LLUICtrl>("btn_select_same_diff")->setEnabled(LLSelectMgr::getInstance()->getTEMode() && mTextureCtrl->getEnabled());
|
||||
|
|
@ -2029,32 +1969,31 @@ void LLPanelFace::updateUI(bool force_set_values /*false*/)
|
|||
clearCtrls();
|
||||
|
||||
// Disable non-UICtrls
|
||||
LLTextureCtrl* pbr_ctrl = findChild<LLTextureCtrl>("pbr_control");
|
||||
if (pbr_ctrl)
|
||||
if (mPBRTextureCtrl)
|
||||
{
|
||||
pbr_ctrl->setImageAssetID(LLUUID::null);
|
||||
pbr_ctrl->setEnabled(false);
|
||||
mPBRTextureCtrl->setImageAssetID(LLUUID::null);
|
||||
mPBRTextureCtrl->setEnabled(false);
|
||||
}
|
||||
///LLTextureCtrl* texture_ctrl = getChild<LLTextureCtrl>("texture control");
|
||||
|
||||
if (mTextureCtrl)
|
||||
{
|
||||
mTextureCtrl->setImageAssetID( LLUUID::null );
|
||||
mTextureCtrl->setEnabled( false ); // this is a LLUICtrl, but we don't want it to have keyboard focus so we add it as a child, not a ctrl.
|
||||
// mTextureCtrl->setValid(false);
|
||||
}
|
||||
//LLColorSwatchCtrl* mColorSwatch = getChild<LLColorSwatchCtrl>("colorswatch");
|
||||
|
||||
if (mColorSwatch)
|
||||
{
|
||||
mColorSwatch->setEnabled( false );
|
||||
mColorSwatch->setFallbackImage(LLUI::getUIImage("locked_image.j2c") );
|
||||
mColorSwatch->setValid(false);
|
||||
}
|
||||
//LLRadioGroup* radio_mat_type = getChild<LLRadioGroup>("radio_material_type");
|
||||
if (mRadioMatType)
|
||||
|
||||
if (mRadioMaterialType)
|
||||
{
|
||||
mRadioMatType->setSelectedIndex(0);
|
||||
mRadioMaterialType->setSelectedIndex(0);
|
||||
}
|
||||
getChildView("color trans")->setEnabled(false);
|
||||
mLabelColorTransp->setEnabled(false);
|
||||
mCtrlRpt->setEnabled(false);
|
||||
getChildView("tex gen")->setEnabled(false);
|
||||
getChildView("label shininess")->setEnabled(false);
|
||||
|
|
@ -2171,23 +2110,22 @@ void LLPanelFace::updateUIGLTF(LLViewerObject* objectp, bool& has_pbr_material,
|
|||
const bool saveable = LLMaterialEditor::canSaveObjectsMaterial();
|
||||
|
||||
// pbr material
|
||||
LLTextureCtrl* pbr_ctrl = findChild<LLTextureCtrl>("pbr_control");
|
||||
LLUUID pbr_id;
|
||||
if (pbr_ctrl)
|
||||
if (mPBRTextureCtrl)
|
||||
{
|
||||
LLSelectedTE::getPbrMaterialId(pbr_id, identical_pbr, has_pbr_material, has_faces_without_pbr);
|
||||
|
||||
pbr_ctrl->setTentative(!identical_pbr);
|
||||
pbr_ctrl->setEnabled(settable);
|
||||
pbr_ctrl->setImageAssetID(pbr_id);
|
||||
mPBRTextureCtrl->setTentative(!identical_pbr);
|
||||
mPBRTextureCtrl->setEnabled(settable);
|
||||
mPBRTextureCtrl->setImageAssetID(pbr_id);
|
||||
|
||||
if (objectp->isAttachment())
|
||||
{
|
||||
pbr_ctrl->setFilterPermissionMasks(PERM_COPY | PERM_TRANSFER | PERM_MODIFY);
|
||||
mPBRTextureCtrl->setFilterPermissionMasks(PERM_COPY | PERM_TRANSFER | PERM_MODIFY);
|
||||
}
|
||||
else
|
||||
{
|
||||
pbr_ctrl->setImmediateFilterPermMask(PERM_NONE);
|
||||
mPBRTextureCtrl->setImmediateFilterPermMask(PERM_NONE);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -2246,13 +2184,12 @@ void LLPanelFace::updateVisibilityGLTF(LLViewerObject* objectp /*= nullptr */)
|
|||
const bool show_pbr = mComboMatMedia->getCurrentIndex() == MATMEDIA_PBR && mComboMatMedia->getEnabled();
|
||||
const bool inventory_pending = objectp && objectp->isInventoryPending();
|
||||
|
||||
LLRadioGroup* radio_pbr_type = findChild<LLRadioGroup>("radio_pbr_type");
|
||||
radio_pbr_type->setVisible(show_pbr);
|
||||
mRadioPbrType->setVisible(show_pbr);
|
||||
|
||||
const U32 pbr_type = radio_pbr_type->getSelectedIndex();
|
||||
const U32 pbr_type = mRadioPbrType->getSelectedIndex();
|
||||
const bool show_pbr_render_material_id = show_pbr && (pbr_type == PBRTYPE_RENDER_MATERIAL_ID);
|
||||
|
||||
getChildView("pbr_control")->setVisible(show_pbr_render_material_id);
|
||||
mPBRTextureCtrl->setVisible(show_pbr_render_material_id);
|
||||
|
||||
getChildView("pbr_from_inventory")->setVisible(show_pbr_render_material_id);
|
||||
getChildView("edit_selected_pbr")->setVisible(show_pbr_render_material_id && !inventory_pending);
|
||||
|
|
@ -3064,7 +3001,7 @@ void LLPanelFace::onCommitColor(const LLSD& data)
|
|||
|
||||
void LLPanelFace::onCommitShinyColor(const LLSD& data)
|
||||
{
|
||||
LLSelectedTEMaterial::setSpecularLightColor(this, getChild<LLColorSwatchCtrl>("shinycolorswatch")->get());
|
||||
LLSelectedTEMaterial::setSpecularLightColor(this, mShinyColorSwatch->get());
|
||||
}
|
||||
|
||||
void LLPanelFace::onCommitAlpha(const LLSD& data)
|
||||
|
|
@ -3090,7 +3027,7 @@ void LLPanelFace::onSelectColor(const LLSD& data)
|
|||
|
||||
void LLPanelFace::onSelectShinyColor(const LLSD& data)
|
||||
{
|
||||
LLSelectedTEMaterial::setSpecularLightColor(this, getChild<LLColorSwatchCtrl>("shinycolorswatch")->get());
|
||||
LLSelectedTEMaterial::setSpecularLightColor(this, mShinyColorSwatch->get());
|
||||
LLSelectMgr::getInstance()->saveSelectedShinyColors();
|
||||
}
|
||||
|
||||
|
|
@ -3109,33 +3046,31 @@ void LLPanelFace::onCommitMaterialsMedia(LLUICtrl* ctrl, void* userdata)
|
|||
|
||||
void LLPanelFace::updateVisibility(LLViewerObject* objectp /* = nullptr */)
|
||||
{
|
||||
LLRadioGroup* radio_mat_type = findChild<LLRadioGroup>("radio_material_type");
|
||||
LLRadioGroup* radio_pbr_type = findChild<LLRadioGroup>("radio_pbr_type");
|
||||
LLComboBox* combo_shininess = findChild<LLComboBox>("combobox shininess");
|
||||
LLComboBox* combo_bumpiness = findChild<LLComboBox>("combobox bumpiness");
|
||||
if (!radio_mat_type || !radio_pbr_type || !mComboMatMedia || !combo_shininess || !combo_bumpiness)
|
||||
if (!mRadioMaterialType || !mRadioPbrType || !mComboMatMedia || !combo_shininess || !combo_bumpiness)
|
||||
{
|
||||
LL_WARNS("Materials") << "Combo box not found...exiting." << LL_ENDL;
|
||||
return;
|
||||
}
|
||||
U32 materials_media = mComboMatMedia->getCurrentIndex();
|
||||
U32 material_type = radio_mat_type->getSelectedIndex();
|
||||
U32 material_type = mRadioMaterialType->getSelectedIndex();
|
||||
bool show_media = (materials_media == MATMEDIA_MEDIA) && mComboMatMedia->getEnabled();
|
||||
bool show_material = materials_media == MATMEDIA_MATERIAL;
|
||||
bool show_texture = (show_media || (show_material && (material_type == MATTYPE_DIFFUSE) && mComboMatMedia->getEnabled()));
|
||||
bool show_bumpiness = show_material && (material_type == MATTYPE_NORMAL) && mComboMatMedia->getEnabled();
|
||||
bool show_shininess = show_material && (material_type == MATTYPE_SPECULAR) && mComboMatMedia->getEnabled();
|
||||
const bool show_pbr = mComboMatMedia->getCurrentIndex() == MATMEDIA_PBR && mComboMatMedia->getEnabled();
|
||||
const U32 pbr_type = findChild<LLRadioGroup>("radio_pbr_type")->getSelectedIndex();
|
||||
const U32 pbr_type = mRadioPbrType->getSelectedIndex();
|
||||
const LLGLTFMaterial::TextureInfo texture_info = texture_info_from_pbrtype(pbr_type);
|
||||
const bool show_pbr_asset = show_pbr && texture_info == LLGLTFMaterial::GLTF_TEXTURE_INFO_COUNT;
|
||||
|
||||
radio_mat_type->setVisible(show_material);
|
||||
mRadioMaterialType->setVisible(show_material);
|
||||
|
||||
// Shared material controls
|
||||
getChildView("checkbox_sync_settings")->setVisible(show_material || show_media);
|
||||
getChildView("tex gen")->setVisible(show_material || show_media || show_pbr_asset);
|
||||
getChildView("combobox texgen")->setVisible(show_material || show_media || show_pbr_asset);
|
||||
mComboTexGen->setVisible(show_material || show_media || show_pbr_asset);
|
||||
getChildView("button align textures")->setVisible(show_material || show_media);
|
||||
|
||||
// <FS:CR> FIRE-11407 - Be consistant and hide this with the other controls
|
||||
|
|
@ -3151,7 +3086,7 @@ void LLPanelFace::updateVisibility(LLViewerObject* objectp /* = nullptr */)
|
|||
getChildView("button align")->setVisible(show_media);
|
||||
|
||||
// Diffuse texture controls
|
||||
getChildView("texture control")->setVisible(show_texture && show_material);
|
||||
mTextureCtrl->setVisible(show_texture && show_material);
|
||||
getChildView("label alphamode")->setVisible(show_texture && show_material);
|
||||
getChildView("combobox alphamode")->setVisible(show_texture && show_material);
|
||||
getChildView("label maskcutoff")->setVisible(false);
|
||||
|
|
@ -3168,7 +3103,7 @@ void LLPanelFace::updateVisibility(LLViewerObject* objectp /* = nullptr */)
|
|||
getChildView("TexOffsetV")->setVisible(show_texture);
|
||||
|
||||
// Specular map controls
|
||||
getChildView("shinytexture control")->setVisible(show_shininess);
|
||||
mShinyTextureCtrl->setVisible(show_shininess);
|
||||
getChildView("combobox shininess")->setVisible(show_shininess);
|
||||
getChildView("label shininess")->setVisible(show_shininess);
|
||||
getChildView("label glossiness")->setVisible(false);
|
||||
|
|
@ -3176,7 +3111,7 @@ void LLPanelFace::updateVisibility(LLViewerObject* objectp /* = nullptr */)
|
|||
getChildView("label environment")->setVisible(false);
|
||||
getChildView("environment")->setVisible(false);
|
||||
getChildView("label shinycolor")->setVisible(false);
|
||||
getChildView("shinycolorswatch")->setVisible(false);
|
||||
mShinyColorSwatch->setVisible(false);
|
||||
if (show_shininess)
|
||||
{
|
||||
updateShinyControls();
|
||||
|
|
@ -3192,7 +3127,7 @@ void LLPanelFace::updateVisibility(LLViewerObject* objectp /* = nullptr */)
|
|||
{
|
||||
updateBumpyControls();
|
||||
}
|
||||
getChildView("bumpytexture control")->setVisible(show_bumpiness);
|
||||
mBumpyTextureCtrl->setVisible(show_bumpiness);
|
||||
getChildView("combobox bumpiness")->setVisible(show_bumpiness);
|
||||
getChildView("label bumpiness")->setVisible(show_bumpiness);
|
||||
getChildView("bumpyScaleU")->setVisible(show_bumpiness);
|
||||
|
|
@ -3259,7 +3194,6 @@ void LLPanelFace::onCommitTexGen(LLUICtrl* ctrl, void* userdata)
|
|||
// static
|
||||
void LLPanelFace::updateShinyControls(bool is_setting_texture, bool mess_with_shiny_combobox)
|
||||
{
|
||||
//LLTextureCtrl* texture_ctrl = getChild<LLTextureCtrl>("shinytexture control");
|
||||
LLUUID shiny_texture_ID = mShinyTextureCtrl->getImageAssetID();
|
||||
LL_DEBUGS("Materials") << "Shiny texture selected: " << shiny_texture_ID << LL_ENDL;
|
||||
LLComboBox* comboShiny = getChild<LLComboBox>("combobox shininess");
|
||||
|
|
@ -3296,10 +3230,8 @@ void LLPanelFace::updateShinyControls(bool is_setting_texture, bool mess_with_sh
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
LLRadioGroup* radio_mat_type = getChild<LLRadioGroup>("radio_material_type");
|
||||
U32 materials_media = mComboMatMedia->getCurrentIndex();
|
||||
U32 material_type = radio_mat_type->getSelectedIndex();
|
||||
U32 material_type = mRadioMaterialType->getSelectedIndex();
|
||||
bool show_material = (materials_media == MATMEDIA_MATERIAL);
|
||||
bool show_shininess = show_material && (material_type == MATTYPE_SPECULAR) && mComboMatMedia->getEnabled();
|
||||
U32 shiny_value = comboShiny->getCurrentIndex();
|
||||
|
|
@ -3309,13 +3241,12 @@ void LLPanelFace::updateShinyControls(bool is_setting_texture, bool mess_with_sh
|
|||
getChildView("label environment")->setVisible(show_shinyctrls);
|
||||
getChildView("environment")->setVisible(show_shinyctrls);
|
||||
getChildView("label shinycolor")->setVisible(show_shinyctrls);
|
||||
getChildView("shinycolorswatch")->setVisible(show_shinyctrls);
|
||||
mShinyColorSwatch->setVisible(show_shinyctrls);
|
||||
}
|
||||
|
||||
// static
|
||||
void LLPanelFace::updateBumpyControls(bool is_setting_texture, bool mess_with_combobox)
|
||||
{
|
||||
//LLTextureCtrl* texture_ctrl = getChild<LLTextureCtrl>("bumpytexture control");
|
||||
LLUUID bumpy_texture_ID = mBumpyTextureCtrl->getImageAssetID();
|
||||
LL_DEBUGS("Materials") << "texture: " << bumpy_texture_ID << (mess_with_combobox ? "" : " do not") << " update combobox" << LL_ENDL;
|
||||
LLComboBox* comboBumpy = getChild<LLComboBox>("combobox bumpiness");
|
||||
|
|
@ -3326,9 +3257,6 @@ void LLPanelFace::updateBumpyControls(bool is_setting_texture, bool mess_with_co
|
|||
|
||||
if (mess_with_combobox)
|
||||
{
|
||||
LLUUID bumpy_texture_ID = mBumpyTextureCtrl->getImageAssetID();
|
||||
LL_DEBUGS("Materials") << "texture: " << bumpy_texture_ID << (mess_with_combobox ? "" : " do not") << " update combobox" << LL_ENDL;
|
||||
|
||||
if (!bumpy_texture_ID.isNull() && is_setting_texture)
|
||||
{
|
||||
if (!comboBumpy->itemExists(USE_TEXTURE))
|
||||
|
|
@ -3381,10 +3309,9 @@ void LLPanelFace::updateAlphaControls()
|
|||
}
|
||||
|
||||
U32 mat_type = MATTYPE_DIFFUSE;
|
||||
//LLRadioGroup* radio_mat_type = getChild<LLRadioGroup>("radio_material_type");
|
||||
if(mRadioMatType)
|
||||
if(mRadioMaterialType)
|
||||
{
|
||||
mat_type = mRadioMatType->getSelectedIndex();
|
||||
mat_type = mRadioMaterialType->getSelectedIndex();
|
||||
}
|
||||
|
||||
show_alphactrls = show_alphactrls && (mat_media == MATMEDIA_MATERIAL);
|
||||
|
|
@ -3437,20 +3364,19 @@ bool LLPanelFace::onDragPbr(LLUICtrl*, LLInventoryItem* item)
|
|||
|
||||
void LLPanelFace::onCommitPbr(const LLSD& data)
|
||||
{
|
||||
LLTextureCtrl* pbr_ctrl = findChild<LLTextureCtrl>("pbr_control");
|
||||
if (!pbr_ctrl) return;
|
||||
if (!pbr_ctrl->getTentative())
|
||||
if (!mPBRTextureCtrl) return;
|
||||
if (!mPBRTextureCtrl->getTentative())
|
||||
{
|
||||
// we grab the item id first, because we want to do a
|
||||
// permissions check in the selection manager. ARGH!
|
||||
LLUUID id = pbr_ctrl->getImageItemID();
|
||||
LLUUID id = mPBRTextureCtrl->getImageItemID();
|
||||
if (id.isNull())
|
||||
{
|
||||
id = pbr_ctrl->getImageAssetID();
|
||||
id = mPBRTextureCtrl->getImageAssetID();
|
||||
}
|
||||
if (!LLSelectMgr::getInstance()->selectionSetGLTFMaterial(id))
|
||||
{
|
||||
// If failed to set material, refresh pbr_ctrl's value
|
||||
// If failed to set material, refresh mPBRTextureCtrl's value
|
||||
refresh();
|
||||
}
|
||||
}
|
||||
|
|
@ -3465,16 +3391,15 @@ void LLPanelFace::onSelectPbr(const LLSD& data)
|
|||
{
|
||||
LLSelectMgr::getInstance()->saveSelectedObjectTextures();
|
||||
|
||||
LLTextureCtrl* pbr_ctrl = findChild<LLTextureCtrl>("pbr_control");
|
||||
if (!pbr_ctrl) return;
|
||||
if (!pbr_ctrl->getTentative())
|
||||
if (!mPBRTextureCtrl) return;
|
||||
if (!mPBRTextureCtrl->getTentative())
|
||||
{
|
||||
// we grab the item id first, because we want to do a
|
||||
// permissions check in the selection manager. ARGH!
|
||||
LLUUID id = pbr_ctrl->getImageItemID();
|
||||
LLUUID id = mPBRTextureCtrl->getImageItemID();
|
||||
if (id.isNull())
|
||||
{
|
||||
id = pbr_ctrl->getImageAssetID();
|
||||
id = mPBRTextureCtrl->getImageAssetID();
|
||||
}
|
||||
if (!LLSelectMgr::getInstance()->selectionSetGLTFMaterial(id))
|
||||
{
|
||||
|
|
@ -3584,7 +3509,7 @@ void LLPanelFace::onCancelNormalTexture(const LLSD& data)
|
|||
U8 bumpy = 0;
|
||||
bool identical_bumpy = false;
|
||||
LLSelectedTE::getBumpmap(bumpy, identical_bumpy);
|
||||
LLUUID spec_map_id = getChild<LLTextureCtrl>("bumpytexture control")->getImageAssetID();
|
||||
LLUUID spec_map_id = mBumpyTextureCtrl->getImageAssetID();
|
||||
bumpy = spec_map_id.isNull() ? bumpy : BUMPY_TEXTURE;
|
||||
sendBump(bumpy);
|
||||
}
|
||||
|
|
@ -4055,13 +3980,11 @@ void LLPanelFace::onCommitRepeatsPerMeter(LLUICtrl* ctrl, void* userdata)
|
|||
U32 material_type = 0;
|
||||
if (materials_media == MATMEDIA_PBR)
|
||||
{
|
||||
LLRadioGroup *radio_mat_type = self->getChild<LLRadioGroup>("radio_pbr_type");
|
||||
material_type = radio_mat_type->getSelectedIndex();
|
||||
material_type = self->mRadioPbrType->getSelectedIndex();
|
||||
}
|
||||
if (materials_media == MATMEDIA_MATERIAL)
|
||||
{
|
||||
LLRadioGroup *radio_mat_type = self->getChild<LLRadioGroup>("radio_material_type");
|
||||
material_type = radio_mat_type->getSelectedIndex();
|
||||
material_type = self->mRadioMaterialType->getSelectedIndex();
|
||||
}
|
||||
|
||||
F32 repeats_per_meter = (F32) repeats_ctrl->getValue().asReal();
|
||||
|
|
@ -4189,15 +4112,14 @@ void LLPanelFace::onClickAutoFix(void* userdata)
|
|||
void LLPanelFace::onAlignTexture(void* userdata)
|
||||
{
|
||||
LLPanelFace* self = (LLPanelFace*)userdata;
|
||||
self->alignTestureLayer();
|
||||
self->alignTextureLayer();
|
||||
}
|
||||
|
||||
void LLPanelFace::onClickBtnLoadInvPBR(void* userdata)
|
||||
{
|
||||
// Shouldn't this be "save to inventory?"
|
||||
LLPanelFace* self = (LLPanelFace*)userdata;
|
||||
LLTextureCtrl* pbr_ctrl = self->findChild<LLTextureCtrl>("pbr_control");
|
||||
pbr_ctrl->showPicker(true);
|
||||
self->mPBRTextureCtrl->showPicker(true);
|
||||
}
|
||||
|
||||
void LLPanelFace::onClickBtnEditPBR(void* userdata)
|
||||
|
|
@ -5126,7 +5048,7 @@ void LLPanelFace::updateGLTFTextureTransform(float value, U32 pbr_type, std::fun
|
|||
|
||||
void LLPanelFace::setMaterialOverridesFromSelection()
|
||||
{
|
||||
const U32 pbr_type = findChild<LLRadioGroup>("radio_pbr_type")->getSelectedIndex();
|
||||
const U32 pbr_type = mRadioPbrType->getSelectedIndex();
|
||||
const LLGLTFMaterial::TextureInfo texture_info = texture_info_from_pbrtype(pbr_type);
|
||||
U32 texture_info_start;
|
||||
U32 texture_info_end;
|
||||
|
|
@ -5296,7 +5218,7 @@ bool LLPanelFace::Selection::compareSelection()
|
|||
void LLPanelFace::onCommitGLTFTextureScaleU(LLUICtrl* ctrl)
|
||||
{
|
||||
const float value = (F32)ctrl->getValue().asReal();
|
||||
const U32 pbr_type = findChild<LLRadioGroup>("radio_pbr_type")->getSelectedIndex();
|
||||
const U32 pbr_type = mRadioPbrType->getSelectedIndex();
|
||||
updateGLTFTextureTransform(value, pbr_type, [&](LLGLTFMaterial::TextureTransform* new_transform)
|
||||
{
|
||||
new_transform->mScale.mV[VX] = value;
|
||||
|
|
@ -5306,7 +5228,7 @@ void LLPanelFace::onCommitGLTFTextureScaleU(LLUICtrl* ctrl)
|
|||
void LLPanelFace::onCommitGLTFTextureScaleV(LLUICtrl* ctrl)
|
||||
{
|
||||
const float value = (F32)ctrl->getValue().asReal();
|
||||
const U32 pbr_type = findChild<LLRadioGroup>("radio_pbr_type")->getSelectedIndex();
|
||||
const U32 pbr_type = mRadioPbrType->getSelectedIndex();
|
||||
updateGLTFTextureTransform(value, pbr_type, [&](LLGLTFMaterial::TextureTransform* new_transform)
|
||||
{
|
||||
new_transform->mScale.mV[VY] = value;
|
||||
|
|
@ -5316,7 +5238,7 @@ void LLPanelFace::onCommitGLTFTextureScaleV(LLUICtrl* ctrl)
|
|||
void LLPanelFace::onCommitGLTFRotation(LLUICtrl* ctrl)
|
||||
{
|
||||
const float value = (F32)ctrl->getValue().asReal() * DEG_TO_RAD;
|
||||
const U32 pbr_type = findChild<LLRadioGroup>("radio_pbr_type")->getSelectedIndex();
|
||||
const U32 pbr_type = mRadioPbrType->getSelectedIndex();
|
||||
updateGLTFTextureTransform(value, pbr_type, [&](LLGLTFMaterial::TextureTransform* new_transform)
|
||||
{
|
||||
new_transform->mRotation = value;
|
||||
|
|
@ -5326,7 +5248,7 @@ void LLPanelFace::onCommitGLTFRotation(LLUICtrl* ctrl)
|
|||
void LLPanelFace::onCommitGLTFTextureOffsetU(LLUICtrl* ctrl)
|
||||
{
|
||||
const float value = (F32)ctrl->getValue().asReal();
|
||||
const U32 pbr_type = findChild<LLRadioGroup>("radio_pbr_type")->getSelectedIndex();
|
||||
const U32 pbr_type = mRadioPbrType->getSelectedIndex();
|
||||
updateGLTFTextureTransform(value, pbr_type, [&](LLGLTFMaterial::TextureTransform* new_transform)
|
||||
{
|
||||
new_transform->mOffset.mV[VX] = value;
|
||||
|
|
@ -5336,7 +5258,7 @@ void LLPanelFace::onCommitGLTFTextureOffsetU(LLUICtrl* ctrl)
|
|||
void LLPanelFace::onCommitGLTFTextureOffsetV(LLUICtrl* ctrl)
|
||||
{
|
||||
const float value = (F32)ctrl->getValue().asReal();
|
||||
const U32 pbr_type = findChild<LLRadioGroup>("radio_pbr_type")->getSelectedIndex();
|
||||
const U32 pbr_type = mRadioPbrType->getSelectedIndex();
|
||||
updateGLTFTextureTransform(value, pbr_type, [&](LLGLTFMaterial::TextureTransform* new_transform)
|
||||
{
|
||||
new_transform->mOffset.mV[VY] = value;
|
||||
|
|
@ -5346,13 +5268,11 @@ void LLPanelFace::onCommitGLTFTextureOffsetV(LLUICtrl* ctrl)
|
|||
void LLPanelFace::onTextureSelectionChanged(LLInventoryItem* itemp)
|
||||
{
|
||||
LL_DEBUGS("Materials") << "item asset " << itemp->getAssetUUID() << LL_ENDL;
|
||||
//LLRadioGroup* radio_mat_type = findChild<LLRadioGroup>("radio_material_type");
|
||||
//if(!radio_mat_type)
|
||||
if (!mRadioMatType)
|
||||
if (!mRadioMaterialType)
|
||||
{
|
||||
return;
|
||||
}
|
||||
U32 mattype = mRadioMatType->getSelectedIndex();
|
||||
U32 mattype = mRadioMaterialType->getSelectedIndex();
|
||||
std::string which_control="texture control";
|
||||
switch (mattype)
|
||||
{
|
||||
|
|
@ -5398,8 +5318,7 @@ void LLPanelFace::onTextureSelectionChanged(LLInventoryItem* itemp)
|
|||
|
||||
void LLPanelFace::onPbrSelectionChanged(LLInventoryItem* itemp)
|
||||
{
|
||||
LLTextureCtrl* pbr_ctrl = findChild<LLTextureCtrl>("pbr_control");
|
||||
if (pbr_ctrl)
|
||||
if (mPBRTextureCtrl)
|
||||
{
|
||||
LLUUID obj_owner_id;
|
||||
std::string obj_owner_name;
|
||||
|
|
@ -5417,12 +5336,12 @@ void LLPanelFace::onPbrSelectionChanged(LLInventoryItem* itemp)
|
|||
|
||||
if ((can_copy && can_transfer && can_modify) || from_library)
|
||||
{
|
||||
pbr_ctrl->setCanApply(true, true);
|
||||
mPBRTextureCtrl->setCanApply(true, true);
|
||||
return;
|
||||
}
|
||||
|
||||
// if material has (no-transfer) attribute it can be applied only for object which we own and is not for sale
|
||||
pbr_ctrl->setCanApply(false, can_transfer ? true : is_object_owner && not_for_sale);
|
||||
mPBRTextureCtrl->setCanApply(false, can_transfer ? true : is_object_owner && not_for_sale);
|
||||
|
||||
if (gSavedSettings.getBOOL("TextureLivePreview"))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -43,7 +43,6 @@ class LLColorSwatchCtrl;
|
|||
class LLComboBox;
|
||||
class LLInventoryItem;
|
||||
class LLLineEditor;
|
||||
class LLRadioGroup;
|
||||
class LLSpinCtrl;
|
||||
class LLTextBox;
|
||||
class LLTextureCtrl;
|
||||
|
|
@ -53,6 +52,7 @@ class LLFloater;
|
|||
class LLMaterialID;
|
||||
class LLMediaCtrl;
|
||||
class LLMenuButton;
|
||||
class LLRadioGroup;
|
||||
|
||||
class PBRPickerAgentListener;
|
||||
class PBRPickerObjectListener;
|
||||
|
|
@ -149,7 +149,7 @@ protected:
|
|||
void sendFullbright(); // applies and sends full bright
|
||||
|
||||
void sendGlow();
|
||||
void alignTestureLayer();
|
||||
void alignTextureLayer();
|
||||
|
||||
void updateCopyTexButton();
|
||||
|
||||
|
|
@ -333,28 +333,30 @@ private:
|
|||
F32 getCurrentTextureOffsetV();
|
||||
|
||||
// Build tool controls
|
||||
LLTextureCtrl* mTextureCtrl;
|
||||
LLTextureCtrl* mShinyTextureCtrl;
|
||||
LLTextureCtrl* mBumpyTextureCtrl;
|
||||
LLColorSwatchCtrl* mColorSwatch;
|
||||
LLColorSwatchCtrl* mShinyColorSwatch;
|
||||
|
||||
LLComboBox* mComboTexGen;
|
||||
LLRadioGroup* mRadioMatType;
|
||||
LLRadioGroup* mRadioPbrType;
|
||||
|
||||
LLCheckBoxCtrl *mCheckFullbright;
|
||||
|
||||
LLTextBox* mLabelColorTransp;
|
||||
LLSpinCtrl* mCtrlColorTransp; // transparency = 1 - alpha
|
||||
|
||||
LLSpinCtrl* mCtrlGlow;
|
||||
LLSpinCtrl* mCtrlRpt;
|
||||
// </FS:CR>
|
||||
|
||||
LLComboBox *mComboMatMedia;
|
||||
LLMediaCtrl *mTitleMedia;
|
||||
LLTextBox *mTitleMediaText;
|
||||
LLTextureCtrl* mPBRTextureCtrl = nullptr;
|
||||
LLTextureCtrl* mTextureCtrl = nullptr;
|
||||
LLTextureCtrl* mShinyTextureCtrl = nullptr;
|
||||
LLTextureCtrl* mBumpyTextureCtrl = nullptr;
|
||||
LLColorSwatchCtrl* mColorSwatch = nullptr;
|
||||
LLColorSwatchCtrl* mShinyColorSwatch = nullptr;
|
||||
|
||||
LLComboBox* mComboTexGen = nullptr;
|
||||
|
||||
LLRadioGroup* mRadioMaterialType = nullptr;
|
||||
LLRadioGroup* mRadioPbrType = nullptr;
|
||||
|
||||
LLCheckBoxCtrl* mCheckFullbright = nullptr;
|
||||
|
||||
LLTextBox* mLabelColorTransp = nullptr;
|
||||
LLSpinCtrl* mCtrlColorTransp = nullptr; // transparency = 1 - alpha
|
||||
|
||||
LLSpinCtrl* mCtrlGlow = nullptr;
|
||||
LLComboBox *mComboMatMedia = nullptr;
|
||||
LLMediaCtrl *mTitleMedia = nullptr;
|
||||
LLTextBox *mTitleMediaText = nullptr;
|
||||
|
||||
// Update visibility of controls to match current UI mode
|
||||
// (e.g. materials vs media editing)
|
||||
|
|
|
|||
|
|
@ -1398,8 +1398,9 @@ void LLPanelGroupMembersSubTab::activate()
|
|||
if (!gdatap || !gdatap->isMemberDataComplete())
|
||||
{
|
||||
const U32 page_size = 50;
|
||||
std::string sort_column = mMembersList->getSortColumnName();
|
||||
LLGroupMgr::getInstance()->sendCapGroupMembersRequest(mGroupID, page_size, 0, sort_column);
|
||||
std::string sort_column_name = mMembersList->getSortColumnName();
|
||||
bool sort_descending = !mMembersList->getSortAscending();
|
||||
LLGroupMgr::getInstance()->sendCapGroupMembersRequest(mGroupID, page_size, 0, sort_column_name, sort_descending);
|
||||
}
|
||||
|
||||
if (!gdatap || !gdatap->isRoleMemberDataComplete())
|
||||
|
|
|
|||
|
|
@ -240,31 +240,33 @@ bool LLPanelMainInventory::postBuild()
|
|||
//panel->getFilter().markDefault();
|
||||
|
||||
// Set up the default inv. panel/filter settings.
|
||||
mActivePanel = getChild<LLInventoryPanel>(ALL_ITEMS);
|
||||
if (mActivePanel)
|
||||
mAllItemsPanel = getChild<LLInventoryPanel>(ALL_ITEMS);
|
||||
if (mAllItemsPanel)
|
||||
{
|
||||
// "All Items" is the previous only view, so it gets the InventorySortOrder
|
||||
mActivePanel->setSortOrder(gSavedSettings.getU32(LLInventoryPanel::DEFAULT_SORT_ORDER));
|
||||
mActivePanel->getFilter().markDefault();
|
||||
mActivePanel->getRootFolder()->applyFunctorRecursively(*mSavedFolderState);
|
||||
mActivePanel->setSelectCallback(boost::bind(&LLPanelMainInventory::onSelectionChange, this, mActivePanel, _1, _2));
|
||||
mAllItemsPanel->setSortOrder(gSavedSettings.getU32(LLInventoryPanel::DEFAULT_SORT_ORDER));
|
||||
mAllItemsPanel->getFilter().markDefault();
|
||||
mAllItemsPanel->getRootFolder()->applyFunctorRecursively(*mSavedFolderState);
|
||||
mAllItemsPanel->setSelectCallback(boost::bind(&LLPanelMainInventory::onSelectionChange, this, mAllItemsPanel, _1, _2));
|
||||
mResortActivePanel = true;
|
||||
}
|
||||
LLInventoryPanel* recent_items_panel = getChild<LLInventoryPanel>(RECENT_ITEMS);
|
||||
if (recent_items_panel)
|
||||
mActivePanel = mAllItemsPanel;
|
||||
|
||||
mRecentPanel = getChild<LLInventoryPanel>(RECENT_ITEMS);
|
||||
if (mRecentPanel)
|
||||
{
|
||||
// assign default values until we will be sure that we have setting to restore
|
||||
recent_items_panel->setSinceLogoff(true);
|
||||
mRecentPanel->setSinceLogoff(true);
|
||||
// <FS:Zi> Recent items panel should save sort order
|
||||
// recent_items_panel->setSortOrder(LLInventoryFilter::SO_DATE);
|
||||
recent_items_panel->setSortOrder(gSavedSettings.getU32(LLInventoryPanel::RECENTITEMS_SORT_ORDER));
|
||||
// mRecentPanel->setSortOrder(LLInventoryFilter::SO_DATE);
|
||||
mRecentPanel->setSortOrder(gSavedSettings.getU32(LLInventoryPanel::RECENTITEMS_SORT_ORDER));
|
||||
// </FS:Zi>
|
||||
recent_items_panel->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS);
|
||||
LLInventoryFilter& recent_filter = recent_items_panel->getFilter();
|
||||
mRecentPanel->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS);
|
||||
LLInventoryFilter& recent_filter = mRecentPanel->getFilter();
|
||||
recent_filter.setFilterObjectTypes(recent_filter.getFilterObjectTypes() & ~(0x1 << LLInventoryType::IT_CATEGORY));
|
||||
recent_filter.setEmptyLookupMessage("InventoryNoMatchingRecentItems");
|
||||
recent_filter.markDefault();
|
||||
recent_items_panel->setSelectCallback(boost::bind(&LLPanelMainInventory::onSelectionChange, this, recent_items_panel, _1, _2));
|
||||
mRecentPanel->setSelectCallback(boost::bind(&LLPanelMainInventory::onSelectionChange, this, mRecentPanel, _1, _2));
|
||||
}
|
||||
|
||||
mWornItemsPanel = getChild<LLInventoryPanel>(WORN_ITEMS);
|
||||
|
|
@ -313,12 +315,12 @@ bool LLPanelMainInventory::postBuild()
|
|||
|
||||
// Load the persistent "Recent Items" settings.
|
||||
// Note that the "All Items" settings do not persist.
|
||||
if(recent_items_panel)
|
||||
if(mRecentPanel)
|
||||
{
|
||||
if(savedFilterState.has(recent_items_panel->getFilter().getName()))
|
||||
if(savedFilterState.has(mRecentPanel->getFilter().getName()))
|
||||
{
|
||||
LLSD recent_items = savedFilterState.get(
|
||||
recent_items_panel->getFilter().getName());
|
||||
mRecentPanel->getFilter().getName());
|
||||
// <FS:Ansariel> Fix wrong param type
|
||||
//LLInventoryFilter::Params p;
|
||||
LLInventoryPanel::InventoryState p;
|
||||
|
|
@ -326,14 +328,14 @@ bool LLPanelMainInventory::postBuild()
|
|||
LLParamSDParser parser;
|
||||
parser.readSD(recent_items, p);
|
||||
// <FS:Ansariel> Fix wrong param type
|
||||
//recent_items_panel->getFilter().fromParams(p);
|
||||
recent_items_panel->getFilter().fromParams(p.filter);
|
||||
//mRecentPanel->getFilter().fromParams(p);
|
||||
mRecentPanel->getFilter().fromParams(p.filter);
|
||||
// </FS:Ansariel>
|
||||
// <FS:Ansariel> We do that earlier already
|
||||
//recent_items_panel->setSortOrder(gSavedSettings.getU32(LLInventoryPanel::RECENTITEMS_SORT_ORDER));
|
||||
//mRecentPanel->setSortOrder(gSavedSettings.getU32(LLInventoryPanel::RECENTITEMS_SORT_ORDER));
|
||||
|
||||
// </FS:Ansariel> Recent items panel doesn't filter empty folders until filter floater has been opened
|
||||
LLInventoryFilter& recent_filter = recent_items_panel->getFilter();
|
||||
LLInventoryFilter& recent_filter = mRecentPanel->getFilter();
|
||||
recent_filter.setFilterObjectTypes(recent_filter.getFilterObjectTypes() & ~(0x1 << LLInventoryType::IT_CATEGORY));
|
||||
// </FS:Ansariel>
|
||||
}
|
||||
|
|
@ -489,7 +491,7 @@ LLPanelMainInventory::~LLPanelMainInventory( void )
|
|||
|
||||
LLInventoryPanel* LLPanelMainInventory::getAllItemsPanel()
|
||||
{
|
||||
return getChild<LLInventoryPanel>(ALL_ITEMS);
|
||||
return mAllItemsPanel;
|
||||
}
|
||||
|
||||
void LLPanelMainInventory::selectAllItemsPanel()
|
||||
|
|
@ -499,7 +501,7 @@ void LLPanelMainInventory::selectAllItemsPanel()
|
|||
|
||||
bool LLPanelMainInventory::isRecentItemsPanelSelected()
|
||||
{
|
||||
return (RECENT_ITEMS == getActivePanel()->getName());
|
||||
return (mRecentPanel == getActivePanel());
|
||||
}
|
||||
|
||||
void LLPanelMainInventory::startSearch()
|
||||
|
|
@ -1466,8 +1468,8 @@ void LLPanelMainInventory::toggleFindOptions()
|
|||
|
||||
void LLPanelMainInventory::setSelectCallback(const LLFolderView::signal_t::slot_type& cb)
|
||||
{
|
||||
getChild<LLInventoryPanel>(ALL_ITEMS)->setSelectCallback(cb);
|
||||
getChild<LLInventoryPanel>(RECENT_ITEMS)->setSelectCallback(cb);
|
||||
mAllItemsPanel->setSelectCallback(cb);
|
||||
mRecentPanel->setSelectCallback(cb);
|
||||
getChild<LLInventoryPanel>("Worn Items")->setSelectCallback(cb);
|
||||
}
|
||||
|
||||
|
|
@ -1944,10 +1946,10 @@ void LLPanelMainInventory::initListCommandsHandlers()
|
|||
{
|
||||
childSetAction("trash_btn", boost::bind(&LLPanelMainInventory::onTrashButtonClick, this)); // <FS:Ansariel> Keep better inventory layout
|
||||
childSetAction("add_btn", boost::bind(&LLPanelMainInventory::onAddButtonClick, this));
|
||||
childSetAction("view_mode_btn", boost::bind(&LLPanelMainInventory::onViewModeClick, this));
|
||||
childSetAction("up_btn", boost::bind(&LLPanelMainInventory::onUpFolderClicked, this));
|
||||
childSetAction("back_btn", boost::bind(&LLPanelMainInventory::onBackFolderClicked, this));
|
||||
childSetAction("forward_btn", boost::bind(&LLPanelMainInventory::onForwardFolderClicked, this));
|
||||
mViewModeBtn->setCommitCallback(boost::bind(&LLPanelMainInventory::onViewModeClick, this));
|
||||
mUpBtn->setCommitCallback(boost::bind(&LLPanelMainInventory::onUpFolderClicked, this));
|
||||
mBackBtn->setCommitCallback(boost::bind(&LLPanelMainInventory::onBackFolderClicked, this));
|
||||
mForwardBtn->setCommitCallback(boost::bind(&LLPanelMainInventory::onForwardFolderClicked, this));
|
||||
|
||||
// <FS:Ansariel> Keep better inventory layout
|
||||
mTrashButton = getChild<LLDragAndDropButton>("trash_btn");
|
||||
|
|
@ -2028,12 +2030,9 @@ void LLPanelMainInventory::initSingleFolderRoot(const LLUUID& start_folder_id)
|
|||
|
||||
void LLPanelMainInventory::initInventoryViews()
|
||||
{
|
||||
LLInventoryPanel* all_item = getChild<LLInventoryPanel>(ALL_ITEMS);
|
||||
all_item->initializeViewBuilding();
|
||||
LLInventoryPanel* recent_item = getChild<LLInventoryPanel>(RECENT_ITEMS);
|
||||
recent_item->initializeViewBuilding();
|
||||
LLInventoryPanel* worn_item = getChild<LLInventoryPanel>(WORN_ITEMS);
|
||||
worn_item->initializeViewBuilding();
|
||||
mAllItemsPanel->initializeViewBuilding();
|
||||
mRecentPanel->initializeViewBuilding();
|
||||
mWornItemsPanel->initializeViewBuilding();
|
||||
}
|
||||
|
||||
void LLPanelMainInventory::toggleViewMode()
|
||||
|
|
|
|||
|
|
@ -210,7 +210,9 @@ private:
|
|||
LLUICtrl* mCounterCtrl;
|
||||
LLHandle<LLFloater> mFinderHandle;
|
||||
LLInventoryPanel* mActivePanel;
|
||||
LLInventoryPanel* mWornItemsPanel;
|
||||
LLInventoryPanel* mAllItemsPanel = nullptr;
|
||||
LLInventoryPanel* mRecentPanel = nullptr;
|
||||
LLInventoryPanel* mWornItemsPanel = nullptr;
|
||||
bool mResortActivePanel;
|
||||
LLSaveFolderState* mSavedFolderState;
|
||||
std::string mFilterText;
|
||||
|
|
|
|||
|
|
@ -441,6 +441,8 @@ LLPanelOutfitEdit::~LLPanelOutfitEdit()
|
|||
|
||||
delete mCOFDragAndDropObserver;
|
||||
|
||||
delete mWearableListViewItemsComparator;
|
||||
|
||||
while (!mListViewItemTypes.empty()) {
|
||||
delete mListViewItemTypes.back();
|
||||
mListViewItemTypes.pop_back();
|
||||
|
|
@ -483,8 +485,10 @@ bool LLPanelOutfitEdit::postBuild()
|
|||
|
||||
mFolderViewBtn = getChild<LLButton>("folder_view_btn");
|
||||
mListViewBtn = getChild<LLButton>("list_view_btn");
|
||||
mFilterPanel = getChild<LLView>("filter_panel");
|
||||
mFilterBtn = getChild<LLButton>("filter_button");
|
||||
mFilterBtn->setCommitCallback(boost::bind(&LLPanelOutfitEdit::showWearablesFilter, this));
|
||||
|
||||
childSetCommitCallback("filter_button", boost::bind(&LLPanelOutfitEdit::showWearablesFilter, this), NULL);
|
||||
childSetCommitCallback("folder_view_btn", boost::bind(&LLPanelOutfitEdit::showWearablesFolderView, this), NULL);
|
||||
childSetCommitCallback("folder_view_btn", boost::bind(&LLPanelOutfitEdit::saveListSelection, this), NULL);
|
||||
childSetCommitCallback("list_view_btn", boost::bind(&LLPanelOutfitEdit::showWearablesListView, this), NULL);
|
||||
|
|
@ -537,13 +541,17 @@ bool LLPanelOutfitEdit::postBuild()
|
|||
mSearchFilter = getChild<LLFilterEditor>("look_item_filter");
|
||||
mSearchFilter->setCommitCallback(boost::bind(&LLPanelOutfitEdit::onSearchEdit, this, _2));
|
||||
|
||||
childSetAction("show_add_wearables_btn", boost::bind(&LLPanelOutfitEdit::onAddMoreButtonClicked, this));
|
||||
mShowAddWearablesBtn = getChild<LLButton>("show_add_wearables_btn");
|
||||
mShowAddWearablesBtn->setClickedCallback(boost::bind(&LLPanelOutfitEdit::onAddMoreButtonClicked, this));
|
||||
|
||||
mPlusBtn = getChild<LLButton>("plus_btn");
|
||||
mPlusBtn->setClickedCallback(boost::bind(&LLPanelOutfitEdit::onPlusBtnClicked, this));
|
||||
|
||||
childSetAction(REVERT_BTN, boost::bind(&LLAppearanceMgr::wearBaseOutfit, LLAppearanceMgr::getInstance()));
|
||||
|
||||
mNoAddWearablesButtonBar = getChild<LLUICtrl>("no_add_wearables_button_bar");
|
||||
mAddWearablesButtonBar = getChild<LLUICtrl>("add_wearables_button_bar");
|
||||
|
||||
/*
|
||||
* By default AT_CLOTHING are sorted by (in in MY OUTFITS):
|
||||
* - by type (types order determined in LLWearableType::EType)
|
||||
|
|
@ -574,11 +582,15 @@ bool LLPanelOutfitEdit::postBuild()
|
|||
getChild<LLButton>(SAVE_BTN)->setCommitCallback(boost::bind(&LLPanelOutfitEdit::saveOutfit, this, false));
|
||||
getChild<LLButton>(SAVE_AS_BTN)->setCommitCallback(boost::bind(&LLPanelOutfitEdit::saveOutfit, this, true));
|
||||
|
||||
mLoadingIndicator = getChild<LLLoadingIndicator>("edit_outfit_loading_indicator");
|
||||
mOutfitNameStatusPanel = getChild<LLPanel>("outfit_name_and_status");
|
||||
|
||||
// <FS:Ansariel> Show avatar complexity in appearance floater
|
||||
mAvatarComplexityLabel = getChild<LLTextBox>("avatar_complexity_label");
|
||||
mAvatarComplexityAddingLabel = getChild<LLTextBox>("avatar_complexity_adding_label");
|
||||
|
||||
onOutfitChanging(gAgentWearables.isCOFChangeInProgress());
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -618,15 +630,15 @@ void LLPanelOutfitEdit::showAddWearablesPanel(bool show_add_wearables)
|
|||
|
||||
mAddWearablesPanel->setVisible(show_add_wearables);
|
||||
|
||||
getChild<LLUICtrl>("show_add_wearables_btn")->setValue(show_add_wearables);
|
||||
mShowAddWearablesBtn->setValue(show_add_wearables);
|
||||
|
||||
updateFiltersVisibility();
|
||||
getChildView("filter_button")->setVisible( show_add_wearables);
|
||||
mFilterBtn->setVisible( show_add_wearables);
|
||||
|
||||
//search filter should be disabled
|
||||
if (!show_add_wearables)
|
||||
{
|
||||
getChild<LLUICtrl>("filter_button")->setValue(false);
|
||||
mFilterBtn->setValue(false);
|
||||
|
||||
mFolderViewFilterCmbBox->setVisible(false);
|
||||
mListViewFilterCmbBox->setVisible(false);
|
||||
|
|
@ -653,15 +665,15 @@ void LLPanelOutfitEdit::showAddWearablesPanel(bool show_add_wearables)
|
|||
}
|
||||
|
||||
//switching button bars
|
||||
getChildView("no_add_wearables_button_bar")->setVisible( !show_add_wearables);
|
||||
getChildView("add_wearables_button_bar")->setVisible( show_add_wearables);
|
||||
mNoAddWearablesButtonBar->setVisible( !show_add_wearables);
|
||||
mAddWearablesButtonBar->setVisible( show_add_wearables);
|
||||
}
|
||||
|
||||
void LLPanelOutfitEdit::showWearablesFilter()
|
||||
{
|
||||
bool filter_visible = getChild<LLUICtrl>("filter_button")->getValue();
|
||||
bool filter_visible = mFilterBtn->getValue();
|
||||
|
||||
getChildView("filter_panel")->setVisible( filter_visible);
|
||||
mFilterPanel->setVisible(filter_visible);
|
||||
|
||||
if(!filter_visible)
|
||||
{
|
||||
|
|
@ -1324,19 +1336,17 @@ static void update_status_widget_rect(LLView * widget, S32 right_border)
|
|||
|
||||
void LLPanelOutfitEdit::onOutfitChanging(bool started)
|
||||
{
|
||||
static LLLoadingIndicator* indicator = getChild<LLLoadingIndicator>("edit_outfit_loading_indicator");
|
||||
static LLView* status_panel = getChild<LLView>("outfit_name_and_status");
|
||||
static S32 indicator_delta = status_panel->getRect().getWidth() - indicator->getRect().mLeft;
|
||||
S32 indicator_delta = mOutfitNameStatusPanel->getRect().getWidth() - mLoadingIndicator->getRect().mLeft;
|
||||
|
||||
S32 delta = started ? indicator_delta : 0;
|
||||
S32 right_border = status_panel->getRect().getWidth() - delta;
|
||||
S32 right_border = mOutfitNameStatusPanel->getRect().getWidth() - delta;
|
||||
|
||||
if (mCurrentOutfitName)
|
||||
update_status_widget_rect(mCurrentOutfitName, right_border);
|
||||
if (mStatus)
|
||||
update_status_widget_rect(mStatus, right_border);
|
||||
|
||||
indicator->setVisible(started);
|
||||
mLoadingIndicator->setVisible(started);
|
||||
}
|
||||
|
||||
void LLPanelOutfitEdit::getCurrentItemUUID(LLUUID& selected_id)
|
||||
|
|
|
|||
|
|
@ -59,6 +59,7 @@ class LLMenuGL;
|
|||
class LLFindNonLinksByMask;
|
||||
class LLFindWearablesOfType;
|
||||
class LLWearableItemTypeNameComparator;
|
||||
class LLLoadingIndicator;
|
||||
|
||||
class LLPanelOutfitEdit : public LLPanel
|
||||
{
|
||||
|
|
@ -221,7 +222,15 @@ private:
|
|||
LLButton* mFolderViewBtn;
|
||||
LLButton* mListViewBtn;
|
||||
LLButton* mPlusBtn;
|
||||
LLButton* mShowAddWearablesBtn = nullptr;
|
||||
LLButton* mFilterBtn = nullptr;
|
||||
LLPanel* mAddWearablesPanel;
|
||||
LLPanel* mOutfitNameStatusPanel = nullptr;
|
||||
LLLoadingIndicator* mLoadingIndicator = nullptr;
|
||||
LLView* mFilterPanel = nullptr;
|
||||
LLUICtrl* mNoAddWearablesButtonBar = nullptr;
|
||||
LLUICtrl* mAddWearablesButtonBar = nullptr;
|
||||
|
||||
// <FS:Ansariel> Show avatar complexity in appearance floater
|
||||
LLTextBox* mAvatarComplexityLabel;
|
||||
LLTextBox* mAvatarComplexityAddingLabel;
|
||||
|
|
|
|||
|
|
@ -292,7 +292,8 @@ void LLPanelOutfitsInventory::openApearanceTab(const std::string& tab_name)
|
|||
void LLPanelOutfitsInventory::initListCommandsHandlers()
|
||||
{
|
||||
mListCommands = getChild<LLPanel>("bottom_panel");
|
||||
mListCommands->childSetAction("wear_btn", boost::bind(&LLPanelOutfitsInventory::onWearButtonClick, this));
|
||||
mWearBtn = mListCommands->getChild<LLButton>("wear_btn");
|
||||
mWearBtn->setCommitCallback(boost::bind(&LLPanelOutfitsInventory::onWearButtonClick, this));
|
||||
mMyOutfitsPanel->childSetAction("trash_btn", boost::bind(&LLPanelOutfitsInventory::onTrashButtonClick, this));
|
||||
mOutfitGalleryPanel->childSetAction("trash_btn", boost::bind(&LLPanelOutfitsInventory::onTrashButtonClick, this));
|
||||
}
|
||||
|
|
@ -303,14 +304,12 @@ void LLPanelOutfitsInventory::updateListCommands()
|
|||
bool wear_enabled = isActionEnabled("wear");
|
||||
bool wear_visible = !isCOFPanelActive();
|
||||
bool make_outfit_enabled = isActionEnabled("save_outfit");
|
||||
|
||||
LLButton* wear_btn = mListCommands->getChild<LLButton>("wear_btn");
|
||||
mMyOutfitsPanel->childSetEnabled("trash_btn", trash_enabled);
|
||||
mOutfitGalleryPanel->childSetEnabled("trash_btn", trash_enabled);
|
||||
wear_btn->setEnabled(wear_enabled);
|
||||
wear_btn->setVisible(wear_visible);
|
||||
mWearBtn->setEnabled(wear_enabled);
|
||||
mWearBtn->setVisible(wear_visible);
|
||||
getChild<LLButton>(SAVE_BTN)->setEnabled(make_outfit_enabled);
|
||||
wear_btn->setToolTip(getString((!isOutfitsGalleryPanelActive() && mMyOutfitsPanel->hasItemSelected()) ? "wear_items_tooltip" : "wear_outfit_tooltip"));
|
||||
mWearBtn->setToolTip(getString((!isOutfitsGalleryPanelActive() && mMyOutfitsPanel->hasItemSelected()) ? "wear_items_tooltip" : "wear_outfit_tooltip"));
|
||||
}
|
||||
|
||||
void LLPanelOutfitsInventory::onTrashButtonClick()
|
||||
|
|
|
|||
|
|
@ -116,6 +116,7 @@ protected:
|
|||
private:
|
||||
LLPanel* mListCommands;
|
||||
LLMenuGL* mMenuAdd;
|
||||
LLButton* mWearBtn = nullptr;
|
||||
// List Commands //
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
|
|
|||
|
|
@ -170,8 +170,6 @@ public:
|
|||
id_it = uuids.begin(),
|
||||
id_end = uuids.end();
|
||||
|
||||
LLAvatarItemDistanceComparator::id_to_pos_map_t pos_map;
|
||||
|
||||
mAvatarsPositions.clear();
|
||||
|
||||
for (;pos_it != pos_end && id_it != id_end; ++pos_it, ++id_it )
|
||||
|
|
@ -673,17 +671,14 @@ bool LLPanelPeople::postBuild()
|
|||
//S32 max_premium = LLAgentBenefitsMgr::get("Premium").getGroupMembershipLimit();
|
||||
// </FS:Ansariel>
|
||||
|
||||
// <FS:Ansariel> Firestorm radar
|
||||
//mNearbyFilterCommitConnection = getChild<LLFilterEditor>("nearby_filter_input")->setCommitCallback(boost::bind(&LLPanelPeople::onFilterEdit, this, _2));
|
||||
mFriedsFilterCommitConnection = getChild<LLFilterEditor>("friends_filter_input")->setCommitCallback(boost::bind(&LLPanelPeople::onFilterEdit, this, _2));
|
||||
mGroupsFilterCommitConnection = getChild<LLFilterEditor>("groups_filter_input")->setCommitCallback(boost::bind(&LLPanelPeople::onFilterEdit, this, _2));
|
||||
mRecentFilterCommitConnection = getChild<LLFilterEditor>("recent_filter_input")->setCommitCallback(boost::bind(&LLPanelPeople::onFilterEdit, this, _2));
|
||||
|
||||
LLPanel* group_tab = getChild<LLPanel>(GROUP_TAB_NAME);
|
||||
mGroupDelBtn = group_tab->getChild<LLButton>("minus_btn");
|
||||
mGroupCountText = group_tab->getChild<LLTextBox>("groupcount");
|
||||
// <FS:Ansariel> Don't bother with "want more?" advertisement
|
||||
//if(LLAgentBenefitsMgr::current().getGroupMembershipLimit() < max_premium)
|
||||
//{
|
||||
// getChild<LLTextBox>("groupcount")->setText(getString("GroupCountWithInfo"));
|
||||
// getChild<LLTextBox>("groupcount")->setURLClickedCallback(boost::bind(&LLPanelPeople::onGroupLimitInfo, this));
|
||||
// mGroupCountText->setText(getString("GroupCountWithInfo"));
|
||||
// mGroupCountText->setURLClickedCallback(boost::bind(&LLPanelPeople::onGroupLimitInfo, this));
|
||||
//}
|
||||
// </FS:Ansariel>
|
||||
mTabContainer = getChild<LLTabContainer>("tabs");
|
||||
|
|
@ -696,6 +691,9 @@ bool LLPanelPeople::postBuild()
|
|||
friends_tab->setVisibleCallback(boost::bind(&Updater::setActive, mFriendListUpdater, _2));
|
||||
friends_tab->setVisibleCallback(boost::bind(&LLPanelPeople::removePicker, this));
|
||||
|
||||
mFriendsGearBtn = friends_tab->getChild<LLButton>("gear_btn");
|
||||
mFriendsDelFriendBtn = friends_tab->getChild<LLUICtrl>("friends_del_btn");
|
||||
|
||||
// <FS:Ansariel> FIRE-4740: Friend counter in people panel
|
||||
mFriendsTabContainer = friends_tab->findChild<LLTabContainer>("friends_accordion");
|
||||
// <FS:Ansariel> Firestorm radar
|
||||
|
|
@ -703,11 +701,11 @@ bool LLPanelPeople::postBuild()
|
|||
mAllFriendList = friends_tab->getChild<LLAvatarList>("avatars_all");
|
||||
mOnlineFriendList->setNoItemsCommentText(getString("no_friends_online"));
|
||||
mOnlineFriendList->setShowIcons("FriendsListShowIcons");
|
||||
mOnlineFriendList->showPermissions("FriendsListShowPermissions");
|
||||
mOnlineFriendList->showPermissions(gSavedSettings.getBOOL("FriendsListShowPermissions"));
|
||||
mOnlineFriendList->setShowCompleteName(!gSavedSettings.getBOOL("FriendsListHideUsernames"));
|
||||
mAllFriendList->setNoItemsCommentText(getString("no_friends"));
|
||||
mAllFriendList->setShowIcons("FriendsListShowIcons");
|
||||
mAllFriendList->showPermissions("FriendsListShowPermissions");
|
||||
mAllFriendList->showPermissions(gSavedSettings.getBOOL("FriendsListShowPermissions"));
|
||||
mAllFriendList->setShowCompleteName(!gSavedSettings.getBOOL("FriendsListHideUsernames"));
|
||||
|
||||
LLPanel* nearby_tab = getChild<LLPanel>(NEARBY_TAB_NAME);
|
||||
|
|
@ -732,23 +730,36 @@ bool LLPanelPeople::postBuild()
|
|||
//mNearbyList->setRlvCheckShowNames(true);
|
||||
// [/RLVa:KB]
|
||||
|
||||
mMiniMap = (LLNetMap*)getChildView("Net Map",true);
|
||||
mMiniMap = nearby_tab->getChild<LLNetMap>("Net Map", true);
|
||||
// <FS:Ansariel> Synchronize tooltips throughout instances
|
||||
//mMiniMap->setToolTipMsg(gSavedSettings.getBOOL("DoubleClickTeleport") ?
|
||||
// getString("AltMiniMapToolTipMsg") : getString("MiniMapToolTipMsg"));
|
||||
// <//FS:Ansariel> Synchronize tooltips throughout instances
|
||||
|
||||
mRecentList = getChild<LLPanel>(RECENT_TAB_NAME)->getChild<LLAvatarList>("avatar_list");
|
||||
mNearbyGearBtn = nearby_tab->getChild<LLButton>("gear_btn");
|
||||
mNearbyAddFriendBtn = nearby_tab->getChild<LLButton>("add_friend_btn");
|
||||
|
||||
LLPanel* recent_tab = getChild<LLPanel>(RECENT_TAB_NAME);
|
||||
mRecentList = recent_tab->getChild<LLAvatarList>("avatar_list");
|
||||
mRecentList->setNoItemsCommentText(getString("no_recent_people"));
|
||||
mRecentList->setNoItemsMsg(getString("no_recent_people"));
|
||||
mRecentList->setNoFilteredItemsMsg(getString("no_filtered_recent_people"));
|
||||
mRecentList->setShowIcons("RecentListShowIcons");
|
||||
|
||||
mGroupList = getChild<LLGroupList>("group_list");
|
||||
mRecentGearBtn = recent_tab->getChild<LLButton>("gear_btn");
|
||||
mRecentAddFriendBtn = recent_tab->getChild<LLButton>("add_friend_btn");
|
||||
|
||||
mGroupList = group_tab->getChild<LLGroupList>("group_list");
|
||||
mGroupList->setNoItemsCommentText(getString("no_groups_msg"));
|
||||
mGroupList->setNoItemsMsg(getString("no_groups_msg"));
|
||||
mGroupList->setNoFilteredItemsMsg(getString("no_filtered_groups_msg"));
|
||||
|
||||
// <FS:Ansariel> Firestorm radar
|
||||
//mNearbyFilterCommitConnection = nearby_tab->getChild<LLFilterEditor>("nearby_filter_input")->setCommitCallback(boost::bind(&LLPanelPeople::onFilterEdit, this, _2));
|
||||
mFriedsFilterCommitConnection = friends_tab->getChild<LLFilterEditor>("friends_filter_input")->setCommitCallback(boost::bind(&LLPanelPeople::onFilterEdit, this, _2));
|
||||
mRecentFilterCommitConnection = recent_tab->getChild<LLFilterEditor>("recent_filter_input")->setCommitCallback(boost::bind(&LLPanelPeople::onFilterEdit, this, _2));
|
||||
mGroupsFilterCommitConnection = group_tab->getChild<LLFilterEditor>("groups_filter_input")->setCommitCallback(boost::bind(&LLPanelPeople::onFilterEdit, this, _2));
|
||||
|
||||
// <FS:Ansariel> Use Firestorm radar menu handler
|
||||
//mNearbyList->setContextMenu(&LLPanelPeopleMenus::gNearbyPeopleContextMenu);
|
||||
// </FS:Ansariel>
|
||||
|
|
@ -978,13 +989,11 @@ void LLPanelPeople::updateRecentList()
|
|||
|
||||
void LLPanelPeople::updateButtons()
|
||||
{
|
||||
std::string cur_tab = getActiveTabName();
|
||||
// [RLVa:KB] - Checked: RLVa-1.4.9
|
||||
const std::string& cur_tab = getActiveTabName();
|
||||
bool nearby_tab_active = (cur_tab == NEARBY_TAB_NAME);
|
||||
// [/RLVa:KB]
|
||||
bool friends_tab_active = (cur_tab == FRIENDS_TAB_NAME);
|
||||
bool group_tab_active = (cur_tab == GROUP_TAB_NAME);
|
||||
//bool recent_tab_active = (cur_tab == RECENT_TAB_NAME);
|
||||
bool recent_tab_active = (cur_tab == RECENT_TAB_NAME);
|
||||
LLUUID selected_id;
|
||||
|
||||
uuid_vec_t selected_uuids;
|
||||
|
|
@ -999,16 +1008,15 @@ void LLPanelPeople::updateButtons()
|
|||
selected_id = mGroupList->getSelectedUUID();
|
||||
}
|
||||
|
||||
LLPanel* groups_panel = mTabContainer->getCurrentPanel();
|
||||
groups_panel->getChildView("minus_btn")->setEnabled(item_selected && selected_id.notNull()); // a real group selected
|
||||
mGroupDelBtn->setEnabled(item_selected && selected_id.notNull()); // a real group selected
|
||||
|
||||
// <FS:CR> FIRE-12229
|
||||
//U32 groups_count = static_cast<U32>(gAgent.mGroups.size());
|
||||
//U32 max_groups = LLAgentBenefitsMgr::current().getGroupMembershipLimit();
|
||||
//U32 groups_remaining = max_groups > groups_count ? max_groups - groups_count : 0;
|
||||
//groups_panel->getChild<LLUICtrl>("groupcount")->setTextArg("[COUNT]", llformat("%d", groups_count));
|
||||
//groups_panel->getChild<LLUICtrl>("groupcount")->setTextArg("[REMAINING]", llformat("%d", groups_remaining));
|
||||
getChild<LLUICtrl>("groupcount")->setValue(FSCommon::populateGroupCount());
|
||||
//mGroupCountText->setTextArg("[COUNT]", llformat("%d", groups_count));
|
||||
//mGroupCountText->setTextArg("[REMAINING]", llformat("%d", groups_remaining));
|
||||
mGroupCountText->setValue(FSCommon::populateGroupCount());
|
||||
// </FS:CR>
|
||||
}
|
||||
else
|
||||
|
|
@ -1023,40 +1031,39 @@ void LLPanelPeople::updateButtons()
|
|||
is_self = gAgent.getID() == selected_id;
|
||||
}
|
||||
|
||||
LLPanel* cur_panel = mTabContainer->getCurrentPanel();
|
||||
if (cur_panel)
|
||||
{
|
||||
// <FS:Ansariel> RLVa check
|
||||
//if (cur_panel->hasChild("add_friend_btn", true))
|
||||
// cur_panel->getChildView("add_friend_btn")->setEnabled(item_selected && !is_friend && !is_self);
|
||||
if (!nearby_tab_active && cur_panel->hasChild("add_friend_btn", true))
|
||||
cur_panel->getChildView("add_friend_btn")->setEnabled(item_selected && !is_friend && !is_self && RlvActions::canShowName(RlvActions::SNC_DEFAULT, selected_id));
|
||||
// </FS:Ansariel> RLVa check
|
||||
|
||||
// <FS:Ansariel> Firestorm radar
|
||||
//if(nearby_tab_active)
|
||||
//{
|
||||
// mNearbyAddFriendBtn->setEnabled(item_selected && !is_friend && !is_self);
|
||||
// mNearbyGearBtn->setEnabled(multiple_selected);
|
||||
//}
|
||||
// </FS:Ansariel> Firestorm radar
|
||||
if (friends_tab_active)
|
||||
{
|
||||
cur_panel->getChildView("friends_del_btn")->setEnabled(multiple_selected);
|
||||
mFriendsDelFriendBtn->setEnabled(multiple_selected);
|
||||
mFriendsGearBtn->setEnabled(multiple_selected);
|
||||
}
|
||||
|
||||
// <FS:Ansariel> Fix warning about missing gear button on blocklist panel
|
||||
//if (!group_tab_active)
|
||||
if (!group_tab_active && !nearby_tab_active && cur_tab != BLOCKED_TAB_NAME)
|
||||
// </FS:Ansariel>
|
||||
if (recent_tab_active)
|
||||
{
|
||||
cur_panel->getChildView("gear_btn")->setEnabled(multiple_selected);
|
||||
// <FS:Ansariel> RLVa check
|
||||
//mRecentAddFriendBtn->setEnabled(item_selected && !is_friend && !is_self);
|
||||
mRecentAddFriendBtn->setEnabled(item_selected && !is_friend && !is_self && RlvActions::canShowName(RlvActions::SNC_DEFAULT, selected_id));
|
||||
mRecentGearBtn->setEnabled(multiple_selected);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
std::string LLPanelPeople::getActiveTabName() const
|
||||
const std::string& LLPanelPeople::getActiveTabName() const
|
||||
{
|
||||
return mTabContainer->getCurrentPanel()->getName();
|
||||
}
|
||||
|
||||
LLUUID LLPanelPeople::getCurrentItemID() const
|
||||
{
|
||||
std::string cur_tab = getActiveTabName();
|
||||
const std::string& cur_tab = getActiveTabName();
|
||||
|
||||
if (cur_tab == FRIENDS_TAB_NAME) // this tab has two lists
|
||||
{
|
||||
|
|
@ -1093,7 +1100,7 @@ LLUUID LLPanelPeople::getCurrentItemID() const
|
|||
|
||||
void LLPanelPeople::getCurrentItemIDs(uuid_vec_t& selected_uuids) const
|
||||
{
|
||||
std::string cur_tab = getActiveTabName();
|
||||
const std::string& cur_tab = getActiveTabName();
|
||||
|
||||
if (cur_tab == FRIENDS_TAB_NAME)
|
||||
{
|
||||
|
|
@ -1193,7 +1200,7 @@ void LLPanelPeople::onFilterEdit(const std::string& search_string)
|
|||
saved_filter = search_upper;
|
||||
|
||||
// Apply new filter to the current tab.
|
||||
const std::string cur_tab = getActiveTabName();
|
||||
const std::string& cur_tab = getActiveTabName();
|
||||
if (cur_tab == NEARBY_TAB_NAME)
|
||||
{
|
||||
mNearbyList->setNameFilter(filter);
|
||||
|
|
|
|||
|
|
@ -106,7 +106,7 @@ private:
|
|||
bool isItemsFreeOfFriends(const uuid_vec_t& uuids);
|
||||
|
||||
void updateButtons();
|
||||
std::string getActiveTabName() const;
|
||||
const std::string& getActiveTabName() const;
|
||||
LLUUID getCurrentItemID() const;
|
||||
void getCurrentItemIDs(uuid_vec_t& selected_uuids) const;
|
||||
void setSortOrder(LLAvatarList* list, ESortOrder order, bool save = true);
|
||||
|
|
@ -167,6 +167,17 @@ private:
|
|||
// <FS:Ansariel> FIRE-4740: Friend counter in people panel
|
||||
LLTabContainer* mFriendsTabContainer;
|
||||
|
||||
LLButton* mNearbyGearBtn = nullptr;
|
||||
LLButton* mFriendsGearBtn = nullptr;
|
||||
LLButton* mRecentGearBtn = nullptr;
|
||||
LLButton* mGroupDelBtn = nullptr;
|
||||
|
||||
LLButton* mNearbyAddFriendBtn = nullptr;
|
||||
LLButton* mRecentAddFriendBtn = nullptr;
|
||||
LLUICtrl* mFriendsDelFriendBtn = nullptr;
|
||||
|
||||
LLTextBox* mGroupCountText = nullptr;
|
||||
|
||||
std::vector<std::string> mSavedOriginalFilters;
|
||||
std::vector<std::string> mSavedFilters;
|
||||
|
||||
|
|
|
|||
|
|
@ -469,7 +469,7 @@ void LLProgressView::initLogos()
|
|||
//#endif // defined(LL_FMODSTUDIO) || defined(LL_HAVOK) // <FS> FIRE-30937: Always needed
|
||||
|
||||
// We don't know final screen rect yet, so we can't precalculate position fully
|
||||
S32 texture_start_x = (S32)mLogosLabel->getFont()->getWidthF32(mLogosLabel->getText()) + default_pad;
|
||||
S32 texture_start_x = (S32)mLogosLabel->getFont()->getWidthF32(mLogosLabel->getWText().c_str()) + default_pad;
|
||||
S32 texture_start_y = -7;
|
||||
|
||||
// Normally we would just preload these textures from textures.xml,
|
||||
|
|
|
|||
|
|
@ -51,12 +51,13 @@ LLScrollingPanelParamBase::LLScrollingPanelParamBase( const LLPanel::Params& pan
|
|||
else
|
||||
buildFromFile( "panel_scrolling_param_base.xml");
|
||||
|
||||
getChild<LLUICtrl>("param slider")->setValue(weightToPercent(param->getWeight()));
|
||||
mParamSlider = getChild<LLUICtrl>("param slider");
|
||||
mParamSlider->setValue(weightToPercent(param->getWeight()));
|
||||
|
||||
std::string display_name = LLTrans::getString(param->getDisplayName());
|
||||
getChild<LLUICtrl>("param slider")->setLabelArg("[DESC]", display_name);
|
||||
getChildView("param slider")->setEnabled(mAllowModify);
|
||||
childSetCommitCallback("param slider", LLScrollingPanelParamBase::onSliderMoved, this);
|
||||
mParamSlider->setLabelArg("[DESC]", display_name);
|
||||
mParamSlider->setEnabled(mAllowModify);
|
||||
mParamSlider->setCommitCallback(LLScrollingPanelParamBase::onSliderMoved, this);
|
||||
|
||||
setVisible(false);
|
||||
setBorderVisible( false );
|
||||
|
|
@ -77,9 +78,9 @@ void LLScrollingPanelParamBase::updatePanel(bool allow_modify)
|
|||
}
|
||||
|
||||
F32 current_weight = mWearable->getVisualParamWeight( param->getID() );
|
||||
getChild<LLUICtrl>("param slider")->setValue(weightToPercent( current_weight ) );
|
||||
mParamSlider->setValue(weightToPercent( current_weight ) );
|
||||
mAllowModify = allow_modify;
|
||||
getChildView("param slider")->setEnabled(mAllowModify);
|
||||
mParamSlider->setEnabled(mAllowModify);
|
||||
}
|
||||
|
||||
// static
|
||||
|
|
|
|||
|
|
@ -55,6 +55,7 @@ public:
|
|||
public:
|
||||
LLViewerVisualParam* mParam;
|
||||
protected:
|
||||
LLUICtrl* mParamSlider = nullptr;
|
||||
bool mAllowModify;
|
||||
LLWearable *mWearable;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -39,6 +39,7 @@
|
|||
#include "llfloaterreg.h"
|
||||
#include "llfloaterworldmap.h"
|
||||
#include "llfolderviewmodel.h"
|
||||
#include "llloadingindicator.h"
|
||||
#include "lloutfitobserver.h"
|
||||
#include "llpaneleditwearable.h"
|
||||
#include "llpaneloutfitsinventory.h"
|
||||
|
|
@ -139,6 +140,8 @@ bool LLSidepanelAppearance::postBuild()
|
|||
|
||||
mCurrOutfitPanel = getChild<LLPanel>("panel_currentlook");
|
||||
|
||||
mWearableLoadingIndicator = getChild<LLLoadingIndicator>("wearables_loading_indicator");
|
||||
mEditOutfitBtn = getChild<LLButton>("edit_outfit_btn");
|
||||
|
||||
setVisibleCallback(boost::bind(&LLSidepanelAppearance::onVisibilityChanged,this,_2));
|
||||
|
||||
|
|
@ -543,8 +546,8 @@ void LLSidepanelAppearance::inventoryFetched()
|
|||
|
||||
void LLSidepanelAppearance::setWearablesLoading(bool val)
|
||||
{
|
||||
getChildView("wearables_loading_indicator")->setVisible( val);
|
||||
getChildView("edit_outfit_btn")->setVisible( !val);
|
||||
mWearableLoadingIndicator->setVisible(val);
|
||||
mEditOutfitBtn->setVisible(!val);
|
||||
|
||||
if (!val)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@ class LLCurrentlyWornFetchObserver;
|
|||
class LLPanelEditWearable;
|
||||
class LLViewerWearable;
|
||||
class LLPanelOutfitsInventory;
|
||||
class LLLoadingIndicator;
|
||||
|
||||
class LLSidepanelAppearance : public LLPanel
|
||||
{
|
||||
|
|
@ -101,8 +102,11 @@ private:
|
|||
|
||||
LLButton* mOpenOutfitBtn;
|
||||
LLButton* mEditAppearanceBtn;
|
||||
LLButton* mEditOutfitBtn = nullptr;
|
||||
LLPanel* mCurrOutfitPanel;
|
||||
|
||||
LLLoadingIndicator* mWearableLoadingIndicator = nullptr;
|
||||
|
||||
LLTextBox* mCurrentLookName;
|
||||
LLTextBox* mOutfitStatus;
|
||||
|
||||
|
|
|
|||
|
|
@ -108,21 +108,27 @@ LLPanelWearableOutfitItem::Params::Params()
|
|||
|
||||
bool LLPanelWearableOutfitItem::postBuild()
|
||||
{
|
||||
if (mShowWidgets)
|
||||
{
|
||||
mAddWearableBtn = getChild<LLButton>("add_wearable");
|
||||
mRemoveWearableBtn = getChild<LLButton>("remove_wearable");
|
||||
}
|
||||
|
||||
LLPanelWearableListItem::postBuild();
|
||||
|
||||
//if(mShowWidgets) // <FS:Ansariel> Make Add/Remove buttons work
|
||||
{
|
||||
// <FS:Ansariel> Make Add/Remove buttons work
|
||||
//addWidgetToRightSide("add_wearable");
|
||||
//addWidgetToRightSide("remove_wearable");
|
||||
//addWidgetToRightSide(mAddWearableBtn);
|
||||
//addWidgetToRightSide(mAddWearableBtn);
|
||||
LLViewerInventoryItem* inv_item = getItem();
|
||||
mShowWidgets &= (inv_item->getType() != LLAssetType::AT_BODYPART);
|
||||
addWidgetToRightSide("add_wearable", mShowWidgets);
|
||||
addWidgetToRightSide("remove_wearable", mShowWidgets);
|
||||
addWidgetToRightSide(mAddWearableBtn, mShowWidgets);
|
||||
addWidgetToRightSide(mAddWearableBtn, mShowWidgets);
|
||||
// </FS:Ansariel>
|
||||
|
||||
childSetAction("add_wearable", boost::bind(&LLPanelWearableOutfitItem::onAddWearable, this));
|
||||
childSetAction("remove_wearable", boost::bind(&LLPanelWearableOutfitItem::onRemoveWearable, this));
|
||||
mAddWearableBtn->setClickedCallback(boost::bind(&LLPanelWearableOutfitItem::onAddWearable, this));
|
||||
mRemoveWearableBtn->setClickedCallback(boost::bind(&LLPanelWearableOutfitItem::onRemoveWearable, this));
|
||||
|
||||
setWidgetsVisible(false);
|
||||
reshapeWidgets();
|
||||
|
|
@ -253,14 +259,14 @@ void LLPanelWearableOutfitItem::updateItem(const std::string& name,
|
|||
|
||||
if(mShowWidgets)
|
||||
{
|
||||
setShowWidget("add_wearable", !is_worn);
|
||||
setShowWidget(mAddWearableBtn, !is_worn);
|
||||
|
||||
// <FS:Ansariel> Make Add/Remove buttons work
|
||||
//// Body parts can't be removed, only replaced
|
||||
//LLViewerInventoryItem* inv_item = getItem();
|
||||
//bool show_remove = is_worn && inv_item && (inv_item->getType() != LLAssetType::AT_BODYPART);
|
||||
//setShowWidget("remove_wearable", show_remove);
|
||||
setShowWidget("remove_wearable", is_worn);
|
||||
setShowWidget(mRemoveWearableBtn, is_worn);
|
||||
// </FS:Ansariel>
|
||||
|
||||
if(mHovered)
|
||||
|
|
|
|||
|
|
@ -104,6 +104,8 @@ protected:
|
|||
bool worn_indication_enabled, const Params& params, bool show_widgets = false);
|
||||
|
||||
private:
|
||||
LLButton* mAddWearableBtn = nullptr;
|
||||
LLButton* mRemoveWearableBtn = nullptr;
|
||||
bool mWornIndicationEnabled;
|
||||
// <FS:Ansariel> Make Add/Remove buttons work
|
||||
protected:
|
||||
|
|
|
|||
|
|
@ -1197,21 +1197,23 @@ void LLWorldMapView::drawTracking(const LLVector3d& pos_global, const LLColor4&
|
|||
drawImage(pos_global, sTrackCircleImage, color);
|
||||
}
|
||||
|
||||
// clamp text position to on-screen
|
||||
const S32 TEXT_PADDING = DEFAULT_TRACKING_ARROW_SIZE + 2;
|
||||
S32 half_text_width = llfloor(font->getWidthF32(label) * 0.5f);
|
||||
text_x = llclamp(text_x, half_text_width + TEXT_PADDING, getRect().getWidth() - half_text_width - TEXT_PADDING);
|
||||
text_y = llclamp(text_y + vert_offset, TEXT_PADDING + vert_offset, getRect().getHeight() - font->getLineHeight() - TEXT_PADDING - vert_offset);
|
||||
|
||||
// if (label != "")
|
||||
// [RLVa:KB] - Checked: 2009-07-04 (RLVa-1.4.5) | Added: RLVa-1.0.0
|
||||
if ( (label != "") && (RlvActions::canShowLocation()) )
|
||||
// [/RLVa:KB]
|
||||
{
|
||||
font->renderUTF8(
|
||||
label, 0,
|
||||
text_x,
|
||||
text_y,
|
||||
// clamp text position to on-screen
|
||||
const S32 TEXT_PADDING = DEFAULT_TRACKING_ARROW_SIZE + 2;
|
||||
|
||||
LLWString wlabel = utf8string_to_wstring(label);
|
||||
S32 half_text_width = llfloor(font->getWidthF32(wlabel.c_str()) * 0.5f);
|
||||
text_x = llclamp(text_x, half_text_width + TEXT_PADDING, getRect().getWidth() - half_text_width - TEXT_PADDING);
|
||||
text_y = llclamp(text_y + vert_offset, TEXT_PADDING + vert_offset, getRect().getHeight() - font->getLineHeight() - TEXT_PADDING - vert_offset);
|
||||
|
||||
font->render(
|
||||
wlabel, 0,
|
||||
(F32)text_x,
|
||||
(F32)text_y,
|
||||
LLColor4::white, LLFontGL::HCENTER,
|
||||
LLFontGL::BASELINE, LLFontGL::NORMAL, LLFontGL::DROP_SHADOW);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue