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

Unified Diff: ui/app_list/cocoa/apps_grid_controller.mm

Issue 27438002: Store AppItems as pages in AppListModel. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address comments Created 7 years, 2 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
Index: ui/app_list/cocoa/apps_grid_controller.mm
diff --git a/ui/app_list/cocoa/apps_grid_controller.mm b/ui/app_list/cocoa/apps_grid_controller.mm
index 5fad26fe8d5c058bab659fd6983c0e3d52376a9f..48f16f80403348c9a3e55723c8d637cea8df0be9 100644
--- a/ui/app_list/cocoa/apps_grid_controller.mm
+++ b/ui/app_list/cocoa/apps_grid_controller.mm
@@ -93,26 +93,30 @@ NSTimeInterval g_scroll_duration = 0.18;
namespace app_list {
-class AppsGridDelegateBridge : public ui::ListModelObserver {
+class AppsGridDelegateBridge : public AppListModelObserver {
public:
AppsGridDelegateBridge(AppsGridController* parent) : parent_(parent) {}
private:
// Overridden from ui::ListModelObserver:
- virtual void ListItemsAdded(size_t start, size_t count) OVERRIDE {
- [parent_ listItemsAdded:start
+ virtual void OnListItemsAdded(size_t page_index,
+ size_t start, size_t count) OVERRIDE {
+ size_t start_index = page_index * kItemsPerPage + start;
+ [parent_ listItemsAdded:start_index
count:count];
}
- virtual void ListItemsRemoved(size_t start, size_t count) OVERRIDE {
- [parent_ listItemsRemoved:start
+ virtual void OnListItemsRemoved(size_t page_index,
+ size_t start, size_t count) OVERRIDE {
+ size_t start_index = page_index * kItemsPerPage + start;
+ [parent_ listItemsRemoved:start_index
count:count];
}
- virtual void ListItemMoved(size_t index, size_t target_index) OVERRIDE {
- [parent_ listItemMovedFromIndex:index
- toModelIndex:target_index];
- }
- virtual void ListItemsChanged(size_t start, size_t count) OVERRIDE {
- NOTREACHED();
+ virtual void OnListItemMoved(size_t page_index,
+ size_t index, size_t target_index) OVERRIDE {
+ size_t from_index = page_index * kItemsPerPage + index;
+ size_t to_index = page_index * kItemsPerPage + target_index;
+ [parent_ listItemMovedFromIndex:from_index
+ toModelIndex:to_index];
}
AppsGridController* parent_; // Weak, owns us.
@@ -188,7 +192,7 @@ class AppsGridDelegateBridge : public ui::ListModelObserver {
- (void)setModel:(scoped_ptr<app_list::AppListModel>)newModel {
if (model_) {
- model_->apps()->RemoveObserver(bridge_.get());
+ model_->RemoveObserver(bridge_.get());
// Since the model is about to be deleted, and the AppKit objects might be
// sitting in an NSAutoreleasePool, ensure there are no references to the
@@ -205,9 +209,12 @@ class AppsGridDelegateBridge : public ui::ListModelObserver {
if (!model_)
return;
- model_->apps()->AddObserver(bridge_.get());
- [self listItemsAdded:0
- count:model_->apps()->item_count()];
+ model_->AddObserver(bridge_.get());
+ for (size_t p = 0; p < model_->GetNumAppPages(); ++p) {
+ size_t start_index = p * kItemsPerPage;
+ [self listItemsAdded:start_index
+ count:model_->GetAppItemsForPage(p).item_count()];
+ }
}
- (void)setDelegate:(app_list::AppListViewDelegate*)newDelegate {
@@ -522,9 +529,13 @@ class AppsGridDelegateBridge : public ui::ListModelObserver {
if (itemIndex == modelIndex)
return;
- model_->apps()->RemoveObserver(bridge_.get());
- model_->apps()->Move(itemIndex, modelIndex);
- model_->apps()->AddObserver(bridge_.get());
+ size_t itemPageIndex = itemIndex / kItemsPerPage;
+ itemIndex -= itemPageIndex * kItemsPerPage;
+ size_t modelPageIndex = modelIndex / kItemsPerPage;
+ modelIndex -= modelPageIndex * kItemsPerPage;
+ model_->RemoveObserver(bridge_.get());
+ model_->MoveItem(itemPageIndex, itemIndex, modelPageIndex, modelIndex);
+ model_->AddObserver(bridge_.get());
}
- (AppsCollectionViewDragManager*)dragManager {
@@ -541,7 +552,9 @@ class AppsGridDelegateBridge : public ui::ListModelObserver {
[dragManager_ cancelDrag];
for (size_t i = start; i < start + count; ++i) {
- app_list::AppListItemModel* itemModel = model_->apps()->GetItemAt(i);
+ size_t page = i / kItemsPerPage;
+ size_t index = i - page * kItemsPerPage;
+ app_list::AppListItemModel* itemModel = model_->GetItemAt(page, index);
[items_ insertObject:[NSValue valueWithPointer:itemModel]
atIndex:i];
}

Powered by Google App Engine
This is Rietveld 408576698