浏览代码

Merge pull request #752 from deltachat/minor_document_view_improvements

Minor document view improvements
bjoern 5 年之前
父节点
当前提交
4412a6c222
共有 2 个文件被更改,包括 26 次插入18 次删除
  1. 9 2
      deltachat-ios/DC/DcMsg+Extension.swift
  2. 17 16
      deltachat-ios/MessageKit/Views/FileView.swift

+ 9 - 2
deltachat-ios/DC/DcMsg+Extension.swift

@@ -77,7 +77,7 @@ extension DcMsg: MessageType {
 
     internal func createFileMessage(text: String) -> MessageKind {
         let fileString = "\(self.filename ?? "???")"
-        let fileSizeString = "(\(self.filesize / 1024) kB)"
+        let fileSizeString = getPrettyFileSize()
         let attributedMediaMessageString =
                    NSAttributedString(string: text,
                                              attributes: [NSAttributedString.Key.font: UIFont.systemFont(ofSize: 16.0),
@@ -92,5 +92,12 @@ extension DcMsg: MessageType {
         let mediaText = [attributedMediaMessageString, attributedFileString, attributedFileSizeString]
         return MessageKind.fileText(Media(url: fileURL, placeholderImage: UIImage(named: "ic_attach_file_36pt"), text: mediaText))
     }
-    
+
+    private func getPrettyFileSize() -> String {
+        if self.filesize <= 0 { return "0 B" }
+        let units: [String] = ["B", "kB", "MB"]
+        let digitGroups = Int(log10(Double(self.filesize)) / log10(1024))
+        let size = String(format: "%.1f", Double(filesize) / pow(1024, Double(digitGroups)))
+        return "\(size) \(units[digitGroups])"
+    }
 }

+ 17 - 16
deltachat-ios/MessageKit/Views/FileView.swift

@@ -3,7 +3,7 @@ import DcCore
 
 class FileView: UIView {
 
-    static let badgeSize: CGFloat = 54
+    static let badgeSize: CGFloat = 48
     static let defaultHeight: CGFloat = 78
     static let defaultWidth: CGFloat = 250
 
@@ -22,12 +22,13 @@ class FileView: UIView {
         return label
     }()
 
-    private lazy var fileBadgeView: InitialsBadge = {
-        let badge: InitialsBadge = InitialsBadge(image: UIImage(), size: FileView.badgeSize)
-        badge.isAccessibilityElement = false
-        badge.isHidden = false
-        badge.cornerRadius = 6
-        return badge
+    private lazy var fileThumbnail: UIImageView = {
+        let image = UIImageView()
+        image.frame.size = CGSize(width: FileView.badgeSize, height: FileView.badgeSize)
+        image.contentMode = .scaleAspectFill
+        image.translatesAutoresizingMaskIntoConstraints = false
+        image.isAccessibilityElement = false
+        return image
     }()
 
     private lazy var verticalStackView: UIStackView = {
@@ -43,17 +44,17 @@ class FileView: UIView {
         super.init(frame: .zero)
         translatesAutoresizingMaskIntoConstraints = false
         verticalStackView.directionalLayoutMargins = directionalLayoutMargins
-        addSubview(fileBadgeView)
+        addSubview(fileThumbnail)
         addSubview(verticalStackView)
         addConstraints([
-            fileBadgeView.constraintAlignLeadingTo(self),
-            fileBadgeView.constraintWidthTo(FileView.badgeSize),
-            fileBadgeView.constraintHeightTo(FileView.badgeSize),
-            fileBadgeView.constraintCenterYTo(self)
+            fileThumbnail.constraintAlignLeadingTo(self),
+            fileThumbnail.constraintWidthTo(FileView.badgeSize),
+            fileThumbnail.constraintHeightTo(FileView.badgeSize),
+            fileThumbnail.constraintCenterYTo(self),
         ])
         addConstraints([
             verticalStackView.constraintCenterYTo(self),
-            verticalStackView.constraintToTrailingOf(fileBadgeView),
+            verticalStackView.constraintToTrailingOf(fileThumbnail),
             verticalStackView.constraintAlignTrailingTo(self)
         ])
     }
@@ -61,9 +62,9 @@ class FileView: UIView {
     func configureFor(mediaItem: MediaItem) {
         if let url = mediaItem.url {
             let controller = UIDocumentInteractionController(url: url)
-            fileBadgeView.setImage(controller.icons.first ?? mediaItem.placeholderImage)
+            fileThumbnail.image = controller.icons.first ?? mediaItem.placeholderImage
         } else {
-            fileBadgeView.setImage(mediaItem.placeholderImage)
+            fileThumbnail.image = mediaItem.placeholderImage
         }
 
         if let title = mediaItem.text?[MediaItemConstants.mediaTitle] {
@@ -82,6 +83,6 @@ class FileView: UIView {
     func prepareForReuse() {
         titleView.attributedText = nil
         subtitleView.attributedText = nil
-        fileBadgeView.reset()
+        fileThumbnail.image = nil
     }
 }