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

Unified Diff: ios/chrome/browser/ui/bookmarks/bookmark_home_waiting_view.mm

Issue 2586993002: Upstream Chrome on iOS source code [3/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/bookmarks/bookmark_home_waiting_view.mm
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_home_waiting_view.mm b/ios/chrome/browser/ui/bookmarks/bookmark_home_waiting_view.mm
new file mode 100644
index 0000000000000000000000000000000000000000..cdf3f042b9d9be3f696275ecf670a187bc1c4718
--- /dev/null
+++ b/ios/chrome/browser/ui/bookmarks/bookmark_home_waiting_view.mm
@@ -0,0 +1,79 @@
+// Copyright 2014 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/bookmarks/bookmark_home_waiting_view.h"
+
+#include "base/mac/objc_property_releaser.h"
+#include "base/mac/scoped_nsobject.h"
+#import "ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.h"
+#import "ios/chrome/browser/ui/material_components/activity_indicator.h"
+#import "ios/chrome/browser/ui/rtl_geometry.h"
+#import "ios/third_party/material_components_ios/src/components/ActivityIndicator/src/MaterialActivityIndicator.h"
+
+@interface BookmarkHomeWaitingView ()<MDCActivityIndicatorDelegate> {
+ base::mac::ObjCPropertyReleaser _propertyReleaser_BookmarkHomeWaitingView;
+}
+@property(nonatomic, retain) MDCActivityIndicator* activityIndicator;
+@property(nonatomic, copy) ProceduralBlock animateOutCompletionBlock;
+@end
+
+@implementation BookmarkHomeWaitingView
+
+@synthesize activityIndicator = _activityIndicator;
+@synthesize animateOutCompletionBlock = _animateOutCompletionBlock;
+
+- (instancetype)initWithFrame:(CGRect)frame {
+ self = [super initWithFrame:frame];
+ if (self) {
+ _propertyReleaser_BookmarkHomeWaitingView.Init(
+ self, [BookmarkHomeWaitingView class]);
+ self.backgroundColor = bookmark_utils_ios::mainBackgroundColor();
+ self.autoresizingMask =
+ UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
+ }
+ return self;
+}
+
+- (void)startWaiting {
+ dispatch_time_t delayForIndicatorAppearance =
+ dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC));
+ dispatch_after(delayForIndicatorAppearance, dispatch_get_main_queue(), ^{
+ base::scoped_nsobject<MDCActivityIndicator> activityIndicator(
+ [[MDCActivityIndicator alloc] initWithFrame:CGRectMake(0, 0, 24, 24)]);
+ self.activityIndicator = activityIndicator;
+ self.activityIndicator.delegate = self;
+ self.activityIndicator.autoresizingMask =
+ UIViewAutoresizingFlexibleLeadingMargin() |
+ UIViewAutoresizingFlexibleTopMargin |
+ UIViewAutoresizingFlexibleTrailingMargin() |
+ UIViewAutoresizingFlexibleBottomMargin;
+ self.activityIndicator.center = CGPointMake(
+ CGRectGetWidth(self.bounds) / 2, CGRectGetHeight(self.bounds) / 2);
+ self.activityIndicator.cycleColors = ActivityIndicatorBrandedCycleColors();
+ [self addSubview:self.activityIndicator];
+ [self.activityIndicator startAnimating];
+ });
+}
+
+- (void)stopWaitingWithCompletion:(ProceduralBlock)completion {
+ if (self.activityIndicator) {
+ self.animateOutCompletionBlock = completion;
+ [self.activityIndicator stopAnimating];
+ } else if (completion) {
+ completion();
+ }
+}
+
+#pragma mark - MDCActivityIndicatorDelegate
+
+- (void)activityIndicatorAnimationDidFinish:
+ (MDCActivityIndicator*)activityIndicator {
+ [self.activityIndicator removeFromSuperview];
+ self.activityIndicator = nil;
+ if (self.animateOutCompletionBlock)
+ self.animateOutCompletionBlock();
+ self.animateOutCompletionBlock = nil;
+}
+
+@end

Powered by Google App Engine
This is Rietveld 408576698