| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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" |
| 11 #include "base/strings/utf_string_conversions.h" | 11 #include "base/strings/utf_string_conversions.h" |
| 12 #include "chrome/browser/download/download_item_model.h" | 12 #include "chrome/browser/download/download_item_model.h" |
| 13 #include "chrome/browser/download/download_stats.h" | 13 #include "chrome/browser/download/download_stats.h" |
| 14 #include "chrome/browser/themes/theme_properties.h" | 14 #include "chrome/browser/themes/theme_properties.h" |
| 15 #include "chrome/browser/ui/browser.h" | 15 #include "chrome/browser/ui/browser.h" |
| 16 #include "chrome/browser/ui/chrome_pages.h" | 16 #include "chrome/browser/ui/chrome_pages.h" |
| 17 #include "chrome/browser/ui/view_ids.h" | 17 #include "chrome/browser/ui/view_ids.h" |
| 18 #include "chrome/browser/ui/views/download/download_item_view.h" | 18 #include "chrome/browser/ui/views/download/download_item_view.h" |
| 19 #include "chrome/browser/ui/views/frame/browser_view.h" | 19 #include "chrome/browser/ui/views/frame/browser_view.h" |
| 20 #include "content/public/browser/download_item.h" | 20 #include "content/public/browser/download_item.h" |
| 21 #include "content/public/browser/download_manager.h" | 21 #include "content/public/browser/download_manager.h" |
| 22 #include "content/public/browser/page_navigator.h" | 22 #include "content/public/browser/page_navigator.h" |
| 23 #include "grit/generated_resources.h" | 23 #include "grit/generated_resources.h" |
| 24 #include "grit/theme_resources.h" | 24 #include "grit/theme_resources.h" |
| 25 #include "grit/ui_resources.h" | 25 #include "grit/ui_resources.h" |
| 26 #include "ui/base/animation/slide_animation.h" | |
| 27 #include "ui/base/l10n/l10n_util.h" | 26 #include "ui/base/l10n/l10n_util.h" |
| 28 #include "ui/base/resource/resource_bundle.h" | 27 #include "ui/base/resource/resource_bundle.h" |
| 29 #include "ui/base/theme_provider.h" | 28 #include "ui/base/theme_provider.h" |
| 29 #include "ui/gfx/animation/slide_animation.h" |
| 30 #include "ui/gfx/canvas.h" | 30 #include "ui/gfx/canvas.h" |
| 31 #include "ui/views/background.h" | 31 #include "ui/views/background.h" |
| 32 #include "ui/views/controls/button/image_button.h" | 32 #include "ui/views/controls/button/image_button.h" |
| 33 #include "ui/views/controls/image_view.h" | 33 #include "ui/views/controls/image_view.h" |
| 34 #include "ui/views/controls/link.h" | 34 #include "ui/views/controls/link.h" |
| 35 #include "ui/views/mouse_watcher_view_host.h" | 35 #include "ui/views/mouse_watcher_view_host.h" |
| 36 | 36 |
| 37 // Max number of download views we'll contain. Any time a view is added and | 37 // Max number of download views we'll contain. Any time a view is added and |
| 38 // we already have this many download views, one is removed. | 38 // we already have this many download views, one is removed. |
| 39 static const size_t kMaxDownloadViews = 15; | 39 static const size_t kMaxDownloadViews = 15; |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 202 } | 202 } |
| 203 prefsize.Enlarge(0, kTopBottomPadding + kTopBottomPadding); | 203 prefsize.Enlarge(0, kTopBottomPadding + kTopBottomPadding); |
| 204 if (shelf_animation_->is_animating()) { | 204 if (shelf_animation_->is_animating()) { |
| 205 prefsize.set_height(static_cast<int>( | 205 prefsize.set_height(static_cast<int>( |
| 206 static_cast<double>(prefsize.height()) * | 206 static_cast<double>(prefsize.height()) * |
| 207 shelf_animation_->GetCurrentValue())); | 207 shelf_animation_->GetCurrentValue())); |
| 208 } | 208 } |
| 209 return prefsize; | 209 return prefsize; |
| 210 } | 210 } |
| 211 | 211 |
| 212 void DownloadShelfView::AnimationProgressed(const ui::Animation *animation) { | 212 void DownloadShelfView::AnimationProgressed(const gfx::Animation *animation) { |
| 213 if (animation == new_item_animation_.get()) { | 213 if (animation == new_item_animation_.get()) { |
| 214 Layout(); | 214 Layout(); |
| 215 SchedulePaint(); | 215 SchedulePaint(); |
| 216 } else if (animation == shelf_animation_.get()) { | 216 } else if (animation == shelf_animation_.get()) { |
| 217 // Force a re-layout of the parent, which will call back into | 217 // Force a re-layout of the parent, which will call back into |
| 218 // GetPreferredSize, where we will do our animation. In the case where the | 218 // GetPreferredSize, where we will do our animation. In the case where the |
| 219 // animation is hiding, we do a full resize - the fast resizing would | 219 // animation is hiding, we do a full resize - the fast resizing would |
| 220 // otherwise leave blank white areas where the shelf was and where the | 220 // otherwise leave blank white areas where the shelf was and where the |
| 221 // user's eye is. Thankfully bottom-resizing is a lot faster than | 221 // user's eye is. Thankfully bottom-resizing is a lot faster than |
| 222 // top-resizing. | 222 // top-resizing. |
| 223 parent_->ToolbarSizeChanged(shelf_animation_->IsShowing()); | 223 parent_->ToolbarSizeChanged(shelf_animation_->IsShowing()); |
| 224 } | 224 } |
| 225 } | 225 } |
| 226 | 226 |
| 227 void DownloadShelfView::AnimationEnded(const ui::Animation *animation) { | 227 void DownloadShelfView::AnimationEnded(const gfx::Animation *animation) { |
| 228 if (animation == shelf_animation_.get()) { | 228 if (animation == shelf_animation_.get()) { |
| 229 parent_->SetDownloadShelfVisible(shelf_animation_->IsShowing()); | 229 parent_->SetDownloadShelfVisible(shelf_animation_->IsShowing()); |
| 230 if (!shelf_animation_->IsShowing()) | 230 if (!shelf_animation_->IsShowing()) |
| 231 Closed(); | 231 Closed(); |
| 232 } | 232 } |
| 233 } | 233 } |
| 234 | 234 |
| 235 void DownloadShelfView::Layout() { | 235 void DownloadShelfView::Layout() { |
| 236 // Let our base class layout our child views | 236 // Let our base class layout our child views |
| 237 views::View::Layout(); | 237 views::View::Layout(); |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 324 close_button_->SetImage(views::CustomButton::STATE_HOVERED, | 324 close_button_->SetImage(views::CustomButton::STATE_HOVERED, |
| 325 rb.GetImageSkiaNamed(IDR_CLOSE_1_H)); | 325 rb.GetImageSkiaNamed(IDR_CLOSE_1_H)); |
| 326 close_button_->SetImage(views::CustomButton::STATE_PRESSED, | 326 close_button_->SetImage(views::CustomButton::STATE_PRESSED, |
| 327 rb.GetImageSkiaNamed(IDR_CLOSE_1_P)); | 327 rb.GetImageSkiaNamed(IDR_CLOSE_1_P)); |
| 328 close_button_->SetAccessibleName( | 328 close_button_->SetAccessibleName( |
| 329 l10n_util::GetStringUTF16(IDS_ACCNAME_CLOSE)); | 329 l10n_util::GetStringUTF16(IDS_ACCNAME_CLOSE)); |
| 330 AddChildView(close_button_); | 330 AddChildView(close_button_); |
| 331 | 331 |
| 332 UpdateColorsFromTheme(); | 332 UpdateColorsFromTheme(); |
| 333 | 333 |
| 334 new_item_animation_.reset(new ui::SlideAnimation(this)); | 334 new_item_animation_.reset(new gfx::SlideAnimation(this)); |
| 335 new_item_animation_->SetSlideDuration(kNewItemAnimationDurationMs); | 335 new_item_animation_->SetSlideDuration(kNewItemAnimationDurationMs); |
| 336 | 336 |
| 337 shelf_animation_.reset(new ui::SlideAnimation(this)); | 337 shelf_animation_.reset(new gfx::SlideAnimation(this)); |
| 338 shelf_animation_->SetSlideDuration(kShelfAnimationDurationMs); | 338 shelf_animation_->SetSlideDuration(kShelfAnimationDurationMs); |
| 339 } | 339 } |
| 340 } | 340 } |
| 341 | 341 |
| 342 bool DownloadShelfView::CanFitFirstDownloadItem() { | 342 bool DownloadShelfView::CanFitFirstDownloadItem() { |
| 343 if (download_views_.empty()) | 343 if (download_views_.empty()) |
| 344 return true; | 344 return true; |
| 345 | 345 |
| 346 gfx::Size image_size = arrow_image_->GetPreferredSize(); | 346 gfx::Size image_size = arrow_image_->GetPreferredSize(); |
| 347 gfx::Size close_button_size = close_button_->GetPreferredSize(); | 347 gfx::Size close_button_size = close_button_->GetPreferredSize(); |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 472 const DownloadItemView* download_item_view) { | 472 const DownloadItemView* download_item_view) { |
| 473 gfx::Rect bounds = download_item_view->bounds(); | 473 gfx::Rect bounds = download_item_view->bounds(); |
| 474 | 474 |
| 475 #if defined(TOOLKIT_VIEWS) | 475 #if defined(TOOLKIT_VIEWS) |
| 476 bounds.set_height(bounds.height() - 1); | 476 bounds.set_height(bounds.height() - 1); |
| 477 bounds.Offset(0, 3); | 477 bounds.Offset(0, 3); |
| 478 #endif | 478 #endif |
| 479 | 479 |
| 480 return bounds; | 480 return bounds; |
| 481 } | 481 } |
| OLD | NEW |