Clean up LLScrollListCtrl and add ability to getSortColumns()

This commit is contained in:
Lirusaito
2019-04-27 03:02:47 -04:00
parent d33ae35fb3
commit b8c9d9c0f3
2 changed files with 12 additions and 14 deletions

View File

@@ -62,7 +62,7 @@ std::vector<LLMenuGL*> LLScrollListCtrl::sMenus = {}; // List menus that recur,
// local structures & classes. // local structures & classes.
struct SortScrollListItem struct SortScrollListItem
{ {
SortScrollListItem(const std::vector<std::pair<S32, BOOL> >& sort_orders,const LLScrollListCtrl::sort_signal_t* sort_signal) SortScrollListItem(const std::vector<LLScrollListCtrl::sort_column_t >& sort_orders,const LLScrollListCtrl::sort_signal_t* sort_signal)
: mSortOrders(sort_orders) : mSortOrders(sort_orders)
, mSortSignal(sort_signal) , mSortSignal(sort_signal)
{} {}
@@ -102,7 +102,7 @@ struct SortScrollListItem
} }
typedef std::vector<std::pair<S32, BOOL> > sort_order_t; typedef std::vector<LLScrollListCtrl::sort_column_t > sort_order_t;
const LLScrollListCtrl::sort_signal_t* mSortSignal; const LLScrollListCtrl::sort_signal_t* mSortSignal;
const sort_order_t& mSortOrders; const sort_order_t& mSortOrders;
}; };
@@ -2294,7 +2294,7 @@ struct SameSortColumn
SameSortColumn(S32 column) : mColumn(column) {} SameSortColumn(S32 column) : mColumn(column) {}
S32 mColumn; S32 mColumn;
bool operator()(std::pair<S32, BOOL> sort_column) { return sort_column.first == mColumn; } bool operator()(LLScrollListCtrl::sort_column_t sort_column) { return sort_column.first == mColumn; }
}; };
BOOL LLScrollListCtrl::setSort(S32 column_idx, BOOL ascending) BOOL LLScrollListCtrl::setSort(S32 column_idx, BOOL ascending)
@@ -2392,7 +2392,7 @@ void LLScrollListCtrl::updateSort() const
// for one-shot sorts, does not save sort column/order // 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<sort_column_t > sort_column;
sort_column.push_back(std::make_pair(column, ascending)); sort_column.push_back(std::make_pair(column, ascending));
// do stable sort to preserve any previous sorts // do stable sort to preserve any previous sorts
@@ -2733,15 +2733,15 @@ LLView* LLScrollListCtrl::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFac
std::string value = row_child->getTextContents(); std::string value = row_child->getTextContents();
row["columns"][column_idx]["value"] = value; row["columns"][column_idx]["value"] = value;
std::string columnname(""); std::string columnname;
if (row_child->getAttributeString("name", columnname)) if (row_child->getAttributeString("name", columnname))
row["columns"][column_idx]["column"] = columnname; row["columns"][column_idx]["column"] = columnname;
std::string font(""); std::string font;
if (row_child->getAttributeString("font", font)) if (row_child->getAttributeString("font", font))
row["columns"][column_idx]["font"] = font; row["columns"][column_idx]["font"] = font;
std::string font_style(""); std::string font_style;
if (row_child->getAttributeString("font-style", font_style)) if (row_child->getAttributeString("font-style", font_style))
row["columns"][column_idx]["font-style"] = font_style; row["columns"][column_idx]["font-style"] = font_style;
@@ -2771,12 +2771,9 @@ LLView* LLScrollListCtrl::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFac
void LLScrollListCtrl::copy() void LLScrollListCtrl::copy()
{ {
std::string buffer; std::string buffer;
for (auto item : getAllSelected())
std::vector<LLScrollListItem*> items = getAllSelected();
std::vector<LLScrollListItem*>::iterator itor;
for (itor = items.begin(); itor != items.end(); ++itor)
{ {
buffer += (*itor)->getContentsCSV() + "\n"; buffer += item->getContentsCSV() + '\n';
} }
gClipboard.copyFromSubstring(utf8str_to_wstring(buffer), 0, buffer.length()); gClipboard.copyFromSubstring(utf8str_to_wstring(buffer), 0, buffer.length());
} }

View File

@@ -320,6 +320,8 @@ public:
void updateStaticColumnWidth(LLScrollListColumn* col, S32 new_width); void updateStaticColumnWidth(LLScrollListColumn* col, S32 new_width);
S32 getTotalStaticColumnWidth() { return mTotalStaticColumnWidth; } S32 getTotalStaticColumnWidth() { return mTotalStaticColumnWidth; }
typedef std::pair<S32, bool> sort_column_t;
const std::vector<sort_column_t>& getSortColumns() const { return mSortColumns; }
std::string getSortColumnName(); std::string getSortColumnName();
BOOL getSortAscending() { return mSortColumns.empty() ? TRUE : mSortColumns.back().second; } BOOL getSortAscending() { return mSortColumns.empty() ? TRUE : mSortColumns.back().second; }
BOOL hasSortOrder() const; BOOL hasSortOrder() const;
@@ -354,7 +356,7 @@ public:
void setNeedsSortColumn(S32 col) void setNeedsSortColumn(S32 col)
{ {
if(!isSorted())return; if(!isSorted())return;
for(std::vector<std::pair<S32, BOOL> >::iterator it=mSortColumns.begin();it!=mSortColumns.end();++it) for(auto it=mSortColumns.begin();it!=mSortColumns.end();++it)
{ {
if((*it).first == col) if((*it).first == col)
{ {
@@ -482,7 +484,6 @@ private:
typedef std::vector<LLScrollListColumn*> ordered_columns_t; typedef std::vector<LLScrollListColumn*> ordered_columns_t;
ordered_columns_t mColumnsIndexed; ordered_columns_t mColumnsIndexed;
typedef std::pair<S32, BOOL> sort_column_t;
std::vector<sort_column_t> mSortColumns; std::vector<sort_column_t> mSortColumns;
sort_signal_t* mSortCallback; sort_signal_t* mSortCallback;