| 219 | } |
| 220 | |
| 221 | void 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 | |
| 245 | bool CRegistryManagerView::IsSortable(HWND h, int col) const { |
| 246 | auto tag = GetColumnManager(h)->GetColumnTag<ColumnType>(col); |
no test coverage detected