Rework attachment approval UI.

// FREEBIE
pull/1/head
Matthew Chen 8 years ago
parent cbb0030b12
commit 2fa3cf1bc6

@ -43,8 +43,8 @@ static void *kConversationInputTextViewObservingContext = &kConversationInputTex
#pragma mark - Attachment Approval #pragma mark - Attachment Approval
@property (nonatomic, nullable) MediaMessageView *attachmentView; @property (nonatomic, nullable) MediaMessageView *attachmentView;
@property (nonatomic, nullable) UIView *cancelAttachmentWrapper;
@property (nonatomic, nullable) SignalAttachment *attachmentToApprove; @property (nonatomic, nullable) SignalAttachment *attachmentToApprove;
@property (nonatomic) BOOL isLargeAttachment;
@end @end
@ -228,8 +228,8 @@ static void *kConversationInputTextViewObservingContext = &kConversationInputTex
if (self.attachmentToApprove) { if (self.attachmentToApprove) {
OWSAssert(self.attachmentView); OWSAssert(self.attachmentView);
self.leftButtonWrapper.hidden = YES;
self.inputTextView.hidden = YES; self.inputTextView.hidden = YES;
self.attachmentButton.hidden = YES;
self.voiceMemoButton.hidden = YES; self.voiceMemoButton.hidden = YES;
UIButton *rightButton = self.sendButton; UIButton *rightButton = self.sendButton;
rightButton.enabled = YES; rightButton.enabled = YES;
@ -245,7 +245,7 @@ static void *kConversationInputTextViewObservingContext = &kConversationInputTex
[self.attachmentView autoPinEdgeToSuperviewEdge:ALEdgeTop withInset:textViewVInset], [self.attachmentView autoPinEdgeToSuperviewEdge:ALEdgeTop withInset:textViewVInset],
[self.attachmentView autoPinEdgeToSuperviewEdge:ALEdgeBottom withInset:textViewVInset], [self.attachmentView autoPinEdgeToSuperviewEdge:ALEdgeBottom withInset:textViewVInset],
[self.attachmentView autoPinEdgeToSuperviewEdge:ALEdgeLeft withInset:contentHInset], [self.attachmentView autoPinEdgeToSuperviewEdge:ALEdgeLeft withInset:contentHInset],
[self.attachmentView autoSetDimension:ALDimensionHeight toSize:(self.isLargeAttachment ? 300.f : 150.f)], [self.attachmentView autoSetDimension:ALDimensionHeight toSize:300.f],
[self.rightButtonWrapper autoPinEdge:ALEdgeLeft toEdge:ALEdgeRight ofView:self.attachmentView], [self.rightButtonWrapper autoPinEdge:ALEdgeLeft toEdge:ALEdgeRight ofView:self.attachmentView],
[self.rightButtonWrapper autoPinEdgeToSuperviewEdge:ALEdgeRight], [self.rightButtonWrapper autoPinEdgeToSuperviewEdge:ALEdgeRight],
@ -270,11 +270,13 @@ static void *kConversationInputTextViewObservingContext = &kConversationInputTex
return; return;
} }
self.leftButtonWrapper.hidden = NO;
self.inputTextView.hidden = NO; self.inputTextView.hidden = NO;
self.attachmentButton.hidden = NO;
self.voiceMemoButton.hidden = NO; self.voiceMemoButton.hidden = NO;
[self.attachmentView removeFromSuperview]; [self.attachmentView removeFromSuperview];
self.attachmentView = nil; self.attachmentView = nil;
[self.cancelAttachmentWrapper removeFromSuperview];
self.cancelAttachmentWrapper = nil;
UIButton *leftButton = self.attachmentButton; UIButton *leftButton = self.attachmentButton;
UIButton *rightButton = (self.shouldShowVoiceMemoButton ? self.voiceMemoButton : self.sendButton); UIButton *rightButton = (self.shouldShowVoiceMemoButton ? self.voiceMemoButton : self.sendButton);
@ -720,16 +722,16 @@ static void *kConversationInputTextViewObservingContext = &kConversationInputTex
OWSAssert(attachment); OWSAssert(attachment);
self.attachmentToApprove = attachment; self.attachmentToApprove = attachment;
self.isLargeAttachment = (attachment.isImage || attachment.isAnimatedImage);
MediaMessageView *attachmentView = [[MediaMessageView alloc] initWithAttachment:attachment]; MediaMessageView *attachmentView = [[MediaMessageView alloc] initWithAttachment:attachment];
self.attachmentView = attachmentView; self.attachmentView = attachmentView;
[self.contentView addSubview:attachmentView]; [self.contentView addSubview:attachmentView];
UIView *cancelButtonWrapper = [UIView containerView]; UIView *cancelAttachmentWrapper = [UIView containerView];
[cancelButtonWrapper self.cancelAttachmentWrapper = cancelAttachmentWrapper;
[cancelAttachmentWrapper
addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(cancelButtonWrapperTapped:)]]; action:@selector(cancelAttachmentWrapperTapped:)]];
UIView *_Nullable attachmentContentView = [self.attachmentView contentView]; UIView *_Nullable attachmentContentView = [self.attachmentView contentView];
// Place the cancel button inside the attachment view's content area, // Place the cancel button inside the attachment view's content area,
// if possible. If not, just place it inside the attachment view. // if possible. If not, just place it inside the attachment view.
@ -742,9 +744,9 @@ static void *kConversationInputTextViewObservingContext = &kConversationInputTex
} else { } else {
cancelButtonReferenceView = self.attachmentView; cancelButtonReferenceView = self.attachmentView;
} }
[self.contentView addSubview:cancelButtonWrapper]; [self.contentView addSubview:cancelAttachmentWrapper];
[cancelButtonWrapper autoPinEdge:ALEdgeTop toEdge:ALEdgeTop ofView:cancelButtonReferenceView]; [cancelAttachmentWrapper autoPinEdge:ALEdgeTop toEdge:ALEdgeTop ofView:cancelButtonReferenceView];
[cancelButtonWrapper autoPinEdge:ALEdgeRight toEdge:ALEdgeRight ofView:cancelButtonReferenceView]; [cancelAttachmentWrapper autoPinEdge:ALEdgeRight toEdge:ALEdgeRight ofView:cancelButtonReferenceView];
UIImage *cancelIcon = [UIImage imageNamed:@"cancel-cross-white"]; UIImage *cancelIcon = [UIImage imageNamed:@"cancel-cross-white"];
OWSAssert(cancelIcon); OWSAssert(cancelIcon);
@ -762,7 +764,7 @@ static void *kConversationInputTextViewObservingContext = &kConversationInputTex
[cancelButton addTarget:self [cancelButton addTarget:self
action:@selector(attachmentApprovalCancelPressed) action:@selector(attachmentApprovalCancelPressed)
forControlEvents:UIControlEventTouchUpInside]; forControlEvents:UIControlEventTouchUpInside];
[cancelButtonWrapper addSubview:cancelButton]; [cancelAttachmentWrapper addSubview:cancelButton];
[cancelButton autoPinWidthToSuperviewWithMargin:cancelButtonInset]; [cancelButton autoPinWidthToSuperviewWithMargin:cancelButtonInset];
[cancelButton autoPinHeightToSuperviewWithMargin:cancelButtonInset]; [cancelButton autoPinHeightToSuperviewWithMargin:cancelButtonInset];
CGFloat cancelButtonSize = cancelIconSize + 2 * cancelIconInset; CGFloat cancelButtonSize = cancelIconSize + 2 * cancelIconInset;
@ -772,7 +774,7 @@ static void *kConversationInputTextViewObservingContext = &kConversationInputTex
[self ensureContentConstraints]; [self ensureContentConstraints];
} }
- (void)cancelButtonWrapperTapped:(UIGestureRecognizer *)sender - (void)cancelAttachmentWrapperTapped:(UIGestureRecognizer *)sender
{ {
if (sender.state == UIGestureRecognizerStateRecognized) { if (sender.state == UIGestureRecognizerStateRecognized) {
[self attachmentApprovalCancelPressed]; [self attachmentApprovalCancelPressed];

@ -256,7 +256,6 @@ typedef NS_ENUM(NSInteger, CellState) { kArchiveState, kInboxState };
// after mappings have been set up in `showInboxGrouping` // after mappings have been set up in `showInboxGrouping`
[self tableViewSetUp]; [self tableViewSetUp];
self.segmentedControl = [[UISegmentedControl alloc] initWithItems:@[ self.segmentedControl = [[UISegmentedControl alloc] initWithItems:@[
NSLocalizedString(@"WHISPER_NAV_BAR_TITLE", nil), NSLocalizedString(@"WHISPER_NAV_BAR_TITLE", nil),
NSLocalizedString(@"ARCHIVE_NAV_BAR_TITLE", nil) NSLocalizedString(@"ARCHIVE_NAV_BAR_TITLE", nil)
@ -277,11 +276,6 @@ typedef NS_ENUM(NSInteger, CellState) { kArchiveState, kInboxState };
} }
[self updateBarButtonItems]; [self updateBarButtonItems];
dispatch_async(dispatch_get_main_queue(), ^{
TSThread *thread = [self threadForIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];
[self presentThread:thread keyboardOnViewAppearing:NO callOnViewAppearing:NO];
});
} }
- (void)updateBarButtonItems - (void)updateBarButtonItems

Loading…
Cancel
Save