|
@@ -99,6 +99,7 @@ import com.owncloud.android.ui.fragment.OCFileListFragment;
|
|
|
import com.owncloud.android.ui.preview.PreviewImageActivity;
|
|
|
import com.owncloud.android.ui.preview.PreviewImageFragment;
|
|
|
import com.owncloud.android.ui.preview.PreviewMediaFragment;
|
|
|
+import com.owncloud.android.ui.preview.PreviewTextFragment;
|
|
|
import com.owncloud.android.ui.preview.PreviewVideoActivity;
|
|
|
import com.owncloud.android.utils.DisplayUtils;
|
|
|
import com.owncloud.android.utils.ErrorMessageAdapter;
|
|
@@ -107,7 +108,6 @@ import com.owncloud.android.utils.UriUtils;
|
|
|
|
|
|
import java.io.File;
|
|
|
|
|
|
-
|
|
|
/**
|
|
|
* Displays, what files the user has available in his ownCloud.
|
|
|
*/
|
|
@@ -116,6 +116,8 @@ public class FileDisplayActivity extends HookActivity
|
|
|
implements FileFragment.ContainerActivity,
|
|
|
OnSslUntrustedCertListener, OnEnforceableRefreshListener {
|
|
|
|
|
|
+
|
|
|
+
|
|
|
private SyncBroadcastReceiver mSyncBroadcastReceiver;
|
|
|
private UploadFinishReceiver mUploadFinishReceiver;
|
|
|
private DownloadFinishReceiver mDownloadFinishReceiver;
|
|
@@ -174,7 +176,6 @@ public class FileDisplayActivity extends HookActivity
|
|
|
mSyncInProgress = savedInstanceState.getBoolean(KEY_SYNC_IN_PROGRESS);
|
|
|
mWaitingToSend = (OCFile) savedInstanceState.getParcelable(
|
|
|
FileDisplayActivity.KEY_WAITING_TO_SEND);
|
|
|
-
|
|
|
} else {
|
|
|
mWaitingToPreview = null;
|
|
|
mSyncInProgress = false;
|
|
@@ -212,7 +213,7 @@ public class FileDisplayActivity extends HookActivity
|
|
|
|
|
|
mProgressBar.setIndeterminate(mSyncInProgress);
|
|
|
// always AFTER setContentView(...) ; to work around bug in its implementation
|
|
|
-
|
|
|
+
|
|
|
setBackgroundText();
|
|
|
|
|
|
Log_OC.v(TAG, "onCreate() end");
|
|
@@ -286,7 +287,6 @@ public class FileDisplayActivity extends HookActivity
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
private void createMinFragments() {
|
|
|
OCFileListFragment listOfFiles = new OCFileListFragment();
|
|
|
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
|
|
@@ -302,6 +302,7 @@ public class FileDisplayActivity extends HookActivity
|
|
|
listOfFiles.listDirectory(getCurrentDir());
|
|
|
// TODO Enable when "On Device" is recovered
|
|
|
// listOfFiles.listDirectory(getCurrentDir(), MainApp.getOnlyOnDevice());
|
|
|
+
|
|
|
} else {
|
|
|
Log_OC.e(TAG, "Still have a chance to lose the initializacion of list fragment >(");
|
|
|
}
|
|
@@ -313,9 +314,11 @@ public class FileDisplayActivity extends HookActivity
|
|
|
setSecondFragment(secondFragment);
|
|
|
updateFragmentsVisibility(true);
|
|
|
updateActionBarTitleAndHomeButton(file);
|
|
|
-
|
|
|
+
|
|
|
} else {
|
|
|
cleanSecondFragment();
|
|
|
+ if (file.isDown() && PreviewTextFragment.canBePreviewed(file))
|
|
|
+ startTextPreview(file);
|
|
|
}
|
|
|
|
|
|
} else {
|
|
@@ -342,9 +345,11 @@ public class FileDisplayActivity extends HookActivity
|
|
|
secondFragment = new PreviewMediaFragment(file, getAccount(),
|
|
|
startPlaybackPosition, autoplay);
|
|
|
|
|
|
+ } else if (file.isDown() && PreviewTextFragment.canBePreviewed(file)) {
|
|
|
+ secondFragment = null;
|
|
|
} else {
|
|
|
- secondFragment = FileDetailFragment.newInstance(file, getAccount());
|
|
|
- }
|
|
|
+ secondFragment = FileDetailFragment.newInstance(file, getAccount());
|
|
|
+ }
|
|
|
}
|
|
|
return secondFragment;
|
|
|
}
|
|
@@ -461,6 +466,9 @@ public class FileDisplayActivity extends HookActivity
|
|
|
if (PreviewMediaFragment.canBePreviewed(mWaitingToPreview)) {
|
|
|
startMediaPreview(mWaitingToPreview, 0, true);
|
|
|
detailsFragmentChanged = true;
|
|
|
+ } else if (PreviewTextFragment.canBePreviewed(mWaitingToPreview)) {
|
|
|
+ startTextPreview(mWaitingToPreview);
|
|
|
+ detailsFragmentChanged = true;
|
|
|
} else {
|
|
|
getFileOperationsHelper().openFile(mWaitingToPreview);
|
|
|
}
|
|
@@ -503,6 +511,7 @@ public class FileDisplayActivity extends HookActivity
|
|
|
dialog.show(getSupportFragmentManager(), DIALOG_CREATE_FOLDER);
|
|
|
break;
|
|
|
}
|
|
|
+
|
|
|
case R.id.action_sync_account: {
|
|
|
startSynchronization();
|
|
|
break;
|
|
@@ -511,7 +520,6 @@ public class FileDisplayActivity extends HookActivity
|
|
|
UploadSourceDialogFragment dialog =
|
|
|
UploadSourceDialogFragment.newInstance(getAccount());
|
|
|
dialog.show(getSupportFragmentManager(), DIALOG_UPLOAD_SOURCE);
|
|
|
-
|
|
|
break;
|
|
|
}
|
|
|
case android.R.id.home: {
|
|
@@ -815,11 +823,9 @@ public class FileDisplayActivity extends HookActivity
|
|
|
protected void onResume() {
|
|
|
Log_OC.v(TAG, "onResume() start");
|
|
|
super.onResume();
|
|
|
-
|
|
|
// refresh Navigation Drawer account list
|
|
|
mNavigationDrawerAdapter.updateAccountList();
|
|
|
|
|
|
-
|
|
|
// refresh list of files
|
|
|
refreshListOfFilesFragment();
|
|
|
|
|
@@ -847,6 +853,7 @@ public class FileDisplayActivity extends HookActivity
|
|
|
registerReceiver(mDownloadFinishReceiver, downloadIntentFilter);
|
|
|
|
|
|
Log_OC.v(TAG, "onResume() end");
|
|
|
+
|
|
|
}
|
|
|
|
|
|
|
|
@@ -890,7 +897,7 @@ public class FileDisplayActivity extends HookActivity
|
|
|
FileSyncAdapter.EXTRA_RESULT);
|
|
|
boolean sameAccount = (getAccount() != null &&
|
|
|
accountName.equals(getAccount().name) && getStorageManager() != null);
|
|
|
-
|
|
|
+
|
|
|
if (sameAccount) {
|
|
|
|
|
|
if (FileSyncAdapter.EVENT_FULL_SYNC_START.equals(event)) {
|
|
@@ -911,6 +918,7 @@ public class FileDisplayActivity extends HookActivity
|
|
|
synchFolderRemotePath),
|
|
|
Toast.LENGTH_LONG)
|
|
|
.show();
|
|
|
+
|
|
|
browseToRoot();
|
|
|
|
|
|
} else {
|
|
@@ -939,8 +947,8 @@ public class FileDisplayActivity extends HookActivity
|
|
|
.equals(event));
|
|
|
|
|
|
if (RefreshFolderOperation.EVENT_SINGLE_FOLDER_CONTENTS_SYNCED.
|
|
|
- equals(event) &&
|
|
|
- /// TODO refactor and make common
|
|
|
+ equals(event) &&/// TODO refactor and make common
|
|
|
+
|
|
|
synchResult != null && !synchResult.isSuccess() &&
|
|
|
(synchResult.getCode() == ResultCode.UNAUTHORIZED ||
|
|
|
synchResult.isIdPRedirection() ||
|
|
@@ -954,7 +962,6 @@ public class FileDisplayActivity extends HookActivity
|
|
|
new OwnCloudAccount(getAccount(), context);
|
|
|
client = (OwnCloudClientManagerFactory.getDefaultSingleton().
|
|
|
removeClientFor(ocAccount));
|
|
|
-
|
|
|
if (client != null) {
|
|
|
OwnCloudCredentials cred = client.getCredentials();
|
|
|
if (cred != null) {
|
|
@@ -1074,10 +1081,15 @@ public class FileDisplayActivity extends HookActivity
|
|
|
cleanSecondFragment();
|
|
|
}
|
|
|
|
|
|
- // Force the preview if the file is an image
|
|
|
- if (uploadWasFine && PreviewImageFragment.canBePreviewed(getFile())) {
|
|
|
- startImagePreview(getFile());
|
|
|
- } // TODO what about other kind of previews?
|
|
|
+ // Force the preview if the file is an image or text file
|
|
|
+ if (uploadWasFine) {
|
|
|
+ OCFile ocFile = getFile();
|
|
|
+ if (PreviewImageFragment.canBePreviewed(ocFile))
|
|
|
+ startImagePreview(getFile());
|
|
|
+ else if (PreviewTextFragment.canBePreviewed(ocFile))
|
|
|
+ startTextPreview(ocFile);
|
|
|
+ // TODO what about other kind of previews?
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
mProgressBar.setIndeterminate(false);
|
|
@@ -1126,7 +1138,7 @@ public class FileDisplayActivity extends HookActivity
|
|
|
if (mWaitingToSend != null) {
|
|
|
mWaitingToSend =
|
|
|
getStorageManager().getFileByPath(mWaitingToSend.getRemotePath());
|
|
|
- if (mWaitingToSend.isDown()) {
|
|
|
+ if (mWaitingToSend.isDown()) {
|
|
|
sendDownloadedFile();
|
|
|
}
|
|
|
}
|
|
@@ -1174,7 +1186,6 @@ public class FileDisplayActivity extends HookActivity
|
|
|
startSyncFolderOperation(root, false);
|
|
|
}
|
|
|
cleanSecondFragment();
|
|
|
-
|
|
|
}
|
|
|
|
|
|
|
|
@@ -1253,7 +1264,7 @@ public class FileDisplayActivity extends HookActivity
|
|
|
}
|
|
|
// a new chance to get the mDownloadBinder through
|
|
|
// getFileDownloadBinder() - THIS IS A MESS
|
|
|
- OCFileListFragment listOfFiles = getListOfFilesFragment();
|
|
|
+ OCFileListFragment listOfFiles = getListOfFilesFragment();
|
|
|
if (listOfFiles != null) {
|
|
|
listOfFiles.listDirectory();
|
|
|
// TODO Enable when "On Device" is recovered ?
|
|
@@ -1337,8 +1348,6 @@ public class FileDisplayActivity extends HookActivity
|
|
|
}
|
|
|
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
private void onCreateShareOperationFinish(CreateShareOperation operation,
|
|
|
RemoteOperationResult result) {
|
|
|
if (result.isSuccess()) {
|
|
@@ -1347,7 +1356,6 @@ public class FileDisplayActivity extends HookActivity
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
private void onUnshareLinkOperationFinish(UnshareLinkOperation operation,
|
|
|
RemoteOperationResult result) {
|
|
|
if (result.isSuccess()) {
|
|
@@ -1369,6 +1377,9 @@ public class FileDisplayActivity extends HookActivity
|
|
|
if (details instanceof PreviewMediaFragment) {
|
|
|
// Refresh OCFile of the fragment
|
|
|
((PreviewMediaFragment) details).updateFile(file);
|
|
|
+ } else if (details instanceof PreviewTextFragment) {
|
|
|
+ // Refresh OCFile of the fragment
|
|
|
+ ((PreviewTextFragment) details).updateFile(file);
|
|
|
} else {
|
|
|
showDetails(file);
|
|
|
}
|
|
@@ -1390,7 +1401,7 @@ public class FileDisplayActivity extends HookActivity
|
|
|
|
|
|
Toast msg = Toast.makeText(this,
|
|
|
ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()),
|
|
|
- Toast.LENGTH_LONG);
|
|
|
+ Toast.LENGTH_LONG);
|
|
|
msg.show();
|
|
|
|
|
|
if (result.isSuccess()) {
|
|
@@ -1403,7 +1414,7 @@ public class FileDisplayActivity extends HookActivity
|
|
|
setFile(getStorageManager().getFileById(removedFile.getParentId()));
|
|
|
cleanSecondFragment();
|
|
|
}
|
|
|
- if (getStorageManager().getFileById(removedFile.getParentId()).equals(getCurrentDir())) {
|
|
|
+ if (getStorageManager().getFileById(removedFile.getParentId()).equals(getCurrentDir())){
|
|
|
refreshListOfFilesFragment();
|
|
|
}
|
|
|
invalidateOptionsMenu();
|
|
@@ -1495,6 +1506,14 @@ public class FileDisplayActivity extends HookActivity
|
|
|
} else {
|
|
|
getFileOperationsHelper().openFile(renamedFile);
|
|
|
}
|
|
|
+ } else if (details instanceof PreviewTextFragment &&
|
|
|
+ renamedFile.equals(details.getFile())) {
|
|
|
+ ((PreviewTextFragment) details).updateFile(renamedFile);
|
|
|
+ if (PreviewTextFragment.canBePreviewed(renamedFile)) {
|
|
|
+ startTextPreview(renamedFile);
|
|
|
+ } else {
|
|
|
+ getFileOperationsHelper().openFile(renamedFile);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -1505,7 +1524,7 @@ public class FileDisplayActivity extends HookActivity
|
|
|
} else {
|
|
|
Toast msg = Toast.makeText(this,
|
|
|
ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()),
|
|
|
- Toast.LENGTH_LONG);
|
|
|
+ Toast.LENGTH_LONG);
|
|
|
msg.show();
|
|
|
|
|
|
if (result.isSslRecoverableException()) {
|
|
@@ -1618,6 +1637,7 @@ public class FileDisplayActivity extends HookActivity
|
|
|
getApplicationContext()
|
|
|
);
|
|
|
synchFolderOp.execute(getAccount(), MainApp.getAppContext(), this, null, null);
|
|
|
+
|
|
|
mProgressBar.setIndeterminate(true);
|
|
|
|
|
|
setBackgroundText();
|
|
@@ -1675,7 +1695,6 @@ public class FileDisplayActivity extends HookActivity
|
|
|
showDetailsIntent.putExtra(EXTRA_FILE, file);
|
|
|
showDetailsIntent.putExtra(EXTRA_ACCOUNT, getAccount());
|
|
|
startActivity(showDetailsIntent);
|
|
|
-
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -1696,6 +1715,23 @@ public class FileDisplayActivity extends HookActivity
|
|
|
setFile(file);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Stars the preview of a text file {@link OCFile}.
|
|
|
+ *
|
|
|
+ * @param file Text {@link OCFile} to preview.
|
|
|
+ */
|
|
|
+ public void startTextPreview(OCFile file) {
|
|
|
+ Bundle args = new Bundle();
|
|
|
+ args.putParcelable(EXTRA_FILE, file);
|
|
|
+ args.putParcelable(EXTRA_ACCOUNT, getAccount());
|
|
|
+ Fragment textPreviewFragment = Fragment.instantiate(getApplicationContext(),
|
|
|
+ PreviewTextFragment.class.getName(), args);
|
|
|
+ setSecondFragment(textPreviewFragment);
|
|
|
+ updateFragmentsVisibility(true);
|
|
|
+ //updateNavigationElementsInActionBar(file);
|
|
|
+ setFile(file);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* Requests the download of the received {@link OCFile} , updates the UI
|
|
|
* to monitor the download progress and prepares the activity to preview
|