Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(988)

Unified Diff: ash/launcher/launcher_button.cc

Issue 10829268: chromeos: Sync animation. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix unit_tests crash + rebase Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ash/launcher/launcher_button.h ('k') | ash/launcher/launcher_model.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/launcher/launcher_button.cc
diff --git a/ash/launcher/launcher_button.cc b/ash/launcher/launcher_button.cc
index b550d56db4cf73964c701957bccf2e92ca1c30ae..c0d06850698a5e0a8ad999610999c9f307c41c27 100644
--- a/ash/launcher/launcher_button.cc
+++ b/ash/launcher/launcher_button.cc
@@ -5,7 +5,6 @@
#include "ash/launcher/launcher_button.h"
#include <algorithm>
-#include <vector>
#include "ash/launcher/launcher_button_host.h"
#include "grit/ui_resources.h"
@@ -16,14 +15,10 @@
#include "ui/base/events.h"
#include "ui/base/resource/resource_bundle.h"
#include "ui/compositor/layer.h"
-#include "ui/compositor/layer_animation_element.h"
-#include "ui/compositor/layer_animation_observer.h"
-#include "ui/compositor/layer_animation_sequence.h"
#include "ui/compositor/scoped_layer_animation_settings.h"
#include "ui/gfx/canvas.h"
#include "ui/gfx/image/image.h"
#include "ui/gfx/image/image_skia_operations.h"
-#include "ui/gfx/transform_util.h"
#include "ui/views/controls/image_view.h"
namespace {
@@ -100,102 +95,6 @@ class LauncherButton::BarView : public views::ImageView,
};
////////////////////////////////////////////////////////////////////////////////
-// LauncherButton::IconPulseAnimation
-
-// IconPulseAnimation plays a pulse animation in a loop for given |icon_view|.
-// It iterates through all animations, wait for one duration then starts again.
-class LauncherButton::IconPulseAnimation {
- public:
- explicit IconPulseAnimation(IconView* icon_view)
- : icon_view_(icon_view) {
- SchedulePulseAnimations();
- }
- virtual ~IconPulseAnimation() {
- // Restore icon_view_ on destruction.
- ScheduleRestoreAnimation();
- }
-
- private:
- // Animation duration in millisecond.
- static const int kAnimationDurationInMs;
-
- // Number of animations to run and animation parameters.
- static const float kAnimationOpacity[];
- static const float kAnimationScale[];
-
- // Schedules pulse animations.
- void SchedulePulseAnimations();
-
- // Schedule an animation to restore the view to normal state.
- void ScheduleRestoreAnimation();
-
- IconView* icon_view_; // Owned by views hierarchy of LauncherButton.
-
- DISALLOW_COPY_AND_ASSIGN(IconPulseAnimation);
-};
-
-// static
-const int LauncherButton::IconPulseAnimation::kAnimationDurationInMs = 600;
-const float LauncherButton::IconPulseAnimation::kAnimationOpacity[] =
- { 0.4f, 0.8f };
-const float LauncherButton::IconPulseAnimation::kAnimationScale[] =
- { 0.8f, 1.0f };
-
-void LauncherButton::IconPulseAnimation::SchedulePulseAnimations() {
- // The two animation set should have the same size.
- DCHECK(arraysize(kAnimationOpacity) == arraysize(kAnimationScale));
-
- scoped_ptr<ui::LayerAnimationSequence> opacity_sequence(
- new ui::LayerAnimationSequence());
- scoped_ptr<ui::LayerAnimationSequence> transform_sequence(
- new ui::LayerAnimationSequence());
-
- // The animations loop infinitely.
- opacity_sequence->set_is_cyclic(true);
- transform_sequence->set_is_cyclic(true);
-
- for (size_t i = 0; i < arraysize(kAnimationOpacity); ++i) {
- opacity_sequence->AddElement(
- ui::LayerAnimationElement::CreateOpacityElement(
- kAnimationOpacity[i],
- base::TimeDelta::FromMilliseconds(kAnimationDurationInMs)));
- transform_sequence->AddElement(
- ui::LayerAnimationElement::CreateTransformElement(
- ui::GetScaleTransform(icon_view_->GetLocalBounds().CenterPoint(),
- kAnimationScale[i]),
- base::TimeDelta::FromMilliseconds(kAnimationDurationInMs)));
- }
-
- ui::LayerAnimationElement::AnimatableProperties opacity_properties;
- opacity_properties.insert(ui::LayerAnimationElement::OPACITY);
- opacity_sequence->AddElement(
- ui::LayerAnimationElement::CreatePauseElement(
- opacity_properties,
- base::TimeDelta::FromMilliseconds(kAnimationDurationInMs)));
-
- ui::LayerAnimationElement::AnimatableProperties transform_properties;
- transform_properties.insert(ui::LayerAnimationElement::TRANSFORM);
- transform_sequence->AddElement(
- ui::LayerAnimationElement::CreatePauseElement(
- transform_properties,
- base::TimeDelta::FromMilliseconds(kAnimationDurationInMs)));
-
- std::vector<ui::LayerAnimationSequence*> animations;
- // LayerAnimator::ScheduleTogether takes ownership of the sequences.
- animations.push_back(opacity_sequence.release());
- animations.push_back(transform_sequence.release());
- icon_view_->layer()->GetAnimator()->ScheduleTogether(animations);
-}
-
-// Schedule an animation to restore the view to normal state.
-void LauncherButton::IconPulseAnimation::ScheduleRestoreAnimation() {
- ui::Layer* layer = icon_view_->layer();
- ui::ScopedLayerAnimationSettings settings(layer->GetAnimator());
- layer->SetOpacity(1.0f);
- layer->SetTransform(ui::Transform());
-}
-
-////////////////////////////////////////////////////////////////////////////////
// LauncherButton::IconView
LauncherButton::IconView::IconView() : icon_size_(kIconSize) {
@@ -293,8 +192,6 @@ void LauncherButton::AddState(State state) {
}
if (state & STATE_ATTENTION)
bar_->ShowAttention(true);
- if (state & STATE_PENDING)
- icon_pulse_animation_.reset(new IconPulseAnimation(icon_view_));
}
}
@@ -314,8 +211,6 @@ void LauncherButton::ClearState(State state) {
}
if (state & STATE_ATTENTION)
bar_->ShowAttention(false);
- if (state & STATE_PENDING)
- icon_pulse_animation_.reset();
}
}
@@ -461,7 +356,7 @@ bool LauncherButton::IsShelfHorizontal() const {
}
void LauncherButton::UpdateState() {
- if (state_ == STATE_NORMAL || state_ & STATE_PENDING) {
+ if (state_ == STATE_NORMAL) {
bar_->SetVisible(false);
} else {
int bar_id;
« no previous file with comments | « ash/launcher/launcher_button.h ('k') | ash/launcher/launcher_model.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698