*/\r
package com.owncloud.android.ui.activity;\r
\r
+import java.lang.ref.WeakReference;\r
+\r
import android.accounts.Account;\r
import android.app.Dialog;\r
import android.app.ProgressDialog;\r
import android.support.v4.app.Fragment;\r
import android.support.v4.app.FragmentTransaction;\r
import android.util.Log;\r
+import android.widget.ProgressBar;\r
\r
import com.actionbarsherlock.app.ActionBar;\r
import com.actionbarsherlock.app.SherlockFragmentActivity;\r
\r
import com.owncloud.android.R;\r
\r
+import eu.alefzero.webdav.OnDatatransferProgressListener;\r
+\r
/**\r
* This activity displays the details of a file like its name, its size and so\r
* on.\r
* \r
* @author Bartek Przybylski\r
- * \r
+ * @author David A. Velasco\r
*/\r
public class FileDetailActivity extends SherlockFragmentActivity implements FileDetailFragment.ContainerActivity {\r
\r
\r
public static final String TAG = FileDetailActivity.class.getSimpleName();\r
\r
+ public static final String EXTRA_MODE = "MODE";\r
+ public static final int MODE_DETAILS = 0;\r
+ public static final int MODE_PREVIEW = 1;\r
+\r
+ private static final String KEY_WAITING_TO_PREVIEW = "WAITING_TO_PREVIEW";\r
+ \r
private boolean mConfigurationChangedToLandscape = false;\r
private FileDownloaderBinder mDownloaderBinder = null;\r
private ServiceConnection mDownloadConnection, mUploadConnection = null;\r
private FileUploaderBinder mUploaderBinder = null;\r
+ private boolean mWaitingToPreview;\r
\r
\r
@Override\r
actionBar.setDisplayHomeAsUpEnabled(true);\r
\r
if (savedInstanceState == null) {\r
+ mWaitingToPreview = false;\r
createChildFragment();\r
+ } else {\r
+ mWaitingToPreview = savedInstanceState.getBoolean(KEY_WAITING_TO_PREVIEW);\r
}\r
\r
} else {\r
\r
\r
}\r
- \r
- \r
+\r
+ /**\r
+ * Creates the proper fragment depending upon the state of the handled {@link OCFile} and\r
+ * the requested {@link Intent}.\r
+ */\r
private void createChildFragment() {\r
OCFile file = getIntent().getParcelableExtra(FileDetailFragment.EXTRA_FILE);\r
Account account = getIntent().getParcelableExtra(FileDetailFragment.EXTRA_ACCOUNT);\r
+ int mode = getIntent().getIntExtra(EXTRA_MODE, MODE_PREVIEW); \r
+ \r
Fragment newFragment = null;\r
- if (FilePreviewFragment.canBePreviewed(file)) {\r
- newFragment = new FilePreviewFragment(file, account);\r
+ if (FilePreviewFragment.canBePreviewed(file) && mode == MODE_PREVIEW) {\r
+ if (file.isDown()) {\r
+ newFragment = new FilePreviewFragment(file, account);\r
+ \r
+ } else {\r
+ newFragment = new FileDetailFragment(file, account);\r
+ mWaitingToPreview = true;\r
+ }\r
\r
} else {\r
newFragment = new FileDetailFragment(file, account);\r
}\r
\r
\r
+ @Override\r
+ protected void onSaveInstanceState(Bundle outState) {\r
+ super.onSaveInstanceState(outState);\r
+ outState.putBoolean(KEY_WAITING_TO_PREVIEW, mWaitingToPreview);\r
+ }\r
+\r
\r
/** Defines callbacks for service binding, passed to bindService() */\r
private class DetailsServiceConnection implements ServiceConnection {\r
\r
@Override\r
public void onServiceConnected(ComponentName component, IBinder service) {\r
+ \r
if (component.equals(new ComponentName(FileDetailActivity.this, FileDownloader.class))) {\r
Log.d(TAG, "Download service connected");\r
mDownloaderBinder = (FileDownloaderBinder) service;\r
} else {\r
return;\r
}\r
+ \r
Fragment fragment = getSupportFragmentManager().findFragmentByTag(FileDetailFragment.FTAG);\r
- if (fragment != null && fragment instanceof FileDetailFragment) {\r
- ((FileDetailFragment) fragment).updateFileDetails(false); // let the fragment gets the mDownloadBinder through getDownloadBinder() (see FileDetailFragment#updateFileDetais())\r
+ FileDetailFragment detailsFragment = (fragment instanceof FileDetailFragment) ? (FileDetailFragment) fragment : null;\r
+ if (detailsFragment != null) {\r
+ detailsFragment.listenForTransferProgress();\r
+ detailsFragment.updateFileDetails(false); // let the fragment gets the mDownloadBinder through getDownloadBinder() (see FileDetailFragment#updateFileDetais())\r
}\r
}\r
\r
}\r
}; \r
\r
-\r
+ \r
@Override\r
public void onDestroy() {\r
super.onDestroy();\r
public FileUploaderBinder getFileUploaderBinder() {\r
return mUploaderBinder;\r
}\r
+\r
+\r
+ @Override\r
+ public void showFragmentWithDetails(OCFile file) {\r
+ FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();\r
+ transaction.replace(R.id.fragment, new FileDetailFragment(file, (Account) getIntent().getParcelableExtra(FileDetailFragment.EXTRA_ACCOUNT)), FileDetailFragment.FTAG); \r
+ transaction.commit();\r
+ }\r
\r
}\r