mirror of
https://github.com/transmission/transmission.git
synced 2025-12-24 20:35:36 +00:00
refactor: autogenerate the macOS client's Message Log dots (#3224)
* Replaces DotFlat png with generated icons * code review: udating popup item icons * code review: increasing inset
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
|
||||
#import "MessageWindowController.h"
|
||||
#import "Controller.h"
|
||||
#import "NSApplicationAdditions.h"
|
||||
#import "NSImageAdditions.h"
|
||||
#import "NSMutableArrayAdditions.h"
|
||||
#import "NSStringAdditions.h"
|
||||
|
||||
@@ -75,6 +75,11 @@
|
||||
[self.fLevelButton itemAtIndex:LEVEL_INFO].title = NSLocalizedString(@"Info", "Message window -> level string");
|
||||
[self.fLevelButton itemAtIndex:LEVEL_DEBUG].title = NSLocalizedString(@"Debug", "Message window -> level string");
|
||||
[self.fLevelButton itemAtIndex:LEVEL_TRACE].title = NSLocalizedString(@"Trace", "Message window -> level string");
|
||||
[self.fLevelButton itemAtIndex:LEVEL_ERROR].image = [self.class iconForLevel:TR_LOG_ERROR];
|
||||
[self.fLevelButton itemAtIndex:LEVEL_WARN].image = [self.class iconForLevel:TR_LOG_WARN];
|
||||
[self.fLevelButton itemAtIndex:LEVEL_INFO].image = [self.class iconForLevel:TR_LOG_INFO];
|
||||
[self.fLevelButton itemAtIndex:LEVEL_DEBUG].image = [self.class iconForLevel:TR_LOG_DEBUG];
|
||||
[self.fLevelButton itemAtIndex:LEVEL_TRACE].image = [self.class iconForLevel:TR_LOG_TRACE];
|
||||
|
||||
CGFloat const levelButtonOldWidth = NSWidth(self.fLevelButton.frame);
|
||||
[self.fLevelButton sizeToFit];
|
||||
@@ -182,6 +187,56 @@
|
||||
[self updateLog:nil];
|
||||
}
|
||||
|
||||
+ (NSImage*)iconForLevel:(NSInteger)level
|
||||
{
|
||||
NSColor* color;
|
||||
switch (level)
|
||||
{
|
||||
case TR_LOG_CRITICAL:
|
||||
case TR_LOG_ERROR:
|
||||
color = NSColor.systemRedColor;
|
||||
break;
|
||||
|
||||
case TR_LOG_WARN:
|
||||
color = NSColor.systemOrangeColor;
|
||||
break;
|
||||
|
||||
case TR_LOG_INFO:
|
||||
color = NSColor.systemGreenColor;
|
||||
break;
|
||||
|
||||
case TR_LOG_DEBUG:
|
||||
if (@available(macOS 10.12, *))
|
||||
{
|
||||
color = NSColor.systemTealColor;
|
||||
}
|
||||
else
|
||||
{
|
||||
color = NSColor.cyanColor;
|
||||
}
|
||||
break;
|
||||
|
||||
case TR_LOG_TRACE:
|
||||
color = NSColor.systemPurpleColor;
|
||||
break;
|
||||
|
||||
default:
|
||||
NSAssert1(NO, @"Unknown message log level: %ld", level);
|
||||
return nil;
|
||||
}
|
||||
|
||||
// cache dictionary
|
||||
static NSMutableDictionary<NSColor*, NSImage*>* icons = [NSMutableDictionary dictionary];
|
||||
NSImage* icon;
|
||||
if ((icon = icons[color]))
|
||||
{
|
||||
return icon;
|
||||
}
|
||||
icon = [NSImage discIconWithColor:color insetFactor:0.5];
|
||||
icons[color] = icon;
|
||||
return icon;
|
||||
}
|
||||
|
||||
- (void)updateLog:(NSTimer*)timer
|
||||
{
|
||||
tr_log_message* messages;
|
||||
@@ -269,28 +324,7 @@
|
||||
else if ([ident isEqualToString:@"Level"])
|
||||
{
|
||||
NSInteger const level = [message[@"Level"] integerValue];
|
||||
switch (level)
|
||||
{
|
||||
case TR_LOG_CRITICAL:
|
||||
case TR_LOG_ERROR:
|
||||
return [NSImage imageNamed:@"RedDotFlat"];
|
||||
|
||||
case TR_LOG_WARN:
|
||||
return [NSImage imageNamed:@"OrangeDotFlat"];
|
||||
|
||||
case TR_LOG_INFO:
|
||||
return [NSImage imageNamed:@"GreenDotFlat"];
|
||||
|
||||
case TR_LOG_DEBUG:
|
||||
return [NSImage imageNamed:@"BlueDotFlat"];
|
||||
|
||||
case TR_LOG_TRACE:
|
||||
return [NSImage imageNamed:@"PurpleDotFlat"];
|
||||
|
||||
default:
|
||||
NSAssert1(NO, @"Unknown message log level: %ld", level);
|
||||
return nil;
|
||||
}
|
||||
return [self.class iconForLevel:level];
|
||||
}
|
||||
else if ([ident isEqualToString:@"Name"])
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user