summaryrefslogtreecommitdiffstats
path: root/ash
diff options
context:
space:
mode:
authorzork@chromium.org <zork@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-10 07:04:05 +0000
committerzork@chromium.org <zork@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-10 07:04:05 +0000
commit707c1b429f8ab0435473facd603e8907ea2e1365 (patch)
treef330e923df914b037c96dae3d30de28aed2d2d0a /ash
parentc697aaf2fb1eb70f358e2ce771956b27e41936a0 (diff)
downloadchromium_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.grd3
-rw-r--r--ash/shell.cc2
-rw-r--r--ash/system/tray/system_tray_delegate.h3
-rw-r--r--ash/system/tray_accessibility.cc54
-rw-r--r--ash/system/tray_accessibility.h3
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_;