chromium/ash/public/cpp/shelf_types.h

// Copyright 2012 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef ASH_PUBLIC_CPP_SHELF_TYPES_H_
#define ASH_PUBLIC_CPP_SHELF_TYPES_H_

#include <cstdint>
#include <ostream>
#include <string>

#include "ash/public/cpp/ash_public_export.h"

namespace ash {

enum class ShelfAlignment {};

enum class HotseatState {};

// Defines the density of hotseat. Hotseat is "denser" if it can accommodate
// more shelf buttons without scrolling for the given available space.
enum class HotseatDensity {};

enum class ShelfAutoHideBehavior {};

enum ShelfAutoHideState {};

ASH_PUBLIC_EXPORT std::ostream& operator<<(std::ostream& out,
                                           ShelfAlignment alignment);
ASH_PUBLIC_EXPORT std::ostream& operator<<(std::ostream& out,
                                           ShelfAutoHideState state);

enum ShelfVisibilityState {};

enum class ShelfBackgroundType {};

ASH_PUBLIC_EXPORT std::ostream& operator<<(std::ostream& out,
                                           ShelfBackgroundType type);

// Source of the launch or activation request, for tracking.
enum ShelfLaunchSource {};

// The actions that may be performed when a shelf item is selected.
enum ShelfAction {};

// The type of a shelf item.
enum ShelfItemType {};

// Returns true if |type| is a valid ShelfItemType.
ASH_PUBLIC_EXPORT bool IsValidShelfItemType(int64_t type);

// Returns true if |type| is a pinned type (i.e. not a running app or dialog).
ASH_PUBLIC_EXPORT bool IsPinnedShelfItemType(ShelfItemType type);

// Returns true if types |a| and |b| have the same pin state, i.e. if they
// are both pinned apps (or a browser shortcut which is always pinned) or both
// unpinned apps. Returns false if either a or b aren't an app type.
ASH_PUBLIC_EXPORT bool SamePinState(ShelfItemType a, ShelfItemType b);

// Represents the status of applications in the shelf.
enum ShelfItemStatus {};

// Represents the app status in the shelf or app_list.
enum AppStatus {};

// A unique shelf item id composed of an |app_id| and a |launch_id|.
// |app_id| is the non-empty application id associated with a set of windows.
// |launch_id| is passed on app launch, to support multiple shelf items per app.
// As an example, a remote desktop client may want each remote application to
// have its own icon.
struct ASH_PUBLIC_EXPORT ShelfID {};

ASH_PUBLIC_EXPORT std::ostream& operator<<(std::ostream& o, const ShelfID& id);

}  // namespace ash

#endif  // ASH_PUBLIC_CPP_SHELF_TYPES_H_