| 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 | 8 |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/utf_string_conversions.h" | 10 #include "base/utf_string_conversions.h" |
| 11 #include "chrome/browser/download/download_item_model.h" | 11 #include "chrome/browser/download/download_item_model.h" |
| 12 #include "chrome/browser/themes/theme_service.h" | 12 #include "chrome/browser/themes/theme_service.h" |
| 13 #include "chrome/browser/ui/browser.h" | 13 #include "chrome/browser/ui/browser.h" |
| 14 #include "chrome/browser/ui/view_ids.h" | 14 #include "chrome/browser/ui/view_ids.h" |
| 15 #include "chrome/browser/ui/views/download/download_item_view.h" | 15 #include "chrome/browser/ui/views/download/download_item_view.h" |
| 16 #include "chrome/browser/ui/views/frame/browser_view.h" | 16 #include "chrome/browser/ui/views/frame/browser_view.h" |
| 17 #include "content/browser/download/download_item.h" | 17 #include "content/browser/download/download_item.h" |
| 18 #include "content/browser/download/download_stats.h" |
| 18 #include "content/browser/download/download_manager.h" | 19 #include "content/browser/download/download_manager.h" |
| 19 #include "content/browser/tab_contents/navigation_entry.h" | 20 #include "content/browser/tab_contents/navigation_entry.h" |
| 20 #include "grit/generated_resources.h" | 21 #include "grit/generated_resources.h" |
| 21 #include "grit/theme_resources.h" | 22 #include "grit/theme_resources.h" |
| 22 #include "grit/theme_resources_standard.h" | 23 #include "grit/theme_resources_standard.h" |
| 23 #include "ui/base/animation/slide_animation.h" | 24 #include "ui/base/animation/slide_animation.h" |
| 24 #include "ui/base/l10n/l10n_util.h" | 25 #include "ui/base/l10n/l10n_util.h" |
| 25 #include "ui/base/resource/resource_bundle.h" | 26 #include "ui/base/resource/resource_bundle.h" |
| 26 #include "ui/gfx/canvas.h" | 27 #include "ui/gfx/canvas.h" |
| 27 #include "views/background.h" | 28 #include "views/background.h" |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 80 | 81 |
| 81 int CenterPosition(int size, int target_size) { | 82 int CenterPosition(int size, int target_size) { |
| 82 return std::max((target_size - size) / 2, kTopBottomPadding); | 83 return std::max((target_size - size) / 2, kTopBottomPadding); |
| 83 } | 84 } |
| 84 | 85 |
| 85 } // namespace | 86 } // namespace |
| 86 | 87 |
| 87 DownloadShelfView::DownloadShelfView(Browser* browser, BrowserView* parent) | 88 DownloadShelfView::DownloadShelfView(Browser* browser, BrowserView* parent) |
| 88 : browser_(browser), | 89 : browser_(browser), |
| 89 parent_(parent), | 90 parent_(parent), |
| 91 auto_closed_(true), |
| 90 ALLOW_THIS_IN_INITIALIZER_LIST( | 92 ALLOW_THIS_IN_INITIALIZER_LIST( |
| 91 mouse_watcher_(this, this, gfx::Insets())) { | 93 mouse_watcher_(this, this, gfx::Insets())) { |
| 92 mouse_watcher_.set_notify_on_exit_time_ms(kNotifyOnExitTimeMS); | 94 mouse_watcher_.set_notify_on_exit_time_ms(kNotifyOnExitTimeMS); |
| 93 set_id(VIEW_ID_DOWNLOAD_SHELF); | 95 set_id(VIEW_ID_DOWNLOAD_SHELF); |
| 94 parent->AddChildView(this); | 96 parent->AddChildView(this); |
| 95 Init(); | 97 Init(); |
| 96 } | 98 } |
| 97 | 99 |
| 98 DownloadShelfView::~DownloadShelfView() { | 100 DownloadShelfView::~DownloadShelfView() { |
| 99 parent_->RemoveChildView(this); | 101 parent_->RemoveChildView(this); |
| (...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 360 void DownloadShelfView::OnThemeChanged() { | 362 void DownloadShelfView::OnThemeChanged() { |
| 361 UpdateButtonColors(); | 363 UpdateButtonColors(); |
| 362 } | 364 } |
| 363 | 365 |
| 364 void DownloadShelfView::LinkClicked(views::Link* source, int event_flags) { | 366 void DownloadShelfView::LinkClicked(views::Link* source, int event_flags) { |
| 365 browser_->ShowDownloadsTab(); | 367 browser_->ShowDownloadsTab(); |
| 366 } | 368 } |
| 367 | 369 |
| 368 void DownloadShelfView::ButtonPressed( | 370 void DownloadShelfView::ButtonPressed( |
| 369 views::Button* button, const views::Event& event) { | 371 views::Button* button, const views::Event& event) { |
| 372 auto_closed_ = false; |
| 370 Close(); | 373 Close(); |
| 371 } | 374 } |
| 372 | 375 |
| 373 bool DownloadShelfView::IsShowing() const { | 376 bool DownloadShelfView::IsShowing() const { |
| 374 return shelf_animation_->IsShowing(); | 377 return shelf_animation_->IsShowing(); |
| 375 } | 378 } |
| 376 | 379 |
| 377 bool DownloadShelfView::IsClosing() const { | 380 bool DownloadShelfView::IsClosing() const { |
| 378 return shelf_animation_->IsClosing(); | 381 return shelf_animation_->IsClosing(); |
| 379 } | 382 } |
| 380 | 383 |
| 381 void DownloadShelfView::Show() { | 384 void DownloadShelfView::Show() { |
| 382 shelf_animation_->Show(); | 385 shelf_animation_->Show(); |
| 383 } | 386 } |
| 384 | 387 |
| 385 void DownloadShelfView::Close() { | 388 void DownloadShelfView::Close() { |
| 389 int num_in_progress = 0; |
| 390 for (size_t i = 0; i < download_views_.size(); ++i) { |
| 391 if (download_views_[i]->download()->IsInProgress()) |
| 392 ++num_in_progress; |
| 393 } |
| 394 download_stats::RecordShelfClose( |
| 395 download_views_.size(), num_in_progress, auto_closed_); |
| 386 parent_->SetDownloadShelfVisible(false); | 396 parent_->SetDownloadShelfVisible(false); |
| 387 shelf_animation_->Hide(); | 397 shelf_animation_->Hide(); |
| 398 auto_closed_ = true; |
| 388 } | 399 } |
| 389 | 400 |
| 390 Browser* DownloadShelfView::browser() const { | 401 Browser* DownloadShelfView::browser() const { |
| 391 return browser_; | 402 return browser_; |
| 392 } | 403 } |
| 393 | 404 |
| 394 void DownloadShelfView::Closed() { | 405 void DownloadShelfView::Closed() { |
| 395 // When the close animation is complete, remove all completed downloads. | 406 // When the close animation is complete, remove all completed downloads. |
| 396 size_t i = 0; | 407 size_t i = 0; |
| 397 while (i < download_views_.size()) { | 408 while (i < download_views_.size()) { |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 443 const DownloadItemView* download_item_view) { | 454 const DownloadItemView* download_item_view) { |
| 444 gfx::Rect bounds = download_item_view->bounds(); | 455 gfx::Rect bounds = download_item_view->bounds(); |
| 445 | 456 |
| 446 #if defined(TOOLKIT_VIEWS) | 457 #if defined(TOOLKIT_VIEWS) |
| 447 bounds.set_height(bounds.height() - 1); | 458 bounds.set_height(bounds.height() - 1); |
| 448 bounds.Offset(0, 3); | 459 bounds.Offset(0, 3); |
| 449 #endif | 460 #endif |
| 450 | 461 |
| 451 return bounds; | 462 return bounds; |
| 452 } | 463 } |
| OLD | NEW |