@@ -833,54 +833,65 @@ class FileDisplayActivity :
833833 downloadedRemotePath : String ,
834834 success : Boolean
835835 ) {
836- val leftFragment = this .leftFragment
837- if (leftFragment is FileDetailFragment ) {
838- val waitedPreview = mWaitingToPreview != null && mWaitingToPreview?.remotePath == downloadedRemotePath
839- val fileInFragment = leftFragment.file
840- if (fileInFragment != null && downloadedRemotePath != fileInFragment.remotePath) {
841- // the user browsed to other file ; forget the automatic preview
842- mWaitingToPreview = null
843- } else if (downloadEvent == FileDownloadEventBroadcaster .ACTION_DOWNLOAD_ENQUEUED ) {
844- // grant that the details fragment updates the progress bar
836+ val leftFragment = this .leftFragment as ? FileDetailFragment ? : return
837+ val fileInFragment = leftFragment.file
838+
839+ if (fileInFragment != null && downloadedRemotePath != fileInFragment.remotePath) {
840+ mWaitingToPreview = null
841+ return
842+ }
843+
844+ when (downloadEvent) {
845+ FileDownloadEventBroadcaster .ACTION_DOWNLOAD_ENQUEUED -> {
845846 leftFragment.listenForTransferProgress()
846847 leftFragment.updateFileDetails(true , false )
847- } else if (downloadEvent == FileDownloadEventBroadcaster .ACTION_DOWNLOAD_COMPLETED ) {
848- // update the details panel
849- var detailsFragmentChanged = false
850- if (waitedPreview) {
851- if (success) {
852- // update the file from database, for the local storage path
853- mWaitingToPreview = mWaitingToPreview?.fileId?.let { storageManager.getFileById(it) }
854-
855- if (PreviewMediaActivity .Companion .canBePreviewed(mWaitingToPreview)) {
856- mWaitingToPreview?.let {
857- startMediaPreview(it, 0 , true , true , true , true )
858- detailsFragmentChanged = true
859- }
860- } else if (MimeTypeUtil .isVCard(mWaitingToPreview?.mimeType)) {
861- startContactListFragment(mWaitingToPreview)
862- detailsFragmentChanged = true
863- } else if (PreviewTextFileFragment .canBePreviewed(mWaitingToPreview)) {
864- startTextPreview(mWaitingToPreview, true )
865- detailsFragmentChanged = true
866- } else if (MimeTypeUtil .isPDF(mWaitingToPreview)) {
867- mWaitingToPreview?.let {
868- startPdfPreview(it)
869- detailsFragmentChanged = true
870- }
871- } else {
872- fileOperationsHelper.openFile(mWaitingToPreview)
873- }
874- }
875- mWaitingToPreview = null
876- }
877- if (! detailsFragmentChanged) {
848+ }
849+
850+ FileDownloadEventBroadcaster .ACTION_DOWNLOAD_COMPLETED -> {
851+ val waitedPreview = mWaitingToPreview?.remotePath == downloadedRemotePath
852+ val previewStarted = waitedPreview && tryStartWaitingPreview(success)
853+ mWaitingToPreview = null
854+ if (! previewStarted) {
878855 leftFragment.updateFileDetails(false , success)
879856 }
880857 }
881858 }
882859 }
883860
861+ private fun tryStartWaitingPreview (success : Boolean ): Boolean {
862+ if (! success) return false
863+
864+ mWaitingToPreview = mWaitingToPreview?.fileId?.let { storageManager.getFileById(it) }
865+ val file = mWaitingToPreview ? : return false
866+
867+ return when {
868+ PreviewMediaActivity .canBePreviewed(file) -> {
869+ startMediaPreview(file, 0 , true , true , true , true )
870+ true
871+ }
872+
873+ MimeTypeUtil .isVCard(file.mimeType) -> {
874+ startContactListFragment(file)
875+ true
876+ }
877+
878+ PreviewTextFileFragment .canBePreviewed(file) -> {
879+ startTextPreview(file, true )
880+ true
881+ }
882+
883+ MimeTypeUtil .isPDF(file) -> {
884+ startPdfPreview(file)
885+ true
886+ }
887+
888+ else -> {
889+ fileOperationsHelper.openFile(file)
890+ false
891+ }
892+ }
893+ }
894+
884895 override fun onPrepareOptionsMenu (menu : Menu ? ): Boolean {
885896 if (mDrawerMenuItemstoShowHideList != null ) {
886897 val drawerOpen = isDrawerOpen
0 commit comments