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