| 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/ui/views/download/download_shelf_view.h" | 5 #include "chrome/browser/ui/views/download/download_shelf_view.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 173 delete view; | 173 delete view; |
| 174 if (download_views_.empty()) | 174 if (download_views_.empty()) |
| 175 Close(); | 175 Close(); |
| 176 else if (CanAutoClose()) | 176 else if (CanAutoClose()) |
| 177 mouse_watcher_.Start(); | 177 mouse_watcher_.Start(); |
| 178 Layout(); | 178 Layout(); |
| 179 SchedulePaint(); | 179 SchedulePaint(); |
| 180 } | 180 } |
| 181 | 181 |
| 182 views::View* DownloadShelfView::GetDefaultFocusableChild() { | 182 views::View* DownloadShelfView::GetDefaultFocusableChild() { |
| 183 if (!download_views_.empty()) | 183 return download_views_.empty() ? |
| 184 return download_views_[0]; | 184 static_cast<View*>(show_all_view_) : download_views_[0]; |
| 185 else | |
| 186 return show_all_view_; | |
| 187 } | 185 } |
| 188 | 186 |
| 189 void DownloadShelfView::OnPaint(gfx::Canvas* canvas) { | 187 void DownloadShelfView::OnPaint(gfx::Canvas* canvas) { |
| 190 OnPaintBackground(canvas); | 188 OnPaintBackground(canvas); |
| 191 OnPaintBorder(canvas); | 189 OnPaintBorder(canvas); |
| 192 | 190 |
| 193 // Draw the focus rect here, since it's outside the bounds of the item. | 191 // Draw the focus rect here, since it's outside the bounds of the item. |
| 194 for (size_t i = 0; i < download_views_.size(); ++i) { | 192 for (size_t i = 0; i < download_views_.size(); ++i) { |
| 195 if (download_views_[i]->HasFocus()) { | 193 if (download_views_[i]->HasFocus()) { |
| 196 gfx::Rect r = GetFocusRectBounds(download_views_[i]); | 194 gfx::Rect r = GetFocusRectBounds(download_views_[i]); |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 244 | 242 |
| 245 void DownloadShelfView::AnimationEnded(const ui::Animation *animation) { | 243 void DownloadShelfView::AnimationEnded(const ui::Animation *animation) { |
| 246 if (animation == shelf_animation_.get()) { | 244 if (animation == shelf_animation_.get()) { |
| 247 parent_->SetDownloadShelfVisible(shelf_animation_->IsShowing()); | 245 parent_->SetDownloadShelfVisible(shelf_animation_->IsShowing()); |
| 248 if (!shelf_animation_->IsShowing()) | 246 if (!shelf_animation_->IsShowing()) |
| 249 Closed(); | 247 Closed(); |
| 250 } | 248 } |
| 251 } | 249 } |
| 252 | 250 |
| 253 void DownloadShelfView::Layout() { | 251 void DownloadShelfView::Layout() { |
| 254 // Now that we know we have a parent, we can safely set our theme colors. | |
| 255 show_all_view_->SetColor( | |
| 256 GetThemeProvider()->GetColor(ThemeService::COLOR_BOOKMARK_TEXT)); | |
| 257 set_background(views::Background::CreateSolidBackground( | |
| 258 GetThemeProvider()->GetColor(ThemeService::COLOR_TOOLBAR))); | |
| 259 | |
| 260 // Let our base class layout our child views | 252 // Let our base class layout our child views |
| 261 views::View::Layout(); | 253 views::View::Layout(); |
| 262 | 254 |
| 263 // If there is not enough room to show the first download item, show the | 255 // If there is not enough room to show the first download item, show the |
| 264 // "Show all downloads" link to the left to make it more visible that there is | 256 // "Show all downloads" link to the left to make it more visible that there is |
| 265 // something to see. | 257 // something to see. |
| 266 bool show_link_only = !CanFitFirstDownloadItem(); | 258 bool show_link_only = !CanFitFirstDownloadItem(); |
| 267 | 259 |
| 268 gfx::Size image_size = arrow_image_->GetPreferredSize(); | 260 gfx::Size image_size = arrow_image_->GetPreferredSize(); |
| 269 gfx::Size close_button_size = close_button_->GetPreferredSize(); | 261 gfx::Size close_button_size = close_button_->GetPreferredSize(); |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 320 if (next_x < max_download_x) { | 312 if (next_x < max_download_x) { |
| 321 (*ri)->SetVisible(true); | 313 (*ri)->SetVisible(true); |
| 322 (*ri)->SetBounds(x, CenterPosition(view_size.height(), height()), | 314 (*ri)->SetBounds(x, CenterPosition(view_size.height(), height()), |
| 323 item_width, view_size.height()); | 315 item_width, view_size.height()); |
| 324 } else { | 316 } else { |
| 325 (*ri)->SetVisible(false); | 317 (*ri)->SetVisible(false); |
| 326 } | 318 } |
| 327 } | 319 } |
| 328 } | 320 } |
| 329 | 321 |
| 322 void DownloadShelfView::ViewHierarchyChanged(bool is_add, |
| 323 View* parent, |
| 324 View* child) { |
| 325 View::ViewHierarchyChanged(is_add, parent, child); |
| 326 |
| 327 if (is_add && (child == this)) { |
| 328 // Now that we know we have a parent, we can safely set our theme colors. |
| 329 set_background(views::Background::CreateSolidBackground( |
| 330 GetThemeProvider()->GetColor(ThemeService::COLOR_TOOLBAR))); |
| 331 show_all_view_->SetBackgroundColor(background()->get_color()); |
| 332 show_all_view_->SetEnabledColor( |
| 333 GetThemeProvider()->GetColor(ThemeService::COLOR_BOOKMARK_TEXT)); |
| 334 } |
| 335 } |
| 336 |
| 330 bool DownloadShelfView::CanFitFirstDownloadItem() { | 337 bool DownloadShelfView::CanFitFirstDownloadItem() { |
| 331 if (download_views_.empty()) | 338 if (download_views_.empty()) |
| 332 return true; | 339 return true; |
| 333 | 340 |
| 334 gfx::Size image_size = arrow_image_->GetPreferredSize(); | 341 gfx::Size image_size = arrow_image_->GetPreferredSize(); |
| 335 gfx::Size close_button_size = close_button_->GetPreferredSize(); | 342 gfx::Size close_button_size = close_button_->GetPreferredSize(); |
| 336 gfx::Size show_all_size = show_all_view_->GetPreferredSize(); | 343 gfx::Size show_all_size = show_all_view_->GetPreferredSize(); |
| 337 | 344 |
| 338 // Let's compute the width available for download items, which is the width | 345 // Let's compute the width available for download items, which is the width |
| 339 // of the shelf minus the "Show all downloads" link, arrow and close button | 346 // of the shelf minus the "Show all downloads" link, arrow and close button |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 444 const DownloadItemView* download_item_view) { | 451 const DownloadItemView* download_item_view) { |
| 445 gfx::Rect bounds = download_item_view->bounds(); | 452 gfx::Rect bounds = download_item_view->bounds(); |
| 446 | 453 |
| 447 #if defined(TOOLKIT_VIEWS) | 454 #if defined(TOOLKIT_VIEWS) |
| 448 bounds.set_height(bounds.height() - 1); | 455 bounds.set_height(bounds.height() - 1); |
| 449 bounds.Offset(0, 3); | 456 bounds.Offset(0, 3); |
| 450 #endif | 457 #endif |
| 451 | 458 |
| 452 return bounds; | 459 return bounds; |
| 453 } | 460 } |
| OLD | NEW |