void
TrMainWindow :: refreshTrayIcon ()
{
- const QString idle = tr ("Idle");
- const Speed u (myModel.getUploadSpeed ());
- const Speed d (myModel.getDownloadSpeed ());
+ Speed upSpeed, downSpeed;
+ size_t upCount, downCount;
+ QString tip;
+
+ myModel.getTransferSpeed (upSpeed, upCount, downSpeed, downCount);
+
+ if (!upCount && !downCount)
+ {
+ tip = tr ("Idle");
+ }
+ else if (downCount)
+ {
+ tip = tr( "%1 %2" ).arg(Formatter::downloadSpeedToString(downSpeed))
+ .arg(Formatter::uploadSpeedToString(upSpeed));
+ }
+ else if (upCount)
+ {
+ tip = Formatter::uploadSpeedToString(upSpeed);
+ }
- myTrayIcon.setToolTip (tr ("Transmission\nUp: %1\nDown: %2")
- .arg (u.isZero () ? idle : Formatter::speedToString (u))
- .arg (d.isZero () ? idle : Formatter::speedToString (d)));
+ myTrayIcon.setToolTip (tip);
}
void
TrMainWindow :: refreshStatusBar ()
{
- myUploadSpeedLabel->setText (Formatter::uploadSpeedToString(myModel.getUploadSpeed()));
+ Speed upSpeed, downSpeed;
+ size_t upCount, downCount;
+ myModel.getTransferSpeed (upSpeed, upCount, downSpeed, downCount);
- myDownloadSpeedLabel->setText (Formatter::downloadSpeedToString(myModel.getDownloadSpeed()));
+ myUploadSpeedLabel->setText (Formatter::uploadSpeedToString(upSpeed));
+ myUploadSpeedLabel->setVisible (downCount || upCount);
+ myDownloadSpeedLabel->setText (Formatter::downloadSpeedToString(downSpeed));
+ myDownloadSpeedLabel->setVisible (downCount);
myNetworkLabel->setVisible (!mySession.isServer ());
}
}
-Speed
-TorrentModel :: getUploadSpeed( ) const
+void
+TorrentModel :: getTransferSpeed (Speed & uploadSpeed,
+ size_t & uploadPeerCount,
+ Speed & downloadSpeed,
+ size_t & downloadPeerCount)
{
- Speed up;
- foreach( const Torrent * tor, myTorrents )
- up += tor->uploadSpeed( );
- return up;
-}
+ Speed upSpeed, downSpeed;
+ size_t upCount=0, downCount=0;
-Speed
-TorrentModel :: getDownloadSpeed( ) const
-{
- Speed down;
- foreach( const Torrent * tor, myTorrents )
- down += tor->downloadSpeed( );
- return down;
+ foreach (const Torrent * const tor, myTorrents)
+ {
+ upSpeed += tor->uploadSpeed ();
+ upCount += tor->peersWeAreUploadingTo ();
+ downSpeed += tor->downloadSpeed ();
+ downCount += tor->webseedsWeAreDownloadingFrom();
+ downCount += tor->peersWeAreDownloadingFrom();
+ }
+
+ uploadSpeed = upSpeed;
+ uploadPeerCount = upCount;
+ downloadSpeed = downSpeed;
+ downloadPeerCount = downCount;
}
QSet<int>
QSet<int> getIds( ) const;
public:
- Speed getUploadSpeed( ) const;
- Speed getDownloadSpeed( ) const;
+ void getTransferSpeed (Speed & uploadSpeed,
+ size_t & uploadPeerCount,
+ Speed & downloadSpeed,
+ size_t & downloadPeerCount);
signals:
void torrentsAdded( QSet<int> );