diff --git a/rai/node/node.cpp b/rai/node/node.cpp index faf7d4be..6a167ca2 100755 --- a/rai/node/node.cpp +++ b/rai/node/node.cpp @@ -1568,13 +1568,13 @@ std::vector rai::peer_container::list () return result; } -std::map rai::peer_container::list_version () +std::map rai::peer_container::list_version () { - std::map result; + std::map result; std::lock_guard lock (mutex); for (auto i (peers.begin ()), j (peers.end ()); i != j; ++i) { - result.insert (std::pair (i->endpoint, i->network_version)); + result.insert (std::pair (i->endpoint, i->network_version)); } return result; } diff --git a/rai/node/node.hpp b/rai/node/node.hpp index d6cdf9d1..3272c639 100644 --- a/rai/node/node.hpp +++ b/rai/node/node.hpp @@ -180,7 +180,7 @@ public: std::vector representatives (size_t); // List of all peers std::vector list (); - std::map list_version (); + std::map list_version (); // A list of random peers with size the square root of total peer count std::vector list_sqrt (); // Get the next peer for attempting bootstrap diff --git a/rai/node/rpc.cpp b/rai/node/rpc.cpp index 8645061c..d05a3744 100755 --- a/rai/node/rpc.cpp +++ b/rai/node/rpc.cpp @@ -1471,7 +1471,7 @@ void rai::rpc_handler::peers () { boost::property_tree::ptree response_l; boost::property_tree::ptree peers_l; - auto peers_list (node.peers.list_version()); + auto peers_list (node.peers.list_version ()); for (auto i (peers_list.begin ()), n (peers_list.end ()); i != n; ++i) { std::stringstream text; diff --git a/rai/qt/qt.cpp b/rai/qt/qt.cpp index b99086a0..820afe43 100755 --- a/rai/qt/qt.cpp +++ b/rai/qt/qt.cpp @@ -1445,8 +1445,8 @@ ledger_refresh (new QPushButton ("Refresh")), ledger_back (new QPushButton ("Back")), peers_window (new QWidget), peers_layout (new QVBoxLayout), -peers_model (new QStringListModel), -peers_view (new QListView), +peers_model (new QStandardItemModel), +peers_view (new QTableView), bootstrap_label (new QLabel ("IPV6:port \"::ffff:192.168.0.1:7075\"")), bootstrap_line (new QLineEdit), peers_bootstrap (new QPushButton ("Initiate Bootstrap")), @@ -1478,8 +1478,13 @@ wallet (wallet_a) ledger_layout->setContentsMargins (0, 0, 0, 0); ledger_window->setLayout (ledger_layout); + peers_model->setHorizontalHeaderItem (0, new QStandardItem ("IPv6 address:port")); + peers_model->setHorizontalHeaderItem (1, new QStandardItem ("Net version")); peers_view->setEditTriggers (QAbstractItemView::NoEditTriggers); + peers_view->verticalHeader ()->hide (); peers_view->setModel (peers_model); + peers_view->setColumnWidth(0,220); + peers_view->setSortingEnabled(true); peers_layout->addWidget (peers_view); peers_layout->addWidget (bootstrap_label); peers_layout->addWidget (bootstrap_line); @@ -1607,22 +1612,20 @@ wallet (wallet_a) void rai_qt::advanced_actions::refresh_peers () { - auto list (wallet.node.peers.list ()); - std::sort (list.begin (), list.end (), [] (rai::endpoint const & lhs, rai::endpoint const & rhs) + peers_model->removeRows (0, peers_model->rowCount ()); + auto list (wallet.node.peers.list_version ()); + for (auto i (list.begin ()), n (list.end ()); i != n; ++i) { - return lhs < rhs; - }); - QStringList peers; - for (auto i: list) - { - std::stringstream endpoint; - endpoint << i.address ().to_string (); - endpoint << ':'; - endpoint << i.port (); - QString qendpoint (endpoint.str().c_str ()); - peers << qendpoint; - } - peers_model->setStringList (peers); + std::stringstream endpoint; + endpoint << i->first.address ().to_string (); + endpoint << ':'; + endpoint << i->first.port (); + QString qendpoint (endpoint.str().c_str ()); + QList items; + items.push_back (new QStandardItem (qendpoint)); + items.push_back (new QStandardItem (QString (std::to_string (i->second).c_str ()))); + peers_model->appendRow (items); + } } void rai_qt::advanced_actions::refresh_ledger () diff --git a/rai/qt/qt.hpp b/rai/qt/qt.hpp index be68ffaa..93494951 100644 --- a/rai/qt/qt.hpp +++ b/rai/qt/qt.hpp @@ -81,8 +81,8 @@ namespace rai_qt { QWidget * peers_window; QVBoxLayout * peers_layout; - QStringListModel * peers_model; - QListView * peers_view; + QStandardItemModel * peers_model; + QTableView * peers_view; QLabel * bootstrap_label; QLineEdit * bootstrap_line; QPushButton * peers_bootstrap;