OLD | NEW |
| (Empty) |
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/launcher/launcher_item_delegate_manager.h" | |
6 | |
7 #include "ash/launcher/launcher_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 LauncherItemDelegateManager::LauncherItemDelegateManager(ShelfModel* model) | |
16 : model_(model) { | |
17 DCHECK(model_); | |
18 model_->AddObserver(this); | |
19 } | |
20 | |
21 LauncherItemDelegateManager::~LauncherItemDelegateManager() { | |
22 model_->RemoveObserver(this); | |
23 STLDeleteContainerPairSecondPointers(id_to_item_delegate_map_.begin(), | |
24 id_to_item_delegate_map_.end()); | |
25 } | |
26 | |
27 void LauncherItemDelegateManager::SetLauncherItemDelegate( | |
28 ash::LauncherID id, | |
29 scoped_ptr<LauncherItemDelegate> item_delegate) { | |
30 // If another LauncherItemDelegate is already registered for |id|, we assume | |
31 // that this request is replacing LauncherItemDelegate for |id| with | |
32 // |item_delegate|. | |
33 RemoveLauncherItemDelegate(id); | |
34 id_to_item_delegate_map_[id] = item_delegate.release(); | |
35 } | |
36 | |
37 LauncherItemDelegate* LauncherItemDelegateManager::GetLauncherItemDelegate( | |
38 ash::LauncherID id) { | |
39 if (model_->ItemIndexByID(id) != -1) { | |
40 // Each LauncherItem has to have a LauncherItemDelegate. | |
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 LauncherItemDelegateManager::ShelfItemAdded(int index) { | |
48 } | |
49 | |
50 void LauncherItemDelegateManager::ShelfItemRemoved(int index, LauncherID id) { | |
51 RemoveLauncherItemDelegate(id); | |
52 } | |
53 | |
54 void LauncherItemDelegateManager::ShelfItemMoved(int start_index, | |
55 int target_index) { | |
56 } | |
57 | |
58 void LauncherItemDelegateManager::ShelfItemChanged( | |
59 int index, | |
60 const LauncherItem& old_item) { | |
61 } | |
62 | |
63 void LauncherItemDelegateManager::ShelfStatusChanged() { | |
64 } | |
65 | |
66 void LauncherItemDelegateManager::RemoveLauncherItemDelegate( | |
67 ash::LauncherID id) { | |
68 if (id_to_item_delegate_map_.find(id) != id_to_item_delegate_map_.end()) { | |
69 delete id_to_item_delegate_map_[id]; | |
70 id_to_item_delegate_map_.erase(id); | |
71 } | |
72 } | |
73 | |
74 } // namespace ash | |
OLD | NEW |