Sketch out GIF picker.

// FREEBIE
This commit is contained in:
Matthew Chen 2017-09-26 12:37:00 -04:00
parent 30a77c5977
commit 27e5a2f1b2
7 changed files with 587 additions and 0 deletions

View file

@ -13,6 +13,7 @@
340CB2241EAC155C0001CAA1 /* ContactsViewHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 340CB2231EAC155C0001CAA1 /* ContactsViewHelper.m */; }; 340CB2241EAC155C0001CAA1 /* ContactsViewHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 340CB2231EAC155C0001CAA1 /* ContactsViewHelper.m */; };
340CB2271EAC25820001CAA1 /* UpdateGroupViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 340CB2261EAC25820001CAA1 /* UpdateGroupViewController.m */; }; 340CB2271EAC25820001CAA1 /* UpdateGroupViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 340CB2261EAC25820001CAA1 /* UpdateGroupViewController.m */; };
341207271EE19F6A00463194 /* OWSSystemMessageCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 341207261EE19F6A00463194 /* OWSSystemMessageCell.m */; }; 341207271EE19F6A00463194 /* OWSSystemMessageCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 341207261EE19F6A00463194 /* OWSSystemMessageCell.m */; };
341B057C1F78A3B5007D3F7A /* GifPickerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 341B057B1F78A3B5007D3F7A /* GifPickerViewController.swift */; };
341BB7491DB727EE001E2975 /* JSQMediaItem+OWS.m in Sources */ = {isa = PBXBuildFile; fileRef = 341BB7481DB727EE001E2975 /* JSQMediaItem+OWS.m */; }; 341BB7491DB727EE001E2975 /* JSQMediaItem+OWS.m in Sources */ = {isa = PBXBuildFile; fileRef = 341BB7481DB727EE001E2975 /* JSQMediaItem+OWS.m */; };
341F2C0F1F2B8AE700D07D6B /* DebugUIMisc.m in Sources */ = {isa = PBXBuildFile; fileRef = 341F2C0E1F2B8AE700D07D6B /* DebugUIMisc.m */; }; 341F2C0F1F2B8AE700D07D6B /* DebugUIMisc.m in Sources */ = {isa = PBXBuildFile; fileRef = 341F2C0E1F2B8AE700D07D6B /* DebugUIMisc.m */; };
342FCE6B1EF9C375002690AD /* OWS105AttachmentFilePaths.m in Sources */ = {isa = PBXBuildFile; fileRef = 342FCE6A1EF9C375002690AD /* OWS105AttachmentFilePaths.m */; }; 342FCE6B1EF9C375002690AD /* OWS105AttachmentFilePaths.m in Sources */ = {isa = PBXBuildFile; fileRef = 342FCE6A1EF9C375002690AD /* OWS105AttachmentFilePaths.m */; };
@ -413,6 +414,7 @@
340CB2261EAC25820001CAA1 /* UpdateGroupViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UpdateGroupViewController.m; sourceTree = "<group>"; }; 340CB2261EAC25820001CAA1 /* UpdateGroupViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UpdateGroupViewController.m; sourceTree = "<group>"; };
341207251EE19F6A00463194 /* OWSSystemMessageCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = OWSSystemMessageCell.h; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; 341207251EE19F6A00463194 /* OWSSystemMessageCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = OWSSystemMessageCell.h; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; };
341207261EE19F6A00463194 /* OWSSystemMessageCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = OWSSystemMessageCell.m; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; 341207261EE19F6A00463194 /* OWSSystemMessageCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = OWSSystemMessageCell.m; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objc; };
341B057B1F78A3B5007D3F7A /* GifPickerViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GifPickerViewController.swift; sourceTree = "<group>"; };
341BB7471DB727EE001E2975 /* JSQMediaItem+OWS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "JSQMediaItem+OWS.h"; sourceTree = "<group>"; }; 341BB7471DB727EE001E2975 /* JSQMediaItem+OWS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "JSQMediaItem+OWS.h"; sourceTree = "<group>"; };
341BB7481DB727EE001E2975 /* JSQMediaItem+OWS.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "JSQMediaItem+OWS.m"; sourceTree = "<group>"; }; 341BB7481DB727EE001E2975 /* JSQMediaItem+OWS.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "JSQMediaItem+OWS.m"; sourceTree = "<group>"; };
341F2C0D1F2B8AE700D07D6B /* DebugUIMisc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DebugUIMisc.h; sourceTree = "<group>"; }; 341F2C0D1F2B8AE700D07D6B /* DebugUIMisc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DebugUIMisc.h; sourceTree = "<group>"; };
@ -1030,6 +1032,7 @@
34E8BF371EE9E2FD00F5F4CA /* FingerprintViewScanController.m */, 34E8BF371EE9E2FD00F5F4CA /* FingerprintViewScanController.m */,
34B3F8471E8DF1700035BE1A /* FullImageViewController.h */, 34B3F8471E8DF1700035BE1A /* FullImageViewController.h */,
34B3F8481E8DF1700035BE1A /* FullImageViewController.m */, 34B3F8481E8DF1700035BE1A /* FullImageViewController.m */,
341B057B1F78A3B5007D3F7A /* GifPickerViewController.swift */,
34B3F86F1E8DF1700035BE1A /* HomeViewController.h */, 34B3F86F1E8DF1700035BE1A /* HomeViewController.h */,
34B3F8701E8DF1700035BE1A /* HomeViewController.m */, 34B3F8701E8DF1700035BE1A /* HomeViewController.m */,
34B3F8491E8DF1700035BE1A /* InboxTableViewCell.h */, 34B3F8491E8DF1700035BE1A /* InboxTableViewCell.h */,
@ -2209,6 +2212,7 @@
34D99C931F2937CC00D284D6 /* OWSAnalytics.swift in Sources */, 34D99C931F2937CC00D284D6 /* OWSAnalytics.swift in Sources */,
34D9134B1F62D4A500722898 /* SignalAttachment.swift in Sources */, 34D9134B1F62D4A500722898 /* SignalAttachment.swift in Sources */,
34B3F88E1E8DF1700035BE1A /* PrivacySettingsTableViewController.m in Sources */, 34B3F88E1E8DF1700035BE1A /* PrivacySettingsTableViewController.m in Sources */,
341B057C1F78A3B5007D3F7A /* GifPickerViewController.swift in Sources */,
4505C2C21E648F7A00CEBF41 /* ExperienceUpgradeFinder.swift in Sources */, 4505C2C21E648F7A00CEBF41 /* ExperienceUpgradeFinder.swift in Sources */,
341F2C0F1F2B8AE700D07D6B /* DebugUIMisc.m in Sources */, 341F2C0F1F2B8AE700D07D6B /* DebugUIMisc.m in Sources */,
34E3EF0D1EFC235B007F6822 /* DebugUIDiskUsage.m in Sources */, 34E3EF0D1EFC235B007F6822 /* DebugUIDiskUsage.m in Sources */,

View file

@ -0,0 +1,23 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "actionsheet_gif_black@1x.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "actionsheet_gif_black@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "actionsheet_gif_black@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

View file

@ -3203,6 +3203,15 @@ typedef NS_ENUM(NSInteger, MessagesRangeSizeMode) {
[self presentViewController:menuController animated:YES completion:nil]; [self presentViewController:menuController animated:YES completion:nil];
} }
#pragma mark - Attachment Picking: GIFs
- (void)showGifPicker
{
GifPickerViewController *view = [GifPickerViewController new];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:view];
[self presentViewController:navigationController animated:YES completion:nil];
}
#pragma mark UIDocumentMenuDelegate #pragma mark UIDocumentMenuDelegate
- (void)documentMenu:(UIDocumentMenuViewController *)documentMenu - (void)documentMenu:(UIDocumentMenuViewController *)documentMenu
@ -4042,6 +4051,22 @@ typedef NS_ENUM(NSInteger, MessagesRangeSizeMode) {
[chooseDocumentAction setValue:chooseDocumentImage forKey:@"image"]; [chooseDocumentAction setValue:chooseDocumentImage forKey:@"image"];
[actionSheetController addAction:chooseDocumentAction]; [actionSheetController addAction:chooseDocumentAction];
#ifdef DEBUG
UIAlertAction *gifAction =
// TODO:
[UIAlertAction actionWithTitle:NSLocalizedString(@"SELECT_GIF_BUTTON",
@"Label for 'select gif to attach' action sheet button")
style:UIAlertActionStyleDefault
handler:^(UIAlertAction *_Nonnull action) {
[self showGifPicker];
}];
// TODO:
UIImage *gifImage = [UIImage imageNamed:@"actionsheet_gif_black"];
OWSAssert(gifImage);
[gifAction setValue:gifImage forKey:@"image"];
[actionSheetController addAction:gifAction];
#endif
[self presentViewController:actionSheetController animated:true completion:nil]; [self presentViewController:actionSheetController animated:true completion:nil];
} }

View file

@ -0,0 +1,535 @@
//
// Copyright (c) 2017 Open Whisper Systems. All rights reserved.
//
import Foundation
//import MediaPlayer
class GifPickerViewController: OWSViewController, UISearchBarDelegate
//, OWSAudioAttachmentPlayerDelegate
{
let TAG = "[GifPickerViewController]"
// MARK: Properties
let searchBar: UISearchBar
let collectionView: UICollectionView
// let attachment: SignalAttachment
//
// var successCompletion : (() -> Void)?
//
// var videoPlayer: MPMoviePlayerController?
//
// var audioPlayer: OWSAudioAttachmentPlayer?
// var audioStatusLabel: UILabel?
// var audioPlayButton: UIButton?
// var isAudioPlayingFlag = false
// var isAudioPaused = false
// var audioProgressSeconds: CGFloat = 0
// var audioDurationSeconds: CGFloat = 0
// MARK: Initializers
@available(*, unavailable, message:"use attachment: constructor instead.")
required init?(coder aDecoder: NSCoder) {
self.searchBar = UISearchBar()
self.collectionView = UICollectionView()
// self.attachment = SignalAttachment.empty()
super.init(coder: aDecoder)
owsFail("\(self.TAG) invalid constructor")
}
required init() {
self.searchBar = UISearchBar()
self.collectionView = UICollectionView()
// assert(!attachment.hasError)
// self.attachment = attachment
// self.successCompletion = successCompletion
super.init(nibName: nil, bundle: nil)
}
// MARK: View Lifecycle
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = UIColor.white
self.navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem:.stop,
target:self,
action:#selector(donePressed))
self.navigationItem.title = NSLocalizedString("GIF_PICKER_VIEW_TITLE",
comment: "Title for the 'gif picker' dialog.")
createViews()
}
// MARK: Views
private func createViews() {
// @property (nonatomic, readonly) UISearchBar *searchBar;
view.backgroundColor = UIColor.white
// Search
searchBar.searchBarStyle = .minimal
searchBar.delegate = self
searchBar.placeholder = NSLocalizedString("GIF_VIEW_SEARCH_PLACEHOLDER_TEXT",
comment:"Placeholder text for the search field in gif view")
searchBar.backgroundColor = UIColor.white
self.view.addSubview(searchBar)
searchBar.autoPinWidthToSuperview()
searchBar.autoPin(toTopLayoutGuideOf: self, withInset:0)
// [searchBar sizeToFit];
// _tableViewController = [OWSTableViewController new];
// _tableViewController.delegate = self;
// _tableViewController.tableViewStyle = UITableViewStylePlain;
// [self.view addSubview:self.tableViewController.view];
// [_tableViewController.view autoPinWidthToSuperview];
//
// [_tableViewController.view autoPinEdge:ALEdgeTop toEdge:ALEdgeBottom ofView:contactsPermissionReminderView];
// [_tableViewController.view autoPinToBottomLayoutGuideOfViewController:self withInset:0];
// _tableViewController.tableView.tableHeaderView = searchBar;
//
// _noSignalContactsView = [self createNoSignalContactsView];
// self.noSignalContactsView.hidden = YES;
// [self.view addSubview:self.noSignalContactsView];
// [self.noSignalContactsView autoPinWidthToSuperview];
// [self.noSignalContactsView autoPinEdgeToSuperviewEdge:ALEdgeTop];
// [self.noSignalContactsView autoPinToBottomLayoutGuideOfViewController:self withInset:0];
//
// UIRefreshControl *pullToRefreshView = [UIRefreshControl new];
// pullToRefreshView.tintColor = [UIColor grayColor];
// [pullToRefreshView addTarget:self
// action:@selector(pullToRefreshPerformed:)
// forControlEvents:UIControlEventValueChanged];
// [self.tableViewController.tableView insertSubview:pullToRefreshView atIndex:0];
//
// [self updateTableContents];
}
// override func viewDidLoad() {
// super.viewDidLoad()
//
// view.backgroundColor = UIColor.white
//
// self.navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem:.stop,
// target:self,
// action:#selector(donePressed))
// self.navigationItem.title = dialogTitle()
//
// createViews()
// }
//
// private func dialogTitle() -> String {
// guard let filename = formattedFileName() else {
// return NSLocalizedString("ATTACHMENT_APPROVAL_DIALOG_TITLE",
// comment: "Title for the 'attachment approval' dialog.")
// }
// return filename
// }
//
// override func viewWillAppear(_ animated: Bool) {
// super.viewWillAppear(animated)
//
// ViewControllerUtils.setAudioIgnoresHardwareMuteSwitch(true)
// }
//
// override func viewWillDisappear(_ animated: Bool) {
// super.viewWillDisappear(animated)
//
// ViewControllerUtils.setAudioIgnoresHardwareMuteSwitch(false)
// }
//
// // MARK: - Create Views
//
// private func createViews() {
// let previewTopMargin: CGFloat = 30
// let previewHMargin: CGFloat = 20
//
// let attachmentPreviewView = UIView()
// self.view.addSubview(attachmentPreviewView)
// attachmentPreviewView.autoPinWidthToSuperview(withMargin:previewHMargin)
// attachmentPreviewView.autoPin(toTopLayoutGuideOf: self, withInset:previewTopMargin)
//
// createButtonRow(attachmentPreviewView:attachmentPreviewView)
//
// if attachment.isAnimatedImage {
// createAnimatedPreview(attachmentPreviewView:attachmentPreviewView)
// } else if attachment.isImage {
// createImagePreview(attachmentPreviewView:attachmentPreviewView)
// } else if attachment.isVideo {
// createVideoPreview(attachmentPreviewView:attachmentPreviewView)
// } else if attachment.isAudio {
// createAudioPreview(attachmentPreviewView:attachmentPreviewView)
// } else {
// createGenericPreview(attachmentPreviewView:attachmentPreviewView)
// }
// }
//
// private func wrapViewsInVerticalStack(subviews: [UIView]) -> UIView {
// assert(subviews.count > 0)
//
// let stackView = UIView()
//
// var lastView: UIView?
// for subview in subviews {
//
// stackView.addSubview(subview)
// subview.autoHCenterInSuperview()
//
// if lastView == nil {
// subview.autoPinEdge(toSuperviewEdge:.top)
// } else {
// subview.autoPinEdge(.top, to:.bottom, of:lastView!, withOffset:10)
// }
//
// lastView = subview
// }
//
// lastView?.autoPinEdge(toSuperviewEdge:.bottom)
//
// return stackView
// }
//
// private func createAudioPreview(attachmentPreviewView: UIView) {
// guard let dataUrl = attachment.dataUrl else {
// createGenericPreview(attachmentPreviewView:attachmentPreviewView)
// return
// }
//
// audioPlayer = OWSAudioAttachmentPlayer(mediaUrl: dataUrl, delegate: self)
//
// var subviews = [UIView]()
//
// let audioPlayButton = UIButton()
// self.audioPlayButton = audioPlayButton
// setAudioIconToPlay()
// audioPlayButton.imageView?.layer.minificationFilter = kCAFilterTrilinear
// audioPlayButton.imageView?.layer.magnificationFilter = kCAFilterTrilinear
// audioPlayButton.addTarget(self, action:#selector(audioPlayButtonPressed), for:.touchUpInside)
// let buttonSize = createHeroViewSize()
// audioPlayButton.autoSetDimension(.width, toSize:buttonSize)
// audioPlayButton.autoSetDimension(.height, toSize:buttonSize)
// subviews.append(audioPlayButton)
//
// let fileNameLabel = createFileNameLabel()
// if let fileNameLabel = fileNameLabel {
// subviews.append(fileNameLabel)
// }
//
// let fileSizeLabel = createFileSizeLabel()
// subviews.append(fileSizeLabel)
//
// let audioStatusLabel = createAudioStatusLabel()
// self.audioStatusLabel = audioStatusLabel
// updateAudioStatusLabel()
// subviews.append(audioStatusLabel)
//
// let stackView = wrapViewsInVerticalStack(subviews:subviews)
// attachmentPreviewView.addSubview(stackView)
// fileNameLabel?.autoPinWidthToSuperview(withMargin: 32)
// stackView.autoPinWidthToSuperview()
// stackView.autoVCenterInSuperview()
// }
//
// private func createAnimatedPreview(attachmentPreviewView: UIView) {
// guard attachment.isValidImage else {
// return
// }
// let data = attachment.data
// // Use Flipboard FLAnimatedImage library to display gifs
// guard let animatedImage = FLAnimatedImage(gifData:data) else {
// createGenericPreview(attachmentPreviewView:attachmentPreviewView)
// return
// }
// let animatedImageView = FLAnimatedImageView()
// animatedImageView.animatedImage = animatedImage
// animatedImageView.contentMode = .scaleAspectFit
// attachmentPreviewView.addSubview(animatedImageView)
// animatedImageView.autoPinWidthToSuperview()
// animatedImageView.autoPinHeightToSuperview()
// }
//
// private func createImagePreview(attachmentPreviewView: UIView) {
// var image = attachment.image
// if image == nil {
// image = UIImage(data:attachment.data)
// }
// guard image != nil else {
// createGenericPreview(attachmentPreviewView:attachmentPreviewView)
// return
// }
//
// let imageView = UIImageView(image:image)
// imageView.layer.minificationFilter = kCAFilterTrilinear
// imageView.layer.magnificationFilter = kCAFilterTrilinear
// imageView.contentMode = .scaleAspectFit
// attachmentPreviewView.addSubview(imageView)
// imageView.autoPinWidthToSuperview()
// imageView.autoPinHeightToSuperview()
// }
//
// private func createVideoPreview(attachmentPreviewView: UIView) {
// guard let dataUrl = attachment.dataUrl else {
// createGenericPreview(attachmentPreviewView:attachmentPreviewView)
// return
// }
// guard let videoPlayer = MPMoviePlayerController(contentURL:dataUrl) else {
// createGenericPreview(attachmentPreviewView:attachmentPreviewView)
// return
// }
// videoPlayer.prepareToPlay()
//
// videoPlayer.controlStyle = .default
// videoPlayer.shouldAutoplay = false
//
// attachmentPreviewView.addSubview(videoPlayer.view)
// self.videoPlayer = videoPlayer
// videoPlayer.view.autoPinWidthToSuperview()
// videoPlayer.view.autoPinHeightToSuperview()
// }
//
// private func createGenericPreview(attachmentPreviewView: UIView) {
// var subviews = [UIView]()
//
// let imageView = createHeroImageView(imageName: "file-thin-black-filled-large")
// subviews.append(imageView)
//
// let fileNameLabel = createFileNameLabel()
// if let fileNameLabel = fileNameLabel {
// subviews.append(fileNameLabel)
// }
//
// let fileSizeLabel = createFileSizeLabel()
// subviews.append(fileSizeLabel)
//
// let stackView = wrapViewsInVerticalStack(subviews:subviews)
// attachmentPreviewView.addSubview(stackView)
// fileNameLabel?.autoPinWidthToSuperview(withMargin: 32)
// stackView.autoPinWidthToSuperview()
// stackView.autoVCenterInSuperview()
// }
//
// private func createHeroViewSize() -> CGFloat {
// return ScaleFromIPhone5To7Plus(175, 225)
// }
//
// private func createHeroImageView(imageName: String) -> UIView {
// let imageSize = createHeroViewSize()
// let image = UIImage(named:imageName)
// assert(image != nil)
// let imageView = UIImageView(image:image)
// imageView.layer.minificationFilter = kCAFilterTrilinear
// imageView.layer.magnificationFilter = kCAFilterTrilinear
// imageView.layer.shadowColor = UIColor.black.cgColor
// let shadowScaling = 5.0
// imageView.layer.shadowRadius = CGFloat(2.0 * shadowScaling)
// imageView.layer.shadowOpacity = 0.25
// imageView.layer.shadowOffset = CGSize(width: 0.75 * shadowScaling, height: 0.75 * shadowScaling)
// imageView.autoSetDimension(.width, toSize:imageSize)
// imageView.autoSetDimension(.height, toSize:imageSize)
//
// return imageView
// }
//
// private func labelFont() -> UIFont {
// return UIFont.ows_regularFont(withSize:ScaleFromIPhone5To7Plus(18, 24))
// }
//
// private func formattedFileExtension() -> String? {
// guard let fileExtension = attachment.fileExtension else {
// return nil
// }
//
// return String(format:NSLocalizedString("ATTACHMENT_APPROVAL_FILE_EXTENSION_FORMAT",
// comment: "Format string for file extension label in call interstitial view"),
// fileExtension.uppercased())
// }
//
// private func formattedFileName() -> String? {
// guard let sourceFilename = attachment.sourceFilename else {
// return nil
// }
// let filename = sourceFilename.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
// guard filename.characters.count > 0 else {
// return nil
// }
// return filename
// }
//
// private func createFileNameLabel() -> UIView? {
// let filename = formattedFileName() ?? formattedFileExtension()
//
// guard filename != nil else {
// return nil
// }
//
// let label = UILabel()
// label.text = filename
// label.textColor = UIColor.ows_materialBlue()
// label.font = labelFont()
// label.textAlignment = .center
// label.lineBreakMode = .byTruncatingMiddle
// return label
// }
//
// private func createFileSizeLabel() -> UIView {
// let label = UILabel()
// let fileSize = attachment.dataLength
// label.text = String(format:NSLocalizedString("ATTACHMENT_APPROVAL_FILE_SIZE_FORMAT",
// comment: "Format string for file size label in call interstitial view. Embeds: {{file size as 'N mb' or 'N kb'}}."),
// ViewControllerUtils.formatFileSize(UInt(fileSize)))
//
// label.textColor = UIColor.ows_materialBlue()
// label.font = labelFont()
// label.textAlignment = .center
//
// return label
// }
//
// private func createAudioStatusLabel() -> UILabel {
// let label = UILabel()
// label.textColor = UIColor.ows_materialBlue()
// label.font = labelFont()
// label.textAlignment = .center
//
// return label
// }
//
// private func createButtonRow(attachmentPreviewView: UIView) {
// let buttonTopMargin = ScaleFromIPhone5To7Plus(30, 40)
// let buttonBottomMargin = ScaleFromIPhone5To7Plus(25, 40)
// let buttonHSpacing = ScaleFromIPhone5To7Plus(20, 30)
//
// let buttonRow = UIView()
// self.view.addSubview(buttonRow)
// buttonRow.autoPinWidthToSuperview()
// buttonRow.autoPinEdge(toSuperviewEdge:.bottom, withInset:buttonBottomMargin)
// buttonRow.autoPinEdge(.top, to:.bottom, of:attachmentPreviewView, withOffset:buttonTopMargin)
//
// // We use this invisible subview to ensure that the buttons are centered
// // horizontally.
// let buttonSpacer = UIView()
// buttonRow.addSubview(buttonSpacer)
// // Vertical positioning of this view doesn't matter.
// buttonSpacer.autoPinEdge(toSuperviewEdge:.top)
// buttonSpacer.autoSetDimension(.width, toSize:buttonHSpacing)
// buttonSpacer.autoHCenterInSuperview()
//
// let cancelButton = createButton(title: CommonStrings.cancelButton,
// color : UIColor.ows_destructiveRed(),
// action: #selector(cancelPressed))
// buttonRow.addSubview(cancelButton)
// cancelButton.autoPinEdge(toSuperviewEdge:.top)
// cancelButton.autoPinEdge(toSuperviewEdge:.bottom)
// cancelButton.autoPinEdge(.right, to:.left, of:buttonSpacer)
//
// let sendButton = createButton(title: NSLocalizedString("ATTACHMENT_APPROVAL_SEND_BUTTON",
// comment: "Label for 'send' button in the 'attachment approval' dialog."),
// color : UIColor(rgbHex:0x2ecc71),
// action: #selector(sendPressed))
// buttonRow.addSubview(sendButton)
// sendButton.autoPinEdge(toSuperviewEdge:.top)
// sendButton.autoPinEdge(toSuperviewEdge:.bottom)
// sendButton.autoPinEdge(.left, to:.right, of:buttonSpacer)
// }
//
// private func createButton(title: String, color: UIColor, action: Selector) -> UIView {
// let buttonWidth = ScaleFromIPhone5To7Plus(110, 140)
// let buttonHeight = ScaleFromIPhone5To7Plus(35, 45)
//
// return OWSFlatButton.button(title:title,
// titleColor:UIColor.white,
// backgroundColor:color,
// width:buttonWidth,
// height:buttonHeight,
// target:target,
// selector:action)
// }
//
// // MARK: - Event Handlers
//
// func donePressed(sender: UIButton) {
// dismiss(animated: true, completion:nil)
// }
//
// func cancelPressed(sender: UIButton) {
// dismiss(animated: true, completion:nil)
// }
//
// func sendPressed(sender: UIButton) {
// let successCompletion = self.successCompletion
// dismiss(animated: true, completion: {
// successCompletion?()
// })
// }
//
// func audioPlayButtonPressed(sender: UIButton) {
// audioPlayer?.togglePlayState()
// }
//
// // MARK: - OWSAudioAttachmentPlayerDelegate
//
// public func isAudioPlaying() -> Bool {
// return isAudioPlayingFlag
// }
//
// public func setIsAudioPlaying(_ isAudioPlaying: Bool) {
// isAudioPlayingFlag = isAudioPlaying
//
// updateAudioStatusLabel()
// }
//
// public func isPaused() -> Bool {
// return isAudioPaused
// }
//
// public func setIsPaused(_ isPaused: Bool) {
// isAudioPaused = isPaused
// }
//
// public func setAudioProgress(_ progress: CGFloat, duration: CGFloat) {
// audioProgressSeconds = progress
// audioDurationSeconds = duration
//
// updateAudioStatusLabel()
// }
//
// private func updateAudioStatusLabel() {
// guard let audioStatusLabel = self.audioStatusLabel else {
// owsFail("Missing audio status label")
// return
// }
//
// if isAudioPlayingFlag && audioProgressSeconds > 0 && audioDurationSeconds > 0 {
// audioStatusLabel.text = String(format:"%@ / %@",
// ViewControllerUtils.formatDurationSeconds(Int(round(self.audioProgressSeconds))),
// ViewControllerUtils.formatDurationSeconds(Int(round(self.audioDurationSeconds))))
// } else {
// audioStatusLabel.text = " "
// }
// }
//
// public func setAudioIconToPlay() {
// let image = UIImage(named:"audio_play_black_large")?.withRenderingMode(.alwaysTemplate)
// assert(image != nil)
// audioPlayButton?.setImage(image, for:.normal)
// audioPlayButton?.imageView?.tintColor = UIColor.ows_materialBlue()
// }
//
// public func setAudioIconToPause() {
// let image = UIImage(named:"audio_pause_black_large")?.withRenderingMode(.alwaysTemplate)
// assert(image != nil)
// audioPlayButton?.setImage(image, for:.normal)
// audioPlayButton?.imageView?.tintColor = UIColor.ows_materialBlue()
// }
// MARK: - Event Handlers
func donePressed(sender: UIButton) {
dismiss(animated: true, completion:nil)
}
}