| // Copyright 2021 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #import "ios/chrome/common/ui/util/button_util.h" |
| |
| #import "ios/chrome/common/ui/colors/semantic_color_names.h" |
| #import "ios/chrome/common/ui/util/pointer_interaction_util.h" |
| |
| const CGFloat kButtonVerticalInsets = 14.5; |
| const CGFloat kPrimaryButtonCornerRadius = 15; |
| // Alpha value for the disabled action button. |
| const CGFloat kDisabledButtonAlpha = 0.5; |
| |
| UIButton* PrimaryActionButton(BOOL pointer_interaction_enabled) { |
| UIButton* primary_blue_button = [UIButton buttonWithType:UIButtonTypeSystem]; |
| primary_blue_button.translatesAutoresizingMaskIntoConstraints = NO; |
| |
| if (@available(iOS 15.0, *)) { |
| UIButtonConfiguration* buttonConfiguration = |
| [UIButtonConfiguration plainButtonConfiguration]; |
| buttonConfiguration.contentInsets = NSDirectionalEdgeInsetsMake( |
| kButtonVerticalInsets, 0, kButtonVerticalInsets, 0); |
| buttonConfiguration.background.backgroundColor = |
| [UIColor colorNamed:kBlueColor]; |
| buttonConfiguration.baseForegroundColor = |
| [UIColor colorNamed:kSolidButtonTextColor]; |
| buttonConfiguration.background.cornerRadius = kPrimaryButtonCornerRadius; |
| |
| UIFont* font = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline]; |
| NSDictionary* attributes = @{NSFontAttributeName : font}; |
| NSMutableAttributedString* string = |
| [[NSMutableAttributedString alloc] initWithString:@" "]; |
| [string addAttributes:attributes range:NSMakeRange(0, string.length)]; |
| buttonConfiguration.attributedTitle = string; |
| |
| primary_blue_button.configuration = buttonConfiguration; |
| } |
| |
| if (pointer_interaction_enabled) { |
| primary_blue_button.pointerInteractionEnabled = YES; |
| primary_blue_button.pointerStyleProvider = |
| CreateOpaqueButtonPointerStyleProvider(); |
| } |
| |
| return primary_blue_button; |
| } |
| |
| void SetConfigurationTitle(UIButton* button, NSString* newString) { |
| if (@available(iOS 15.0, *)) { |
| UIButtonConfiguration* buttonConfiguration = button.configuration; |
| NSMutableAttributedString* attributedString = |
| [[NSMutableAttributedString alloc] |
| initWithAttributedString:buttonConfiguration.attributedTitle]; |
| [attributedString.mutableString setString:newString ? newString : @""]; |
| buttonConfiguration.attributedTitle = attributedString; |
| button.configuration = buttonConfiguration; |
| } |
| } |
| |
| void SetConfigurationFont(UIButton* button, UIFont* font) { |
| if (@available(iOS 15.0, *)) { |
| UIButtonConfiguration* buttonConfiguration = button.configuration; |
| NSString* configurationString = buttonConfiguration.attributedTitle.string; |
| |
| if (configurationString) { |
| NSDictionary* attributes = @{NSFontAttributeName : font}; |
| NSMutableAttributedString* string = [[NSMutableAttributedString alloc] |
| initWithString:configurationString]; |
| [string addAttributes:attributes range:NSMakeRange(0, string.length)]; |
| buttonConfiguration.attributedTitle = string; |
| button.configuration = buttonConfiguration; |
| } |
| } |
| } |
| |
| void UpdateButtonColorOnEnableDisable(UIButton* button) { |
| if (@available(iOS 15.0, *)) { |
| UIButtonConfiguration* buttonConfiguration = button.configuration; |
| if (button.enabled) { |
| buttonConfiguration.background.backgroundColor = |
| [UIColor colorNamed:kBlueColor]; |
| buttonConfiguration.baseForegroundColor = |
| [UIColor colorNamed:kSolidButtonTextColor]; |
| } else { |
| buttonConfiguration.background.backgroundColor = |
| [buttonConfiguration.background.backgroundColor |
| colorWithAlphaComponent:kDisabledButtonAlpha]; |
| buttonConfiguration.baseForegroundColor = |
| [buttonConfiguration.baseForegroundColor |
| colorWithAlphaComponent:kDisabledButtonAlpha]; |
| } |
| button.configuration = buttonConfiguration; |
| } |
| } |