MCPcopy Create free account
hub / github.com/BeneficialCode/WinArk / DoSort

Method DoSort

WinArk/View.cpp:221–243  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

219}
220
221void CRegistryManagerView::DoSort(const SortInfo* si) {
222 if (si == nullptr || si->SortColumn < 0 || m_Items.empty())
223 return;
224
225 auto col = GetColumnManager(m_List)->GetColumnTag<ColumnType>(si->SortColumn);
226 auto asc = si->SortAscending;
227 auto compare = [&](auto& d1, auto& d2) {
228 switch (col)
229 {
230 case ColumnType::Name:
231 return SortHelper::SortStrings(d1.Name, d2.Name, asc);
232 case ColumnType::Type:
233 return SortHelper::SortNumbers(d1.Type, d2.Type, asc);
234 case ColumnType::Size:
235 return SortHelper::SortNumbers(d1.Size, d2.Size, asc);
236 case ColumnType::TimeStamp:
237 return SortHelper::SortNumbers(*(ULONGLONG*)&d1.TimeStamp, *(ULONGLONG*)&d2.TimeStamp, asc);
238 }
239 return false;
240 };
241
242 std::sort(m_Items.begin() + (AppSettings::Get().ShowKeysInList() ? 1 : 0), m_Items.end(), compare);
243}
244
245bool CRegistryManagerView::IsSortable(HWND h, int col) const {
246 auto tag = GetColumnManager(h)->GetColumnTag<ColumnType>(col);

Callers 1

OnColumnClickMethod · 0.45

Calls 4

SortNumbersFunction · 0.85
emptyMethod · 0.80
beginMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected