Browse Source

able to show larger videoCell

Bastian van de Wetering 5 years ago
parent
commit
ff4fd0408c

+ 1 - 3
Pods/MessageKit/Sources/Views/Cells/MediaMessageCell.swift

@@ -72,11 +72,9 @@ open class MediaMessageCell: MessageContentCell {
             imageView.image = mediaItem.image ?? mediaItem.placeholderImage
             playButtonView.isHidden = true
         case .video(let mediaItem):
-			print(mediaItem.image == nil)
-			print(mediaItem.placeholderImage == nil)
 			let image = mediaItem.image ?? mediaItem.placeholderImage
 			imageView.image = image //mediaItem.image ?? mediaItem.placeholderImage
-            playButtonView.isHidden = false
+           // playButtonView.isHidden = false
         default:
             break
         }

+ 2 - 2
Pods/MessageKit/Sources/Views/Cells/MessageContentCell.swift

@@ -106,6 +106,7 @@ open class MessageContentCell: MessageCollectionViewCell {
 
     // MARK: - Configuration
 
+
     open override func apply(_ layoutAttributes: UICollectionViewLayoutAttributes) {
         super.apply(layoutAttributes)
         guard let attributes = layoutAttributes as? MessagesCollectionViewLayoutAttributes else { return }
@@ -260,8 +261,7 @@ open class MessageContentCell: MessageCollectionViewCell {
         case .natural:
             fatalError(MessageKitError.avatarPositionUnresolved)
         }
-
-        messageContainerView.frame = CGRect(origin: origin, size: attributes.messageContainerSize)
+		messageContainerView.frame = CGRect(origin: origin, size: attributes.messageContainerSize)
     }
 
     /// Positions the cell's top label.

+ 4 - 0
deltachat-ios.xcodeproj/project.pbxproj

@@ -38,6 +38,7 @@
 		7AE0A5491FC42F65005ECB4B /* NewChatViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7AE0A5481FC42F65005ECB4B /* NewChatViewController.swift */; };
 		8B6D425BC604F7C43B65D436 /* Pods_deltachat_ios.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6241BE1534A653E79AD5D01D /* Pods_deltachat_ios.framework */; };
 		AE0D26FD1FB1FE88002FAFCE /* ChatListController.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE0D26FC1FB1FE88002FAFCE /* ChatListController.swift */; };
+		AE12132D22BCD96F00B39258 /* VideoMessageCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE12132C22BCD96F00B39258 /* VideoMessageCell.swift */; };
 		AE18F292228C17BC0007B1BE /* PortSettingsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE18F291228C17BC0007B1BE /* PortSettingsController.swift */; };
 		AE18F294228C602A0007B1BE /* SecuritySettingsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE18F293228C602A0007B1BE /* SecuritySettingsController.swift */; };
 		AE25F09022807AD800CDEA66 /* GroupNameCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE25F08F22807AD800CDEA66 /* GroupNameCell.swift */; };
@@ -117,6 +118,7 @@
 		8DE110C607A0E4485C43B5FA /* Pods-deltachat-ios.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-deltachat-ios.debug.xcconfig"; path = "Pods/Target Support Files/Pods-deltachat-ios/Pods-deltachat-ios.debug.xcconfig"; sourceTree = "<group>"; };
 		A8615D4600859851E53CAA9C /* Pods-deltachat-ios.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-deltachat-ios.release.xcconfig"; path = "Pods/Target Support Files/Pods-deltachat-ios/Pods-deltachat-ios.release.xcconfig"; sourceTree = "<group>"; };
 		AE0D26FC1FB1FE88002FAFCE /* ChatListController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatListController.swift; sourceTree = "<group>"; };
+		AE12132C22BCD96F00B39258 /* VideoMessageCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VideoMessageCell.swift; sourceTree = "<group>"; };
 		AE18F291228C17BC0007B1BE /* PortSettingsController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PortSettingsController.swift; sourceTree = "<group>"; };
 		AE18F293228C602A0007B1BE /* SecuritySettingsController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecuritySettingsController.swift; sourceTree = "<group>"; };
 		AE25F08F22807AD800CDEA66 /* GroupNameCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GroupNameCell.swift; sourceTree = "<group>"; };
@@ -334,6 +336,7 @@
 				AE25F08F22807AD800CDEA66 /* GroupNameCell.swift */,
 				AE728F14229D5C390047565B /* PhotoPickerAlertAction.swift */,
 				AE52EA18229EB53C00C586C9 /* ContactDetailHeader.swift */,
+				AE12132C22BCD96F00B39258 /* VideoMessageCell.swift */,
 			);
 			path = View;
 			sourceTree = "<group>";
@@ -620,6 +623,7 @@
 				78E45E4421D3F14A00D4B15E /* UIImage+Extension.swift in Sources */,
 				AE52EA20229EB9F000C586C9 /* EditGroupViewController.swift in Sources */,
 				70B08FCD21073B910097D3EA /* NewGroupMemberChoiceController.swift in Sources */,
+				AE12132D22BCD96F00B39258 /* VideoMessageCell.swift in Sources */,
 				78E45E3E21D3D28C00D4B15E /* DCNavigationController.swift in Sources */,
 				78E45E4021D3D70700D4B15E /* ContactListController.swift in Sources */,
 				AE18F294228C602A0007B1BE /* SecuritySettingsController.swift in Sources */,

+ 39 - 1
deltachat-ios/Controller/ChatViewController.swift

@@ -65,6 +65,7 @@ class ChatViewController: MessagesViewController {
 
 	override func viewDidLoad() {
 		messagesCollectionView.register(CustomMessageCell.self)
+		messagesCollectionView.register(VideoMessageCell.self)
 		super.viewDidLoad()
 		view.backgroundColor = DCColors.chatBackgroundColor
 		if !MRConfig.configured {
@@ -389,10 +390,16 @@ class ChatViewController: MessagesViewController {
 			let cell = messagesCollectionView.dequeueReusableCell(TextMessageCell.self, for: indexPath)
 			cell.configure(with: message, at: indexPath, and: messagesCollectionView)
 			return cell
-		case .photo, .video:
+		case .photo:
 			let cell = messagesCollectionView.dequeueReusableCell(MediaMessageCell.self, for: indexPath)
 			cell.configure(with: message, at: indexPath, and: messagesCollectionView)
 			return cell
+		case .video:
+			let cell = messagesCollectionView.dequeueReusableCell(VideoMessageCell.self, for: indexPath)
+			let m: MRMessage = messageList[indexPath.section]
+			let url = m.fileURL
+			cell.configure(with: message, videoUrl: url, at: indexPath, and: messagesCollectionView)
+			return cell
 		case .location:
 			let cell = messagesCollectionView.dequeueReusableCell(LocationMessageCell.self, for: indexPath)
 			cell.configure(with: message, at: indexPath, and: messagesCollectionView)
@@ -708,6 +715,37 @@ extension ChatViewController: MessagesDisplayDelegate {
 	func enabledDetectors(for _: MessageType, at _: IndexPath, in _: MessagesCollectionView) -> [DetectorType] {
 		return [.url, .date, .phoneNumber, .address]
 	}
+
+	// MARK: - videoCell configuration
+	 func configureMediaMessageImageView(_ imageView: UIImageView, for message: MessageType, at indexPath: IndexPath, in messagesCollectionView: MessagesCollectionView) {
+
+
+		let message = self.messageForItem(at: indexPath, in: messagesCollectionView)
+
+		switch message.kind {
+			/*
+		case .video:
+			let m: MRMessage = messageList[indexPath.section]
+			if let url = m.fileURL {
+
+				let thumbnail = Utils.generateThumbnailFromVideo(url: url)
+				imageView.image = thumbnail
+
+				/*
+				let dummyImageView = UIImageView(image: thumbnail)
+				dummyImageView.translatesAutoresizingMaskIntoConstraints = false
+				view.addSubview(dummyImageView)
+				dummyImageView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
+				dummyImageView.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
+				dummyImageView.heightAnchor.constraint(equalToConstant: 200).isActive = true
+				dummyImageView.widthAnchor.constraint(equalToConstant: 200).isActive = true
+				*/
+			}
+			*/
+		default:
+			break
+		}
+	}
 }
 
 // MARK: - MessagesLayoutDelegate

+ 82 - 0
deltachat-ios/View/VideoMessageCell.swift

@@ -0,0 +1,82 @@
+//
+//  VideoMessageCell.swift
+//  deltachat-ios
+//
+//  Created by Bastian van de Wetering on 21.06.19.
+//  Copyright © 2019 Jonas Reinsch. All rights reserved.
+//
+
+import UIKit
+import MessageKit
+
+class VideoMessageCell: MediaMessageCell {
+	/// Responsible for setting up the constraints of the cell's subviews.
+	override func setupConstraints() {
+		super.setupConstraints()
+		imageView.translatesAutoresizingMaskIntoConstraints = false
+		imageView.widthAnchor.constraint(equalToConstant: 100).isActive = true
+		imageView.heightAnchor.constraint(equalToConstant: 100).isActive = true
+
+	}
+
+	func configure(with message: MessageType, videoUrl url: URL?, at indexPath: IndexPath, and messagesCollectionView: MessagesCollectionView) {
+		super.configure(with: message, at: indexPath, and: messagesCollectionView)
+
+		if let url = url {
+			
+			let thumbnail = Utils.generateThumbnailFromVideo(url: url)
+			imageView.image = thumbnail
+
+
+
+		}
+
+	}
+
+	override func layoutMessageContainerView(with attributes: MessagesCollectionViewLayoutAttributes) {
+		var origin: CGPoint = .zero
+		let videoMessageCellWidth: CGFloat = 150
+		let videoMessageCellHeight: CGFloat = 150
+
+
+		switch attributes.avatarPosition.vertical {
+		case .messageBottom:
+			origin.y = attributes.size.height
+				- attributes.messageContainerPadding.bottom
+				- attributes.cellBottomLabelSize.height
+				- attributes.messageBottomLabelSize.height
+				- videoMessageCellHeight
+				- attributes.messageContainerPadding.top
+		case .messageCenter:
+			if attributes.avatarSize.height > videoMessageCellHeight {
+				let messageHeight = videoMessageCellHeight + 10 // attributes.messageContainerPadding.vertical
+				origin.y = (attributes.size.height / 2) - (messageHeight / 2)
+			} else {
+				fallthrough
+			}
+		default:
+			if attributes.accessoryViewSize.height > videoMessageCellHeight {
+				let messageHeight =  videoMessageCellHeight + 10 //attributes.messageContainerPadding.vertical
+				origin.y = (attributes.size.height / 2) - (messageHeight / 2)
+			} else {
+				origin.y = attributes.cellTopLabelSize.height + attributes.messageTopLabelSize.height + attributes.messageContainerPadding.top
+			}
+		}
+
+		let avatarPadding = attributes.avatarLeadingTrailingPadding
+		switch attributes.avatarPosition.horizontal {
+		case .cellLeading:
+			origin.x = attributes.avatarSize.width + attributes.messageContainerPadding.left + avatarPadding
+		case .cellTrailing:
+			origin.x = attributes.frame.width - attributes.avatarSize.width - videoMessageCellWidth - attributes.messageContainerPadding.right - avatarPadding
+		case .natural:
+			break
+			//fatalError(MessageKitError.avatarPositionUnresolved)
+		}
+
+
+
+
+		messageContainerView.frame = CGRect(origin: origin, size: CGSize(width: videoMessageCellWidth, height: videoMessageCellHeight))
+	}
+}