Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / ash / shelf / shelf_item_types.h
1 // Copyright 2014 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 #ifndef ASH_SHELF_SHELF_ITEM_TYPES_H_
6 #define ASH_SHELF_SHELF_ITEM_TYPES_H_
7
8 #include <vector>
9
10 #include "ash/ash_export.h"
11 #include "base/strings/string16.h"
12 #include "ui/gfx/image/image_skia.h"
13
14 namespace ash {
15
16 typedef int ShelfID;
17
18 // The type of a shelf item.
19 enum ShelfItemType {
20   // Represents a running app panel.
21   TYPE_APP_PANEL,
22
23   // Represents a pinned shortcut to an app.
24   TYPE_APP_SHORTCUT,
25
26   // Toggles visiblity of the app list.
27   TYPE_APP_LIST,
28
29   // The browser shortcut button.
30   TYPE_BROWSER_SHORTCUT,
31
32   // Represents a platform app.
33   TYPE_PLATFORM_APP,
34
35   // Represents a windowed V1 browser app.
36   TYPE_WINDOWED_APP,
37
38   // Represents a dialog.
39   TYPE_DIALOG,
40
41   // Default value.
42   TYPE_UNDEFINED,
43 };
44
45 // Represents the status of applications in the shelf.
46 enum ShelfItemStatus {
47   // A closed shelf item, i.e. has no live instance.
48   STATUS_CLOSED,
49   // A shelf item that has live instance.
50   STATUS_RUNNING,
51   // An active shelf item that has focus.
52   STATUS_ACTIVE,
53   // A shelf item that needs user's attention.
54   STATUS_ATTENTION,
55 };
56
57 struct ASH_EXPORT ShelfItem {
58   ShelfItem();
59   ~ShelfItem();
60
61   ShelfItemType type;
62
63   // Image to display in the shelf.
64   gfx::ImageSkia image;
65
66   // Assigned by the model when the item is added.
67   ShelfID id;
68
69   // Running status.
70   ShelfItemStatus status;
71 };
72
73 typedef std::vector<ShelfItem> ShelfItems;
74
75 // ShelfItemDetails may be set on Window (by way of
76 // SetShelfItemDetailsForWindow) to make the window appear in the shelf. See
77 // ShelfWindowWatcher for details.
78 struct ASH_EXPORT ShelfItemDetails {
79   ShelfItemDetails();
80   ~ShelfItemDetails();
81
82   ShelfItemType type;
83
84   // Resource id of the image to display on the shelf.
85   int image_resource_id;
86
87   // Title of the item.
88   base::string16 title;
89 };
90
91 }  // namespace ash
92
93 #endif  // ASH_SHELF_SHELF_ITEM_TYPES_H_