mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-26 11:13:23 -03:00
qt: Add peertablesortproxy module
This commit is contained in:
parent
8c049fe9af
commit
df2d165ba9
4 changed files with 73 additions and 0 deletions
|
@ -34,6 +34,7 @@
|
||||||
<ClCompile Include="..\..\src\qt\overviewpage.cpp" />
|
<ClCompile Include="..\..\src\qt\overviewpage.cpp" />
|
||||||
<ClCompile Include="..\..\src\qt\paymentserver.cpp" />
|
<ClCompile Include="..\..\src\qt\paymentserver.cpp" />
|
||||||
<ClCompile Include="..\..\src\qt\peertablemodel.cpp" />
|
<ClCompile Include="..\..\src\qt\peertablemodel.cpp" />
|
||||||
|
<ClCompile Include="..\..\src\qt\peertablesortproxy.cpp" />
|
||||||
<ClCompile Include="..\..\src\qt\platformstyle.cpp" />
|
<ClCompile Include="..\..\src\qt\platformstyle.cpp" />
|
||||||
<ClCompile Include="..\..\src\qt\psbtoperationsdialog.cpp" />
|
<ClCompile Include="..\..\src\qt\psbtoperationsdialog.cpp" />
|
||||||
<ClCompile Include="..\..\src\qt\qrimagewidget.cpp" />
|
<ClCompile Include="..\..\src\qt\qrimagewidget.cpp" />
|
||||||
|
@ -87,6 +88,7 @@
|
||||||
<ClCompile Include="$(GeneratedFilesOutDir)\moc\moc_overviewpage.cpp" />
|
<ClCompile Include="$(GeneratedFilesOutDir)\moc\moc_overviewpage.cpp" />
|
||||||
<ClCompile Include="$(GeneratedFilesOutDir)\moc\moc_paymentserver.cpp" />
|
<ClCompile Include="$(GeneratedFilesOutDir)\moc\moc_paymentserver.cpp" />
|
||||||
<ClCompile Include="$(GeneratedFilesOutDir)\moc\moc_peertablemodel.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_platformstyle.cpp" />
|
||||||
<ClCompile Include="$(GeneratedFilesOutDir)\moc\moc_psbtoperationsdialog.cpp" />
|
<ClCompile Include="$(GeneratedFilesOutDir)\moc\moc_psbtoperationsdialog.cpp" />
|
||||||
<ClCompile Include="$(GeneratedFilesOutDir)\moc\moc_qrimagewidget.cpp" />
|
<ClCompile Include="$(GeneratedFilesOutDir)\moc\moc_qrimagewidget.cpp" />
|
||||||
|
|
|
@ -61,6 +61,7 @@ QT_MOC_CPP = \
|
||||||
qt/moc_optionsmodel.cpp \
|
qt/moc_optionsmodel.cpp \
|
||||||
qt/moc_overviewpage.cpp \
|
qt/moc_overviewpage.cpp \
|
||||||
qt/moc_peertablemodel.cpp \
|
qt/moc_peertablemodel.cpp \
|
||||||
|
qt/moc_peertablesortproxy.cpp \
|
||||||
qt/moc_paymentserver.cpp \
|
qt/moc_paymentserver.cpp \
|
||||||
qt/moc_psbtoperationsdialog.cpp \
|
qt/moc_psbtoperationsdialog.cpp \
|
||||||
qt/moc_qrimagewidget.cpp \
|
qt/moc_qrimagewidget.cpp \
|
||||||
|
@ -134,6 +135,7 @@ BITCOIN_QT_H = \
|
||||||
qt/overviewpage.h \
|
qt/overviewpage.h \
|
||||||
qt/paymentserver.h \
|
qt/paymentserver.h \
|
||||||
qt/peertablemodel.h \
|
qt/peertablemodel.h \
|
||||||
|
qt/peertablesortproxy.h \
|
||||||
qt/platformstyle.h \
|
qt/platformstyle.h \
|
||||||
qt/psbtoperationsdialog.h \
|
qt/psbtoperationsdialog.h \
|
||||||
qt/qrimagewidget.h \
|
qt/qrimagewidget.h \
|
||||||
|
@ -232,6 +234,7 @@ BITCOIN_QT_BASE_CPP = \
|
||||||
qt/optionsdialog.cpp \
|
qt/optionsdialog.cpp \
|
||||||
qt/optionsmodel.cpp \
|
qt/optionsmodel.cpp \
|
||||||
qt/peertablemodel.cpp \
|
qt/peertablemodel.cpp \
|
||||||
|
qt/peertablesortproxy.cpp \
|
||||||
qt/platformstyle.cpp \
|
qt/platformstyle.cpp \
|
||||||
qt/qvalidatedlineedit.cpp \
|
qt/qvalidatedlineedit.cpp \
|
||||||
qt/qvaluecombobox.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…
Add table
Reference in a new issue