X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/a07937cb6f1d2a19d526e7fcb666c8e66515620d..e24b31f42d9b175e352f5965f3e4eeb07bbf39f5:/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 d980553b..3061ff44 100644 --- a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java +++ b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java @@ -1,6 +1,10 @@ -/* ownCloud Android client application +/** + * ownCloud Android client application + * + * @author Bartek Przybylski + * @author David A. Velasco * Copyright (C) 2011 Bartek Przybylski - * Copyright (C) 2012-2014 ownCloud Inc. + * Copyright (C) 2015 ownCloud Inc. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2, @@ -19,21 +23,15 @@ package com.owncloud.android.ui.activity; import java.io.File; -import java.io.IOException; import android.accounts.Account; import android.accounts.AccountManager; import android.accounts.AuthenticatorException; -import android.accounts.OperationCanceledException; -import android.annotation.SuppressLint; import android.annotation.TargetApi; import android.app.AlertDialog; -import android.app.Dialog; -import android.app.ProgressDialog; import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.ContentResolver; -import android.content.ContentUris; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; @@ -46,16 +44,12 @@ import android.database.Cursor; import android.net.Uri; import android.os.Build; import android.os.Bundle; -import android.os.Environment; import android.os.IBinder; import android.preference.PreferenceManager; -import android.provider.DocumentsContract; -import android.provider.MediaStore; import android.provider.OpenableColumns; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; -import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; @@ -96,10 +90,11 @@ import com.owncloud.android.operations.RefreshFolderOperation; import com.owncloud.android.operations.UnshareLinkOperation; import com.owncloud.android.services.observer.FileObserverService; import com.owncloud.android.syncadapter.FileSyncAdapter; -import com.owncloud.android.ui.adapter.FileListListAdapter; +import com.owncloud.android.ui.dialog.ConfirmationDialogFragment; import com.owncloud.android.ui.dialog.CreateFolderDialogFragment; import com.owncloud.android.ui.dialog.SslUntrustedCertDialog; import com.owncloud.android.ui.dialog.SslUntrustedCertDialog.OnSslUntrustedCertListener; +import com.owncloud.android.ui.dialog.UploadSourceDialogFragment; import com.owncloud.android.ui.fragment.FileDetailFragment; import com.owncloud.android.ui.fragment.FileFragment; import com.owncloud.android.ui.fragment.OCFileListFragment; @@ -115,9 +110,6 @@ import com.owncloud.android.utils.UriUtils; /** * Displays, what files the user has available in his ownCloud. - * - * @author Bartek Przybylski - * @author David A. Velasco */ public class FileDisplayActivity extends HookActivity implements @@ -139,14 +131,10 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { private static final String KEY_SYNC_IN_PROGRESS = "SYNC_IN_PROGRESS"; private static final String KEY_WAITING_TO_SEND = "WAITING_TO_SEND"; - public static final int DIALOG_SHORT_WAIT = 0; - private static final int DIALOG_CHOOSE_UPLOAD_SOURCE = 1; - private static final int DIALOG_CERT_NOT_SAVED = 2; - public static final String ACTION_DETAILS = "com.owncloud.android.ui.activity.action.DETAILS"; - private static final int ACTION_SELECT_CONTENT_FROM_APPS = 1; - private static final int ACTION_SELECT_MULTIPLE_FILES = 2; + public static final int ACTION_SELECT_CONTENT_FROM_APPS = 1; + public static final int ACTION_SELECT_MULTIPLE_FILES = 2; public static final int ACTION_MOVE_FILES = 3; private static final String TAG = FileDisplayActivity.class.getSimpleName(); @@ -158,25 +146,22 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { private boolean mSyncInProgress = false; - private String DIALOG_UNTRUSTED_CERT; - - private OCFile mWaitingToSend; + private static String DIALOG_UNTRUSTED_CERT = "DIALOG_UNTRUSTED_CERT"; + private static String DIALOG_CREATE_FOLDER = "DIALOG_CREATE_FOLDER"; + private static String DIALOG_UPLOAD_SOURCE = "DIALOG_UPLOAD_SOURCE"; + private static String DIALOG_CERT_NOT_SAVED = "DIALOG_CERT_NOT_SAVED"; + + private OCFile mWaitingToSend; + @Override protected void onCreate(Bundle savedInstanceState) { - Log_OC.d(TAG, "onCreate() start"); + Log_OC.v(TAG, "onCreate() start"); requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); super.onCreate(savedInstanceState); // this calls onAccountChanged() when ownCloud Account is valid - // PIN CODE request ; best location is to decide, let's try this first - if (getIntent().getAction() != null && getIntent().getAction().equals(Intent.ACTION_MAIN) && savedInstanceState == null) { - requestPinCode(); - } else if (getIntent().getAction() == null && savedInstanceState == null) { - requestPinCode(); - } - - /// grant that FileObserverService is watching favourite files + /// grant that FileObserverService is watching favorite files if (savedInstanceState == null) { Intent initObserversIntent = FileObserverService.makeInitIntent(this); startService(initObserversIntent); @@ -212,18 +197,22 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { setBackgroundText(); - Log_OC.d(TAG, "onCreate() end"); + Log_OC.v(TAG, "onCreate() end"); } @Override protected void onStart() { + Log_OC.v(TAG, "onStart() start"); super.onStart(); getSupportActionBar().setIcon(DisplayUtils.getSeasonalIconId()); + Log_OC.v(TAG, "onStart() end"); } @Override protected void onDestroy() { + Log_OC.v(TAG, "onDestroy() start"); super.onDestroy(); + Log_OC.v(TAG, "onDestroy() end"); } /** @@ -256,7 +245,7 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { setNavigationListWithFolder(file); if (!stateWasRecovered) { - Log_OC.e(TAG, "Initializing Fragments in onAccountChanged.."); + Log_OC.d(TAG, "Initializing Fragments in onAccountChanged.."); initFragmentsWithFile(); if (file.isFolder()) { startSyncFolderOperation(file, false); @@ -481,9 +470,8 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { boolean retval = true; switch (item.getItemId()) { case R.id.action_create_dir: { - CreateFolderDialogFragment dialog = - CreateFolderDialogFragment.newInstance(getCurrentDir()); - dialog.show(getSupportFragmentManager(), "createdirdialog"); + CreateFolderDialogFragment dialog = CreateFolderDialogFragment.newInstance(getCurrentDir()); + dialog.show(getSupportFragmentManager(), DIALOG_CREATE_FOLDER); break; } case R.id.action_sync_account: { @@ -491,7 +479,9 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { break; } case R.id.action_upload: { - showDialog(DIALOG_CHOOSE_UPLOAD_SOURCE); + UploadSourceDialogFragment dialog = UploadSourceDialogFragment.newInstance(getAccount()); + dialog.show(getSupportFragmentManager(), DIALOG_UPLOAD_SOURCE); + break; } case R.id.action_settings: { @@ -535,10 +525,6 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { sortByDate(false); break; -// TODO re-enable when server-side folder size calculation is available -// case 2: -// sortBySize(false); -// break; } dialog.dismiss(); @@ -555,19 +541,19 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { } private void startSynchronization() { - Log_OC.e(TAG, "Got to start sync"); + Log_OC.d(TAG, "Got to start sync"); if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.KITKAT) { - Log_OC.e(TAG, "Canceling all syncs for " + MainApp.getAuthority()); + Log_OC.d(TAG, "Canceling all syncs for " + MainApp.getAuthority()); ContentResolver.cancelSync(null, MainApp.getAuthority()); // cancel the current synchronizations of any ownCloud account Bundle bundle = new Bundle(); bundle.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, true); bundle.putBoolean(ContentResolver.SYNC_EXTRAS_EXPEDITED, true); - Log_OC.e(TAG, "Requesting sync for " + getAccount().name + " at " + MainApp.getAuthority()); + Log_OC.d(TAG, "Requesting sync for " + getAccount().name + " at " + MainApp.getAuthority()); ContentResolver.requestSync( getAccount(), MainApp.getAuthority(), bundle); } else { - Log_OC.e(TAG, "Requesting sync for " + getAccount().name + " at " + MainApp.getAuthority() + " with new API"); + Log_OC.d(TAG, "Requesting sync for " + getAccount().name + " at " + MainApp.getAuthority() + " with new API"); SyncRequest.Builder builder = new SyncRequest.Builder(); builder.setSyncAdapter(getAccount(), MainApp.getAuthority()); builder.setExpedited(true); @@ -611,8 +597,8 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { * */ @TargetApi(Build.VERSION_CODES.JELLY_BEAN) + @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { - super.onActivityResult(requestCode, resultCode, data); if (requestCode == ACTION_SELECT_CONTENT_FROM_APPS && (resultCode == RESULT_OK || resultCode == UploadFilesActivity.RESULT_OK_AND_MOVE)) { //getClipData is only supported on api level 16+, Jelly Bean @@ -641,7 +627,11 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { }, DELAY_TO_REQUEST_OPERATION_ON_ACTIVITY_RESULTS ); + + } else { + super.onActivityResult(requestCode, resultCode, data); } + } private void requestMultipleUpload(Intent data, int resultCode) { @@ -649,6 +639,7 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { if (filePaths != null) { String[] remotePaths = new String[filePaths.length]; String remotePathBase = ""; + for (int j = mDirectories.getCount() - 2; j >= 0; --j) { remotePathBase += OCFile.PATH_SEPARATOR + mDirectories.getItem(j); } @@ -677,7 +668,7 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { private void requestSimpleUpload(Intent data, int resultCode) { - String filepath = null; + String filePath = null; String mimeType = null; Uri selectedImageUri = data.getData(); @@ -685,67 +676,60 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { try { mimeType = getContentResolver().getType(selectedImageUri); - String filemanagerstring = selectedImageUri.getPath(); - String selectedImagePath = getPath(selectedImageUri); + String fileManagerString = selectedImageUri.getPath(); + String selectedImagePath = UriUtils.getLocalPath(selectedImageUri, this); if (selectedImagePath != null) - filepath = selectedImagePath; + filePath = selectedImagePath; else - filepath = filemanagerstring; + filePath = fileManagerString; } catch (Exception e) { Log_OC.e(TAG, "Unexpected exception when trying to read the result of Intent.ACTION_GET_CONTENT", e); - e.printStackTrace(); } finally { - if (filepath == null) { - Log_OC.e(TAG, "Couldnt resolve path to file"); - Toast t = Toast.makeText(this, getString(R.string.filedisplay_unexpected_bad_get_content), Toast.LENGTH_LONG); + if (filePath == null) { + Log_OC.e(TAG, "Couldn't resolve path to file"); + Toast t = Toast.makeText( + this, getString(R.string.filedisplay_unexpected_bad_get_content), Toast.LENGTH_LONG + ); t.show(); return; } } Intent i = new Intent(this, FileUploader.class); - i.putExtra(FileUploader.KEY_ACCOUNT, - getAccount()); - String remotepath = new String(); - for (int j = mDirectories.getCount() - 2; j >= 0; --j) { - remotepath += OCFile.PATH_SEPARATOR + mDirectories.getItem(j); - } - if (!remotepath.endsWith(OCFile.PATH_SEPARATOR)) - remotepath += OCFile.PATH_SEPARATOR; - - if (filepath.startsWith(UriUtils.URI_CONTENT_SCHEME)) { - - Cursor cursor = MainApp.getAppContext().getContentResolver() - .query(Uri.parse(filepath), null, null, null, null, null); + i.putExtra(FileUploader.KEY_ACCOUNT, getAccount()); + OCFile currentDir = getCurrentDir(); + String remotePath = (currentDir != null) ? currentDir.getRemotePath() : OCFile.ROOT_PATH; + if (filePath.startsWith(UriUtils.URI_CONTENT_SCHEME)) { + Cursor cursor = getContentResolver().query(Uri.parse(filePath), null, null, null, null); try { if (cursor != null && cursor.moveToFirst()) { - String displayName = cursor.getString( - cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME)); - Log.i(TAG, "Display Name: " + displayName + "; mimeType: " + mimeType); + String displayName = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME)); + Log_OC.v(TAG, "Display Name: " + displayName ); displayName.replace(File.separatorChar, '_'); displayName.replace(File.pathSeparatorChar, '_'); - remotepath += displayName + DisplayUtils.getComposedFileExtension(filepath); + remotePath += displayName + DisplayUtils.getComposedFileExtension(filePath); } + // and what happens in case of error?; wrong target name for the upload } finally { cursor.close(); } } else { - remotepath += new File(filepath).getName(); + remotePath += new File(filePath).getName(); } - i.putExtra(FileUploader.KEY_LOCAL_FILE, filepath); - i.putExtra(FileUploader.KEY_REMOTE_FILE, remotepath); + i.putExtra(FileUploader.KEY_LOCAL_FILE, filePath); + i.putExtra(FileUploader.KEY_REMOTE_FILE, remotePath); i.putExtra(FileUploader.KEY_MIME_TYPE, mimeType); i.putExtra(FileUploader.KEY_UPLOAD_TYPE, FileUploader.UPLOAD_SINGLE_FILE); if (resultCode == UploadFilesActivity.RESULT_OK_AND_MOVE) - i.putExtra(FileUploader.KEY_LOCAL_BEHAVIOUR, FileUploader.LOCAL_BEHAVIOUR_MOVE); + i.putExtra(FileUploader.KEY_LOCAL_BEHAVIOUR, FileUploader.LOCAL_BEHAVIOUR_MOVE); startService(i); } @@ -786,23 +770,23 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { @Override protected void onSaveInstanceState(Bundle outState) { // responsibility of restore is preferred in onCreate() before than in onRestoreInstanceState when there are Fragments involved - Log_OC.e(TAG, "onSaveInstanceState() start"); + Log_OC.v(TAG, "onSaveInstanceState() start"); super.onSaveInstanceState(outState); outState.putParcelable(FileDisplayActivity.KEY_WAITING_TO_PREVIEW, mWaitingToPreview); outState.putBoolean(FileDisplayActivity.KEY_SYNC_IN_PROGRESS, mSyncInProgress); //outState.putBoolean(FileDisplayActivity.KEY_REFRESH_SHARES_IN_PROGRESS, mRefreshSharesInProgress); outState.putParcelable(FileDisplayActivity.KEY_WAITING_TO_SEND, mWaitingToSend); - Log_OC.d(TAG, "onSaveInstanceState() end"); + Log_OC.v(TAG, "onSaveInstanceState() end"); } @Override protected void onResume() { + Log_OC.v(TAG, "onResume() start"); super.onResume(); - Log_OC.e(TAG, "onResume() start"); - + // refresh list of files refreshListOfFilesFragment(); @@ -827,13 +811,13 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { mDownloadFinishReceiver = new DownloadFinishReceiver(); registerReceiver(mDownloadFinishReceiver, downloadIntentFilter); - Log_OC.d(TAG, "onResume() end"); + Log_OC.v(TAG, "onResume() end"); } @Override protected void onPause() { - Log_OC.e(TAG, "onPause() start"); + Log_OC.v(TAG, "onPause() start"); if (mSyncBroadcastReceiver != null) { unregisterReceiver(mSyncBroadcastReceiver); //LocalBroadcastManager.getInstance(this).unregisterReceiver(mSyncBroadcastReceiver); @@ -848,149 +832,8 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { mDownloadFinishReceiver = null; } - - Log_OC.d(TAG, "onPause() end"); super.onPause(); - } - - - @Override - protected Dialog onCreateDialog(int id) { - Dialog dialog = null; - AlertDialog.Builder builder; - switch (id) { - case DIALOG_SHORT_WAIT: { - ProgressDialog working_dialog = new ProgressDialog(this); - working_dialog.setMessage(getResources().getString( - R.string.wait_a_moment)); - working_dialog.setIndeterminate(true); - working_dialog.setCancelable(false); - dialog = working_dialog; - break; - } - case DIALOG_CHOOSE_UPLOAD_SOURCE: { - - - String[] allTheItems = { getString(R.string.actionbar_upload_files), - getString(R.string.actionbar_upload_from_apps) }; - - builder = new AlertDialog.Builder(this); - builder.setTitle(R.string.actionbar_upload); - builder.setItems(allTheItems, new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int item) { - if (item == 0) { - // if (!mDualPane) { - Intent action = new Intent(FileDisplayActivity.this, UploadFilesActivity.class); - action.putExtra(UploadFilesActivity.EXTRA_ACCOUNT, FileDisplayActivity.this.getAccount()); - startActivityForResult(action, ACTION_SELECT_MULTIPLE_FILES); - // } else { - // TODO create and handle new fragment - // LocalFileListFragment - // } - } else if (item == 1) { - Intent action = new Intent(Intent.ACTION_GET_CONTENT); - action = action.setType("*/*").addCategory(Intent.CATEGORY_OPENABLE); - //Intent.EXTRA_ALLOW_MULTIPLE is only supported on api level 18+, Jelly Bean - if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { - action.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); - } - startActivityForResult(Intent.createChooser(action, getString(R.string.upload_chooser_title)), - ACTION_SELECT_CONTENT_FROM_APPS); - } - } - }); - dialog = builder.create(); - break; - } - case DIALOG_CERT_NOT_SAVED: { - builder = new AlertDialog.Builder(this); - builder.setMessage(getResources().getString(R.string.ssl_validator_not_saved)); - builder.setCancelable(false); - builder.setPositiveButton(R.string.common_ok, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - }; - }); - dialog = builder.create(); - break; - } - default: - dialog = null; - } - - return dialog; - } - - /** - * Translates a content URI of an content to a physical path on the disk - * - * @param uri The URI to resolve - * @return The path to the content or null if it could not be found - */ - public String getPath(Uri uri) { - final boolean isKitKatOrLater = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT; - - // DocumentProvider - if (isKitKatOrLater && DocumentsContract.isDocumentUri(getApplicationContext(), uri)) { - // ExternalStorageProvider - if (UriUtils.isExternalStorageDocument(uri)) { - final String docId = DocumentsContract.getDocumentId(uri); - final String[] split = docId.split(":"); - final String type = split[0]; - - if ("primary".equalsIgnoreCase(type)) { - return Environment.getExternalStorageDirectory() + "/" + split[1]; - } - } - // DownloadsProvider - else if (UriUtils.isDownloadsDocument(uri)) { - - final String id = DocumentsContract.getDocumentId(uri); - final Uri contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"), - Long.valueOf(id)); - - return UriUtils.getDataColumn(getApplicationContext(), contentUri, null, null); - } - // MediaProvider - else if (UriUtils.isMediaDocument(uri)) { - final String docId = DocumentsContract.getDocumentId(uri); - final String[] split = docId.split(":"); - final String type = split[0]; - - Uri contentUri = null; - if ("image".equals(type)) { - contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; - } else if ("video".equals(type)) { - contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI; - } else if ("audio".equals(type)) { - contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; - } - - final String selection = "_id=?"; - final String[] selectionArgs = new String[] { split[1] }; - - return UriUtils.getDataColumn(getApplicationContext(), contentUri, selection, selectionArgs); - } - // Documents providers returned as content://... - else if (UriUtils.isContentDocument(uri)) { - return uri.toString(); - } - } - // MediaStore (and general) - else if ("content".equalsIgnoreCase(uri.getScheme())) { - - // Return the remote address - if (UriUtils.isGooglePhotosUri(uri)) - return uri.getLastPathSegment(); - - return UriUtils.getDataColumn(getApplicationContext(), uri, null, null); - } - // File - else if ("file".equalsIgnoreCase(uri.getScheme())) { - return uri.getPath(); - } - return null; + Log_OC.v(TAG, "onPause() end"); } /** @@ -1110,40 +953,34 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { (synchResult.isException() && synchResult.getException() instanceof AuthenticatorException))) { - OwnCloudClient client = null; + try { - OwnCloudAccount ocAccount = + OwnCloudClient client; + OwnCloudAccount ocAccount = new OwnCloudAccount(getAccount(), context); client = (OwnCloudClientManagerFactory.getDefaultSingleton(). removeClientFor(ocAccount)); - // TODO get rid of these exceptions - } catch (AccountNotFoundException e) { - e.printStackTrace(); - } catch (AuthenticatorException e) { - e.printStackTrace(); - } catch (OperationCanceledException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - - if (client != null) { - OwnCloudCredentials cred = client.getCredentials(); - if (cred != null) { - AccountManager am = AccountManager.get(context); - if (cred.authTokenExpires()) { - am.invalidateAuthToken( - getAccount().type, - cred.getAuthToken() - ); - } else { - am.clearPassword(getAccount()); + + if (client != null) { + OwnCloudCredentials cred = client.getCredentials(); + if (cred != null) { + AccountManager am = AccountManager.get(context); + if (cred.authTokenExpires()) { + am.invalidateAuthToken( + getAccount().type, + cred.getAuthToken() + ); + } else { + am.clearPassword(getAccount()); + } } } + requestCredentialsUpdate(); + + } catch (AccountNotFoundException e) { + Log_OC.e(TAG, "Account " + getAccount() + " was removed!", e); } - - requestCredentialsUpdate(); - + } } removeStickyBroadcast(intent); @@ -1262,7 +1099,7 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { */ private class DownloadFinishReceiver extends BroadcastReceiver { - int refreshCounter = 0; + //int refreshCounter = 0; @Override public void onReceive(Context context, Intent intent) { try { @@ -1273,7 +1110,7 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { if (sameAccount && isDescendant) { String linkedToRemotePath = intent.getStringExtra(FileDownloader.EXTRA_LINKED_TO_PATH); if (linkedToRemotePath == null || isAscendant(linkedToRemotePath)) { - Log_OC.v(TAG, "NOW: refresh #" + ++refreshCounter); + //Log_OC.v(TAG, "refresh #" + ++refreshCounter); refreshListOfFilesFragment(); } refreshSecondFragment( @@ -1388,7 +1225,11 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { * TODO */ private void updateNavigationElementsInActionBar(OCFile chosenFile) { - ActionBar actionBar = getSupportActionBar(); + ActionBar actionBar = getSupportActionBar(); + + // For adding content description tag to a title field in the action bar + int actionBarTitleId = getResources().getIdentifier("action_bar_title", "id", "android"); + if (chosenFile == null || mDualPane) { // only list of files - set for browsing through folders OCFile currentDir = getCurrentDir(); @@ -1397,6 +1238,10 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { actionBar.setDisplayShowTitleEnabled(!noRoot); if (!noRoot) { actionBar.setTitle(getString(R.string.default_display_name_for_root_folder)); + View actionBarTitleView = getWindow().getDecorView().findViewById(actionBarTitleId); + if (actionBarTitleView != null) { // it's null in Android 2.x + actionBarTitleView.setContentDescription(getString(R.string.default_display_name_for_root_folder)); + } } actionBar.setNavigationMode(!noRoot ? ActionBar.NAVIGATION_MODE_STANDARD : ActionBar.NAVIGATION_MODE_LIST); actionBar.setListNavigationCallbacks(mDirectories, this); // assuming mDirectories is updated @@ -1406,6 +1251,11 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { actionBar.setDisplayShowTitleEnabled(true); actionBar.setTitle(chosenFile.getFileName()); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); + View actionBarTitleView = getWindow().getDecorView().findViewById(actionBarTitleId); + if (actionBarTitleView != null) { // it's null in Android 2.x + getWindow().getDecorView().findViewById(actionBarTitleId). + setContentDescription(chosenFile.getFileName()); + } } } @@ -1462,23 +1312,6 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { } }; - - - /** - * Launch an intent to request the PIN code to the user before letting him use the app - */ - private void requestPinCode() { - boolean pinStart = false; - SharedPreferences appPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); - pinStart = appPrefs.getBoolean("set_pincode", false); - if (pinStart) { - Intent i = new Intent(getApplicationContext(), PinCodeActivity.class); - i.putExtra(PinCodeActivity.EXTRA_ACTIVITY, "FileDisplayActivity"); - startActivity(i); - } - } - - @Override public void onSavedCertificate() { startSyncFolderOperation(getCurrentDir(), false); @@ -1487,7 +1320,10 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { @Override public void onFailedSavingCertificate() { - showDialog(DIALOG_CERT_NOT_SAVED); + ConfirmationDialogFragment dialog = ConfirmationDialogFragment.newInstance( + R.string.ssl_validator_not_saved, new String[]{}, R.string.common_ok, -1, -1 + ); + dialog.show(getSupportFragmentManager(), DIALOG_CERT_NOT_SAVED); } @Override @@ -1763,7 +1599,8 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { if (file.isFolder()) { return file; } else if (getStorageManager() != null) { - String parentPath = file.getRemotePath().substring(0, file.getRemotePath().lastIndexOf(file.getFileName())); + String parentPath = file.getRemotePath().substring(0, + file.getRemotePath().lastIndexOf(file.getFileName())); return getStorageManager().getFileByPath(parentPath); } } @@ -1785,7 +1622,7 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { getAccount(), getApplicationContext() ); - synchFolderOp.execute(getAccount(), this, null, null); + synchFolderOp.execute(getAccount(), MainApp.getAppContext(), this, null, null); setSupportProgressBarIndeterminateVisibility(true); @@ -1797,7 +1634,8 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { */ public void showUntrustedCertDialog(RemoteOperationResult result) { // Show a dialog with the certificate info - SslUntrustedCertDialog dialog = SslUntrustedCertDialog.newInstanceForFullSslError((CertificateCombinedException)result.getException()); + SslUntrustedCertDialog dialog = SslUntrustedCertDialog.newInstanceForFullSslError( + (CertificateCombinedException)result.getException()); FragmentManager fm = getSupportFragmentManager(); FragmentTransaction ft = fm.beginTransaction(); dialog.show(ft, DIALOG_UNTRUSTED_CERT); @@ -1925,4 +1763,5 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { private void sortByName(boolean ascending){ getListOfFilesFragment().sortByName(ascending); } + }