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.
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)
, 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 sort_order_t& mSortOrders;
};
@@ -2294,7 +2294,7 @@ struct SameSortColumn
SameSortColumn(S32 column) : mColumn(column) {}
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)
@@ -2392,7 +2392,7 @@ void LLScrollListCtrl::updateSort() const
// for one-shot sorts, does not save sort column/order
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));
// 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();
row["columns"][column_idx]["value"] = value;
std::string columnname("");
std::string columnname;
if (row_child->getAttributeString("name", columnname))
row["columns"][column_idx]["column"] = columnname;
std::string font("");
std::string font;
if (row_child->getAttributeString("font", font))
row["columns"][column_idx]["font"] = font;
std::string font_style("");
std::string font_style;
if (row_child->getAttributeString("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()
{
std::string buffer;
std::vector<LLScrollListItem*> items = getAllSelected();
std::vector<LLScrollListItem*>::iterator itor;
for (itor = items.begin(); itor != items.end(); ++itor)
for (auto item : getAllSelected())
{
buffer += (*itor)->getContentsCSV() + "\n";
buffer += item->getContentsCSV() + '\n';
}
gClipboard.copyFromSubstring(utf8str_to_wstring(buffer), 0, buffer.length());
}

View File

@@ -320,6 +320,8 @@ public:
void updateStaticColumnWidth(LLScrollListColumn* col, S32 new_width);
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();
BOOL getSortAscending() { return mSortColumns.empty() ? TRUE : mSortColumns.back().second; }
BOOL hasSortOrder() const;
@@ -354,7 +356,7 @@ public:
void setNeedsSortColumn(S32 col)
{
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)
{
@@ -482,7 +484,6 @@ private:
typedef std::vector<LLScrollListColumn*> ordered_columns_t;
ordered_columns_t mColumnsIndexed;
typedef std::pair<S32, BOOL> sort_column_t;
std::vector<sort_column_t> mSortColumns;
sort_signal_t* mSortCallback;