qt: Add peertablesortproxy module
This commit is contained in:
4 files changed
+73
No files matched your search
@@ -0,0 +1,43 @@
|
||||
// Copyright (c) 2020 The Bitcoin Core developers
|
||||
// Distributed under the MIT software license, see the accompanying
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
#include <qt/peertablesortproxy.h>
|
||||
|
||||
#include <qt/peertablemodel.h>
|
||||
#include <util/check.h>
|
||||
|
||||
#include <QModelIndex>
|
||||
#include <QString>
|
||||
#include <QVariant>
|
||||
|
||||
PeerTableSortProxy::PeerTableSortProxy(QObject* parent)
|
||||
: QSortFilterProxyModel(parent)
|
||||
{
|
||||
}
|
||||
|
||||
bool PeerTableSortProxy::lessThan(const QModelIndex& left_index, const QModelIndex& right_index) const
|
||||
{
|
||||
const CNodeStats left_stats = Assert(sourceModel()->data(left_index, PeerTableModel::StatsRole).value<CNodeCombinedStats*>())->nodeStats;
|
||||
const CNodeStats right_stats = Assert(sourceModel()->data(right_index, PeerTableModel::StatsRole).value<CNodeCombinedStats*>())->nodeStats;
|
||||
|
||||
switch (static_cast<PeerTableModel::ColumnIndex>(left_index.column())) {
|
||||
case PeerTableModel::NetNodeId:
|
||||
return left_stats.nodeid < right_stats.nodeid;
|
||||
case PeerTableModel::Address:
|
||||
return left_stats.addrName.compare(right_stats.addrName) < 0;
|
||||
case PeerTableModel::ConnectionType:
|
||||
return left_stats.m_conn_type < right_stats.m_conn_type;
|
||||
case PeerTableModel::Network:
|
||||
return left_stats.m_network < right_stats.m_network;
|
||||
case PeerTableModel::Ping:
|
||||
return left_stats.m_min_ping_time < right_stats.m_min_ping_time;
|
||||
case PeerTableModel::Sent:
|
||||
return left_stats.nSendBytes < right_stats.nSendBytes;
|
||||
case PeerTableModel::Received:
|
||||
return left_stats.nRecvBytes < right_stats.nRecvBytes;
|
||||
case PeerTableModel::Subversion:
|
||||
return left_stats.cleanSubVer.compare(right_stats.cleanSubVer) < 0;
|
||||
} // no default case, so the compiler can warn about missing cases
|
||||
assert(false);
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
// Copyright (c) 2020 The Bitcoin Core developers
|
||||
// Distributed under the MIT software license, see the accompanying
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
#ifndef BITCOIN_QT_PEERTABLESORTPROXY_H
|
||||
#define BITCOIN_QT_PEERTABLESORTPROXY_H
|
||||
|
||||
#include <QSortFilterProxyModel>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
class QModelIndex;
|
||||
QT_END_NAMESPACE
|
||||
|
||||
class PeerTableSortProxy : public QSortFilterProxyModel
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit PeerTableSortProxy(QObject* parent = nullptr);
|
||||
|
||||
protected:
|
||||
bool lessThan(const QModelIndex& left_index, const QModelIndex& right_index) const override;
|
||||
};
|
||||
|
||||
#endif // BITCOIN_QT_PEERTABLESORTPROXY_H
|
||||
Reference in new issue
Block a user