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 ShelfID 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(ShelfID id) { 38 if (model_->ItemIndexByID(id) != -1) { 39 // Each ShelfItem has to have a ShelfItemDelegate. 40 DCHECK(id_to_item_delegate_map_.find(id) != id_to_item_delegate_map_.end()); 41 return id_to_item_delegate_map_[id]; 42 } 43 return NULL; 44} 45 46void ShelfItemDelegateManager::ShelfItemAdded(int index) { 47} 48 49void ShelfItemDelegateManager::ShelfItemRemoved(int index, ShelfID id) { 50 RemoveShelfItemDelegate(id); 51} 52 53void ShelfItemDelegateManager::ShelfItemMoved(int start_index, 54 int target_index) { 55} 56 57void ShelfItemDelegateManager::ShelfItemChanged(int index, 58 const ShelfItem& old_item) { 59} 60 61void ShelfItemDelegateManager::ShelfStatusChanged() { 62} 63 64void ShelfItemDelegateManager::RemoveShelfItemDelegate(ShelfID id) { 65 if (id_to_item_delegate_map_.find(id) != id_to_item_delegate_map_.end()) { 66 delete id_to_item_delegate_map_[id]; 67 id_to_item_delegate_map_.erase(id); 68 } 69} 70 71} // namespace ash 72