1 /* 2 * Bittorrent Client using Qt and libtorrent. 3 * Copyright (C) 2015 Vladimir Golovnev <glassez@yandex.ru> 4 * Copyright (C) 2006 Christophe Dumez <chris@qbittorrent.org> 5 * 6 * This program is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU General Public License 8 * as published by the Free Software Foundation; either version 2 9 * of the License, or (at your option) any later version. 10 * 11 * This program is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU General Public License for more details. 15 * 16 * You should have received a copy of the GNU General Public License 17 * along with this program; if not, write to the Free Software 18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 19 * 20 * In addition, as a special exception, the copyright holders give permission to 21 * link this program with the OpenSSL project's "OpenSSL" library (or with 22 * modified versions of it that use the same license as the "OpenSSL" library), 23 * and distribute the linked executables. You must obey the GNU General Public 24 * License in all respects for all of the code used other than "OpenSSL". If you 25 * modify file(s), you may extend this exception to your version of the file(s), 26 * but you are not obligated to do so. If you do not wish to do so, delete this 27 * exception statement from your version. 28 */ 29 30 #include "torrent.h" 31 32 #include <QHash> 33 34 #include "infohash.h" 35 36 namespace BitTorrent 37 { qHash(const TorrentState key,const uint seed)38 uint qHash(const TorrentState key, const uint seed) 39 { 40 return ::qHash(static_cast<std::underlying_type_t<TorrentState>>(key), seed); 41 } 42 43 // Torrent 44 45 const qreal Torrent::USE_GLOBAL_RATIO = -2; 46 const qreal Torrent::NO_RATIO_LIMIT = -1; 47 48 const int Torrent::USE_GLOBAL_SEEDING_TIME = -2; 49 const int Torrent::NO_SEEDING_TIME_LIMIT = -1; 50 51 const qreal Torrent::MAX_RATIO = 9999; 52 const int Torrent::MAX_SEEDING_TIME = 525600; 53 id() const54 TorrentID Torrent::id() const 55 { 56 return infoHash().toTorrentID(); 57 } 58 isResumed() const59 bool Torrent::isResumed() const 60 { 61 return !isPaused(); 62 } 63 remainingSize() const64 qlonglong Torrent::remainingSize() const 65 { 66 return wantedSize() - completedSize(); 67 } 68 toggleSequentialDownload()69 void Torrent::toggleSequentialDownload() 70 { 71 setSequentialDownload(!isSequentialDownload()); 72 } 73 toggleFirstLastPiecePriority()74 void Torrent::toggleFirstLastPiecePriority() 75 { 76 setFirstLastPiecePriority(!hasFirstLastPiecePriority()); 77 } 78 } 79