| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ui/aura_shell/launcher/launcher_model.h" | 5 #include "ui/aura_shell/launcher/launcher_model.h" |
| 6 | 6 |
| 7 #include "ui/aura_shell/launcher/launcher_model_observer.h" | 7 #include "ui/aura_shell/launcher/launcher_model_observer.h" |
| 8 #include "views/view.h" | |
| 9 | 8 |
| 10 namespace aura_shell { | 9 namespace aura_shell { |
| 11 | 10 |
| 12 LauncherModel::LauncherModel() : selected_index_(-1) { | 11 // static |
| 12 LauncherModel* LauncherModel::instance_ = NULL; |
| 13 |
| 14 LauncherModel::LauncherModel() { |
| 15 instance_ = this; |
| 13 } | 16 } |
| 14 | 17 |
| 15 LauncherModel::~LauncherModel() { | 18 LauncherModel::~LauncherModel() { |
| 16 for (Items::iterator i = items_.begin(); i != items_.end(); ++i) { | 19 if (instance_ == this) |
| 17 delete i->view; | 20 instance_ = NULL; |
| 18 i->view = NULL; | |
| 19 } | |
| 20 } | 21 } |
| 21 | 22 |
| 22 void LauncherModel::AddItem(views::View* view, int index, bool draggable) { | 23 void LauncherModel::Add(int index, const LauncherItem& item) { |
| 23 DCHECK(index >= 0 && index <= item_count()); | 24 DCHECK(index >= 0 && index <= item_count()); |
| 24 Item item; | |
| 25 item.view = view; | |
| 26 item.draggable = draggable; | |
| 27 items_.insert(items_.begin() + index, item); | 25 items_.insert(items_.begin() + index, item); |
| 28 FOR_EACH_OBSERVER(LauncherModelObserver, observers_, | 26 FOR_EACH_OBSERVER(LauncherModelObserver, observers_, |
| 29 LauncherItemAdded(index)); | 27 LauncherItemAdded(index)); |
| 30 } | 28 } |
| 31 | 29 |
| 32 void LauncherModel::RemoveItem(views::View* view) { | |
| 33 int index = IndexOfItemByView(view); | |
| 34 if (index != -1) | |
| 35 RemoveItemAt(index); | |
| 36 } | |
| 37 | |
| 38 void LauncherModel::RemoveItemAt(int index) { | 30 void LauncherModel::RemoveItemAt(int index) { |
| 39 DCHECK(index >= 0 && index < item_count()); | 31 DCHECK(index >= 0 && index < item_count()); |
| 40 items_.erase(items_.begin() + index); | 32 items_.erase(items_.begin() + index); |
| 41 FOR_EACH_OBSERVER(LauncherModelObserver, observers_, | 33 FOR_EACH_OBSERVER(LauncherModelObserver, observers_, |
| 42 LauncherItemRemoved(index)); | 34 LauncherItemRemoved(index)); |
| 43 } | 35 } |
| 44 | 36 |
| 45 void LauncherModel::SetSelectedIndex(int index) { | 37 void LauncherModel::SetTabbedImages(int index, |
| 46 if (index == selected_index_) | 38 const LauncherTabbedImages& images) { |
| 47 return; | 39 DCHECK(index >= 0 && index < item_count()); |
| 48 DCHECK(selected_index_ == -1 || | 40 DCHECK_EQ(TYPE_TABBED, items_[index].type); |
| 49 (selected_index_ >= 0 && selected_index_ < item_count())); | 41 items_[index].tab_images = images; |
| 50 selected_index_ = index; | |
| 51 FOR_EACH_OBSERVER(LauncherModelObserver, observers_, | 42 FOR_EACH_OBSERVER(LauncherModelObserver, observers_, |
| 52 LauncherSelectionChanged()); | 43 LauncherItemImagesChanged(index)); |
| 53 } | 44 } |
| 54 | 45 |
| 55 int LauncherModel::IndexOfItemByView(views::View* view) { | 46 void LauncherModel::SetAppImage(int index, const SkBitmap& image) { |
| 56 for (Items::const_iterator i = items_.begin(); i != items_.end(); ++i) { | 47 DCHECK(index >= 0 && index < item_count()); |
| 57 if (i->view == view) | 48 DCHECK_EQ(TYPE_APP, items_[index].type); |
| 58 return i - items_.begin(); | 49 items_[index].app_image = image; |
| 59 } | 50 FOR_EACH_OBSERVER(LauncherModelObserver, observers_, |
| 60 return -1; | 51 LauncherItemImagesChanged(index)); |
| 61 } | 52 } |
| 62 | 53 |
| 63 void LauncherModel::AddObserver(LauncherModelObserver* observer) { | 54 void LauncherModel::AddObserver(LauncherModelObserver* observer) { |
| 64 observers_.AddObserver(observer); | 55 observers_.AddObserver(observer); |
| 65 } | 56 } |
| 66 | 57 |
| 67 void LauncherModel::RemoveObserver(LauncherModelObserver* observer) { | 58 void LauncherModel::RemoveObserver(LauncherModelObserver* observer) { |
| 68 observers_.RemoveObserver(observer); | 59 observers_.RemoveObserver(observer); |
| 69 } | 60 } |
| 70 | 61 |
| 71 } // namespace aura_shell | 62 } // namespace aura_shell |
| OLD | NEW |