\r
private DownloadFinishReceiver mDownloadFinishReceiver;\r
private UploadFinishReceiver mUploadFinishReceiver;\r
+ public ProgressListener mProgressListener;\r
\r
private Handler mHandler;\r
private RemoteOperation mLastRemoteOperation;\r
mAccount = null;\r
mStorageManager = null;\r
mLayout = R.layout.file_details_empty;\r
+ mProgressListener = null;\r
}\r
\r
\r
mAccount = ocAccount;\r
mStorageManager = null; // we need a context to init this; the container activity is not available yet at this moment \r
mLayout = R.layout.file_details_empty;\r
+ mProgressListener = null;\r
}\r
\r
\r
mView.findViewById(R.id.fdOpenBtn).setOnClickListener(this);\r
mView.findViewById(R.id.fdRemoveBtn).setOnClickListener(this);\r
//mView.findViewById(R.id.fdShareBtn).setOnClickListener(this);\r
+ ProgressBar progressBar = (ProgressBar)mView.findViewById(R.id.fdProgressBar);\r
+ mProgressListener = new ProgressListener(progressBar);\r
}\r
\r
updateFileDetails(false);\r
if (mFile != null && mFile.isAudio()) {\r
bindMediaService();\r
}\r
+ listenForTransferProgress();\r
}\r
\r
@Override\r
mMediaController = null;\r
}\r
}\r
+ leaveTransferProgress();\r
}\r
\r
\r
}\r
}\r
}\r
+ \r
+ \r
+ public void listenForTransferProgress() {\r
+ if (mProgressListener != null) {\r
+ if (mContainerActivity.getFileDownloaderBinder() != null) {\r
+ mContainerActivity.getFileDownloaderBinder().addDatatransferProgressListener(mProgressListener, mAccount, mFile);\r
+ }\r
+ if (mContainerActivity.getFileUploaderBinder() != null) {\r
+ mContainerActivity.getFileUploaderBinder().addDatatransferProgressListener(mProgressListener, mAccount, mFile);\r
+ }\r
+ }\r
+ }\r
+ \r
+ \r
+ public void leaveTransferProgress() {\r
+ if (mProgressListener != null) {\r
+ if (mContainerActivity.getFileDownloaderBinder() != null) {\r
+ mContainerActivity.getFileDownloaderBinder().removeDatatransferProgressListener(mProgressListener, mAccount, mFile);\r
+ }\r
+ if (mContainerActivity.getFileUploaderBinder() != null) {\r
+ mContainerActivity.getFileUploaderBinder().removeDatatransferProgressListener(mProgressListener, mAccount, mFile);\r
+ }\r
+ }\r
+ }\r
\r
\r
- public ProgressBar getProgressBar() {\r
- View v = getView();\r
- if (v != null) {\r
- return (ProgressBar) v.findViewById(R.id.fdProgressBar);\r
- } else {\r
- return null;\r
+ \r
+ /**\r
+ * Helper class responsible for updating the progress bar shown for file uploading or downloading \r
+ * \r
+ * @author David A. Velasco\r
+ */\r
+ private class ProgressListener implements OnDatatransferProgressListener {\r
+ int mLastPercent = 0;\r
+ WeakReference<ProgressBar> mProgressBar = null;\r
+ \r
+ ProgressListener(ProgressBar progressBar) {\r
+ mProgressBar = new WeakReference<ProgressBar>(progressBar);\r
}\r
- }\r
+ \r
+ @Override\r
+ public void onTransferProgress(long progressRate) {\r
+ // old method, nothing here\r
+ };\r
+\r
+ @Override\r
+ public void onTransferProgress(long progressRate, long totalTransferredSoFar, long totalToTransfer, String filename) {\r
+ int percent = (int)(100.0*((double)totalTransferredSoFar)/((double)totalToTransfer));\r
+ if (percent != mLastPercent) {\r
+ ProgressBar pb = mProgressBar.get();\r
+ if (pb != null) {\r
+ pb.setProgress(percent);\r
+ pb.postInvalidate();\r
+ }\r
+ }\r
+ mLastPercent = percent;\r
+ }\r
+\r
+ };\r
+ \r
\r
\r
}\r