// Copyright 2018-present the Material Components for iOS authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

#import <UIKit/UIKit.h>

#import "MDCBaseCell.h"
#import "MDCSelfSizingStereoCellImageViewVerticalPosition.h"

API_DEPRECATED_BEGIN("🕘 Schedule time to migrate. "
                     "Use branded UITableView or UICollectionView instead: go/material-ios-lists. "
                     "This is go/material-ios-migrations#not-scriptable 🕘",
                     ios(12, 12))

/**
 MDCSelfSizingStereoCell is intended to be an easy to use readymade implementation of a basic
 "Stereo" cell. A stereo cell can be thought of as a roughly symmetrical cell with image views on
 either side--like the speakers in an old fashioned boombox stereo.

 The cell is intended to be used with a UICollectionViewFlowLayout with an estimatedItemSize.
 Setting estimatedItemSize on the layout tells the collection view and the layout to query the cell
 for a size that best fits the estimated size. The cell lays out its contents according to the width
 provided in the estimated size and then calculates a height based off the layout. For any given
 width there is only one correct height.

 The client is expected to configure the exposed subviews in any way they like from within
 `-collectionView:cellForItemAtIndexPath:`. If changes that might have ramifications to the cell's
 layout or size are made outside of `-collectionView:cellForItemAtIndexPath:` a call to
 `-setNeedsLayout` is necessary to invalidate previously calculated layouts.

 The client is expected NOT to manually set the frames of the view themselves or manipulate the view
 hierarchy in any way.
 */
__attribute__((objc_subclassing_restricted))
@interface MDCSelfSizingStereoCell : MDCBaseCell

/**
 The UIImageView responsible for displaying the leading image.
 */
@property(nonatomic, strong, readonly) UIImageView *leadingImageView;

/**
 This property influences the positioning of @c leadingImageView. The default value is @c .top.
 */
@property(nonatomic, assign)
    MDCSelfSizingStereoCellImageViewVerticalPosition leadingImageViewVerticalPosition;

/**
 The UIImageView responsible for displaying the trailing image.
 */
@property(nonatomic, strong, readonly) UIImageView *trailingImageView;

/**
 This property influences the positioning of @c trailingImageView. The default value is @c .top.
 */
@property(nonatomic, assign)
    MDCSelfSizingStereoCellImageViewVerticalPosition trailingImageViewVerticalPosition;

/**
 The UILabel responsible for displaying the title text. By default, `numberOfLines` is set to 0 so
 the label wraps and the self-sizing capabilities of the cell are best utilized.
 */
@property(nonatomic, strong, readonly) UILabel *titleLabel;

/**
 The UILabel responsible for displaying the detail text. By default, `numberOfLines` is set to 0 so
 the label wraps and the self-sizing capabilities of the cell are best utilized.
 */
@property(nonatomic, strong, readonly) UILabel *detailLabel;

/**
 Indicates whether the view's contents should automatically update their font when the device’s
 UIContentSizeCategory changes.
 This property is modeled after the adjustsFontForContentSizeCategory property in the
 UIContentSizeCategoryAdjusting protocol added by Apple in iOS 10.0.
 Default value is NO.
 */
@property(nonatomic, readwrite, setter=mdc_setAdjustsFontForContentSizeCategory:)
    BOOL mdc_adjustsFontForContentSizeCategory;

@end

API_DEPRECATED_END
