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

Unified Diff: ash/app_list/app_list_model_view.h

Issue 10381018: ash: First pass of Applist v2. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 8 years, 7 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ash/app_list/app_list_item_view.cc ('k') | ash/app_list/app_list_model_view.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
};
« no previous file with comments | « ash/app_list/app_list_item_view.cc ('k') | ash/app_list/app_list_model_view.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698