//============================================================================= // // StatuBar for Torrent client. // // File : StatusBarApplet.cpp // Creation date : Fri Jan 1 15:42:25 2007 GMT by Alexander Stillich // // This file is part of the KVIrc IRC client distribution // Copyright (C) 2007-2008 Alexander Stillich (torque at pltn dot org) // // This program is FREE software. You can redistribute it and/or // modify it under the terms of the GNU General Public License // as published by the Free Software Foundation; either version 2 // of the License, or (at your option) any later version. // // This program is distributed in the HOPE that it will be USEFUL, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. // See the GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, write to the Free Software Foundation, // Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // //============================================================================= #include "TorrentInterface.h" #include "StatusBarApplet.h" #include "KviLocale.h" #include "KviIconManager.h" #include "QTimer" StatusBarApplet::StatusBarApplet(KviStatusBar * parent, KviStatusBarAppletDescriptor * desc) : KviStatusBarApplet(parent, desc) { QTimer * timer = new QTimer(this); connect(timer, SIGNAL(timeout()), this, SLOT(update())); timer->setInterval(250); timer->setSingleShot(false); timer->start(250); setText(__tr2qs_ctx("Torrent Client", "torrent")); } StatusBarApplet::~StatusBarApplet() = default; static KviStatusBarApplet * CreateTorrentClientApplet(KviStatusBar * bar, KviStatusBarAppletDescriptor * desc) { KviStatusBarApplet * pApplet = new StatusBarApplet(bar, desc); pApplet->setIndex(bar->insertPermanentWidgetAtTheEnd(pApplet)); return pApplet; } void StatusBarApplet::selfRegister(KviStatusBar * bar) { KviStatusBarAppletDescriptor * d = new KviStatusBarAppletDescriptor( __tr2qs_ctx("Torrent Client", "torrent"), "torrentapplet", CreateTorrentClientApplet, "torrent", *(g_pIconManager->getSmallIcon(KviIconManager::Away))); bar->registerAppletDescriptor(d); } QString formatSize(float sz) { if(sz >= 1024.0f * 1024.0f * 1024.0f) return QString("%1 GiB").arg(sz / (1024.0f * 1024.0f * 1024.0f), 2, 'f', 2); if(sz >= 1024.0f * 1024.0f) return QString("%1 MiB").arg(sz / (1024.0f * 1024.0f), 2, 'f', 2); if(sz >= 1024.0f) return QString("%1 KiB").arg(sz / 1024.0f, 2, 'f', 2); return QString("%1 B").arg(sz, 2, 'f', 2); } void StatusBarApplet::update() { if(TorrentInterface::selected()) { QString msg = QString("up: %1 K/s (%2), dn: %3 K/s (%4)") .arg(TorrentInterface::selected()->speedUp(), 2) .arg(formatSize(TorrentInterface::selected()->trafficUp())) .arg(TorrentInterface::selected()->speedDown(), 2) .arg(formatSize(TorrentInterface::selected()->trafficDown())); setText(msg); } else { setText(__tr2qs_ctx("No client selected!", "torrent")); } }