Index: chrome/browser/chromeos/status/status_area_button.cc |
diff --git a/chrome/browser/chromeos/status/status_area_button.cc b/chrome/browser/chromeos/status/status_area_button.cc |
index 3abf6dd864a52267233ac0ef338a69c145605a5b..69498966a0bec3d930059319584bdc197cb127a9 100644 |
--- a/chrome/browser/chromeos/status/status_area_button.cc |
+++ b/chrome/browser/chromeos/status/status_area_button.cc |
@@ -1,10 +1,12 @@ |
-// Copyright (c) 2010 The Chromium Authors. All rights reserved. |
+// Copyright (c) 2011 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. |
#include "chrome/browser/chromeos/status/status_area_button.h" |
+#include "content/common/notification_service.h" |
#include "grit/theme_resources.h" |
+#include "ui/base/resource/resource_bundle.h" |
#include "ui/gfx/canvas.h" |
#include "ui/gfx/skbitmap_operations.h" |
#include "views/border.h" |
@@ -12,22 +14,40 @@ |
namespace chromeos { |
-// A 0.7 black to decorate status text. Same color is used for icon borders. |
-static const SkColor kStatusTextHaloColor = SkColorSetARGB(0xB3, 0, 0, 0); |
+// Colors for different text styles. |
+static const SkColor kWhitePlainTextColor = 0x99ffffff; |
+static const SkColor kWhiteHaloedTextColor = 0xb3ffffff; |
+static const SkColor kWhiteHaloedHaloColor = 0xb3000000; |
+static const SkColor kGrayEmbossedTextColor = 0xff4c4c4c; |
+static const SkColor kGrayEmbossedShadowColor = 0x80ffffff; |
+ |
+// Status area font is bigger. |
+const int kFontSizeDelta = 1; |
//////////////////////////////////////////////////////////////////////////////// |
// StatusAreaButton |
-StatusAreaButton::StatusAreaButton(views::ViewMenuDelegate* menu_delegate) |
- : MenuButton(NULL, std::wstring(), menu_delegate, false), |
- use_menu_button_paint_(false), active_(true) { |
+StatusAreaButton::StatusAreaButton( |
+ StatusAreaHost* host, views::ViewMenuDelegate* menu_delegate) |
+ : MenuButton(NULL, std::wstring(), |
+ menu_delegate, false), |
sky
2011/05/02 14:26:27
indent to make clear part of MenuButton.
|
+ use_menu_button_paint_(false), |
+ active_(true), |
+ host_(host) { |
+ set_border(NULL); |
+ set_use_menu_button_paint(true); |
+ gfx::Font font = |
+ ResourceBundle::GetSharedInstance().GetFont(ResourceBundle::BaseFont); |
+ font = font.DeriveFont(3, gfx::Font::BOLD); |
+ SetFont(font); |
+ SetShowMultipleIconStates(false); |
+ set_alignment(TextButton::ALIGN_CENTER); |
set_border(NULL); |
// Use an offset that is top aligned with toolbar. |
- set_menu_offset(0, 2); |
+ set_menu_offset(0, 4); |
- // Use a halo for status text as the icons. |
- SetTextHaloColor(kStatusTextHaloColor); |
+ UpdateTextStyle(); |
} |
void StatusAreaButton::PaintButton(gfx::Canvas* canvas, PaintButtonMode mode) { |
@@ -45,6 +65,25 @@ void StatusAreaButton::PaintButton(gfx::Canvas* canvas, PaintButtonMode mode) { |
} |
} |
+void StatusAreaButton::SetText(const std::wstring& text) { |
+ // TextButtons normally remember the max text size, so the button's preferred |
+ // size will always be as large as the largest text ever put in it. |
+ // We clear that max text size, so we can adjust the size to fit the text. |
+ // The order is important. ClearMaxTextSize sets the size to that of the |
+ // current text, so it must be called after SetText. |
+ views::MenuButton::SetText(text); |
+ ClearMaxTextSize(); |
+ PreferredSizeChanged(); |
+} |
+ |
+bool StatusAreaButton::Activate() { |
+ if (active_) { |
+ return views::MenuButton::Activate(); |
+ } else { |
+ return true; |
+ } |
+} |
+ |
gfx::Size StatusAreaButton::GetPreferredSize() { |
gfx::Insets insets = views::MenuButton::GetInsets(); |
gfx::Size prefsize(icon_width() + insets.width(), |
@@ -75,22 +114,25 @@ gfx::Insets StatusAreaButton::GetInsets() const { |
return insets_; |
} |
-void StatusAreaButton::SetText(const std::wstring& text) { |
- // TextButtons normally remember the max text size, so the button's preferred |
- // size will always be as large as the largest text ever put in it. |
- // We clear that max text size, so we can adjust the size to fit the text. |
- // The order is important. ClearMaxTextSize sets the size to that of the |
- // current text, so it must be called after SetText. |
- views::MenuButton::SetText(text); |
- ClearMaxTextSize(); |
- PreferredSizeChanged(); |
+void StatusAreaButton::OnThemeChanged() { |
+ UpdateTextStyle(); |
} |
-bool StatusAreaButton::Activate() { |
- if (active_) { |
- return views::MenuButton::Activate(); |
- } else { |
- return true; |
+void StatusAreaButton::UpdateTextStyle() { |
+ ClearEmbellishing(); |
+ switch (host_->GetTextStyle()) { |
+ case StatusAreaHost::kWhitePlain: |
+ SetEnabledColor(kWhitePlainTextColor); |
+ break; |
+ case StatusAreaHost::kWhiteHaloed: |
+ SetEnabledColor(kWhiteHaloedTextColor); |
+ SetTextHaloColor(kWhiteHaloedHaloColor); |
+ break; |
+ case StatusAreaHost::kGrayEmbossed: |
+ SetEnabledColor(kGrayEmbossedTextColor); |
+ SetTextShadowColors(kGrayEmbossedShadowColor, kGrayEmbossedShadowColor); |
+ SetTextShadowOffset(0, 1); |
+ break; |
} |
} |