Fix QLPreviewController

This commit is contained in:
Benoit Martins 2023-03-30 12:09:11 +02:00 committed by QuentinArguillere
parent e7f9c24309
commit 346e84615f
6 changed files with 67 additions and 18 deletions

View file

@ -20,6 +20,9 @@ class ChatConversationTableViewModel: ControlsViewModel {
var refreshIndexPath = MutableLiveData<Int>(0)
var onClickIndexPath = MutableLiveData<Int>(0)
var onClickMessageIndexPath = 0
override init() {
super.init()
}
@ -72,4 +75,9 @@ class ChatConversationTableViewModel: ControlsViewModel {
func reloadCollectionViewCell(){
refreshIndexPath.value! += 1
}
func onGridClick(indexMessage: Int, index :Int){
onClickMessageIndexPath = indexMessage
onClickIndexPath.value! = index
}
}

View file

@ -35,6 +35,7 @@ class ChatConversationTableViewSwift: UIViewController, UICollectionViewDataSour
var floatingScrollBackground : UIButton?
var previewItems : [QLPreviewItem?] = []
var afterPreviewIndex = -1
override func viewDidLoad() {
super.viewDidLoad()
@ -52,6 +53,10 @@ class ChatConversationTableViewSwift: UIViewController, UICollectionViewDataSour
self.collectionView.reloadData()
}
ChatConversationTableViewModel.sharedModel.onClickIndexPath.observe { index in
self.onGridClick(indexMessage: ChatConversationTableViewModel.sharedModel.onClickMessageIndexPath, index: index!)
}
collectionView.isUserInteractionEnabled = true
}
@ -204,22 +209,6 @@ class ChatConversationTableViewSwift: UIViewController, UICollectionViewDataSour
self.onImageClick(chatMessage: event.chatMessage!)
}
}
/*
if (!cell.collectionViewImagesGrid.isHidden){
cell.onClick {
let previewController = QLPreviewController()
self.previewItems = []
event.chatMessage?.contents.forEach({ content in
self.previewItems.append(self.getPreviewItem(filePath: (content.filePath)))
})
previewController.currentPreviewItemIndex = 0
previewController.dataSource = self
self.present(previewController, animated: true, completion: nil)
}
}
*/
}
@ -445,13 +434,21 @@ class ChatConversationTableViewSwift: UIViewController, UICollectionViewDataSour
return (previewItems[index] as QLPreviewItem?)!
}
func previewControllerDidDismiss(_ controller: QLPreviewController) {
print("ChatConversationTableViewSwift controller \(afterPreviewIndex)")
if afterPreviewIndex > -1 {
collectionView.scrollToItem(at: IndexPath(row: afterPreviewIndex, section: 0), at: .centeredVertically, animated: false)
}
}
func onImageClick(chatMessage: ChatMessage) {
let state = chatMessage.state
if (state.rawValue == LinphoneChatMessageStateNotDelivered.rawValue) {
print("Messsage not delivered")
} else {
if VFSUtil.vfsEnabled(groupName: kLinphoneMsgNotificationAppGroupId){
if (VFSUtil.vfsEnabled(groupName: kLinphoneMsgNotificationAppGroupId) || ConfigManager.instance().lpConfigBoolForKey(key: "use_in_app_file_viewer_for_non_encrypted_files", section: "app")){
let view: ImageView = VIEW(ImageView.compositeViewDescription())
let image = UIImage(contentsOfFile: chatMessage.contents.first!.filePath)
PhoneMainView.instance().changeCurrentView(view.compositeViewDescription())
@ -461,10 +458,43 @@ class ChatConversationTableViewSwift: UIViewController, UICollectionViewDataSour
self.previewItems = []
self.previewItems.append(self.getPreviewItem(filePath: (chatMessage.contents.first?.filePath)!))
afterPreviewIndex = 0
previewController.currentPreviewItemIndex = 0
previewController.dataSource = self
self.present(previewController, animated: true, completion: nil)
previewController.delegate = self
previewController.reloadData()
PhoneMainView.instance().mainViewController.present(previewController, animated: true, completion: nil)
}
}
}
func onGridClick(indexMessage: Int, index: Int) {
let chatMessage = ChatConversationTableViewModel.sharedModel.getMessage(index: indexMessage)?.chatMessage
let state = chatMessage!.state
if (state.rawValue == LinphoneChatMessageStateNotDelivered.rawValue) {
print("Messsage not delivered")
} else {
if (VFSUtil.vfsEnabled(groupName: kLinphoneMsgNotificationAppGroupId) || ConfigManager.instance().lpConfigBoolForKey(key: "use_in_app_file_viewer_for_non_encrypted_files", section: "app")){
let view: ImageView = VIEW(ImageView.compositeViewDescription())
let image = UIImage(contentsOfFile: chatMessage!.contents[index].filePath)
PhoneMainView.instance().changeCurrentView(view.compositeViewDescription())
view.image = image
} else {
let previewController = QLPreviewController()
self.previewItems = []
chatMessage?.contents.forEach({ content in
self.previewItems.append(self.getPreviewItem(filePath: (content.filePath)))
})
afterPreviewIndex = indexMessage
previewController.dataSource = self
previewController.currentPreviewItemIndex = index
previewController.delegate = self
PhoneMainView.instance().mainViewController.present(previewController, animated: true, completion: nil)
}
}
}
}

View file

@ -132,6 +132,8 @@ class MultilineMessageCell: UICollectionViewCell, UICollectionViewDataSource, UI
var indexTransferProgress: Int = -1
var indexUploadTransferProgress: Int = -1
var selfIndexMessage: Int = -1
override init(frame: CGRect) {
super.init(frame: frame)
@ -561,6 +563,7 @@ class MultilineMessageCell: UICollectionViewCell, UICollectionViewDataSource, UI
}
func configure(event: EventLog, selfIndexPathConfigure: IndexPath) {
selfIndexMessage = selfIndexPathConfigure.row
chatMessage = event.chatMessage
addMessageDelegate()
if event.chatMessage != nil {
@ -1126,6 +1129,11 @@ class MultilineMessageCell: UICollectionViewCell, UICollectionViewDataSource, UI
uploadContentCollection.append(uploadView)
uploadView.content = chatMessage?.contents[indexPath.row]
uploadView.size(w: 138, h: 138).done()
viewCell.onClick {
ChatConversationTableViewModel.sharedModel.onGridClick(indexMessage: self.selfIndexMessage, index: indexPath.row)
}
viewCell.addSubview(uploadView)
}

View file

@ -18,6 +18,7 @@ auto_download_incoming_files_max_size=0
lime_migration_done=0
use_rls_presence=1
use_callkit=1
use_in_app_file_viewer_for_non_encrypted_files=0
unexpected_pushkit=0
force_lime_chat_rooms=0
disable_chat_feature=0

View file

@ -24,6 +24,7 @@ publish_presence=0
backgroundmode_preference=1
use_rls_presence=1
use_callkit=1
use_in_app_file_viewer_for_non_encrypted_files=0
accept_early_media=0

View file

@ -14,6 +14,7 @@ stun_preference=stun.linphone.org
voiceproc_preference=1
repeat_call_notification=1
use_callkit=1
use_in_app_file_viewer_for_non_encrypted_files=0
unexpected_pushkit=0
[default_values]