Forráskód Böngészése

Merge pull request #492 from deltachat/video-thumbnail

Video thumbnail
bjoern 5 éve
szülő
commit
f6686f252f

+ 4 - 3
deltachat-ios/DC/Wrapper.swift

@@ -620,12 +620,13 @@ class DcMsg: MessageType {
     }()
     }()
 
 
     internal func createVideoMessage(text: String) -> MessageKind {
     internal func createVideoMessage(text: String) -> MessageKind {
+        let thumbnail = Utils.generateThumbnailFromVideo(url: fileURL)
         if text.isEmpty {
         if text.isEmpty {
-                       return MessageKind.video(Media(url: fileURL))
-                   }
+            return MessageKind.video(Media(url: fileURL, image: thumbnail))
+        }
         let attributedString = NSAttributedString(string: text, attributes: [NSAttributedString.Key.font: UIFont.systemFont(ofSize: 16.0),
         let attributedString = NSAttributedString(string: text, attributes: [NSAttributedString.Key.font: UIFont.systemFont(ofSize: 16.0),
                                                                              NSAttributedString.Key.foregroundColor: DcColors.defaultTextColor])
                                                                              NSAttributedString.Key.foregroundColor: DcColors.defaultTextColor])
-                   return MessageKind.videoText(Media(url: fileURL, text: attributedString))
+        return MessageKind.videoText(Media(url: fileURL, image: thumbnail, text: attributedString))
     }
     }
 
 
     internal func createImageMessage(text: String) -> MessageKind {
     internal func createImageMessage(text: String) -> MessageKind {

+ 5 - 7
deltachat-ios/Helper/Utils.swift

@@ -146,20 +146,18 @@ struct Utils {
         return url.absoluteString.hasSuffix("wav")
         return url.absoluteString.hasSuffix("wav")
     }
     }
 
 
-    static func generateThumbnailFromVideo(url: URL) -> UIImage? {
+    static func generateThumbnailFromVideo(url: URL?) -> UIImage? {
+        guard let url = url else {
+            return nil
+        }
         do {
         do {
             let asset = AVURLAsset(url: url)
             let asset = AVURLAsset(url: url)
             let imageGenerator = AVAssetImageGenerator(asset: asset)
             let imageGenerator = AVAssetImageGenerator(asset: asset)
             imageGenerator.appliesPreferredTrackTransform = true
             imageGenerator.appliesPreferredTrackTransform = true
-            // Select the right one based on which version you are using
-            // Swift 4.2
-            //let cgImage = try imageGenerator.copyCGImage(at: .zero, actualTime: nil)
-            // Swift 4.0
-            let cgImage = try imageGenerator.copyCGImage(at: CMTime.zero, actualTime: nil)
+            let cgImage = try imageGenerator.copyCGImage(at: .zero, actualTime: nil)
             return UIImage(cgImage: cgImage)
             return UIImage(cgImage: cgImage)
         } catch {
         } catch {
             print(error.localizedDescription)
             print(error.localizedDescription)
-
             return nil
             return nil
         }
         }
     }
     }

+ 1 - 1
deltachat-ios/MessageKit/Views/Cells/MediaMessageCell.swift

@@ -46,7 +46,7 @@ open class MediaMessageCell: MessageContentCell {
     open func setupConstraints() {
     open func setupConstraints() {
         imageView.fillSuperview()
         imageView.fillSuperview()
         playButtonView.centerInSuperview()
         playButtonView.centerInSuperview()
-        playButtonView.constraint(equalTo: CGSize(width: 35, height: 35))
+        playButtonView.constraint(equalTo: CGSize(width: 50, height: 50))
     }
     }
 
 
     open override func setupSubviews() {
     open override func setupSubviews() {

+ 1 - 1
deltachat-ios/MessageKit/Views/Cells/TextMediaMessageCell.swift

@@ -81,7 +81,7 @@ open class TextMediaMessageCell: MessageContentCell {
 
 
         switch messageKind {
         switch messageKind {
         case .videoText:
         case .videoText:
-            playButtonView.constraint(equalTo: CGSize(width: 35, height: 35))
+            playButtonView.constraint(equalTo: CGSize(width: 50, height: 50))
             let playButtonViewConstraints = [ playButtonView.constraintCenterXTo(imageView),
             let playButtonViewConstraints = [ playButtonView.constraintCenterXTo(imageView),
                                               playButtonView.constraintCenterYTo(imageView)]
                                               playButtonView.constraintCenterYTo(imageView)]
             messageContainerView.addConstraints(playButtonViewConstraints)
             messageContainerView.addConstraints(playButtonViewConstraints)

+ 2 - 2
deltachat-ios/MessageKit/Views/PlayButtonView.swift

@@ -71,7 +71,7 @@ open class PlayButtonView: UIView {
     private func setupView() {
     private func setupView() {
         triangleView.clipsToBounds = true
         triangleView.clipsToBounds = true
         triangleView.backgroundColor = .black
         triangleView.backgroundColor = .black
-        
+
         backgroundColor = .playButtonLightGray
         backgroundColor = .playButtonLightGray
     }
     }
 
 
@@ -93,7 +93,7 @@ open class PlayButtonView: UIView {
         let trianglePath = UIBezierPath()
         let trianglePath = UIBezierPath()
 
 
         let point1 = CGPoint(x: frame.minX, y: frame.minY)
         let point1 = CGPoint(x: frame.minX, y: frame.minY)
-        let point2 = CGPoint(x: frame.maxX, y: frame.maxY/2)
+        let point2 = CGPoint(x: (frame.maxX/5) * 4, y: frame.maxY/2)
         let point3 = CGPoint(x: frame.minX, y: frame.maxY)
         let point3 = CGPoint(x: frame.minX, y: frame.maxY)
 
 
         trianglePath .move(to: point1)
         trianglePath .move(to: point1)