// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef ASH_SHELF_SHELF_ITEM_TYPES_H_ #define ASH_SHELF_SHELF_ITEM_TYPES_H_ #include <vector> #include "ash/ash_export.h" #include "base/strings/string16.h" #include "ui/gfx/image/image_skia.h" namespace ash { typedef int ShelfID; // The type of a shelf item. enum ShelfItemType { // Represents a running app panel. TYPE_APP_PANEL, // Represents a pinned shortcut to an app. TYPE_APP_SHORTCUT, // Toggles visiblity of the app list. TYPE_APP_LIST, // The browser shortcut button. TYPE_BROWSER_SHORTCUT, // Represents a platform app. TYPE_PLATFORM_APP, // Represents a windowed V1 browser app. TYPE_WINDOWED_APP, // Represents a dialog. TYPE_DIALOG, // Default value. TYPE_UNDEFINED, }; // Represents the status of applications in the shelf. enum ShelfItemStatus { // A closed shelf item, i.e. has no live instance. STATUS_CLOSED, // A shelf item that has live instance. STATUS_RUNNING, // An active shelf item that has focus. STATUS_ACTIVE, // A shelf item that needs user's attention. STATUS_ATTENTION, }; struct ASH_EXPORT ShelfItem { ShelfItem(); ~ShelfItem(); ShelfItemType type; // Image to display in the shelf. gfx::ImageSkia image; // Assigned by the model when the item is added. ShelfID id; // Running status. ShelfItemStatus status; }; typedef std::vector<ShelfItem> ShelfItems; // ShelfItemDetails may be set on Window (by way of // SetShelfItemDetailsForWindow) to make the window appear in the shelf. See // ShelfWindowWatcher for details. struct ASH_EXPORT ShelfItemDetails { ShelfItemDetails(); ~ShelfItemDetails(); ShelfItemType type; // Resource id of the image to display on the shelf. int image_resource_id; // Title of the item. base::string16 title; }; } // namespace ash #endif // ASH_SHELF_SHELF_ITEM_TYPES_H_