diff options
author | zork@chromium.org <zork@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-10 07:04:05 +0000 |
---|---|---|
committer | zork@chromium.org <zork@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-10 07:04:05 +0000 |
commit | 707c1b429f8ab0435473facd603e8907ea2e1365 (patch) | |
tree | f330e923df914b037c96dae3d30de28aed2d2d0a /ash | |
parent | c697aaf2fb1eb70f358e2ce771956b27e41936a0 (diff) | |
download | chromium_src-707c1b429f8ab0435473facd603e8907ea2e1365.zip chromium_src-707c1b429f8ab0435473facd603e8907ea2e1365.tar.gz chromium_src-707c1b429f8ab0435473facd603e8907ea2e1365.tar.bz2 |
Add a Default view for accessibility that allows you to disable spoken feedback
BUG=120506
TEST=Turn on spoken feedback. Open the uber. Check that there is a menu item to disable spoken feedback, and that it works.
Review URL: https://chromiumcodereview.appspot.com/10308003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@136253 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ash')
-rw-r--r-- | ash/ash_strings.grd | 3 | ||||
-rw-r--r-- | ash/shell.cc | 2 | ||||
-rw-r--r-- | ash/system/tray/system_tray_delegate.h | 3 | ||||
-rw-r--r-- | ash/system/tray_accessibility.cc | 54 | ||||
-rw-r--r-- | ash/system/tray_accessibility.h | 3 |
5 files changed, 65 insertions, 0 deletions
diff --git a/ash/ash_strings.grd b/ash/ash_strings.grd index 09de499..4132ff5 100644 --- a/ash/ash_strings.grd +++ b/ash/ash_strings.grd @@ -317,6 +317,9 @@ Press Shift + Search key to cancel. CAPS LOCK is on. Press Search key to cancel. </message> + <message name="IDS_ASH_STATUS_TRAY_DISABLE_SPOKEN_FEEDBACK" desc="The label used in the tray popup to disable spoken feedback."> + Disable spoken feedback + </message> <message name="IDS_ASH_STATUS_TRAY_BATTERY_FULL" desc="The label in the tray dialog to indicate that the battery is full."> Battery full </message> diff --git a/ash/shell.cc b/ash/shell.cc index 6799e0e..3eea9a4 100644 --- a/ash/shell.cc +++ b/ash/shell.cc @@ -345,6 +345,8 @@ class DummySystemTrayDelegate : public SystemTrayDelegate { return false; } + virtual void SetEnableSpokenFeedback(bool enable) OVERRIDE {} + virtual void ShutDown() OVERRIDE {} virtual void SignOut() OVERRIDE { diff --git a/ash/system/tray/system_tray_delegate.h b/ash/system/tray/system_tray_delegate.h index ee23fdd..f1ace42 100644 --- a/ash/system/tray/system_tray_delegate.h +++ b/ash/system/tray/system_tray_delegate.h @@ -168,6 +168,9 @@ class SystemTrayDelegate { // Gets whether accessibility mode is turned on. virtual bool IsInAccessibilityMode() const = 0; + // Enables or disables spoken feedback. + virtual void SetEnableSpokenFeedback(bool enable) = 0; + // Attempts to shut down the system. virtual void ShutDown() = 0; diff --git a/ash/system/tray_accessibility.cc b/ash/system/tray_accessibility.cc index 5be1e38..7d76748 100644 --- a/ash/system/tray_accessibility.cc +++ b/ash/system/tray_accessibility.cc @@ -7,6 +7,8 @@ #include "ash/shell.h" #include "ash/system/tray/system_tray_delegate.h" #include "ash/system/tray/tray_constants.h" +#include "ash/system/tray/tray_views.h" +#include "grit/ash_strings.h" #include "grit/ui_resources.h" #include "ui/base/resource/resource_bundle.h" #include "ui/gfx/image/image.h" @@ -18,8 +20,45 @@ namespace ash { namespace internal { +class DefaultAccessibilityView : public ActionableView { + public: + DefaultAccessibilityView() { + SetLayoutManager(new views::BoxLayout(views::BoxLayout::kHorizontal, + kTrayPopupPaddingHorizontal, + 0, + kTrayPopupPaddingBetweenItems)); + + ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance(); + FixedSizedImageView* image = + new FixedSizedImageView(0, kTrayPopupItemHeight); + image->SetImage(bundle.GetImageNamed(IDR_AURA_UBER_TRAY_ACCESSIBILITY). + ToSkBitmap()); + + AddChildView(image); + string16 label = bundle.GetLocalizedString( + IDS_ASH_STATUS_TRAY_DISABLE_SPOKEN_FEEDBACK); + AddChildView(new views::Label(label)); + SetAccessibleName(label); + } + + virtual ~DefaultAccessibilityView() {} + + protected: + // Overridden from ActionableView. + virtual bool PerformAction(const views::Event& event) OVERRIDE { + ash::Shell::GetInstance()->tray_delegate()->SetEnableSpokenFeedback(false); + GetWidget()->Close(); + return true; + } + + private: + + DISALLOW_COPY_AND_ASSIGN(DefaultAccessibilityView); +}; + TrayAccessibility::TrayAccessibility() : TrayImageItem(IDR_AURA_UBER_TRAY_ACCESSIBILITY), + default_(NULL), detailed_(NULL), string_id_(0) { } @@ -30,6 +69,17 @@ bool TrayAccessibility::GetInitialVisibility() { return ash::Shell::GetInstance()->tray_delegate()->IsInAccessibilityMode(); } +views::View* TrayAccessibility::CreateDefaultView(user::LoginStatus status) { + if (!ash::Shell::GetInstance()->tray_delegate()->IsInAccessibilityMode()) + return NULL; + + DCHECK(string_id_); + CHECK(default_ == NULL); + default_ = new DefaultAccessibilityView(); + + return default_; +} + views::View* TrayAccessibility::CreateDetailedView(user::LoginStatus status) { DCHECK(string_id_); CHECK(detailed_ == NULL); @@ -51,6 +101,10 @@ views::View* TrayAccessibility::CreateDetailedView(user::LoginStatus status) { return detailed_; } +void TrayAccessibility::DestroyDefaultView() { + default_ = NULL; +} + void TrayAccessibility::DestroyDetailedView() { detailed_ = NULL; } diff --git a/ash/system/tray_accessibility.h b/ash/system/tray_accessibility.h index 01a22b8..ee8a77e 100644 --- a/ash/system/tray_accessibility.h +++ b/ash/system/tray_accessibility.h @@ -36,13 +36,16 @@ class TrayAccessibility : public TrayImageItem, private: // Overridden from TrayImageItem. virtual bool GetInitialVisibility() OVERRIDE; + virtual views::View* CreateDefaultView(user::LoginStatus status) OVERRIDE; virtual views::View* CreateDetailedView(user::LoginStatus status) OVERRIDE; + virtual void DestroyDefaultView() OVERRIDE; virtual void DestroyDetailedView() OVERRIDE; // Overridden from AccessibilityObserver. virtual void OnAccessibilityModeChanged(bool enabled, int string_id) OVERRIDE; + views::View* default_; views::View* detailed_; int string_id_; |