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
14namespace ash {
15
16typedef int ShelfID;
17
18// The type of a shelf item.
19enum 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.
46enum 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
57struct 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
73typedef 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.
78struct 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_
94