Index: ash/system/chromeos/virtual_keyboard/virtual_keyboard_tray.cc |
diff --git a/ash/system/chromeos/virtual_keyboard/virtual_keyboard_tray.cc b/ash/system/chromeos/virtual_keyboard/virtual_keyboard_tray.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..f398db75dab2c193d12b9019eeab4219eac34441 |
--- /dev/null |
+++ b/ash/system/chromeos/virtual_keyboard/virtual_keyboard_tray.cc |
@@ -0,0 +1,116 @@ |
+// Copyright 2014 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 "ash/system/chromeos/virtual_keyboard/virtual_keyboard_tray.h" |
+ |
+#include "ash/shell.h" |
+#include "ash/system/status_area_widget.h" |
+#include "ash/system/tray/system_tray_notifier.h" |
+#include "ash/system/tray/tray_constants.h" |
+#include "ash/system/tray/tray_utils.h" |
+#include "grit/ash_resources.h" |
+#include "grit/ash_strings.h" |
+#include "ui/base/l10n/l10n_util.h" |
+#include "ui/base/resource/resource_bundle.h" |
+#include "ui/events/event.h" |
+#include "ui/gfx/image/image_skia.h" |
+#include "ui/keyboard/keyboard_controller.h" |
+#include "ui/views/controls/button/image_button.h" |
+ |
+namespace ash { |
+namespace internal { |
+ |
+namespace { |
+ |
+class VirtualKeyboardButton : public views::ImageButton { |
+ public: |
+ VirtualKeyboardButton(views::ButtonListener* listener); |
+ virtual ~VirtualKeyboardButton(); |
+ |
+ // Overridden from views::ImageButton: |
+ virtual gfx::Size GetPreferredSize() OVERRIDE; |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(VirtualKeyboardButton); |
+}; |
+ |
+} // namespace |
+ |
+VirtualKeyboardButton::VirtualKeyboardButton(views::ButtonListener* listener) |
sadrul
2014/03/04 07:00:32
Shouldn't these be inside the anonymous namespace
bshe
2014/03/04 16:11:54
doh. Sorry.
On 2014/03/04 07:00:32, sadrul wrote:
|
+ : views::ImageButton(listener) { |
+} |
+ |
+VirtualKeyboardButton::~VirtualKeyboardButton() { |
+} |
+ |
+gfx::Size VirtualKeyboardButton::GetPreferredSize() { |
+ const int virtual_keyboard_button_size = GetShelfItemHeight(); |
+ return gfx::Size(virtual_keyboard_button_size, virtual_keyboard_button_size); |
+} |
+ |
+VirtualKeyboardTray::VirtualKeyboardTray(StatusAreaWidget* status_area_widget) |
+ : TrayBackgroundView(status_area_widget), |
+ button_(NULL) { |
+ button_ = new VirtualKeyboardButton(this); |
+ button_->SetImage(views::CustomButton::STATE_NORMAL, |
+ ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed( |
+ IDR_AURA_UBER_TRAY_VIRTUAL_KEYBOARD)); |
+ button_->SetImageAlignment(views::ImageButton::ALIGN_CENTER, |
+ views::ImageButton::ALIGN_MIDDLE); |
+ |
+ tray_container()->AddChildView(button_); |
+ SetContentsBackground(); |
+ SetVisible(false); |
+ // The Shell may not exist in some unit tests. |
+ if (Shell::HasInstance()) { |
+ Shell::GetInstance()->system_tray_notifier()-> |
+ AddAccessibilityObserver(this); |
+ } |
+} |
+ |
+VirtualKeyboardTray::~VirtualKeyboardTray() { |
+ // The Shell may not exist in some unit tests. |
+ if (Shell::HasInstance()) { |
+ Shell::GetInstance()->system_tray_notifier()-> |
+ RemoveAccessibilityObserver(this); |
+ } |
+} |
+ |
+void VirtualKeyboardTray::SetShelfAlignment(ShelfAlignment alignment) { |
+ TrayBackgroundView::SetShelfAlignment(alignment); |
+ tray_container()->SetBorder(views::Border::NullBorder()); |
+} |
+ |
+base::string16 VirtualKeyboardTray::GetAccessibleNameForTray() { |
+ return l10n_util::GetStringUTF16( |
+ IDS_ASH_VIRTUAL_KEYBOARD_TRAY_ACCESSIBLE_NAME); |
+} |
+ |
+void VirtualKeyboardTray::HideBubbleWithView( |
+ const views::TrayBubbleView* bubble_view) { |
+} |
+ |
+bool VirtualKeyboardTray::ClickedOutsideBubble() { |
+ return false; |
+} |
+ |
+bool VirtualKeyboardTray::PerformAction(const ui::Event& event) { |
+ Shell::GetInstance()->keyboard_controller()->ShowAndLockKeyboard(); |
+ return true; |
+} |
+ |
+void VirtualKeyboardTray::ButtonPressed(views::Button* sender, |
+ const ui::Event& event) { |
+ DCHECK_EQ(button_, sender); |
+ PerformAction(event); |
+} |
+ |
+void VirtualKeyboardTray::OnAccessibilityModeChanged( |
+ AccessibilityNotificationVisibility notify) { |
+ SetVisible(Shell::GetInstance()->accessibility_delegate()-> |
+ IsVirtualKeyboardEnabled()); |
+} |
+ |
+} // namespace internal |
+} // namespace ash |