parent
5c0c9b533e
commit
93eed73530
|
@ -90,6 +90,8 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
|
||||
- (void)createViews
|
||||
{
|
||||
OWSAssert(self.delegate);
|
||||
|
||||
UIView *header = [self.delegate createHeader:self.view];
|
||||
|
||||
// Table
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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";
|
||||
|
||||
|
|
Loading…
Reference in New Issue