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

Unified Diff: ios/chrome/browser/ui/history/clear_browsing_bar.mm

Issue 2590473002: Upstream Chrome on iOS source code [5/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
« no previous file with comments | « ios/chrome/browser/ui/history/clear_browsing_bar.h ('k') | ios/chrome/browser/ui/history/favicon_view.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ios/chrome/browser/ui/history/clear_browsing_bar.mm
diff --git a/ios/chrome/browser/ui/history/clear_browsing_bar.mm b/ios/chrome/browser/ui/history/clear_browsing_bar.mm
new file mode 100644
index 0000000000000000000000000000000000000000..88d72268012973db77783d63a0553568a64c82a0
--- /dev/null
+++ b/ios/chrome/browser/ui/history/clear_browsing_bar.mm
@@ -0,0 +1,182 @@
+// Copyright 2016 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.
+
+#import "ios/chrome/browser/ui/history/clear_browsing_bar.h"
+
+#include "base/logging.h"
+#include "base/mac/objc_property_releaser.h"
+#include "components/strings/grit/components_strings.h"
+#include "ios/chrome/browser/ui/rtl_geometry.h"
+#import "ios/chrome/browser/ui/uikit_ui_util.h"
+#import "ios/third_party/material_components_ios/src/components/Palettes/src/MaterialPalettes.h"
+#import "ios/third_party/material_components_ios/src/components/Typography/src/MaterialTypography.h"
+#include "ui/base/l10n/l10n_util_mac.h"
+
+namespace {
+// Shadow opacity for the clear browsing bar.
+CGFloat kShadowOpacity = 0.2f;
+// Horizontal margin for the contents of ClearBrowsingBar.
+CGFloat kHorizontalMargin = 8.0f;
+// Enum to specify button position in the clear browsing bar.
+typedef NS_ENUM(BOOL, ButtonPlacement) { Leading, Trailing };
+} // namespace
+
+@interface ClearBrowsingBar () {
+ base::mac::ObjCPropertyReleaser propertyReleaser_ClearBrowsingBar_;
+}
+
+// Button that displays "Clear Browsing Data...".
+@property(nonatomic, strong) UIButton* clearBrowsingDataButton;
+// Button that displays "Edit".
+@property(nonatomic, strong) UIButton* editButton;
+// Button that displays "Delete".
+@property(nonatomic, strong) UIButton* deleteButton;
+// Button that displays "Cancel".
+@property(nonatomic, strong) UIButton* cancelButton;
+// Stack view for arranging the buttons.
+@property(nonatomic, strong) UIStackView* stackView;
+
+// Styles button for Leading or Trailing placement. Leading buttons have red
+// text that is aligned to the leading edge. Trailing buttons have blue text
+// that is aligned to the trailing edge.
+- (void)styleButton:(UIButton*)button forPlacement:(ButtonPlacement)placement;
+
+@end
+
+@implementation ClearBrowsingBar
+
+@synthesize editing = _editing;
+@synthesize clearBrowsingDataButton = _clearBrowsingDataButton;
+@synthesize editButton = _editButton;
+@synthesize deleteButton = _deleteButton;
+@synthesize cancelButton = _cancelButton;
+@synthesize stackView = _stackView;
+
+- (instancetype)initWithFrame:(CGRect)frame {
+ self = [super initWithFrame:frame];
+ if (self) {
+ _clearBrowsingDataButton =
+ [[UIButton buttonWithType:UIButtonTypeCustom] retain];
+ [_clearBrowsingDataButton
+ setTitle:l10n_util::GetNSStringWithFixup(
+ IDS_HISTORY_OPEN_CLEAR_BROWSING_DATA_DIALOG)
+ forState:UIControlStateNormal];
+ [self styleButton:_clearBrowsingDataButton forPlacement:Leading];
+
+ _editButton = [[UIButton buttonWithType:UIButtonTypeCustom] retain];
+ [_editButton
+ setTitle:l10n_util::GetNSString(IDS_HISTORY_START_EDITING_BUTTON)
+ forState:UIControlStateNormal];
+ [self styleButton:_editButton forPlacement:Trailing];
+
+ _deleteButton = [[UIButton buttonWithType:UIButtonTypeCustom] retain];
+ [_deleteButton setTitle:l10n_util::GetNSString(
+ IDS_HISTORY_DELETE_SELECTED_ENTRIES_BUTTON)
+ forState:UIControlStateNormal];
+ [self styleButton:_deleteButton forPlacement:Leading];
+
+ _cancelButton = [[UIButton buttonWithType:UIButtonTypeCustom] retain];
+ [_cancelButton
+ setTitle:l10n_util::GetNSString(IDS_HISTORY_CANCEL_EDITING_BUTTON)
+ forState:UIControlStateNormal];
+ [self styleButton:_cancelButton forPlacement:Trailing];
+
+ _stackView = [[UIStackView alloc] initWithArrangedSubviews:@[
+ _clearBrowsingDataButton, _editButton, _deleteButton, _cancelButton
+ ]];
+ _stackView.alignment = UIStackViewAlignmentFill;
+ _stackView.distribution = UIStackViewDistributionEqualSpacing;
+ _stackView.axis = UILayoutConstraintAxisHorizontal;
+
+ [self addSubview:_stackView];
+ _stackView.translatesAutoresizingMaskIntoConstraints = NO;
+ _stackView.layoutMarginsRelativeArrangement = YES;
+ [NSLayoutConstraint activateConstraints:@[
+ [_stackView.layoutMarginsGuide.leadingAnchor
+ constraintEqualToAnchor:self.leadingAnchor
+ constant:kHorizontalMargin],
+ [_stackView.layoutMarginsGuide.trailingAnchor
+ constraintEqualToAnchor:self.trailingAnchor
+ constant:-kHorizontalMargin],
+ [_stackView.topAnchor constraintEqualToAnchor:self.topAnchor],
+ [_stackView.bottomAnchor constraintEqualToAnchor:self.bottomAnchor],
+ ]];
+
+ [self setBackgroundColor:[UIColor whiteColor]];
+ [[self layer] setShadowOpacity:kShadowOpacity];
+ [self setEditing:NO];
+ propertyReleaser_ClearBrowsingBar_.Init(self, [ClearBrowsingBar class]);
+ }
+ return self;
+}
+
+#pragma mark Public Methods
+
+- (void)setEditing:(BOOL)editing {
+ _editing = editing;
+ self.clearBrowsingDataButton.hidden = editing;
+ self.editButton.hidden = editing;
+ self.deleteButton.hidden = !editing;
+ self.cancelButton.hidden = !editing;
+}
+
+- (BOOL)isEditButtonEnabled {
+ return self.editButton.enabled;
+}
+
+- (void)setEditButtonEnabled:(BOOL)editButtonEnabled {
+ self.editButton.enabled = editButtonEnabled;
+}
+
+- (BOOL)isDeleteButtonEnabled {
+ return self.deleteButton.enabled;
+}
+
+- (void)setDeleteButtonEnabled:(BOOL)deleteButtonEnabled {
+ self.deleteButton.enabled = deleteButtonEnabled;
+}
+
+- (void)setClearBrowsingDataTarget:(id)target action:(SEL)action {
+ [self.clearBrowsingDataButton addTarget:target
+ action:action
+ forControlEvents:UIControlEventTouchUpInside];
+}
+
+- (void)setEditTarget:(id)target action:(SEL)action {
+ [self.editButton addTarget:target
+ action:action
+ forControlEvents:UIControlEventTouchUpInside];
+}
+
+- (void)setDeleteTarget:(id)target action:(SEL)action {
+ [self.deleteButton addTarget:target
+ action:action
+ forControlEvents:UIControlEventTouchUpInside];
+}
+
+- (void)setCancelTarget:(id)target action:(SEL)action {
+ [self.cancelButton addTarget:target
+ action:action
+ forControlEvents:UIControlEventTouchUpInside];
+}
+
+#pragma mark Private Methods
+
+- (void)styleButton:(UIButton*)button forPlacement:(ButtonPlacement)placement {
+ BOOL leading = placement == Leading;
+ [button setBackgroundColor:[UIColor whiteColor]];
+ UIColor* textColor = leading ? [[MDCPalette redPalette] tint500]
+ : [[MDCPalette bluePalette] tint500];
+ [button setTitleColor:textColor forState:UIControlStateNormal];
+ [button setTitleColor:[[MDCPalette greyPalette] tint500]
+ forState:UIControlStateDisabled];
+ [[button titleLabel]
+ setFont:[[MDCTypography fontLoader] regularFontOfSize:14]];
+ button.contentHorizontalAlignment =
+ leading ^ UseRTLLayout() ? UIControlContentHorizontalAlignmentLeft
+ : UIControlContentHorizontalAlignmentRight;
+ [button setTranslatesAutoresizingMaskIntoConstraints:NO];
+}
+
+@end
« no previous file with comments | « ios/chrome/browser/ui/history/clear_browsing_bar.h ('k') | ios/chrome/browser/ui/history/favicon_view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698