X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/2f1aaa8b15cac2e5fe8fdae3b9a3d5214d7df2f0..d7c7ccd99b6761b95f48e98b3ce8b6c9a91824b1:/src/com/owncloud/android/ui/preview/PreviewMediaFragment.java diff --git a/src/com/owncloud/android/ui/preview/PreviewMediaFragment.java b/src/com/owncloud/android/ui/preview/PreviewMediaFragment.java index 491e2d21..164fe04a 100644 --- a/src/com/owncloud/android/ui/preview/PreviewMediaFragment.java +++ b/src/com/owncloud/android/ui/preview/PreviewMediaFragment.java @@ -2,9 +2,8 @@ * Copyright (C) 2012-2013 ownCloud Inc. * * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. + * it under the terms of the GNU General Public License version 2, + * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -30,16 +29,17 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.ServiceConnection; +import android.content.res.Configuration; import android.media.MediaPlayer; import android.media.MediaPlayer.OnCompletionListener; import android.media.MediaPlayer.OnErrorListener; import android.media.MediaPlayer.OnPreparedListener; import android.net.Uri; +import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.IBinder; import android.support.v4.app.FragmentTransaction; -import android.util.Log; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; @@ -47,7 +47,6 @@ import android.view.View.OnTouchListener; import android.view.ViewGroup; import android.webkit.MimeTypeMap; import android.widget.ImageView; -import android.widget.MediaController; import android.widget.Toast; import android.widget.VideoView; @@ -57,24 +56,21 @@ import com.actionbarsherlock.view.MenuInflater; import com.actionbarsherlock.view.MenuItem; import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.datamodel.OCFile; +import com.owncloud.android.media.MediaControlView; import com.owncloud.android.media.MediaService; import com.owncloud.android.media.MediaServiceBinder; -import com.owncloud.android.network.OwnCloudClientUtils; import com.owncloud.android.operations.OnRemoteOperationListener; import com.owncloud.android.operations.RemoteOperation; import com.owncloud.android.operations.RemoteOperationResult; import com.owncloud.android.operations.RemoveFileOperation; import com.owncloud.android.ui.activity.FileDetailActivity; import com.owncloud.android.ui.activity.FileDisplayActivity; -import com.owncloud.android.ui.activity.TransferServiceGetter; import com.owncloud.android.ui.fragment.ConfirmationDialogFragment; import com.owncloud.android.ui.fragment.FileDetailFragment; import com.owncloud.android.ui.fragment.FileFragment; -import com.owncloud.android.ui.fragment.ConfirmationDialogFragment.ConfirmationDialogFragmentListener; -import com.owncloud.android.ui.fragment.FileFragment.ContainerActivity; +import com.owncloud.android.Log_OC; import com.owncloud.android.R; -import eu.alefzero.webdav.WebdavClient; import eu.alefzero.webdav.WebdavUtils; /** @@ -93,6 +89,7 @@ public class PreviewMediaFragment extends SherlockFragment implements public static final String EXTRA_FILE = "FILE"; public static final String EXTRA_ACCOUNT = "ACCOUNT"; private static final String EXTRA_PLAY_POSITION = "PLAY_POSITION"; + private static final String EXTRA_PLAYING = "PLAYING"; private View mView; private OCFile mFile; @@ -106,9 +103,11 @@ public class PreviewMediaFragment extends SherlockFragment implements private RemoteOperation mLastRemoteOperation; private MediaServiceBinder mMediaServiceBinder = null; - private MediaController mMediaController = null; + private MediaControlView mMediaController = null; private MediaServiceConnection mMediaServiceConnection = null; private VideoHelper mVideoHelper; + private boolean mAutoplay; + public boolean mPrepared; private static final String TAG = PreviewMediaFragment.class.getSimpleName(); @@ -121,11 +120,12 @@ public class PreviewMediaFragment extends SherlockFragment implements * @param fileToDetail An {@link OCFile} to preview in the fragment * @param ocAccount An ownCloud account; needed to start downloads */ - public PreviewMediaFragment(OCFile fileToDetail, Account ocAccount) { + public PreviewMediaFragment(OCFile fileToDetail, Account ocAccount, int startPlaybackPosition, boolean autoplay) { mFile = fileToDetail; mAccount = ocAccount; - mSavedPlaybackPosition = 0; + mSavedPlaybackPosition = startPlaybackPosition; mStorageManager = null; // we need a context to init this; the container activity is not available yet at this moment + mAutoplay = autoplay; } @@ -141,6 +141,7 @@ public class PreviewMediaFragment extends SherlockFragment implements mAccount = null; mSavedPlaybackPosition = 0; mStorageManager = null; + mAutoplay = true; } @@ -162,14 +163,17 @@ public class PreviewMediaFragment extends SherlockFragment implements public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState); + Log_OC.e(TAG, "onCreateView"); + mView = inflater.inflate(R.layout.file_preview, container, false); mImagePreview = (ImageView)mView.findViewById(R.id.image_preview); - mImagePreview.setOnTouchListener(this); mVideoPreview = (VideoView)mView.findViewById(R.id.video_preview); + mVideoPreview.setOnTouchListener(this); + + mMediaController = (MediaControlView)mView.findViewById(R.id.media_controller); - //updateFileDetails(false); return mView; } @@ -180,6 +184,8 @@ public class PreviewMediaFragment extends SherlockFragment implements @Override public void onAttach(Activity activity) { super.onAttach(activity); + Log_OC.e(TAG, "onAttach"); + if (!(activity instanceof FileFragment.ContainerActivity)) throw new ClassCastException(activity.toString() + " must implement " + FileFragment.ContainerActivity.class.getSimpleName()); } @@ -191,12 +197,14 @@ public class PreviewMediaFragment extends SherlockFragment implements @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); + Log_OC.e(TAG, "onActivityCreated"); mStorageManager = new FileDataStorageManager(mAccount, getActivity().getApplicationContext().getContentResolver()); if (savedInstanceState != null) { mFile = savedInstanceState.getParcelable(PreviewMediaFragment.EXTRA_FILE); mAccount = savedInstanceState.getParcelable(PreviewMediaFragment.EXTRA_ACCOUNT); mSavedPlaybackPosition = savedInstanceState.getInt(PreviewMediaFragment.EXTRA_PLAY_POSITION); + mAutoplay = savedInstanceState.getBoolean(PreviewMediaFragment.EXTRA_PLAYING); } if (mFile == null) { @@ -227,12 +235,19 @@ public class PreviewMediaFragment extends SherlockFragment implements @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); + Log_OC.e(TAG, "onSaveInstanceState"); outState.putParcelable(PreviewMediaFragment.EXTRA_FILE, mFile); outState.putParcelable(PreviewMediaFragment.EXTRA_ACCOUNT, mAccount); - if (mVideoPreview.isPlaying()) { - outState.putInt(PreviewMediaFragment.EXTRA_PLAY_POSITION , mVideoPreview.getCurrentPosition()); + if (mFile.isVideo()) { + mSavedPlaybackPosition = mVideoPreview.getCurrentPosition(); + mAutoplay = mVideoPreview.isPlaying(); + outState.putInt(PreviewMediaFragment.EXTRA_PLAY_POSITION , mSavedPlaybackPosition); + outState.putBoolean(PreviewMediaFragment.EXTRA_PLAYING , mAutoplay); + } else { + outState.putInt(PreviewMediaFragment.EXTRA_PLAY_POSITION , mMediaServiceBinder.getCurrentPosition()); + outState.putBoolean(PreviewMediaFragment.EXTRA_PLAYING , mMediaServiceBinder.isPlaying()); } } @@ -240,18 +255,27 @@ public class PreviewMediaFragment extends SherlockFragment implements @Override public void onStart() { super.onStart(); + Log_OC.e(TAG, "onStart"); if (mFile != null) { if (mFile.isAudio()) { bindMediaService(); } else if (mFile.isVideo()) { + stopAudio(); playVideo(); } } } + private void stopAudio() { + Intent i = new Intent(getSherlockActivity(), MediaService.class); + i.setAction(MediaService.ACTION_STOP_ALL); + getSherlockActivity().startService(i); + } + + /** * {@inheritDoc} */ @@ -266,6 +290,7 @@ public class PreviewMediaFragment extends SherlockFragment implements toHide.add(R.id.action_cancel_download); toHide.add(R.id.action_cancel_upload); toHide.add(R.id.action_download_file); + toHide.add(R.id.action_sync_file); toHide.add(R.id.action_rename_file); // by now for (int i : toHide) { @@ -319,14 +344,11 @@ public class PreviewMediaFragment extends SherlockFragment implements } private void playVideo() { - // load the video file in the video player ; when done, VideoHelper#onPrepared() will be called - mVideoPreview.setVideoPath(mFile.getStoragePath()); - // create and prepare control panel for the user - mMediaController = new MediaController(getActivity()); mMediaController.setMediaPlayer(mVideoPreview); - mMediaController.setAnchorView(mVideoPreview); - mVideoPreview.setMediaController(mMediaController); + + // load the video file in the video player ; when done, VideoHelper#onPrepared() will be called + mVideoPreview.setVideoPath(mFile.getStoragePath()); } @@ -341,9 +363,14 @@ public class PreviewMediaFragment extends SherlockFragment implements */ @Override public void onPrepared(MediaPlayer vp) { + Log_OC.e(TAG, "onPrepared"); mVideoPreview.seekTo(mSavedPlaybackPosition); - mVideoPreview.start(); - mMediaController.show(MediaService.MEDIA_CONTROL_SHORT_LIFE); + if (mAutoplay) { + mVideoPreview.start(); + } + mMediaController.setEnabled(true); + mMediaController.updatePausePlay(); + mPrepared = true; } @@ -356,7 +383,24 @@ public class PreviewMediaFragment extends SherlockFragment implements */ @Override public void onCompletion(MediaPlayer mp) { - // nothing, right now + Log_OC.e(TAG, "completed"); + if (mp != null) { + mVideoPreview.seekTo(0); + // next lines are necessary to work around undesired video loops + if (Build.VERSION.SDK_INT == Build.VERSION_CODES.GINGERBREAD) { + mVideoPreview.pause(); + + } else if (Build.VERSION.SDK_INT == Build.VERSION_CODES.GINGERBREAD_MR1) { + // mVideePreview.pause() is not enough + + mMediaController.setEnabled(false); + mVideoPreview.stopPlayback(); + mAutoplay = false; + mSavedPlaybackPosition = 0; + mVideoPreview.setVideoPath(mFile.getStoragePath()); + } + } // else : called from onError() + mMediaController.updatePausePlay(); } @@ -369,12 +413,6 @@ public class PreviewMediaFragment extends SherlockFragment implements */ @Override public boolean onError(MediaPlayer mp, int what, int extra) { - Log.e(TAG, "Error in video playback, what = " + what + ", extra = " + extra); - - if (mMediaController != null) { - mMediaController.hide(); - } - if (mVideoPreview.getWindowToken() != null) { String message = MediaService.getMessageForMediaError(getActivity(), what, extra); new AlertDialog.Builder(getActivity()) @@ -396,219 +434,92 @@ public class PreviewMediaFragment extends SherlockFragment implements @Override + public void onPause() { + super.onPause(); + Log_OC.e(TAG, "onPause"); + } + + @Override public void onResume() { super.onResume(); - /* - mDownloadFinishReceiver = new DownloadFinishReceiver(); - IntentFilter filter = new IntentFilter( - FileDownloader.DOWNLOAD_FINISH_MESSAGE); - getActivity().registerReceiver(mDownloadFinishReceiver, filter); - - mUploadFinishReceiver = new UploadFinishReceiver(); - filter = new IntentFilter(FileUploader.UPLOAD_FINISH_MESSAGE); - getActivity().registerReceiver(mUploadFinishReceiver, filter); - */ - + Log_OC.e(TAG, "onResume"); } - - + @Override - public void onPause() { - super.onPause(); - /* - if (mVideoPreview.getVisibility() == View.VISIBLE) { - mSavedPlaybackPosition = mVideoPreview.getCurrentPosition(); - }*/ - /* - getActivity().unregisterReceiver(mDownloadFinishReceiver); - mDownloadFinishReceiver = null; - - getActivity().unregisterReceiver(mUploadFinishReceiver); - mUploadFinishReceiver = null; - */ + public void onDestroy() { + super.onDestroy(); + Log_OC.e(TAG, "onDestroy"); } - - + @Override public void onStop() { + Log_OC.e(TAG, "onStop"); super.onStop(); + + mPrepared = false; if (mMediaServiceConnection != null) { - Log.d(TAG, "Unbinding from MediaService ..."); + Log_OC.d(TAG, "Unbinding from MediaService ..."); if (mMediaServiceBinder != null && mMediaController != null) { mMediaServiceBinder.unregisterMediaController(mMediaController); } getActivity().unbindService(mMediaServiceConnection); mMediaServiceConnection = null; mMediaServiceBinder = null; - if (mMediaController != null) { - mMediaController.hide(); - mMediaController = null; - } } } @Override - public void onDestroy() { - super.onDestroy(); + public boolean onTouch(View v, MotionEvent event) { + if (event.getAction() == MotionEvent.ACTION_DOWN && v == mVideoPreview) { + startFullScreenVideo(); + return true; + } + return false; } + - /* - @Override - public View getView() { - return super.getView() == null ? mView : super.getView(); + private void startFullScreenVideo() { + Intent i = new Intent(getActivity(), PreviewVideoActivity.class); + i.putExtra(PreviewVideoActivity.EXTRA_ACCOUNT, mAccount); + i.putExtra(PreviewVideoActivity.EXTRA_FILE, mFile); + i.putExtra(PreviewVideoActivity.EXTRA_AUTOPLAY, mVideoPreview.isPlaying()); + mVideoPreview.pause(); + i.putExtra(PreviewVideoActivity.EXTRA_START_POSITION, mVideoPreview.getCurrentPosition()); + startActivityForResult(i, 0); } - */ - /* @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.fdDownloadBtn: { - FileDownloaderBinder downloaderBinder = mContainerActivity.getFileDownloaderBinder(); - FileUploaderBinder uploaderBinder = mContainerActivity.getFileUploaderBinder(); - if (downloaderBinder != null && downloaderBinder.isDownloading(mAccount, mFile)) { - downloaderBinder.cancel(mAccount, mFile); - if (mFile.isDown()) { - setButtonsForDown(); - } else { - setButtonsForRemote(); - } - - } else if (uploaderBinder != null && uploaderBinder.isUploading(mAccount, mFile)) { - uploaderBinder.cancel(mAccount, mFile); - if (!mFile.fileExists()) { - // TODO make something better - if (getActivity() instanceof FileDisplayActivity) { - // double pane - FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction(); - transaction.replace(R.id.file_details_container, new PreviewMediaFragment(null, null), FTAG); // empty FileDetailFragment - transaction.commit(); - mContainerActivity.onFileStateChanged(); - } else { - getActivity().finish(); - } - - } else if (mFile.isDown()) { - setButtonsForDown(); - } else { - setButtonsForRemote(); - } - - } else { - mLastRemoteOperation = new SynchronizeFileOperation(mFile, null, mStorageManager, mAccount, true, false, getActivity()); - WebdavClient wc = OwnCloudClientUtils.createOwnCloudClient(mAccount, getSherlockActivity().getApplicationContext()); - mLastRemoteOperation.execute(wc, this, mHandler); - - // update ui - boolean inDisplayActivity = getActivity() instanceof FileDisplayActivity; - getActivity().showDialog((inDisplayActivity)? FileDisplayActivity.DIALOG_SHORT_WAIT : FileDetailActivity.DIALOG_SHORT_WAIT); - setButtonsForTransferring(); // disable button immediately, although the synchronization does not result in a file transference - - } - break; - } - case R.id.fdKeepInSync: { - CheckBox cb = (CheckBox) getView().findViewById(R.id.fdKeepInSync); - mFile.setKeepInSync(cb.isChecked()); - mStorageManager.saveFile(mFile); - - /// register the OCFile instance in the observer service to monitor local updates; - /// if necessary, the file is download - Intent intent = new Intent(getActivity().getApplicationContext(), - FileObserverService.class); - intent.putExtra(FileObserverService.KEY_FILE_CMD, - (cb.isChecked()? - FileObserverService.CMD_ADD_OBSERVED_FILE: - FileObserverService.CMD_DEL_OBSERVED_FILE)); - intent.putExtra(FileObserverService.KEY_CMD_ARG_FILE, mFile); - intent.putExtra(FileObserverService.KEY_CMD_ARG_ACCOUNT, mAccount); - Log.e(TAG, "starting observer service"); - getActivity().startService(intent); - - if (mFile.keepInSync()) { - onClick(getView().findViewById(R.id.fdDownloadBtn)); // force an immediate synchronization - } - break; - } - case R.id.fdRenameBtn: { - EditNameDialog dialog = EditNameDialog.newInstance(getString(R.string.rename_dialog_title), mFile.getFileName(), this); - dialog.show(getFragmentManager(), "nameeditdialog"); - break; - } - case R.id.fdRemoveBtn: { - ConfirmationDialogFragment confDialog = ConfirmationDialogFragment.newInstance( - R.string.confirmation_remove_alert, - new String[]{mFile.getFileName()}, - mFile.isDown() ? R.string.confirmation_remove_remote_and_local : R.string.confirmation_remove_remote, - mFile.isDown() ? R.string.confirmation_remove_local : -1, - R.string.common_cancel); - confDialog.setOnConfirmationListener(this); - mCurrentDialog = confDialog; - mCurrentDialog.show(getFragmentManager(), FTAG_CONFIRMATION); - break; - } - case R.id.fdOpenBtn: { - openFile(); - break; - } - default: - Log.e(TAG, "Incorrect view clicked!"); - } - + public void onConfigurationChanged (Configuration newConfig) { + Log_OC.e(TAG, "onConfigurationChanged " + this); } - */ - @Override - public boolean onTouch(View v, MotionEvent event) { - if (event.getAction() == MotionEvent.ACTION_DOWN) { - if (v == mImagePreview && - mMediaServiceBinder != null && mFile.isAudio() && mMediaServiceBinder.isPlaying(mFile)) { - toggleMediaController(MediaService.MEDIA_CONTROL_PERMANENT); - return true; - - } else if (v == mVideoPreview) { - toggleMediaController(MediaService.MEDIA_CONTROL_SHORT_LIFE); - return true; - } + public void onActivityResult (int requestCode, int resultCode, Intent data) { + Log_OC.e(TAG, "onActivityResult " + this); + super.onActivityResult(requestCode, resultCode, data); + if (resultCode == Activity.RESULT_OK) { + mSavedPlaybackPosition = data.getExtras().getInt(PreviewVideoActivity.EXTRA_START_POSITION); + mAutoplay = data.getExtras().getBoolean(PreviewVideoActivity.EXTRA_AUTOPLAY); } - return false; } - - private void toggleMediaController(int time) { - if (mMediaController.isShowing()) { - mMediaController.hide(); - } else { - mMediaController.show(time); - } - } - private void playAudio() { if (!mMediaServiceBinder.isPlaying(mFile)) { - Log.d(TAG, "starting playback of " + mFile.getStoragePath()); - mMediaServiceBinder.start(mAccount, mFile); + Log_OC.d(TAG, "starting playback of " + mFile.getStoragePath()); + mMediaServiceBinder.start(mAccount, mFile, mAutoplay, mSavedPlaybackPosition); } else { - if (!mMediaServiceBinder.isPlaying()) { + if (!mMediaServiceBinder.isPlaying() && mAutoplay) { mMediaServiceBinder.start(); - } - if (!mMediaController.isShowing() && isVisible()) { - mMediaController.show(MediaService.MEDIA_CONTROL_PERMANENT); - // TODO - fix strange bug; steps to trigger : - // 1. remove the "isVisible()" control - // 2. start the app and preview an audio file - // 3. exit from the app (home button, for instance) while the audio file is still being played - // 4. go to notification bar and click on the "ownCloud music app" notification - // PUM! + mMediaController.updatePausePlay(); } } } private void bindMediaService() { - Log.d(TAG, "Binding to MediaService..."); + Log_OC.d(TAG, "Binding to MediaService..."); if (mMediaServiceConnection == null) { mMediaServiceConnection = new MediaServiceConnection(); } @@ -625,38 +536,37 @@ public class PreviewMediaFragment extends SherlockFragment implements @Override public void onServiceConnected(ComponentName component, IBinder service) { if (component.equals(new ComponentName(getActivity(), MediaService.class))) { - Log.d(TAG, "Media service connected"); + Log_OC.d(TAG, "Media service connected"); mMediaServiceBinder = (MediaServiceBinder) service; if (mMediaServiceBinder != null) { - if (mMediaController == null) { - mMediaController = new MediaController(getSherlockActivity()); - } prepareMediaController(); playAudio(); // do not wait for the touch of nobody to play audio - Log.d(TAG, "Successfully bound to MediaService, MediaController ready"); + Log_OC.d(TAG, "Successfully bound to MediaService, MediaController ready"); } else { - Log.e(TAG, "Unexpected response from MediaService while binding"); + Log_OC.e(TAG, "Unexpected response from MediaService while binding"); } } } - + private void prepareMediaController() { mMediaServiceBinder.registerMediaController(mMediaController); - mMediaController.setMediaPlayer(mMediaServiceBinder); - mMediaController.setAnchorView(getView()); - mMediaController.setEnabled(mMediaServiceBinder.isInPlaybackState()); + if (mMediaController != null) { + mMediaController.setMediaPlayer(mMediaServiceBinder); + mMediaController.setEnabled(true); + mMediaController.updatePausePlay(); + } } @Override public void onServiceDisconnected(ComponentName component) { if (component.equals(new ComponentName(getActivity(), MediaService.class))) { - Log.e(TAG, "Media service suddenly disconnected"); + Log_OC.e(TAG, "Media service suddenly disconnected"); if (mMediaController != null) { - mMediaController.hide(); mMediaController.setMediaPlayer(null); - mMediaController = null; + } else { + Toast.makeText(getActivity(), "No media controller to release when disconnected from media service", Toast.LENGTH_SHORT).show(); } mMediaServiceBinder = null; mMediaServiceConnection = null; @@ -684,7 +594,7 @@ public class PreviewMediaFragment extends SherlockFragment implements startActivity(i); } catch (Throwable t) { - Log.e(TAG, "Fail when trying to open with the mimeType provided from the ownCloud server: " + mFile.getMimetype()); + Log_OC.e(TAG, "Fail when trying to open with the mimeType provided from the ownCloud server: " + mFile.getMimetype()); boolean toastIt = true; String mimeType = ""; try { @@ -703,13 +613,13 @@ public class PreviewMediaFragment extends SherlockFragment implements } } catch (IndexOutOfBoundsException e) { - Log.e(TAG, "Trying to find out MIME type of a file without extension: " + storagePath); + Log_OC.e(TAG, "Trying to find out MIME type of a file without extension: " + storagePath); } catch (ActivityNotFoundException e) { - Log.e(TAG, "No activity found to handle: " + storagePath + " with MIME type " + mimeType + " obtained from extension"); + Log_OC.e(TAG, "No activity found to handle: " + storagePath + " with MIME type " + mimeType + " obtained from extension"); } catch (Throwable th) { - Log.e(TAG, "Unexpected problem when opening: " + storagePath, th); + Log_OC.e(TAG, "Unexpected problem when opening: " + storagePath, th); } finally { if (toastIt) { @@ -749,8 +659,7 @@ public class PreviewMediaFragment extends SherlockFragment implements mLastRemoteOperation = new RemoveFileOperation( mFile, // TODO we need to review the interface with RemoteOperations, and use OCFile IDs instead of OCFile objects as parameters true, mStorageManager); - WebdavClient wc = OwnCloudClientUtils.createOwnCloudClient(mAccount, getSherlockActivity().getApplicationContext()); - mLastRemoteOperation.execute(wc, this, mHandler); + mLastRemoteOperation.execute(mAccount, getSherlockActivity(), this, mHandler, getSherlockActivity()); boolean inDisplayActivity = getActivity() instanceof FileDisplayActivity; getActivity().showDialog((inDisplayActivity)? FileDisplayActivity.DIALOG_SHORT_WAIT : FileDetailActivity.DIALOG_SHORT_WAIT); @@ -811,29 +720,6 @@ public class PreviewMediaFragment extends SherlockFragment implements /** - * Interface to implement by any Activity that includes some instance of FileDetailFragment - * - * @author David A. Velasco - */ - public interface ContainerActivity extends TransferServiceGetter { - - /** - * Callback method invoked when the detail fragment wants to notice its container - * activity about a relevant state the file shown by the fragment. - * - * Added to notify to FileDisplayActivity about the need of refresh the files list. - * - * Currently called when: - * - a download is started; - * - a rename is completed; - * - a deletion is completed; - * - the 'inSync' flag is changed; - */ - public void onFileStateChanged(); - - } - - /** * Helper method to test if an {@link OCFile} can be passed to a {@link PreviewMediaFragment} to be previewed. * * @param file File to test if can be previewed. @@ -874,9 +760,6 @@ public class PreviewMediaFragment extends SherlockFragment implements } private void stopPreview(boolean stopAudio) { - if (mMediaController != null) { - mMediaController.hide(); - } if (mFile.isAudio() && stopAudio) { mMediaServiceBinder.pause(); @@ -902,5 +785,21 @@ public class PreviewMediaFragment extends SherlockFragment implements container.finish(); } } + + + public int getPosition() { + if (mPrepared) { + mSavedPlaybackPosition = mVideoPreview.getCurrentPosition(); + } + Log_OC.e(TAG, "getting position: " + mSavedPlaybackPosition); + return mSavedPlaybackPosition; + } + + public boolean isPlaying() { + if (mPrepared) { + mAutoplay = mVideoPreview.isPlaying(); + } + return mAutoplay; + } }