| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ui/app_list/app_list_model.h" | 5 #include "ui/app_list/app_list_model.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "ui/app_list/app_list_folder_item.h" | 9 #include "ui/app_list/app_list_folder_item.h" |
| 10 #include "ui/app_list/app_list_item.h" | 10 #include "ui/app_list/app_list_item.h" |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 67 DCHECK(!item->IsInFolder()); | 67 DCHECK(!item->IsInFolder()); |
| 68 DCHECK(!top_level_item_list()->FindItem(item->id())); | 68 DCHECK(!top_level_item_list()->FindItem(item->id())); |
| 69 return AddItemToItemListAndNotify(item.Pass()); | 69 return AddItemToItemListAndNotify(item.Pass()); |
| 70 } | 70 } |
| 71 | 71 |
| 72 AppListItem* AppListModel::AddItemToFolder(scoped_ptr<AppListItem> item, | 72 AppListItem* AppListModel::AddItemToFolder(scoped_ptr<AppListItem> item, |
| 73 const std::string& folder_id) { | 73 const std::string& folder_id) { |
| 74 if (folder_id.empty()) | 74 if (folder_id.empty()) |
| 75 return AddItem(item.Pass()); | 75 return AddItem(item.Pass()); |
| 76 DVLOG(2) << "AddItemToFolder: " << item->id() << ": " << folder_id; | 76 DVLOG(2) << "AddItemToFolder: " << item->id() << ": " << folder_id; |
| 77 DCHECK(!item->IsInFolder() || item->folder_id() == folder_id); | 77 CHECK_NE(folder_id, item->folder_id()); |
| 78 DCHECK(item->GetItemType() != AppListFolderItem::kItemType); | 78 DCHECK_NE(AppListFolderItem::kItemType, item->GetItemType()); |
| 79 AppListFolderItem* dest_folder = FindOrCreateFolderItem(folder_id); | 79 AppListFolderItem* dest_folder = FindOrCreateFolderItem(folder_id); |
| 80 if (!dest_folder) | 80 if (!dest_folder) |
| 81 return NULL; | 81 return NULL; |
| 82 DCHECK(!dest_folder->item_list()->FindItem(item->id())) | 82 DCHECK(!dest_folder->item_list()->FindItem(item->id())) |
| 83 << "Already in folder: " << dest_folder->id(); | 83 << "Already in folder: " << dest_folder->id(); |
| 84 return AddItemToFolderItemAndNotify(dest_folder, item.Pass()); | 84 return AddItemToFolderItemAndNotify(dest_folder, item.Pass()); |
| 85 } | 85 } |
| 86 | 86 |
| 87 const std::string AppListModel::MergeItems(const std::string& target_item_id, | 87 const std::string AppListModel::MergeItems(const std::string& target_item_id, |
| 88 const std::string& source_item_id) { | 88 const std::string& source_item_id) { |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 152 } | 152 } |
| 153 | 153 |
| 154 void AppListModel::MoveItemToFolder(AppListItem* item, | 154 void AppListModel::MoveItemToFolder(AppListItem* item, |
| 155 const std::string& folder_id) { | 155 const std::string& folder_id) { |
| 156 DVLOG(2) << "MoveItemToFolder: " << folder_id | 156 DVLOG(2) << "MoveItemToFolder: " << folder_id |
| 157 << " <- " << item->ToDebugString(); | 157 << " <- " << item->ToDebugString(); |
| 158 if (item->folder_id() == folder_id) | 158 if (item->folder_id() == folder_id) |
| 159 return; | 159 return; |
| 160 AppListFolderItem* dest_folder = FindOrCreateFolderItem(folder_id); | 160 AppListFolderItem* dest_folder = FindOrCreateFolderItem(folder_id); |
| 161 scoped_ptr<AppListItem> item_ptr = RemoveItem(item); | 161 scoped_ptr<AppListItem> item_ptr = RemoveItem(item); |
| 162 if (dest_folder) | 162 if (dest_folder) { |
| 163 CHECK(!item->IsInFolder()); |
| 163 AddItemToFolderItemAndNotify(dest_folder, item_ptr.Pass()); | 164 AddItemToFolderItemAndNotify(dest_folder, item_ptr.Pass()); |
| 164 else | 165 } else { |
| 165 AddItemToItemListAndNotifyUpdate(item_ptr.Pass()); | 166 AddItemToItemListAndNotifyUpdate(item_ptr.Pass()); |
| 167 } |
| 166 } | 168 } |
| 167 | 169 |
| 168 bool AppListModel::MoveItemToFolderAt(AppListItem* item, | 170 bool AppListModel::MoveItemToFolderAt(AppListItem* item, |
| 169 const std::string& folder_id, | 171 const std::string& folder_id, |
| 170 syncer::StringOrdinal position) { | 172 syncer::StringOrdinal position) { |
| 171 DVLOG(2) << "MoveItemToFolderAt: " << folder_id | 173 DVLOG(2) << "MoveItemToFolderAt: " << folder_id |
| 172 << "[" << position.ToDebugString() << "]" | 174 << "[" << position.ToDebugString() << "]" |
| 173 << " <- " << item->ToDebugString(); | 175 << " <- " << item->ToDebugString(); |
| 174 if (item->folder_id() == folder_id) | 176 if (item->folder_id() == folder_id) |
| 175 return false; | 177 return false; |
| (...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 350 AppListItem* item = top_level_item_list_->AddItem(item_ptr.Pass()); | 352 AppListItem* item = top_level_item_list_->AddItem(item_ptr.Pass()); |
| 351 FOR_EACH_OBSERVER(AppListModelObserver, | 353 FOR_EACH_OBSERVER(AppListModelObserver, |
| 352 observers_, | 354 observers_, |
| 353 OnAppListItemUpdated(item)); | 355 OnAppListItemUpdated(item)); |
| 354 return item; | 356 return item; |
| 355 } | 357 } |
| 356 | 358 |
| 357 AppListItem* AppListModel::AddItemToFolderItemAndNotify( | 359 AppListItem* AppListModel::AddItemToFolderItemAndNotify( |
| 358 AppListFolderItem* folder, | 360 AppListFolderItem* folder, |
| 359 scoped_ptr<AppListItem> item_ptr) { | 361 scoped_ptr<AppListItem> item_ptr) { |
| 362 CHECK_NE(folder->id(), item_ptr->folder_id()); |
| 360 AppListItem* item = folder->item_list()->AddItem(item_ptr.Pass()); | 363 AppListItem* item = folder->item_list()->AddItem(item_ptr.Pass()); |
| 361 item->set_folder_id(folder->id()); | 364 item->set_folder_id(folder->id()); |
| 362 FOR_EACH_OBSERVER(AppListModelObserver, | 365 FOR_EACH_OBSERVER(AppListModelObserver, |
| 363 observers_, | 366 observers_, |
| 364 OnAppListItemUpdated(item)); | 367 OnAppListItemUpdated(item)); |
| 365 return item; | 368 return item; |
| 366 } | 369 } |
| 367 | 370 |
| 368 scoped_ptr<AppListItem> AppListModel::RemoveItem(AppListItem* item) { | 371 scoped_ptr<AppListItem> AppListModel::RemoveItem(AppListItem* item) { |
| 369 if (!item->IsInFolder()) | 372 if (!item->IsInFolder()) |
| 370 return top_level_item_list_->RemoveItem(item->id()); | 373 return top_level_item_list_->RemoveItem(item->id()); |
| 371 | 374 |
| 372 AppListFolderItem* folder = FindFolderItem(item->folder_id()); | 375 AppListFolderItem* folder = FindFolderItem(item->folder_id()); |
| 373 return RemoveItemFromFolder(folder, item); | 376 return RemoveItemFromFolder(folder, item); |
| 374 } | 377 } |
| 375 | 378 |
| 376 scoped_ptr<AppListItem> AppListModel::RemoveItemFromFolder( | 379 scoped_ptr<AppListItem> AppListModel::RemoveItemFromFolder( |
| 377 AppListFolderItem* folder, | 380 AppListFolderItem* folder, |
| 378 AppListItem* item) { | 381 AppListItem* item) { |
| 379 std::string folder_id = folder->id(); | 382 std::string folder_id = folder->id(); |
| 380 DCHECK_EQ(item->folder_id(), folder_id); | 383 CHECK_EQ(item->folder_id(), folder_id); |
| 381 scoped_ptr<AppListItem> result = folder->item_list()->RemoveItem(item->id()); | 384 scoped_ptr<AppListItem> result = folder->item_list()->RemoveItem(item->id()); |
| 382 result->set_folder_id(""); | 385 result->set_folder_id(""); |
| 383 if (folder->item_list()->item_count() == 0) { | 386 if (folder->item_list()->item_count() == 0) { |
| 384 DVLOG(2) << "Deleting empty folder: " << folder->ToDebugString(); | 387 DVLOG(2) << "Deleting empty folder: " << folder->ToDebugString(); |
| 385 DeleteItem(folder_id); | 388 DeleteItem(folder_id); |
| 386 } | 389 } |
| 387 return result.Pass(); | 390 return result.Pass(); |
| 388 } | 391 } |
| 389 | 392 |
| 390 } // namespace app_list | 393 } // namespace app_list |
| OLD | NEW |