Home | History | Annotate | Download | only in views
      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
      3 // found in the LICENSE file.
      4 
      5 #ifndef UI_APP_LIST_VIEWS_APPS_CONTAINER_VIEW_H_
      6 #define UI_APP_LIST_VIEWS_APPS_CONTAINER_VIEW_H_
      7 
      8 #include "ui/views/view.h"
      9 
     10 namespace content {
     11 class WebContents;
     12 }
     13 
     14 namespace app_list {
     15 
     16 class AppsGridView;
     17 class AppListFolderItem;
     18 class AppListFolderView;
     19 class AppListMainView;
     20 class AppListModel;
     21 class ContentsView;
     22 class PaginationModel;
     23 
     24 // AppsContainerView contains a root level AppsGridView to render the root level
     25 // 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.
     27 class AppsContainerView : public views::View {
     28  public:
     29   AppsContainerView(AppListMainView* app_list_main_view,
     30                     PaginationModel* pagination_model,
     31                     AppListModel* model,
     32                     content::WebContents* start_page_contents);
     33   virtual ~AppsContainerView();
     34 
     35   // Shows the active folder content specified by |folder_item|.
     36   void ShowActiveFolder(AppListFolderItem* folder_item);
     37 
     38   // Shows the apps list from root.
     39   void ShowApps();
     40 
     41   // Overridden from views::View:
     42   virtual gfx::Size GetPreferredSize() OVERRIDE;
     43   virtual void Layout() OVERRIDE;
     44   virtual bool OnKeyPressed(const ui::KeyEvent& event) OVERRIDE;
     45 
     46   AppsGridView* apps_grid_view() { return apps_grid_view_; }
     47 
     48  private:
     49   enum ShowState {
     50     SHOW_APPS,
     51     SHOW_ACTIVE_FOLDER,
     52   };
     53 
     54   void SetShowState(ShowState show_state);
     55 
     56   AppListModel* model_;
     57   AppsGridView* apps_grid_view_;  // Owned by views hierarchy.
     58   AppListFolderView* app_list_folder_view_;  // Owned by views hierarchy.
     59   ShowState show_state_;
     60 
     61   DISALLOW_COPY_AND_ASSIGN(AppsContainerView);
     62 };
     63 
     64 }  // namespace app_list
     65 
     66 
     67 #endif  // UI_APP_LIST_VIEWS_APPS_CONTAINER_VIEW_H_
     68