X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/1508e99e9ab6e43de4686ce521e22487ccccfb69..080a8ab7af2bc48e3c5fa1334ae91d21073e26c2:/src/com/owncloud/android/ui/preview/PreviewTextFragment.java diff --git a/src/com/owncloud/android/ui/preview/PreviewTextFragment.java b/src/com/owncloud/android/ui/preview/PreviewTextFragment.java index 04641198..a07d3dff 100644 --- a/src/com/owncloud/android/ui/preview/PreviewTextFragment.java +++ b/src/com/owncloud/android/ui/preview/PreviewTextFragment.java @@ -7,14 +7,13 @@ import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; -import android.widget.ScrollView; import android.widget.TextView; -import com.actionbarsherlock.view.Menu; -import com.actionbarsherlock.view.MenuInflater; -import com.actionbarsherlock.view.MenuItem; import com.owncloud.android.R; import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.files.FileMenuFilter; @@ -29,6 +28,9 @@ import java.io.BufferedWriter; import java.io.FileInputStream; import java.io.IOException; import java.io.StringWriter; +import java.lang.ref.WeakReference; +import java.util.LinkedList; +import java.util.List; import java.util.Scanner; public class PreviewTextFragment extends FileFragment { @@ -38,6 +40,7 @@ public class PreviewTextFragment extends FileFragment { private Account mAccount; private TextView mTextPreview; + private TextLoadAsyncTask mTextLoadTask; /** * Creates an empty fragment for previews. @@ -81,9 +84,9 @@ public class PreviewTextFragment extends FileFragment { Bundle args = getArguments(); - if (file == null){ + if (file == null) { file = args.getParcelable(FileDisplayActivity.EXTRA_FILE); - } + } if (mAccount == null) { mAccount = args.getParcelable(FileDisplayActivity.EXTRA_ACCOUNT); @@ -110,26 +113,35 @@ public class PreviewTextFragment extends FileFragment { @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); - outState.putParcelable(PreviewImageFragment.EXTRA_FILE, getFile()); - outState.putParcelable(PreviewImageFragment.EXTRA_ACCOUNT, mAccount); + outState.putParcelable(PreviewTextFragment.EXTRA_FILE, getFile()); + outState.putParcelable(PreviewTextFragment.EXTRA_ACCOUNT, mAccount); } @Override public void onStart() { super.onStart(); Log_OC.e(TAG, "onStart"); + + loadAndShowTextPreview(); } private void loadAndShowTextPreview() { - new TextLoadAsyncTask().execute(getFile().getStoragePath(), mTextPreview); + mTextLoadTask = new TextLoadAsyncTask(new WeakReference(mTextPreview)); + mTextLoadTask.execute(getFile().getStoragePath()); } + /** * Reads the file to preview and shows its contents. Too critical to be anonymous. */ private class TextLoadAsyncTask extends AsyncTask { private final String DIALOG_WAIT_TAG = "DIALOG_WAIT"; - private TextView mTextView; + private final WeakReference mTextViewReference; + + private TextLoadAsyncTask(WeakReference textView) { + mTextViewReference = textView; + } + @Override protected void onPreExecute() { @@ -138,10 +150,10 @@ public class PreviewTextFragment extends FileFragment { @Override protected StringWriter doInBackground(java.lang.Object... params) { - if (params.length != 2) { - throw new IllegalArgumentException("The parameters to " + TextLoadAsyncTask.class.getName() + " must be (1) the file location and (2) the text view to update");} + if (params.length != 1) { + throw new IllegalArgumentException("The parameter to " + TextLoadAsyncTask.class.getName() + " must be (1) the file location"); + } final String location = (String) params[0]; - mTextView = (TextView) params[1]; FileInputStream inputStream = null; Scanner sc = null; @@ -178,8 +190,13 @@ public class PreviewTextFragment extends FileFragment { @Override protected void onPostExecute(final StringWriter stringWriter) { - mTextView.setText(new String(stringWriter.getBuffer())); - mTextView.setVisibility(View.VISIBLE); + final TextView textView = mTextViewReference.get(); + + if (textView != null) { + textView.setText(new String(stringWriter.getBuffer())); + textView.setVisibility(View.VISIBLE); + } + dismissLoadingDialog(); } @@ -187,11 +204,20 @@ public class PreviewTextFragment extends FileFragment { * Show loading dialog */ public void showLoadingDialog() { - // Construct dialog - LoadingDialog loading = new LoadingDialog(getResources().getString(R.string.wait_a_moment)); - FragmentManager fm = getActivity().getSupportFragmentManager(); - FragmentTransaction ft = fm.beginTransaction(); - loading.show(ft, DIALOG_WAIT_TAG); + // only once + Fragment frag = getActivity().getSupportFragmentManager().findFragmentByTag(DIALOG_WAIT_TAG); + LoadingDialog loading = null; + if (frag == null) { + // Construct dialog + loading = new LoadingDialog(getResources().getString(R.string.wait_a_moment)); + FragmentManager fm = getActivity().getSupportFragmentManager(); + FragmentTransaction ft = fm.beginTransaction(); + loading.show(ft, DIALOG_WAIT_TAG); + } else { + loading = (LoadingDialog) frag; + loading.setShowsDialog(true); + } + } /** @@ -227,7 +253,7 @@ public class PreviewTextFragment extends FileFragment { getFile(), mContainerActivity.getStorageManager().getAccount(), mContainerActivity, - getSherlockActivity() + getActivity() ); mf.filter(menu); } @@ -253,18 +279,6 @@ public class PreviewTextFragment extends FileFragment { item.setEnabled(false); } - item = menu.findItem(R.id.action_settings); - if (item != null) { - item.setVisible(false); - item.setEnabled(false); - } - - item = menu.findItem(R.id.action_logger); - if (item != null) { - item.setVisible(false); - item.setEnabled(false); - } - item = menu.findItem(R.id.action_sync_file); if (item != null) { item.setVisible(false); @@ -288,6 +302,10 @@ public class PreviewTextFragment extends FileFragment { mContainerActivity.getFileOperationsHelper().shareFileWithLink(getFile()); return true; } + case R.id.action_share_with_users: { + mContainerActivity.getFileOperationsHelper().showShareFile(getFile()); + return true; + } case R.id.action_unshare_file: { mContainerActivity.getFileOperationsHelper().unshareFileWithLink(getFile()); return true; @@ -346,8 +364,6 @@ public class PreviewTextFragment extends FileFragment { public void onResume() { super.onResume(); Log_OC.e(TAG, "onResume"); - - loadAndShowTextPreview(); } @Override @@ -360,6 +376,8 @@ public class PreviewTextFragment extends FileFragment { public void onStop() { super.onStop(); Log_OC.e(TAG, "onStop"); + if (mTextLoadTask != null) + mTextLoadTask.cancel(Boolean.TRUE); } /** @@ -377,7 +395,18 @@ public class PreviewTextFragment extends FileFragment { * @return 'True' if the file can be handled by the fragment. */ public static boolean canBePreviewed(OCFile file) { - return (file != null && file.isDown() && file.isText()); + final List unsupportedTypes = new LinkedList(); + unsupportedTypes.add("text/richtext"); + unsupportedTypes.add("text/rtf"); + unsupportedTypes.add("text/vnd.abc"); + unsupportedTypes.add("text/vnd.fmi.flexstor"); + unsupportedTypes.add("text/vnd.rn-realtext"); + unsupportedTypes.add("text/vnd.wap.wml"); + unsupportedTypes.add("text/vnd.wap.wmlscript"); + return (file != null && file.isDown() && file.isText() && + !unsupportedTypes.contains(file.getMimetype()) && + !unsupportedTypes.contains(file.getMimeTypeFromName()) + ); } /** @@ -387,7 +416,7 @@ public class PreviewTextFragment extends FileFragment { getActivity().runOnUiThread(new Runnable() { @Override public void run() { - getSherlockActivity().onBackPressed(); + getActivity().onBackPressed(); } }); }