X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/477c7a6b0a7c6b8300db4e3bedd890eaba718124..0bd47a3fb5629f49bbcb72f7860a7fefcf17c9c0:/src/com/owncloud/android/ui/activity/FileActivity.java diff --git a/src/com/owncloud/android/ui/activity/FileActivity.java b/src/com/owncloud/android/ui/activity/FileActivity.java index 3edd40c9..275f5d63 100644 --- a/src/com/owncloud/android/ui/activity/FileActivity.java +++ b/src/com/owncloud/android/ui/activity/FileActivity.java @@ -43,7 +43,6 @@ import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.AppCompatActivity; -import android.util.Log; import android.view.View; import android.widget.AdapterView; import android.widget.ListView; @@ -68,10 +67,12 @@ 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.CreateShareOperation; +import com.owncloud.android.operations.CreateShareViaLinkOperation; +import com.owncloud.android.operations.CreateShareWithShareeOperation; +import com.owncloud.android.operations.GetSharesForFileOperation; import com.owncloud.android.operations.SynchronizeFileOperation; import com.owncloud.android.operations.SynchronizeFolderOperation; -import com.owncloud.android.operations.UnshareLinkOperation; +import com.owncloud.android.operations.UnshareOperation; import com.owncloud.android.services.OperationsService; import com.owncloud.android.services.OperationsService.OperationsServiceBinder; import com.owncloud.android.ui.NavigationDrawerItem; @@ -100,12 +101,13 @@ public class FileActivity extends AppCompatActivity public static final String TAG = FileActivity.class.getSimpleName(); private static final String DIALOG_WAIT_TAG = "DIALOG_WAIT"; + private static final String KEY_WAITING_FOR_OP_ID = "WAITING_FOR_OP_ID"; private static final String DIALOG_SHARE_PASSWORD = "DIALOG_SHARE_PASSWORD"; private static final String KEY_TRY_SHARE_AGAIN = "TRY_SHARE_AGAIN"; private static final String KEY_ACTION_BAR_TITLE = "ACTION_BAR_TITLE"; - protected static final long DELAY_TO_REQUEST_OPERATION_ON_ACTIVITY_RESULTS = 200; + protected static final long DELAY_TO_REQUEST_OPERATIONS_LATER = 200; /** OwnCloud {@link Account} where the main {@link OCFile} handled by the activity is located.*/ @@ -182,7 +184,9 @@ public class FileActivity extends AppCompatActivity savedInstanceState.getLong(KEY_WAITING_FOR_OP_ID, Long.MAX_VALUE) ); mTryShareAgain = savedInstanceState.getBoolean(KEY_TRY_SHARE_AGAIN); - getSupportActionBar().setTitle(savedInstanceState.getString(KEY_ACTION_BAR_TITLE)); + if (getSupportActionBar() != null) { + getSupportActionBar().setTitle(savedInstanceState.getString(KEY_ACTION_BAR_TITLE)); + } } else { account = getIntent().getParcelableExtra(FileActivity.EXTRA_ACCOUNT); mFile = getIntent().getParcelableExtra(FileActivity.EXTRA_FILE); @@ -383,18 +387,17 @@ public class FileActivity extends AppCompatActivity mDrawerItems.add(new NavigationDrawerItem(mDrawerTitles[0], mDrawerContentDescriptions[0], R.drawable.ic_folder_open)); - // TODO Enable when "On Device" is recovered // On Device - //mDrawerItems.add(new NavigationDrawerItem(mDrawerTitles[2], - // mDrawerContentDescriptions[2])); + mDrawerItems.add(new NavigationDrawerItem(mDrawerTitles[1], mDrawerContentDescriptions[1], + R.drawable.ic_action_download_grey)); // Settings - mDrawerItems.add(new NavigationDrawerItem(mDrawerTitles[1], mDrawerContentDescriptions[1], - R.drawable.ic_settings)); + mDrawerItems.add(new NavigationDrawerItem(mDrawerTitles[2], mDrawerContentDescriptions[2], + R.drawable.ic_action_settings)); // Logs if (BuildConfig.DEBUG) { - mDrawerItems.add(new NavigationDrawerItem(mDrawerTitles[2], - mDrawerContentDescriptions[2],R.drawable.ic_log)); + mDrawerItems.add(new NavigationDrawerItem(mDrawerTitles[3], + mDrawerContentDescriptions[3],R.drawable.ic_log)); } // setting the nav drawer list adapter @@ -561,7 +564,7 @@ public class FileActivity extends AppCompatActivity outState.putBoolean(FileActivity.EXTRA_FROM_NOTIFICATION, mFromNotification); outState.putLong(KEY_WAITING_FOR_OP_ID, mFileOperationsHelper.getOpIdWaitingFor()); outState.putBoolean(KEY_TRY_SHARE_AGAIN, mTryShareAgain); - if(getSupportActionBar().getTitle() != null) { + if(getSupportActionBar() != null && getSupportActionBar().getTitle() != null) { // Null check in case the actionbar is used in ActionBar.NAVIGATION_MODE_LIST // since it doesn't have a title then outState.putString(KEY_ACTION_BAR_TITLE, getSupportActionBar().getTitle().toString()); @@ -719,6 +722,8 @@ public class FileActivity extends AppCompatActivity mFileOperationsHelper.setOpIdWaitingFor(Long.MAX_VALUE); + dismissLoadingDialog(); + if (!result.isSuccess() && ( result.getCode() == ResultCode.UNAUTHORIZED || result.isIdPRedirection() || @@ -736,18 +741,37 @@ public class FileActivity extends AppCompatActivity } mTryShareAgain = false; - } else if (operation instanceof CreateShareOperation) { - onCreateShareOperationFinish((CreateShareOperation) operation, result); + } else if (operation == null || + operation instanceof CreateShareWithShareeOperation || + operation instanceof UnshareOperation || + operation instanceof SynchronizeFolderOperation + ) { + if (result.isSuccess()) { + updateFileFromDB(); - } else if (operation instanceof UnshareLinkOperation) { - onUnshareLinkOperationFinish((UnshareLinkOperation)operation, result); + } else if (result.getCode() != ResultCode.CANCELLED) { + Toast t = Toast.makeText(this, + ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()), + Toast.LENGTH_LONG); + t.show(); + } - } else if (operation instanceof SynchronizeFolderOperation) { - onSynchronizeFolderOperationFinish((SynchronizeFolderOperation)operation, result); + } else if (operation instanceof CreateShareViaLinkOperation) { + onCreateShareViaLinkOperationFinish((CreateShareViaLinkOperation) operation, result); - }else if (operation instanceof SynchronizeFileOperation) { - onSynchronizeFileOperationFinish((SynchronizeFileOperation)operation, result); + } else if (operation instanceof SynchronizeFileOperation) { + onSynchronizeFileOperationFinish((SynchronizeFileOperation) operation, result); + } else if (operation instanceof GetSharesForFileOperation) { + if (result.isSuccess()) { + updateFileFromDB(); + + } else if (result.getCode() != ResultCode.SHARE_NOT_FOUND) { + Toast t = Toast.makeText(this, + ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()), + Toast.LENGTH_LONG); + t.show(); + } } } @@ -763,14 +787,13 @@ public class FileActivity extends AppCompatActivity - private void onCreateShareOperationFinish(CreateShareOperation operation, - RemoteOperationResult result) { - dismissLoadingDialog(); + private void onCreateShareViaLinkOperationFinish(CreateShareViaLinkOperation operation, + RemoteOperationResult result) { if (result.isSuccess()) { mTryShareAgain = false; updateFileFromDB(); - Intent sendIntent = operation.getSendIntent(); + Intent sendIntent = operation.getSendIntentWithSubject(this); startActivity(sendIntent); } else { // Detect Failure (403) --> needs Password @@ -796,34 +819,8 @@ public class FileActivity extends AppCompatActivity } } - - private void onUnshareLinkOperationFinish(UnshareLinkOperation operation, - RemoteOperationResult result) { - dismissLoadingDialog(); - - if (result.isSuccess()){ - updateFileFromDB(); - - } else { - Toast t = Toast.makeText(this, ErrorMessageAdapter.getErrorCauseMessage(result, - operation, getResources()), Toast.LENGTH_LONG); - t.show(); - } - } - - private void onSynchronizeFolderOperationFinish( - SynchronizeFolderOperation operation, RemoteOperationResult result - ) { - if (!result.isSuccess() && result.getCode() != ResultCode.CANCELLED){ - Toast t = Toast.makeText(this, ErrorMessageAdapter.getErrorCauseMessage(result, - operation, getResources()), Toast.LENGTH_LONG); - t.show(); - } - } - private void onSynchronizeFileOperationFinish(SynchronizeFileOperation operation, RemoteOperationResult result) { - dismissLoadingDialog(); OCFile syncedFile = operation.getLocalFile(); if (!result.isSuccess()) { if (result.getCode() == ResultCode.SYNC_CONFLICT) { @@ -855,9 +852,9 @@ public class FileActivity extends AppCompatActivity /** * Show loading dialog */ - public void showLoadingDialog() { + public void showLoadingDialog(String message) { // Construct dialog - LoadingDialog loading = new LoadingDialog(getResources().getString(R.string.wait_a_moment)); + LoadingDialog loading = new LoadingDialog(message); FragmentManager fm = getSupportFragmentManager(); FragmentTransaction ft = fm.beginTransaction(); loading.show(ft, DIALOG_WAIT_TAG); @@ -871,6 +868,7 @@ public class FileActivity extends AppCompatActivity public void dismissLoadingDialog() { Fragment frag = getSupportFragmentManager().findFragmentByTag(DIALOG_WAIT_TAG); if (frag != null) { + Log_OC.d(TAG, "dismiss loading dialog"); LoadingDialog loading = (LoadingDialog) frag; loading.dismiss(); } @@ -940,6 +938,12 @@ public class FileActivity extends AppCompatActivity startActivity(i); } + public void refresh(){ + Intent i = new Intent(this, FileDisplayActivity.class); + i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + startActivity(i); + } + // TODO re-enable when "Accounts" is available in Navigation Drawer // public void closeDrawer() { // mDrawerLayout.closeDrawers(); @@ -949,6 +953,10 @@ public class FileActivity extends AppCompatActivity restart(); } + public void refreshDirectory(){ + // overridden by FileDisplayActivity + } + private class DrawerItemClickListener implements ListView.OnItemClickListener { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { @@ -965,24 +973,25 @@ public class FileActivity extends AppCompatActivity // break; case 0: // All Files - allFilesOption(); + MainApp.showOnlyFilesOnDevice(false); + refreshDirectory(); mDrawerLayout.closeDrawers(); break; - // TODO Enable when "On Device" is recovered ? -// case 2: -// MainApp.showOnlyFilesOnDevice(true); -// mDrawerLayout.closeDrawers(); -// break; + case 1: // On Device + MainApp.showOnlyFilesOnDevice(true); + refreshDirectory(); + mDrawerLayout.closeDrawers(); + break; - case 1: // Settings + case 2: // Settings Intent settingsIntent = new Intent(getApplicationContext(), Preferences.class); startActivity(settingsIntent); mDrawerLayout.closeDrawers(); break; - case 2: // Logs + case 3: // Logs Intent loggerIntent = new Intent(getApplicationContext(), LogHistoryActivity.class); startActivity(loggerIntent);