From: masensio Date: Tue, 24 Sep 2013 12:57:45 +0000 (+0200) Subject: Merge branch 'develop' into refresh_folder_contents_when_browsed_into X-Git-Tag: oc-android-1.5.5~155^2~37 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/fdf2cae2cee2f2d7e05f923da700a6d61471a081?hp=c77919b96c88830c8968e3b534e45747a153434a Merge branch 'develop' into refresh_folder_contents_when_browsed_into --- diff --git a/res/layout/loading_dialog.xml b/res/layout/loading_dialog.xml new file mode 100644 index 00000000..629d8e27 --- /dev/null +++ b/res/layout/loading_dialog.xml @@ -0,0 +1,26 @@ + + + + + + + + diff --git a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java index 26b1df52..9fb31519 100644 --- a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java +++ b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java @@ -45,6 +45,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.util.Log; import android.view.View; @@ -84,6 +85,7 @@ import com.owncloud.android.operations.SynchronizeFolderOperation; import com.owncloud.android.operations.RemoteOperationResult.ResultCode; import com.owncloud.android.syncadapter.FileSyncService; import com.owncloud.android.ui.dialog.EditNameDialog; +import com.owncloud.android.ui.dialog.LoadingDialog; import com.owncloud.android.ui.dialog.SslValidatorDialog; import com.owncloud.android.ui.dialog.EditNameDialog.EditNameDialogListener; import com.owncloud.android.ui.dialog.SslValidatorDialog.OnSslValidatorListener; @@ -129,6 +131,8 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa 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 String DIALOG_WAIT_TAG = "DIALOG_WAIT"; public static final String ACTION_DETAILS = "com.owncloud.android.ui.activity.action.DETAILS"; @@ -618,6 +622,8 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa outState.putParcelable(FileDisplayActivity.KEY_WAITING_TO_PREVIEW, mWaitingToPreview); Log_OC.d(TAG, "onSaveInstanceState() end"); } + + @Override protected void onResume() { @@ -757,6 +763,30 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa /** + * Show loading dialog + */ + public void showLoadingDialog() { + // Construct dialog + LoadingDialog loading = new LoadingDialog(getResources().getString(R.string.wait_a_moment)); + FragmentManager fm = getSupportFragmentManager(); + FragmentTransaction ft = fm.beginTransaction(); + loading.show(ft, DIALOG_WAIT_TAG); + + } + + /** + * Dismiss loading dialog + */ + public void dismissLoadingDialog(){ + Fragment frag = getSupportFragmentManager().findFragmentByTag(DIALOG_WAIT_TAG); + if (frag != null) { + LoadingDialog loading = (LoadingDialog) frag; + loading.dismiss(); + } + } + + + /** * Translates a content URI of an image to a physical path * on the disk * @param uri The URI to resolve @@ -1218,7 +1248,7 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa * @param result Result of the removal. */ private void onRemoveFileOperationFinish(RemoveFileOperation operation, RemoteOperationResult result) { - dismissDialog(DIALOG_SHORT_WAIT); + dismissLoadingDialog(); if (result.isSuccess()) { Toast msg = Toast.makeText(this, R.string.remove_success_msg, Toast.LENGTH_LONG); msg.show(); @@ -1250,11 +1280,12 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa */ private void onCreateFolderOperationFinish(CreateFolderOperation operation, RemoteOperationResult result) { if (result.isSuccess()) { - dismissDialog(DIALOG_SHORT_WAIT); + dismissLoadingDialog(); refeshListOfFilesFragment(); } else { - dismissDialog(DIALOG_SHORT_WAIT); + //dismissDialog(DIALOG_SHORT_WAIT); + dismissLoadingDialog(); try { Toast msg = Toast.makeText(FileDisplayActivity.this, R.string.create_dir_fail_msg, Toast.LENGTH_LONG); msg.show(); @@ -1274,7 +1305,7 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa * @param result Result of the renaming. */ private void onRenameFileOperationFinish(RenameFileOperation operation, RemoteOperationResult result) { - dismissDialog(DIALOG_SHORT_WAIT); + dismissLoadingDialog(); OCFile renamedFile = operation.getFile(); if (result.isSuccess()) { if (mDualPane) { @@ -1305,7 +1336,7 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa private void onSynchronizeFileOperationFinish(SynchronizeFileOperation operation, RemoteOperationResult result) { - dismissDialog(DIALOG_SHORT_WAIT); + dismissLoadingDialog(); OCFile syncedFile = operation.getLocalFile(); if (!result.isSuccess()) { if (result.getCode() == ResultCode.SYNC_CONFLICT) { @@ -1366,7 +1397,7 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa mHandler, FileDisplayActivity.this); - showDialog(DIALOG_SHORT_WAIT); + showLoadingDialog(); } } } diff --git a/src/com/owncloud/android/ui/dialog/LoadingDialog.java b/src/com/owncloud/android/ui/dialog/LoadingDialog.java new file mode 100644 index 00000000..2203e039 --- /dev/null +++ b/src/com/owncloud/android/ui/dialog/LoadingDialog.java @@ -0,0 +1,58 @@ +package com.owncloud.android.ui.dialog; + +import com.owncloud.android.R; + +import android.app.Dialog; +import android.os.Bundle; +import android.support.v4.app.DialogFragment; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.Window; +import android.widget.TextView; + +public class LoadingDialog extends DialogFragment { + + private String mMessage; + + public LoadingDialog() { + super(); + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setRetainInstance(true); + setCancelable(false); + } + + public LoadingDialog(String message) { + this.mMessage = message; + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + // Create a view by inflating desired layout + View v = inflater.inflate(R.layout.loading_dialog, container, false); + + // set value + TextView tv = (TextView) v.findViewById(R.id.loadingText); + tv.setText(mMessage); + + return v; + } + + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + Dialog dialog = super.onCreateDialog(savedInstanceState); + dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); + return dialog; + } + + @Override + public void onDestroyView() { + if (getDialog() != null && getRetainInstance()) + getDialog().setDismissMessage(null); + super.onDestroyView(); + } +} diff --git a/src/com/owncloud/android/ui/fragment/FileDetailFragment.java b/src/com/owncloud/android/ui/fragment/FileDetailFragment.java index 4c3bf677..5380a883 100644 --- a/src/com/owncloud/android/ui/fragment/FileDetailFragment.java +++ b/src/com/owncloud/android/ui/fragment/FileDetailFragment.java @@ -30,7 +30,6 @@ import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.os.Handler; -import android.support.v4.app.FragmentTransaction; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; @@ -46,11 +45,12 @@ import com.actionbarsherlock.view.MenuInflater; import com.actionbarsherlock.view.MenuItem; import com.owncloud.android.DisplayUtils; import com.owncloud.android.Log_OC; +import com.owncloud.android.R; import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.datamodel.OCFile; +import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder; import com.owncloud.android.files.services.FileObserverService; import com.owncloud.android.files.services.FileUploader; -import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder; import com.owncloud.android.files.services.FileUploader.FileUploaderBinder; import com.owncloud.android.operations.OnRemoteOperationListener; import com.owncloud.android.operations.RemoteOperation; @@ -65,8 +65,6 @@ import com.owncloud.android.ui.activity.FileDisplayActivity; import com.owncloud.android.ui.dialog.EditNameDialog; import com.owncloud.android.ui.dialog.EditNameDialog.EditNameDialogListener; -import com.owncloud.android.R; - import eu.alefzero.webdav.OnDatatransferProgressListener; /** @@ -452,8 +450,7 @@ public class FileDetailFragment extends FileFragment implements mLastRemoteOperation.execute(mAccount, getSherlockActivity(), this, mHandler, getSherlockActivity()); // update ui - boolean inDisplayActivity = getActivity() instanceof FileDisplayActivity; - getActivity().showDialog(FileDisplayActivity.DIALOG_SHORT_WAIT); + ((FileDisplayActivity) getActivity()).showLoadingDialog(); } } @@ -467,9 +464,8 @@ public class FileDetailFragment extends FileFragment implements true, mStorageManager); mLastRemoteOperation.execute(mAccount, getSherlockActivity(), this, mHandler, getSherlockActivity()); - - boolean inDisplayActivity = getActivity() instanceof FileDisplayActivity; - getActivity().showDialog(FileDisplayActivity.DIALOG_SHORT_WAIT); + + ((FileDisplayActivity) getActivity()).showLoadingDialog(); } } } @@ -761,8 +757,7 @@ public class FileDetailFragment extends FileFragment implements newFilename, new FileDataStorageManager(mAccount, getActivity().getContentResolver())); mLastRemoteOperation.execute(mAccount, getSherlockActivity(), this, mHandler, getSherlockActivity()); - boolean inDisplayActivity = getActivity() instanceof FileDisplayActivity; - getActivity().showDialog(FileDisplayActivity.DIALOG_SHORT_WAIT); + ((FileDisplayActivity) getActivity()).showLoadingDialog(); } } @@ -787,8 +782,7 @@ public class FileDetailFragment extends FileFragment implements private void onRemoveFileOperationFinish(RemoveFileOperation operation, RemoteOperationResult result) { - getActivity().dismissDialog(FileDisplayActivity.DIALOG_SHORT_WAIT); - + ((FileDisplayActivity) getActivity()).dismissLoadingDialog(); if (result.isSuccess()) { Toast msg = Toast.makeText(getActivity().getApplicationContext(), R.string.remove_success_msg, Toast.LENGTH_LONG); msg.show(); @@ -804,7 +798,7 @@ public class FileDetailFragment extends FileFragment implements } private void onRenameFileOperationFinish(RenameFileOperation operation, RemoteOperationResult result) { - getActivity().dismissDialog(FileDisplayActivity.DIALOG_SHORT_WAIT); + ((FileDisplayActivity) getActivity()).dismissLoadingDialog(); if (result.isSuccess()) { updateFileDetails(((RenameFileOperation)operation).getFile(), mAccount); @@ -826,7 +820,7 @@ public class FileDetailFragment extends FileFragment implements } private void onSynchronizeFileOperationFinish(SynchronizeFileOperation operation, RemoteOperationResult result) { - getActivity().dismissDialog(FileDisplayActivity.DIALOG_SHORT_WAIT); + ((FileDisplayActivity) getActivity()).dismissLoadingDialog(); OCFile file = getFile(); if (!result.isSuccess()) { if (result.getCode() == ResultCode.SYNC_CONFLICT) { diff --git a/src/com/owncloud/android/ui/fragment/OCFileListFragment.java b/src/com/owncloud/android/ui/fragment/OCFileListFragment.java index 45c9abd4..26e698a4 100644 --- a/src/com/owncloud/android/ui/fragment/OCFileListFragment.java +++ b/src/com/owncloud/android/ui/fragment/OCFileListFragment.java @@ -305,7 +305,7 @@ public class OCFileListFragment extends ExtendedListFragment implements EditName Account account = AccountUtils.getCurrentOwnCloudAccount(getSherlockActivity()); RemoteOperation operation = new SynchronizeFileOperation(mTargetFile, null, mContainerActivity.getStorageManager(), account, true, false, getSherlockActivity()); operation.execute(account, getSherlockActivity(), mContainerActivity, mHandler, getSherlockActivity()); - getSherlockActivity().showDialog(FileDisplayActivity.DIALOG_SHORT_WAIT); + ((FileDisplayActivity) getSherlockActivity()).showLoadingDialog(); return true; } case R.id.action_cancel_download: { @@ -450,7 +450,7 @@ public class OCFileListFragment extends ExtendedListFragment implements EditName newFilename, mContainerActivity.getStorageManager()); operation.execute(AccountUtils.getCurrentOwnCloudAccount(getSherlockActivity()), getSherlockActivity(), mContainerActivity, mHandler, getSherlockActivity()); - getActivity().showDialog(FileDisplayActivity.DIALOG_SHORT_WAIT); + ((FileDisplayActivity) getActivity()).showLoadingDialog(); } } @@ -464,7 +464,7 @@ public class OCFileListFragment extends ExtendedListFragment implements EditName mContainerActivity.getStorageManager()); operation.execute(AccountUtils.getCurrentOwnCloudAccount(getSherlockActivity()), getSherlockActivity(), mContainerActivity, mHandler, getSherlockActivity()); - getActivity().showDialog(FileDisplayActivity.DIALOG_SHORT_WAIT); + ((FileDisplayActivity) getActivity()).showLoadingDialog(); } } } diff --git a/src/com/owncloud/android/ui/preview/PreviewImageActivity.java b/src/com/owncloud/android/ui/preview/PreviewImageActivity.java index 0a603050..ef1e977c 100644 --- a/src/com/owncloud/android/ui/preview/PreviewImageActivity.java +++ b/src/com/owncloud/android/ui/preview/PreviewImageActivity.java @@ -26,6 +26,9 @@ import android.content.IntentFilter; import android.content.ServiceConnection; import android.os.Bundle; import android.os.IBinder; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentTransaction; import android.support.v4.view.ViewPager; import android.view.MotionEvent; import android.view.View; @@ -44,6 +47,7 @@ import com.owncloud.android.files.services.FileUploader; import com.owncloud.android.files.services.FileUploader.FileUploaderBinder; import com.owncloud.android.ui.activity.FileActivity; import com.owncloud.android.ui.activity.FileDisplayActivity; +import com.owncloud.android.ui.dialog.LoadingDialog; import com.owncloud.android.ui.fragment.FileFragment; import com.owncloud.android.Log_OC; @@ -63,6 +67,8 @@ public class PreviewImageActivity extends FileActivity implements FileFragment.C public static final String KEY_WAITING_TO_PREVIEW = "WAITING_TO_PREVIEW"; private static final String KEY_WAITING_FOR_BINDER = "WAITING_FOR_BINDER"; + private static final String DIALOG_WAIT_TAG = "DIALOG_WAIT"; + private DataStorageManager mStorageManager; private ViewPager mViewPager; @@ -235,27 +241,29 @@ public class PreviewImageActivity extends FileActivity implements FileFragment.C finish(); } + /** + * Show loading dialog + */ + public void showLoadingDialog() { + // Construct dialog + LoadingDialog loading = new LoadingDialog(getResources().getString(R.string.wait_a_moment)); + FragmentManager fm = getSupportFragmentManager(); + FragmentTransaction ft = fm.beginTransaction(); + loading.show(ft, DIALOG_WAIT_TAG); + + } - @Override - protected Dialog onCreateDialog(int id) { - Dialog dialog = null; - 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; - } - default: - dialog = null; + /** + * Dismiss loading dialog + */ + public void dismissLoadingDialog(){ + Fragment frag = getSupportFragmentManager().findFragmentByTag(DIALOG_WAIT_TAG); + if (frag != null) { + LoadingDialog loading = (LoadingDialog) frag; + loading.dismiss(); } - return dialog; } - /** * {@inheritDoc} */ diff --git a/src/com/owncloud/android/ui/preview/PreviewImageFragment.java b/src/com/owncloud/android/ui/preview/PreviewImageFragment.java index 9d491530..291bd4a0 100644 --- a/src/com/owncloud/android/ui/preview/PreviewImageFragment.java +++ b/src/com/owncloud/android/ui/preview/PreviewImageFragment.java @@ -56,6 +56,7 @@ import com.owncloud.android.operations.OnRemoteOperationListener; import com.owncloud.android.operations.RemoteOperation; import com.owncloud.android.operations.RemoteOperationResult; import com.owncloud.android.operations.RemoveFileOperation; +import com.owncloud.android.ui.activity.FileDisplayActivity; import com.owncloud.android.ui.fragment.ConfirmationDialogFragment; import com.owncloud.android.ui.fragment.FileFragment; @@ -379,7 +380,7 @@ public class PreviewImageFragment extends FileFragment implements OnRemoteOper mStorageManager); mLastRemoteOperation.execute(mAccount, getSherlockActivity(), this, mHandler, getSherlockActivity()); - getActivity().showDialog(PreviewImageActivity.DIALOG_SHORT_WAIT); + ((PreviewImageActivity) getActivity()).showLoadingDialog(); } } @@ -603,7 +604,7 @@ public class PreviewImageFragment extends FileFragment implements OnRemoteOper } private void onRemoveFileOperationFinish(RemoveFileOperation operation, RemoteOperationResult result) { - getActivity().dismissDialog(PreviewImageActivity.DIALOG_SHORT_WAIT); + ((PreviewImageActivity) getActivity()).dismissLoadingDialog(); if (result.isSuccess()) { Toast msg = Toast.makeText(getActivity().getApplicationContext(), R.string.remove_success_msg, Toast.LENGTH_LONG); diff --git a/src/com/owncloud/android/ui/preview/PreviewMediaFragment.java b/src/com/owncloud/android/ui/preview/PreviewMediaFragment.java index 366dd9f9..5ffd52ed 100644 --- a/src/com/owncloud/android/ui/preview/PreviewMediaFragment.java +++ b/src/com/owncloud/android/ui/preview/PreviewMediaFragment.java @@ -662,7 +662,7 @@ public class PreviewMediaFragment extends FileFragment implements mStorageManager); mLastRemoteOperation.execute(mAccount, getSherlockActivity(), this, mHandler, getSherlockActivity()); - getActivity().showDialog(FileDisplayActivity.DIALOG_SHORT_WAIT); + ((FileDisplayActivity) getActivity()).showLoadingDialog(); } } @@ -716,8 +716,7 @@ public class PreviewMediaFragment extends FileFragment implements } private void onRemoveFileOperationFinish(RemoveFileOperation operation, RemoteOperationResult result) { - getActivity().dismissDialog(FileDisplayActivity.DIALOG_SHORT_WAIT); - + ((FileDisplayActivity) getActivity()).dismissLoadingDialog(); if (result.isSuccess()) { Toast msg = Toast.makeText(getActivity().getApplicationContext(), R.string.remove_success_msg, Toast.LENGTH_LONG); msg.show();