Merge pull request #1088 from owncloud/updated_docs_about_target_of_PRs
[pub/Android/ownCloud.git] / src / com / owncloud / android / ui / activity / Uploader.java
index 9a33620..f0e0695 100644 (file)
@@ -2,6 +2,7 @@
  *   ownCloud Android client application
  *
  *   @author Bartek Przybylski
  *   ownCloud Android client application
  *
  *   @author Bartek Przybylski
+ *   @author masensio
  *   Copyright (C) 2012  Bartek Przybylski
  *   Copyright (C) 2015 ownCloud Inc.
  *
  *   Copyright (C) 2012  Bartek Przybylski
  *   Copyright (C) 2015 ownCloud Inc.
  *
@@ -55,6 +56,8 @@ import android.provider.MediaStore.Video;
 import android.support.v4.app.Fragment;
 import android.support.v4.app.FragmentManager;
 import android.support.v4.app.FragmentTransaction;
 import android.support.v4.app.Fragment;
 import android.support.v4.app.FragmentManager;
 import android.support.v4.app.FragmentTransaction;
+import android.support.v7.app.ActionBar;
+import android.view.MenuItem;
 import android.view.View;
 import android.widget.AdapterView;
 import android.widget.AdapterView.OnItemClickListener;
 import android.view.View;
 import android.widget.AdapterView;
 import android.widget.AdapterView.OnItemClickListener;
@@ -64,16 +67,14 @@ import android.widget.ListView;
 import android.widget.SimpleAdapter;
 import android.widget.Toast;
 
 import android.widget.SimpleAdapter;
 import android.widget.Toast;
 
-import com.actionbarsherlock.app.ActionBar;
-import com.actionbarsherlock.view.MenuItem;
 import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
 import com.owncloud.android.authentication.AccountAuthenticator;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.files.services.FileUploader;
 import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
 import com.owncloud.android.authentication.AccountAuthenticator;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.files.services.FileUploader;
+import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.lib.common.operations.RemoteOperation;
 import com.owncloud.android.lib.common.operations.RemoteOperationResult;
 import com.owncloud.android.lib.common.operations.RemoteOperation;
 import com.owncloud.android.lib.common.operations.RemoteOperationResult;
-import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.operations.CreateFolderOperation;
 import com.owncloud.android.ui.dialog.CreateFolderDialogFragment;
 import com.owncloud.android.ui.dialog.LoadingDialog;
 import com.owncloud.android.operations.CreateFolderOperation;
 import com.owncloud.android.ui.dialog.CreateFolderDialogFragment;
 import com.owncloud.android.ui.dialog.LoadingDialog;
@@ -98,6 +99,7 @@ public class Uploader extends FileActivity
     private String mUploadPath;
     private OCFile mFile;
     private boolean mAccountSelected;
     private String mUploadPath;
     private OCFile mFile;
     private boolean mAccountSelected;
+    private boolean mAccountSelectionShowing;
 
     private ArrayList<String> mRemoteCacheData;
     private int mNumCacheFile;
 
     private ArrayList<String> mRemoteCacheData;
     private int mNumCacheFile;
@@ -112,6 +114,7 @@ public class Uploader extends FileActivity
     private final static String KEY_PARENTS = "PARENTS";
     private final static String KEY_FILE = "FILE";
     private final static String KEY_ACCOUNT_SELECTED = "ACCOUNT_SELECTED";
     private final static String KEY_PARENTS = "PARENTS";
     private final static String KEY_FILE = "FILE";
     private final static String KEY_ACCOUNT_SELECTED = "ACCOUNT_SELECTED";
+    private final static String KEY_ACCOUNT_SELECTION_SHOWING = "ACCOUNT_SELECTION_SHOWING";
     private final static String KEY_NUM_CACHE_FILE = "NUM_CACHE_FILE";
     private final static String KEY_REMOTE_CACHE_DATA = "REMOTE_CACHE_DATA";
 
     private final static String KEY_NUM_CACHE_FILE = "NUM_CACHE_FILE";
     private final static String KEY_REMOTE_CACHE_DATA = "REMOTE_CACHE_DATA";
 
@@ -124,6 +127,7 @@ public class Uploader extends FileActivity
         if (savedInstanceState == null) {
             mParents = new Stack<String>();
             mAccountSelected = false;
         if (savedInstanceState == null) {
             mParents = new Stack<String>();
             mAccountSelected = false;
+            mAccountSelectionShowing = false;
             mNumCacheFile = 0;
 
             // ArrayList for files with path in private storage
             mNumCacheFile = 0;
 
             // ArrayList for files with path in private storage
@@ -132,6 +136,7 @@ public class Uploader extends FileActivity
             mParents = (Stack<String>) savedInstanceState.getSerializable(KEY_PARENTS);
             mFile = savedInstanceState.getParcelable(KEY_FILE);
             mAccountSelected = savedInstanceState.getBoolean(KEY_ACCOUNT_SELECTED);
             mParents = (Stack<String>) savedInstanceState.getSerializable(KEY_PARENTS);
             mFile = savedInstanceState.getParcelable(KEY_FILE);
             mAccountSelected = savedInstanceState.getBoolean(KEY_ACCOUNT_SELECTED);
+            mAccountSelectionShowing = savedInstanceState.getBoolean(KEY_ACCOUNT_SELECTION_SHOWING);
             mNumCacheFile = savedInstanceState.getInt(KEY_NUM_CACHE_FILE);
             mRemoteCacheData = savedInstanceState.getStringArrayList(KEY_REMOTE_CACHE_DATA);
         }
             mNumCacheFile = savedInstanceState.getInt(KEY_NUM_CACHE_FILE);
             mRemoteCacheData = savedInstanceState.getStringArrayList(KEY_REMOTE_CACHE_DATA);
         }
@@ -156,9 +161,10 @@ public class Uploader extends FileActivity
             if (accounts.length == 0) {
                 Log_OC.i(TAG, "No ownCloud account is available");
                 showDialog(DIALOG_NO_ACCOUNT);
             if (accounts.length == 0) {
                 Log_OC.i(TAG, "No ownCloud account is available");
                 showDialog(DIALOG_NO_ACCOUNT);
-            } else if (accounts.length > 1 && !mAccountSelected) {
+            } else if (accounts.length > 1 && !mAccountSelected && !mAccountSelectionShowing) {
                 Log_OC.i(TAG, "More than one ownCloud is available");
                 showDialog(DIALOG_MULTIPLE_ACCOUNT);
                 Log_OC.i(TAG, "More than one ownCloud is available");
                 showDialog(DIALOG_MULTIPLE_ACCOUNT);
+                mAccountSelectionShowing = true;
             } else {
                 if (!savedAccount) {
                     setAccount(accounts[0]);
             } else {
                 if (!savedAccount) {
                     setAccount(accounts[0]);
@@ -187,6 +193,7 @@ public class Uploader extends FileActivity
         //outState.putParcelable(KEY_ACCOUNT, mAccount);
         outState.putParcelable(KEY_FILE, mFile);
         outState.putBoolean(KEY_ACCOUNT_SELECTED, mAccountSelected);
         //outState.putParcelable(KEY_ACCOUNT, mAccount);
         outState.putParcelable(KEY_FILE, mFile);
         outState.putBoolean(KEY_ACCOUNT_SELECTED, mAccountSelected);
+        outState.putBoolean(KEY_ACCOUNT_SELECTION_SHOWING, mAccountSelectionShowing);
         outState.putInt(KEY_NUM_CACHE_FILE, mNumCacheFile);
         outState.putStringArrayList(KEY_REMOTE_CACHE_DATA, mRemoteCacheData);
         outState.putParcelable(FileActivity.EXTRA_ACCOUNT, getAccount());
         outState.putInt(KEY_NUM_CACHE_FILE, mNumCacheFile);
         outState.putStringArrayList(KEY_REMOTE_CACHE_DATA, mRemoteCacheData);
         outState.putParcelable(FileActivity.EXTRA_ACCOUNT, getAccount());
@@ -213,7 +220,8 @@ public class Uploader extends FileActivity
             builder.setPositiveButton(R.string.uploader_wrn_no_account_setup_btn_text, new OnClickListener() {
                 @Override
                 public void onClick(DialogInterface dialog, int which) {
             builder.setPositiveButton(R.string.uploader_wrn_no_account_setup_btn_text, new OnClickListener() {
                 @Override
                 public void onClick(DialogInterface dialog, int which) {
-                    if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.ECLAIR_MR1) {
+                    if (android.os.Build.VERSION.SDK_INT >
+                            android.os.Build.VERSION_CODES.ECLAIR_MR1) {
                         // using string value since in API7 this
                         // constatn is not defined
                         // in API7 < this constatant is defined in
                         // using string value since in API7 this
                         // constatn is not defined
                         // in API7 < this constatant is defined in
@@ -255,12 +263,14 @@ public class Uploader extends FileActivity
                     onAccountSet(mAccountWasRestored);
                     dialog.dismiss();
                     mAccountSelected = true;
                     onAccountSet(mAccountWasRestored);
                     dialog.dismiss();
                     mAccountSelected = true;
+                    mAccountSelectionShowing = false;
                 }
             });
             builder.setCancelable(true);
             builder.setOnCancelListener(new OnCancelListener() {
                 @Override
                 public void onCancel(DialogInterface dialog) {
                 }
             });
             builder.setCancelable(true);
             builder.setOnCancelListener(new OnCancelListener() {
                 @Override
                 public void onCancel(DialogInterface dialog) {
+                    mAccountSelectionShowing = false;
                     dialog.cancel();
                     finish();
                 }
                     dialog.cancel();
                     finish();
                 }
@@ -316,7 +326,8 @@ public class Uploader extends FileActivity
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
         // click on folder in the list
         Log_OC.d(TAG, "on item click");
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
         // click on folder in the list
         Log_OC.d(TAG, "on item click");
-        Vector<OCFile> tmpfiles = getStorageManager().getFolderContent(mFile);
+        // TODO Enable when "On Device" is recovered ?
+        Vector<OCFile> tmpfiles = getStorageManager().getFolderContent(mFile /*, false*/);
         if (tmpfiles.size() <= 0) return;
         // filter on dirtype
         Vector<OCFile> files = new Vector<OCFile>();
         if (tmpfiles.size() <= 0) return;
         // filter on dirtype
         Vector<OCFile> files = new Vector<OCFile>();
@@ -401,7 +412,8 @@ public class Uploader extends FileActivity
 
         mFile = getStorageManager().getFileByPath(full_path);
         if (mFile != null) {
 
         mFile = getStorageManager().getFileByPath(full_path);
         if (mFile != null) {
-            Vector<OCFile> files = getStorageManager().getFolderContent(mFile);
+            // TODO Enable when "On Device" is recovered ?
+            Vector<OCFile> files = getStorageManager().getFolderContent(mFile/*, false*/);
             List<HashMap<String, Object>> data = new LinkedList<HashMap<String,Object>>();
             for (OCFile f : files) {
                 HashMap<String, Object> h = new HashMap<String, Object>();
             List<HashMap<String, Object>> data = new LinkedList<HashMap<String,Object>>();
             for (OCFile f : files) {
                 HashMap<String, Object> h = new HashMap<String, Object>();
@@ -414,7 +426,7 @@ public class Uploader extends FileActivity
                                                 data,
                                                 R.layout.uploader_list_item_layout,
                                                 new String[] {"dirname"},
                                                 data,
                                                 R.layout.uploader_list_item_layout,
                                                 new String[] {"dirname"},
-                                                new int[] {R.id.textView1});
+                                                new int[] {R.id.filename});
             
             mListView.setAdapter(sa);
             Button btnChooseFolder = (Button) findViewById(R.id.uploader_choose_folder);
             
             mListView.setAdapter(sa);
             Button btnChooseFolder = (Button) findViewById(R.id.uploader_choose_folder);
@@ -530,7 +542,8 @@ public class Uploader extends FileActivity
                     if (data == null) {
                         mRemoteCacheData.add(filePath);
                         CopyTmpFileAsyncTask copyTask = new CopyTmpFileAsyncTask(this);
                     if (data == null) {
                         mRemoteCacheData.add(filePath);
                         CopyTmpFileAsyncTask copyTask = new CopyTmpFileAsyncTask(this);
-                        Object[] params = { uri, filePath, mRemoteCacheData.size()-1 };
+                        Object[] params = { uri, filePath, mRemoteCacheData.size()-1,
+                                getAccount().name, getContentResolver()};
                         mNumCacheFile++;
                         showWaitingCopyDialog();
                         copyTask.execute(params);
                         mNumCacheFile++;
                         showWaitingCopyDialog();
                         copyTask.execute(params);
@@ -625,6 +638,7 @@ public class Uploader extends FileActivity
             mParents.add("");
         } else{
             String[] dir_names = last_path.split("/");
             mParents.add("");
         } else{
             String[] dir_names = last_path.split("/");
+            mParents.clear();
             for (String dir : dir_names)
                 mParents.add(dir);
         }
             for (String dir : dir_names)
                 mParents.add(dir);
         }
@@ -658,7 +672,7 @@ public class Uploader extends FileActivity
      * @param index
      */
     @Override
      * @param index
      */
     @Override
-    public void OnCopyTmpFileTaskListener(String result, int index) {
+    public void onTmpFileCopied(String result, int index) {
         if (mNumCacheFile -- == 0) {
             dismissWaitingCopyDialog();
         }
         if (mNumCacheFile -- == 0) {
             dismissWaitingCopyDialog();
         }
@@ -674,7 +688,7 @@ public class Uploader extends FileActivity
             String message = String.format(getString(R.string.uploader_error_forbidden_content),
                     getString(R.string.app_name));
             Toast.makeText(this, message, Toast.LENGTH_LONG).show();
             String message = String.format(getString(R.string.uploader_error_forbidden_content),
                     getString(R.string.app_name));
             Toast.makeText(this, message, Toast.LENGTH_LONG).show();
-            Log_OC.d(TAG, message );
+            Log_OC.d(TAG, message);
         }
 
     }
         }
 
     }