1// Copyright (c) 2012 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_LAUNCHER_LAUNCHER_TYPES_H_
6#define ASH_LAUNCHER_LAUNCHER_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 LauncherID;
17
18// Height of the Launcher. Hard coded to avoid resizing as items are
19// added/removed.
20ASH_EXPORT extern const int kLauncherPreferredSize;
21
22// Max alpha of the launcher background.
23ASH_EXPORT extern const int kLauncherBackgroundAlpha;
24
25// Invalid image resource id used for LauncherItemDetails.
26extern const int kInvalidImageResourceID;
27
28extern const int kInvalidLauncherID;
29
30// Animation duration for switching black shelf and dock background on and off.
31ASH_EXPORT extern const int kTimeToSwitchBackgroundMs;
32
33// Type the LauncherItem represents.
34enum LauncherItemType {
35  // Represents a running app panel.
36  TYPE_APP_PANEL,
37
38  // Represents a pinned shortcut to an app.
39  TYPE_APP_SHORTCUT,
40
41  // Toggles visiblity of the app list.
42  TYPE_APP_LIST,
43
44  // The browser shortcut button.
45  TYPE_BROWSER_SHORTCUT,
46
47  // Represents a platform app.
48  TYPE_PLATFORM_APP,
49
50  // Represents a windowed V1 browser app.
51  TYPE_WINDOWED_APP,
52
53  // Default value.
54  TYPE_UNDEFINED,
55};
56
57// Represents the status of pinned or running app launcher items.
58enum LauncherItemStatus {
59  // A closed LauncherItem, i.e. has no live instance.
60  STATUS_CLOSED,
61  // A LauncherItem that has live instance.
62  STATUS_RUNNING,
63  // An active LauncherItem that has focus.
64  STATUS_ACTIVE,
65  // A LauncherItem that needs user's attention.
66  STATUS_ATTENTION,
67};
68
69struct ASH_EXPORT LauncherItem {
70  LauncherItem();
71  ~LauncherItem();
72
73  LauncherItemType type;
74
75  // Image to display in the launcher.
76  gfx::ImageSkia image;
77
78  // Assigned by the model when the item is added.
79  LauncherID id;
80
81  // Running status.
82  LauncherItemStatus status;
83};
84
85typedef std::vector<LauncherItem> LauncherItems;
86
87// The direction of the focus cycling.
88enum CycleDirection {
89  CYCLE_FORWARD,
90  CYCLE_BACKWARD
91};
92
93// LauncherItemDetails may be set on Window (by way of
94// SetLauncherItemDetailsForWindow) to make the window appear in the shelf. See
95// ShelfWindowWatcher for details.
96struct ASH_EXPORT LauncherItemDetails {
97  LauncherItemDetails();
98  ~LauncherItemDetails();
99
100  LauncherItemType type;
101
102  // Resource id of the image to display on the shelf.
103  int image_resource_id;
104
105  // Title of the item.
106  base::string16 title;
107};
108
109}  // namespace ash
110
111#endif  // ASH_LAUNCHER_LAUNCHER_TYPES_H_
112