summaryrefslogtreecommitdiff
path: root/indra/llui/llscrolllistctrl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/llui/llscrolllistctrl.cpp')
-rw-r--r--indra/llui/llscrolllistctrl.cpp694
1 files changed, 331 insertions, 363 deletions
diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp
index 7fb732eca3..8093536868 100644
--- a/indra/llui/llscrolllistctrl.cpp
+++ b/indra/llui/llscrolllistctrl.cpp
@@ -66,7 +66,7 @@ static LLDefaultChildRegistry::Register<LLScrollListCtrl> r("scroll_list");
// local structures & classes.
struct SortScrollListItem
{
- SortScrollListItem(const std::vector<std::pair<S32, BOOL> >& sort_orders,const LLScrollListCtrl::sort_signal_t* sort_signal, bool alternate_sort)
+ SortScrollListItem(const std::vector<std::pair<S32, bool> >& sort_orders,const LLScrollListCtrl::sort_signal_t* sort_signal, bool alternate_sort)
: mSortOrders(sort_orders)
, mSortSignal(sort_signal)
, mAltSort(alternate_sort)
@@ -80,7 +80,7 @@ struct SortScrollListItem
it != mSortOrders.rend(); ++it)
{
S32 col_idx = it->first;
- BOOL sort_ascending = it->second;
+ bool sort_ascending = it->second;
S32 order = sort_ascending ? 1 : -1; // ascending or descending sort for this column?
@@ -114,7 +114,7 @@ struct SortScrollListItem
}
- typedef std::vector<std::pair<S32, BOOL> > sort_order_t;
+ typedef std::vector<std::pair<S32, bool> > sort_order_t;
const LLScrollListCtrl::sort_signal_t* mSortSignal;
const sort_order_t& mSortOrders;
const bool mAltSort;
@@ -196,7 +196,6 @@ LLScrollListCtrl::LLScrollListCtrl(const LLScrollListCtrl::Params& p)
mHighlightedItem(-1),
mBorder(NULL),
mSortCallback(NULL),
- mCommentTextView(NULL),
mNumDynamicWidthColumns(0),
mTotalStaticColumnWidth(0),
mTotalColumnPadding(0),
@@ -288,13 +287,6 @@ LLScrollListCtrl::LLScrollListCtrl(const LLScrollListCtrl::Params& p)
addColumn(*row_it);
}
- for (LLInitParam::ParamIterator<LLScrollListItem::Params>::const_iterator row_it = p.contents.rows.begin();
- row_it != p.contents.rows.end();
- ++row_it)
- {
- addRow(*row_it);
- }
-
LLTextBox::Params text_p;
text_p.name("comment_text");
text_p.border_visible(false);
@@ -302,7 +294,15 @@ LLScrollListCtrl::LLScrollListCtrl(const LLScrollListCtrl::Params& p)
text_p.follows.flags(FOLLOWS_ALL);
// word wrap was added accroding to the EXT-6841
text_p.wrap(true);
- addChild(LLUICtrlFactory::create<LLTextBox>(text_p));
+ mCommentText = LLUICtrlFactory::create<LLTextBox>(text_p);
+ addChild(mCommentText);
+
+ for (LLInitParam::ParamIterator<LLScrollListItem::Params>::const_iterator row_it = p.contents.rows.begin();
+ row_it != p.contents.rows.end();
+ ++row_it)
+ {
+ addRow(*row_it);
+ }
}
S32 LLScrollListCtrl::getSearchColumn()
@@ -326,17 +326,11 @@ S32 LLScrollListCtrl::getSearchColumn()
}
return llclamp(mSearchColumn, 0, getNumColumns());
}
-/*virtual*/
+
+// virtual
bool LLScrollListCtrl::preProcessChildNode(LLXMLNodePtr child)
{
- if (child->hasName("column") || child->hasName("row"))
- {
- return true; // skip
- }
- else
- {
- return false;
- }
+ return child->hasName("column") || child->hasName("row");
}
LLScrollListCtrl::~LLScrollListCtrl()
@@ -356,8 +350,7 @@ LLScrollListCtrl::~LLScrollListCtrl()
}
}
-
-BOOL LLScrollListCtrl::setMaxItemCount(S32 max_count)
+bool LLScrollListCtrl::setMaxItemCount(S32 max_count)
{
if (max_count >= getItemCount())
{
@@ -373,22 +366,21 @@ S32 LLScrollListCtrl::isEmpty() const
S32 LLScrollListCtrl::getItemCount() const
{
- return mItemList.size();
+ return static_cast<S32>(mItemList.size());
}
-BOOL LLScrollListCtrl::hasSelectedItem() const
+bool LLScrollListCtrl::hasSelectedItem() const
{
item_list::iterator iter;
- for (iter = mItemList.begin(); iter < mItemList.end(); )
+ for (LLScrollListItem* item : mItemList)
{
- LLScrollListItem* itemp = *iter;
- if (itemp && itemp->getSelected())
+ if (item->getSelected())
{
- return TRUE;
+ return true;
}
iter++;
}
- return FALSE;
+ return false;
}
// virtual LLScrolListInterface function (was deleteAllItems)
@@ -396,7 +388,6 @@ void LLScrollListCtrl::clearRows()
{
std::for_each(mItemList.begin(), mItemList.end(), DeletePointer());
mItemList.clear();
- //mItemCount = 0;
// Scroll the bar back up to the top.
mScrollbar->setDocParams(0, 0);
@@ -407,13 +398,10 @@ void LLScrollListCtrl::clearRows()
mDirty = false;
}
-
LLScrollListItem* LLScrollListCtrl::getFirstSelected() const
{
- item_list::const_iterator iter;
- for (iter = mItemList.begin(); iter != mItemList.end(); iter++)
+ for (LLScrollListItem* item : mItemList)
{
- LLScrollListItem* item = *iter;
if (item->getSelected())
{
return item;
@@ -425,10 +413,8 @@ LLScrollListItem* LLScrollListCtrl::getFirstSelected() const
std::vector<LLScrollListItem*> LLScrollListCtrl::getAllSelected() const
{
std::vector<LLScrollListItem*> ret;
- item_list::const_iterator iter;
- for(iter = mItemList.begin(); iter != mItemList.end(); iter++)
+ for (LLScrollListItem* item : mItemList)
{
- LLScrollListItem* item = *iter;
if (item->getSelected())
{
ret.push_back(item);
@@ -441,64 +427,57 @@ S32 LLScrollListCtrl::getNumSelected() const
{
S32 numSelected = 0;
- for(item_list::const_iterator iter = mItemList.begin(); iter != mItemList.end(); ++iter)
+ for (LLScrollListItem* item : mItemList)
{
- LLScrollListItem* item = *iter;
if (item->getSelected())
{
++numSelected;
}
}
-
return numSelected;
}
S32 LLScrollListCtrl::getFirstSelectedIndex() const
{
S32 CurSelectedIndex = 0;
-
// make sure sort is up to date before returning an index
updateSort();
- item_list::const_iterator iter;
- for (iter = mItemList.begin(); iter != mItemList.end(); iter++)
+ for (LLScrollListItem* item : mItemList)
{
- LLScrollListItem* item = *iter;
if (item->getSelected())
{
return CurSelectedIndex;
}
CurSelectedIndex++;
}
-
return -1;
}
LLScrollListItem* LLScrollListCtrl::getFirstData() const
{
- if (mItemList.size() == 0)
- {
- return NULL;
- }
- return mItemList[0];
+ return mItemList.empty() ? NULL : mItemList.front();
}
LLScrollListItem* LLScrollListCtrl::getLastData() const
{
- if (mItemList.size() == 0)
+ return mItemList.empty() ? NULL : mItemList.back();
+}
+
+LLScrollListItem* LLScrollListCtrl::getNthData(size_t index) const
+{
+ if (mItemList.size() <= index)
{
return NULL;
}
- return mItemList[mItemList.size() - 1];
+ return mItemList[index];
}
std::vector<LLScrollListItem*> LLScrollListCtrl::getAllData() const
{
std::vector<LLScrollListItem*> ret;
- item_list::const_iterator iter;
- for(iter = mItemList.begin(); iter != mItemList.end(); iter++)
+ for (LLScrollListItem* item : mItemList)
{
- LLScrollListItem* item = *iter;
ret.push_back(item);
}
return ret;
@@ -509,21 +488,19 @@ LLScrollListItem* LLScrollListCtrl::getItem(const LLSD& sd) const
{
std::string string_val = sd.asString();
- item_list::const_iterator iter;
- for(iter = mItemList.begin(); iter != mItemList.end(); iter++)
+ for (LLScrollListItem* item : mItemList)
{
- LLScrollListItem* item = *iter;
// assumes string representation is good enough for comparison
if (item->getValue().asString() == string_val)
{
return item;
}
}
+
return NULL;
}
-
-void LLScrollListCtrl::reshape( S32 width, S32 height, BOOL called_from_parent )
+void LLScrollListCtrl::reshape( S32 width, S32 height, bool called_from_parent )
{
LLUICtrl::reshape( width, height, called_from_parent );
@@ -541,17 +518,12 @@ void LLScrollListCtrl::updateLayout()
getRect().getWidth() - 2 * mBorderThickness,
getRect().getHeight() - (2 * mBorderThickness ) - heading_size );
- if (mCommentTextView == NULL)
- {
- mCommentTextView = getChildView("comment_text");
- }
-
- mCommentTextView->setShape(mItemListRect);
+ mCommentText->setShape(mItemListRect);
// how many lines of content in a single "page"
S32 page_lines = getLinesPerPage();
- BOOL scrollbar_visible = mLineHeight * getItemCount() > mItemListRect.getHeight();
+ bool scrollbar_visible = mLineHeight * getItemCount() > mItemListRect.getHeight();
if (scrollbar_visible)
{
// provide space on the right for scrollbar
@@ -572,15 +544,16 @@ void LLScrollListCtrl::updateLayout()
void LLScrollListCtrl::fitContents(S32 max_width, S32 max_height)
{
S32 height = llmin( getRequiredRect().getHeight(), max_height );
- if(mPageLines)
- height = llmin( mPageLines * mLineHeight + 2*mBorderThickness + (mDisplayColumnHeaders ? mHeadingHeight : 0), height );
+ if (mPageLines)
+ {
+ height = llmin(mPageLines * mLineHeight + 2 * mBorderThickness + (mDisplayColumnHeaders ? mHeadingHeight : 0), height);
+ }
S32 width = getRect().getWidth();
reshape( width, height );
}
-
LLRect LLScrollListCtrl::getRequiredRect()
{
S32 heading_size = (mDisplayColumnHeaders ? mHeadingHeight : 0);
@@ -593,9 +566,9 @@ LLRect LLScrollListCtrl::getRequiredRect()
}
-BOOL LLScrollListCtrl::addItem( LLScrollListItem* item, EAddPosition pos, BOOL requires_column )
+bool LLScrollListCtrl::addItem( LLScrollListItem* item, EAddPosition pos, bool requires_column )
{
- BOOL not_too_big = getItemCount() < mMaxItemCount;
+ bool not_too_big = getItemCount() < mMaxItemCount;
if (not_too_big)
{
switch( pos )
@@ -632,7 +605,8 @@ BOOL LLScrollListCtrl::addItem( LLScrollListItem* item, EAddPosition pos, BOOL r
S32 i = 0;
for (LLScrollListCell* cell = item->getColumn(i); i < num_cols; cell = item->getColumn(++i))
{
- if (i >= (S32)mColumnsIndexed.size()) break;
+ if (i >= (S32)mColumnsIndexed.size())
+ break;
cell->setWidth(mColumnsIndexed[i]->getWidth());
}
@@ -655,23 +629,21 @@ S32 LLScrollListCtrl::calcMaxContentWidth()
S32 max_item_width = 0;
- ordered_columns_t::iterator column_itor;
- for (column_itor = mColumnsIndexed.begin(); column_itor != mColumnsIndexed.end(); ++column_itor)
+ for (LLScrollListColumn* column : mColumnsIndexed)
{
- LLScrollListColumn* column = *column_itor;
- if (!column) continue;
+ if (!column)
+ continue;
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;
- item_list::iterator iter;
- for (iter = mItemList.begin(); iter != mItemList.end(); iter++)
+ column->mMaxContentWidth = column->mHeader ? LLFontGL::getFontSansSerifSmall()->getWidth(column->mLabel.getWString().c_str()) + mColumnPadding + HEADING_TEXT_PADDING : 0;
+ for (LLScrollListItem* item : mItemList)
{
- LLScrollListCell* cellp = (*iter)->getColumn(column->mIndex);
- if (!cellp) continue;
-
- column->mMaxContentWidth = llmax(LLFontGL::getFontSansSerifSmall()->getWidth(cellp->getValue().asString()) + mColumnPadding + COLUMN_TEXT_PADDING, column->mMaxContentWidth);
+ if (LLScrollListCell* cellp = item->getColumn(column->mIndex))
+ {
+ column->mMaxContentWidth = llmax(LLFontGL::getFontSansSerifSmall()->getWidth(cellp->getValue().asString()) + mColumnPadding + COLUMN_TEXT_PADDING, column->mMaxContentWidth);
+ }
}
}
max_item_width += column->mMaxContentWidth;
@@ -688,7 +660,8 @@ bool LLScrollListCtrl::updateColumnWidths()
for (column_itor = mColumnsIndexed.begin(); column_itor != mColumnsIndexed.end(); ++column_itor)
{
LLScrollListColumn* column = *column_itor;
- if (!column) continue;
+ if (!column)
+ continue;
// update column width
S32 new_width = 0;
@@ -742,7 +715,6 @@ void LLScrollListCtrl::updateLineHeightInsert(LLScrollListItem* itemp)
}
}
-
void LLScrollListCtrl::updateColumns(bool force_update)
{
if (!mColumnsDirty && !force_update)
@@ -815,7 +787,8 @@ void LLScrollListCtrl::updateColumns(bool force_update)
S32 i = 0;
for (LLScrollListCell* cell = itemp->getColumn(i); i < num_cols; cell = itemp->getColumn(++i))
{
- if (i >= (S32)mColumnsIndexed.size()) break;
+ if (i >= (S32)mColumnsIndexed.size())
+ break;
cell->setWidth(mColumnsIndexed[i]->getWidth());
}
@@ -842,8 +815,8 @@ void LLScrollListCtrl::setHeadingHeight(S32 heading_height)
mHeadingHeight = heading_height;
updateLayout();
-
}
+
void LLScrollListCtrl::setPageLines(S32 new_page_lines)
{
mPageLines = new_page_lines;
@@ -851,12 +824,12 @@ void LLScrollListCtrl::setPageLines(S32 new_page_lines)
updateLayout();
}
-BOOL LLScrollListCtrl::selectFirstItem()
+bool LLScrollListCtrl::selectFirstItem()
{
- BOOL success = FALSE;
+ bool success = false;
// our $%&@#$()^%#$()*^ iterators don't let us check against the first item inside out iteration
- BOOL first_item = TRUE;
+ bool first_item = true;
item_list::iterator iter;
for (iter = mItemList.begin(); iter != mItemList.end(); iter++)
@@ -876,7 +849,7 @@ BOOL LLScrollListCtrl::selectFirstItem()
selectItem(itemp, -1);
}
}
- success = TRUE;
+ success = true;
mOriginalSelection = 0;
}
else
@@ -885,6 +858,7 @@ BOOL LLScrollListCtrl::selectFirstItem()
}
first_item = false;
}
+
if (mCommitOnSelectionChange)
{
commitIfChanged();
@@ -894,48 +868,44 @@ BOOL LLScrollListCtrl::selectFirstItem()
// Deselects all other items
// virtual
-BOOL LLScrollListCtrl::selectNthItem( S32 target_index )
+bool LLScrollListCtrl::selectNthItem(S32 target_index)
{
return selectItemRange(target_index, target_index);
}
// virtual
-BOOL LLScrollListCtrl::selectItemRange( S32 first_index, S32 last_index )
+bool LLScrollListCtrl::selectItemRange(S32 first_index, S32 last_index)
{
if (mItemList.empty())
{
- return FALSE;
+ return false;
}
// make sure sort is up to date
updateSort();
- S32 listlen = (S32)mItemList.size();
- first_index = llclamp(first_index, 0, listlen-1);
-
- if (last_index < 0)
- last_index = listlen-1;
- else
- last_index = llclamp(last_index, first_index, listlen-1);
+ S32 bottom = (S32)mItemList.size() - 1;
+ first_index = llclamp(first_index, 0, bottom);
+ last_index = last_index < 0 ? bottom : llclamp(last_index, first_index, bottom);
- BOOL success = FALSE;
+ bool success = false;
S32 index = 0;
for (item_list::iterator iter = mItemList.begin(); iter != mItemList.end(); )
{
LLScrollListItem *itemp = *iter;
- if(!itemp)
+ if (!itemp)
{
iter = mItemList.erase(iter);
- continue ;
+ continue;
}
- if( index >= first_index && index <= last_index )
+ if (index >= first_index && index <= last_index)
{
- if( itemp->getEnabled() )
+ if (itemp->getEnabled())
{
// TODO: support range selection for cells
- selectItem(itemp, -1, FALSE);
- success = TRUE;
+ selectItem(itemp, -1, false);
+ success = true;
}
}
else
@@ -1078,17 +1048,20 @@ S32 LLScrollListCtrl::selectMultiple( uuid_vec_t ids )
{
LLScrollListItem* item = *iter;
uuid_vec_t::iterator iditr;
- for(iditr = ids.begin(); iditr != ids.end(); ++iditr)
+ for (iditr = ids.begin(); iditr != ids.end(); ++iditr)
{
if (item->getEnabled() && (item->getUUID() == (*iditr)))
{
// TODO: support multiple selection for cells
- selectItem(item, -1, FALSE);
+ selectItem(item, -1, false);
++count;
break;
}
}
- if(ids.end() != iditr) ids.erase(iditr);
+ if (ids.end() != iditr)
+ {
+ ids.erase(iditr);
+ }
}
if (mCommitOnSelectionChange)
@@ -1103,11 +1076,9 @@ S32 LLScrollListCtrl::getItemIndex( LLScrollListItem* target_item ) const
updateSort();
S32 index = 0;
- item_list::const_iterator iter;
- for (iter = mItemList.begin(); iter != mItemList.end(); iter++)
+ for (LLScrollListItem* item : mItemList)
{
- LLScrollListItem *itemp = *iter;
- if (target_item == itemp)
+ if (target_item == item)
{
return index;
}
@@ -1121,11 +1092,9 @@ S32 LLScrollListCtrl::getItemIndex( const LLUUID& target_id ) const
updateSort();
S32 index = 0;
- item_list::const_iterator iter;
- for (iter = mItemList.begin(); iter != mItemList.end(); iter++)
+ for (LLScrollListItem* item : mItemList)
{
- LLScrollListItem *itemp = *iter;
- if (target_id == itemp->getUUID())
+ if (target_id == item->getUUID())
{
return index;
}
@@ -1134,42 +1103,34 @@ S32 LLScrollListCtrl::getItemIndex( const LLUUID& target_id ) const
return -1;
}
-void LLScrollListCtrl::selectPrevItem( BOOL extend_selection)
+void LLScrollListCtrl::selectPrevItem( bool extend_selection)
{
+ updateSort();
+
LLScrollListItem* prev_item = NULL;
- if (!getFirstSelected())
+ for (LLScrollListItem* item : mItemList)
{
- // select last item
- selectNthItem(getItemCount() - 1);
- }
- else
- {
- updateSort();
-
- item_list::iterator iter;
- for (iter = mItemList.begin(); iter != mItemList.end(); iter++)
+ if (item->getSelected())
{
- LLScrollListItem* cur_item = *iter;
-
- if (cur_item->getSelected())
- {
- if (prev_item)
- {
- selectItem(prev_item, cur_item->getSelectedCell(), !extend_selection);
- }
- else
- {
- reportInvalidInput();
- }
- break;
- }
+ break;
+ }
- // don't allow navigation to disabled elements
- prev_item = cur_item->getEnabled() ? cur_item : prev_item;
+ // don't allow navigation to disabled elements
+ if (item->getEnabled())
+ {
+ prev_item = item;
}
}
+ if (!prev_item)
+ {
+ reportInvalidInput();
+ return;
+ }
+
+ selectItem(prev_item, prev_item->getSelectedCell(), !extend_selection);
+
if ((mCommitOnSelectionChange || mCommitOnKeyboardMovement))
{
commitIfChanged();
@@ -1178,42 +1139,43 @@ void LLScrollListCtrl::selectPrevItem( BOOL extend_selection)
mSearchString.clear();
}
-
-void LLScrollListCtrl::selectNextItem( BOOL extend_selection)
+void LLScrollListCtrl::selectNextItem( bool extend_selection)
{
+ updateSort();
+
+ LLScrollListItem* current_item = NULL;
LLScrollListItem* next_item = NULL;
- if (!getFirstSelected())
- {
- selectFirstItem();
- }
- else
+ for (LLScrollListItem* item : mItemList)
{
- updateSort();
-
- item_list::reverse_iterator iter;
- for (iter = mItemList.rbegin(); iter != mItemList.rend(); iter++)
+ if (current_item)
{
- LLScrollListItem* cur_item = *iter;
-
- if (cur_item->getSelected())
+ if (item->getEnabled())
{
- if (next_item)
- {
- selectItem(next_item, cur_item->getSelectedCell(), !extend_selection);
- }
- else
- {
- reportInvalidInput();
- }
+ next_item = item;
break;
}
-
- // don't allow navigation to disabled items
- next_item = cur_item->getEnabled() ? cur_item : next_item;
+ }
+ else if (item->getSelected())
+ {
+ current_item = item;
+ next_item = NULL;
+ continue;
+ }
+ else if (!next_item && item->getEnabled())
+ {
+ next_item = item;
}
}
+ if (!next_item)
+ {
+ reportInvalidInput();
+ return;
+ }
+
+ selectItem(next_item, next_item->getSelectedCell(), !extend_selection);
+
if (mCommitOnKeyboardMovement)
{
onCommit();
@@ -1222,14 +1184,10 @@ void LLScrollListCtrl::selectNextItem( BOOL extend_selection)
mSearchString.clear();
}
-
-
-void LLScrollListCtrl::deselectAllItems(BOOL no_commit_on_change)
+void LLScrollListCtrl::deselectAllItems(bool no_commit_on_change)
{
- item_list::iterator iter;
- for (iter = mItemList.begin(); iter != mItemList.end(); iter++)
+ for (LLScrollListItem* item : mItemList)
{
- LLScrollListItem* item = *iter;
deselectItem(item);
}
@@ -1244,7 +1202,7 @@ void LLScrollListCtrl::deselectAllItems(BOOL no_commit_on_change)
void LLScrollListCtrl::setCommentText(const std::string& comment_text)
{
- getChild<LLTextBox>("comment_text")->setValue(comment_text);
+ mCommentText->setValue(comment_text);
}
LLScrollListItem* LLScrollListCtrl::addSeparator(EAddPosition pos)
@@ -1263,9 +1221,9 @@ LLScrollListItem* LLScrollListCtrl::addSeparator(EAddPosition pos)
// Selects first enabled item of the given name.
// Returns false if item not found.
// Calls getItemByLabel in order to combine functionality
-BOOL LLScrollListCtrl::selectItemByLabel(const std::string& label, BOOL case_sensitive, S32 column/* = 0*/)
+bool LLScrollListCtrl::selectItemByLabel(const std::string& label, bool case_sensitive, S32 column/* = 0*/)
{
- deselectAllItems(TRUE); // ensure that no stale items are selected, even if we don't find a match
+ deselectAllItems(true); // ensure that no stale items are selected, even if we don't find a match
LLScrollListItem* item = getItemByLabel(label, case_sensitive, column);
bool found = NULL != item;
@@ -1282,7 +1240,7 @@ BOOL LLScrollListCtrl::selectItemByLabel(const std::string& label, BOOL case_sen
return found;
}
-LLScrollListItem* LLScrollListCtrl::getItemByLabel(const std::string& label, BOOL case_sensitive, S32 column)
+LLScrollListItem* LLScrollListCtrl::getItemByLabel(const std::string& label, bool case_sensitive, S32 column)
{
if (label.empty()) //RN: assume no empty items
{
@@ -1295,16 +1253,14 @@ LLScrollListItem* LLScrollListCtrl::getItemByLabel(const std::string& label, BOO
LLStringUtil::toLower(target_text);
}
- item_list::iterator iter;
- for (iter = mItemList.begin(); iter != mItemList.end(); iter++)
+ for (LLScrollListItem* item : mItemList)
{
- LLScrollListItem* item = *iter;
std::string item_text = item->getColumn(column)->getValue().asString(); // Only select enabled items with matching names
if (!case_sensitive)
{
LLStringUtil::toLower(item_text);
}
- if(item_text == target_text)
+ if (item_text == target_text)
{
return item;
}
@@ -1312,20 +1268,29 @@ LLScrollListItem* LLScrollListCtrl::getItemByLabel(const std::string& label, BOO
return NULL;
}
+LLScrollListItem* LLScrollListCtrl::getItemByIndex(S32 index)
+{
+ if (index >= 0 && index < (S32)mItemList.size())
+ {
+ return mItemList[index];
+ }
+
+ return NULL;
+}
-BOOL LLScrollListCtrl::selectItemByPrefix(const std::string& target, BOOL case_sensitive, S32 column)
+bool LLScrollListCtrl::selectItemByPrefix(const std::string& target, bool case_sensitive, S32 column)
{
return selectItemByPrefix(utf8str_to_wstring(target), case_sensitive, column);
}
// Selects first enabled item that has a name where the name's first part matched the target string.
// Returns false if item not found.
-BOOL LLScrollListCtrl::selectItemByPrefix(const LLWString& target, BOOL case_sensitive, S32 column)
+bool LLScrollListCtrl::selectItemByPrefix(const LLWString& target, bool case_sensitive, S32 column)
{
- BOOL found = FALSE;
+ bool found = false;
LLWString target_trimmed( target );
- S32 target_len = target_trimmed.size();
+ auto target_len = target_trimmed.size();
if( 0 == target_len )
{
@@ -1336,11 +1301,11 @@ BOOL LLScrollListCtrl::selectItemByPrefix(const LLWString& target, BOOL case_sen
LLScrollListItem* item = *iter;
// Only select enabled items with matching names
LLScrollListCell* cellp = item->getColumn(column == -1 ? getSearchColumn() : column);
- BOOL select = cellp ? item->getEnabled() && ('\0' == cellp->getValue().asString()[0]) : FALSE;
+ bool select = cellp ? item->getEnabled() && ('\0' == cellp->getValue().asString()[0]) : false;
if (select)
{
selectItem(item, -1);
- found = TRUE;
+ found = true;
break;
}
}
@@ -1372,15 +1337,15 @@ BOOL LLScrollListCtrl::selectItemByPrefix(const LLWString& target, BOOL case_sen
LLWString trimmed_label = item_label;
LLWStringUtil::trim(trimmed_label);
- BOOL select = item->getEnabled() && trimmed_label.compare(0, target_trimmed.size(), target_trimmed) == 0;
+ bool select = item->getEnabled() && trimmed_label.compare(0, target_trimmed.size(), target_trimmed) == 0;
if (select)
{
// find offset of matching text (might have leading whitespace)
- S32 offset = item_label.find(target_trimmed);
- cellp->highlightText(offset, target_trimmed.size());
+ auto offset = item_label.find(target_trimmed);
+ cellp->highlightText(static_cast<S32>(offset), static_cast<S32>(target_trimmed.size()));
selectItem(item, -1);
- found = TRUE;
+ found = true;
break;
}
}
@@ -1404,7 +1369,7 @@ U32 LLScrollListCtrl::searchItems(const LLWString& substring, bool case_sensitiv
U32 found = 0;
LLWString substring_trimmed(substring);
- S32 len = substring_trimmed.size();
+ auto len = substring_trimmed.size();
if (0 == len)
{
@@ -1413,7 +1378,7 @@ U32 LLScrollListCtrl::searchItems(const LLWString& substring, bool case_sensitiv
}
else
{
- deselectAllItems(TRUE);
+ deselectAllItems(true);
if (!case_sensitive)
{
// do comparisons in lower case
@@ -1446,8 +1411,8 @@ U32 LLScrollListCtrl::searchItems(const LLWString& substring, bool case_sensitiv
if (found_iter != std::string::npos)
{
// find offset of matching text
- cellp->highlightText(found_iter, substring_trimmed.size());
- selectItem(item, -1, FALSE);
+ cellp->highlightText(static_cast<S32>(found_iter), static_cast<S32>(substring_trimmed.size()));
+ selectItem(item, -1, false);
found++;
@@ -1472,14 +1437,17 @@ U32 LLScrollListCtrl::searchItems(const LLWString& substring, bool case_sensitiv
return found;
}
-const std::string LLScrollListCtrl::getSelectedItemLabel(S32 column) const
+std::string LLScrollListCtrl::getSelectedItemLabel(S32 column) const
{
LLScrollListItem* item;
item = getFirstSelected();
if (item)
{
- return item->getColumn(column)->getValue().asString();
+ if (LLScrollListCell* cell = item->getColumn(column))
+ {
+ return cell->getValue().asString();
+ }
}
return LLStringUtil::null;
@@ -1489,7 +1457,7 @@ const std::string LLScrollListCtrl::getSelectedItemLabel(S32 column) const
// "StringUUID" interface: use this when you're creating a list that contains non-unique strings each of which
// has an associated, unique UUID, and only one of which can be selected at a time.
-LLScrollListItem* LLScrollListCtrl::addStringUUIDItem(const std::string& item_text, const LLUUID& id, EAddPosition pos, BOOL enabled)
+LLScrollListItem* LLScrollListCtrl::addStringUUIDItem(const std::string& item_text, const LLUUID& id, EAddPosition pos, bool enabled)
{
if (getItemCount() < mMaxItemCount)
{
@@ -1504,16 +1472,19 @@ LLScrollListItem* LLScrollListCtrl::addStringUUIDItem(const std::string& item_te
}
// Select the line or lines that match this UUID
-BOOL LLScrollListCtrl::selectByID( const LLUUID& id )
+bool LLScrollListCtrl::selectByID( const LLUUID& id )
{
return selectByValue( LLSD(id) );
}
-BOOL LLScrollListCtrl::setSelectedByValue(const LLSD& value, BOOL selected)
+bool LLScrollListCtrl::setSelectedByValue(const LLSD& value, bool selected)
{
- BOOL found = FALSE;
+ bool found = false;
- if (selected && !mAllowMultipleSelection) deselectAllItems(TRUE);
+ if (selected && !mAllowMultipleSelection)
+ {
+ deselectAllItems(true);
+ }
item_list::iterator iter;
for (iter = mItemList.begin(); iter != mItemList.end(); iter++)
@@ -1527,12 +1498,12 @@ BOOL LLScrollListCtrl::setSelectedByValue(const LLSD& value, BOOL selected)
{
LLSD::Binary data1 = value.asBinary();
LLSD::Binary data2 = item->getValue().asBinary();
- found = std::equal(data1.begin(), data1.end(), data2.begin()) ? TRUE : FALSE;
+ found = std::equal(data1.begin(), data1.end(), data2.begin());
}
}
else
{
- found = item->getValue().asString() == value.asString() ? TRUE : FALSE;
+ found = item->getValue().asString() == value.asString();
}
if (found)
@@ -1558,7 +1529,7 @@ BOOL LLScrollListCtrl::setSelectedByValue(const LLSD& value, BOOL selected)
return found;
}
-BOOL LLScrollListCtrl::isSelected(const LLSD& value) const
+bool LLScrollListCtrl::isSelected(const LLSD& value) const
{
item_list::const_iterator iter;
for (iter = mItemList.begin(); iter != mItemList.end(); iter++)
@@ -1569,7 +1540,7 @@ BOOL LLScrollListCtrl::isSelected(const LLSD& value) const
return item->getSelected();
}
}
- return FALSE;
+ return false;
}
LLUUID LLScrollListCtrl::getStringUUIDSelectedItem() const
@@ -1724,7 +1695,7 @@ void LLScrollListCtrl::draw()
updateColumns();
- getChildView("comment_text")->setVisible(mItemList.empty());
+ mCommentText->setVisible(mItemList.empty());
drawItems();
@@ -1736,36 +1707,46 @@ void LLScrollListCtrl::draw()
LLUICtrl::draw();
}
-void LLScrollListCtrl::setEnabled(BOOL enabled)
+void LLScrollListCtrl::setEnabled(bool enabled)
{
mCanSelect = enabled;
setTabStop(enabled);
mScrollbar->setTabStop(!enabled && mScrollbar->getPageSize() < mScrollbar->getDocSize());
+
+ // when the table is disabled also disable its items
+ for (LLScrollListItem* item : mItemList)
+ {
+ item->setEnabled(enabled);
+ if (!enabled)
+ {
+ item->setSelected(false);
+ }
+ }
}
-BOOL LLScrollListCtrl::handleScrollWheel(S32 x, S32 y, S32 clicks)
+bool LLScrollListCtrl::handleScrollWheel(S32 x, S32 y, S32 clicks)
{
- BOOL handled = FALSE;
+ bool handled = false;
// Pretend the mouse is over the scrollbar
handled = mScrollbar->handleScrollWheel( 0, 0, clicks );
if (mMouseWheelOpaque)
{
- return TRUE;
+ return true;
}
return handled;
}
-BOOL LLScrollListCtrl::handleScrollHWheel(S32 x, S32 y, S32 clicks)
+bool LLScrollListCtrl::handleScrollHWheel(S32 x, S32 y, S32 clicks)
{
- BOOL handled = FALSE;
+ bool handled = false;
// Pretend the mouse is over the scrollbar
handled = mScrollbar->handleScrollHWheel( 0, 0, clicks );
if (mMouseWheelOpaque)
{
- return TRUE;
+ return true;
}
return handled;
@@ -1783,20 +1764,20 @@ LLRect LLScrollListCtrl::getCellRect(S32 row_index, S32 column_index)
return cell_rect;
}
-BOOL LLScrollListCtrl::handleToolTip(S32 x, S32 y, MASK mask)
+bool LLScrollListCtrl::handleToolTip(S32 x, S32 y, MASK mask)
{
S32 column_index = getColumnIndexFromOffset(x);
LLScrollListColumn* columnp = getColumn(column_index);
- if (columnp == NULL) return FALSE;
+ if (columnp == NULL) return false;
- BOOL handled = FALSE;
+ bool handled = false;
// show tooltip for full name of hovered item if it has been truncated
LLScrollListItem* hit_item = hitItem(x, y);
if (hit_item)
{
LLScrollListCell* hit_cell = hit_item->getColumn(column_index);
- if (!hit_cell) return FALSE;
+ if (!hit_cell) return false;
if (hit_cell
&& hit_cell->isText()
&& hit_cell->needsToolTip())
@@ -1815,7 +1796,7 @@ BOOL LLScrollListCtrl::handleToolTip(S32 x, S32 y, MASK mask)
.delay_time(0.2f)
.sticky_rect(sticky_rect));
}
- handled = TRUE;
+ handled = true;
}
// otherwise, look for a tooltip associated with this column
@@ -1828,11 +1809,11 @@ BOOL LLScrollListCtrl::handleToolTip(S32 x, S32 y, MASK mask)
return handled;
}
-BOOL LLScrollListCtrl::selectItemAt(S32 x, S32 y, MASK mask)
+bool LLScrollListCtrl::selectItemAt(S32 x, S32 y, MASK mask)
{
- if (!mCanSelect) return FALSE;
+ if (!mCanSelect) return false;
- BOOL selection_changed = FALSE;
+ bool selection_changed = false;
LLScrollListItem* hit_item = hitItem(x, y);
@@ -1868,17 +1849,17 @@ BOOL LLScrollListCtrl::selectItemAt(S32 x, S32 y, MASK mask)
LLScrollListItem *item = *itor;
if (item == hit_item || item == lastSelected)
{
- selectItem(item, getColumnIndexFromOffset(x), FALSE);
+ selectItem(item, getColumnIndexFromOffset(x), false);
selecting = !selecting;
if (hit_item == lastSelected)
{
// stop selecting now, since we just clicked on our last selected item
- selecting = FALSE;
+ selecting = false;
}
}
if (selecting)
{
- selectItem(item, getColumnIndexFromOffset(x), FALSE);
+ selectItem(item, getColumnIndexFromOffset(x), false);
}
}
}
@@ -1893,7 +1874,7 @@ BOOL LLScrollListCtrl::selectItemAt(S32 x, S32 y, MASK mask)
{
if(!(mMaxSelectable > 0 && getAllSelected().size() >= mMaxSelectable))
{
- selectItem(hit_item, getColumnIndexFromOffset(x), FALSE);
+ selectItem(hit_item, getColumnIndexFromOffset(x), false);
}
else
{
@@ -1906,7 +1887,7 @@ BOOL LLScrollListCtrl::selectItemAt(S32 x, S32 y, MASK mask)
}
else
{
- deselectAllItems(TRUE);
+ deselectAllItems(true);
selectItem(hit_item, getColumnIndexFromOffset(x));
}
}
@@ -1927,21 +1908,21 @@ BOOL LLScrollListCtrl::selectItemAt(S32 x, S32 y, MASK mask)
else
{
//mLastSelected = NULL;
- //deselectAllItems(TRUE);
+ //deselectAllItems(true);
}
return selection_changed;
}
-BOOL LLScrollListCtrl::handleMouseDown(S32 x, S32 y, MASK mask)
+bool LLScrollListCtrl::handleMouseDown(S32 x, S32 y, MASK mask)
{
- BOOL handled = childrenHandleMouseDown(x, y, mask) != NULL;
+ bool handled = childrenHandleMouseDown(x, y, mask) != NULL;
if( !handled )
{
// set keyboard focus first, in case click action wants to move focus elsewhere
- setFocus(TRUE);
+ setFocus(true);
// clear selection changed flag because user is starting a selection operation
mSelectionChanged = false;
@@ -1949,10 +1930,10 @@ BOOL LLScrollListCtrl::handleMouseDown(S32 x, S32 y, MASK mask)
handleClick(x, y, mask);
}
- return TRUE;
+ return true;
}
-BOOL LLScrollListCtrl::handleMouseUp(S32 x, S32 y, MASK mask)
+bool LLScrollListCtrl::handleMouseUp(S32 x, S32 y, MASK mask)
{
if (hasMouseCapture())
{
@@ -1978,7 +1959,7 @@ BOOL LLScrollListCtrl::handleMouseUp(S32 x, S32 y, MASK mask)
}
// virtual
-BOOL LLScrollListCtrl::handleRightMouseDown(S32 x, S32 y, MASK mask)
+bool LLScrollListCtrl::handleRightMouseDown(S32 x, S32 y, MASK mask)
{
LLScrollListItem *item = hitItem(x, y);
if (item)
@@ -1991,7 +1972,7 @@ BOOL LLScrollListCtrl::handleRightMouseDown(S32 x, S32 y, MASK mask)
// set up the callbacks for all of the avatar/group menu items
// (N.B. callbacks don't take const refs as id is local scope)
bool is_group = (mContextMenuType == MENU_GROUP);
- LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar;
+ ScopedRegistrarHelper registrar;
registrar.add("Url.ShowProfile", boost::bind(&LLScrollListCtrl::showProfile, id, is_group));
registrar.add("Url.SendIM", boost::bind(&LLScrollListCtrl::sendIM, id));
registrar.add("Url.AddFriend", boost::bind(&LLScrollListCtrl::addFriend, id));
@@ -2030,12 +2011,12 @@ BOOL LLScrollListCtrl::handleRightMouseDown(S32 x, S32 y, MASK mask)
menu->show(x, y);
LLMenuGL::showPopup(this, menu, x, y);
- return TRUE;
+ return true;
}
}
return LLUICtrl::handleRightMouseDown(x, y, mask);
}
- return FALSE;
+ return false;
}
void LLScrollListCtrl::showProfile(std::string id, bool is_group)
@@ -2108,10 +2089,10 @@ void LLScrollListCtrl::copySLURLToClipboard(std::string id, bool is_group)
LLUrlAction::copyURLToClipboard(slurl);
}
-BOOL LLScrollListCtrl::handleDoubleClick(S32 x, S32 y, MASK mask)
+bool LLScrollListCtrl::handleDoubleClick(S32 x, S32 y, MASK mask)
{
- //BOOL handled = FALSE;
- BOOL handled = handleClick(x, y, mask);
+ //bool handled = false;
+ bool handled = handleClick(x, y, mask);
if (!handled)
{
@@ -2127,19 +2108,19 @@ BOOL LLScrollListCtrl::handleDoubleClick(S32 x, S32 y, MASK mask)
}
}
- return TRUE;
+ return true;
}
-BOOL LLScrollListCtrl::handleClick(S32 x, S32 y, MASK mask)
+bool LLScrollListCtrl::handleClick(S32 x, S32 y, MASK mask)
{
// which row was clicked on?
LLScrollListItem* hit_item = hitItem(x, y);
- if (!hit_item) return FALSE;
+ if (!hit_item) return false;
// get appropriate cell from that row
S32 column_index = getColumnIndexFromOffset(x);
LLScrollListCell* hit_cell = hit_item->getColumn(column_index);
- if (!hit_cell) return FALSE;
+ if (!hit_cell) return false;
// if cell handled click directly (i.e. clicked on an embedded checkbox)
if (hit_cell->handleClick())
@@ -2175,7 +2156,7 @@ BOOL LLScrollListCtrl::handleClick(S32 x, S32 y, MASK mask)
onCommit();
}
// eat click (e.g. do not trigger double click callback)
- return TRUE;
+ return true;
}
else
{
@@ -2184,7 +2165,7 @@ BOOL LLScrollListCtrl::handleClick(S32 x, S32 y, MASK mask)
gFocusMgr.setMouseCapture(this);
mNeedsScroll = true;
// do not eat click (allow double click callback)
- return FALSE;
+ return false;
}
}
@@ -2279,9 +2260,9 @@ S32 LLScrollListCtrl::getRowOffsetFromIndex(S32 index)
}
-BOOL LLScrollListCtrl::handleHover(S32 x,S32 y,MASK mask)
+bool LLScrollListCtrl::handleHover(S32 x,S32 y,MASK mask)
{
- BOOL handled = FALSE;
+ bool handled = false;
if (hasMouseCapture())
{
@@ -2337,9 +2318,9 @@ void LLScrollListCtrl::onMouseLeave(S32 x, S32 y, MASK mask)
mouseOverHighlightNthItem(-1);
}
-BOOL LLScrollListCtrl::handleKeyHere(KEY key,MASK mask )
+bool LLScrollListCtrl::handleKeyHere(KEY key,MASK mask )
{
- BOOL handled = FALSE;
+ bool handled = false;
// not called from parent means we have keyboard focus or a child does
if (mCanSelect)
@@ -2352,18 +2333,18 @@ BOOL LLScrollListCtrl::handleKeyHere(KEY key,MASK mask )
if (mAllowKeyboardMovement || hasFocus())
{
// commit implicit in call
- selectPrevItem(FALSE);
+ selectPrevItem(false);
mNeedsScroll = true;
- handled = TRUE;
+ handled = true;
}
break;
case KEY_DOWN:
if (mAllowKeyboardMovement || hasFocus())
{
// commit implicit in call
- selectNextItem(FALSE);
+ selectNextItem(false);
mNeedsScroll = true;
- handled = TRUE;
+ handled = true;
}
break;
case KEY_LEFT:
@@ -2388,7 +2369,7 @@ BOOL LLScrollListCtrl::handleKeyHere(KEY key,MASK mask )
break;
}
item->setSelectedCell(cell);
- handled = TRUE;
+ handled = true;
}
}
break;
@@ -2414,7 +2395,7 @@ BOOL LLScrollListCtrl::handleKeyHere(KEY key,MASK mask )
break;
}
item->setSelectedCell(cell);
- handled = TRUE;
+ handled = true;
}
}
break;
@@ -2428,7 +2409,7 @@ BOOL LLScrollListCtrl::handleKeyHere(KEY key,MASK mask )
{
onCommit();
}
- handled = TRUE;
+ handled = true;
}
break;
case KEY_PAGE_DOWN:
@@ -2441,7 +2422,7 @@ BOOL LLScrollListCtrl::handleKeyHere(KEY key,MASK mask )
{
onCommit();
}
- handled = TRUE;
+ handled = true;
}
break;
case KEY_HOME:
@@ -2454,7 +2435,7 @@ BOOL LLScrollListCtrl::handleKeyHere(KEY key,MASK mask )
{
onCommit();
}
- handled = TRUE;
+ handled = true;
}
break;
case KEY_END:
@@ -2467,7 +2448,7 @@ BOOL LLScrollListCtrl::handleKeyHere(KEY key,MASK mask )
{
onCommit();
}
- handled = TRUE;
+ handled = true;
}
break;
case KEY_RETURN:
@@ -2478,7 +2459,7 @@ BOOL LLScrollListCtrl::handleKeyHere(KEY key,MASK mask )
{
onCommit();
mSearchString.clear();
- handled = TRUE;
+ handled = true;
}
break;
case KEY_BACKSPACE:
@@ -2498,7 +2479,7 @@ BOOL LLScrollListCtrl::handleKeyHere(KEY key,MASK mask )
}
}
}
- else if (selectItemByPrefix(wstring_to_utf8str(mSearchString), FALSE))
+ else if (selectItemByPrefix(wstring_to_utf8str(mSearchString), false))
{
mNeedsScroll = true;
// update search string only on successful match
@@ -2521,11 +2502,11 @@ BOOL LLScrollListCtrl::handleKeyHere(KEY key,MASK mask )
return handled;
}
-BOOL LLScrollListCtrl::handleUnicodeCharHere(llwchar uni_char)
+bool LLScrollListCtrl::handleUnicodeCharHere(llwchar uni_char)
{
if ((uni_char < 0x20) || (uni_char == 0x7F)) // Control character or DEL
{
- return FALSE;
+ return false;
}
// perform incremental search based on keyboard input
@@ -2538,7 +2519,7 @@ BOOL LLScrollListCtrl::handleUnicodeCharHere(llwchar uni_char)
// type ahead search is case insensitive
uni_char = LLStringOps::toLower((llwchar)uni_char);
- if (selectItemByPrefix(wstring_to_utf8str(mSearchString + (llwchar)uni_char), FALSE))
+ if (selectItemByPrefix(wstring_to_utf8str(mSearchString + (llwchar)uni_char), false))
{
// update search string only on successful match
mNeedsScroll = true;
@@ -2609,7 +2590,7 @@ BOOL LLScrollListCtrl::handleUnicodeCharHere(llwchar uni_char)
}
}
- return TRUE;
+ return true;
}
@@ -2618,11 +2599,11 @@ void LLScrollListCtrl::reportInvalidInput()
make_ui_sound("UISndBadKeystroke");
}
-BOOL LLScrollListCtrl::isRepeatedChars(const LLWString& string) const
+bool LLScrollListCtrl::isRepeatedChars(const LLWString& string) const
{
if (string.empty())
{
- return FALSE;
+ return false;
}
llwchar first_char = string[0];
@@ -2631,18 +2612,18 @@ BOOL LLScrollListCtrl::isRepeatedChars(const LLWString& string) const
{
if (string[i] != first_char)
{
- return FALSE;
+ return false;
}
}
- return TRUE;
+ return true;
}
-void LLScrollListCtrl::selectItem(LLScrollListItem* itemp, S32 cell, BOOL select_single_item)
+void LLScrollListCtrl::selectItem(LLScrollListItem* itemp, S32 cell, bool select_single_item)
{
if (!itemp) return;
- if (!itemp->getSelected())
+ if (!itemp->getSelected() || itemp->getSelectedCell() != cell)
{
if (mLastSelected)
{
@@ -2654,9 +2635,9 @@ void LLScrollListCtrl::selectItem(LLScrollListItem* itemp, S32 cell, BOOL select
}
if (select_single_item)
{
- deselectAllItems(TRUE);
+ deselectAllItems(true);
}
- itemp->setSelected(TRUE);
+ itemp->setSelected(true);
switch (mSelectionType)
{
case CELL:
@@ -2676,16 +2657,14 @@ void LLScrollListCtrl::selectItem(LLScrollListItem* itemp, S32 cell, BOOL select
void LLScrollListCtrl::deselectItem(LLScrollListItem* itemp)
{
- if (!itemp) return;
-
- if (itemp->getSelected())
+ if (itemp && itemp->getSelected())
{
if (mLastSelected == itemp)
{
mLastSelected = NULL;
}
- itemp->setSelected(FALSE);
+ itemp->setSelected(false);
LLScrollListCell* cellp = itemp->getColumn(getSearchColumn());
if (cellp)
{
@@ -2700,7 +2679,7 @@ void LLScrollListCtrl::commitIfChanged()
if (mSelectionChanged)
{
mDirty = true;
- mSelectionChanged = FALSE;
+ mSelectionChanged = false;
onCommit();
}
}
@@ -2710,13 +2689,14 @@ struct SameSortColumn
SameSortColumn(S32 column) : mColumn(column) {}
S32 mColumn;
- bool operator()(std::pair<S32, BOOL> sort_column) { return sort_column.first == mColumn; }
+ bool operator()(std::pair<S32, bool> sort_column) { return sort_column.first == mColumn; }
};
-BOOL LLScrollListCtrl::setSort(S32 column_idx, BOOL ascending)
+bool LLScrollListCtrl::setSort(S32 column_idx, bool ascending)
{
LLScrollListColumn* sort_column = getColumn(column_idx);
- if (!sort_column) return FALSE;
+ if (!sort_column)
+ return false;
sort_column->mSortDirection = ascending ? LLScrollListColumn::ASCENDING : LLScrollListColumn::DESCENDING;
@@ -2727,34 +2707,30 @@ BOOL LLScrollListCtrl::setSort(S32 column_idx, BOOL ascending)
if (mSortColumns.empty())
{
mSortColumns.push_back(new_sort_column);
- return TRUE;
+ return true;
}
- else
- {
- // grab current sort column
- sort_column_t cur_sort_column = mSortColumns.back();
- // remove any existing sort criterion referencing this column
- // and add the new one
- mSortColumns.erase(remove_if(mSortColumns.begin(), mSortColumns.end(), SameSortColumn(column_idx)), mSortColumns.end());
- mSortColumns.push_back(new_sort_column);
+ // grab current sort column
+ sort_column_t cur_sort_column = mSortColumns.back();
- // did the sort criteria change?
- return (cur_sort_column != new_sort_column);
- }
+ // remove any existing sort criterion referencing this column
+ // and add the new one
+ mSortColumns.erase(remove_if(mSortColumns.begin(), mSortColumns.end(), SameSortColumn(column_idx)), mSortColumns.end());
+ mSortColumns.push_back(new_sort_column);
+
+ // did the sort criteria change?
+ return cur_sort_column != new_sort_column;
}
S32 LLScrollListCtrl::getLinesPerPage()
{
- //if mPageLines is NOT provided display all item
if (mPageLines)
{
return mPageLines;
}
- else
- {
- return mLineHeight ? mItemListRect.getHeight() / mLineHeight : getItemCount();
- }
+
+ // If mPageLines is NOT provided then display all items
+ return mLineHeight ? mItemListRect.getHeight() / mLineHeight : getItemCount();
}
@@ -2765,17 +2741,17 @@ void LLScrollListCtrl::onScrollChange( S32 new_pos, LLScrollbar* scrollbar )
}
-void LLScrollListCtrl::sortByColumn(const std::string& name, BOOL ascending)
+void LLScrollListCtrl::sortByColumn(const std::string& name, bool ascending)
{
column_map_t::iterator itor = mColumns.find(name);
if (itor != mColumns.end())
{
- sortByColumnIndex((*itor).second->mIndex, ascending);
+ sortByColumnIndex(itor->second->mIndex, ascending);
}
}
// First column is column 0
-void LLScrollListCtrl::sortByColumnIndex(U32 column, BOOL ascending)
+void LLScrollListCtrl::sortByColumnIndex(U32 column, bool ascending)
{
setSort(column, ascending);
updateSort();
@@ -2796,9 +2772,9 @@ void LLScrollListCtrl::updateSort() const
}
// for one-shot sorts, does not save sort column/order
-void LLScrollListCtrl::sortOnce(S32 column, BOOL ascending)
+void LLScrollListCtrl::sortOnce(S32 column, bool ascending)
{
- std::vector<std::pair<S32, BOOL> > sort_column;
+ std::vector<std::pair<S32, bool> > sort_column;
sort_column.push_back(std::make_pair(column, ascending));
// do stable sort to preserve any previous sorts
@@ -2887,7 +2863,7 @@ void LLScrollListCtrl::updateStaticColumnWidth(LLScrollListColumn* col, S32 new_
// LLEditMenuHandler functions
// virtual
-void LLScrollListCtrl::copy()
+void LLScrollListCtrl::copy()
{
std::string buffer;
@@ -2897,39 +2873,37 @@ void LLScrollListCtrl::copy()
{
buffer += (*itor)->getContentsCSV() + "\n";
}
- LLClipboard::instance().copyToClipboard(utf8str_to_wstring(buffer), 0, buffer.length());
+ LLClipboard::instance().copyToClipboard(utf8str_to_wstring(buffer), 0, static_cast<S32>(buffer.length()));
}
// virtual
-BOOL LLScrollListCtrl::canCopy() const
+bool LLScrollListCtrl::canCopy() const
{
return (getFirstSelected() != NULL);
}
// virtual
-void LLScrollListCtrl::cut()
+void LLScrollListCtrl::cut()
{
copy();
doDelete();
}
// virtual
-BOOL LLScrollListCtrl::canCut() const
+bool LLScrollListCtrl::canCut() const
{
return canCopy() && canDoDelete();
}
// virtual
-void LLScrollListCtrl::selectAll()
+void LLScrollListCtrl::selectAll()
{
// Deselects all other items
- item_list::iterator iter;
- for (iter = mItemList.begin(); iter != mItemList.end(); iter++)
+ for (LLScrollListItem* itemp : mItemList)
{
- LLScrollListItem *itemp = *iter;
- if( itemp->getEnabled() )
+ if (itemp->getEnabled())
{
- selectItem(itemp, -1, FALSE);
+ selectItem(itemp, -1, false);
}
}
@@ -2940,19 +2914,19 @@ void LLScrollListCtrl::selectAll()
}
// virtual
-BOOL LLScrollListCtrl::canSelectAll() const
+bool LLScrollListCtrl::canSelectAll() const
{
return getCanSelect() && mAllowMultipleSelection && !(mMaxSelectable > 0 && mItemList.size() > mMaxSelectable);
}
// virtual
-void LLScrollListCtrl::deselect()
+void LLScrollListCtrl::deselect()
{
deselectAllItems();
}
// virtual
-BOOL LLScrollListCtrl::canDeselect() const
+bool LLScrollListCtrl::canDeselect() const
{
return getCanSelect();
}
@@ -2967,7 +2941,8 @@ void LLScrollListCtrl::addColumn(const LLSD& column, EAddPosition pos)
void LLScrollListCtrl::addColumn(const LLScrollListColumn::Params& column_params, EAddPosition pos)
{
- if (!column_params.validateBlock()) return;
+ if (!column_params.validateBlock())
+ return;
std::string name = column_params.name;
// if no column name provided, just use ordinal as name
@@ -2981,7 +2956,7 @@ void LLScrollListCtrl::addColumn(const LLScrollListColumn::Params& column_params
// Add column
mColumns[name] = new LLScrollListColumn(column_params, this);
LLScrollListColumn* new_column = mColumns[name];
- new_column->mIndex = mColumns.size()-1;
+ new_column->mIndex = static_cast<S32>(mColumns.size()) - 1;
// Add button
if (new_column->getWidth() > 0 || new_column->mRelWidth > 0 || new_column->mDynamicWidth)
@@ -2994,7 +2969,7 @@ void LLScrollListCtrl::addColumn(const LLScrollListColumn::Params& column_params
{
new_column->setWidth((S32)ll_round(new_column->mRelWidth*mItemListRect.getWidth()));
}
- else if(new_column->mDynamicWidth)
+ else if (new_column->mDynamicWidth)
{
mNumDynamicWidthColumns++;
new_column->setWidth((mItemListRect.getWidth() - mTotalStaticColumnWidth - mTotalColumnPadding) / mNumDynamicWidthColumns);
@@ -3002,14 +2977,12 @@ void LLScrollListCtrl::addColumn(const LLScrollListColumn::Params& column_params
S32 top = mItemListRect.mTop;
S32 left = mItemListRect.mLeft;
- for (column_map_t::iterator itor = mColumns.begin();
- itor != mColumns.end();
- ++itor)
+ for (const auto& data_pair : mColumns)
{
- if (itor->second->mIndex < new_column->mIndex &&
- itor->second->getWidth() > 0)
+ if (data_pair.second->mIndex < new_column->mIndex &&
+ data_pair.second->getWidth() > 0)
{
- left += itor->second->getWidth() + mColumnPadding;
+ left += data_pair.second->getWidth() + mColumnPadding;
}
}
@@ -3089,11 +3062,10 @@ std::string LLScrollListCtrl::getSortColumnName()
{
LLScrollListColumn* column = mSortColumns.empty() ? NULL : mColumnsIndexed[mSortColumns.back().first];
- if (column) return column->mName;
- else return "";
+ return column ? column->mName : LLStringUtil::null;
}
-BOOL LLScrollListCtrl::hasSortOrder() const
+bool LLScrollListCtrl::hasSortOrder() const
{
return !mSortColumns.empty();
}
@@ -3176,17 +3148,16 @@ LLScrollListItem* LLScrollListCtrl::addRow(const LLScrollListItem::Params& item_
LLScrollListItem* LLScrollListCtrl::addRow(LLScrollListItem *new_item, const LLScrollListItem::Params& item_p, EAddPosition pos)
{
LL_PROFILE_ZONE_SCOPED_CATEGORY_UI;
- if (!item_p.validateBlock() || !new_item) return NULL;
- new_item->setNumColumns(mColumns.size());
+ if (!item_p.validateBlock() || !new_item)
+ return nullptr;
+
+ new_item->setNumColumns((S32)mColumns.size());
// Add any columns we don't already have
S32 col_index = 0;
- for(LLInitParam::ParamIterator<LLScrollListCell::Params>::const_iterator itor = item_p.columns.begin();
- itor != item_p.columns.end();
- ++itor)
+ for (LLScrollListCell::Params cell_p : item_p.columns)
{
- LLScrollListCell::Params cell_p = *itor;
std::string column = cell_p.column;
// empty columns strings index by ordinal
@@ -3212,7 +3183,7 @@ LLScrollListItem* LLScrollListCtrl::addRow(LLScrollListItem *new_item, const LLS
}
addColumn(new_column);
columnp = mColumns[column];
- new_item->setNumColumns(mColumns.size());
+ new_item->setNumColumns(static_cast<S32>(mColumns.size()));
}
S32 index = columnp->mIndex;
@@ -3230,7 +3201,7 @@ LLScrollListItem* LLScrollListCtrl::addRow(LLScrollListItem *new_item, const LLS
&& cell->isText()
&& !cell->getValue().asString().empty())
{
- columnp->mHeader->setHasResizableElement(TRUE);
+ columnp->mHeader->setHasResizableElement(true);
}
}
@@ -3245,11 +3216,10 @@ LLScrollListItem* LLScrollListCtrl::addRow(LLScrollListItem *new_item, const LLS
new_column.name = "0";
addColumn(new_column);
- new_item->setNumColumns(mColumns.size());
+ new_item->setNumColumns(static_cast<S32>(mColumns.size()));
}
- LLScrollListCell* cell = LLScrollListCell::create(LLScrollListCell::Params().value(item_p.value));
- if (cell)
+ if (LLScrollListCell* cell = LLScrollListCell::create(LLScrollListCell::Params().value(item_p.value)))
{
LLScrollListColumn* columnp = mColumns.begin()->second;
@@ -3258,21 +3228,19 @@ LLScrollListItem* LLScrollListCtrl::addRow(LLScrollListItem *new_item, const LLS
&& cell->isText()
&& !cell->getValue().asString().empty())
{
- columnp->mHeader->setHasResizableElement(TRUE);
+ columnp->mHeader->setHasResizableElement(true);
}
}
}
// add dummy cells for missing columns
- for (column_map_t::iterator column_it = mColumns.begin(); column_it != mColumns.end(); ++column_it)
+ for (const auto& column_it : mColumns)
{
- S32 column_idx = column_it->second->mIndex;
+ S32 column_idx = column_it.second->mIndex;
if (new_item->getColumn(column_idx) == NULL)
{
- LLScrollListColumn* column_ptr = column_it->second;
LLScrollListCell::Params cell_p;
- cell_p.width = column_ptr->getWidth();
-
+ cell_p.width = column_it.second->getWidth();
new_item->setColumn(column_idx, new LLScrollListSpacer(cell_p));
}
}
@@ -3315,26 +3283,26 @@ LLSD LLScrollListCtrl::getValue() const
return item->getValue();
}
-BOOL LLScrollListCtrl::operateOnSelection(EOperation op)
+bool LLScrollListCtrl::operateOnSelection(EOperation op)
{
if (op == OP_DELETE)
{
deleteSelectedItems();
- return TRUE;
+ return true;
}
else if (op == OP_DESELECT)
{
deselectAllItems();
}
- return FALSE;
+ return false;
}
-BOOL LLScrollListCtrl::operateOnAll(EOperation op)
+bool LLScrollListCtrl::operateOnAll(EOperation op)
{
if (op == OP_DELETE)
{
clearRows();
- return TRUE;
+ return true;
}
else if (op == OP_DESELECT)
{
@@ -3344,10 +3312,10 @@ BOOL LLScrollListCtrl::operateOnAll(EOperation op)
{
selectAll();
}
- return FALSE;
+ return false;
}
//virtual
-void LLScrollListCtrl::setFocus(BOOL b)
+void LLScrollListCtrl::setFocus(bool b)
{
// for tabbing into pristine scroll lists (Finder)
if (!getFirstSelected())
@@ -3360,9 +3328,9 @@ void LLScrollListCtrl::setFocus(BOOL b)
// virtual
-BOOL LLScrollListCtrl::isDirty() const
+bool LLScrollListCtrl::isDirty() const
{
- BOOL grubby = mDirty;
+ bool grubby = mDirty;
if ( !mAllowMultipleSelection )
{
grubby = (mOriginalSelection != getFirstSelectedIndex());
@@ -3373,7 +3341,7 @@ BOOL LLScrollListCtrl::isDirty() const
// Clear dirty state
void LLScrollListCtrl::resetDirty()
{
- mDirty = FALSE;
+ mDirty = false;
mOriginalSelection = getFirstSelectedIndex();
}