commit
2433de3fac
|
|
@ -216,6 +216,7 @@ public:
|
|||
void setImageOverlay(const std::string& image_name, LLFontGL::HAlign alignment = LLFontGL::HCENTER, const LLColor4& color = LLColor4::white);
|
||||
void setImageOverlay(const LLUUID& image_id, LLFontGL::HAlign alignment = LLFontGL::HCENTER, const LLColor4& color = LLColor4::white);
|
||||
LLPointer<LLUIImage> getImageOverlay() { return mImageOverlay; }
|
||||
LLFontGL::HAlign getImageOverlayHAlign() const { return mImageOverlayAlignment; }
|
||||
|
||||
void autoResize(); // resize with label of current btn state
|
||||
void resize(LLUIString label); // resize with label input
|
||||
|
|
|
|||
|
|
@ -703,19 +703,12 @@ void LLComboBox::onListMouseUp()
|
|||
|
||||
void LLComboBox::onItemSelected(const LLSD& data)
|
||||
{
|
||||
const std::string name = mList->getSelectedItemLabel();
|
||||
setValue(data);
|
||||
|
||||
S32 cur_id = getCurrentIndex();
|
||||
mLastSelectedIndex = cur_id;
|
||||
if (cur_id != -1)
|
||||
if (mAllowTextEntry && mLastSelectedIndex != -1)
|
||||
{
|
||||
setLabel(name);
|
||||
|
||||
if (mAllowTextEntry)
|
||||
{
|
||||
gFocusMgr.setKeyboardFocus(mTextEntry);
|
||||
mTextEntry->selectAll();
|
||||
}
|
||||
gFocusMgr.setKeyboardFocus(mTextEntry);
|
||||
mTextEntry->selectAll();
|
||||
}
|
||||
|
||||
// hiding the list reasserts the old value stored in the text editor/dropdown button
|
||||
|
|
@ -1069,3 +1062,33 @@ BOOL LLComboBox::selectItemRange( S32 first, S32 last )
|
|||
{
|
||||
return mList->selectItemRange(first, last);
|
||||
}
|
||||
|
||||
|
||||
static LLDefaultChildRegistry::Register<LLIconsComboBox> register_icons_combo_box("icons_combo_box");
|
||||
|
||||
LLIconsComboBox::Params::Params()
|
||||
: icon_column("icon_column", ICON_COLUMN),
|
||||
label_column("label_column", LABEL_COLUMN)
|
||||
{}
|
||||
|
||||
LLIconsComboBox::LLIconsComboBox(const LLIconsComboBox::Params& p)
|
||||
: LLComboBox(p),
|
||||
mIconColumnIndex(p.icon_column),
|
||||
mLabelColumnIndex(p.label_column)
|
||||
{}
|
||||
|
||||
void LLIconsComboBox::setValue(const LLSD& value)
|
||||
{
|
||||
BOOL found = mList->selectByValue(value);
|
||||
if (found)
|
||||
{
|
||||
LLScrollListItem* item = mList->getFirstSelected();
|
||||
if (item)
|
||||
{
|
||||
mButton->setImageOverlay(mList->getSelectedItemLabel(mIconColumnIndex), mButton->getImageOverlayHAlign());
|
||||
|
||||
setLabel(mList->getSelectedItemLabel(mLabelColumnIndex));
|
||||
}
|
||||
mLastSelectedIndex = mList->getFirstSelectedIndex();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -221,6 +221,7 @@ protected:
|
|||
LLPointer<LLUIImage> mArrowImage;
|
||||
LLUIString mLabel;
|
||||
BOOL mHasAutocompletedText;
|
||||
S32 mLastSelectedIndex;
|
||||
|
||||
private:
|
||||
BOOL mAllowTextEntry;
|
||||
|
|
@ -230,6 +231,36 @@ private:
|
|||
commit_callback_t mPrearrangeCallback;
|
||||
commit_callback_t mTextEntryCallback;
|
||||
commit_callback_t mSelectionCallback;
|
||||
S32 mLastSelectedIndex;
|
||||
};
|
||||
|
||||
// A combo box with icons for the list of items.
|
||||
class LLIconsComboBox
|
||||
: public LLComboBox
|
||||
{
|
||||
public:
|
||||
struct Params
|
||||
: public LLInitParam::Block<Params, LLComboBox::Params>
|
||||
{
|
||||
Optional<S32> icon_column,
|
||||
label_column;
|
||||
Params();
|
||||
};
|
||||
|
||||
/*virtual*/ void setValue(const LLSD& value);
|
||||
|
||||
private:
|
||||
enum EColumnIndex
|
||||
{
|
||||
ICON_COLUMN = 0,
|
||||
LABEL_COLUMN
|
||||
};
|
||||
|
||||
friend class LLUICtrlFactory;
|
||||
LLIconsComboBox(const Params&);
|
||||
virtual ~LLIconsComboBox() {};
|
||||
|
||||
S32 mIconColumnIndex;
|
||||
S32 mLabelColumnIndex;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -630,7 +630,9 @@ void LLScrollListCtrl::calcColumnWidths()
|
|||
LLScrollListCell* cellp = (*iter)->getColumn(column->mIndex);
|
||||
if (!cellp) continue;
|
||||
|
||||
column->mMaxContentWidth = llmax(LLFontGL::getFontSansSerifSmall()->getWidth(cellp->getValue().asString()) + mColumnPadding + COLUMN_TEXT_PADDING, column->mMaxContentWidth);
|
||||
// get text value width only for text cells
|
||||
column->mMaxContentWidth = cellp->isText() ?
|
||||
llmax(LLFontGL::getFontSansSerifSmall()->getWidth(cellp->getValue().asString()) + mColumnPadding + COLUMN_TEXT_PADDING, column->mMaxContentWidth) : column->mMaxContentWidth;
|
||||
}
|
||||
|
||||
max_item_width += column->mMaxContentWidth;
|
||||
|
|
|
|||
|
|
@ -537,10 +537,10 @@ void LLFloaterPreference::onOpen(const LLSD& key)
|
|||
{
|
||||
childSetText("maturity_desired_textbox", maturity_combo->getSelectedItemLabel());
|
||||
childSetVisible("maturity_desired_combobox", false);
|
||||
|
||||
// Display selected maturity icons.
|
||||
onChangeMaturity();
|
||||
}
|
||||
|
||||
// Display selected maturity icons.
|
||||
onChangeMaturity();
|
||||
|
||||
// Enabled/disabled popups, might have been changed by user actions
|
||||
// while preferences floater was closed.
|
||||
|
|
|
|||
|
|
@ -1696,7 +1696,8 @@ void LLPanelClassifiedEdit::processProperties(void* data, EAvatarProcessorType t
|
|||
setPosGlobal(c_info->pos_global);
|
||||
|
||||
setClassifiedLocation(createLocationText(c_info->parcel_name, c_info->sim_name, c_info->pos_global));
|
||||
getChild<LLComboBox>("category")->setCurrentByIndex(c_info->category + 1);
|
||||
// *HACK see LLPanelClassifiedEdit::sendUpdate()
|
||||
getChild<LLComboBox>("category")->setCurrentByIndex(c_info->category - 1);
|
||||
getChild<LLComboBox>("category")->resetDirty();
|
||||
|
||||
bool mature = is_cf_mature(c_info->flags);
|
||||
|
|
@ -1705,6 +1706,7 @@ void LLPanelClassifiedEdit::processProperties(void* data, EAvatarProcessorType t
|
|||
getChild<LLComboBox>("content_type")->setCurrentByIndex(mature ? CB_ITEM_MATURE : CB_ITEM_PG);
|
||||
childSetValue("auto_renew", auto_renew);
|
||||
childSetValue("price_for_listing", c_info->price_for_listing);
|
||||
childSetEnabled("price_for_listing", isNew());
|
||||
|
||||
resetDirty();
|
||||
setInfoLoaded(true);
|
||||
|
|
@ -1763,6 +1765,7 @@ void LLPanelClassifiedEdit::resetControls()
|
|||
getChild<LLComboBox>("content_type")->setCurrentByIndex(0);
|
||||
childSetValue("auto_renew", false);
|
||||
childSetValue("price_for_listing", MINIMUM_PRICE_FOR_LISTING);
|
||||
childSetEnabled("price_for_listing", TRUE);
|
||||
}
|
||||
|
||||
bool LLPanelClassifiedEdit::canClose()
|
||||
|
|
@ -1799,7 +1802,9 @@ void LLPanelClassifiedEdit::sendUpdate()
|
|||
|
||||
c_data.agent_id = gAgent.getID();
|
||||
c_data.classified_id = getClassifiedId();
|
||||
c_data.category = getCategory();
|
||||
// *HACK
|
||||
// Categories on server start with 1 while combo-box index starts with 0
|
||||
c_data.category = getCategory() + 1;
|
||||
c_data.name = getClassifiedName();
|
||||
c_data.description = getDescription();
|
||||
c_data.parcel_id = getParcelId();
|
||||
|
|
@ -1814,7 +1819,7 @@ void LLPanelClassifiedEdit::sendUpdate()
|
|||
U32 LLPanelClassifiedEdit::getCategory()
|
||||
{
|
||||
LLComboBox* cat_cb = getChild<LLComboBox>("category");
|
||||
return cat_cb->getCurrentIndex() + 1;
|
||||
return cat_cb->getCurrentIndex();
|
||||
}
|
||||
|
||||
U8 LLPanelClassifiedEdit::getFlags()
|
||||
|
|
|
|||
|
|
@ -171,27 +171,48 @@
|
|||
width="100">
|
||||
Rating:
|
||||
</text>
|
||||
<combo_box
|
||||
<icons_combo_box
|
||||
follows="left|top"
|
||||
height="20"
|
||||
label="Moderate"
|
||||
layout="topleft"
|
||||
left_delta="100"
|
||||
name="access_combo"
|
||||
top_delta="0"
|
||||
width="85">
|
||||
<combo_box.item
|
||||
width="105">
|
||||
<icons_combo_box.drop_down_button
|
||||
image_overlay="Parcel_M_Light"
|
||||
image_overlay_alignment="left"
|
||||
imgoverlay_label_space="3"
|
||||
pad_left="3"/>
|
||||
<icons_combo_box.item
|
||||
label="Adult"
|
||||
name="Adult"
|
||||
value="42" />
|
||||
<combo_box.item
|
||||
value="42">
|
||||
<item.columns
|
||||
halign="center"
|
||||
type="icon"
|
||||
value="Parcel_R_Light"
|
||||
width="20"/>
|
||||
</icons_combo_box.item>
|
||||
<icons_combo_box.item
|
||||
label="Moderate"
|
||||
name="Mature"
|
||||
value="21" />
|
||||
<combo_box.item
|
||||
value="21">
|
||||
<item.columns
|
||||
halign="center"
|
||||
type="icon"
|
||||
value="Parcel_M_Light"
|
||||
width="20"/>
|
||||
</icons_combo_box.item>
|
||||
<icons_combo_box.item
|
||||
label="General"
|
||||
name="PG"
|
||||
value="13" />
|
||||
</combo_box>
|
||||
value="13">
|
||||
<item.columns
|
||||
halign="center"
|
||||
type="icon"
|
||||
value="Parcel_PG_Light"
|
||||
width="20"/>
|
||||
</icons_combo_box.item>
|
||||
</icons_combo_box>
|
||||
<button
|
||||
enabled="false"
|
||||
follows="left|top"
|
||||
|
|
|
|||
Loading…
Reference in New Issue