OLD | NEW |
---|---|
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 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 #ifndef UI_APP_LIST_VIEWS_APPS_CONTAINER_VIEW_H_ | 5 #ifndef UI_APP_LIST_VIEWS_APPS_CONTAINER_VIEW_H_ |
6 #define UI_APP_LIST_VIEWS_APPS_CONTAINER_VIEW_H_ | 6 #define UI_APP_LIST_VIEWS_APPS_CONTAINER_VIEW_H_ |
7 | 7 |
8 #include "ui/app_list/app_list_folder_item.h" | |
8 #include "ui/views/view.h" | 9 #include "ui/views/view.h" |
9 | 10 |
10 namespace content { | 11 namespace content { |
11 class WebContents; | 12 class WebContents; |
12 } | 13 } |
13 | 14 |
14 namespace app_list { | 15 namespace app_list { |
15 | 16 |
16 class AppsGridView; | 17 class AppsGridView; |
17 class AppListFolderItem; | 18 class AppListFolderItem; |
18 class AppListFolderView; | 19 class AppListFolderView; |
19 class AppListMainView; | 20 class AppListMainView; |
20 class AppListModel; | 21 class AppListModel; |
21 class ContentsView; | 22 class ContentsView; |
22 class PaginationModel; | 23 class PaginationModel; |
23 | 24 |
25 class TopIconAnimationObserver { | |
26 public: | |
27 // Called when top icon animation completes. | |
28 virtual void OnTopIconAnimationsComplete(views::View* icon_view) {} | |
29 | |
30 protected: | |
31 TopIconAnimationObserver() {} | |
32 virtual ~TopIconAnimationObserver() {} | |
33 | |
34 private: | |
35 DISALLOW_COPY_AND_ASSIGN(TopIconAnimationObserver); | |
36 }; | |
37 | |
24 // AppsContainerView contains a root level AppsGridView to render the root level | 38 // AppsContainerView contains a root level AppsGridView to render the root level |
25 // app items, and a AppListFolderView to render the app items inside the | 39 // app items, and a AppListFolderView to render the app items inside the |
26 // active folder. Only one if them is visible to user at any time. | 40 // active folder. Only one if them is visible to user at any time. |
27 class AppsContainerView : public views::View { | 41 class AppsContainerView : public views::View, |
42 public TopIconAnimationObserver | |
43 { | |
xiyuan
2014/01/16 01:46:48
nit: This goes to the end of previous line.
jennyz
2014/01/16 17:49:52
Done.
| |
28 public: | 44 public: |
29 AppsContainerView(AppListMainView* app_list_main_view, | 45 AppsContainerView(AppListMainView* app_list_main_view, |
30 PaginationModel* pagination_model, | 46 PaginationModel* pagination_model, |
31 AppListModel* model, | 47 AppListModel* model, |
32 content::WebContents* start_page_contents); | 48 content::WebContents* start_page_contents); |
33 virtual ~AppsContainerView(); | 49 virtual ~AppsContainerView(); |
34 | 50 |
35 // Shows the active folder content specified by |folder_item|. | 51 // Shows the active folder content specified by |folder_item|. |
36 void ShowActiveFolder(AppListFolderItem* folder_item); | 52 void ShowActiveFolder(AppListFolderItem* folder_item); |
37 | 53 |
38 // Shows the apps list from root. | 54 // Shows the root level apps list. This is called when UI navigate back from |
39 void ShowApps(); | 55 // a folder view with |folder_item|. |
56 void ShowApps(AppListFolderItem* folder_item); | |
40 | 57 |
41 // Overridden from views::View: | 58 // Overridden from views::View: |
42 virtual gfx::Size GetPreferredSize() OVERRIDE; | 59 virtual gfx::Size GetPreferredSize() OVERRIDE; |
43 virtual void Layout() OVERRIDE; | 60 virtual void Layout() OVERRIDE; |
44 virtual bool OnKeyPressed(const ui::KeyEvent& event) OVERRIDE; | 61 virtual bool OnKeyPressed(const ui::KeyEvent& event) OVERRIDE; |
45 | 62 |
63 // Overridden from TopIconAnimationObserver. | |
64 virtual void OnTopIconAnimationsComplete(views::View* icon_view) OVERRIDE; | |
65 | |
46 AppsGridView* apps_grid_view() { return apps_grid_view_; } | 66 AppsGridView* apps_grid_view() { return apps_grid_view_; } |
47 | 67 |
48 private: | 68 private: |
49 enum ShowState { | 69 enum ShowState { |
50 SHOW_APPS, | 70 SHOW_APPS, |
51 SHOW_ACTIVE_FOLDER, | 71 SHOW_ACTIVE_FOLDER, |
52 }; | 72 }; |
53 | 73 |
54 void SetShowState(ShowState show_state); | 74 void SetShowState(ShowState show_state); |
55 | 75 |
76 // Calculates the top item icon bounds in the active folder icon. The bounds | |
77 // is relative to AppsContainerView. | |
78 // Returns the bounds of top items' icon in sequence of top left, top right, | |
79 // bottom left, bottom right. | |
80 TopIconsBounds GetTopItemIconBoundsInActiveFolder(); | |
81 | |
82 // Creates the transitional views for animating the top items in the folder | |
83 // when opening or closing a folder. | |
84 void CreateViewsForFolderTopItemsAnimation( | |
85 AppListFolderItem* active_folder, bool open_folder); | |
86 | |
56 AppListModel* model_; | 87 AppListModel* model_; |
57 AppsGridView* apps_grid_view_; // Owned by views hierarchy. | 88 AppsGridView* apps_grid_view_; // Owned by views hierarchy. |
58 AppListFolderView* app_list_folder_view_; // Owned by views hierarchy. | 89 AppListFolderView* app_list_folder_view_; // Owned by views hierarchy. |
59 ShowState show_state_; | 90 ShowState show_state_; |
60 | 91 |
92 // The transitional views for animating the top items in folder | |
93 // when opening or closing a folder. | |
94 std::vector<views::View*> top_icon_views_; | |
95 | |
61 DISALLOW_COPY_AND_ASSIGN(AppsContainerView); | 96 DISALLOW_COPY_AND_ASSIGN(AppsContainerView); |
62 }; | 97 }; |
63 | 98 |
64 } // namespace app_list | 99 } // namespace app_list |
65 | 100 |
66 | 101 |
67 #endif // UI_APP_LIST_VIEWS_APPS_CONTAINER_VIEW_H_ | 102 #endif // UI_APP_LIST_VIEWS_APPS_CONTAINER_VIEW_H_ |
OLD | NEW |