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