X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/9343650e8496e6b1c895e448ad91bc9682d3c2f2..c9626772a19c0f5631ae5b58c09dda39d0baa878:/src/com/owncloud/android/ui/activity/FileDisplayActivity.java diff --git a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java index 3c8b4776..c5947171 100644 --- a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java +++ b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java @@ -42,6 +42,7 @@ import android.os.IBinder; import android.preference.PreferenceManager; import android.provider.MediaStore; import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; //import android.support.v4.content.LocalBroadcastManager; import android.util.Log; @@ -67,6 +68,7 @@ import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder; import com.owncloud.android.files.services.FileUploader.FileUploaderBinder; import com.owncloud.android.operations.CreateFolderOperation; +import com.owncloud.android.lib.common.network.CertificateCombinedException; import com.owncloud.android.lib.common.operations.RemoteOperation; import com.owncloud.android.lib.common.operations.RemoteOperationResult; import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode; @@ -79,9 +81,9 @@ import com.owncloud.android.operations.UnshareLinkOperation; import com.owncloud.android.services.OperationsService; import com.owncloud.android.syncadapter.FileSyncAdapter; import com.owncloud.android.ui.dialog.EditNameDialog; +import com.owncloud.android.ui.dialog.SslUntrustedCertDialog; import com.owncloud.android.ui.dialog.EditNameDialog.EditNameDialogListener; -import com.owncloud.android.ui.dialog.SslValidatorDialog; -import com.owncloud.android.ui.dialog.SslValidatorDialog.OnSslValidatorListener; +import com.owncloud.android.ui.dialog.SslUntrustedCertDialog.OnSslUntrustedCertListener; import com.owncloud.android.ui.fragment.FileDetailFragment; import com.owncloud.android.ui.fragment.FileFragment; import com.owncloud.android.ui.fragment.OCFileListFragment; @@ -100,7 +102,7 @@ import com.owncloud.android.utils.Log_OC; */ public class FileDisplayActivity extends HookActivity implements -OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNavigationListener, OnSslValidatorListener, EditNameDialogListener { +OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNavigationListener, OnSslUntrustedCertListener, EditNameDialogListener { private ArrayAdapter mDirectories; @@ -124,8 +126,8 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa public static final int DIALOG_SHORT_WAIT = 0; private static final int DIALOG_CHOOSE_UPLOAD_SOURCE = 1; - private static final int DIALOG_SSL_VALIDATOR = 2; - private static final int DIALOG_CERT_NOT_SAVED = 3; + //private static final int DIALOG_SSL_VALIDATOR = 2; + private static final int DIALOG_CERT_NOT_SAVED = 2; public static final String ACTION_DETAILS = "com.owncloud.android.ui.activity.action.DETAILS"; @@ -142,6 +144,8 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa private boolean mSyncInProgress = false; //private boolean mRefreshSharesInProgress = false; + private String DIALOG_UNTRUSTED_CERT; + private OCFile mWaitingToSend; @Override @@ -211,7 +215,9 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa protected void onStart() { super.onStart(); getSupportActionBar().setIcon(DisplayUtils.getSeasonalIconId()); + /* refeshListOfFilesFragment(); + */ } @Override @@ -223,7 +229,6 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa unbindService(mUploadConnection); } - /** * Called when the ownCloud {@link Account} associated to the Activity was just updated. */ @@ -413,12 +418,14 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa updateNavigationElementsInActionBar(null); } + /* TODO WIP COMMENT protected void refeshListOfFilesFragment() { OCFileListFragment fileListFragment = getListOfFilesFragment(); if (fileListFragment != null) { fileListFragment.listDirectory(); } } + */ protected void refreshSecondFragment(String downloadEvent, String downloadedRemotePath, boolean success) { FileFragment secondFragment = getSecondFragment(); @@ -686,7 +693,7 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa // Listen for sync messages IntentFilter syncIntentFilter = new IntentFilter(FileSyncAdapter.EVENT_FULL_SYNC_START); syncIntentFilter.addAction(FileSyncAdapter.EVENT_FULL_SYNC_END); - syncIntentFilter.addAction(FileSyncAdapter.EVENT_FULL_SYNC_FOLDER_SIZE_SYNCED); + //syncIntentFilter.addAction(FileSyncAdapter.EVENT_FULL_SYNC_FOLDER_SIZE_SYNCED); syncIntentFilter.addAction(FileSyncAdapter.EVENT_FULL_SYNC_FOLDER_CONTENTS_SYNCED); syncIntentFilter.addAction(SynchronizeFolderOperation.EVENT_SINGLE_FOLDER_CONTENTS_SYNCED); syncIntentFilter.addAction(SynchronizeFolderOperation.EVENT_SINGLE_FOLDER_SHARES_SYNCED); @@ -745,14 +752,6 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa @Override - protected void onPrepareDialog(int id, Dialog dialog, Bundle args) { - if (id == DIALOG_SSL_VALIDATOR && mLastSslUntrustedServerResult != null) { - ((SslValidatorDialog)dialog).updateResult(mLastSslUntrustedServerResult); - } - } - - - @Override protected Dialog onCreateDialog(int id) { Dialog dialog = null; AlertDialog.Builder builder; @@ -810,10 +809,6 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa dialog = builder.create(); break; } - case DIALOG_SSL_VALIDATOR: { - dialog = SslValidatorDialog.newInstance(this, mLastSslUntrustedServerResult, this); - break; - } case DIALOG_CERT_NOT_SAVED: { builder = new AlertDialog.Builder(this); builder.setMessage(getResources().getString(R.string.ssl_validator_not_saved)); @@ -918,72 +913,79 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa */ @Override public void onReceive(Context context, Intent intent) { - String event = intent.getAction(); - Log_OC.d(TAG, "Received broadcast " + event); - String accountName = intent.getStringExtra(FileSyncAdapter.EXTRA_ACCOUNT_NAME); - String synchFolderRemotePath = intent.getStringExtra(FileSyncAdapter.EXTRA_FOLDER_PATH); - RemoteOperationResult synchResult = (RemoteOperationResult)intent.getSerializableExtra(FileSyncAdapter.EXTRA_RESULT); - boolean sameAccount = (getAccount() != null && accountName.equals(getAccount().name) && getStorageManager() != null); - - if (sameAccount) { - - if (FileSyncAdapter.EVENT_FULL_SYNC_START.equals(event)) { - mSyncInProgress = true; + try { + String event = intent.getAction(); + Log_OC.d(TAG, "Received broadcast " + event); + String accountName = intent.getStringExtra(FileSyncAdapter.EXTRA_ACCOUNT_NAME); + String synchFolderRemotePath = intent.getStringExtra(FileSyncAdapter.EXTRA_FOLDER_PATH); + RemoteOperationResult synchResult = (RemoteOperationResult)intent.getSerializableExtra(FileSyncAdapter.EXTRA_RESULT); + boolean sameAccount = (getAccount() != null && accountName.equals(getAccount().name) && getStorageManager() != null); + + if (sameAccount) { - } else { - OCFile currentFile = (getFile() == null) ? null : getStorageManager().getFileByPath(getFile().getRemotePath()); - OCFile currentDir = (getCurrentDir() == null) ? null : getStorageManager().getFileByPath(getCurrentDir().getRemotePath()); - - if (currentDir == null) { - // current folder was removed from the server - Toast.makeText( FileDisplayActivity.this, - String.format(getString(R.string.sync_current_folder_was_removed), mDirectories.getItem(0)), - Toast.LENGTH_LONG) - .show(); - browseToRoot(); + if (FileSyncAdapter.EVENT_FULL_SYNC_START.equals(event)) { + mSyncInProgress = true; } else { - if (currentFile == null && !getFile().isFolder()) { - // currently selected file was removed in the server, and now we know it - cleanSecondFragment(); - currentFile = currentDir; - } - - if (synchFolderRemotePath != null && currentDir.getRemotePath().equals(synchFolderRemotePath)) { - OCFileListFragment fileListFragment = getListOfFilesFragment(); - if (fileListFragment != null) { - fileListFragment.listDirectory(currentDir); + OCFile currentFile = (getFile() == null) ? null : getStorageManager().getFileByPath(getFile().getRemotePath()); + OCFile currentDir = (getCurrentDir() == null) ? null : getStorageManager().getFileByPath(getCurrentDir().getRemotePath()); + + if (currentDir == null) { + // current folder was removed from the server + Toast.makeText( FileDisplayActivity.this, + String.format(getString(R.string.sync_current_folder_was_removed), mDirectories.getItem(0)), + Toast.LENGTH_LONG) + .show(); + browseToRoot(); + + } else { + if (currentFile == null && !getFile().isFolder()) { + // currently selected file was removed in the server, and now we know it + cleanSecondFragment(); + currentFile = currentDir; + } + + /* TODO WIP COMMENT + if (synchFolderRemotePath != null && currentDir.getRemotePath().equals(synchFolderRemotePath)) { + OCFileListFragment fileListFragment = getListOfFilesFragment(); + if (fileListFragment != null) { + fileListFragment.listDirectory(currentDir); + } } + */ + setFile(currentFile); } - setFile(currentFile); - } - - mSyncInProgress = (!FileSyncAdapter.EVENT_FULL_SYNC_END.equals(event) && !SynchronizeFolderOperation.EVENT_SINGLE_FOLDER_SHARES_SYNCED.equals(event)); + + mSyncInProgress = (!FileSyncAdapter.EVENT_FULL_SYNC_END.equals(event) && !SynchronizeFolderOperation.EVENT_SINGLE_FOLDER_SHARES_SYNCED.equals(event)); + + /* + if (synchResult != null && + synchResult.isSuccess() && + (SynchronizeFolderOperation.EVENT_SINGLE_FOLDER_SYNCED.equals(event) || + FileSyncAdapter.EVENT_FULL_SYNC_FOLDER_CONTENTS_SYNCED.equals(event) + ) && + !mRefreshSharesInProgress && + getFileOperationsHelper().isSharedSupported(FileDisplayActivity.this) + ) { + startGetShares(); + } + */ - /* - if (synchResult != null && - synchResult.isSuccess() && - (SynchronizeFolderOperation.EVENT_SINGLE_FOLDER_SYNCED.equals(event) || - FileSyncAdapter.EVENT_FULL_SYNC_FOLDER_CONTENTS_SYNCED.equals(event) - ) && - !mRefreshSharesInProgress && - getFileOperationsHelper().isSharedSupported(FileDisplayActivity.this) - ) { - startGetShares(); + } + removeStickyBroadcast(intent); + Log_OC.d(TAG, "Setting progress visibility to " + mSyncInProgress); + setSupportProgressBarIndeterminateVisibility(mSyncInProgress /*|| mRefreshSharesInProgress*/); + } + + if (synchResult != null) { + if (synchResult.getCode().equals(RemoteOperationResult.ResultCode.SSL_RECOVERABLE_PEER_UNVERIFIED)) { + mLastSslUntrustedServerResult = synchResult; } - */ - } + } catch (RuntimeException e) { + // avoid app crashes after changing the serial id of RemoteOperationResult + // in owncloud library with broadcast notifications pending to process removeStickyBroadcast(intent); - Log_OC.d(TAG, "Setting progress visibility to " + mSyncInProgress); - setSupportProgressBarIndeterminateVisibility(mSyncInProgress /*|| mRefreshSharesInProgress*/); - } - - if (synchResult != null) { - if (synchResult.getCode().equals(RemoteOperationResult.ResultCode.SSL_RECOVERABLE_PEER_UNVERIFIED)) { - mLastSslUntrustedServerResult = synchResult; - showDialog(DIALOG_SSL_VALIDATOR); - } } } } @@ -1003,7 +1005,9 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa OCFile currentDir = getCurrentDir(); boolean isDescendant = (currentDir != null) && (uploadedRemotePath != null) && (uploadedRemotePath.startsWith(currentDir.getRemotePath())); if (sameAccount && isDescendant) { + /* refeshListOfFilesFragment(); + */ } } @@ -1024,13 +1028,15 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa boolean isDescendant = isDescendant(downloadedRemotePath); if (sameAccount && isDescendant) { + /* TODO WIP COMMENT refeshListOfFilesFragment(); + */ refreshSecondFragment(intent.getAction(), downloadedRemotePath, intent.getBooleanExtra(FileDownloader.EXTRA_DOWNLOAD_RESULT, false)); } if (mWaitingToSend != null) { mWaitingToSend = getStorageManager().getFileByPath(mWaitingToSend.getRemotePath()); // Update the file to send - if (mWaitingToSend.isDown()) { + if (mWaitingToSend.isDown()) { sendDownloadedFile(); } } @@ -1073,12 +1079,14 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa if (getAccount() != null && account.name.equals(getAccount().name) && getStorageManager() != null ) { + /* refeshListOfFilesFragment(); + */ } if ((getSharesResult != null) && RemoteOperationResult.ResultCode.SSL_RECOVERABLE_PEER_UNVERIFIED.equals(getSharesResult.getCode())) { mLastSslUntrustedServerResult = getSharesResult; - showDialog(DIALOG_SSL_VALIDATOR); + showUntrustedCertDialog(mLastSslUntrustedServerResult); } //setSupportProgressBarIndeterminateVisibility(mRefreshSharesInProgress || mSyncInProgress); @@ -1228,10 +1236,13 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa /** * {@inheritDoc} */ + @Override public void onFileStateChanged() { + /* TODO WIP COMMENT refeshListOfFilesFragment(); updateNavigationElementsInActionBar(getSecondFragment().getFile()); + */ } @@ -1324,6 +1335,10 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa showDialog(DIALOG_CERT_NOT_SAVED); } + @Override + public void onCancelCertificate() { + // nothing to do + } /** * Updates the view associated to the activity after the finish of some operation over files @@ -1362,7 +1377,9 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa private void onCreateShareOperationFinish(CreateShareOperation operation, RemoteOperationResult result) { if (result.isSuccess()) { refreshShowDetails(); + /* TODO WIP COMMENT refeshListOfFilesFragment(); + */ } } @@ -1370,10 +1387,14 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa private void onUnshareLinkOperationFinish(UnshareLinkOperation operation, RemoteOperationResult result) { if (result.isSuccess()) { refreshShowDetails(); + /* refeshListOfFilesFragment(); + */ } else if (result.getCode() == ResultCode.SHARE_NOT_FOUND) { cleanSecondFragment(); + /* refeshListOfFilesFragment(); + */ } } @@ -1413,7 +1434,9 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa cleanSecondFragment(); } if (getStorageManager().getFileById(removedFile.getParentId()).equals(getCurrentDir())) { + /* refeshListOfFilesFragment(); + */ } } else { @@ -1421,7 +1444,7 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa msg.show(); if (result.isSslRecoverableException()) { mLastSslUntrustedServerResult = result; - showDialog(DIALOG_SSL_VALIDATOR); + showUntrustedCertDialog(mLastSslUntrustedServerResult); } } } @@ -1435,7 +1458,9 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa private void onCreateFolderOperationFinish(CreateFolderOperation operation, RemoteOperationResult result) { if (result.isSuccess()) { dismissLoadingDialog(); + /* TODO WIP COMMENT refeshListOfFilesFragment(); + */ } else { dismissLoadingDialog(); @@ -1472,7 +1497,9 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa } } if (getStorageManager().getFileById(renamedFile.getParentId()).equals(getCurrentDir())) { + /* refeshListOfFilesFragment(); + */ } } else { @@ -1488,7 +1515,7 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa msg.show(); if (result.isSslRecoverableException()) { mLastSslUntrustedServerResult = result; - showDialog(DIALOG_SSL_VALIDATOR); + showUntrustedCertDialog(mLastSslUntrustedServerResult); } } } @@ -1509,7 +1536,9 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa } else { if (operation.transferWasRequested()) { + /* refeshListOfFilesFragment(); + */ onTransferStateChanged(syncedFile, true, true); } else { @@ -1613,7 +1642,18 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa mRefreshSharesInProgress = true; } */ - + + /** + * Show untrusted cert dialog + */ + public void showUntrustedCertDialog(RemoteOperationResult result) { + // Show a dialog with the certificate info + SslUntrustedCertDialog dialog = SslUntrustedCertDialog.newInstanceForFullSslError((CertificateCombinedException)result.getException()); + FragmentManager fm = getSupportFragmentManager(); + FragmentTransaction ft = fm.beginTransaction(); + dialog.show(ft, DIALOG_UNTRUSTED_CERT); + } + /** * Requests the download of the received {@link OCFile} , updates the UI * to monitor the download progress and prepares the activity to send the file @@ -1625,7 +1665,8 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa public void startDownloadForSending(OCFile file) { mWaitingToSend = file; requestForDownload(mWaitingToSend); - updateFragmentsVisibility(true); + boolean hasSecondFragment = (getSecondFragment()!= null); + updateFragmentsVisibility(hasSecondFragment); } private void requestForDownload(OCFile file) { @@ -1639,7 +1680,6 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa } private void sendDownloadedFile(){ - dismissLoadingDialog(); getFileOperationsHelper().sendDownloadedFile(mWaitingToSend, this); mWaitingToSend = null; }