X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/aae90eb1aa42a11449e30330e3e23e1e9e5eebb6..c2ee5dbff97aac76fe4fce7069709ac24cdeb0db:/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 63298334..a5b324f3 100644 --- a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java +++ b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java @@ -21,12 +21,12 @@ package com.owncloud.android.ui.activity; import java.io.File; import java.io.IOException; -import org.apache.commons.httpclient.methods.PostMethod; - 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; @@ -43,6 +43,7 @@ import android.content.SyncRequest; import android.content.res.Resources.NotFoundException; import android.database.Cursor; import android.net.Uri; +import android.os.Build; import android.os.Bundle; import android.os.IBinder; import android.preference.PreferenceManager; @@ -50,8 +51,6 @@ 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.widget.SwipeRefreshLayout; -import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; @@ -64,6 +63,7 @@ import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuInflater; import com.actionbarsherlock.view.MenuItem; import com.actionbarsherlock.view.Window; +import com.owncloud.android.BuildConfig; import com.owncloud.android.MainApp; import com.owncloud.android.R; import com.owncloud.android.datamodel.OCFile; @@ -80,6 +80,7 @@ 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; +import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.operations.CreateFolderOperation; import com.owncloud.android.operations.CreateShareOperation; import com.owncloud.android.operations.MoveFileOperation; @@ -90,6 +91,7 @@ import com.owncloud.android.operations.SynchronizeFolderOperation; 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.CreateFolderDialogFragment; import com.owncloud.android.ui.dialog.SslUntrustedCertDialog; import com.owncloud.android.ui.dialog.SslUntrustedCertDialog.OnSslUntrustedCertListener; @@ -102,7 +104,6 @@ import com.owncloud.android.ui.preview.PreviewMediaFragment; import com.owncloud.android.ui.preview.PreviewVideoActivity; import com.owncloud.android.utils.DisplayUtils; import com.owncloud.android.utils.ErrorMessageAdapter; -import com.owncloud.android.utils.Log_OC; /** @@ -114,7 +115,7 @@ import com.owncloud.android.utils.Log_OC; public class FileDisplayActivity extends HookActivity implements FileFragment.ContainerActivity, OnNavigationListener, -OnSslUntrustedCertListener, SwipeRefreshLayout.OnRefreshListener { +OnSslUntrustedCertListener, OnEnforceableRefreshListener { private ArrayAdapter mDirectories; @@ -153,7 +154,7 @@ OnSslUntrustedCertListener, SwipeRefreshLayout.OnRefreshListener { private String DIALOG_UNTRUSTED_CERT; private OCFile mWaitingToSend; - + @Override protected void onCreate(Bundle savedInstanceState) { Log_OC.d(TAG, "onCreate() start"); @@ -251,7 +252,7 @@ OnSslUntrustedCertListener, SwipeRefreshLayout.OnRefreshListener { Log_OC.e(TAG, "Initializing Fragments in onAccountChanged.."); initFragmentsWithFile(); if (file.isFolder()) { - startSyncFolderOperation(file); + startSyncFolderOperation(file, false); } } else { @@ -292,7 +293,7 @@ OnSslUntrustedCertListener, SwipeRefreshLayout.OnRefreshListener { if (listOfFiles != null) { listOfFiles.listDirectory(getCurrentDir()); } else { - Log.e(TAG, "Still have a chance to lose the initializacion of list fragment >("); + Log_OC.e(TAG, "Still have a chance to lose the initializacion of list fragment >("); } /// Second fragment @@ -308,12 +309,12 @@ OnSslUntrustedCertListener, SwipeRefreshLayout.OnRefreshListener { } } else { - Log.wtf(TAG, "initFragments() called with invalid NULLs!"); + Log_OC.wtf(TAG, "initFragments() called with invalid NULLs!"); if (getAccount() == null) { - Log.wtf(TAG, "\t account is NULL"); + Log_OC.wtf(TAG, "\t account is NULL"); } if (getFile() == null) { - Log.wtf(TAG, "\t file is NULL"); + Log_OC.wtf(TAG, "\t file is NULL"); } } } @@ -452,6 +453,16 @@ OnSslUntrustedCertListener, SwipeRefreshLayout.OnRefreshListener { } @Override + public boolean onPrepareOptionsMenu(Menu menu) { + if (BuildConfig.DEBUG) { + menu.findItem(R.id.action_logger).setVisible(true); + } else { + menu.findItem(R.id.action_logger).setVisible(false); + } + return super.onPrepareOptionsMenu(menu); + } + + @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getSherlock().getMenuInflater(); inflater.inflate(R.menu.main_menu, menu); @@ -481,6 +492,11 @@ OnSslUntrustedCertListener, SwipeRefreshLayout.OnRefreshListener { startActivity(settingsIntent); break; } + case R.id.action_logger: { + Intent loggerIntent = new Intent(getApplicationContext(),LogHistoryActivity.class); + startActivity(loggerIntent); + break; + } case android.R.id.home: { FileFragment second = getSecondFragment(); OCFile currentDir = getCurrentDir(); @@ -491,6 +507,40 @@ OnSslUntrustedCertListener, SwipeRefreshLayout.OnRefreshListener { } break; } + case R.id.action_sort: { + SharedPreferences appPreferences = PreferenceManager + .getDefaultSharedPreferences(this); + + // Read sorting order, default to sort by name ascending + Integer sortOrder = appPreferences + .getInt("sortOrder", FileListListAdapter.SORT_NAME); + + AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setTitle(R.string.actionbar_sort_title) + .setSingleChoiceItems(R.array.actionbar_sortby, sortOrder , new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + + switch (which){ + case 0: + sortByName(true); + break; + case 1: + sortByDate(false); + break; + +// TODO re-enable when server-side folder size calculation is available +// case 2: +// sortBySize(false); +// break; + } + + dialog.dismiss(); + + } + }); + builder.create().show(); + break; + } default: retval = super.onOptionsItemSelected(item); } @@ -546,13 +596,23 @@ OnSslUntrustedCertListener, SwipeRefreshLayout.OnRefreshListener { /** * Called, when the user selected something for uploading + * */ + @TargetApi(Build.VERSION_CODES.JELLY_BEAN) 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)) { - requestSimpleUpload(data, resultCode); - + //getClipData is only supported on api level 16+ + if (data.getData() == null && Build.VERSION.SDK_INT >= 16){ + for( int i = 0; i < data.getClipData().getItemCount(); i++){ + Intent intent = new Intent(); + intent.setData(data.getClipData().getItemAt(i).getUri()); + requestSimpleUpload(intent, resultCode); + } + }else { + requestSimpleUpload(data, resultCode); + } } else if (requestCode == ACTION_SELECT_MULTIPLE_FILES && (resultCode == RESULT_OK || resultCode == UploadFilesActivity.RESULT_OK_AND_MOVE)) { requestMultipleUpload(data, resultCode); @@ -791,6 +851,10 @@ OnSslUntrustedCertListener, SwipeRefreshLayout.OnRefreshListener { } 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+ + if(Build.VERSION.SDK_INT >= 18) { + action.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); + } startActivityForResult(Intent.createChooser(action, getString(R.string.upload_chooser_title)), ACTION_SELECT_CONTENT_FROM_APPS); } @@ -1026,7 +1090,7 @@ OnSslUntrustedCertListener, SwipeRefreshLayout.OnRefreshListener { } ocFileListFragment.setMessageForEmptyList(getString(message)); } else { - Log.e(TAG, "OCFileListFragment is null"); + Log_OC.e(TAG, "OCFileListFragment is null"); } } @@ -1153,7 +1217,7 @@ OnSslUntrustedCertListener, SwipeRefreshLayout.OnRefreshListener { OCFile root = getStorageManager().getFileByPath(OCFile.ROOT_PATH); listOfFiles.listDirectory(root); setFile(listOfFiles.getCurrentFile()); - startSyncFolderOperation(root); + startSyncFolderOperation(root, false); } cleanSecondFragment(); } @@ -1168,7 +1232,7 @@ OnSslUntrustedCertListener, SwipeRefreshLayout.OnRefreshListener { setNavigationListWithFolder(folder); listOfFiles.listDirectory(folder); setFile(listOfFiles.getCurrentFile()); - startSyncFolderOperation(folder); + startSyncFolderOperation(folder, false); } else { Log_OC.e(TAG, "Unexpected null when accessing list fragment"); } @@ -1187,7 +1251,7 @@ OnSslUntrustedCertListener, SwipeRefreshLayout.OnRefreshListener { cleanSecondFragment(); // Sync Folder - startSyncFolderOperation(directory); + startSyncFolderOperation(directory, false); } @@ -1304,7 +1368,7 @@ OnSslUntrustedCertListener, SwipeRefreshLayout.OnRefreshListener { @Override public void onSavedCertificate() { - startSyncFolderOperation(getCurrentDir()); + startSyncFolderOperation(getCurrentDir(), false); } @@ -1592,7 +1656,7 @@ OnSslUntrustedCertListener, SwipeRefreshLayout.OnRefreshListener { return null; } - public void startSyncFolderOperation(OCFile folder) { + public void startSyncFolderOperation(OCFile folder, boolean ignoreETag) { long currentSyncTime = System.currentTimeMillis(); mSyncInProgress = true; @@ -1602,6 +1666,7 @@ OnSslUntrustedCertListener, SwipeRefreshLayout.OnRefreshListener { currentSyncTime, false, getFileOperationsHelper().isSharedSupported(), + ignoreETag, getStorageManager(), getAccount(), getApplicationContext() @@ -1714,16 +1779,36 @@ OnSslUntrustedCertListener, SwipeRefreshLayout.OnRefreshListener { } @Override + public void onRefresh(boolean ignoreETag) { + refreshList(ignoreETag); + } + + @Override public void onRefresh() { + refreshList(true); + } + + private void refreshList(boolean ignoreETag) { OCFileListFragment listOfFiles = getListOfFilesFragment(); if (listOfFiles != null) { OCFile folder = listOfFiles.getCurrentFile(); if (folder != null) { /*mFile = mContainerActivity.getStorageManager().getFileById(mFile.getFileId()); listDirectory(mFile);*/ - startSyncFolderOperation(folder); + startSyncFolderOperation(folder, ignoreETag); } } } + private void sortByDate(boolean ascending){ + getListOfFilesFragment().sortByDate(ascending); + } + + private void sortBySize(boolean ascending){ + getListOfFilesFragment().sortBySize(ascending); + } + + private void sortByName(boolean ascending){ + getListOfFilesFragment().sortByName(ascending); + } }