shelf_item_delegate_manager.cc revision a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7
1// Copyright 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "ash/shelf/shelf_item_delegate_manager.h" 6 7#include "ash/shelf/shelf_item_delegate.h" 8#include "ash/shelf/shelf_model.h" 9#include "ash/shell.h" 10#include "base/logging.h" 11#include "base/stl_util.h" 12 13namespace ash { 14 15ShelfItemDelegateManager::ShelfItemDelegateManager(ShelfModel* model) 16 : model_(model) { 17 DCHECK(model_); 18 model_->AddObserver(this); 19} 20 21ShelfItemDelegateManager::~ShelfItemDelegateManager() { 22 model_->RemoveObserver(this); 23 STLDeleteContainerPairSecondPointers(id_to_item_delegate_map_.begin(), 24 id_to_item_delegate_map_.end()); 25} 26 27void ShelfItemDelegateManager::SetShelfItemDelegate( 28 LauncherID id, 29 scoped_ptr<ShelfItemDelegate> item_delegate) { 30 // If another ShelfItemDelegate is already registered for |id|, we assume 31 // that this request is replacing ShelfItemDelegate for |id| with 32 // |item_delegate|. 33 RemoveShelfItemDelegate(id); 34 id_to_item_delegate_map_[id] = item_delegate.release(); 35} 36 37ShelfItemDelegate* ShelfItemDelegateManager::GetShelfItemDelegate( 38 LauncherID id) { 39 if (model_->ItemIndexByID(id) != -1) { 40 // Each LauncherItem has to have a ShelfItemDelegate. 41 DCHECK(id_to_item_delegate_map_.find(id) != id_to_item_delegate_map_.end()); 42 return id_to_item_delegate_map_[id]; 43 } 44 return NULL; 45} 46 47void ShelfItemDelegateManager::ShelfItemAdded(int index) { 48} 49 50void ShelfItemDelegateManager::ShelfItemRemoved(int index, LauncherID id) { 51 RemoveShelfItemDelegate(id); 52} 53 54void ShelfItemDelegateManager::ShelfItemMoved(int start_index, 55 int target_index) { 56} 57 58void ShelfItemDelegateManager::ShelfItemChanged(int index, 59 const LauncherItem& old_item) { 60} 61 62void ShelfItemDelegateManager::ShelfStatusChanged() { 63} 64 65void ShelfItemDelegateManager::RemoveShelfItemDelegate(LauncherID id) { 66 if (id_to_item_delegate_map_.find(id) != id_to_item_delegate_map_.end()) { 67 delete id_to_item_delegate_map_[id]; 68 id_to_item_delegate_map_.erase(id); 69 } 70} 71 72} // namespace ash 73