1/****************************************************************************** 2 * $Id: TorrentGroup.m 13434 2012-08-13 00:52:04Z livings124 $ 3 * 4 * Copyright (c) 2008-2012 Transmission authors and contributors 5 * 6 * Permission is hereby granted, free of charge, to any person obtaining a 7 * copy of this software and associated documentation files (the "Software"), 8 * to deal in the Software without restriction, including without limitation 9 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 10 * and/or sell copies of the Software, and to permit persons to whom the 11 * Software is furnished to do so, subject to the following conditions: 12 * 13 * The above copyright notice and this permission notice shall be included in 14 * all copies or substantial portions of the Software. 15 * 16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 21 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 22 * DEALINGS IN THE SOFTWARE. 23 *****************************************************************************/ 24 25#import "TorrentGroup.h" 26#import "GroupsController.h" 27#import "Torrent.h" 28 29#include "transmission.h" // required by utils.h 30#include "utils.h" // tr_getRatio() 31 32@implementation TorrentGroup 33 34- (id) initWithGroup: (NSInteger) group 35{ 36 if ((self = [super init])) 37 { 38 fGroup = group; 39 fTorrents = [[NSMutableArray alloc] init]; 40 } 41 return self; 42} 43 44- (void) dealloc 45{ 46 [fTorrents release]; 47 [super dealloc]; 48} 49 50- (NSString *) description 51{ 52 return [NSString stringWithFormat: @"Torrent Group %ld: %@", fGroup, fTorrents]; 53} 54 55- (NSInteger) groupIndex 56{ 57 return fGroup; 58} 59 60- (NSInteger) groupOrderValue 61{ 62 return [[GroupsController groups] rowValueForIndex: fGroup]; 63} 64 65- (NSMutableArray *) torrents 66{ 67 return fTorrents; 68} 69 70- (CGFloat) ratio 71{ 72 uint64_t uploaded = 0, downloaded = 0; 73 for (Torrent * torrent in fTorrents) 74 { 75 uploaded += [torrent uploadedTotal]; 76 downloaded += [torrent downloadedTotal]; 77 } 78 79 return tr_getRatio(uploaded, downloaded); 80} 81 82- (CGFloat) uploadRate 83{ 84 CGFloat rate = 0.0; 85 for (Torrent * torrent in fTorrents) 86 rate += [torrent uploadRate]; 87 88 return rate; 89} 90 91- (CGFloat) downloadRate 92{ 93 CGFloat rate = 0.0; 94 for (Torrent * torrent in fTorrents) 95 rate += [torrent downloadRate]; 96 97 return rate; 98} 99 100@end 101