Clean up LLScrollListCtrl and add ability to getSortColumns()
This commit is contained in:
@@ -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());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user