1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef UI_APP_LIST_VIEWS_SPEECH_VIEW_H_ 6 #define UI_APP_LIST_VIEWS_SPEECH_VIEW_H_ 7 8 #include "ui/app_list/app_list_export.h" 9 #include "ui/app_list/speech_ui_model_observer.h" 10 #include "ui/views/controls/button/button.h" 11 #include "ui/views/view.h" 12 13 namespace views { 14 class BoundsAnimator; 15 class ImageButton; 16 class ImageView; 17 class Label; 18 } 19 20 namespace app_list { 21 22 class AppListViewDelegate; 23 class SpeechCardView; 24 25 // SpeechView provides the card-like UI for the search-by-speech. 26 class APP_LIST_EXPORT SpeechView : public views::View, 27 public views::ButtonListener, 28 public SpeechUIModelObserver { 29 public: 30 explicit SpeechView(AppListViewDelegate* delegate); 31 virtual ~SpeechView(); 32 33 // Reset to the original state. 34 void Reset(); 35 36 // Overridden from views::View: 37 virtual void Layout() OVERRIDE; 38 virtual gfx::Size GetPreferredSize() const OVERRIDE; 39 mic_button()40 views::ImageButton* mic_button() { return mic_button_; } 41 42 private: 43 int GetIndicatorRadius(uint8 level); 44 45 // Overridden from views::ButtonListener: 46 virtual void ButtonPressed(views::Button* sender, 47 const ui::Event& event) OVERRIDE; 48 49 // Overridden from SpeechUIModelObserver: 50 virtual void OnSpeechSoundLevelChanged(uint8 level) OVERRIDE; 51 virtual void OnSpeechResult(const base::string16& result, 52 bool is_final) OVERRIDE; 53 virtual void OnSpeechRecognitionStateChanged( 54 SpeechRecognitionState new_state) OVERRIDE; 55 56 AppListViewDelegate* delegate_; 57 58 views::ImageView* logo_; 59 views::View* indicator_; 60 views::ImageButton* mic_button_; 61 views::Label* speech_result_; 62 scoped_ptr<views::BoundsAnimator> indicator_animator_; 63 64 DISALLOW_COPY_AND_ASSIGN(SpeechView); 65 }; 66 67 } // namespace app_list 68 69 #endif // UI_APP_LIST_VIEWS_SPEECH_VIEW_H_ 70