#include #include #include #include #include #include "TurtleRouterDialog.h" TurtleRouterDialog::TurtleRouterDialog(QWidget *parent) : RsAutoUpdatePage(2000,parent) { setupUi(this) ; // Init the basic setup. // QStringList stl ; int n=0 ; stl.clear() ; stl.push_back(QString("Search requests")) ; top_level_s_requests = new QTreeWidgetItem(_f2f_TW,stl) ; _f2f_TW->insertTopLevelItem(n++,top_level_s_requests) ; stl.clear() ; stl.push_back(QString("Tunnel requests")) ; top_level_t_requests = new QTreeWidgetItem(_f2f_TW,stl) ; _f2f_TW->insertTopLevelItem(n++,top_level_t_requests) ; top_level_hashes.clear() ; } void TurtleRouterDialog::updateDisplay() { std::vector > hashes_info ; std::vector > tunnels_info ; std::vector > search_reqs_info ; std::vector > tunnel_reqs_info ; rsTurtle->getInfo(hashes_info,tunnels_info,search_reqs_info,tunnel_reqs_info) ; // now display this in the QTableWidgets QStringList stl ; // remove all children of top level objects for(int i=0;i<_f2f_TW->topLevelItemCount();++i) while(_f2f_TW->topLevelItem(i)->takeChild(0) != NULL) ; for(uint i=0;itext(0) == QString("Unknown hashes")) unknown_hash_found = true ; QString str = QString::fromStdString("Tunnel id: "+tunnels_info[i][0] + "\t [" + tunnels_info[i][2] + "] --> [" + tunnels_info[i][1] + "]\t\t last transfer: " + tunnels_info[i][4]) ; stl.clear() ; stl.push_back(str) ; new QTreeWidgetItem(parent,stl) ; } for(uint i=0;isetText(0,"Search requests ("+QString::number(search_reqs_info.size())+")") ; for(uint i=0;isetText(0,"tunnel requests ("+QString::number(tunnel_reqs_info.size())+")") ; // Ok, this is a N2 search, but there are very few elements in the list. for(int i=2;i<_f2f_TW->topLevelItemCount();) { bool found = false ; if(_f2f_TW->topLevelItem(i)->text(0) == "Unknown hashes" && unknown_hash_found) found = true ; if(_f2f_TW->topLevelItem(i)->childCount() > 0) // this saves uploading hashes found = true ; for(uint j=0;jtopLevelItem(i)->text(0).toStdString() == hashes_info[j][0]) found=true ; if(!found) _f2f_TW->takeTopLevelItem(i) ; else ++i ; } } QTreeWidgetItem *TurtleRouterDialog::findParentHashItem(const std::string& hash) { // look for the hash, and insert a new element if necessary. // QList items = _f2f_TW->findItems((hash=="")?QString("Unknown hashes"):QString::fromStdString(hash),Qt::MatchExactly) ; if(items.empty()) { QStringList stl ; stl.push_back((hash=="")?QString("Unknown hashes"):QString::fromStdString(hash)) ; QTreeWidgetItem *item = new QTreeWidgetItem(_f2f_TW,stl) ; _f2f_TW->insertTopLevelItem(0,item) ; return item ; } else return items.front() ; }