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 |