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