/* This file is part of dc_qt. dc_qt 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. dc_qt 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 dc_qt; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "file_transfer.h" #include "util.h" #include #include #include file_transfer::file_transfer(int i, const QString &nick, const QString &fname,const QString &rfile,int size) : user(nick), file(fname), remoteFile(rfile), total_size(size) { if( fname == QString::null ) type = DOWNLOAD; else type = UPLOAD; done = false; time(&time_started); id = i; } double file_transfer::percent_done() const { return double(bytes_transferred) * 100 / double(total_size); } int file_transfer::bps() const { time_t currentTime; time( ¤tTime ); int elapsed = currentTime - time_started; if(elapsed==0) return 0; return bytes_transferred / elapsed; } double file_transfer::transfer_speed() const { if( type == UPLOAD ) return double(bps()) / 1024.0; else return (recLast10 / 10.0) / 1024.0; } double file_transfer::estimated_time() const { if( type == UPLOAD ) return (total_size - bytes_transferred) / (double)bps(); else return (total_size - bytes_transferred) / (recLast10/10.0); }