2022-01-20 18:27:56 +00:00
|
|
|
// This file Copyright © 2006-2022 Transmission authors and contributors.
|
|
|
|
// It may be used under the MIT (SPDX: MIT) license.
|
|
|
|
// License text can be found in the licenses/ folder.
|
2007-09-16 01:02:06 +00:00
|
|
|
|
|
|
|
#import "Badger.h"
|
2007-11-01 03:20:29 +00:00
|
|
|
#import "BadgeView.h"
|
2011-06-19 03:52:54 +00:00
|
|
|
#import "NSStringAdditions.h"
|
|
|
|
#import "Torrent.h"
|
2007-09-16 01:02:06 +00:00
|
|
|
|
2022-02-22 16:04:20 +00:00
|
|
|
@interface Badger ()
|
|
|
|
|
|
|
|
@property(nonatomic, readonly) tr_session* fLib;
|
|
|
|
|
|
|
|
@property(nonatomic, readonly) NSMutableSet* fHashes;
|
|
|
|
|
|
|
|
@end
|
|
|
|
|
2007-09-16 01:02:06 +00:00
|
|
|
@implementation Badger
|
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (instancetype)initWithLib:(tr_session*)lib
|
2007-09-16 01:02:06 +00:00
|
|
|
{
|
|
|
|
if ((self = [super init]))
|
|
|
|
{
|
2022-02-22 16:04:20 +00:00
|
|
|
_fLib = lib;
|
2017-01-24 17:53:16 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
BadgeView* view = [[BadgeView alloc] initWithLib:lib];
|
2021-08-07 07:27:56 +00:00
|
|
|
NSApp.dockTile.contentView = view;
|
2017-01-24 17:53:16 +00:00
|
|
|
|
2022-02-22 16:04:20 +00:00
|
|
|
_fHashes = [[NSMutableSet alloc] init];
|
2007-09-16 01:02:06 +00:00
|
|
|
}
|
2017-01-24 17:53:16 +00:00
|
|
|
|
2007-09-16 01:02:06 +00:00
|
|
|
return self;
|
|
|
|
}
|
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (void)updateBadgeWithDownload:(CGFloat)downloadRate upload:(CGFloat)uploadRate
|
2007-09-16 01:02:06 +00:00
|
|
|
{
|
2021-08-15 09:41:48 +00:00
|
|
|
CGFloat const displayDlRate = [NSUserDefaults.standardUserDefaults boolForKey:@"BadgeDownloadRate"] ? downloadRate : 0.0;
|
|
|
|
CGFloat const displayUlRate = [NSUserDefaults.standardUserDefaults boolForKey:@"BadgeUploadRate"] ? uploadRate : 0.0;
|
2017-01-24 17:53:16 +00:00
|
|
|
|
2009-01-03 06:06:21 +00:00
|
|
|
//only update if the badged values change
|
2021-08-15 09:41:48 +00:00
|
|
|
if ([(BadgeView*)NSApp.dockTile.contentView setRatesWithDownload:displayDlRate upload:displayUlRate])
|
|
|
|
{
|
2021-08-07 07:27:56 +00:00
|
|
|
[NSApp.dockTile display];
|
2021-08-15 09:41:48 +00:00
|
|
|
}
|
2007-09-16 01:02:06 +00:00
|
|
|
}
|
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (void)addCompletedTorrent:(Torrent*)torrent
|
2011-06-19 03:52:54 +00:00
|
|
|
{
|
2012-10-15 02:12:44 +00:00
|
|
|
NSParameterAssert(torrent != nil);
|
2017-01-24 17:53:16 +00:00
|
|
|
|
2022-02-22 16:04:20 +00:00
|
|
|
[self.fHashes addObject:torrent.hashString];
|
2022-11-14 18:30:03 +00:00
|
|
|
NSApp.dockTile.badgeLabel = [NSString localizedStringWithFormat:@"%lu", self.fHashes.count];
|
2011-06-19 03:52:54 +00:00
|
|
|
}
|
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (void)removeTorrent:(Torrent*)torrent
|
2007-09-16 01:02:06 +00:00
|
|
|
{
|
2022-02-22 16:04:20 +00:00
|
|
|
if ([self.fHashes member:torrent.hashString])
|
2011-06-19 03:52:54 +00:00
|
|
|
{
|
2022-02-22 16:04:20 +00:00
|
|
|
[self.fHashes removeObject:torrent.hashString];
|
|
|
|
if (self.fHashes.count > 0)
|
2021-08-15 09:41:48 +00:00
|
|
|
{
|
2022-11-14 18:30:03 +00:00
|
|
|
NSApp.dockTile.badgeLabel = [NSString localizedStringWithFormat:@"%lu", self.fHashes.count];
|
2021-08-15 09:41:48 +00:00
|
|
|
}
|
2011-06-19 03:52:54 +00:00
|
|
|
else
|
2021-08-15 09:41:48 +00:00
|
|
|
{
|
2021-08-07 07:27:56 +00:00
|
|
|
NSApp.dockTile.badgeLabel = @"";
|
2021-08-15 09:41:48 +00:00
|
|
|
}
|
2011-06-19 03:52:54 +00:00
|
|
|
}
|
2007-09-16 01:02:06 +00:00
|
|
|
}
|
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (void)clearCompleted
|
2007-09-16 01:02:06 +00:00
|
|
|
{
|
2022-02-22 16:04:20 +00:00
|
|
|
if (self.fHashes.count > 0)
|
2007-09-16 01:02:06 +00:00
|
|
|
{
|
2022-02-22 16:04:20 +00:00
|
|
|
[self.fHashes removeAllObjects];
|
2021-08-07 07:27:56 +00:00
|
|
|
NSApp.dockTile.badgeLabel = @"";
|
2007-09-16 01:02:06 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@end
|