| Index: ui/app_list/views/apps_grid_view.cc
|
| diff --git a/ui/app_list/views/apps_grid_view.cc b/ui/app_list/views/apps_grid_view.cc
|
| index 491883e420fe14bb68c40c65f4d80f009da4b6e4..1b60ab0d58c86c6642f22add19744fb5e12d1bb8 100644
|
| --- a/ui/app_list/views/apps_grid_view.cc
|
| +++ b/ui/app_list/views/apps_grid_view.cc
|
| @@ -272,10 +272,9 @@ AppsGridView::~AppsGridView() {
|
| if (drag_view_)
|
| EndDrag(true);
|
|
|
| - if (model_) {
|
| + if (model_)
|
| model_->RemoveObserver(this);
|
| - model_->apps()->RemoveObserver(this);
|
| - }
|
| +
|
| pagination_model_->RemoveObserver(this);
|
| }
|
|
|
| @@ -291,16 +290,12 @@ void AppsGridView::SetLayout(int icon_size, int cols, int rows_per_page) {
|
| }
|
|
|
| void AppsGridView::SetModel(AppListModel* model) {
|
| - if (model_) {
|
| + if (model_)
|
| model_->RemoveObserver(this);
|
| - model_->apps()->RemoveObserver(this);
|
| - }
|
|
|
| model_ = model;
|
| - if (model_) {
|
| + if (model_)
|
| model_->AddObserver(this);
|
| - model_->apps()->AddObserver(this);
|
| - }
|
| Update();
|
| }
|
|
|
| @@ -634,8 +629,13 @@ void AppsGridView::Update() {
|
| DCHECK(!selected_view_ && !drag_view_);
|
|
|
| view_model_.Clear();
|
| - if (model_ && model_->apps()->item_count())
|
| - ListItemsAdded(0, model_->apps()->item_count());
|
| + if (model_) {
|
| + for (size_t page = 0; page < model_->GetNumAppPages(); ++page) {
|
| + const AppListModel::AppItems& apps = model_->GetAppItems(page);
|
| + if (apps.item_count())
|
| + OnListItemsAdded(page, 0, apps.item_count());
|
| + }
|
| + }
|
| }
|
|
|
| void AppsGridView::UpdatePaging() {
|
| @@ -647,8 +647,12 @@ void AppsGridView::UpdatePaging() {
|
| }
|
|
|
| void AppsGridView::UpdatePulsingBlockViews() {
|
| + if (model_->GetNumAppPages() == 0)
|
| + return;
|
| +
|
| + const AppListModel::AppItems& apps = model_->GetAppItems(0);
|
| const int available_slots =
|
| - tiles_per_page() - model_->apps()->item_count() % tiles_per_page();
|
| + tiles_per_page() - apps.item_count() % tiles_per_page();
|
| const int desired = model_->status() == AppListModel::STATUS_SYNCING ?
|
| available_slots : 0;
|
|
|
| @@ -669,10 +673,11 @@ void AppsGridView::UpdatePulsingBlockViews() {
|
| }
|
| }
|
|
|
| -views::View* AppsGridView::CreateViewForItemAtIndex(size_t index) {
|
| - DCHECK_LT(index, model_->apps()->item_count());
|
| - AppListItemView* view = new AppListItemView(this,
|
| - model_->apps()->GetItemAt(index));
|
| +views::View* AppsGridView::CreateViewForItemAtIndex(size_t page_idx,
|
| + size_t item_idx) {
|
| + AppListItemModel* item = model_->GetItemAt(page_idx, item_idx);
|
| + CHECK(item);
|
| + AppListItemView* view = new AppListItemView(this, item);
|
| view->SetIconSize(icon_size_);
|
| #if defined(USE_AURA)
|
| view->SetPaintToLayer(true);
|
| @@ -1100,6 +1105,7 @@ void AppsGridView::OnPageFlipTimer() {
|
|
|
| void AppsGridView::MoveItemInModel(views::View* item_view,
|
| const Index& target) {
|
| + Index current = GetIndexOfView(item_view);
|
| int current_model_index = view_model_.GetIndexOfView(item_view);
|
| DCHECK_GE(current_model_index, 0);
|
|
|
| @@ -1107,10 +1113,11 @@ void AppsGridView::MoveItemInModel(views::View* item_view,
|
| if (target_model_index == current_model_index)
|
| return;
|
|
|
| - model_->apps()->RemoveObserver(this);
|
| - model_->apps()->Move(current_model_index, target_model_index);
|
| + model_->RemoveObserver(this);
|
| + model_->MoveItem(current.page, current.slot,
|
| + target.page, target.slot);
|
| view_model_.Move(current_model_index, target_model_index);
|
| - model_->apps()->AddObserver(this);
|
| + model_->AddObserver(this);
|
|
|
| if (pagination_model_->selected_page() != target.page)
|
| pagination_model_->SelectPage(target.page, false);
|
| @@ -1169,12 +1176,14 @@ void AppsGridView::LayoutStartPage() {
|
| start_page_view_->SetBoundsRect(start_page_bounds);
|
| }
|
|
|
| -void AppsGridView::ListItemsAdded(size_t start, size_t count) {
|
| +void AppsGridView::OnListItemsAdded(size_t page_index,
|
| + size_t start, size_t count) {
|
| EndDrag(true);
|
|
|
| + size_t offset = page_index * AppListModel::GetNumAppsPerPage();
|
| for (size_t i = start; i < start + count; ++i) {
|
| - views::View* view = CreateViewForItemAtIndex(i);
|
| - view_model_.Add(view, i);
|
| + views::View* view = CreateViewForItemAtIndex(page_index, i);
|
| + view_model_.Add(view, offset + i);
|
| AddChildView(view);
|
| }
|
|
|
| @@ -1184,12 +1193,14 @@ void AppsGridView::ListItemsAdded(size_t start, size_t count) {
|
| SchedulePaint();
|
| }
|
|
|
| -void AppsGridView::ListItemsRemoved(size_t start, size_t count) {
|
| +void AppsGridView::OnListItemsRemoved(size_t page_index,
|
| + size_t start, size_t count) {
|
| EndDrag(true);
|
|
|
| + size_t index = page_index * AppListModel::GetNumAppsPerPage() + start;
|
| for (size_t i = 0; i < count; ++i) {
|
| - views::View* view = view_model_.view_at(start);
|
| - view_model_.Remove(start);
|
| + views::View* view = view_model_.view_at(index);
|
| + view_model_.Remove(index);
|
| delete view;
|
| }
|
|
|
| @@ -1199,18 +1210,16 @@ void AppsGridView::ListItemsRemoved(size_t start, size_t count) {
|
| SchedulePaint();
|
| }
|
|
|
| -void AppsGridView::ListItemMoved(size_t index, size_t target_index) {
|
| +void AppsGridView::OnListItemMoved(size_t page_index,
|
| + size_t index, size_t target_index) {
|
| EndDrag(true);
|
| - view_model_.Move(index, target_index);
|
| + size_t offset = page_index * AppListModel::GetNumAppsPerPage();
|
| + view_model_.Move(offset + index, offset + target_index);
|
|
|
| UpdatePaging();
|
| AnimateToIdealBounds();
|
| }
|
|
|
| -void AppsGridView::ListItemsChanged(size_t start, size_t count) {
|
| - NOTREACHED();
|
| -}
|
| -
|
| void AppsGridView::TotalPagesChanged() {
|
| }
|
|
|
|
|