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

Side by Side Diff: ui/aura_shell/examples/app_list_model.cc

Issue 8890049: [Aura] Implement views-based applist. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebased and refactored Created 9 years 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
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "base/basictypes.h"
6 #include "ui/aura_shell/app_list/app_list_item_model.h"
7 #include "ui/aura_shell/app_list/app_list_item_group_model.h"
8 #include "ui/aura_shell/app_list/app_list_model.h"
9 #include "ui/aura_shell/app_list/tile_view.h"
10 #include "ui/aura_shell/examples/example_factory.h"
11 #include "ui/aura_shell/examples/toplevel_window.h"
12 #include "ui/views/examples/examples_window.h"
13
14 namespace aura_shell {
15 namespace examples {
16
17 namespace {
18
19 class WindowTypeLauncherItem : public AppListItemModel {
20 public:
21 enum Type {
22 TOPLEVEL_WINDOW = 0,
23 NON_RESIZABLE_WINDOW,
24 LOCK_SCREEN,
25 WIDGETS_WINDOW,
26 EXAMPLES_WINDOW,
27 LAST_TYPE,
28 };
29
30 WindowTypeLauncherItem(Type type)
31 : AppListItemModel(GetIcon(type), GetTitle(type)),
32 type_(type) {
33 }
34
35 static SkBitmap GetIcon(Type type) {
36 static const SkColor kColors[] = {
37 SkColorSetA(SK_ColorRED, 0x4F),
38 SkColorSetA(SK_ColorGREEN, 0x4F),
39 SkColorSetA(SK_ColorBLUE, 0x4F),
40 SkColorSetA(SK_ColorYELLOW, 0x4F),
41 SkColorSetA(SK_ColorCYAN, 0x4F),
42 };
43
44 SkBitmap icon;
45 icon.setConfig(SkBitmap::kARGB_8888_Config,
46 TileView::kIconSize,
47 TileView::kIconSize);
48 icon.allocPixels();
49 icon.eraseColor(kColors[static_cast<int>(type) % arraysize(kColors)]);
50 return icon;
51 }
52
53 static std::string GetTitle(Type type) {
54 switch (type) {
55 case TOPLEVEL_WINDOW:
56 return "Create Window";
57 case NON_RESIZABLE_WINDOW:
58 return "Create Non-Resizable Window";
59 case LOCK_SCREEN:
60 return "Lock Screen";
61 case WIDGETS_WINDOW:
62 return "Show Example Widgets";
63 case EXAMPLES_WINDOW:
64 return "Open Views Examples Window";
65 default:
66 return "Unknown window type.";
67 }
68 }
69
70 private:
71 virtual void Activate(int event_flags) OVERRIDE {
72 switch (type_) {
73 case TOPLEVEL_WINDOW: {
74 ToplevelWindow::CreateParams params;
75 params.can_resize = true;
76 ToplevelWindow::CreateToplevelWindow(params);
77 break;
78 }
79 case NON_RESIZABLE_WINDOW: {
80 ToplevelWindow::CreateToplevelWindow(ToplevelWindow::CreateParams());
81 break;
82 }
83 case LOCK_SCREEN: {
84 CreateLockScreen();
85 break;
86 }
87 case WIDGETS_WINDOW: {
88 CreateWidgetsWindow();
89 break;
90 }
91 case EXAMPLES_WINDOW: {
92 views::examples::ShowExamplesWindow(false);
93 break;
94 }
95 default:
96 break;
97 }
98 }
99
100 Type type_;
101
102 DISALLOW_COPY_AND_ASSIGN(WindowTypeLauncherItem);
103 };
104
105 AppListItemGroupModel* CreateGroup(const std::string& title,
106 WindowTypeLauncherItem::Type start_type,
107 WindowTypeLauncherItem::Type end_type) {
108 AppListItemGroupModel* group = new AppListItemGroupModel(title);
109 for (int i = static_cast<int>(start_type);
110 i < static_cast<int>(end_type);
111 ++i) {
112 WindowTypeLauncherItem::Type type =
113 static_cast<WindowTypeLauncherItem::Type>(i);
114 group->Add(new WindowTypeLauncherItem(type));
115 }
116 return group;
117 }
118
119 } // namespace
120
121 AppListModel* CreateAppListModel() {
122 AppListModel* model = new AppListModel();
123 model->Add(CreateGroup("Window",
124 WindowTypeLauncherItem::TOPLEVEL_WINDOW,
125 WindowTypeLauncherItem::WIDGETS_WINDOW));
126 model->Add(CreateGroup("Samples",
127 WindowTypeLauncherItem::WIDGETS_WINDOW,
128 WindowTypeLauncherItem::LAST_TYPE));
129 return model;
130 }
131
132 } // namespace examples
133 } // namespace aura_shell
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698