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     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 
     37 ShelfItemDelegate* 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 
     47 void ShelfItemDelegateManager::ShelfItemAdded(int index) {
     48 }
     49 
     50 void ShelfItemDelegateManager::ShelfItemRemoved(int index, LauncherID id) {
     51   RemoveShelfItemDelegate(id);
     52 }
     53 
     54 void ShelfItemDelegateManager::ShelfItemMoved(int start_index,
     55                                               int target_index) {
     56 }
     57 
     58 void ShelfItemDelegateManager::ShelfItemChanged(int index,
     59                                                 const LauncherItem& old_item) {
     60 }
     61 
     62 void ShelfItemDelegateManager::ShelfStatusChanged() {
     63 }
     64 
     65 void 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