static void sortRecursive(int column, Qt::SortOrder order, FileBrowserItem *i){ static Compare<Qt::AscendingOrder> acomp = Compare<Qt::AscendingOrder>(); static Compare<Qt::DescendingOrder> dcomp = Compare<Qt::DescendingOrder>(); if (column < 0 || !i || !i->childCount()) return; if (order == Qt::AscendingOrder) acomp.sort(column, i->childItems); else if (order == Qt::DescendingOrder) dcomp.sort(column, i->childItems); for (const auto &ii : i->childItems) sortRecursive(column, order, ii); }
void SearchModel::sort(int column, Qt::SortOrder order) { static Compare<Qt::AscendingOrder> acomp = Compare<Qt::AscendingOrder>(); static Compare<Qt::DescendingOrder> dcomp = Compare<Qt::DescendingOrder>(); sortColumn = column; sortOrder = order; if (sortColumn < 0 || sortColumn > columnCount()-1) return; emit layoutAboutToBeChanged(); try { if (order == Qt::AscendingOrder) acomp.sort(column, rootItem->childItems); else if (order == Qt::DescendingOrder) dcomp.sort(column, rootItem->childItems); } catch (SearchListException &e){ sort(COLUMN_SF_FILENAME, order); } emit layoutChanged(); }