mirror of
https://github.com/transmission/transmission
synced 2025-02-15 02:44:42 +00:00
dock badging should be a bit more accurate
This commit is contained in:
parent
b11b48e804
commit
d48f684f63
2 changed files with 40 additions and 65 deletions
|
@ -29,15 +29,10 @@
|
||||||
|
|
||||||
@interface Badger : NSObject {
|
@interface Badger : NSObject {
|
||||||
|
|
||||||
NSImage * fDockIcon, * fBadgedDockIcon,
|
NSImage * fDockIcon, * fBadge, * fUploadBadge, * fDownloadBadge;
|
||||||
* fBadge, * fUploadBadge, * fDownloadBadge;
|
|
||||||
|
|
||||||
NSDictionary * fAttributes;
|
NSDictionary * fAttributes;
|
||||||
|
BOOL fNonDefault;
|
||||||
NSLock * fLock;
|
|
||||||
|
|
||||||
int fCompleted;
|
|
||||||
BOOL fSpeedShown;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void) updateBadgeWithCompleted: (int) completed uploadRate: (float) uploadRate downloadRate: (float) downloadRate;
|
- (void) updateBadgeWithCompleted: (int) completed uploadRate: (float) uploadRate downloadRate: (float) downloadRate;
|
||||||
|
|
|
@ -39,7 +39,6 @@
|
||||||
{
|
{
|
||||||
fBadge = [NSImage imageNamed: @"Badge"];
|
fBadge = [NSImage imageNamed: @"Badge"];
|
||||||
fDockIcon = [[NSApp applicationIconImage] copy];
|
fDockIcon = [[NSApp applicationIconImage] copy];
|
||||||
fBadgedDockIcon = [fDockIcon copy];
|
|
||||||
fUploadBadge = [NSImage imageNamed: @"UploadBadge"];
|
fUploadBadge = [NSImage imageNamed: @"UploadBadge"];
|
||||||
fDownloadBadge = [NSImage imageNamed: @"DownloadBadge"];
|
fDownloadBadge = [NSImage imageNamed: @"DownloadBadge"];
|
||||||
|
|
||||||
|
@ -56,10 +55,7 @@
|
||||||
|
|
||||||
[stringShadow release];
|
[stringShadow release];
|
||||||
|
|
||||||
fLock = [[NSLock alloc] init];
|
fNonDefault = NO;
|
||||||
|
|
||||||
fCompleted = 0;
|
|
||||||
fSpeedShown = NO;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return self;
|
return self;
|
||||||
|
@ -68,28 +64,22 @@
|
||||||
- (void) dealloc
|
- (void) dealloc
|
||||||
{
|
{
|
||||||
[fDockIcon release];
|
[fDockIcon release];
|
||||||
[fBadgedDockIcon release];
|
|
||||||
[fAttributes release];
|
[fAttributes release];
|
||||||
[fLock release];
|
|
||||||
|
|
||||||
[super dealloc];
|
[super dealloc];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void) updateBadgeWithCompleted: (int) completed uploadRate: (float) uploadRate downloadRate: (float) downloadRate
|
- (void) updateBadgeWithCompleted: (int) completed uploadRate: (float) uploadRate downloadRate: (float) downloadRate
|
||||||
{
|
{
|
||||||
NSImage * dockIcon = nil;
|
|
||||||
NSSize iconSize = [fDockIcon size];
|
NSSize iconSize = [fDockIcon size];
|
||||||
|
|
||||||
[fLock lock]; //acquire lock to ensure completed badge is accurate
|
NSImage * dockIcon = nil;
|
||||||
|
|
||||||
//set completed badge
|
|
||||||
if (fCompleted != completed)
|
|
||||||
{
|
|
||||||
dockIcon = [fDockIcon copy];
|
|
||||||
|
|
||||||
//set completed badge to top right
|
//set completed badge to top right
|
||||||
if (completed > 0)
|
if (completed > 0)
|
||||||
{
|
{
|
||||||
|
dockIcon = [fDockIcon copy];
|
||||||
|
|
||||||
NSRect badgeRect;
|
NSRect badgeRect;
|
||||||
badgeRect.size = [fBadge size];
|
badgeRect.size = [fBadge size];
|
||||||
badgeRect.origin.x = iconSize.width - badgeRect.size.width;
|
badgeRect.origin.x = iconSize.width - badgeRect.size.width;
|
||||||
|
@ -111,14 +101,6 @@
|
||||||
[dockIcon unlockFocus];
|
[dockIcon unlockFocus];
|
||||||
}
|
}
|
||||||
|
|
||||||
[fBadgedDockIcon release];
|
|
||||||
fBadgedDockIcon = [dockIcon copy];
|
|
||||||
|
|
||||||
fCompleted = completed;
|
|
||||||
}
|
|
||||||
|
|
||||||
[fLock unlock];
|
|
||||||
|
|
||||||
//set upload and download rate badges
|
//set upload and download rate badges
|
||||||
NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
|
NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
|
||||||
NSString * uploadRateString = uploadRate >= 0.1 && [defaults boolForKey: @"BadgeUploadRate"]
|
NSString * uploadRateString = uploadRate >= 0.1 && [defaults boolForKey: @"BadgeUploadRate"]
|
||||||
|
@ -129,6 +111,9 @@
|
||||||
BOOL speedShown = uploadRateString || downloadRateString;
|
BOOL speedShown = uploadRateString || downloadRateString;
|
||||||
if (speedShown)
|
if (speedShown)
|
||||||
{
|
{
|
||||||
|
if (!dockIcon)
|
||||||
|
dockIcon = [fDockIcon copy];
|
||||||
|
|
||||||
NSRect badgeRect;
|
NSRect badgeRect;
|
||||||
badgeRect.size = [fUploadBadge size];
|
badgeRect.size = [fUploadBadge size];
|
||||||
badgeRect.origin = NSZeroPoint;
|
badgeRect.origin = NSZeroPoint;
|
||||||
|
@ -139,9 +124,6 @@
|
||||||
stringRect.size.height -= badgeBottomExtra;
|
stringRect.size.height -= badgeBottomExtra;
|
||||||
stringRect.origin.y += badgeBottomExtra;
|
stringRect.origin.y += badgeBottomExtra;
|
||||||
|
|
||||||
if (!dockIcon)
|
|
||||||
dockIcon = [fBadgedDockIcon copy];
|
|
||||||
|
|
||||||
[dockIcon lockFocus];
|
[dockIcon lockFocus];
|
||||||
|
|
||||||
if (uploadRateString)
|
if (uploadRateString)
|
||||||
|
@ -173,27 +155,25 @@
|
||||||
[dockIcon unlockFocus];
|
[dockIcon unlockFocus];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dockIcon || fSpeedShown)
|
if (fNonDefault || dockIcon)
|
||||||
{
|
{
|
||||||
if (!dockIcon)
|
if (!dockIcon)
|
||||||
dockIcon = [fBadgedDockIcon copy];
|
{
|
||||||
|
fNonDefault = NO;
|
||||||
|
dockIcon = [fDockIcon retain];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
fNonDefault = YES;
|
||||||
|
|
||||||
[NSApp setApplicationIconImage: dockIcon];
|
[NSApp setApplicationIconImage: dockIcon];
|
||||||
[dockIcon release];
|
[dockIcon release];
|
||||||
}
|
}
|
||||||
|
|
||||||
fSpeedShown = speedShown;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void) clearBadge
|
- (void) clearBadge
|
||||||
{
|
{
|
||||||
[fBadgedDockIcon release];
|
|
||||||
fBadgedDockIcon = [fDockIcon copy];
|
|
||||||
|
|
||||||
[NSApp setApplicationIconImage: fDockIcon];
|
[NSApp setApplicationIconImage: fDockIcon];
|
||||||
|
fNonDefault = NO;
|
||||||
fCompleted = 0;
|
|
||||||
fSpeedShown = NO;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
Loading…
Reference in a new issue