Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(241)

Unified Diff: chrome/browser/chromeos/status/accessibility_menu_button.cc

Issue 7753029: Add a button on status bar to indicate that accessibility is enabled. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Removed files already committed in advance Created 9 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/status/accessibility_menu_button.cc
diff --git a/chrome/browser/chromeos/status/accessibility_menu_button.cc b/chrome/browser/chromeos/status/accessibility_menu_button.cc
new file mode 100644
index 0000000000000000000000000000000000000000..867f758bb4fe2b41d85272f6774207cc8b7c83e7
--- /dev/null
+++ b/chrome/browser/chromeos/status/accessibility_menu_button.cc
@@ -0,0 +1,105 @@
+// 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/accessibility_menu_button.h"
+
+#include "chrome/browser/browser_process.h"
+#include "chrome/browser/chromeos/accessibility_util.h"
+#include "chrome/browser/prefs/pref_service.h"
+#include "chrome/common/chrome_notification_types.h"
+#include "chrome/common/pref_names.h"
+#include "grit/generated_resources.h"
+#include "grit/theme_resources.h"
+#include "ui/base/l10n/l10n_util.h"
+#include "ui/base/resource/resource_bundle.h"
+#include "views/widget/widget.h"
+#include "views/controls/menu/menu_runner.h"
+#include "views/controls/menu/menu_item_view.h"
+
+namespace {
+
+enum MenuItemID {
+ MENU_ITEM_DISABLE_SPOKEN_FEEDBACK,
+};
+
+}
+
+namespace chromeos {
+
+////////////////////////////////////////////////////////////////////////////////
+// AccessibilityMenuButton
+
+AccessibilityMenuButton::AccessibilityMenuButton(StatusAreaHost* host)
+ : StatusAreaButton(host, this) {
+ accessibility_enabled_.Init(prefs::kAccessibilityEnabled,
+ g_browser_process->local_state(), this);
+ SetIcon(*ResourceBundle::GetSharedInstance().GetBitmapNamed(
+ IDR_STATUSBAR_ACCESSIBILITY));
+ Update();
+}
+
+AccessibilityMenuButton::~AccessibilityMenuButton() {
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// views::ViewMenuDelegate implementation:
+
+void AccessibilityMenuButton::RunMenu(views::View* source,
+ const gfx::Point& pt) {
+ PrepareMenu();
+
+ gfx::Point screen_location;
+ views::View::ConvertPointToScreen(source, &screen_location);
+ gfx::Rect bounds(screen_location, source->size());
+ CHECK(menu_runner_->RunMenuAt(source->GetWidget()->GetTopLevelWidget(),
+ this, bounds, views::MenuItemView::TOPRIGHT,
+ 0) ==
+ views::MenuRunner::NORMAL_EXIT);
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// views::MenuDelegate implementation
+
+void AccessibilityMenuButton::ExecuteCommand(int id) {
+ switch (id) {
+ case MENU_ITEM_DISABLE_SPOKEN_FEEDBACK:
+ accessibility::EnableAccessibility(false, NULL);
+ break;
+ default:
+ NOTREACHED();
+ }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// NotificationObserver implementation
+
+void AccessibilityMenuButton::Observe(int type,
+ const NotificationSource& source,
+ const NotificationDetails& details) {
+ if (type == chrome::NOTIFICATION_PREF_CHANGED)
+ Update();
+}
+
+
+void AccessibilityMenuButton::Update() {
+ // Update tooltip and accessibile name.
+ string16 message =
+ l10n_util::GetStringUTF16(IDS_STATUSBAR_ACCESSIBILITY_ENABLED);
+ SetTooltipText(UTF16ToWide(message));
+ SetAccessibleName(message);
+ // Update visibility.
+ SetVisible(accessibility_enabled_.GetValue());
+}
+
+void AccessibilityMenuButton::PrepareMenu() {
+ views::MenuItemView* menu = new views::MenuItemView(this);
+ if (accessibility_enabled_.GetValue())
+ menu->AppendMenuItemWithLabel(MENU_ITEM_DISABLE_SPOKEN_FEEDBACK,
+ UTF16ToWide(l10n_util::GetStringUTF16(
+ IDS_STATUSBAR_DISABLE_SPOKEN_FEEDBACK)));
+ // |menu_runner_| takes the ownership of |menu|
+ menu_runner_.reset(new views::MenuRunner(menu));
+}
+
+} // namespace chromeos

Powered by Google App Engine
This is Rietveld 408576698