mirror of
https://github.com/transmission/transmission
synced 2024-12-27 01:57:52 +00:00
get progress color gradients when needed instead of at launch
This commit is contained in:
parent
a84f0cd9e6
commit
bccab83fde
1 changed files with 35 additions and 11 deletions
|
@ -47,17 +47,6 @@
|
||||||
{
|
{
|
||||||
fDefaults = [NSUserDefaults standardUserDefaults];
|
fDefaults = [NSUserDefaults standardUserDefaults];
|
||||||
|
|
||||||
fWhiteGradient = [[CTGradient progressWhiteGradient] retain];
|
|
||||||
fGrayGradient = [[CTGradient progressGrayGradient] retain];
|
|
||||||
fLightGrayGradient = [[CTGradient progressLightGrayGradient] retain];
|
|
||||||
fBlueGradient = [[CTGradient progressBlueGradient] retain];
|
|
||||||
fDarkBlueGradient = [[CTGradient progressDarkBlueGradient] retain];
|
|
||||||
fGreenGradient = [[CTGradient progressGreenGradient] retain];
|
|
||||||
fLightGreenGradient = [[CTGradient progressLightGreenGradient] retain];
|
|
||||||
fDarkGreenGradient = [[CTGradient progressDarkGreenGradient] retain];
|
|
||||||
fYellowGradient = [[CTGradient progressYellowGradient] retain];
|
|
||||||
fTransparentGradient = [[CTGradient progressTransparentGradient] retain];
|
|
||||||
|
|
||||||
NSMutableParagraphStyle * paragraphStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
|
NSMutableParagraphStyle * paragraphStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
|
||||||
[paragraphStyle setLineBreakMode: NSLineBreakByTruncatingTail];
|
[paragraphStyle setLineBreakMode: NSLineBreakByTruncatingTail];
|
||||||
|
|
||||||
|
@ -101,6 +90,8 @@
|
||||||
float left = INVALID;
|
float left = INVALID;
|
||||||
if (progress < 1.0)
|
if (progress < 1.0)
|
||||||
{
|
{
|
||||||
|
if (!fWhiteGradient)
|
||||||
|
fWhiteGradient = [[CTGradient progressWhiteGradient] retain];
|
||||||
[fWhiteGradient fillRect: barBounds angle: -90];
|
[fWhiteGradient fillRect: barBounds angle: -90];
|
||||||
|
|
||||||
left = [[info objectForKey: @"Left"] floatValue];
|
left = [[info objectForKey: @"Left"] floatValue];
|
||||||
|
@ -110,6 +101,8 @@
|
||||||
blankBounds.origin.x += width * (progress + left);
|
blankBounds.origin.x += width * (progress + left);
|
||||||
blankBounds.size.width = width * ((1.0 - progress) - left);
|
blankBounds.size.width = width * ((1.0 - progress) - left);
|
||||||
|
|
||||||
|
if (!fLightGrayGradient)
|
||||||
|
fLightGrayGradient = [[CTGradient progressLightGrayGradient] retain];
|
||||||
[fLightGrayGradient fillRect: blankBounds angle: -90];
|
[fLightGrayGradient fillRect: blankBounds angle: -90];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -117,19 +110,34 @@
|
||||||
if ([[info objectForKey: @"Active"] boolValue])
|
if ([[info objectForKey: @"Active"] boolValue])
|
||||||
{
|
{
|
||||||
if ([[info objectForKey: @"Checking"] boolValue])
|
if ([[info objectForKey: @"Checking"] boolValue])
|
||||||
|
{
|
||||||
|
if (!fYellowGradient)
|
||||||
|
fYellowGradient = [[CTGradient progressYellowGradient] retain];
|
||||||
[fYellowGradient fillRect: completeBounds angle: -90];
|
[fYellowGradient fillRect: completeBounds angle: -90];
|
||||||
|
}
|
||||||
else if ([[info objectForKey: @"Seeding"] boolValue])
|
else if ([[info objectForKey: @"Seeding"] boolValue])
|
||||||
{
|
{
|
||||||
NSRect ratioBounds = completeBounds;
|
NSRect ratioBounds = completeBounds;
|
||||||
ratioBounds.size.width *= [[info objectForKey: @"ProgressStopRatio"] floatValue];
|
ratioBounds.size.width *= [[info objectForKey: @"ProgressStopRatio"] floatValue];
|
||||||
|
|
||||||
if (ratioBounds.size.width < completeBounds.size.width)
|
if (ratioBounds.size.width < completeBounds.size.width)
|
||||||
|
{
|
||||||
|
if (!fLightGreenGradient)
|
||||||
|
fLightGreenGradient = [[CTGradient progressLightGreenGradient] retain];
|
||||||
[fLightGreenGradient fillRect: completeBounds angle: -90];
|
[fLightGreenGradient fillRect: completeBounds angle: -90];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!fGreenGradient)
|
||||||
|
fGreenGradient = [[CTGradient progressGreenGradient] retain];
|
||||||
[fGreenGradient fillRect: ratioBounds angle: -90];
|
[fGreenGradient fillRect: ratioBounds angle: -90];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
if (!fBlueGradient)
|
||||||
|
fBlueGradient = [[CTGradient progressBlueGradient] retain];
|
||||||
[fBlueGradient fillRect: completeBounds angle: -90];
|
[fBlueGradient fillRect: completeBounds angle: -90];
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ([[info objectForKey: @"Waiting"] boolValue])
|
if ([[info objectForKey: @"Waiting"] boolValue])
|
||||||
|
@ -138,13 +146,25 @@
|
||||||
left = [[info objectForKey: @"Left"] floatValue];
|
left = [[info objectForKey: @"Left"] floatValue];
|
||||||
|
|
||||||
if (left <= 0.0)
|
if (left <= 0.0)
|
||||||
|
{
|
||||||
|
if (!fDarkGreenGradient)
|
||||||
|
fDarkGreenGradient = [[CTGradient progressDarkGreenGradient] retain];
|
||||||
[fDarkGreenGradient fillRect: completeBounds angle: -90];
|
[fDarkGreenGradient fillRect: completeBounds angle: -90];
|
||||||
else
|
|
||||||
[fDarkBlueGradient fillRect: completeBounds angle: -90];
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
if (!fDarkBlueGradient)
|
||||||
|
fDarkBlueGradient = [[CTGradient progressDarkBlueGradient] retain];
|
||||||
|
[fDarkBlueGradient fillRect: completeBounds angle: -90];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!fGrayGradient)
|
||||||
|
fGrayGradient = [[CTGradient progressGrayGradient] retain];
|
||||||
[fGrayGradient fillRect: completeBounds angle: -90];
|
[fGrayGradient fillRect: completeBounds angle: -90];
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
[[NSColor colorWithDeviceWhite: 0.0 alpha: 0.2] set];
|
[[NSColor colorWithDeviceWhite: 0.0 alpha: 0.2] set];
|
||||||
[NSBezierPath strokeRect: NSInsetRect(barBounds, 0.5, 0.5)];
|
[NSBezierPath strokeRect: NSInsetRect(barBounds, 0.5, 0.5)];
|
||||||
|
@ -164,6 +184,10 @@
|
||||||
barBounds = NSMakeRect(point.x, point.y, width, BAR_HEIGHT);
|
barBounds = NSMakeRect(point.x, point.y, width, BAR_HEIGHT);
|
||||||
else
|
else
|
||||||
barBounds = NSMakeRect(point.x, point.y - BAR_HEIGHT, width, BAR_HEIGHT);
|
barBounds = NSMakeRect(point.x, point.y - BAR_HEIGHT, width, BAR_HEIGHT);
|
||||||
|
|
||||||
|
if (!fTransparentGradient)
|
||||||
|
fTransparentGradient = [[CTGradient progressTransparentGradient] retain];
|
||||||
|
|
||||||
[fTransparentGradient fillRect: barBounds angle: -90];
|
[fTransparentGradient fillRect: barBounds angle: -90];
|
||||||
[[NSColor colorWithDeviceWhite: 0.0 alpha: 0.2] set];
|
[[NSColor colorWithDeviceWhite: 0.0 alpha: 0.2] set];
|
||||||
[NSBezierPath strokeRect: NSInsetRect(barBounds, 0.5, 0.5)];
|
[NSBezierPath strokeRect: NSInsetRect(barBounds, 0.5, 0.5)];
|
||||||
|
|
Loading…
Reference in a new issue