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

Side by Side Diff: ui/app_list/views/contents_animator.cc

Issue 701773002: App list: Added contents view custom animation framework. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed default animator reverse not being set. Oooops. Created 6 years, 1 month 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 unified diff | Download patch
« no previous file with comments | « ui/app_list/views/contents_animator.h ('k') | ui/app_list/views/contents_view.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "ui/app_list/views/contents_animator.h"
6
7 #include "ui/app_list/views/contents_view.h"
8 #include "ui/gfx/animation/tween.h"
9 #include "ui/gfx/geometry/rect.h"
10 #include "ui/views/view.h"
11
12 namespace app_list {
13
14 // ContentsAnimator
15
16 ContentsAnimator::ContentsAnimator(ContentsView* contents_view)
17 : contents_view_(contents_view) {
18 }
19
20 ContentsAnimator::~ContentsAnimator() {
21 }
22
23 gfx::Rect ContentsAnimator::GetOffscreenPageBounds(int page_index) const {
24 gfx::Rect bounds(contents_view_->GetContentsBounds());
25 // The start page and search page origins are above; all other pages' origins
26 // are below.
27 int page_height = bounds.height();
28 bool origin_above = contents_view_->GetPageIndexForState(
29 AppListModel::STATE_START) == page_index ||
30 contents_view_->GetPageIndexForState(
31 AppListModel::STATE_SEARCH_RESULTS) == page_index;
32 bounds.set_y(origin_above ? -page_height : page_height);
33 return bounds;
34 }
35
36 // DefaultAnimator
37
38 DefaultAnimator::DefaultAnimator(ContentsView* contents_view)
39 : ContentsAnimator(contents_view) {
40 }
41
42 std::string DefaultAnimator::NameForTests() const {
43 return "DefaultAnimator";
44 }
45
46 void DefaultAnimator::Update(double progress, int from_page, int to_page) {
47 // Move the from page from 0 to its origin. Move the to page from its origin
48 // to 0.
49 gfx::Rect on_screen(contents_view()->GetDefaultContentsBounds());
50 gfx::Rect from_page_origin(GetOffscreenPageBounds(from_page));
51 gfx::Rect to_page_origin(GetOffscreenPageBounds(to_page));
52 gfx::Rect from_page_rect(
53 gfx::Tween::RectValueBetween(progress, on_screen, from_page_origin));
54 gfx::Rect to_page_rect(
55 gfx::Tween::RectValueBetween(progress, to_page_origin, on_screen));
56
57 contents_view()->GetPageView(from_page)->SetBoundsRect(from_page_rect);
58 contents_view()->GetPageView(to_page)->SetBoundsRect(to_page_rect);
59 }
60
61 // StartToAppsAnimator
62
63 StartToAppsAnimator::StartToAppsAnimator(ContentsView* contents_view)
64 : ContentsAnimator(contents_view) {
65 }
66
67 std::string StartToAppsAnimator::NameForTests() const {
68 return "StartToAppsAnimator";
69 }
70
71 void StartToAppsAnimator::Update(double progress,
72 int start_page,
73 int apps_page) {
74 // TODO(mgiuca): This is just a clone of DefaultAnimator's animation. Write a
75 // custom animation for the All Apps button on the Start page.
76 gfx::Rect on_screen(contents_view()->GetDefaultContentsBounds());
77 gfx::Rect from_page_origin(GetOffscreenPageBounds(start_page));
78 gfx::Rect to_page_origin(GetOffscreenPageBounds(apps_page));
79 gfx::Rect from_page_rect(
80 gfx::Tween::RectValueBetween(progress, on_screen, from_page_origin));
81 gfx::Rect to_page_rect(
82 gfx::Tween::RectValueBetween(progress, to_page_origin, on_screen));
83
84 contents_view()->GetPageView(start_page)->SetBoundsRect(from_page_rect);
85 contents_view()->GetPageView(apps_page)->SetBoundsRect(to_page_rect);
86 }
87
88 } // app_list
OLDNEW
« no previous file with comments | « ui/app_list/views/contents_animator.h ('k') | ui/app_list/views/contents_view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698