SL-1961 Icon support for multislider and icons on altitudes slider
parent
f31b35cb5c
commit
c5936bbba0
|
|
@ -61,9 +61,11 @@ LLMultiSlider::Params::Params()
|
|||
use_triangle("use_triangle", false),
|
||||
track_color("track_color"),
|
||||
thumb_disabled_color("thumb_disabled_color"),
|
||||
thumb_highlight_color("thumb_highlight_color"),
|
||||
thumb_outline_color("thumb_outline_color"),
|
||||
thumb_center_color("thumb_center_color"),
|
||||
thumb_center_selected_color("thumb_center_selected_color"),
|
||||
thumb_image("thumb_image"),
|
||||
triangle_color("triangle_color"),
|
||||
mouse_down_callback("mouse_down_callback"),
|
||||
mouse_up_callback("mouse_up_callback"),
|
||||
|
|
@ -133,6 +135,12 @@ LLMultiSlider::LLMultiSlider(const LLMultiSlider::Params& p)
|
|||
addSlider(it->value);
|
||||
}
|
||||
}
|
||||
|
||||
if (p.thumb_image.isProvided())
|
||||
{
|
||||
mThumbImagep = LLUI::getUIImage(p.thumb_image());
|
||||
}
|
||||
mThumbHighlightColor = p.thumb_highlight_color.isProvided() ? p.thumb_highlight_color() : gFocusMgr.getFocusColor();
|
||||
}
|
||||
|
||||
LLMultiSlider::~LLMultiSlider()
|
||||
|
|
@ -644,7 +652,7 @@ void LLMultiSlider::draw()
|
|||
mTriangleColor.get() % opacity, TRUE);
|
||||
}
|
||||
}
|
||||
else if (!thumb_imagep)
|
||||
else if (!thumb_imagep && !mThumbImagep)
|
||||
{
|
||||
// draw all the thumbs
|
||||
curSldrIt = mThumbRects.end();
|
||||
|
|
@ -674,15 +682,33 @@ void LLMultiSlider::draw()
|
|||
gl_rect_2d(mDragStartThumbRect, mThumbCenterColor.get() % opacity, FALSE);
|
||||
}
|
||||
}
|
||||
else if( gFocusMgr.getMouseCapture() == this )
|
||||
else
|
||||
{
|
||||
// draw drag start
|
||||
thumb_imagep->drawSolid(mDragStartThumbRect, mThumbCenterColor.get() % 0.3f);
|
||||
LLMouseHandler* capture = gFocusMgr.getMouseCapture();
|
||||
if (capture == this)
|
||||
{
|
||||
// draw drag start (ghost)
|
||||
if (mThumbImagep)
|
||||
{
|
||||
mThumbImagep->draw(mDragStartThumbRect, mThumbCenterColor.get() % 0.3f);
|
||||
}
|
||||
else
|
||||
{
|
||||
thumb_imagep->drawSolid(mDragStartThumbRect, mThumbCenterColor.get() % 0.3f);
|
||||
}
|
||||
}
|
||||
|
||||
// draw the highlight
|
||||
if (hasFocus() && !mCurSlider.empty())
|
||||
{
|
||||
thumb_imagep->drawBorder(mThumbRects[mCurSlider], gFocusMgr.getFocusColor(), gFocusMgr.getFocusFlashWidth());
|
||||
if (mThumbImagep)
|
||||
{
|
||||
mThumbImagep->drawBorder(mThumbRects[mCurSlider], mThumbHighlightColor, gFocusMgr.getFocusFlashWidth());
|
||||
}
|
||||
else
|
||||
{
|
||||
thumb_imagep->drawBorder(mThumbRects[mCurSlider], gFocusMgr.getFocusColor(), gFocusMgr.getFocusFlashWidth());
|
||||
}
|
||||
}
|
||||
|
||||
// draw the thumbs
|
||||
|
|
@ -699,44 +725,35 @@ void LLMultiSlider::draw()
|
|||
}
|
||||
|
||||
// the draw command
|
||||
thumb_imagep->drawSolid(mIt->second, curThumbColor);
|
||||
if (mThumbImagep)
|
||||
{
|
||||
mThumbImagep->draw(mIt->second);
|
||||
}
|
||||
else if (capture == this)
|
||||
{
|
||||
thumb_imagep->drawSolid(mIt->second, curThumbColor);
|
||||
}
|
||||
else
|
||||
{
|
||||
thumb_imagep->drawSolid(mIt->second, curThumbColor % opacity);
|
||||
}
|
||||
}
|
||||
|
||||
// draw cur slider last
|
||||
if(curSldrIt != mThumbRects.end())
|
||||
{
|
||||
thumb_imagep->drawSolid(curSldrIt->second, mThumbCenterSelectedColor.get());
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
// draw highlight
|
||||
if (hasFocus() && !mCurSlider.empty())
|
||||
{
|
||||
thumb_imagep->drawBorder(mThumbRects[mCurSlider], gFocusMgr.getFocusColor(), gFocusMgr.getFocusFlashWidth());
|
||||
}
|
||||
|
||||
// draw thumbs
|
||||
curSldrIt = mThumbRects.end();
|
||||
for(mIt = mThumbRects.begin(); mIt != mThumbRects.end(); mIt++)
|
||||
{
|
||||
|
||||
// choose the color
|
||||
curThumbColor = mThumbCenterColor.get();
|
||||
if(mIt->first == mCurSlider)
|
||||
if (mThumbImagep)
|
||||
{
|
||||
curSldrIt = mIt;
|
||||
continue;
|
||||
//curThumbColor = mThumbCenterSelectedColor;
|
||||
}
|
||||
|
||||
thumb_imagep->drawSolid(mIt->second, curThumbColor % opacity);
|
||||
}
|
||||
|
||||
if(curSldrIt != mThumbRects.end())
|
||||
{
|
||||
thumb_imagep->drawSolid(curSldrIt->second, mThumbCenterSelectedColor.get() % opacity);
|
||||
mThumbImagep->draw(curSldrIt->second);
|
||||
}
|
||||
else if (capture == this)
|
||||
{
|
||||
thumb_imagep->drawSolid(curSldrIt->second, mThumbCenterSelectedColor.get());
|
||||
}
|
||||
else
|
||||
{
|
||||
thumb_imagep->drawSolid(curSldrIt->second, mThumbCenterSelectedColor.get() % opacity);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -55,12 +55,14 @@ public:
|
|||
|
||||
Optional<LLUIColor> track_color,
|
||||
thumb_disabled_color,
|
||||
thumb_highlight_color,
|
||||
thumb_outline_color,
|
||||
thumb_center_color,
|
||||
thumb_center_selected_color,
|
||||
triangle_color;
|
||||
|
||||
Optional<std::string> orientation;
|
||||
Optional<std::string> orientation,
|
||||
thumb_image;
|
||||
|
||||
Optional<CommitCallbackParam> mouse_down_callback,
|
||||
mouse_up_callback;
|
||||
|
|
@ -125,10 +127,12 @@ protected:
|
|||
mThumbRects;
|
||||
LLUIColor mTrackColor;
|
||||
LLUIColor mThumbOutlineColor;
|
||||
LLUIColor mThumbHighlightColor;
|
||||
LLUIColor mThumbCenterColor;
|
||||
LLUIColor mThumbCenterSelectedColor;
|
||||
LLUIColor mDisabledThumbColor;
|
||||
LLUIColor mTriangleColor;
|
||||
LLUIImagePtr mThumbImagep; //blimps on the slider, for now no 'disabled' support
|
||||
|
||||
const EOrientation mOrientation;
|
||||
|
||||
|
|
|
|||
|
|
@ -55,6 +55,9 @@ LLMultiSliderCtrl::Params::Params()
|
|||
allow_overlap("allow_overlap", false),
|
||||
loop_overlap("loop_overlap", false),
|
||||
orientation("orientation"),
|
||||
thumb_image("thumb_image"),
|
||||
thumb_width("thumb_width"),
|
||||
thumb_highlight_color("thumb_highlight_color"),
|
||||
overlap_threshold("overlap_threshold", 0),
|
||||
draw_track("draw_track", true),
|
||||
use_triangle("use_triangle", false),
|
||||
|
|
@ -171,11 +174,18 @@ LLMultiSliderCtrl::LLMultiSliderCtrl(const LLMultiSliderCtrl::Params& p)
|
|||
params.max_sliders(p.max_sliders);
|
||||
params.allow_overlap(p.allow_overlap);
|
||||
params.loop_overlap(p.loop_overlap);
|
||||
params.orientation(p.orientation());
|
||||
if (p.overlap_threshold.isProvided())
|
||||
{
|
||||
params.overlap_threshold = p.overlap_threshold;
|
||||
}
|
||||
params.orientation(p.orientation);
|
||||
params.thumb_image(p.thumb_image);
|
||||
params.thumb_highlight_color(p.thumb_highlight_color);
|
||||
if (p.thumb_width.isProvided())
|
||||
{
|
||||
// otherwise should be provided by template
|
||||
params.thumb_width(p.thumb_width);
|
||||
}
|
||||
params.draw_track(p.draw_track);
|
||||
params.use_triangle(p.use_triangle);
|
||||
params.control_name(p.control_name);
|
||||
|
|
|
|||
|
|
@ -51,19 +51,22 @@ public:
|
|||
text_width;
|
||||
Optional<bool> show_text,
|
||||
can_edit_text;
|
||||
Optional<S32> decimal_digits;
|
||||
Optional<S32> decimal_digits,
|
||||
thumb_width;
|
||||
Optional<S32> max_sliders;
|
||||
Optional<bool> allow_overlap,
|
||||
loop_overlap,
|
||||
draw_track,
|
||||
use_triangle;
|
||||
|
||||
Optional<std::string> orientation;
|
||||
Optional<std::string> orientation,
|
||||
thumb_image;
|
||||
|
||||
Optional<F32> overlap_threshold;
|
||||
|
||||
Optional<LLUIColor> text_color,
|
||||
text_disabled_color;
|
||||
text_disabled_color,
|
||||
thumb_highlight_color;
|
||||
|
||||
Optional<CommitCallbackParam> mouse_down_callback,
|
||||
mouse_up_callback;
|
||||
|
|
|
|||
|
|
@ -389,7 +389,7 @@ void LLPanelEnvironmentInfo::updateAltLabel(const std::string &alt_name, U32 sky
|
|||
LLRect sld_rect = sld->getRect();
|
||||
U32 sld_range = sld_rect.getHeight();
|
||||
U32 sld_bottom = sld_rect.mBottom;
|
||||
U32 sld_offset = 8 + 1; // Default slider-thumb width plus stretch. Placeholder until images are implemented.
|
||||
U32 sld_offset = sld_rect.getWidth(); // Roughly identical to thumb's width in slider.
|
||||
U32 pos = (sld_range - sld_offset) * ((alt_value - 100) / (4000 - 100));
|
||||
|
||||
// get related text box
|
||||
|
|
@ -399,7 +399,7 @@ void LLPanelEnvironmentInfo::updateAltLabel(const std::string &alt_name, U32 sky
|
|||
// move related text box
|
||||
LLRect rect = text->getRect();
|
||||
U32 height = rect.getHeight();
|
||||
rect.mBottom = sld_bottom + sld_offset + pos - (height / 2);
|
||||
rect.mBottom = sld_bottom + (sld_offset / 2 + 1) + pos - (height / 2);
|
||||
rect.mTop = rect.mBottom + height;
|
||||
text->setRect(rect);
|
||||
|
||||
|
|
|
|||
|
|
@ -235,8 +235,8 @@ No parcel is selected. Environmental settings are disabled.
|
|||
<multi_slider
|
||||
decimal_digits="0"
|
||||
follows="bottom"
|
||||
height="120"
|
||||
width="10"
|
||||
height="123"
|
||||
width="17"
|
||||
orientation="vertical"
|
||||
increment="10"
|
||||
initial_value="100"
|
||||
|
|
@ -246,22 +246,25 @@ No parcel is selected. Environmental settings are disabled.
|
|||
top="20"
|
||||
max_sliders="20"
|
||||
name="sld_altitudes"
|
||||
show_text="false">
|
||||
show_text="false"
|
||||
thumb_image="Inv_SettingsSky"
|
||||
thumb_width="17"
|
||||
thumb_highlight_color="white">
|
||||
<slider name="sld1" value="200"/>
|
||||
<slider name="sld2" value="400"/>
|
||||
<slider name="sld3" value="600"/>
|
||||
</multi_slider>
|
||||
<icon
|
||||
follows="left|top"
|
||||
height="10"
|
||||
width="10"
|
||||
image_name="Rounded_Square"
|
||||
height="17"
|
||||
width="17"
|
||||
image_name="Inv_SettingsSky"
|
||||
layout="topleft"
|
||||
name="camera_icon"
|
||||
name="icon_ground"
|
||||
mouse_opaque="false"
|
||||
visible="true"
|
||||
left_delta="0"
|
||||
top_pad="-3"/>
|
||||
top_pad="-9"/>
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
|
|
@ -280,7 +283,7 @@ No parcel is selected. Environmental settings are disabled.
|
|||
follows="left"
|
||||
height="12"
|
||||
layout="topleft"
|
||||
left="25"
|
||||
left="35"
|
||||
top="30"
|
||||
width="200"
|
||||
name="alt1">
|
||||
|
|
@ -292,7 +295,7 @@ No parcel is selected. Environmental settings are disabled.
|
|||
follows="left|top"
|
||||
height="12"
|
||||
layout="topleft"
|
||||
left="25"
|
||||
left="35"
|
||||
top="40"
|
||||
width="200"
|
||||
name="alt2">
|
||||
|
|
@ -304,7 +307,7 @@ No parcel is selected. Environmental settings are disabled.
|
|||
follows="left|top"
|
||||
height="12"
|
||||
layout="topleft"
|
||||
left="25"
|
||||
left="35"
|
||||
top="50"
|
||||
width="200"
|
||||
name="alt3">
|
||||
|
|
|
|||
Loading…
Reference in New Issue