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

Unified Diff: ui/app_list/app_list_item_list.cc

Issue 645853013: Remove some platform specific stuff from views. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 6 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
« no previous file with comments | « ui/app_list/app_list_item_list.h ('k') | ui/app_list/app_list_item_list_observer.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/app_list/app_list_item_list.cc
diff --git a/ui/app_list/app_list_item_list.cc b/ui/app_list/app_list_item_list.cc
deleted file mode 100644
index 82a17c0b4a7fb6ca270320dd59d3d2816519ee1a..0000000000000000000000000000000000000000
--- a/ui/app_list/app_list_item_list.cc
+++ /dev/null
@@ -1,276 +0,0 @@
-// Copyright (c) 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "ui/app_list/app_list_item_list.h"
-
-#include "ui/app_list/app_list_item.h"
-
-namespace app_list {
-
-AppListItemList::AppListItemList() {
-}
-
-AppListItemList::~AppListItemList() {
-}
-
-void AppListItemList::AddObserver(AppListItemListObserver* observer) {
- observers_.AddObserver(observer);
-}
-
-void AppListItemList::RemoveObserver(AppListItemListObserver* observer) {
- DCHECK(observers_.HasObserver(observer));
- observers_.RemoveObserver(observer);
-}
-
-AppListItem* AppListItemList::FindItem(const std::string& id) {
- for (size_t i = 0; i < app_list_items_.size(); ++i) {
- AppListItem* item = app_list_items_[i];
- if (item->id() == id)
- return item;
- }
- return NULL;
-}
-
-bool AppListItemList::FindItemIndex(const std::string& id, size_t* index) {
- for (size_t i = 0; i < app_list_items_.size(); ++i) {
- AppListItem* item = app_list_items_[i];
- if (item->id() == id) {
- *index = i;
- return true;
- }
- }
- return false;
-}
-
-void AppListItemList::MoveItem(size_t from_index, size_t to_index) {
- DCHECK_LT(from_index, item_count());
- DCHECK_LT(to_index, item_count());
- if (from_index == to_index)
- return;
-
- AppListItem* target_item = app_list_items_[from_index];
- DVLOG(2) << "MoveItem: " << from_index << " -> " << to_index << " ["
- << target_item->position().ToDebugString() << "]";
-
- // Remove the target item
- app_list_items_.weak_erase(app_list_items_.begin() + from_index);
-
- // Update the position
- AppListItem* prev = to_index > 0 ? app_list_items_[to_index - 1] : NULL;
- AppListItem* next =
- to_index < item_count() ? app_list_items_[to_index] : NULL;
- CHECK_NE(prev, next);
- syncer::StringOrdinal new_position;
- if (!prev) {
- new_position = next->position().CreateBefore();
- } else if (!next) {
- new_position = prev->position().CreateAfter();
- } else {
- // It is possible that items were added with the same ordinal. To
- // successfully move the item we need to fix this. We do not try to fix this
- // when an item is added in order to avoid possible edge cases with sync.
- if (prev->position().Equals(next->position()))
- FixItemPosition(to_index);
- new_position = prev->position().CreateBetween(next->position());
- }
- target_item->set_position(new_position);
-
- DVLOG(2) << "Move: "
- << " Prev: " << (prev ? prev->position().ToDebugString() : "(none)")
- << " Next: " << (next ? next->position().ToDebugString() : "(none)")
- << " -> " << new_position.ToDebugString();
-
- // Insert the item and notify observers.
- app_list_items_.insert(app_list_items_.begin() + to_index, target_item);
- FOR_EACH_OBSERVER(AppListItemListObserver,
- observers_,
- OnListItemMoved(from_index, to_index, target_item));
-}
-
-void AppListItemList::SetItemPosition(AppListItem* item,
- syncer::StringOrdinal new_position) {
- DCHECK(item);
- size_t from_index;
- if (!FindItemIndex(item->id(), &from_index)) {
- LOG(ERROR) << "SetItemPosition: Not in list: " << item->id().substr(0, 8);
- return;
- }
- DCHECK(app_list_items_[from_index] == item);
- if (!new_position.IsValid()) {
- size_t last_index = app_list_items_.size() - 1;
- if (from_index == last_index)
- return; // Already last item, do nothing.
- new_position = app_list_items_[last_index]->position().CreateAfter();
- }
- // First check if the order would remain the same, in which case just update
- // the position.
- size_t to_index = GetItemSortOrderIndex(new_position, item->id());
- if (to_index == from_index) {
- DVLOG(2) << "SetItemPosition: No change: " << item->id().substr(0, 8);
- item->set_position(new_position);
- return;
- }
- // Remove the item and get the updated to index.
- app_list_items_.weak_erase(app_list_items_.begin() + from_index);
- to_index = GetItemSortOrderIndex(new_position, item->id());
- DVLOG(2) << "SetItemPosition: " << item->id().substr(0, 8) << " -> "
- << new_position.ToDebugString() << " From: " << from_index
- << " To: " << to_index;
- item->set_position(new_position);
- app_list_items_.insert(app_list_items_.begin() + to_index, item);
- FOR_EACH_OBSERVER(AppListItemListObserver,
- observers_,
- OnListItemMoved(from_index, to_index, item));
-}
-
-void AppListItemList::HighlightItemInstalledFromUI(const std::string& id) {
- // Items within folders are not highlighted (apps are never installed to a
- // folder initially). So just search the top-level list.
- size_t index;
- if (FindItemIndex(highlighted_id_, &index)) {
- item_at(index)->set_highlighted(false);
- FOR_EACH_OBSERVER(AppListItemListObserver,
- observers_,
- OnAppListItemHighlight(index, false));
- }
- highlighted_id_ = id;
- if (!FindItemIndex(highlighted_id_, &index)) {
- // If the item isin't in the app list yet, it will be highlighted later, in
- // AddItem().
- return;
- }
-
- item_at(index)->set_highlighted(true);
- FOR_EACH_OBSERVER(
- AppListItemListObserver, observers_, OnAppListItemHighlight(index, true));
-}
-
-// AppListItemList private
-
-syncer::StringOrdinal AppListItemList::CreatePositionBefore(
- const syncer::StringOrdinal& position) {
- if (app_list_items_.empty())
- return syncer::StringOrdinal::CreateInitialOrdinal();
-
- size_t nitems = app_list_items_.size();
- size_t index;
- if (!position.IsValid()) {
- index = nitems;
- } else {
- for (index = 0; index < nitems; ++index) {
- if (!app_list_items_[index]->position().LessThan(position))
- break;
- }
- }
- if (index == 0)
- return app_list_items_[0]->position().CreateBefore();
- if (index == nitems)
- return app_list_items_[nitems - 1]->position().CreateAfter();
- return app_list_items_[index - 1]->position().CreateBetween(
- app_list_items_[index]->position());
-}
-
-AppListItem* AppListItemList::AddItem(scoped_ptr<AppListItem> item_ptr) {
- AppListItem* item = item_ptr.get();
- CHECK(std::find(app_list_items_.begin(), app_list_items_.end(), item)
- == app_list_items_.end());
- EnsureValidItemPosition(item);
- size_t index = GetItemSortOrderIndex(item->position(), item->id());
- app_list_items_.insert(app_list_items_.begin() + index, item_ptr.release());
- FOR_EACH_OBSERVER(AppListItemListObserver,
- observers_,
- OnListItemAdded(index, item));
-
- if (item->id() == highlighted_id_) {
- // Item not present when highlight requested, so highlight it now.
- item->set_highlighted(true);
- FOR_EACH_OBSERVER(AppListItemListObserver,
- observers_,
- OnAppListItemHighlight(index, true));
- }
- return item;
-}
-
-void AppListItemList::DeleteItem(const std::string& id) {
- scoped_ptr<AppListItem> item = RemoveItem(id);
- // |item| will be deleted on destruction.
-}
-
-scoped_ptr<AppListItem> AppListItemList::RemoveItem(const std::string& id) {
- size_t index;
- if (!FindItemIndex(id, &index))
- LOG(FATAL) << "RemoveItem: Not found: " << id;
- return RemoveItemAt(index);
-}
-
-scoped_ptr<AppListItem> AppListItemList::RemoveItemAt(size_t index) {
- CHECK_LT(index, item_count());
- AppListItem* item = app_list_items_[index];
- app_list_items_.weak_erase(app_list_items_.begin() + index);
- FOR_EACH_OBSERVER(AppListItemListObserver,
- observers_,
- OnListItemRemoved(index, item));
- return make_scoped_ptr<AppListItem>(item);
-}
-
-void AppListItemList::DeleteItemAt(size_t index) {
- scoped_ptr<AppListItem> item = RemoveItemAt(index);
- // |item| will be deleted on destruction.
-}
-
-void AppListItemList::EnsureValidItemPosition(AppListItem* item) {
- syncer::StringOrdinal position = item->position();
- if (position.IsValid())
- return;
- size_t nitems = app_list_items_.size();
- if (nitems == 0) {
- position = syncer::StringOrdinal::CreateInitialOrdinal();
- } else {
- position = app_list_items_[nitems - 1]->position().CreateAfter();
- }
- item->set_position(position);
-}
-
-size_t AppListItemList::GetItemSortOrderIndex(
- const syncer::StringOrdinal& position,
- const std::string& id) {
- DCHECK(position.IsValid());
- for (size_t index = 0; index < app_list_items_.size(); ++index) {
- if (position.LessThan(app_list_items_[index]->position()) ||
- (position.Equals(app_list_items_[index]->position()) &&
- (id < app_list_items_[index]->id()))) {
- return index;
- }
- }
- return app_list_items_.size();
-}
-
-void AppListItemList::FixItemPosition(size_t index) {
- DVLOG(1) << "FixItemPosition: " << index;
- size_t nitems = item_count();
- DCHECK_LT(index, nitems);
- DCHECK_GT(index, 0u);
- // Update the position of |index| and any necessary subsequent items.
- // First, find the next item that has a different position.
- AppListItem* prev = app_list_items_[index - 1];
- size_t last_index = index + 1;
- for (; last_index < nitems; ++last_index) {
- if (!app_list_items_[last_index]->position().Equals(prev->position()))
- break;
- }
- AppListItem* last = last_index < nitems ? app_list_items_[last_index] : NULL;
- for (size_t i = index; i < last_index; ++i) {
- AppListItem* cur = app_list_items_[i];
- if (last)
- cur->set_position(prev->position().CreateBetween(last->position()));
- else
- cur->set_position(prev->position().CreateAfter());
- prev = cur;
- }
- FOR_EACH_OBSERVER(AppListItemListObserver,
- observers_,
- OnListItemMoved(index, index, app_list_items_[index]));
-}
-
-} // namespace app_list
« no previous file with comments | « ui/app_list/app_list_item_list.h ('k') | ui/app_list/app_list_item_list_observer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698