macOS remove gradient from PiecesView (#3342)

This commit is contained in:
SweetPPro 2022-06-25 08:03:07 +02:00 committed by GitHub
parent 849a36a30d
commit eefcbe7cb2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 22 additions and 21 deletions

View File

@ -8,6 +8,7 @@
#import "PiecesView.h" #import "PiecesView.h"
#import "Torrent.h" #import "Torrent.h"
#import "InfoWindowController.h" #import "InfoWindowController.h"
#import "NSApplicationAdditions.h"
#define MAX_ACROSS 18 #define MAX_ACROSS 18
#define BETWEEN 1.0 #define BETWEEN 1.0
@ -27,9 +28,6 @@ enum
@property(nonatomic) int8_t* fPieces; @property(nonatomic) int8_t* fPieces;
@property(nonatomic) NSColor* fGreenAvailabilityColor;
@property(nonatomic) NSColor* fBluePieceColor;
@property(nonatomic) NSInteger fNumPieces; @property(nonatomic) NSInteger fNumPieces;
@property(nonatomic) NSInteger fAcross; @property(nonatomic) NSInteger fAcross;
@property(nonatomic) NSInteger fWidth; @property(nonatomic) NSInteger fWidth;
@ -39,16 +37,24 @@ enum
@implementation PiecesView @implementation PiecesView
- (void)drawRect:(NSRect)dirtyRect
{
[[NSColor.controlTextColor colorWithAlphaComponent:0.2] setFill];
NSRectFill(dirtyRect);
[super drawRect:dirtyRect];
}
- (void)awakeFromNib - (void)awakeFromNib
{ {
//store box colors
self.fGreenAvailabilityColor = [NSColor colorWithCalibratedRed:0.0 green:1.0 blue:0.4 alpha:1.0];
self.fBluePieceColor = [NSColor colorWithCalibratedRed:0.0 green:0.4 blue:0.8 alpha:1.0];
//actually draw the box
self.torrent = nil; self.torrent = nil;
} }
- (void)viewDidChangeEffectiveAppearance
{
[self setTorrent:_torrent];
[self updateView];
}
- (void)dealloc - (void)dealloc
{ {
tr_free(_fPieces); tr_free(_fPieces);
@ -71,13 +77,6 @@ enum
} }
NSImage* back = [[NSImage alloc] initWithSize:self.bounds.size]; NSImage* back = [[NSImage alloc] initWithSize:self.bounds.size];
[back lockFocus];
NSGradient* gradient = [[NSGradient alloc] initWithStartingColor:[NSColor colorWithCalibratedWhite:0.0 alpha:0.4]
endingColor:[NSColor colorWithCalibratedWhite:0.2 alpha:0.4]];
[gradient drawInRect:self.bounds angle:90.0];
[back unlockFocus];
self.image = back; self.image = back;
[self setNeedsDisplay]; [self setNeedsDisplay];
@ -123,6 +122,8 @@ enum
NSRect fillRects[self.fNumPieces]; NSRect fillRects[self.fNumPieces];
NSColor* fillColors[self.fNumPieces]; NSColor* fillColors[self.fNumPieces];
NSColor* defaultColor = [NSApp isDarkMode] ? NSColor.blackColor : NSColor.whiteColor;
NSInteger usedCount = 0; NSInteger usedCount = 0;
for (NSInteger index = 0; index < self.fNumPieces; index++) for (NSInteger index = 0; index < self.fNumPieces; index++)
@ -135,12 +136,12 @@ enum
{ {
if (!first && self.fPieces[index] != PIECE_FLASHING) if (!first && self.fPieces[index] != PIECE_FLASHING)
{ {
pieceColor = NSColor.orangeColor; pieceColor = NSColor.systemOrangeColor;
self.fPieces[index] = PIECE_FLASHING; self.fPieces[index] = PIECE_FLASHING;
} }
else else
{ {
pieceColor = self.fBluePieceColor; pieceColor = NSColor.systemBlueColor;
self.fPieces[index] = PIECE_FINISHED; self.fPieces[index] = PIECE_FINISHED;
} }
} }
@ -149,7 +150,7 @@ enum
{ {
if (first || self.fPieces[index] != PIECE_NONE) if (first || self.fPieces[index] != PIECE_NONE)
{ {
pieceColor = NSColor.whiteColor; pieceColor = defaultColor;
self.fPieces[index] = PIECE_NONE; self.fPieces[index] = PIECE_NONE;
} }
} }
@ -157,7 +158,7 @@ enum
{ {
if (first || self.fPieces[index] != PIECE_HIGH_PEERS) if (first || self.fPieces[index] != PIECE_HIGH_PEERS)
{ {
pieceColor = self.fGreenAvailabilityColor; pieceColor = NSColor.systemGreenColor;
self.fPieces[index] = PIECE_HIGH_PEERS; self.fPieces[index] = PIECE_HIGH_PEERS;
} }
} }
@ -165,8 +166,8 @@ enum
{ {
//always redraw "mixed" //always redraw "mixed"
CGFloat percent = showAvailability ? (CGFloat)pieces[index] / HIGH_PEERS : piecesPercent[index]; CGFloat percent = showAvailability ? (CGFloat)pieces[index] / HIGH_PEERS : piecesPercent[index];
NSColor* fullColor = showAvailability ? self.fGreenAvailabilityColor : self.fBluePieceColor; NSColor* fullColor = showAvailability ? NSColor.systemGreenColor : NSColor.systemBlueColor;
pieceColor = [NSColor.whiteColor blendedColorWithFraction:percent ofColor:fullColor]; pieceColor = [defaultColor blendedColorWithFraction:percent ofColor:fullColor];
self.fPieces[index] = PIECE_SOME; self.fPieces[index] = PIECE_SOME;
} }