• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
ShelfItemDelegateManager(ShelfModel * model)15 ShelfItemDelegateManager::ShelfItemDelegateManager(ShelfModel* model)
16     : model_(model) {
17   DCHECK(model_);
18   model_->AddObserver(this);
19 }
20 
~ShelfItemDelegateManager()21 ShelfItemDelegateManager::~ShelfItemDelegateManager() {
22   model_->RemoveObserver(this);
23   STLDeleteContainerPairSecondPointers(id_to_item_delegate_map_.begin(),
24                                        id_to_item_delegate_map_.end());
25 }
26 
SetShelfItemDelegate(LauncherID id,scoped_ptr<ShelfItemDelegate> item_delegate)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 
GetShelfItemDelegate(LauncherID id)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 
ShelfItemAdded(int index)47 void ShelfItemDelegateManager::ShelfItemAdded(int index) {
48 }
49 
ShelfItemRemoved(int index,LauncherID id)50 void ShelfItemDelegateManager::ShelfItemRemoved(int index, LauncherID id) {
51   RemoveShelfItemDelegate(id);
52 }
53 
ShelfItemMoved(int start_index,int target_index)54 void ShelfItemDelegateManager::ShelfItemMoved(int start_index,
55                                               int target_index) {
56 }
57 
ShelfItemChanged(int index,const LauncherItem & old_item)58 void ShelfItemDelegateManager::ShelfItemChanged(int index,
59                                                 const LauncherItem& old_item) {
60 }
61 
ShelfStatusChanged()62 void ShelfItemDelegateManager::ShelfStatusChanged() {
63 }
64 
RemoveShelfItemDelegate(LauncherID id)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