| // 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 IOS_CHROME_BROWSER_TABS_UI_BUNDLED_TAB_STRIP_CONTROLLER_H_ |
| #define IOS_CHROME_BROWSER_TABS_UI_BUNDLED_TAB_STRIP_CONTROLLER_H_ |
| |
| #import <UIKit/UIKit.h> |
| |
| #import "ios/chrome/browser/tabs/ui_bundled/requirements/tab_strip_constants.h" |
| |
| @protocol TabStripPresentation; |
| @class ViewRevealingVerticalPanHandler; |
| class Browser; |
| @class LayoutGuideCenter; |
| |
| // Controller class for the tabstrip. Manages displaying tabs and keeping the |
| // display in sync with a Browser's WebStateList. This controller is only |
| // instantiated on tablet. The tab strip view itself is a subclass of |
| // UIScrollView, which manages scroll offsets and scroll animations. |
| @interface TabStripController : NSObject |
| |
| @property(nonatomic, assign) BOOL highlightsSelectedTab; |
| @property(nonatomic, readonly, strong) UIView* view; |
| |
| // The duration to wait before starting tab strip animations. Used to |
| // synchronize animations. |
| @property(nonatomic, assign) NSTimeInterval animationWaitDuration; |
| |
| // Used to check if the tabstrip is visible before starting an animation. |
| @property(nonatomic, weak) id<TabStripPresentation> presentationProvider; |
| |
| // Designated initializer. |
| - (instancetype)initWithBaseViewController:(UIViewController*)baseViewController |
| browser:(Browser*)browser |
| style:(TabStripStyle)style |
| layoutGuideCenter:(LayoutGuideCenter*)layoutGuideCenter |
| NS_DESIGNATED_INITIALIZER; |
| |
| - (instancetype)init NS_UNAVAILABLE; |
| |
| // Hides or shows the tab strip. |
| - (void)hideTabStrip:(BOOL)hidden; |
| |
| // Preprare the receiver for destruction, disconnecting from all services. |
| // It is an error for the receiver to dealloc without this having been called |
| // first. |
| - (void)disconnect; |
| |
| // Notifies of a forced resizing layout of the tab strip. |
| - (void)tabStripSizeDidChange; |
| |
| @end |
| |
| #endif // IOS_CHROME_BROWSER_TABS_UI_BUNDLED_TAB_STRIP_CONTROLLER_H_ |