| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 "ui/message_center/views/message_center_view.h" | 5 #include "ui/message_center/views/message_center_view.h" |
| 6 | 6 |
| 7 #include <list> | 7 #include <list> |
| 8 #include <map> | 8 #include <map> |
| 9 | 9 |
| 10 #include "base/memory/weak_ptr.h" | 10 #include "base/memory/weak_ptr.h" |
| 11 #include "base/message_loop/message_loop.h" | 11 #include "base/message_loop/message_loop.h" |
| 12 #include "base/stl_util.h" | 12 #include "base/stl_util.h" |
| 13 #include "grit/ui_strings.h" | 13 #include "grit/ui_strings.h" |
| 14 #include "ui/base/animation/multi_animation.h" | |
| 15 #include "ui/base/animation/slide_animation.h" | |
| 16 #include "ui/base/l10n/l10n_util.h" | 14 #include "ui/base/l10n/l10n_util.h" |
| 15 #include "ui/gfx/animation/multi_animation.h" |
| 16 #include "ui/gfx/animation/slide_animation.h" |
| 17 #include "ui/gfx/canvas.h" | 17 #include "ui/gfx/canvas.h" |
| 18 #include "ui/gfx/insets.h" | 18 #include "ui/gfx/insets.h" |
| 19 #include "ui/gfx/rect.h" | 19 #include "ui/gfx/rect.h" |
| 20 #include "ui/gfx/size.h" | 20 #include "ui/gfx/size.h" |
| 21 #include "ui/message_center/message_center.h" | 21 #include "ui/message_center/message_center.h" |
| 22 #include "ui/message_center/message_center_style.h" | 22 #include "ui/message_center/message_center_style.h" |
| 23 #include "ui/message_center/message_center_types.h" | 23 #include "ui/message_center/message_center_types.h" |
| 24 #include "ui/message_center/views/message_center_button_bar.h" | 24 #include "ui/message_center/views/message_center_button_bar.h" |
| 25 #include "ui/message_center/views/message_view.h" | 25 #include "ui/message_center/views/message_view.h" |
| 26 #include "ui/message_center/views/notification_view.h" | 26 #include "ui/message_center/views/notification_view.h" |
| (...skipping 382 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 409 clearing_all_views_.push_back(child); | 409 clearing_all_views_.push_back(child); |
| 410 } | 410 } |
| 411 DoUpdateIfPossible(); | 411 DoUpdateIfPossible(); |
| 412 } | 412 } |
| 413 | 413 |
| 414 void MessageListView::OnBoundsAnimatorProgressed( | 414 void MessageListView::OnBoundsAnimatorProgressed( |
| 415 views::BoundsAnimator* animator) { | 415 views::BoundsAnimator* animator) { |
| 416 DCHECK_EQ(animator_.get(), animator); | 416 DCHECK_EQ(animator_.get(), animator); |
| 417 for (std::set<views::View*>::iterator iter = deleted_when_done_.begin(); | 417 for (std::set<views::View*>::iterator iter = deleted_when_done_.begin(); |
| 418 iter != deleted_when_done_.end(); ++iter) { | 418 iter != deleted_when_done_.end(); ++iter) { |
| 419 const ui::SlideAnimation* animation = animator->GetAnimationForView(*iter); | 419 const gfx::SlideAnimation* animation = animator->GetAnimationForView(*iter); |
| 420 if (animation) | 420 if (animation) |
| 421 (*iter)->layer()->SetOpacity(animation->CurrentValueBetween(1.0, 0.0)); | 421 (*iter)->layer()->SetOpacity(animation->CurrentValueBetween(1.0, 0.0)); |
| 422 } | 422 } |
| 423 } | 423 } |
| 424 | 424 |
| 425 void MessageListView::OnBoundsAnimatorDone(views::BoundsAnimator* animator) { | 425 void MessageListView::OnBoundsAnimatorDone(views::BoundsAnimator* animator) { |
| 426 STLDeleteContainerPointers( | 426 STLDeleteContainerPointers( |
| 427 deleted_when_done_.begin(), deleted_when_done_.end()); | 427 deleted_when_done_.begin(), deleted_when_done_.end()); |
| 428 deleted_when_done_.clear(); | 428 deleted_when_done_.clear(); |
| 429 | 429 |
| (...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 677 if (visible) { | 677 if (visible) { |
| 678 source_view_ = scroller_; | 678 source_view_ = scroller_; |
| 679 target_view_ = settings_view_; | 679 target_view_ = settings_view_; |
| 680 } else { | 680 } else { |
| 681 source_view_ = settings_view_; | 681 source_view_ = settings_view_; |
| 682 target_view_ = scroller_; | 682 target_view_ = scroller_; |
| 683 } | 683 } |
| 684 source_height_ = source_view_->GetHeightForWidth(width()); | 684 source_height_ = source_view_->GetHeightForWidth(width()); |
| 685 target_height_ = target_view_->GetHeightForWidth(width()); | 685 target_height_ = target_view_->GetHeightForWidth(width()); |
| 686 | 686 |
| 687 ui::MultiAnimation::Parts parts; | 687 gfx::MultiAnimation::Parts parts; |
| 688 // First part: slide resize animation. | 688 // First part: slide resize animation. |
| 689 parts.push_back(ui::MultiAnimation::Part( | 689 parts.push_back(gfx::MultiAnimation::Part( |
| 690 (source_height_ == target_height_) ? 0 : kDefaultAnimationDurationMs, | 690 (source_height_ == target_height_) ? 0 : kDefaultAnimationDurationMs, |
| 691 ui::Tween::EASE_OUT)); | 691 gfx::Tween::EASE_OUT)); |
| 692 // Second part: fade-out the source_view. | 692 // Second part: fade-out the source_view. |
| 693 if (source_view_->layer()) { | 693 if (source_view_->layer()) { |
| 694 parts.push_back(ui::MultiAnimation::Part( | 694 parts.push_back(gfx::MultiAnimation::Part( |
| 695 kDefaultAnimationDurationMs, ui::Tween::LINEAR)); | 695 kDefaultAnimationDurationMs, gfx::Tween::LINEAR)); |
| 696 } else { | 696 } else { |
| 697 parts.push_back(ui::MultiAnimation::Part()); | 697 parts.push_back(gfx::MultiAnimation::Part()); |
| 698 } | 698 } |
| 699 // Third part: fade-in the target_view. | 699 // Third part: fade-in the target_view. |
| 700 if (target_view_->layer()) { | 700 if (target_view_->layer()) { |
| 701 parts.push_back(ui::MultiAnimation::Part( | 701 parts.push_back(gfx::MultiAnimation::Part( |
| 702 kDefaultAnimationDurationMs, ui::Tween::LINEAR)); | 702 kDefaultAnimationDurationMs, gfx::Tween::LINEAR)); |
| 703 target_view_->layer()->SetOpacity(0); | 703 target_view_->layer()->SetOpacity(0); |
| 704 target_view_->SetVisible(true); | 704 target_view_->SetVisible(true); |
| 705 } else { | 705 } else { |
| 706 parts.push_back(ui::MultiAnimation::Part()); | 706 parts.push_back(gfx::MultiAnimation::Part()); |
| 707 } | 707 } |
| 708 settings_transition_animation_.reset(new ui::MultiAnimation( | 708 settings_transition_animation_.reset(new gfx::MultiAnimation( |
| 709 parts, base::TimeDelta::FromMicroseconds(1000000 / kDefaultFrameRateHz))); | 709 parts, base::TimeDelta::FromMicroseconds(1000000 / kDefaultFrameRateHz))); |
| 710 settings_transition_animation_->set_delegate(this); | 710 settings_transition_animation_->set_delegate(this); |
| 711 settings_transition_animation_->set_continuous(false); | 711 settings_transition_animation_->set_continuous(false); |
| 712 settings_transition_animation_->Start(); | 712 settings_transition_animation_->Start(); |
| 713 | 713 |
| 714 button_bar_->SetBackArrowVisible(visible); | 714 button_bar_->SetBackArrowVisible(visible); |
| 715 } | 715 } |
| 716 | 716 |
| 717 void MessageCenterView::ClearAllNotifications() { | 717 void MessageCenterView::ClearAllNotifications() { |
| 718 if (is_closing_) | 718 if (is_closing_) |
| (...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 925 // notification. | 925 // notification. |
| 926 view->set_scroller(scroller_); | 926 view->set_scroller(scroller_); |
| 927 message_list_view_->UpdateNotificationAt(view, index); | 927 message_list_view_->UpdateNotificationAt(view, index); |
| 928 message_views_[index] = view; | 928 message_views_[index] = view; |
| 929 NotificationsChanged(); | 929 NotificationsChanged(); |
| 930 break; | 930 break; |
| 931 } | 931 } |
| 932 } | 932 } |
| 933 } | 933 } |
| 934 | 934 |
| 935 void MessageCenterView::AnimationEnded(const ui::Animation* animation) { | 935 void MessageCenterView::AnimationEnded(const gfx::Animation* animation) { |
| 936 DCHECK_EQ(animation, settings_transition_animation_.get()); | 936 DCHECK_EQ(animation, settings_transition_animation_.get()); |
| 937 | 937 |
| 938 Visibility visibility = target_view_ == settings_view_ | 938 Visibility visibility = target_view_ == settings_view_ |
| 939 ? VISIBILITY_SETTINGS | 939 ? VISIBILITY_SETTINGS |
| 940 : VISIBILITY_MESSAGE_CENTER; | 940 : VISIBILITY_MESSAGE_CENTER; |
| 941 message_center_->SetVisibility(visibility); | 941 message_center_->SetVisibility(visibility); |
| 942 | 942 |
| 943 source_view_->SetVisible(false); | 943 source_view_->SetVisible(false); |
| 944 target_view_->SetVisible(true); | 944 target_view_->SetVisible(true); |
| 945 if (source_view_->layer()) | 945 if (source_view_->layer()) |
| 946 source_view_->layer()->SetOpacity(1.0); | 946 source_view_->layer()->SetOpacity(1.0); |
| 947 if (target_view_->layer()) | 947 if (target_view_->layer()) |
| 948 target_view_->layer()->SetOpacity(1.0); | 948 target_view_->layer()->SetOpacity(1.0); |
| 949 settings_transition_animation_.reset(); | 949 settings_transition_animation_.reset(); |
| 950 PreferredSizeChanged(); | 950 PreferredSizeChanged(); |
| 951 Layout(); | 951 Layout(); |
| 952 } | 952 } |
| 953 | 953 |
| 954 void MessageCenterView::AnimationProgressed(const ui::Animation* animation) { | 954 void MessageCenterView::AnimationProgressed(const gfx::Animation* animation) { |
| 955 DCHECK_EQ(animation, settings_transition_animation_.get()); | 955 DCHECK_EQ(animation, settings_transition_animation_.get()); |
| 956 PreferredSizeChanged(); | 956 PreferredSizeChanged(); |
| 957 if (settings_transition_animation_->current_part_index() == 1 && | 957 if (settings_transition_animation_->current_part_index() == 1 && |
| 958 source_view_->layer()) { | 958 source_view_->layer()) { |
| 959 source_view_->layer()->SetOpacity( | 959 source_view_->layer()->SetOpacity( |
| 960 1.0 - settings_transition_animation_->GetCurrentValue()); | 960 1.0 - settings_transition_animation_->GetCurrentValue()); |
| 961 SchedulePaint(); | 961 SchedulePaint(); |
| 962 } else if (settings_transition_animation_->current_part_index() == 2 && | 962 } else if (settings_transition_animation_->current_part_index() == 2 && |
| 963 target_view_->layer()) { | 963 target_view_->layer()) { |
| 964 target_view_->layer()->SetOpacity( | 964 target_view_->layer()->SetOpacity( |
| 965 settings_transition_animation_->GetCurrentValue()); | 965 settings_transition_animation_->GetCurrentValue()); |
| 966 SchedulePaint(); | 966 SchedulePaint(); |
| 967 } | 967 } |
| 968 } | 968 } |
| 969 | 969 |
| 970 void MessageCenterView::AnimationCanceled(const ui::Animation* animation) { | 970 void MessageCenterView::AnimationCanceled(const gfx::Animation* animation) { |
| 971 DCHECK_EQ(animation, settings_transition_animation_.get()); | 971 DCHECK_EQ(animation, settings_transition_animation_.get()); |
| 972 AnimationEnded(animation); | 972 AnimationEnded(animation); |
| 973 } | 973 } |
| 974 | 974 |
| 975 void MessageCenterView::AddNotificationAt(const Notification& notification, | 975 void MessageCenterView::AddNotificationAt(const Notification& notification, |
| 976 int index) { | 976 int index) { |
| 977 // NotificationViews are expanded by default here until | 977 // NotificationViews are expanded by default here until |
| 978 // http://crbug.com/217902 is fixed. TODO(dharcourt): Fix. | 978 // http://crbug.com/217902 is fixed. TODO(dharcourt): Fix. |
| 979 MessageView* view = | 979 MessageView* view = |
| 980 NotificationView::Create(notification, | 980 NotificationView::Create(notification, |
| (...skipping 18 matching lines...) Expand all Loading... |
| 999 scroller_->InvalidateLayout(); | 999 scroller_->InvalidateLayout(); |
| 1000 PreferredSizeChanged(); | 1000 PreferredSizeChanged(); |
| 1001 Layout(); | 1001 Layout(); |
| 1002 } | 1002 } |
| 1003 | 1003 |
| 1004 void MessageCenterView::SetNotificationViewForTest(views::View* view) { | 1004 void MessageCenterView::SetNotificationViewForTest(views::View* view) { |
| 1005 message_list_view_->AddNotificationAt(view, 0); | 1005 message_list_view_->AddNotificationAt(view, 0); |
| 1006 } | 1006 } |
| 1007 | 1007 |
| 1008 } // namespace message_center | 1008 } // namespace message_center |
| OLD | NEW |