OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "ui/app_list/views/speech_view.h" | 5 #include "ui/app_list/views/speech_view.h" |
6 | 6 |
7 #include "base/strings/utf_string_conversions.h" | 7 #include "base/strings/utf_string_conversions.h" |
8 #include "grit/ui_resources.h" | 8 #include "grit/ui_resources.h" |
9 #include "grit/ui_strings.h" | 9 #include "grit/ui_strings.h" |
10 #include "ui/app_list/app_list_model.h" | 10 #include "ui/app_list/app_list_model.h" |
11 #include "ui/app_list/app_list_view_delegate.h" | 11 #include "ui/app_list/app_list_view_delegate.h" |
12 #include "ui/app_list/speech_ui_model.h" | 12 #include "ui/app_list/speech_ui_model.h" |
13 #include "ui/base/l10n/l10n_util.h" | 13 #include "ui/base/l10n/l10n_util.h" |
14 #include "ui/base/resource/resource_bundle.h" | 14 #include "ui/base/resource/resource_bundle.h" |
15 #include "ui/gfx/canvas.h" | 15 #include "ui/gfx/canvas.h" |
16 #include "ui/views/animation/bounds_animator.h" | 16 #include "ui/views/animation/bounds_animator.h" |
17 #include "ui/views/background.h" | 17 #include "ui/views/background.h" |
18 #include "ui/views/controls/button/image_button.h" | 18 #include "ui/views/controls/button/image_button.h" |
19 #include "ui/views/controls/label.h" | 19 #include "ui/views/controls/label.h" |
20 #include "ui/views/layout/fill_layout.h" | 20 #include "ui/views/layout/fill_layout.h" |
21 #include "ui/views/shadow_border.h" | 21 #include "ui/views/shadow_border.h" |
22 | 22 |
23 namespace app_list { | 23 namespace app_list { |
24 | 24 |
25 namespace { | 25 namespace { |
26 | 26 |
27 const int kShadowOffset = 1; | 27 const int kShadowOffset = 1; |
28 const int kShadowBlur = 4; | 28 const int kShadowBlur = 4; |
29 const int kSpeechViewMaxHeight = 300; | 29 const int kSpeechViewMaxHeight = 300; |
30 const int kTextSize = 20; | |
31 const int kMicButtonMargin = 12; | 30 const int kMicButtonMargin = 12; |
32 const int kTextMargin = 32; | 31 const int kTextMargin = 32; |
33 const int kIndicatorRadiusMax = 100; | 32 const int kIndicatorRadiusMax = 100; |
34 const int kIndicatorAnimationDuration = 100; | 33 const int kIndicatorAnimationDuration = 100; |
35 const SkColor kShadowColor = SkColorSetARGB(0.3 * 255, 0, 0, 0); | 34 const SkColor kShadowColor = SkColorSetARGB(0.3 * 255, 0, 0, 0); |
36 const SkColor kHintTextColor = SkColorSetRGB(119, 119, 119); | 35 const SkColor kHintTextColor = SkColorSetRGB(119, 119, 119); |
37 const SkColor kResultTextColor = SkColorSetRGB(178, 178, 178); | 36 const SkColor kResultTextColor = SkColorSetRGB(178, 178, 178); |
38 const SkColor kSoundLevelIndicatorColor = SkColorSetRGB(219, 219, 219); | 37 const SkColor kSoundLevelIndicatorColor = SkColorSetRGB(219, 219, 219); |
39 | 38 |
40 class SoundLevelIndicator : public views::View { | 39 class SoundLevelIndicator : public views::View { |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
109 | 108 |
110 // TODO(mukai): add Google logo. | 109 // TODO(mukai): add Google logo. |
111 indicator_ = new SoundLevelIndicator(); | 110 indicator_ = new SoundLevelIndicator(); |
112 indicator_->SetVisible(false); | 111 indicator_->SetVisible(false); |
113 container->AddChildView(indicator_); | 112 container->AddChildView(indicator_); |
114 | 113 |
115 mic_button_ = new MicButton(this); | 114 mic_button_ = new MicButton(this); |
116 container->AddChildView(mic_button_); | 115 container->AddChildView(mic_button_); |
117 | 116 |
118 // TODO(mukai): use BoundedLabel to cap 2 lines. | 117 // TODO(mukai): use BoundedLabel to cap 2 lines. |
119 speech_result_ = new views::Label(); | 118 ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance(); |
| 119 speech_result_ = new views::Label( |
| 120 base::string16(), bundle.GetFontList(ui::ResourceBundle::LargeFont)); |
120 speech_result_->SetHorizontalAlignment(gfx::ALIGN_LEFT); | 121 speech_result_->SetHorizontalAlignment(gfx::ALIGN_LEFT); |
121 const gfx::FontList& font_list = speech_result_->font_list(); | 122 |
122 speech_result_->SetFontList(font_list.DeriveFontListWithSize(kTextSize)); | |
123 speech_result_->SetMultiLine(true); | 123 speech_result_->SetMultiLine(true); |
124 container->AddChildView(speech_result_); | 124 container->AddChildView(speech_result_); |
125 | 125 |
126 AddChildView(container); | 126 AddChildView(container); |
127 | 127 |
128 delegate_->GetSpeechUI()->AddObserver(this); | 128 delegate_->GetSpeechUI()->AddObserver(this); |
129 indicator_animator_.reset(new views::BoundsAnimator(container)); | 129 indicator_animator_.reset(new views::BoundsAnimator(container)); |
130 indicator_animator_->SetAnimationDuration(kIndicatorAnimationDuration); | 130 indicator_animator_->SetAnimationDuration(kIndicatorAnimationDuration); |
131 indicator_animator_->set_tween_type(gfx::Tween::LINEAR); | 131 indicator_animator_->set_tween_type(gfx::Tween::LINEAR); |
132 | 132 |
133 Reset(); | 133 Reset(); |
134 } | 134 } |
135 | 135 |
136 SpeechView::~SpeechView() { | 136 SpeechView::~SpeechView() { |
137 delegate_->GetSpeechUI()->RemoveObserver(this); | 137 delegate_->GetSpeechUI()->RemoveObserver(this); |
138 } | 138 } |
139 | 139 |
140 void SpeechView::Reset() { | 140 void SpeechView::Reset() { |
141 ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance(); | 141 ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance(); |
142 speech_result_->SetText(l10n_util::GetStringUTF16( | 142 speech_result_->SetText(l10n_util::GetStringUTF16( |
143 IDS_APP_LIST_SPEECH_HINT_TEXT)); | 143 IDS_APP_LIST_SPEECH_HINT_TEXT)); |
144 speech_result_->SetEnabledColor(kHintTextColor); | 144 speech_result_->SetEnabledColor(kHintTextColor); |
145 mic_button_->SetImage(views::Button::STATE_NORMAL, bundle.GetImageSkiaNamed( | 145 mic_button_->SetImage(views::Button::STATE_NORMAL, |
146 IDR_APP_LIST_SPEECH_MIC_ON)); | 146 bundle.GetImageSkiaNamed(IDR_APP_LIST_SPEECH_MIC_ON)); |
147 } | 147 } |
148 | 148 |
149 int SpeechView::GetIndicatorRadius(uint8 level) { | 149 int SpeechView::GetIndicatorRadius(uint8 level) { |
150 int radius_min = mic_button_->width() / 2; | 150 int radius_min = mic_button_->width() / 2; |
151 int range = kIndicatorRadiusMax - radius_min; | 151 int range = kIndicatorRadiusMax - radius_min; |
152 return level * range / kuint8max + radius_min; | 152 return level * range / kuint8max + radius_min; |
153 } | 153 } |
154 | 154 |
155 void SpeechView::Layout() { | 155 void SpeechView::Layout() { |
156 views::View* container = child_at(0); | 156 views::View* container = child_at(0); |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
208 | 208 |
209 void SpeechView::OnSpeechRecognitionStateChanged( | 209 void SpeechView::OnSpeechRecognitionStateChanged( |
210 SpeechRecognitionState new_state) { | 210 SpeechRecognitionState new_state) { |
211 int resource_id = IDR_APP_LIST_SPEECH_MIC_OFF; | 211 int resource_id = IDR_APP_LIST_SPEECH_MIC_OFF; |
212 if (new_state == SPEECH_RECOGNITION_ON) | 212 if (new_state == SPEECH_RECOGNITION_ON) |
213 resource_id = IDR_APP_LIST_SPEECH_MIC_ON; | 213 resource_id = IDR_APP_LIST_SPEECH_MIC_ON; |
214 else if (new_state == SPEECH_RECOGNITION_IN_SPEECH) | 214 else if (new_state == SPEECH_RECOGNITION_IN_SPEECH) |
215 resource_id = IDR_APP_LIST_SPEECH_MIC_RECORDING; | 215 resource_id = IDR_APP_LIST_SPEECH_MIC_RECORDING; |
216 | 216 |
217 ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance(); | 217 ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance(); |
218 mic_button_->SetImage(views::Button::STATE_NORMAL, bundle.GetImageSkiaNamed( | 218 mic_button_->SetImage(views::Button::STATE_NORMAL, |
219 resource_id)); | 219 bundle.GetImageSkiaNamed(resource_id)); |
220 } | 220 } |
221 | 221 |
222 } // namespace app_list | 222 } // namespace app_list |
OLD | NEW |