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

Side by Side Diff: ui/app_list/app_list_folder_item.cc

Issue 27777002: Implement app list folder management page UI. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix nits. Created 7 years, 1 month 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 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 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/app_list/app_list_folder_item.h" 5 #include "ui/app_list/app_list_folder_item.h"
6 #include "ui/gfx/canvas.h" 6 #include "ui/gfx/canvas.h"
7 #include "ui/gfx/image/canvas_image_source.h" 7 #include "ui/gfx/image/canvas_image_source.h"
8 #include "ui/gfx/image/image_skia_operations.h" 8 #include "ui/gfx/image/image_skia_operations.h"
9 9
10 namespace app_list { 10 namespace app_list {
11 11
12 namespace { 12 namespace {
13 13
14 const int kIconDimension = 48; 14 const int kIconDimension = 48;
15 const size_t kNumTopApps = 4; 15 const size_t kNumTopApps = 4;
16 const int kItemIconDimension = 16; 16 const int kItemIconDimension = 16;
17 17
18 // Genearats the folder icon with the top 4 child item icons laid in 2x2 tile. 18 // Generates the folder icon with the top 4 child item icons laid in 2x2 tile.
19 class FolderImageSource : public gfx::CanvasImageSource { 19 class FolderImageSource : public gfx::CanvasImageSource {
20 public: 20 public:
21 typedef std::vector<gfx::ImageSkia> Icons; 21 typedef std::vector<gfx::ImageSkia> Icons;
22 22
23 FolderImageSource(const Icons& icons, const gfx::Size& size) 23 FolderImageSource(const Icons& icons, const gfx::Size& size)
24 : gfx::CanvasImageSource(size, false), 24 : gfx::CanvasImageSource(size, false),
25 icons_(icons), 25 icons_(icons),
26 size_(size) { 26 size_(size) {
27 DCHECK(icons.size() <= kNumTopApps); 27 DCHECK(icons.size() <= kNumTopApps);
28 } 28 }
29 29
30 virtual ~FolderImageSource() {} 30 virtual ~FolderImageSource() {}
31 31
32 private: 32 private:
33 void DrawIcon(gfx::Canvas* canvas, 33 void DrawIcon(gfx::Canvas* canvas,
34 const gfx::ImageSkia& icon, 34 const gfx::ImageSkia& icon,
35 const gfx::Size icon_size, 35 const gfx::Size icon_size,
36 int x, int y) { 36 int x, int y) {
37 gfx::ImageSkia resized( 37 gfx::ImageSkia resized(
38 gfx::ImageSkiaOperations::CreateResizedImage( 38 gfx::ImageSkiaOperations::CreateResizedImage(
39 icon, skia::ImageOperations::RESIZE_BEST, icon_size)); 39 icon, skia::ImageOperations::RESIZE_BEST, icon_size));
40 canvas->DrawImageInt(resized, 0, 0, resized.width(), resized.height(), 40 canvas->DrawImageInt(resized, 0, 0, resized.width(), resized.height(),
41 x, y, resized.width(), resized.height(), true); 41 x, y, resized.width(), resized.height(), true);
42 } 42 }
43 43
44 // gfx::CanvasImageSource overrides: 44 // gfx::CanvasImageSource overrides:
45 virtual void Draw(gfx::Canvas* canvas) OVERRIDE { 45 virtual void Draw(gfx::Canvas* canvas) OVERRIDE {
46 // Draw folder circle. 46 // Draw folder circle.
47 gfx::Point center = gfx::Point(size().width() / 2 , size().height() / 2); 47 gfx::Point center = gfx::Point(size().width() / 2 , size().height() / 2);
48 const SkColor kCirclColor = SkColorSetRGB(0xE1, 0xE1, 0xE1); 48 const SkColor kCircleColor = SkColorSetRGB(0xE1, 0xE1, 0xE1);
49 SkPaint paint; 49 SkPaint paint;
50 paint.setStyle(SkPaint::kFill_Style); 50 paint.setStyle(SkPaint::kFill_Style);
51 paint.setAntiAlias(true); 51 paint.setAntiAlias(true);
52 paint.setColor(kCirclColor); 52 paint.setColor(kCircleColor);
53 canvas->DrawCircle(center, size().width() / 2, paint); 53 canvas->DrawCircle(center, size().width() / 2, paint);
54 54
55 if (icons_.size() == 0) 55 if (icons_.size() == 0)
56 return; 56 return;
57 57
58 // Tiled icon coordinates. 58 // Tiled icon coordinates.
59 const int delta_to_center = 1; 59 const int delta_to_center = 1;
60 const gfx::Size item_icon_size = 60 const gfx::Size item_icon_size =
61 gfx::Size(kItemIconDimension, kItemIconDimension); 61 gfx::Size(kItemIconDimension, kItemIconDimension);
62 int left_x = center.x() - item_icon_size.width() - delta_to_center; 62 int left_x = center.x() - item_icon_size.width() - delta_to_center;
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 SetIcon(icon, false); 137 SetIcon(icon, false);
138 } 138 }
139 139
140 std::string AppListFolderItem::GetSortOrder() const { 140 std::string AppListFolderItem::GetSortOrder() const {
141 // For now, put folders at the end of the list. 141 // For now, put folders at the end of the list.
142 // TODO(stevenjb): Implement synced app list ordering. 142 // TODO(stevenjb): Implement synced app list ordering.
143 return "zzzzzzzz"; 143 return "zzzzzzzz";
144 } 144 }
145 145
146 void AppListFolderItem::Activate(int event_flags) { 146 void AppListFolderItem::Activate(int event_flags) {
147 // TODO(stevenjb/jennyz): Implement. 147 // TODO(stevenjb/jennyz): Implement.
stevenjb 2013/10/22 18:34:27 Update this comment to something like "Folder hand
jennyz 2013/10/22 18:55:36 Done.
148 VLOG(1) << "AppListFolderItem::Activate"; 148 VLOG(1) << "AppListFolderItem::Activate";
149 } 149 }
150 150
151 // static 151 // static
152 const char AppListFolderItem::kAppType[] = "FolderItem"; 152 const char AppListFolderItem::kAppType[] = "FolderItem";
153 153
154 const char* AppListFolderItem::GetAppType() const { 154 const char* AppListFolderItem::GetAppType() const {
155 return AppListFolderItem::kAppType; 155 return AppListFolderItem::kAppType;
156 } 156 }
157 157
(...skipping 25 matching lines...) Expand all
183 183
184 for (size_t i = 0; i < kNumTopApps && i < apps_->item_count(); ++i) { 184 for (size_t i = 0; i < kNumTopApps && i < apps_->item_count(); ++i) {
185 AppListItemModel* item = apps_->GetItemAt(i); 185 AppListItemModel* item = apps_->GetItemAt(i);
186 item->AddObserver(this); 186 item->AddObserver(this);
187 top_items_.push_back(item); 187 top_items_.push_back(item);
188 } 188 }
189 UpdateIcon(); 189 UpdateIcon();
190 } 190 }
191 191
192 } // namespace app_list 192 } // namespace app_list
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698