1// Copyright (c) 2010 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 CHROME_BROWSER_UI_COCOA_BOOKMARKS_BOOKMARK_BAR_STATE_H_
6#define CHROME_BROWSER_UI_COCOA_BOOKMARKS_BOOKMARK_BAR_STATE_H_
7#pragma once
8
9#import <Cocoa/Cocoa.h>
10
11namespace bookmarks {
12
13// States for the bookmark bar.
14enum VisualState {
15  kInvalidState  = 0,
16  kHiddenState   = 1,
17  kShowingState  = 2,
18  kDetachedState = 3,
19};
20
21}  // namespace bookmarks
22
23// The interface for controllers (etc.) which can give information about the
24// bookmark bar's state.
25@protocol BookmarkBarState
26
27// Returns YES if the bookmark bar is currently visible (as a normal toolbar or
28// as a detached bar on the NTP), NO otherwise.
29- (BOOL)isVisible;
30
31// Returns YES if an animation is currently running, NO otherwise.
32- (BOOL)isAnimationRunning;
33
34// Returns YES if the bookmark bar is in the given state and not in an
35// animation, NO otherwise.
36- (BOOL)isInState:(bookmarks::VisualState)state;
37
38// Returns YES if the bookmark bar is animating from the given state (to any
39// other state), NO otherwise.
40- (BOOL)isAnimatingToState:(bookmarks::VisualState)state;
41
42// Returns YES if the bookmark bar is animating to the given state (from any
43// other state), NO otherwise.
44- (BOOL)isAnimatingFromState:(bookmarks::VisualState)state;
45
46// Returns YES if the bookmark bar is animating from the first given state to
47// the second given state, NO otherwise.
48- (BOOL)isAnimatingFromState:(bookmarks::VisualState)fromState
49                     toState:(bookmarks::VisualState)toState;
50
51// Returns YES if the bookmark bar is animating between the two given states (in
52// either direction), NO otherwise.
53- (BOOL)isAnimatingBetweenState:(bookmarks::VisualState)fromState
54                       andState:(bookmarks::VisualState)toState;
55
56// Returns how morphed into the detached bubble the bookmark bar should be (1 =
57// completely detached, 0 = normal).
58- (CGFloat)detachedMorphProgress;
59
60@end
61
62#endif  // CHROME_BROWSER_UI_COCOA_BOOKMARKS_BOOKMARK_BAR_STATE_H_
63