Respond to CR.

// FREEBIE
This commit is contained in:
Matthew Chen 2017-04-26 14:35:49 -04:00
parent 5c0c9b533e
commit 93eed73530
4 changed files with 109 additions and 9 deletions

View File

@ -90,6 +90,8 @@ NS_ASSUME_NONNULL_BEGIN
- (void)createViews
{
OWSAssert(self.delegate);
UIView *header = [self.delegate createHeader:self.view];
// Table

View File

@ -6,6 +6,8 @@
#import "Environment.h"
#import "Signal-Swift.h"
#import "ThreadUtil.h"
#import "UIColor+OWS.h"
#import "UIFont+OWS.h"
#import <SignalServiceKit/OWSMessageSender.h>
#import <SignalServiceKit/TSThread.h>
@ -21,12 +23,18 @@ NS_ASSUME_NONNULL_BEGIN
@implementation SendExternalFileViewController
- (instancetype)init
{
if (self = [super init]) {
self.delegate = self;
}
return self;
}
- (void)loadView
{
[super loadView];
self.delegate = self;
_messageSender = [Environment getCurrent].messageSender;
self.title = NSLocalizedString(@"SEND_EXTERNAL_FILE_VIEW_TITLE", @"Title for the 'send external file' view.");
@ -51,7 +59,86 @@ NS_ASSUME_NONNULL_BEGIN
- (nullable UIView *)createHeader:(UIView *)superview
{
return nil;
OWSAssert(superview)
const CGFloat imageSize
= ScaleFromIPhone5To7Plus(40, 40);
const CGFloat imageLabelSpacing = ScaleFromIPhone5To7Plus(5, 5);
const CGFloat titleVSpacing = ScaleFromIPhone5To7Plus(10, 10);
const CGFloat contentVMargin = ScaleFromIPhone5To7Plus(20, 20);
UIView *header = [UIView new];
[superview addSubview:header];
[header autoPinWidthToSuperview];
[header autoPinToTopLayoutGuideOfViewController:self withInset:0];
UIView *titleLabel = [self createTitleLabel];
[header addSubview:titleLabel];
[titleLabel autoHCenterInSuperview];
[titleLabel autoPinEdgeToSuperviewEdge:ALEdgeTop withInset:contentVMargin];
UIView *fileView = [UIView new];
[header addSubview:fileView];
[fileView autoHCenterInSuperview];
[fileView autoPinEdgeToSuperviewEdge:ALEdgeBottom withInset:contentVMargin];
[fileView autoPinEdge:ALEdgeTop toEdge:ALEdgeBottom ofView:titleLabel withOffset:titleVSpacing];
UIImage *image = [UIImage imageNamed:@"file-thin-black-large"];
OWSAssert(image);
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
imageView.layer.minificationFilter = kCAFilterTrilinear;
imageView.layer.magnificationFilter = kCAFilterTrilinear;
[fileView addSubview:imageView];
[imageView autoSetDimension:ALDimensionWidth toSize:imageSize];
[imageView autoSetDimension:ALDimensionHeight toSize:imageSize];
[imageView autoPinEdgeToSuperviewEdge:ALEdgeLeft];
[imageView autoPinEdgeToSuperviewEdge:ALEdgeTop];
[imageView autoPinEdgeToSuperviewEdge:ALEdgeBottom];
UIView *fileNameLabel = [self createFileNameLabel];
[fileView addSubview:fileNameLabel];
[fileNameLabel autoAlignAxis:ALAxisHorizontal toSameAxisOfView:imageView];
[fileNameLabel autoPinEdge:ALEdgeLeft toEdge:ALEdgeRight ofView:imageView withOffset:imageLabelSpacing];
[fileNameLabel autoPinEdgeToSuperviewEdge:ALEdgeRight];
return header;
}
- (NSString *)formattedFileName
{
OWSAssert(self.attachment) NSString *filename =
[self.attachment.filename stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
OWSAssert(filename.length > 0);
const NSUInteger kMaxFilenameLength = 50;
if (filename.length > kMaxFilenameLength) {
// Truncate the filename if necessary.
//
// TODO: Use l10n-safe truncation.
filename = [[[filename substringToIndex:kMaxFilenameLength / 2] stringByAppendingString:@"…"]
stringByAppendingString:[filename substringFromIndex:filename.length - kMaxFilenameLength / 2]];
}
return filename;
}
- (UIView *)createFileNameLabel
{
UILabel *label = [UILabel new];
label.text = [self formattedFileName];
label.textColor = [UIColor ows_materialBlueColor];
label.font = [UIFont ows_regularFontWithSize:16.f];
label.lineBreakMode = NSLineBreakByTruncatingMiddle;
return label;
}
- (UIView *)createTitleLabel
{
UILabel *label = [UILabel new];
label.text
= NSLocalizedString(@"SEND_EXTERNAL_FILE_HEADER_TITLE", @"Header title for the 'send external file' view.");
label.textColor = [UIColor blackColor];
label.font = [UIFont ows_mediumFontWithSize:18.f];
return label;
}
@end

View File

@ -10,6 +10,7 @@
#import "OWSContactsManager.h"
#import "PropertyListPreferences.h"
#import "PushManager.h"
#import "SendExternalFileViewController.h"
#import "Signal-Swift.h"
#import "TSAccountManager.h"
#import "TSDatabaseView.h"
@ -163,6 +164,19 @@ NSString *const SignalsViewControllerSegueShowIncomingCall = @"ShowIncomingCallS
object:nil];
[self updateBarButtonItems];
dispatch_async(dispatch_get_main_queue(), ^{
SignalAttachment *attachment =
[SignalAttachment attachmentWithData:[@"hi" dataUsingEncoding:NSUTF8StringEncoding]
dataUTI:(NSString *)kUTTypeText
filename:@"boink.txt"];
SendExternalFileViewController *viewController = [SendExternalFileViewController new];
viewController.attachment = attachment;
UINavigationController *navigationController =
[[UINavigationController alloc] initWithRootViewController:viewController];
[self presentTopLevelModalViewController:navigationController animateDismissal:NO animatePresentation:YES];
});
}
- (void)updateBarButtonItems {

View File

@ -910,18 +910,15 @@
/* No comment provided by engineer. */
"SECURE_SESSION_RESET" = "Secure session was reset.";
/* A label for the 'select contact' mode vs. 'select thread' mode. */
"SELECT_CONTACT_MODE_LABEL" = "Contacts";
/* A label for the 'select thread' mode vs. 'select contact' mode. */
"SELECT_THREAD_MODE_LABEL" = "Conversations";
/* No comment provided by engineer. */
"SEND_AGAIN_BUTTON" = "Send Again";
/* No comment provided by engineer. */
"SEND_BUTTON_TITLE" = "Send";
/* Header title for the 'send external file' view. */
"SEND_EXTERNAL_FILE_HEADER_TITLE" = "Select a Recipient for:";
/* Title for the 'send external file' view. */
"SEND_EXTERNAL_FILE_VIEW_TITLE" = "Send File";