Index: athena/home/home_card_gesture_manager.cc |
diff --git a/athena/home/home_card_gesture_manager.cc b/athena/home/home_card_gesture_manager.cc |
deleted file mode 100644 |
index e08731789cbe092bcea99521fdb021e9c29b8dfa..0000000000000000000000000000000000000000 |
--- a/athena/home/home_card_gesture_manager.cc |
+++ /dev/null |
@@ -1,136 +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/home/home_card_gesture_manager.h" |
- |
-#include "athena/home/home_card_constants.h" |
-#include "ui/events/event.h" |
- |
-namespace athena { |
- |
-namespace { |
- |
-// The maximum height, in pixels, of a home card with final state |
-// VISIBLE_MINIMIZED. |
-const int kMinimizedFinalStateMaxHeight = 50 + kHomeCardMinimizedHeight; |
- |
-// The maximum height, in pixels, of an initially centered home card with final |
-// state VISIBLE_MINIMIZED. |
-const int kMinimizedFinalStateMaxHeightInitiallyCentered = |
- 90 + kHomeCardMinimizedHeight; |
- |
-// The minimum height, as a percentage of the screen height, of a home card with |
-// final state VISIBLE_CENTERED. |
-const float kCenteredFinalStateMinScreenRatio = 0.5f; |
- |
-// The minimum height, as a percentage of the screen height, of an initially |
-// minimized home card with final state VISIBLE_CENTERED. |
-const float kCenteredFinalStateMinScreenRatioInitiallyMinimized = 0.3f; |
- |
-} |
- |
-HomeCardGestureManager::HomeCardGestureManager(Delegate* delegate, |
- const gfx::Rect& screen_bounds) |
- : delegate_(delegate), |
- original_state_(HomeCard::HIDDEN), |
- y_offset_(0), |
- last_estimated_height_(0), |
- screen_bounds_(screen_bounds) {} |
- |
-HomeCardGestureManager::~HomeCardGestureManager() {} |
- |
-void HomeCardGestureManager::ProcessGestureEvent(ui::GestureEvent* event) { |
- switch (event->type()) { |
- case ui::ET_GESTURE_SCROLL_BEGIN: |
- y_offset_ = event->location().y(); |
- original_state_ = HomeCard::Get()->GetState(); |
- DCHECK_NE(HomeCard::HIDDEN, original_state_); |
- event->SetHandled(); |
- break; |
- case ui::ET_GESTURE_SCROLL_END: |
- event->SetHandled(); |
- delegate_->OnGestureEnded(GetFinalState(), false); |
- break; |
- case ui::ET_GESTURE_SCROLL_UPDATE: |
- UpdateScrollState(*event); |
- break; |
- case ui::ET_SCROLL_FLING_START: { |
- const ui::GestureEventDetails& details = event->details(); |
- const float kFlingCompletionVelocity = 100.0f; |
- HomeCard::State final_state = GetFinalState(); |
- |
- // When the user does not drag far enough to switch the final state, but |
- // a fling happens at the end of the gesture, the state should change |
- // based on the direction of the fling. |
- // Checking |final_state| == |original_state| may cause unexpected results |
- // for gestures where the user flings in the opposite direction that they |
- // moved the home card (e.g. drag home card up from minimized state and |
- // then fling down) |
- // TODO(mukai): Consider this case once reported. |
- bool is_fling = ::fabs(details.velocity_y()) > kFlingCompletionVelocity; |
- if (final_state == original_state_ && is_fling) { |
- if (details.velocity_y() > 0) { |
- final_state = std::min(HomeCard::VISIBLE_MINIMIZED, |
- static_cast<HomeCard::State>(final_state + 1)); |
- } else { |
- final_state = std::max(HomeCard::VISIBLE_CENTERED, |
- static_cast<HomeCard::State>(final_state - 1)); |
- } |
- } |
- delegate_->OnGestureEnded(final_state, is_fling); |
- break; |
- } |
- default: |
- // do nothing. |
- break; |
- } |
-} |
- |
-HomeCard::State HomeCardGestureManager::GetFinalState() const { |
- int max_height = (original_state_ == HomeCard::VISIBLE_CENTERED) |
- ? kMinimizedFinalStateMaxHeightInitiallyCentered |
- : kMinimizedFinalStateMaxHeight; |
- if (last_estimated_height_ < max_height) |
- return HomeCard::VISIBLE_MINIMIZED; |
- |
- float ratio = (original_state_ == HomeCard::VISIBLE_MINIMIZED) |
- ? kCenteredFinalStateMinScreenRatioInitiallyMinimized |
- : kCenteredFinalStateMinScreenRatio; |
- if (last_estimated_height_ < screen_bounds_.height() * ratio) |
- return HomeCard::VISIBLE_BOTTOM; |
- |
- return HomeCard::VISIBLE_CENTERED; |
-} |
- |
-void HomeCardGestureManager::UpdateScrollState(const ui::GestureEvent& event) { |
- last_estimated_height_ = |
- screen_bounds_.height() - event.root_location().y() + y_offset_; |
- |
- if (last_estimated_height_ <= kHomeCardMinimizedHeight) { |
- delegate_->OnGestureProgressed( |
- HomeCard::VISIBLE_BOTTOM, HomeCard::VISIBLE_MINIMIZED, 1.0f); |
- return; |
- } |
- |
- HomeCard::State bigger_state = HomeCard::VISIBLE_BOTTOM; |
- float smaller_height = kHomeCardMinimizedHeight; |
- float bigger_height = kHomeCardHeight; |
- if (last_estimated_height_ > kHomeCardHeight) { |
- bigger_state = HomeCard::VISIBLE_CENTERED; |
- smaller_height = kHomeCardHeight; |
- bigger_height = screen_bounds_.height(); |
- } |
- |
- // The finger is between two states. |
- float progress = (last_estimated_height_ - smaller_height) / |
- (bigger_height - smaller_height); |
- progress = std::min(1.0f, std::max(0.0f, progress)); |
- |
- delegate_->OnGestureProgressed( |
- static_cast<HomeCard::State>(bigger_state + 1), |
- bigger_state, |
- progress); |
-} |
- |
-} // namespace athena |