truncate really long file names in the middle

// FREEBIE
This commit is contained in:
Michael Kirk 2017-04-26 18:23:13 -04:00
parent 8c1c38b305
commit 1d91441676

View file

@ -147,16 +147,17 @@ class AttachmentApprovalViewController: UIViewController, OWSAudioAttachmentPlay
audioPlayButton.autoSetDimension(.height, toSize:buttonSize) audioPlayButton.autoSetDimension(.height, toSize:buttonSize)
subviews.append(audioPlayButton) subviews.append(audioPlayButton)
if let fileNameLabel = createFileNameLabel() { let fileNameLabel = createFileNameLabel()
if let fileNameLabel = fileNameLabel {
subviews.append(fileNameLabel) subviews.append(fileNameLabel)
} else if let fileExtensionLabel = createFileExtensionLabel() {
subviews.append(fileExtensionLabel)
} }
let fileSizeLabel = createFileSizeLabel() let fileSizeLabel = createFileSizeLabel()
subviews.append(fileSizeLabel) subviews.append(fileSizeLabel)
let stackView = wrapViewsInVerticalStack(subviews:subviews) let stackView = wrapViewsInVerticalStack(subviews:subviews)
attachmentPreviewView.addSubview(stackView) attachmentPreviewView.addSubview(stackView)
fileNameLabel?.autoPinWidthToSuperview(withMargin: 32)
stackView.autoPinWidthToSuperview() stackView.autoPinWidthToSuperview()
stackView.autoVCenterInSuperview() stackView.autoVCenterInSuperview()
} }
@ -220,16 +221,17 @@ class AttachmentApprovalViewController: UIViewController, OWSAudioAttachmentPlay
let imageView = createHeroImageView(imageName: "file-thin-black-filled-large") let imageView = createHeroImageView(imageName: "file-thin-black-filled-large")
subviews.append(imageView) subviews.append(imageView)
if let fileNameLabel = createFileNameLabel() { let fileNameLabel = createFileNameLabel()
if let fileNameLabel = fileNameLabel {
subviews.append(fileNameLabel) subviews.append(fileNameLabel)
} else if let fileExtensionLabel = createFileExtensionLabel() {
subviews.append(fileExtensionLabel)
} }
let fileSizeLabel = createFileSizeLabel() let fileSizeLabel = createFileSizeLabel()
subviews.append(fileSizeLabel) subviews.append(fileSizeLabel)
let stackView = wrapViewsInVerticalStack(subviews:subviews) let stackView = wrapViewsInVerticalStack(subviews:subviews)
attachmentPreviewView.addSubview(stackView) attachmentPreviewView.addSubview(stackView)
fileNameLabel?.autoPinWidthToSuperview(withMargin: 32)
stackView.autoPinWidthToSuperview() stackView.autoPinWidthToSuperview()
stackView.autoVCenterInSuperview() stackView.autoVCenterInSuperview()
} }
@ -260,21 +262,14 @@ class AttachmentApprovalViewController: UIViewController, OWSAudioAttachmentPlay
return UIFont.ows_regularFont(withSize:ScaleFromIPhone5To7Plus(18, 24)) return UIFont.ows_regularFont(withSize:ScaleFromIPhone5To7Plus(18, 24))
} }
private func createFileExtensionLabel() -> UIView? { private func formattedFileExtension() -> String? {
guard let fileExtension = attachment.fileExtension else { guard let fileExtension = attachment.fileExtension else {
return nil return nil
} }
let fileExtensionLabel = UILabel() return String(format:NSLocalizedString("ATTACHMENT_APPROVAL_FILE_EXTENSION_FORMAT",
fileExtensionLabel.text = String(format:NSLocalizedString("ATTACHMENT_APPROVAL_FILE_EXTENSION_FORMAT",
comment: "Format string for file extension label in call interstitial view"), comment: "Format string for file extension label in call interstitial view"),
fileExtension.uppercased()) fileExtension.uppercased())
fileExtensionLabel.textColor = UIColor.ows_materialBlue()
fileExtensionLabel.font = labelFont()
fileExtensionLabel.textAlignment = .center
return fileExtensionLabel
} }
private func formattedFileName() -> String? { private func formattedFileName() -> String? {
@ -289,14 +284,18 @@ class AttachmentApprovalViewController: UIViewController, OWSAudioAttachmentPlay
} }
private func createFileNameLabel() -> UIView? { private func createFileNameLabel() -> UIView? {
guard let filename = formattedFileName() else { let filename = formattedFileName() ?? formattedFileExtension()
guard filename != nil else {
return nil return nil
} }
let label = UILabel() let label = UILabel()
label.text = filename label.text = filename
label.textColor = UIColor.ows_materialBlue() label.textColor = UIColor.ows_materialBlue()
label.font = labelFont() label.font = labelFont()
label.textAlignment = .center label.textAlignment = .center
label.lineBreakMode = .byTruncatingMiddle
return label return label
} }