Merge remote-tracking branch 'upstream/develop' into us4_view_text_files
[pub/Android/ownCloud.git] / src / com / owncloud / android / ui / preview / PreviewTextFragment.java
index d0a678c..1be6399 100644 (file)
@@ -3,10 +3,12 @@ package com.owncloud.android.ui.preview;
 import android.accounts.Account;
 import android.os.AsyncTask;
 import android.os.Bundle;
+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.View;
 import android.view.ViewGroup;
-import android.widget.ProgressBar;
 import android.widget.ScrollView;
 import android.widget.TextView;
 
@@ -19,6 +21,7 @@ import com.owncloud.android.files.FileMenuFilter;
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.ui.activity.FileDisplayActivity;
 import com.owncloud.android.ui.dialog.ConfirmationDialogFragment;
+import com.owncloud.android.ui.dialog.LoadingDialog;
 import com.owncloud.android.ui.dialog.RemoveFileDialogFragment;
 import com.owncloud.android.ui.fragment.FileFragment;
 
@@ -35,8 +38,6 @@ public class PreviewTextFragment extends FileFragment {
 
     private Account mAccount;
     private TextView mTextPreview;
-    private ProgressBar mProgressBar;
-    private ScrollView mScrollView;
 
     /**
      * Creates an empty fragment for previews.
@@ -64,9 +65,7 @@ public class PreviewTextFragment extends FileFragment {
 
         View ret = inflater.inflate(R.layout.text_file_preview, container, false);
 
-        mScrollView = (ScrollView) ret.findViewById(R.id.text_scrollview);
         mTextPreview = (TextView) ret.findViewById(R.id.text_preview);
-        mProgressBar = (ProgressBar) ret.findViewById(R.id.progress_bar);
 
         return ret;
     }
@@ -118,23 +117,22 @@ public class PreviewTextFragment extends FileFragment {
     public void onStart() {
         super.onStart();
         Log_OC.e(TAG, "onStart");
-
-        loadAndShowTextPreview(getFile().getStoragePath(), mTextPreview);
     }
 
-    private void loadAndShowTextPreview(String location, TextView textView) {
-        new TextLoadAsyncTask().execute(location, textView);
+    private void loadAndShowTextPreview() {
+        new TextLoadAsyncTask().execute(getFile().getStoragePath(), mTextPreview);
     }
 
     /**
      * Reads the file to preview and shows its contents. Too critical to be anonymous.
      */
     private class TextLoadAsyncTask extends AsyncTask<Object, Void, StringWriter> {
-        TextView mTextView;
+        private final String DIALOG_WAIT_TAG = "DIALOG_WAIT";
+        private TextView mTextView;
 
         @Override
         protected void onPreExecute() {
-            mProgressBar.setVisibility(View.VISIBLE);
+            showLoadingDialog();
         }
 
         @Override
@@ -177,10 +175,31 @@ public class PreviewTextFragment extends FileFragment {
 
         @Override
         protected void onPostExecute(final StringWriter stringWriter) {
-            super.onPostExecute(stringWriter);
-            mProgressBar.setVisibility(View.GONE);
-            mScrollView.setVisibility(View.VISIBLE);
             mTextView.setText(new String(stringWriter.getBuffer()));
+            mTextView.setVisibility(View.VISIBLE);
+            dismissLoadingDialog();
+        }
+
+        /**
+         * 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);
+        }
+
+        /**
+         * Dismiss loading dialog
+         */
+        public void dismissLoadingDialog() {
+            Fragment frag = getActivity().getSupportFragmentManager().findFragmentByTag(DIALOG_WAIT_TAG);
+            if (frag != null) {
+                LoadingDialog loading = (LoadingDialog) frag;
+                loading.dismiss();
+            }
         }
     }
 
@@ -230,6 +249,30 @@ public class PreviewTextFragment extends FileFragment {
             item.setVisible(false);
             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);
+            item.setEnabled(false);
+        }
+
+        item = menu.findItem(R.id.action_sync_account);
+        if (item != null) {
+            item.setVisible(false);
+            item.setEnabled(false);
+        }
     }
 
     /**
@@ -276,7 +319,7 @@ public class PreviewTextFragment extends FileFragment {
     /**
      * Update the file of the fragment with file value
      *
-     * @param file
+     * @param file The new file to set
      */
     public void updateFile(OCFile file) {
         setFile(file);
@@ -300,6 +343,8 @@ public class PreviewTextFragment extends FileFragment {
     public void onResume() {
         super.onResume();
         Log_OC.e(TAG, "onResume");
+
+        loadAndShowTextPreview();
     }
 
     @Override
@@ -336,6 +381,11 @@ public class PreviewTextFragment extends FileFragment {
      * Finishes the preview
      */
     private void finish() {
-        getSherlockActivity().onBackPressed();
+        getActivity().runOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                getSherlockActivity().onBackPressed();
+            }
+        });
     }
 }