Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(747)

Side by Side Diff: ash/shelf/shelf_item_delegate_manager.cc

Issue 2046513003: mash: Move shelf model and item classes to ash/common/shelf (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@initshelfearly
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ash/shelf/shelf_item_delegate_manager.h ('k') | ash/shelf/shelf_item_types.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(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/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::AddObserver(
28 ShelfItemDelegateManagerObserver* observer) {
29 observers_.AddObserver(observer);
30 }
31
32 void ShelfItemDelegateManager::RemoveObserver(
33 ShelfItemDelegateManagerObserver* observer) {
34 observers_.RemoveObserver(observer);
35 }
36
37 void ShelfItemDelegateManager::SetShelfItemDelegate(
38 ShelfID id,
39 std::unique_ptr<ShelfItemDelegate> item_delegate) {
40 // If another ShelfItemDelegate is already registered for |id|, we assume
41 // that this request is replacing ShelfItemDelegate for |id| with
42 // |item_delegate|.
43 RemoveShelfItemDelegate(id);
44
45 FOR_EACH_OBSERVER(ShelfItemDelegateManagerObserver,
46 observers_,
47 OnSetShelfItemDelegate(id, item_delegate.get()));
48
49 id_to_item_delegate_map_[id] = item_delegate.release();
50 }
51
52 ShelfItemDelegate* ShelfItemDelegateManager::GetShelfItemDelegate(ShelfID id) {
53 if (model_->ItemIndexByID(id) != -1) {
54 // Each ShelfItem has to have a ShelfItemDelegate.
55 DCHECK(id_to_item_delegate_map_.find(id) != id_to_item_delegate_map_.end());
56 return id_to_item_delegate_map_[id];
57 }
58 return NULL;
59 }
60
61 void ShelfItemDelegateManager::ShelfItemAdded(int index) {}
62
63 void ShelfItemDelegateManager::ShelfItemRemoved(int index, ShelfID id) {
64 RemoveShelfItemDelegate(id);
65 FOR_EACH_OBSERVER(ShelfItemDelegateManagerObserver,
66 observers_,
67 OnSetShelfItemDelegate(id, nullptr));
68 }
69
70 void ShelfItemDelegateManager::ShelfItemMoved(int start_index,
71 int target_index) {}
72
73 void ShelfItemDelegateManager::ShelfItemChanged(int index,
74 const ShelfItem& old_item) {}
75
76 void ShelfItemDelegateManager::RemoveShelfItemDelegate(ShelfID id) {
77 if (id_to_item_delegate_map_.find(id) != id_to_item_delegate_map_.end()) {
78 delete id_to_item_delegate_map_[id];
79 id_to_item_delegate_map_.erase(id);
80 }
81 }
82
83 } // namespace ash
OLDNEW
« no previous file with comments | « ash/shelf/shelf_item_delegate_manager.h ('k') | ash/shelf/shelf_item_types.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698