Index: athena/wm/overview_toolbar.cc |
diff --git a/athena/wm/overview_toolbar.cc b/athena/wm/overview_toolbar.cc |
deleted file mode 100644 |
index 5942a5d53496b6987d5e70a546d98c1d17defe84..0000000000000000000000000000000000000000 |
--- a/athena/wm/overview_toolbar.cc |
+++ /dev/null |
@@ -1,219 +0,0 @@ |
-// Copyright 2014 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "athena/wm/overview_toolbar.h" |
- |
-#include "athena/resources/grit/athena_resources.h" |
-#include "athena/strings/grit/athena_strings.h" |
-#include "base/bind.h" |
-#include "base/time/time.h" |
-#include "ui/aura/window.h" |
-#include "ui/base/l10n/l10n_util.h" |
-#include "ui/base/resource/resource_bundle.h" |
-#include "ui/compositor/closure_animation_observer.h" |
-#include "ui/compositor/layer.h" |
-#include "ui/compositor/layer_delegate.h" |
-#include "ui/compositor/scoped_layer_animation_settings.h" |
-#include "ui/events/event.h" |
-#include "ui/gfx/canvas.h" |
-#include "ui/gfx/transform.h" |
- |
-namespace { |
- |
-const int kActionButtonImageSize = 54; |
-const int kActionButtonTextSize = 20; |
-const int kActionButtonPaddingFromRight = 32; |
-} |
- |
-namespace athena { |
- |
-class ActionButton : public ui::LayerDelegate { |
- public: |
- ActionButton(int resource_id, const base::string16& label) |
- : resource_id_(resource_id), label_(label) { |
- layer_.reset(new ui::Layer(ui::LAYER_TEXTURED)); |
- layer_->set_delegate(this); |
- layer_->SetFillsBoundsOpaquely(false); |
- layer_->SetVisible(true); |
- layer_->SetOpacity(0); |
- } |
- |
- ~ActionButton() override {} |
- |
- static void DestroyAfterFadeout(scoped_ptr<ActionButton> button) { |
- ui::Layer* layer = button->layer(); |
- ui::ScopedLayerAnimationSettings settings(layer->GetAnimator()); |
- settings.AddObserver(new ui::ClosureAnimationObserver( |
- base::Bind(&ActionButton::DestroyImmediately, base::Passed(&button)))); |
- layer->SetOpacity(0); |
- } |
- |
- void SetPosition(const gfx::Point& position) { |
- layer_->SetBounds( |
- gfx::Rect(position, |
- gfx::Size(kActionButtonImageSize, |
- kActionButtonImageSize + kActionButtonTextSize))); |
- } |
- |
- ui::Layer* layer() { return layer_.get(); } |
- |
- private: |
- static void DestroyImmediately(scoped_ptr<ActionButton> button) { |
- button.reset(); |
- } |
- |
- // ui::LayerDelegate: |
- void OnPaintLayer(gfx::Canvas* canvas) override { |
- ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance(); |
- canvas->DrawImageInt(*bundle.GetImageSkiaNamed(resource_id_), 0, 0); |
- gfx::ShadowValues shadow; |
- shadow.push_back(gfx::ShadowValue(gfx::Point(0, 1), 2, SK_ColorBLACK)); |
- shadow.push_back(gfx::ShadowValue(gfx::Point(0, -1), 2, SK_ColorBLACK)); |
- canvas->DrawStringRectWithShadows(label_, |
- gfx::FontList(), |
- SK_ColorWHITE, |
- gfx::Rect(0, |
- kActionButtonImageSize, |
- kActionButtonImageSize, |
- kActionButtonTextSize), |
- 0, |
- gfx::Canvas::TEXT_ALIGN_CENTER, |
- shadow); |
- } |
- |
- void OnDelegatedFrameDamage(const gfx::Rect& damage_rect_in_dip) override {} |
- |
- void OnDeviceScaleFactorChanged(float device_scale_factor) override {} |
- base::Closure PrepareForLayerBoundsChange() override { |
- return base::Closure(); |
- } |
- |
- int resource_id_; |
- base::string16 label_; |
- scoped_ptr<ui::Layer> layer_; |
- |
- DISALLOW_COPY_AND_ASSIGN(ActionButton); |
-}; |
- |
-OverviewToolbar::OverviewToolbar(aura::Window* container) |
- : shown_(false), |
- disabled_action_bitfields_(0), |
- close_(new ActionButton( |
- IDR_ATHENA_OVERVIEW_TRASH, |
- l10n_util::GetStringUTF16(IDS_ATHENA_OVERVIEW_CLOSE))), |
- split_(new ActionButton( |
- IDR_ATHENA_OVERVIEW_SPLIT, |
- l10n_util::GetStringUTF16(IDS_ATHENA_OVERVIEW_SPLIT))), |
- current_action_(ACTION_TYPE_NONE), |
- container_bounds_(container->bounds()) { |
- const int kPaddingFromBottom = 200; |
- const int kPaddingBetweenButtons = 200; |
- |
- int x = container_bounds_.right() - |
- (kActionButtonPaddingFromRight + kActionButtonImageSize); |
- int y = container_bounds_.bottom() - |
- (kPaddingFromBottom + kActionButtonImageSize); |
- split_->SetPosition(gfx::Point(x, y)); |
- y -= kPaddingBetweenButtons; |
- close_->SetPosition(gfx::Point(x, y)); |
- |
- container->layer()->Add(split_->layer()); |
- container->layer()->Add(close_->layer()); |
-} |
- |
-OverviewToolbar::~OverviewToolbar() { |
- // If the buttons are visible, then fade them out, instead of destroying them |
- // immediately. |
- if (shown_) { |
- ActionButton::DestroyAfterFadeout(split_.Pass()); |
- ActionButton::DestroyAfterFadeout(close_.Pass()); |
- } |
-} |
- |
-OverviewToolbar::ActionType OverviewToolbar::GetHighlightAction( |
- const ui::GestureEvent& event) const { |
- if (IsActionEnabled(ACTION_TYPE_SPLIT) && |
- IsEventOverButton(split_.get(), event)) |
- return ACTION_TYPE_SPLIT; |
- if (IsActionEnabled(ACTION_TYPE_CLOSE) && |
- IsEventOverButton(close_.get(), event)) |
- return ACTION_TYPE_CLOSE; |
- return ACTION_TYPE_NONE; |
-} |
- |
-void OverviewToolbar::SetHighlightAction(ActionType action) { |
- CHECK(IsActionEnabled(action)); |
- if (current_action_ == action) |
- return; |
- current_action_ = action; |
- if (!shown_) { |
- ShowActionButtons(); |
- } else { |
- TransformButton(close_.get()); |
- TransformButton(split_.get()); |
- } |
-} |
- |
-void OverviewToolbar::ShowActionButtons() { |
- if (!shown_) |
- ToggleActionButtonsVisibility(); |
-} |
- |
-void OverviewToolbar::HideActionButtons() { |
- if (shown_) |
- ToggleActionButtonsVisibility(); |
-} |
- |
-void OverviewToolbar::DisableAction(ActionType action) { |
- CHECK_NE(current_action_, action); |
- disabled_action_bitfields_ |= (1u << action); |
-} |
- |
-void OverviewToolbar::ToggleActionButtonsVisibility() { |
- shown_ = !shown_; |
- TransformButton(close_.get()); |
- TransformButton(split_.get()); |
-} |
- |
-bool OverviewToolbar::IsActionEnabled(ActionType action) const { |
- return !(disabled_action_bitfields_ & (1u << action)); |
-} |
- |
-bool OverviewToolbar::IsEventOverButton(ActionButton* button, |
- const ui::GestureEvent& event) const { |
- const int kBoundsInsetForTarget = 30; |
- gfx::RectF bounds = button->layer()->bounds(); |
- bounds.Inset(-kBoundsInsetForTarget, -kBoundsInsetForTarget); |
- return bounds.Contains(event.location()); |
-} |
- |
-gfx::Transform OverviewToolbar::ComputeTransformFor( |
- ActionButton* button) const { |
- if (!shown_) |
- return gfx::Transform(); |
- |
- const float kHighlightScale = 1.5; |
- bool button_is_highlighted = |
- (current_action_ == ACTION_TYPE_CLOSE && button == close_.get()) || |
- (current_action_ == ACTION_TYPE_SPLIT && button == split_.get()); |
- gfx::Transform transform; |
- if (button_is_highlighted) { |
- transform.Translate(-kActionButtonImageSize * (kHighlightScale - 1) / 2, 0); |
- transform.Scale(kHighlightScale, kHighlightScale); |
- } |
- return transform; |
-} |
- |
-void OverviewToolbar::TransformButton(ActionButton* button) { |
- ui::ScopedLayerAnimationSettings split_settings( |
- button->layer()->GetAnimator()); |
- split_settings.SetTweenType(gfx::Tween::SMOOTH_IN_OUT); |
- button->layer()->SetTransform(ComputeTransformFor(button)); |
- bool button_is_enabled = |
- (button == close_.get() && IsActionEnabled(ACTION_TYPE_CLOSE)) || |
- (button == split_.get() && IsActionEnabled(ACTION_TYPE_SPLIT)); |
- button->layer()->SetOpacity((button_is_enabled && shown_) ? 1 : 0); |
-} |
- |
-} // namespace athena |