Freeciv21
Develop your civilization from humble roots to a global empire
collated_sort_proxy.cpp
Go to the documentation of this file.
1 /*
2  * SPDX-License-Identifier: GPLv3-or-later
3  * SPDX-FileCopyrightText: Louis Moureaux <m_louis30@yahoo.com>
4  */
5 
6 #include "collated_sort_proxy.h"
7 
8 namespace freeciv {
9 
22  QObject *parent)
23  : QSortFilterProxyModel(parent)
24 {
25 }
26 
31 {
32  m_collator = coll;
33  invalidate();
34 }
35 
43  const QModelIndex &source_left, const QModelIndex &source_right) const
44 {
45  // Copied from QSortFilterProxyModel
46  QVariant l = (source_left.model()
47  ? source_left.model()->data(source_left, sortRole())
48  : QVariant());
49  QVariant r = (source_right.model()
50  ? source_right.model()->data(source_right, sortRole())
51  : QVariant());
52 
53  if (l.type() == QVariant::String && r.type() == QVariant::String) {
54  return m_collator(l.toString(), r.toString());
55  }
56 
57  return QSortFilterProxyModel::lessThan(source_left, source_right);
58 }
59 
60 } // namespace freeciv
void set_collator(const QCollator &coll)
Changes the collator currently in use.
bool lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const override
Reimplemented protected function.
collated_sort_filter_proxy_model(QObject *parent=nullptr)
Constructor.
Definition: path.cpp:10