From 10f3f7fe13cd2c01c646fcf8bf5896e84cc1e703 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Fri, 9 Jun 2017 10:11:15 -0400 Subject: [PATCH] =?UTF-8?q?Add=20=E2=80=9Clearn=20link=E2=80=9D.=20Move=20?= =?UTF-8?q?=E2=80=9Cscan=E2=80=9D=20button=20into=20QR=20code.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit // FREEBIE --- .../btnCamera--white-1.imageset/Contents.json | 12 --- .../btnCamera--white.pdf | Bin 6478 -> 0 bytes .../btnCamera--white.imageset/Contents.json | 12 --- .../btnCamera--white.pdf | Bin 6478 -> 0 bytes .../FingerprintViewController.m | 72 ++++++++++-------- .../translations/en.lproj/Localizable.strings | 9 ++- 6 files changed, 47 insertions(+), 58 deletions(-) delete mode 100644 Signal/Images.xcassets/btnCamera--white-1.imageset/Contents.json delete mode 100644 Signal/Images.xcassets/btnCamera--white-1.imageset/btnCamera--white.pdf delete mode 100644 Signal/Images.xcassets/btnCamera--white.imageset/Contents.json delete mode 100644 Signal/Images.xcassets/btnCamera--white.imageset/btnCamera--white.pdf diff --git a/Signal/Images.xcassets/btnCamera--white-1.imageset/Contents.json b/Signal/Images.xcassets/btnCamera--white-1.imageset/Contents.json deleted file mode 100644 index 7c2d38703..000000000 --- a/Signal/Images.xcassets/btnCamera--white-1.imageset/Contents.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "filename" : "btnCamera--white.pdf" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/Signal/Images.xcassets/btnCamera--white-1.imageset/btnCamera--white.pdf b/Signal/Images.xcassets/btnCamera--white-1.imageset/btnCamera--white.pdf deleted file mode 100644 index bed653056f05606a249b120bc965635683936a73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6478 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 diff --git a/Signal/Images.xcassets/btnCamera--white.imageset/Contents.json b/Signal/Images.xcassets/btnCamera--white.imageset/Contents.json deleted file mode 100644 index 7c2d38703..000000000 --- a/Signal/Images.xcassets/btnCamera--white.imageset/Contents.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "filename" : "btnCamera--white.pdf" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/Signal/Images.xcassets/btnCamera--white.imageset/btnCamera--white.pdf b/Signal/Images.xcassets/btnCamera--white.imageset/btnCamera--white.pdf deleted file mode 100644 index bed653056f05606a249b120bc965635683936a73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6478 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 diff --git a/Signal/src/ViewControllers/FingerprintViewController.m b/Signal/src/ViewControllers/FingerprintViewController.m index e9d559df1..953f4993f 100644 --- a/Signal/src/ViewControllers/FingerprintViewController.m +++ b/Signal/src/ViewControllers/FingerprintViewController.m @@ -137,33 +137,29 @@ typedef void (^CustomLayoutBlock)(); [mainView autoPinToTopLayoutGuideOfViewController:self withInset:0]; [mainView autoPinToBottomLayoutGuideOfViewController:self withInset:0]; - // Scan Button - UIView *scanButton = [UIView new]; - [scanButton - addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(scanButtonTapped:)]]; - [mainView addSubview:scanButton]; - [scanButton autoPinWidthToSuperview]; - [scanButton autoPinEdgeToSuperviewEdge:ALEdgeBottom withInset:ScaleFromIPhone5To7Plus(12.f, 25.f)]; - - UILabel *scanButtonLabel = [UILabel new]; - scanButtonLabel.text = NSLocalizedString(@"SCAN_CODE_ACTION", - @"Button label presented with camera icon while verifying privacy credentials. Shows the camera interface."); - scanButtonLabel.font = [UIFont ows_regularFontWithSize:18.f]; - scanButtonLabel.textColor = darkGrey; - [scanButton addSubview:scanButtonLabel]; - [scanButtonLabel autoHCenterInSuperview]; - [scanButtonLabel autoPinEdgeToSuperviewEdge:ALEdgeBottom]; - - UIImage *scanButtonImage = [UIImage imageNamed:@"btnCamera--white"]; - OWSAssert(scanButtonImage); - UIImageView *scanButtonImageView = [UIImageView new]; - scanButtonImageView.image = [scanButtonImage imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; - scanButtonImageView.tintColor = darkGrey; - - [scanButton addSubview:scanButtonImageView]; - [scanButtonImageView autoHCenterInSuperview]; - [scanButtonImageView autoPinEdgeToSuperviewEdge:ALEdgeTop]; - [scanButtonImageView autoPinEdge:ALEdgeBottom toEdge:ALEdgeTop ofView:scanButtonLabel withOffset:-5.f]; + // Learn More + UIView *learnMoreButton = [UIView new]; + [learnMoreButton + addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self + action:@selector(learnMoreButtonTapped:)]]; + [mainView addSubview:learnMoreButton]; + [learnMoreButton autoPinWidthToSuperview]; + [learnMoreButton autoPinEdgeToSuperviewEdge:ALEdgeBottom withInset:0]; + + UILabel *learnMoreLabel = [UILabel new]; + learnMoreLabel.attributedText = [[NSAttributedString alloc] + initWithString:NSLocalizedString(@"PRIVACY_SAFETY_NUMBERS_LEARN_MORE", + @"Label for a link to more information about safety numbers and verification.") + attributes:@{ + NSUnderlineStyleAttributeName : @(NSUnderlineStyleSingle | NSUnderlinePatternSolid), + }]; + learnMoreLabel.font = [UIFont ows_regularFontWithSize:ScaleFromIPhone5To7Plus(14.f, 16.f)]; + learnMoreLabel.textColor = [UIColor ows_materialBlueColor]; + learnMoreLabel.textAlignment = NSTextAlignmentCenter; + [learnMoreButton addSubview:learnMoreLabel]; + [learnMoreLabel autoPinWidthToSuperviewWithMargin:16.f]; + [learnMoreLabel autoPinEdgeToSuperviewEdge:ALEdgeTop withInset:ScaleFromIPhone5To7Plus(15.f, 20.f)]; + [learnMoreLabel autoPinEdgeToSuperviewEdge:ALEdgeBottom withInset:ScaleFromIPhone5To7Plus(20.f, 25.f)]; // Instructions NSString *instructionsFormat = NSLocalizedString(@"PRIVACY_VERIFICATION_INSTRUCTIONS", @@ -177,7 +173,7 @@ typedef void (^CustomLayoutBlock)(); instructionsLabel.lineBreakMode = NSLineBreakByWordWrapping; [mainView addSubview:instructionsLabel]; [instructionsLabel autoPinWidthToSuperviewWithMargin:16.f]; - [instructionsLabel autoPinEdge:ALEdgeBottom toEdge:ALEdgeTop ofView:scanButton withOffset:-ScaleFromIPhone5To7Plus(20.f, 30.f)]; + [instructionsLabel autoPinEdge:ALEdgeBottom toEdge:ALEdgeTop ofView:learnMoreButton withOffset:0]; // Fingerprint Label UILabel *fingerprintLabel = [UILabel new]; @@ -224,10 +220,21 @@ typedef void (^CustomLayoutBlock)(); fingerprintImageView.layer.minificationFilter = kCAFilterNearest; [fingerprintView addSubview:fingerprintImageView]; + UILabel *scanLabel = [UILabel new]; + scanLabel.text = NSLocalizedString(@"PRIVACY_TAP_TO_SCAN", @"Button that shows the 'scan with camera' view."); + scanLabel.font = [UIFont ows_regularFontWithSize:16.f]; + scanLabel.textColor = [UIColor whiteColor]; + [scanLabel sizeToFit]; + [fingerprintView addSubview:scanLabel]; + fingerprintView.layoutBlock = ^{ CGFloat size = round(MIN(fingerprintView.width, fingerprintView.height) * 0.65f); fingerprintImageView.frame = CGRectMake( round((fingerprintView.width - size) * 0.5f), round((fingerprintView.height - size) * 0.5f), size, size); + CGFloat scanY = round(fingerprintImageView.bottom + + ((fingerprintView.height - fingerprintImageView.bottom) - scanLabel.height) * 0.33f); + scanLabel.frame = CGRectMake( + round((fingerprintView.width - scanLabel.width) * 0.5f), scanY, scanLabel.width, scanLabel.height); }; } @@ -325,10 +332,13 @@ typedef void (^CustomLayoutBlock)(); [self.navigationController pushViewController:scanView animated:YES]; } -- (void)scanButtonTapped:(UIGestureRecognizer *)gestureRecognizer +- (void)learnMoreButtonTapped:(UIGestureRecognizer *)gestureRecognizer { if (gestureRecognizer.state == UIGestureRecognizerStateRecognized) { - [self showScanner]; + NSString *learnMoreURL = @"https://support.whispersystems.org/hc/en-us/articles/" + @"213134107-How-do-I-verify-the-person-I-m-sending-messages-to-is-who-they-say-they-" + @"are-"; + [[UIApplication sharedApplication] openURL:[NSURL URLWithString:learnMoreURL]]; } } @@ -342,7 +352,7 @@ typedef void (^CustomLayoutBlock)(); - (void)fingerprintViewTapped:(UIGestureRecognizer *)gestureRecognizer { if (gestureRecognizer.state == UIGestureRecognizerStateRecognized) { - [self showSharingActivityWithCompletion:nil]; + [self showScanner]; } } diff --git a/Signal/translations/en.lproj/Localizable.strings b/Signal/translations/en.lproj/Localizable.strings index 79442d5b4..6add18345 100644 --- a/Signal/translations/en.lproj/Localizable.strings +++ b/Signal/translations/en.lproj/Localizable.strings @@ -940,6 +940,12 @@ /* Label for 'Work FAX' phone numbers. */ "PHONE_NUMBER_TYPE_WORK_FAX" = "Work Fax"; +/* Label for a link to more information about safety numbers and verification. */ +"PRIVACY_SAFETY_NUMBERS_LEARN_MORE" = "Learn More"; + +/* Button that shows the 'scan with camera' view. */ +"PRIVACY_TAP_TO_SCAN" = "Tap to Scan"; + /* Alert body when verifying with {{contact name}} */ "PRIVACY_VERIFICATION_FAILED_I_HAVE_WRONG_KEY_FOR_THEM" = "This doesn't look like your safety number with %@. Are you verifying the correct contact?"; @@ -1087,9 +1093,6 @@ /* Action sheet heading */ "SAFETY_NUMBERS_ACTIONSHEET_TITLE" = "Your safety number with %@ has changed. You may wish to verify it."; -/* Button label presented with camera icon while verifying privacy credentials. Shows the camera interface. */ -"SCAN_CODE_ACTION" = "Scan Code"; - /* label presented once scanning (camera) view is visible. */ "SCAN_CODE_INSTRUCTIONS" = "Scan the QR Code on your contact's device.";