From 842c4ea303061dbe85418bb53757590fbf8a44cb Mon Sep 17 00:00:00 2001 From: Niels Andriesse Date: Tue, 10 Dec 2019 10:12:51 +1100 Subject: [PATCH] WIP --- .../src/Loki/Utilities/MentionUtilities.swift | 23 +++++----- .../ConversationInputToolbar.m | 46 +++++++++++-------- Signal/src/views/VoiceNoteLock.swift | 10 ++-- 3 files changed, 43 insertions(+), 36 deletions(-) diff --git a/Signal/src/Loki/Utilities/MentionUtilities.swift b/Signal/src/Loki/Utilities/MentionUtilities.swift index a2e72f31f..ff4b6e3ba 100644 --- a/Signal/src/Loki/Utilities/MentionUtilities.swift +++ b/Signal/src/Loki/Utilities/MentionUtilities.swift @@ -15,27 +15,28 @@ public final class MentionUtilities : NSObject { } var string = string let regex = try! NSRegularExpression(pattern: "@[0-9a-fA-F]*", options: []) - let knownUserHexEncodedPublicKeys = LokiAPI.userHexEncodedPublicKeyCache[threadID] ?? [] // Should always be populated at this point + let knownHexEncodedPublicKeys = LokiAPI.userHexEncodedPublicKeyCache[threadID] ?? [] // Should always be populated at this point var mentions: [NSRange] = [] var outerMatch = regex.firstMatch(in: string, options: .withoutAnchoringBounds, range: NSRange(location: 0, length: string.count)) while let match = outerMatch { let hexEncodedPublicKey = String((string as NSString).substring(with: match.range).dropFirst()) // Drop the @ let matchEnd: Int - if knownUserHexEncodedPublicKeys.contains(hexEncodedPublicKey) { - var userDisplayName: String? - if hexEncodedPublicKey == OWSIdentityManager.shared().identityKeyPair()!.hexEncodedPublicKey { - userDisplayName = OWSProfileManager.shared().localProfileName() + if knownHexEncodedPublicKeys.contains(hexEncodedPublicKey) { + var displayName: String? + let userHexEncodedPublicKey = OWSIdentityManager.shared().identityKeyPair()!.hexEncodedPublicKey + if hexEncodedPublicKey == userHexEncodedPublicKey { + displayName = OWSProfileManager.shared().localProfileName() } else { if let publicChat = publicChat { - userDisplayName = DisplayNameUtilities.getPublicChatDisplayName(for: hexEncodedPublicKey, in: publicChat.channel, on: publicChat.server) + displayName = DisplayNameUtilities.getPublicChatDisplayName(for: hexEncodedPublicKey, in: publicChat.channel, on: publicChat.server) } else { - userDisplayName = DisplayNameUtilities.getPrivateChatDisplayName(for: hexEncodedPublicKey) + displayName = DisplayNameUtilities.getPrivateChatDisplayName(for: hexEncodedPublicKey) } } - if let userDisplayName = userDisplayName { - string = (string as NSString).replacingCharacters(in: match.range, with: "@\(userDisplayName)") - mentions.append(NSRange(location: match.range.location, length: userDisplayName.count + 1)) // + 1 to include the @ - matchEnd = match.range.location + userDisplayName.count + if let displayName = displayName { + string = (string as NSString).replacingCharacters(in: match.range, with: "@\(displayName)") + mentions.append(NSRange(location: match.range.location, length: displayName.count + 1)) // + 1 to include the @ + matchEnd = match.range.location + displayName.count } else { matchEnd = match.range.location + match.range.length } diff --git a/Signal/src/ViewControllers/ConversationView/ConversationInputToolbar.m b/Signal/src/ViewControllers/ConversationView/ConversationInputToolbar.m index 4ff4109ea..929c4c374 100644 --- a/Signal/src/ViewControllers/ConversationView/ConversationInputToolbar.m +++ b/Signal/src/ViewControllers/ConversationView/ConversationInputToolbar.m @@ -587,18 +587,22 @@ const CGFloat kMaxTextViewHeight = 120; [self.voiceMemoLockView removeFromSuperview]; self.voiceMemoUI = [UIView new]; - self.voiceMemoUI.backgroundColor = Theme.toolbarBackgroundColor; + self.voiceMemoUI.backgroundColor = LKColors.composeViewBackground; [self addSubview:self.voiceMemoUI]; [self.voiceMemoUI autoPinEdgesToSuperviewEdges]; SET_SUBVIEW_ACCESSIBILITY_IDENTIFIER(self, _voiceMemoUI); self.voiceMemoContentView = [UIView new]; [self.voiceMemoUI addSubview:self.voiceMemoContentView]; - [self.voiceMemoContentView ows_autoPinToSuperviewEdges]; + + [self.voiceMemoContentView autoPinLeadingToEdgeOfView:self.voiceMemoUI]; + [self.voiceMemoContentView autoPinTopToSuperviewMargin]; + [self.voiceMemoContentView autoPinTrailingToEdgeOfView:self.voiceMemoUI]; + [self.voiceMemoContentView autoPinBottomToSuperviewMargin]; self.recordingLabel = [UILabel new]; - self.recordingLabel.textColor = [UIColor ows_destructiveRedColor]; - self.recordingLabel.font = [UIFont ows_mediumFontWithSize:14.f]; + self.recordingLabel.textColor = LKColors.destructive; + self.recordingLabel.font = [UIFont systemFontOfSize:LKValues.smallFontSize]; [self.voiceMemoContentView addSubview:self.recordingLabel]; SET_SUBVIEW_ACCESSIBILITY_IDENTIFIER(self, _recordingLabel); @@ -611,24 +615,24 @@ const CGFloat kMaxTextViewHeight = 120; [self updateVoiceMemo]; - UIImage *icon = [UIImage imageNamed:@"voice-memo-button"]; + UIImage *icon = [UIImage imageNamed:@"Microphone"]; OWSAssertDebug(icon); UIImageView *imageView = [[UIImageView alloc] initWithImage:[icon imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]]; - imageView.tintColor = [UIColor ows_destructiveRedColor]; + imageView.tintColor = LKColors.destructive; [imageView setContentHuggingHigh]; [self.voiceMemoContentView addSubview:imageView]; NSMutableAttributedString *cancelString = [NSMutableAttributedString new]; const CGFloat cancelArrowFontSize = ScaleFromIPhone5To7Plus(18.4, 20.f); - const CGFloat cancelFontSize = ScaleFromIPhone5To7Plus(14.f, 16.f); + const CGFloat cancelFontSize = ScaleFromIPhone5To7Plus(LKValues.smallFontSize, LKValues.mediumFontSize); NSString *arrowHead = (CurrentAppContext().isRTL ? @"\uf105" : @"\uf104"); [cancelString appendAttributedString:[[NSAttributedString alloc] initWithString:arrowHead attributes:@{ NSFontAttributeName : [UIFont ows_fontAwesomeFont:cancelArrowFontSize], - NSForegroundColorAttributeName : [UIColor ows_destructiveRedColor], + NSForegroundColorAttributeName : LKColors.destructive, NSBaselineOffsetAttributeName : @(-1.f), }]]; [cancelString @@ -636,7 +640,7 @@ const CGFloat kMaxTextViewHeight = 120; initWithString:@" " attributes:@{ NSFontAttributeName : [UIFont ows_fontAwesomeFont:cancelArrowFontSize], - NSForegroundColorAttributeName : [UIColor ows_destructiveRedColor], + NSForegroundColorAttributeName : LKColors.destructive, NSBaselineOffsetAttributeName : @(-1.f), }]]; [cancelString @@ -644,15 +648,15 @@ const CGFloat kMaxTextViewHeight = 120; initWithString:NSLocalizedString(@"VOICE_MESSAGE_CANCEL_INSTRUCTIONS", @"Indicates how to cancel a voice message.") attributes:@{ - NSFontAttributeName : [UIFont ows_mediumFontWithSize:cancelFontSize], - NSForegroundColorAttributeName : [UIColor ows_destructiveRedColor], + NSFontAttributeName : [UIFont systemFontOfSize:cancelFontSize], + NSForegroundColorAttributeName : LKColors.destructive, }]]; [cancelString appendAttributedString:[[NSAttributedString alloc] initWithString:@" " attributes:@{ NSFontAttributeName : [UIFont ows_fontAwesomeFont:cancelArrowFontSize], - NSForegroundColorAttributeName : [UIColor ows_destructiveRedColor], + NSForegroundColorAttributeName : LKColors.destructive, NSBaselineOffsetAttributeName : @(-1.f), }]]; [cancelString @@ -660,7 +664,7 @@ const CGFloat kMaxTextViewHeight = 120; initWithString:arrowHead attributes:@{ NSFontAttributeName : [UIFont ows_fontAwesomeFont:cancelArrowFontSize], - NSForegroundColorAttributeName : [UIColor ows_destructiveRedColor], + NSForegroundColorAttributeName : LKColors.destructive, NSBaselineOffsetAttributeName : @(-1.f), }]]; UILabel *cancelLabel = [UILabel new]; @@ -671,7 +675,7 @@ const CGFloat kMaxTextViewHeight = 120; const CGFloat kRedCircleSize = 100.f; UIView *redCircleView = [UIView new]; self.voiceMemoRedRecordingCircle = redCircleView; - redCircleView.backgroundColor = [UIColor ows_destructiveRedColor]; + redCircleView.backgroundColor = LKColors.destructive; redCircleView.layer.cornerRadius = kRedCircleSize * 0.5f; [redCircleView autoSetDimension:ALDimensionWidth toSize:kRedCircleSize]; [redCircleView autoSetDimension:ALDimensionHeight toSize:kRedCircleSize]; @@ -679,16 +683,16 @@ const CGFloat kMaxTextViewHeight = 120; [redCircleView autoAlignAxis:ALAxisHorizontal toSameAxisOfView:self.voiceMemoButton]; [redCircleView autoAlignAxis:ALAxisVertical toSameAxisOfView:self.voiceMemoButton]; - UIImage *whiteIcon = [UIImage imageNamed:@"voice-message-large-white"]; + UIImage *whiteIcon = [UIImage imageNamed:@"Microphone"]; OWSAssertDebug(whiteIcon); UIImageView *whiteIconView = [[UIImageView alloc] initWithImage:whiteIcon]; [redCircleView addSubview:whiteIconView]; [whiteIconView autoCenterInSuperview]; [imageView autoVCenterInSuperview]; - [imageView autoPinLeadingToSuperviewMarginWithInset:10.f]; + [imageView autoPinLeadingToSuperviewMarginWithInset:LKValues.smallSpacing]; [self.recordingLabel autoVCenterInSuperview]; - [self.recordingLabel autoPinLeadingToTrailingEdgeOfView:imageView offset:5.f]; + [self.recordingLabel autoPinLeadingToTrailingEdgeOfView:imageView offset:4.f]; [cancelLabel autoVCenterInSuperview]; [cancelLabel autoHCenterInSuperview]; [self.voiceMemoUI layoutIfNeeded]; @@ -794,10 +798,11 @@ const CGFloat kMaxTextViewHeight = 120; [weakSelf.inputToolbarDelegate voiceMemoGestureDidComplete]; }]; [sendVoiceMemoButton setTitle:MessageStrings.sendButton forState:UIControlStateNormal]; - [sendVoiceMemoButton setTitleColor:UIColor.ows_signalBlueColor forState:UIControlStateNormal]; + [sendVoiceMemoButton setTitleColor:LKColors.text forState:UIControlStateNormal]; + sendVoiceMemoButton.titleLabel.font = [UIFont boldSystemFontOfSize:LKValues.mediumFontSize]; sendVoiceMemoButton.alpha = 0; [self.voiceMemoContentView addSubview:sendVoiceMemoButton]; - [sendVoiceMemoButton autoPinEdgeToSuperviewMargin:ALEdgeTrailing withInset:10.f]; + [sendVoiceMemoButton autoPinEdgeToSuperviewMargin:ALEdgeTrailing withInset:LKValues.smallSpacing]; [sendVoiceMemoButton autoVCenterInSuperview]; [sendVoiceMemoButton setCompressionResistanceHigh]; [sendVoiceMemoButton setContentHuggingHigh]; @@ -807,7 +812,8 @@ const CGFloat kMaxTextViewHeight = 120; [weakSelf.inputToolbarDelegate voiceMemoGestureDidCancel]; }]; [cancelButton setTitle:CommonStrings.cancelButton forState:UIControlStateNormal]; - [cancelButton setTitleColor:UIColor.ows_destructiveRedColor forState:UIControlStateNormal]; + [cancelButton setTitleColor:LKColors.destructive forState:UIControlStateNormal]; + cancelButton.titleLabel.font = [UIFont boldSystemFontOfSize:LKValues.mediumFontSize]; cancelButton.alpha = 0; cancelButton.titleLabel.textAlignment = NSTextAlignmentCenter; SET_SUBVIEW_ACCESSIBILITY_IDENTIFIER(self, cancelButton); diff --git a/Signal/src/views/VoiceNoteLock.swift b/Signal/src/views/VoiceNoteLock.swift index 16a1210b8..a94030c04 100644 --- a/Signal/src/views/VoiceNoteLock.swift +++ b/Signal/src/views/VoiceNoteLock.swift @@ -51,7 +51,7 @@ public class VoiceMemoLockView: UIView { private lazy var lockIconView: UIImageView = { let imageTemplate = #imageLiteral(resourceName: "ic_lock_outline").withRenderingMode(.alwaysTemplate) let imageView = UIImageView(image: imageTemplate) - imageView.tintColor = .ows_destructiveRed + imageView.tintColor = Colors.destructive imageView.autoSetDimensions(to: CGSize(width: 24, height: 24)) return imageView }() @@ -59,7 +59,7 @@ public class VoiceMemoLockView: UIView { private lazy var chevronView: UIView = { let label = UILabel() label.text = "\u{2303}" - label.textColor = .ows_destructiveRed + label.textColor = Colors.destructive label.textAlignment = .center return label }() @@ -69,10 +69,10 @@ public class VoiceMemoLockView: UIView { let width: CGFloat = 36 view.autoSetDimension(.width, toSize: width) - view.backgroundColor = Theme.scrollButtonBackgroundColor + view.backgroundColor = Colors.composeViewBackground view.layer.cornerRadius = width / 2 - view.layer.borderColor = Theme.offBackgroundColor.cgColor - view.layer.borderWidth = CGHairlineWidth() + view.layer.borderColor = Colors.text.withAlphaComponent(Values.composeViewTextFieldBorderOpacity).cgColor + view.layer.borderWidth = Values.composeViewTextFieldBorderThickness return view }()