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 "ui/app_list/app_list_item.h" 6 7 #include "base/logging.h" 8 #include "ui/app_list/app_list_item_observer.h" 9 10 namespace app_list { 11 12 AppListItem::AppListItem(const std::string& id) 13 : id_(id), 14 has_shadow_(false), 15 highlighted_(false), 16 is_installing_(false), 17 percent_downloaded_(-1) { 18 } 19 20 AppListItem::~AppListItem() { 21 FOR_EACH_OBSERVER(AppListItemObserver, observers_, ItemBeingDestroyed()); 22 } 23 24 void AppListItem::SetIcon(const gfx::ImageSkia& icon, bool has_shadow) { 25 icon_ = icon; 26 has_shadow_ = has_shadow; 27 FOR_EACH_OBSERVER(AppListItemObserver, observers_, ItemIconChanged()); 28 } 29 30 void AppListItem::SetHighlighted(bool highlighted) { 31 if (highlighted_ == highlighted) 32 return; 33 34 highlighted_ = highlighted; 35 FOR_EACH_OBSERVER(AppListItemObserver, 36 observers_, 37 ItemHighlightedChanged()); 38 } 39 40 void AppListItem::SetIsInstalling(bool is_installing) { 41 if (is_installing_ == is_installing) 42 return; 43 44 is_installing_ = is_installing; 45 FOR_EACH_OBSERVER(AppListItemObserver, 46 observers_, 47 ItemIsInstallingChanged()); 48 } 49 50 void AppListItem::SetPercentDownloaded(int percent_downloaded) { 51 if (percent_downloaded_ == percent_downloaded) 52 return; 53 54 percent_downloaded_ = percent_downloaded; 55 FOR_EACH_OBSERVER(AppListItemObserver, 56 observers_, 57 ItemPercentDownloadedChanged()); 58 } 59 60 void AppListItem::AddObserver(AppListItemObserver* observer) { 61 observers_.AddObserver(observer); 62 } 63 64 void AppListItem::RemoveObserver(AppListItemObserver* observer) { 65 observers_.RemoveObserver(observer); 66 } 67 68 void AppListItem::Activate(int event_flags) { 69 } 70 71 const char* AppListItem::GetItemType() const { 72 static const char* app_type = ""; 73 return app_type; 74 } 75 76 ui::MenuModel* AppListItem::GetContextMenuModel() { 77 return NULL; 78 } 79 80 AppListItem* AppListItem::FindChildItem(const std::string& id) { 81 return NULL; 82 } 83 84 size_t AppListItem::ChildItemCount() const { 85 return 0; 86 } 87 88 void AppListItem::OnExtensionPreferenceChanged() {} 89 90 bool AppListItem::CompareForTest(const AppListItem* other) const { 91 return id_ == other->id_ && 92 folder_id_ == other->folder_id_ && 93 name_ == other->name_ && 94 short_name_ == other->short_name_ && 95 GetItemType() == other->GetItemType() && 96 position_.Equals(other->position_); 97 } 98 99 std::string AppListItem::ToDebugString() const { 100 return id_.substr(0, 8) + " '" + name_ + "'" 101 + " [" + position_.ToDebugString() + "]"; 102 } 103 104 // Protected methods 105 106 void AppListItem::SetName(const std::string& name) { 107 if (name_ == name && (short_name_.empty() || short_name_ == name)) 108 return; 109 name_ = name; 110 short_name_.clear(); 111 FOR_EACH_OBSERVER(AppListItemObserver, observers_, ItemNameChanged()); 112 } 113 114 void AppListItem::SetNameAndShortName(const std::string& name, 115 const std::string& short_name) { 116 if (name_ == name && short_name_ == short_name) 117 return; 118 name_ = name; 119 short_name_ = short_name; 120 FOR_EACH_OBSERVER(AppListItemObserver, observers_, ItemNameChanged()); 121 } 122 123 } // namespace app_list 124