mirror of
https://github.com/transmission/transmission
synced 2025-03-05 11:08:04 +00:00
#4241 Update dock badge count after removing download through web interface
This commit is contained in:
parent
62f594267a
commit
4d5ab8a4c5
4 changed files with 33 additions and 11 deletions
|
@ -25,17 +25,20 @@
|
||||||
#import <Cocoa/Cocoa.h>
|
#import <Cocoa/Cocoa.h>
|
||||||
#import <transmission.h>
|
#import <transmission.h>
|
||||||
|
|
||||||
|
@class Torrent;
|
||||||
|
|
||||||
@interface Badger : NSObject
|
@interface Badger : NSObject
|
||||||
{
|
{
|
||||||
tr_session * fLib;
|
tr_session * fLib;
|
||||||
|
|
||||||
NSUInteger fCompleted;
|
NSMutableSet * fHashes;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (id) initWithLib: (tr_session *) lib;
|
- (id) initWithLib: (tr_session *) lib;
|
||||||
|
|
||||||
- (void) updateBadgeWithDownload: (CGFloat) downloadRate upload: (CGFloat) uploadRate;
|
- (void) updateBadgeWithDownload: (CGFloat) downloadRate upload: (CGFloat) uploadRate;
|
||||||
- (void) incrementCompleted;
|
- (void) addCompletedTorrent: (Torrent *) torrent;
|
||||||
|
- (void) removeTorrent: (Torrent *) torrent;
|
||||||
- (void) clearCompleted;
|
- (void) clearCompleted;
|
||||||
- (void) setQuitting;
|
- (void) setQuitting;
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,8 @@
|
||||||
|
|
||||||
#import "Badger.h"
|
#import "Badger.h"
|
||||||
#import "BadgeView.h"
|
#import "BadgeView.h"
|
||||||
|
#import "NSStringAdditions.h"
|
||||||
|
#import "Torrent.h"
|
||||||
|
|
||||||
@implementation Badger
|
@implementation Badger
|
||||||
|
|
||||||
|
@ -33,11 +35,11 @@
|
||||||
{
|
{
|
||||||
fLib = lib;
|
fLib = lib;
|
||||||
|
|
||||||
fCompleted = 0;
|
|
||||||
|
|
||||||
BadgeView * view = [[BadgeView alloc] initWithLib: lib];
|
BadgeView * view = [[BadgeView alloc] initWithLib: lib];
|
||||||
[[NSApp dockTile] setContentView: view];
|
[[NSApp dockTile] setContentView: view];
|
||||||
[view release];
|
[view release];
|
||||||
|
|
||||||
|
fHashes = [[NSMutableSet alloc] init];
|
||||||
}
|
}
|
||||||
|
|
||||||
return self;
|
return self;
|
||||||
|
@ -47,6 +49,8 @@
|
||||||
{
|
{
|
||||||
[[NSNotificationCenter defaultCenter] removeObserver: self];
|
[[NSNotificationCenter defaultCenter] removeObserver: self];
|
||||||
|
|
||||||
|
[fHashes release];
|
||||||
|
|
||||||
[super dealloc];
|
[super dealloc];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -62,17 +66,29 @@
|
||||||
[[NSApp dockTile] display];
|
[[NSApp dockTile] display];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void) incrementCompleted
|
- (void) addCompletedTorrent: (Torrent *) torrent
|
||||||
{
|
{
|
||||||
fCompleted++;
|
[fHashes addObject: [torrent hashString]];
|
||||||
[[NSApp dockTile] setBadgeLabel: [NSString stringWithFormat: @"%d", fCompleted]];
|
[[NSApp dockTile] setBadgeLabel: [NSString formattedUInteger: [fHashes count]]];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void) removeTorrent: (Torrent *) torrent
|
||||||
|
{
|
||||||
|
if ([fHashes count] > 0)
|
||||||
|
{
|
||||||
|
[fHashes removeObject: [torrent hashString]];
|
||||||
|
if ([fHashes count] > 0)
|
||||||
|
[[NSApp dockTile] setBadgeLabel: [NSString formattedUInteger: [fHashes count]]];
|
||||||
|
else
|
||||||
|
[[NSApp dockTile] setBadgeLabel: @""];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void) clearCompleted
|
- (void) clearCompleted
|
||||||
{
|
{
|
||||||
if (fCompleted != 0)
|
if ([fHashes count] > 0)
|
||||||
{
|
{
|
||||||
fCompleted = 0;
|
[fHashes removeAllObjects];
|
||||||
[[NSApp dockTile] setBadgeLabel: @""];
|
[[NSApp dockTile] setBadgeLabel: @""];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1341,6 +1341,9 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
|
||||||
//let's expand all groups that have removed items - they either don't exist anymore, are already expanded, or are collapsed (rpc)
|
//let's expand all groups that have removed items - they either don't exist anymore, are already expanded, or are collapsed (rpc)
|
||||||
[fTableView removeCollapsedGroup: [torrent groupValue]];
|
[fTableView removeCollapsedGroup: [torrent groupValue]];
|
||||||
|
|
||||||
|
//we can't assume the window is active - RPC removal, for example
|
||||||
|
[fBadger removeTorrent: torrent];
|
||||||
|
|
||||||
[torrent closeRemoveTorrent: deleteData];
|
[torrent closeRemoveTorrent: deleteData];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1794,7 +1797,7 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
|
||||||
iconData: nil priority: 0 isSticky: NO clickContext: clickContext];
|
iconData: nil priority: 0 isSticky: NO clickContext: clickContext];
|
||||||
|
|
||||||
if (![fWindow isMainWindow])
|
if (![fWindow isMainWindow])
|
||||||
[fBadger incrementCompleted];
|
[fBadger addCompletedTorrent: torrent];
|
||||||
|
|
||||||
//bounce download stack
|
//bounce download stack
|
||||||
[[NSDistributedNotificationCenter defaultCenter] postNotificationName: @"com.apple.DownloadFileFinished"
|
[[NSDistributedNotificationCenter defaultCenter] postNotificationName: @"com.apple.DownloadFileFinished"
|
||||||
|
|
Loading…
Add table
Reference in a new issue