blob: 13cf0d7c3fab2cc7239d0b13edc3a30676528fac [file] [log] [blame]
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#import "chrome/browser/ui/cocoa/toolbar/app_toolbar_button.h"
#include "base/macros.h"
#import "chrome/browser/ui/cocoa/themed_window.h"
#import "chrome/browser/ui/cocoa/view_id_util.h"
#include "ui/gfx/color_palette.h"
class AppMenuButtonIconPainterDelegateMac :
public AppMenuIconPainter::Delegate {
public:
explicit AppMenuButtonIconPainterDelegateMac(NSButton* button) :
button_(button) {}
~AppMenuButtonIconPainterDelegateMac() override {}
void ScheduleAppMenuIconPaint() override {
[button_ setNeedsDisplay:YES];
}
private:
NSButton* button_;
DISALLOW_COPY_AND_ASSIGN(AppMenuButtonIconPainterDelegateMac);
};
@interface AppToolbarButton ()
- (void)commonInit;
@end
@implementation AppToolbarButton
- (instancetype)initWithFrame:(NSRect)frame {
if ((self = [super initWithFrame:frame])) {
[self commonInit];
}
return self;
}
- (void)awakeFromNib {
[self commonInit];
}
- (void)commonInit {
view_id_util::SetID(self, VIEW_ID_APP_MENU);
delegate_.reset(new AppMenuButtonIconPainterDelegateMac(self));
severity_ = AppMenuIconPainter::Severity::SEVERITY_NONE;
}
- (gfx::VectorIconId)vectorIconId {
return gfx::VectorIconId::BROWSER_TOOLS;
}
- (SkColor)vectorIconColor:(BOOL)themeIsDark {
switch (severity_) {
case AppMenuIconPainter::Severity::SEVERITY_NONE:
case AppMenuIconPainter::Severity::SEVERITY_LOW:
return themeIsDark ? SK_ColorWHITE : gfx::kChromeIconGrey;
break;
case AppMenuIconPainter::Severity::SEVERITY_MEDIUM:
return themeIsDark ? gfx::kGoogleYellow300 : gfx::kGoogleYellow700;
break;
case AppMenuIconPainter::Severity::SEVERITY_HIGH:
return themeIsDark ? gfx::kGoogleRed300 : gfx::kGoogleRed700;
break;
default:
break;
}
}
- (void)setSeverity:(AppMenuIconPainter::Severity)severity
shouldAnimate:(BOOL)shouldAnimate {
if (severity != severity_) {
severity_ = severity;
// Update the button state images with the new severity color.
[self resetButtonStateImages];
}
}
@end