| Index: ash/app_list/app_list_model_view.h
|
| diff --git a/ash/app_list/app_list_model_view.h b/ash/app_list/app_list_model_view.h
|
| index ce2877bb20b0e1a18954a3c00da8d7dde396ebb1..31fec61bd604f7944223b0747db61bf44c43bf52 100644
|
| --- a/ash/app_list/app_list_model_view.h
|
| +++ b/ash/app_list/app_list_model_view.h
|
| @@ -7,6 +7,7 @@
|
| #pragma once
|
|
|
| #include "ash/ash_export.h"
|
| +#include "ash/app_list/pagination_model_observer.h"
|
| #include "ui/base/models/list_model_observer.h"
|
| #include "ui/views/view.h"
|
|
|
| @@ -18,14 +19,21 @@ namespace ash {
|
|
|
| class AppListItemView;
|
| class AppListModel;
|
| +class PaginationModel;
|
|
|
| // AppListModelView displays the UI for an AppListModel.
|
| class ASH_EXPORT AppListModelView : public views::View,
|
| - public ui::ListModelObserver {
|
| + public ui::ListModelObserver,
|
| + public PaginationModelObserver {
|
| public:
|
| - explicit AppListModelView(views::ButtonListener* listener);
|
| + AppListModelView(views::ButtonListener* listener,
|
| + PaginationModel* pagination_model);
|
| virtual ~AppListModelView();
|
|
|
| + // Sets fixed layout parameters. After setting this, CalculateLayout below
|
| + // is no longer called to dynamically choosing those layout params.
|
| + void SetLayout(int icon_size, int cols, int rows_per_page);
|
| +
|
| // Calculate preferred icon size, rows and cols for given |content_size| and
|
| // |num_of_tiles|.
|
| static void CalculateLayout(const gfx::Size& content_size,
|
| @@ -40,6 +48,10 @@ class ASH_EXPORT AppListModelView : public views::View,
|
| void SetSelectedItem(AppListItemView* item);
|
| void ClearSelectedItem(AppListItemView* item);
|
|
|
| + int tiles_per_page() const {
|
| + return cols_ * rows_per_page_;
|
| + }
|
| +
|
| private:
|
| // Updates from model.
|
| void Update();
|
| @@ -48,6 +60,7 @@ class ASH_EXPORT AppListModelView : public views::View,
|
| void SetSelectedItemByIndex(int index);
|
|
|
| // Overridden from views::View:
|
| + virtual gfx::Size GetPreferredSize() OVERRIDE;
|
| virtual void Layout() OVERRIDE;
|
| virtual bool OnKeyPressed(const views::KeyEvent& event) OVERRIDE;
|
| virtual bool OnKeyReleased(const views::KeyEvent& event) OVERRIDE;
|
| @@ -58,11 +71,20 @@ class ASH_EXPORT AppListModelView : public views::View,
|
| virtual void ListItemsRemoved(int start, int count) OVERRIDE;
|
| virtual void ListItemsChanged(int start, int count) OVERRIDE;
|
|
|
| + // Overridden from PaginationModelObserver:
|
| + virtual void TotalPagesChanged() OVERRIDE;
|
| + virtual void SelectedPageChanged(int old_selected, int new_selected) OVERRIDE;
|
| +
|
| AppListModel* model_; // Owned by parent AppListView.
|
| views::ButtonListener* listener_;
|
| + PaginationModel* pagination_model_; // Owned by AppListView.
|
|
|
| - int selected_item_index_;
|
| + bool fixed_layout_;
|
| + gfx::Size icon_size_;
|
| int cols_;
|
| + int rows_per_page_;
|
| +
|
| + int selected_item_index_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(AppListModelView);
|
| };
|
|
|