Home | History | Annotate | Download | only in shelf
      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 
     13 namespace ash {
     14 
     15 ShelfItemDelegateManager::ShelfItemDelegateManager(ShelfModel* model)
     16     : model_(model) {
     17   DCHECK(model_);
     18   model_->AddObserver(this);
     19 }
     20 
     21 ShelfItemDelegateManager::~ShelfItemDelegateManager() {
     22   model_->RemoveObserver(this);
     23   STLDeleteContainerPairSecondPointers(id_to_item_delegate_map_.begin(),
     24                                        id_to_item_delegate_map_.end());
     25 }
     26 
     27 void 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 
     37 ShelfItemDelegate* 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 
     46 void ShelfItemDelegateManager::ShelfItemAdded(int index) {
     47 }
     48 
     49 void ShelfItemDelegateManager::ShelfItemRemoved(int index, ShelfID id) {
     50   RemoveShelfItemDelegate(id);
     51 }
     52 
     53 void ShelfItemDelegateManager::ShelfItemMoved(int start_index,
     54                                               int target_index) {
     55 }
     56 
     57 void ShelfItemDelegateManager::ShelfItemChanged(int index,
     58                                                 const ShelfItem& old_item) {
     59 }
     60 
     61 void ShelfItemDelegateManager::ShelfStatusChanged() {
     62 }
     63 
     64 void 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