Index: chrome/browser/ui/views/toolbar/wrench_toolbar_button.cc |
diff --git a/chrome/browser/ui/views/toolbar/wrench_toolbar_button.cc b/chrome/browser/ui/views/toolbar/wrench_toolbar_button.cc |
index 5ee206ed82127c05d72723e9c0072f08e10560ae..647ab5af03501ea9c6052c8121ae6185ba5a0cb9 100644 |
--- a/chrome/browser/ui/views/toolbar/wrench_toolbar_button.cc |
+++ b/chrome/browser/ui/views/toolbar/wrench_toolbar_button.cc |
@@ -8,6 +8,7 @@ |
#include "base/single_thread_task_runner.h" |
#include "base/thread_task_runner_handle.h" |
#include "base/time/time.h" |
+#include "chrome/browser/themes/theme_properties.h" |
#include "chrome/browser/ui/browser.h" |
#include "chrome/browser/ui/toolbar/wrench_menu_model.h" |
#include "chrome/browser/ui/views/extensions/browser_action_drag_data.h" |
@@ -19,6 +20,9 @@ |
#include "ui/base/resource/material_design/material_design_controller.h" |
#include "ui/base/resource/resource_bundle.h" |
#include "ui/base/theme_provider.h" |
+#include "ui/gfx/color_palette.h" |
+#include "ui/gfx/paint_vector_icon.h" |
+#include "ui/gfx/vector_icons_public.h" |
#include "ui/keyboard/keyboard_controller.h" |
#include "ui/views/controls/button/label_button_border.h" |
#include "ui/views/controls/menu/menu_listener.h" |
@@ -30,7 +34,7 @@ bool WrenchToolbarButton::g_open_app_immediately_for_testing = false; |
WrenchToolbarButton::WrenchToolbarButton(ToolbarView* toolbar_view) |
: views::MenuButton(NULL, base::string16(), toolbar_view, false), |
- wrench_icon_painter_(nullptr), |
+ severity_(WrenchIconPainter::SEVERITY_NONE), |
toolbar_view_(toolbar_view), |
allow_extension_dragging_( |
extensions::FeatureSwitch::extension_action_redesign() |
@@ -45,8 +49,11 @@ WrenchToolbarButton::~WrenchToolbarButton() { |
void WrenchToolbarButton::SetSeverity(WrenchIconPainter::Severity severity, |
bool animate) { |
- if (ui::MaterialDesignController::IsModeMaterial()) |
+ if (ui::MaterialDesignController::IsModeMaterial()) { |
+ severity_ = severity; |
+ UpdateIcon(); |
return; |
+ } |
wrench_icon_painter_->SetSeverity(severity, animate); |
SchedulePaint(); |
@@ -113,6 +120,31 @@ void WrenchToolbarButton::ScheduleWrenchIconPaint() { |
SchedulePaint(); |
} |
+void WrenchToolbarButton::UpdateIcon() { |
+ DCHECK(ui::MaterialDesignController::IsModeMaterial()); |
+ SkColor color = SK_ColorRED; |
+ switch (severity_) { |
+ case WrenchIconPainter::SEVERITY_NONE: |
+ color = GetThemeProvider()->GetColor( |
+ ThemeProperties::COLOR_TOOLBAR_BUTTON_ICON); |
+ break; |
+ case WrenchIconPainter::SEVERITY_LOW: |
+ color = gfx::kGoogleGreen700; |
+ break; |
+ case WrenchIconPainter::SEVERITY_MEDIUM: |
+ color = gfx::kGoogleYellow700; |
+ break; |
+ case WrenchIconPainter::SEVERITY_HIGH: |
+ color = gfx::kGoogleRed700; |
+ break; |
+ } |
+ |
+ const int kButtonSize = 16; |
Evan Stade
2015/10/07 21:59:17
(in the future this should move to layout_constant
sky
2015/10/07 23:41:52
How about a TODO then?
Evan Stade
2015/10/08 00:03:31
Done.
|
+ SetImage(views::Button::STATE_NORMAL, |
+ gfx::CreateVectorIcon(gfx::VectorIconId::BROWSER_TOOLS, kButtonSize, |
+ color)); |
+} |
+ |
const char* WrenchToolbarButton::GetClassName() const { |
return "WrenchToolbarButton"; |
} |