@ -78,6 +78,7 @@ PeerListWidget::PeerListWidget(PropertiesWidget *parent)
m_listModel - > setHeaderData ( PeerListDelegate : : TOT_DOWN , Qt : : Horizontal , tr ( " Downloaded " , " i.e: total data downloaded " ) ) ;
m_listModel - > setHeaderData ( PeerListDelegate : : TOT_DOWN , Qt : : Horizontal , tr ( " Downloaded " , " i.e: total data downloaded " ) ) ;
m_listModel - > setHeaderData ( PeerListDelegate : : TOT_UP , Qt : : Horizontal , tr ( " Uploaded " , " i.e: total data uploaded " ) ) ;
m_listModel - > setHeaderData ( PeerListDelegate : : TOT_UP , Qt : : Horizontal , tr ( " Uploaded " , " i.e: total data uploaded " ) ) ;
m_listModel - > setHeaderData ( PeerListDelegate : : RELEVANCE , Qt : : Horizontal , tr ( " Relevance " , " i.e: How relevant this peer is to us. How many pieces it has that we don't. " ) ) ;
m_listModel - > setHeaderData ( PeerListDelegate : : RELEVANCE , Qt : : Horizontal , tr ( " Relevance " , " i.e: How relevant this peer is to us. How many pieces it has that we don't. " ) ) ;
m_listModel - > setHeaderData ( PeerListDelegate : : DOWNLOADING_PIECE , Qt : : Horizontal , tr ( " Files " , " i.e. files that are being downloaded right now " ) ) ;
// Proxy model to support sorting without actually altering the underlying model
// Proxy model to support sorting without actually altering the underlying model
m_proxyModel = new PeerListSortModel ( ) ;
m_proxyModel = new PeerListSortModel ( ) ;
m_proxyModel - > setDynamicSortFilter ( true ) ;
m_proxyModel - > setDynamicSortFilter ( true ) ;
@ -282,14 +283,14 @@ void PeerListWidget::loadPeers(BitTorrent::TorrentHandle *const torrent, bool fo
QString peerIp = addr . ip . toString ( ) ;
QString peerIp = addr . ip . toString ( ) ;
if ( m_peerItems . contains ( peerIp ) ) {
if ( m_peerItems . contains ( peerIp ) ) {
// Update existing peer
// Update existing peer
updatePeer ( peerIp , peer ) ;
updatePeer ( peerIp , torrent , peer ) ;
oldeersSet . remove ( peerIp ) ;
oldeersSet . remove ( peerIp ) ;
if ( forceHostnameResolution & & m_resolver )
if ( forceHostnameResolution & & m_resolver )
m_resolver - > resolve ( peerIp ) ;
m_resolver - > resolve ( peerIp ) ;
}
}
else {
else {
// Add new peer
// Add new peer
m_peerItems [ peerIp ] = addPeer ( peerIp , peer ) ;
m_peerItems [ peerIp ] = addPeer ( peerIp , torrent , peer ) ;
m_peerAddresses [ peerIp ] = addr ;
m_peerAddresses [ peerIp ] = addr ;
// Resolve peer host name is asked
// Resolve peer host name is asked
if ( m_resolver )
if ( m_resolver )
@ -307,7 +308,7 @@ void PeerListWidget::loadPeers(BitTorrent::TorrentHandle *const torrent, bool fo
}
}
}
}
QStandardItem * PeerListWidget : : addPeer ( const QString & ip , const BitTorrent : : PeerInfo & peer )
QStandardItem * PeerListWidget : : addPeer ( const QString & ip , BitTorrent : : TorrentHandle * const torrent , const BitTorrent : : PeerInfo & peer )
{
{
int row = m_listModel - > rowCount ( ) ;
int row = m_listModel - > rowCount ( ) ;
// Adding Peer to peer list
// Adding Peer to peer list
@ -337,10 +338,14 @@ QStandardItem* PeerListWidget::addPeer(const QString &ip, const BitTorrent::Peer
m_listModel - > setData ( m_listModel - > index ( row , PeerListDelegate : : TOT_DOWN ) , peer . totalDownload ( ) ) ;
m_listModel - > setData ( m_listModel - > index ( row , PeerListDelegate : : TOT_DOWN ) , peer . totalDownload ( ) ) ;
m_listModel - > setData ( m_listModel - > index ( row , PeerListDelegate : : TOT_UP ) , peer . totalUpload ( ) ) ;
m_listModel - > setData ( m_listModel - > index ( row , PeerListDelegate : : TOT_UP ) , peer . totalUpload ( ) ) ;
m_listModel - > setData ( m_listModel - > index ( row , PeerListDelegate : : RELEVANCE ) , peer . relevance ( ) ) ;
m_listModel - > setData ( m_listModel - > index ( row , PeerListDelegate : : RELEVANCE ) , peer . relevance ( ) ) ;
QStringList downloadingFiles ( torrent - > info ( ) . filesForPiece ( peer . downloadingPieceIndex ( ) ) ) ;
m_listModel - > setData ( m_listModel - > index ( row , PeerListDelegate : : DOWNLOADING_PIECE ) , downloadingFiles . join ( QLatin1String ( " ; " ) ) ) ;
m_listModel - > setData ( m_listModel - > index ( row , PeerListDelegate : : DOWNLOADING_PIECE ) , downloadingFiles . join ( QLatin1String ( " \n " ) ) , Qt : : ToolTipRole ) ;
return m_listModel - > item ( row , PeerListDelegate : : IP ) ;
return m_listModel - > item ( row , PeerListDelegate : : IP ) ;
}
}
void PeerListWidget : : updatePeer ( const QString & ip , const BitTorrent : : PeerInfo & peer )
void PeerListWidget : : updatePeer ( const QString & ip , BitTorrent : : TorrentHandle * const torrent , const BitTorrent : : PeerInfo & peer )
{
{
QStandardItem * item = m_peerItems . value ( ip ) ;
QStandardItem * item = m_peerItems . value ( ip ) ;
int row = item - > row ( ) ;
int row = item - > row ( ) ;
@ -364,6 +369,9 @@ void PeerListWidget::updatePeer(const QString &ip, const BitTorrent::PeerInfo &p
m_listModel - > setData ( m_listModel - > index ( row , PeerListDelegate : : TOT_DOWN ) , peer . totalDownload ( ) ) ;
m_listModel - > setData ( m_listModel - > index ( row , PeerListDelegate : : TOT_DOWN ) , peer . totalDownload ( ) ) ;
m_listModel - > setData ( m_listModel - > index ( row , PeerListDelegate : : TOT_UP ) , peer . totalUpload ( ) ) ;
m_listModel - > setData ( m_listModel - > index ( row , PeerListDelegate : : TOT_UP ) , peer . totalUpload ( ) ) ;
m_listModel - > setData ( m_listModel - > index ( row , PeerListDelegate : : RELEVANCE ) , peer . relevance ( ) ) ;
m_listModel - > setData ( m_listModel - > index ( row , PeerListDelegate : : RELEVANCE ) , peer . relevance ( ) ) ;
QStringList downloadingFiles ( torrent - > info ( ) . filesForPiece ( peer . downloadingPieceIndex ( ) ) ) ;
m_listModel - > setData ( m_listModel - > index ( row , PeerListDelegate : : DOWNLOADING_PIECE ) , downloadingFiles . join ( QLatin1String ( " ; " ) ) ) ;
m_listModel - > setData ( m_listModel - > index ( row , PeerListDelegate : : DOWNLOADING_PIECE ) , downloadingFiles . join ( QLatin1String ( " \n " ) ) , Qt : : ToolTipRole ) ;
}
}
void PeerListWidget : : handleResolved ( const QString & ip , const QString & hostname )
void PeerListWidget : : handleResolved ( const QString & ip , const QString & hostname )