mirror of
https://github.com/bitcoin/bitcoin.git
synced 2024-11-19 18:09:47 +01:00
qt: Add peertablesortproxy module
This commit is contained in:
parent
8c049fe9af
commit
df2d165ba9
@ -34,6 +34,7 @@
|
||||
<ClCompile Include="..\..\src\qt\overviewpage.cpp" />
|
||||
<ClCompile Include="..\..\src\qt\paymentserver.cpp" />
|
||||
<ClCompile Include="..\..\src\qt\peertablemodel.cpp" />
|
||||
<ClCompile Include="..\..\src\qt\peertablesortproxy.cpp" />
|
||||
<ClCompile Include="..\..\src\qt\platformstyle.cpp" />
|
||||
<ClCompile Include="..\..\src\qt\psbtoperationsdialog.cpp" />
|
||||
<ClCompile Include="..\..\src\qt\qrimagewidget.cpp" />
|
||||
@ -87,6 +88,7 @@
|
||||
<ClCompile Include="$(GeneratedFilesOutDir)\moc\moc_overviewpage.cpp" />
|
||||
<ClCompile Include="$(GeneratedFilesOutDir)\moc\moc_paymentserver.cpp" />
|
||||
<ClCompile Include="$(GeneratedFilesOutDir)\moc\moc_peertablemodel.cpp" />
|
||||
<ClCompile Include="$(GeneratedFilesOutDir)\moc\moc_peertablesortproxy.cpp" />
|
||||
<ClCompile Include="$(GeneratedFilesOutDir)\moc\moc_platformstyle.cpp" />
|
||||
<ClCompile Include="$(GeneratedFilesOutDir)\moc\moc_psbtoperationsdialog.cpp" />
|
||||
<ClCompile Include="$(GeneratedFilesOutDir)\moc\moc_qrimagewidget.cpp" />
|
||||
|
@ -61,6 +61,7 @@ QT_MOC_CPP = \
|
||||
qt/moc_optionsmodel.cpp \
|
||||
qt/moc_overviewpage.cpp \
|
||||
qt/moc_peertablemodel.cpp \
|
||||
qt/moc_peertablesortproxy.cpp \
|
||||
qt/moc_paymentserver.cpp \
|
||||
qt/moc_psbtoperationsdialog.cpp \
|
||||
qt/moc_qrimagewidget.cpp \
|
||||
@ -134,6 +135,7 @@ BITCOIN_QT_H = \
|
||||
qt/overviewpage.h \
|
||||
qt/paymentserver.h \
|
||||
qt/peertablemodel.h \
|
||||
qt/peertablesortproxy.h \
|
||||
qt/platformstyle.h \
|
||||
qt/psbtoperationsdialog.h \
|
||||
qt/qrimagewidget.h \
|
||||
@ -232,6 +234,7 @@ BITCOIN_QT_BASE_CPP = \
|
||||
qt/optionsdialog.cpp \
|
||||
qt/optionsmodel.cpp \
|
||||
qt/peertablemodel.cpp \
|
||||
qt/peertablesortproxy.cpp \
|
||||
qt/platformstyle.cpp \
|
||||
qt/qvalidatedlineedit.cpp \
|
||||
qt/qvaluecombobox.cpp \
|
||||
|
43
src/qt/peertablesortproxy.cpp
Normal file
43
src/qt/peertablesortproxy.cpp
Normal file
@ -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);
|
||||
}
|
25
src/qt/peertablesortproxy.h
Normal file
25
src/qt/peertablesortproxy.h
Normal file
@ -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
|
Loading…
Reference in New Issue
Block a user