| // Copyright 2013 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. |
| |
| #ifndef UI_APP_LIST_SPEECH_UI_MODEL_H_ |
| #define UI_APP_LIST_SPEECH_UI_MODEL_H_ |
| |
| #include <stdint.h> |
| |
| #include "base/macros.h" |
| #include "base/observer_list.h" |
| #include "base/strings/string16.h" |
| #include "ui/app_list/app_list_export.h" |
| #include "ui/app_list/speech_ui_model_observer.h" |
| #include "ui/gfx/image/image_skia.h" |
| |
| namespace app_list { |
| |
| // SpeechUIModel provides the interface to update the UI for speech recognition. |
| class APP_LIST_EXPORT SpeechUIModel { |
| public: |
| // Construct the model, initially in state SPEECH_RECOGNITION_OFF. |
| SpeechUIModel(); |
| virtual ~SpeechUIModel(); |
| |
| void SetSpeechResult(const base::string16& result, bool is_final); |
| void UpdateSoundLevel(int16_t level); |
| // Sets the speech recognition state. If |always_show_ui| is true, |
| // sends the state change to the UI observers regardless of whether |
| // the |new_state| is different from the old one. |
| void SetSpeechRecognitionState(SpeechRecognitionState new_state, |
| bool always_show_ui); |
| |
| void AddObserver(SpeechUIModelObserver* observer); |
| void RemoveObserver(SpeechUIModelObserver* observer); |
| |
| const base::string16& result() const { return result_; } |
| bool is_final() const { return is_final_; } |
| int16_t sound_level() const { return sound_level_; } |
| SpeechRecognitionState state() const { return state_; } |
| const gfx::ImageSkia& logo() const { return logo_; } |
| void set_logo(const gfx::ImageSkia& logo) { logo_ = logo; } |
| |
| private: |
| base::string16 result_; |
| bool is_final_; |
| int16_t sound_level_; |
| SpeechRecognitionState state_; |
| |
| // The logo image which the speech UI will show at the top-left. |
| gfx::ImageSkia logo_; |
| |
| // The sound level range to compute visible sound-level. |
| int16_t minimum_sound_level_; |
| int16_t maximum_sound_level_; |
| |
| base::ObserverList<SpeechUIModelObserver> observers_; |
| |
| DISALLOW_COPY_AND_ASSIGN(SpeechUIModel); |
| }; |
| |
| } // namespace app_list |
| |
| #endif // UI_APP_LIST_SPEECH_UI_MODEL_H_ |