Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(168)

Unified Diff: ios/chrome/browser/ui/contextual_search/panel_configuration.h

Issue 2588713002: Upstream Chrome on iOS source code [4/11]. (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ios/chrome/browser/ui/contextual_search/panel_configuration.h
diff --git a/ios/chrome/browser/ui/contextual_search/panel_configuration.h b/ios/chrome/browser/ui/contextual_search/panel_configuration.h
new file mode 100644
index 0000000000000000000000000000000000000000..64bc5ce2770c969fa8dcea4aae469239753d5df9
--- /dev/null
+++ b/ios/chrome/browser/ui/contextual_search/panel_configuration.h
@@ -0,0 +1,86 @@
+// Copyright 2015 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 IOS_CHROME_BROWSER_UI_CONTEXTUAL_SEARCH_PANEL_CONFIGURATION_H_
+#define IOS_CHROME_BROWSER_UI_CONTEXTUAL_SEARCH_PANEL_CONFIGURATION_H_
+
+#import <UIKit/UIKit.h>
+
+namespace ContextualSearch {
+
+// Possible states (static positions) of the panel.
+typedef NS_ENUM(NSInteger, PanelState) {
+ // TODO(crbug.com/546210): Rename to match Android implementation.
+ // Ordering matters for these values.
+ UNDEFINED = -1,
+ DISMISSED, // (CLOSED) Offscreen
+ PEEKING, // (PEEKED) Showing a small amount at the bottom of the screen
+ PREVIEWING, // (EXPANDED) Panel covers 2/3 of the tab.
+ COVERING, // (MAXIMIZED) Panel covers entire tab.
+};
+
+} // namespace ContextualSearch
+
+// A PanelConfiguration object manages the panel's size, and the mapping between
+// states and y-coordinates for the panel. Nothing in the configuration object
+// changes the position or state of the panel; it just provides information for
+// other classes that make such changes.
+// PanelConfiguration is an abstract superclass; one of the device-specific
+// classes should be instantiated instead.
+@interface PanelConfiguration : NSObject
+
+// Size of the view that contains the panel.
+@property(nonatomic, assign) CGSize containerSize;
+// Current horizontal size class of the view that contains the panel.
+@property(nonatomic, assign) UIUserInterfaceSizeClass horizontalSizeClass;
+// Height that the panel peeks into the containing view when peeking.
+@property(nonatomic, readonly) CGFloat peekingHeight;
+
+// Creates and returns a configuration object for a container of the given size.
++ (instancetype)configurationForContainerSize:(CGSize)containerSize
+ horizontalSizeClass:
+ (UIUserInterfaceSizeClass)horizontalSizeClass;
+
+// Given the current configuration, returns the y-coordinate for the top of the
+// panel in |state|. This can be called "the position for |state|".
+- (CGFloat)positionForPanelState:(ContextualSearch::PanelState)state;
+
+// Given the current configuration, returns the state for a panel whose top
+// edge is at |positions|. The range of positions for a state are the half-
+// closed interval (J .. I], where I is position for |state| and J is the
+// position for |state| + 1. (Note that positions decrease, moving towards
+// the y-origin, as states increase).
+- (ContextualSearch::PanelState)panelStateForPosition:(CGFloat)position;
+
+// Returns the gradation (a value in [0.0 .. 1.0]) of |position| in terms of the
+// distance from |fromState| to |toState|. A gradation of 0.0 means |position|
+// is equal to the position for |fromState|; a gradation of 1.0 means it is
+// equal to the position for |toState|, and intermediate values correspond
+// linearly to intermediate values.
+- (CGFloat)gradationToState:(ContextualSearch::PanelState)toState
+ fromState:(ContextualSearch::PanelState)fromState
+ atPosition:(CGFloat)position;
+
+// Given |panel|, a view being used as the panel that the receiver configures,
+// return constraints to size the panel as defined by the receiver.
+- (NSArray*)constraintsForSizingPanel:(UIView*)panel;
+
+// Given a |guide|, which must have a non-nil owning view, constructs and
+// returns an autoreleased layout constraint that correctly sets the height of
+// |guide| for |guide| to act as a positioning guide for a panel in |state|.
+- (NSLayoutConstraint*)
+constraintForPositioningGuide:(UILayoutGuide*)view
+ atState:(ContextualSearch::PanelState)state;
+
+@end
+
+// Panel configuration for phone formats.
+@interface PhonePanelConfiguration : PanelConfiguration
+@end
+
+// Panel configuration for iPad interface idioms.
+@interface PadPanelConfiguration : PanelConfiguration
+@end
+
+#endif // IOS_CHROME_BROWSER_UI_CONTEXTUAL_SEARCH_PANEL_CONFIGURATION_H_

Powered by Google App Engine
This is Rietveld 408576698