| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "chrome/browser/speech/speech_input_bubble.h" | 5 #include "chrome/browser/speech/speech_input_bubble.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/message_loop.h" | 9 #include "base/message_loop.h" |
| 10 #include "base/utf_string_conversions.h" | 10 #include "base/utf_string_conversions.h" |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 125 try_again_->SetVisible(is_message); | 125 try_again_->SetVisible(is_message); |
| 126 cancel_->SetVisible(mode != SpeechInputBubbleBase::DISPLAY_MODE_WARM_UP); | 126 cancel_->SetVisible(mode != SpeechInputBubbleBase::DISPLAY_MODE_WARM_UP); |
| 127 heading_->SetVisible(mode == SpeechInputBubbleBase::DISPLAY_MODE_RECORDING); | 127 heading_->SetVisible(mode == SpeechInputBubbleBase::DISPLAY_MODE_RECORDING); |
| 128 | 128 |
| 129 if (is_message) { | 129 if (is_message) { |
| 130 message_->SetText(UTF16ToWideHack(message_text)); | 130 message_->SetText(UTF16ToWideHack(message_text)); |
| 131 } else { | 131 } else { |
| 132 SetImage(image); | 132 SetImage(image); |
| 133 } | 133 } |
| 134 | 134 |
| 135 if (icon_->IsVisible()) | 135 if (icon_->visible()) |
| 136 icon_->ResetImageSize(); | 136 icon_->ResetImageSize(); |
| 137 | 137 |
| 138 // When moving from warming up to recording state, the size of the content | 138 // When moving from warming up to recording state, the size of the content |
| 139 // stays the same. So we wouldn't get a resize/layout call from the view | 139 // stays the same. So we wouldn't get a resize/layout call from the view |
| 140 // system and we do it ourselves. | 140 // system and we do it ourselves. |
| 141 if (GetPreferredSize() == size()) // |size()| here is the current size. | 141 if (GetPreferredSize() == size()) // |size()| here is the current size. |
| 142 Layout(); | 142 Layout(); |
| 143 } | 143 } |
| 144 | 144 |
| 145 void ContentView::SetImage(const SkBitmap& image) { | 145 void ContentView::SetImage(const SkBitmap& image) { |
| (...skipping 12 matching lines...) Expand all Loading... |
| 158 } | 158 } |
| 159 | 159 |
| 160 void ContentView::LinkClicked(views::Link* source, int event_flags) { | 160 void ContentView::LinkClicked(views::Link* source, int event_flags) { |
| 161 DCHECK_EQ(source, mic_settings_); | 161 DCHECK_EQ(source, mic_settings_); |
| 162 AudioManager::GetAudioManager()->ShowAudioInputSettings(); | 162 AudioManager::GetAudioManager()->ShowAudioInputSettings(); |
| 163 } | 163 } |
| 164 | 164 |
| 165 gfx::Size ContentView::GetPreferredSize() { | 165 gfx::Size ContentView::GetPreferredSize() { |
| 166 int width = heading_->GetPreferredSize().width(); | 166 int width = heading_->GetPreferredSize().width(); |
| 167 int control_width = cancel_->GetPreferredSize().width(); | 167 int control_width = cancel_->GetPreferredSize().width(); |
| 168 if (try_again_->IsVisible()) { | 168 if (try_again_->visible()) { |
| 169 control_width += try_again_->GetPreferredSize().width() + | 169 control_width += try_again_->GetPreferredSize().width() + |
| 170 views::kRelatedButtonHSpacing; | 170 views::kRelatedButtonHSpacing; |
| 171 } | 171 } |
| 172 width = std::max(width, control_width); | 172 width = std::max(width, control_width); |
| 173 control_width = std::max(icon_->GetPreferredSize().width(), | 173 control_width = std::max(icon_->GetPreferredSize().width(), |
| 174 kIconLayoutMinWidth); | 174 kIconLayoutMinWidth); |
| 175 width = std::max(width, control_width); | 175 width = std::max(width, control_width); |
| 176 if (mic_settings_->IsVisible()) { | 176 if (mic_settings_->visible()) { |
| 177 control_width = mic_settings_->GetPreferredSize().width(); | 177 control_width = mic_settings_->GetPreferredSize().width(); |
| 178 width = std::max(width, control_width); | 178 width = std::max(width, control_width); |
| 179 } | 179 } |
| 180 | 180 |
| 181 int height = cancel_->GetPreferredSize().height(); | 181 int height = cancel_->GetPreferredSize().height(); |
| 182 if (message_->IsVisible()) { | 182 if (message_->visible()) { |
| 183 height += message_->GetHeightForWidth(width) + | 183 height += message_->GetHeightForWidth(width) + |
| 184 views::kLabelToControlVerticalSpacing; | 184 views::kLabelToControlVerticalSpacing; |
| 185 } | 185 } |
| 186 if (heading_->IsVisible()) | 186 if (heading_->visible()) |
| 187 height += heading_->GetPreferredSize().height(); | 187 height += heading_->GetPreferredSize().height(); |
| 188 if (icon_->IsVisible()) | 188 if (icon_->visible()) |
| 189 height += icon_->GetImage().height(); | 189 height += icon_->GetImage().height(); |
| 190 if (mic_settings_->IsVisible()) | 190 if (mic_settings_->visible()) |
| 191 height += mic_settings_->GetPreferredSize().height(); | 191 height += mic_settings_->GetPreferredSize().height(); |
| 192 width += kBubbleHorizMargin * 2; | 192 width += kBubbleHorizMargin * 2; |
| 193 height += kBubbleVertMargin * 2; | 193 height += kBubbleVertMargin * 2; |
| 194 | 194 |
| 195 return gfx::Size(width, height); | 195 return gfx::Size(width, height); |
| 196 } | 196 } |
| 197 | 197 |
| 198 void ContentView::Layout() { | 198 void ContentView::Layout() { |
| 199 int x = kBubbleHorizMargin; | 199 int x = kBubbleHorizMargin; |
| 200 int y = kBubbleVertMargin; | 200 int y = kBubbleVertMargin; |
| 201 int available_width = width() - kBubbleHorizMargin * 2; | 201 int available_width = width() - kBubbleHorizMargin * 2; |
| 202 int available_height = height() - kBubbleVertMargin * 2; | 202 int available_height = height() - kBubbleVertMargin * 2; |
| 203 | 203 |
| 204 if (message_->IsVisible()) { | 204 if (message_->visible()) { |
| 205 DCHECK(try_again_->IsVisible()); | 205 DCHECK(try_again_->visible()); |
| 206 | 206 |
| 207 int control_height = try_again_->GetPreferredSize().height(); | 207 int control_height = try_again_->GetPreferredSize().height(); |
| 208 int try_again_width = try_again_->GetPreferredSize().width(); | 208 int try_again_width = try_again_->GetPreferredSize().width(); |
| 209 int cancel_width = cancel_->GetPreferredSize().width(); | 209 int cancel_width = cancel_->GetPreferredSize().width(); |
| 210 y += available_height - control_height; | 210 y += available_height - control_height; |
| 211 x += (available_width - cancel_width - try_again_width - | 211 x += (available_width - cancel_width - try_again_width - |
| 212 views::kRelatedButtonHSpacing) / 2; | 212 views::kRelatedButtonHSpacing) / 2; |
| 213 try_again_->SetBounds(x, y, try_again_width, control_height); | 213 try_again_->SetBounds(x, y, try_again_width, control_height); |
| 214 cancel_->SetBounds(x + try_again_width + views::kRelatedButtonHSpacing, y, | 214 cancel_->SetBounds(x + try_again_width + views::kRelatedButtonHSpacing, y, |
| 215 cancel_width, control_height); | 215 cancel_width, control_height); |
| 216 | 216 |
| 217 control_height = message_->GetHeightForWidth(available_width); | 217 control_height = message_->GetHeightForWidth(available_width); |
| 218 message_->SetBounds(kBubbleHorizMargin, kBubbleVertMargin, | 218 message_->SetBounds(kBubbleHorizMargin, kBubbleVertMargin, |
| 219 available_width, control_height); | 219 available_width, control_height); |
| 220 y = kBubbleVertMargin + control_height; | 220 y = kBubbleVertMargin + control_height; |
| 221 | 221 |
| 222 control_height = mic_settings_->GetPreferredSize().height(); | 222 control_height = mic_settings_->GetPreferredSize().height(); |
| 223 mic_settings_->SetBounds(kBubbleHorizMargin, y, available_width, | 223 mic_settings_->SetBounds(kBubbleHorizMargin, y, available_width, |
| 224 control_height); | 224 control_height); |
| 225 } else { | 225 } else { |
| 226 DCHECK(icon_->IsVisible()); | 226 DCHECK(icon_->visible()); |
| 227 | 227 |
| 228 int control_height = icon_->GetImage().height(); | 228 int control_height = icon_->GetImage().height(); |
| 229 if (display_mode_ == SpeechInputBubbleBase::DISPLAY_MODE_WARM_UP) | 229 if (display_mode_ == SpeechInputBubbleBase::DISPLAY_MODE_WARM_UP) |
| 230 y = (available_height - control_height) / 2; | 230 y = (available_height - control_height) / 2; |
| 231 icon_->SetBounds(x, y, available_width, control_height); | 231 icon_->SetBounds(x, y, available_width, control_height); |
| 232 y += control_height; | 232 y += control_height; |
| 233 | 233 |
| 234 if (heading_->IsVisible()) { | 234 if (heading_->visible()) { |
| 235 control_height = heading_->GetPreferredSize().height(); | 235 control_height = heading_->GetPreferredSize().height(); |
| 236 heading_->SetBounds(x, y, available_width, control_height); | 236 heading_->SetBounds(x, y, available_width, control_height); |
| 237 y += control_height; | 237 y += control_height; |
| 238 } | 238 } |
| 239 | 239 |
| 240 if (cancel_->IsVisible()) { | 240 if (cancel_->visible()) { |
| 241 control_height = cancel_->GetPreferredSize().height(); | 241 control_height = cancel_->GetPreferredSize().height(); |
| 242 int width = cancel_->GetPreferredSize().width(); | 242 int width = cancel_->GetPreferredSize().width(); |
| 243 cancel_->SetBounds(x + (available_width - width) / 2, y, width, | 243 cancel_->SetBounds(x + (available_width - width) / 2, y, width, |
| 244 control_height); | 244 control_height); |
| 245 } | 245 } |
| 246 } | 246 } |
| 247 } | 247 } |
| 248 | 248 |
| 249 // Implementation of SpeechInputBubble. | 249 // Implementation of SpeechInputBubble. |
| 250 class SpeechInputBubbleImpl | 250 class SpeechInputBubbleImpl |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 371 } | 371 } |
| 372 | 372 |
| 373 } // namespace | 373 } // namespace |
| 374 | 374 |
| 375 SpeechInputBubble* SpeechInputBubble::CreateNativeBubble( | 375 SpeechInputBubble* SpeechInputBubble::CreateNativeBubble( |
| 376 TabContents* tab_contents, | 376 TabContents* tab_contents, |
| 377 SpeechInputBubble::Delegate* delegate, | 377 SpeechInputBubble::Delegate* delegate, |
| 378 const gfx::Rect& element_rect) { | 378 const gfx::Rect& element_rect) { |
| 379 return new SpeechInputBubbleImpl(tab_contents, delegate, element_rect); | 379 return new SpeechInputBubbleImpl(tab_contents, delegate, element_rect); |
| 380 } | 380 } |
| OLD | NEW |