X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/24dd513682cff1f55f7391bab4fb5a8d2ab266a6..6d4ce68a81abaf0e37998ee9913986d6c2ebf1cc:/src/com/owncloud/android/ui/fragment/FileDetailFragment.java diff --git a/src/com/owncloud/android/ui/fragment/FileDetailFragment.java b/src/com/owncloud/android/ui/fragment/FileDetailFragment.java index eca461c5..2735e5ee 100644 --- a/src/com/owncloud/android/ui/fragment/FileDetailFragment.java +++ b/src/com/owncloud/android/ui/fragment/FileDetailFragment.java @@ -29,7 +29,6 @@ import org.apache.commons.httpclient.params.HttpConnectionManagerParams; import org.apache.http.HttpStatus; import org.apache.http.NameValuePair; import org.apache.http.client.utils.URLEncodedUtils; -import org.apache.http.entity.FileEntity; import org.apache.http.message.BasicNameValuePair; import org.apache.http.protocol.HTTP; import org.apache.jackrabbit.webdav.client.methods.PropFindMethod; @@ -37,7 +36,6 @@ import org.json.JSONObject; import android.accounts.Account; import android.accounts.AccountManager; -import android.annotation.SuppressLint; import android.app.Activity; import android.content.ActivityNotFoundException; import android.content.BroadcastReceiver; @@ -46,27 +44,17 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.ServiceConnection; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.BitmapFactory.Options; -import android.graphics.Point; import android.net.Uri; -import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; import android.os.IBinder; -import android.support.v4.app.DialogFragment; import android.support.v4.app.FragmentTransaction; import android.util.Log; -import android.view.Display; import android.view.LayoutInflater; -import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; -import android.view.View.OnTouchListener; import android.view.ViewGroup; import android.webkit.MimeTypeMap; -import android.webkit.WebView.FindListener; import android.widget.Button; import android.widget.CheckBox; import android.widget.ImageView; @@ -74,7 +62,6 @@ import android.widget.MediaController; import android.widget.ProgressBar; import android.widget.TextView; import android.widget.Toast; -import android.widget.VideoView; import com.actionbarsherlock.app.SherlockFragment; import com.owncloud.android.AccountUtils; @@ -100,9 +87,7 @@ import com.owncloud.android.operations.SynchronizeFileOperation; import com.owncloud.android.ui.activity.ConflictsResolveActivity; import com.owncloud.android.ui.activity.FileDetailActivity; import com.owncloud.android.ui.activity.FileDisplayActivity; -import com.owncloud.android.ui.OnSwipeTouchListener; -import com.owncloud.android.ui.activity.TransferServiceGetter; -import com.owncloud.android.ui.activity.VideoActivity; +import com.owncloud.android.ui.activity.PreviewVideoActivity; import com.owncloud.android.ui.dialog.EditNameDialog; import com.owncloud.android.ui.dialog.EditNameDialog.EditNameDialogListener; import com.owncloud.android.utils.OwnCloudVersion; @@ -137,6 +122,7 @@ public class FileDetailFragment extends SherlockFragment implements private DownloadFinishReceiver mDownloadFinishReceiver; private UploadFinishReceiver mUploadFinishReceiver; + public ProgressListener mProgressListener; private Handler mHandler; private RemoteOperation mLastRemoteOperation; @@ -160,6 +146,7 @@ public class FileDetailFragment extends SherlockFragment implements mAccount = null; mStorageManager = null; mLayout = R.layout.file_details_empty; + mProgressListener = null; } @@ -176,6 +163,7 @@ public class FileDetailFragment extends SherlockFragment implements mAccount = ocAccount; mStorageManager = null; // we need a context to init this; the container activity is not available yet at this moment mLayout = R.layout.file_details_empty; + mProgressListener = null; } @@ -211,6 +199,8 @@ public class FileDetailFragment extends SherlockFragment implements mView.findViewById(R.id.fdOpenBtn).setOnClickListener(this); mView.findViewById(R.id.fdRemoveBtn).setOnClickListener(this); //mView.findViewById(R.id.fdShareBtn).setOnClickListener(this); + ProgressBar progressBar = (ProgressBar)mView.findViewById(R.id.fdProgressBar); + mProgressListener = new ProgressListener(progressBar); } updateFileDetails(false); @@ -241,18 +231,15 @@ public class FileDetailFragment extends SherlockFragment implements super.onActivityCreated(savedInstanceState); if (mAccount != null) { mStorageManager = new FileDataStorageManager(mAccount, getActivity().getApplicationContext().getContentResolver());; - mView.setOnTouchListener(new OnSwipeTouchListener(getActivity())); } } @Override public void onSaveInstanceState(Bundle outState) { - Log.i(getClass().toString(), "onSaveInstanceState() start"); super.onSaveInstanceState(outState); outState.putParcelable(FileDetailFragment.EXTRA_FILE, mFile); outState.putParcelable(FileDetailFragment.EXTRA_ACCOUNT, mAccount); - Log.i(getClass().toString(), "onSaveInstanceState() end"); } @Override @@ -261,6 +248,7 @@ public class FileDetailFragment extends SherlockFragment implements if (mFile != null && mFile.isAudio()) { bindMediaService(); } + listenForTransferProgress(); } @Override @@ -288,10 +276,9 @@ public class FileDetailFragment extends SherlockFragment implements getActivity().unregisterReceiver(mUploadFinishReceiver); mUploadFinishReceiver = null; - } - + @Override public void onStop() { super.onStop(); @@ -307,6 +294,7 @@ public class FileDetailFragment extends SherlockFragment implements mMediaController = null; } } + leaveTransferProgress(); } @@ -358,7 +346,6 @@ public class FileDetailFragment extends SherlockFragment implements // 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; @@ -378,7 +365,6 @@ public class FileDetailFragment extends SherlockFragment implements 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()) { @@ -418,9 +404,9 @@ public class FileDetailFragment extends SherlockFragment implements private void startVideoActivity() { - Intent i = new Intent(getActivity(), VideoActivity.class); - i.putExtra(VideoActivity.EXTRA_FILE, mFile); - i.putExtra(VideoActivity.EXTRA_ACCOUNT, mAccount); + Intent i = new Intent(getActivity(), PreviewVideoActivity.class); + i.putExtra(PreviewVideoActivity.EXTRA_FILE, mFile); + i.putExtra(PreviewVideoActivity.EXTRA_ACCOUNT, mAccount); startActivity(i); } @@ -769,6 +755,8 @@ public class FileDetailFragment extends SherlockFragment implements // hides the progress bar ProgressBar progressBar = (ProgressBar)getView().findViewById(R.id.fdProgressBar); progressBar.setVisibility(View.GONE); + TextView progressText = (TextView)getView().findViewById(R.id.fdProgressText); + progressText.setVisibility(View.GONE); } } @@ -788,6 +776,8 @@ public class FileDetailFragment extends SherlockFragment implements // hides the progress bar ProgressBar progressBar = (ProgressBar)getView().findViewById(R.id.fdProgressBar); progressBar.setVisibility(View.GONE); + TextView progressText = (TextView)getView().findViewById(R.id.fdProgressText); + progressText.setVisibility(View.GONE); } } @@ -828,6 +818,8 @@ public class FileDetailFragment extends SherlockFragment implements if (downloadWasFine) { mFile = mStorageManager.getFileByPath(downloadedRemotePath); } + mContainerActivity.notifySuccessfulDownload(mFile, intent, downloadWasFine); + getActivity().removeStickyBroadcast(intent); updateFileDetails(false); // it updates the buttons; must be called although !downloadWasFine } } @@ -1085,6 +1077,7 @@ public class FileDetailFragment extends SherlockFragment implements } else { if (operation.transferWasRequested()) { + setButtonsForTransferring(); mContainerActivity.onFileStateChanged(); // this is not working; FileDownloader won't do NOTHING at all until this method finishes, so // checking the service to see if the file is downloading results in FALSE } else { @@ -1099,16 +1092,66 @@ public class FileDetailFragment extends SherlockFragment implements } } } + + + public void listenForTransferProgress() { + if (mProgressListener != null) { + if (mContainerActivity.getFileDownloaderBinder() != null) { + mContainerActivity.getFileDownloaderBinder().addDatatransferProgressListener(mProgressListener, mAccount, mFile); + } + if (mContainerActivity.getFileUploaderBinder() != null) { + mContainerActivity.getFileUploaderBinder().addDatatransferProgressListener(mProgressListener, mAccount, mFile); + } + } + } + + + public void leaveTransferProgress() { + if (mProgressListener != null) { + if (mContainerActivity.getFileDownloaderBinder() != null) { + mContainerActivity.getFileDownloaderBinder().removeDatatransferProgressListener(mProgressListener, mAccount, mFile); + } + if (mContainerActivity.getFileUploaderBinder() != null) { + mContainerActivity.getFileUploaderBinder().removeDatatransferProgressListener(mProgressListener, mAccount, mFile); + } + } + } - public ProgressBar getProgressBar() { - View v = getView(); - if (v != null) { - return (ProgressBar) v.findViewById(R.id.fdProgressBar); - } else { - return null; + + /** + * Helper class responsible for updating the progress bar shown for file uploading or downloading + * + * @author David A. Velasco + */ + private class ProgressListener implements OnDatatransferProgressListener { + int mLastPercent = 0; + WeakReference mProgressBar = null; + + ProgressListener(ProgressBar progressBar) { + mProgressBar = new WeakReference(progressBar); } - } + + @Override + public void onTransferProgress(long progressRate) { + // old method, nothing here + }; + + @Override + public void onTransferProgress(long progressRate, long totalTransferredSoFar, long totalToTransfer, String filename) { + int percent = (int)(100.0*((double)totalTransferredSoFar)/((double)totalToTransfer)); + if (percent != mLastPercent) { + ProgressBar pb = mProgressBar.get(); + if (pb != null) { + pb.setProgress(percent); + pb.postInvalidate(); + } + } + mLastPercent = percent; + } + + }; + }