Index: chrome/browser/chromeos/options/network_config_view.cc |
diff --git a/chrome/browser/chromeos/options/network_config_view.cc b/chrome/browser/chromeos/options/network_config_view.cc |
index 595253450540c73b2ef9d9cc911d070131ecb9f3..3e8a0f44e1aed6116229721eacce5daa25a40017 100644 |
--- a/chrome/browser/chromeos/options/network_config_view.cc |
+++ b/chrome/browser/chromeos/options/network_config_view.cc |
@@ -13,10 +13,14 @@ |
#include "grit/chromium_strings.h" |
#include "grit/generated_resources.h" |
#include "grit/locale_settings.h" |
+#include "grit/theme_resources.h" |
#include "ui/base/accessibility/accessible_view_state.h" |
#include "ui/base/l10n/l10n_util.h" |
+#include "ui/base/resource/resource_bundle.h" |
+#include "ui/gfx/image/image.h" |
#include "ui/gfx/rect.h" |
#include "ui/views/controls/button/text_button.h" |
+#include "ui/views/controls/image_view.h" |
#include "ui/views/layout/grid_layout.h" |
#include "ui/views/layout/layout_constants.h" |
#include "ui/views/widget/widget.h" |
@@ -187,4 +191,68 @@ void NetworkConfigView::CreateAdvancedButton() { |
layout->AddView(advanced_button_); |
} |
+ControlledSettingIndicatorView::ControlledSettingIndicatorView() |
+ : managed_(false), |
+ image_view_(NULL) { |
+ Init(); |
+} |
+ |
+ControlledSettingIndicatorView::ControlledSettingIndicatorView( |
+ const NetworkPropertyUIData& ui_data) |
+ : managed_(false), |
+ image_view_(NULL) { |
+ Init(); |
+ Update(ui_data); |
+} |
+ |
+ControlledSettingIndicatorView::~ControlledSettingIndicatorView() {} |
+ |
+void ControlledSettingIndicatorView::Update( |
+ const NetworkPropertyUIData& ui_data) { |
+ if (managed_ == ui_data.managed()) |
+ return; |
+ |
+ managed_ = ui_data.managed(); |
+ PreferredSizeChanged(); |
+} |
+ |
+gfx::Size ControlledSettingIndicatorView::GetPreferredSize() { |
+ if (!IsVisible()) |
+ return gfx::Size(); |
+ |
+ return image_view_->GetPreferredSize(); |
+} |
+ |
+bool ControlledSettingIndicatorView::IsVisible() const { |
+ return managed_ && views::View::IsVisible(); |
+} |
+ |
+void ControlledSettingIndicatorView::Layout() { |
+ image_view_->SetBounds(0, 0, width(), height()); |
+} |
+ |
+void ControlledSettingIndicatorView::OnMouseEntered( |
+ const views::MouseEvent& event) { |
+ image_view_->SetImage(color_image_); |
+} |
+ |
+void ControlledSettingIndicatorView::OnMouseExited( |
+ const views::MouseEvent& event) { |
+ image_view_->SetImage(gray_image_); |
+} |
+ |
+void ControlledSettingIndicatorView::Init() { |
+ color_image_ = ResourceBundle::GetSharedInstance().GetImageNamed( |
+ IDR_CONTROLLED_SETTING_MANDATORY).ToSkBitmap(); |
+ gray_image_ = ResourceBundle::GetSharedInstance().GetImageNamed( |
+ IDR_CONTROLLED_SETTING_MANDATORY_GRAY).ToSkBitmap(); |
+ image_view_ = new views::ImageView(); |
+ // Disable |image_view_| so mouse events propagate to the parent. |
+ image_view_->SetEnabled(false); |
+ image_view_->SetImage(gray_image_); |
+ image_view_->SetTooltipText( |
+ l10n_util::GetStringUTF16(IDS_OPTIONS_CONTROLLED_SETTING_POLICY)); |
+ AddChildView(image_view_); |
+} |
+ |
} // namespace chromeos |