Browse Source

Fix download action in PreviewMediaFragment

- allow to download file from actions menu
- hide pin to home screen
- fix exception when returning from external player

Signed-off-by: ZetaTom <70907959+ZetaTom@users.noreply.github.com>
ZetaTom 2 years ago
parent
commit
fee634623a

+ 12 - 14
app/src/main/java/com/owncloud/android/ui/preview/PreviewMediaFragment.java

@@ -64,6 +64,7 @@ import com.owncloud.android.databinding.FragmentPreviewMediaBinding;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.datamodel.ThumbnailsCacheManager;
 import com.owncloud.android.files.StreamMediaFileOperation;
+import com.owncloud.android.files.services.FileDownloader;
 import com.owncloud.android.lib.common.OwnCloudClient;
 import com.owncloud.android.lib.common.operations.RemoteOperationResult;
 import com.owncloud.android.lib.common.utils.Log_OC;
@@ -395,7 +396,6 @@ public class PreviewMediaFragment extends FileFragment implements OnTouchListene
                     showFileActions(file);
                 }
             }
-            return true;
         }
         return super.onOptionsItemSelected(item);
     }
@@ -409,7 +409,8 @@ public class PreviewMediaFragment extends FileFragment implements OnTouchListene
                 R.id.action_move,
                 R.id.action_copy,
                 R.id.action_favorite,
-                R.id.action_unset_favorite
+                R.id.action_unset_favorite,
+                R.id.action_pin_to_homescreen
                          ));
         if (getFile() != null && getFile().isSharedWithMe() && !getFile().canReshare()) {
             additionalFilter.add(R.id.action_send_share_file);
@@ -441,6 +442,13 @@ public class PreviewMediaFragment extends FileFragment implements OnTouchListene
                                                                     getContext(),
                                                                     getView(),
                                                                     backgroundJobManager);
+        } else if (itemId == R.id.action_download_file) {
+            if (!containerActivity.getFileDownloaderBinder().isDownloading(user, getFile())) {
+                Intent i = new Intent(requireActivity(), FileDownloader.class);
+                i.putExtra(FileDownloader.EXTRA_USER, user);
+                i.putExtra(FileDownloader.EXTRA_FILE, getFile());
+                requireActivity().startService(i);
+            }
         }
     }
 
@@ -635,7 +643,6 @@ public class PreviewMediaFragment extends FileFragment implements OnTouchListene
     private void openFile() {
         stopPreview(true);
         containerActivity.getFileOperationsHelper().openFile(getFile());
-        finishPreview();
     }
 
     /**
@@ -653,17 +660,8 @@ public class PreviewMediaFragment extends FileFragment implements OnTouchListene
         if (MimeTypeUtil.isAudio(file) && stopAudio) {
             mediaPlayerServiceConnection.pause();
         } else if (MimeTypeUtil.isVideo(file)) {
-            exoPlayer.stop(true);
-        }
-    }
-
-    /**
-     * Finishes the preview
-     */
-    private void finishPreview() {
-        final Activity activity = getActivity();
-        if (activity != null) {
-            activity.onBackPressed();
+            exoPlayer.stop();
+            exoPlayer.clearMediaItems();
         }
     }