Avoid null pointer exception when the details fragment is empty
[pub/Android/ownCloud.git] / src / eu / alefzero / owncloud / Uploader.java
index 3599579..fcb22a2 100644 (file)
@@ -18,7 +18,6 @@
 package eu.alefzero.owncloud;\r
 \r
 import java.io.File;\r
-import java.net.URLEncoder;\r
 import java.util.ArrayList;\r
 import java.util.HashMap;\r
 import java.util.LinkedList;\r
@@ -29,15 +28,15 @@ import java.util.Vector;
 import android.accounts.Account;\r
 import android.accounts.AccountManager;\r
 import android.app.AlertDialog;\r
+import android.app.AlertDialog.Builder;\r
 import android.app.Dialog;\r
 import android.app.ListActivity;\r
 import android.app.ProgressDialog;\r
-import android.app.AlertDialog.Builder;\r
 import android.content.Context;\r
 import android.content.DialogInterface;\r
-import android.content.Intent;\r
 import android.content.DialogInterface.OnCancelListener;\r
 import android.content.DialogInterface.OnClickListener;\r
+import android.content.Intent;\r
 import android.database.Cursor;\r
 import android.net.Uri;\r
 import android.os.Bundle;\r
@@ -47,21 +46,15 @@ import android.util.Log;
 import android.view.View;\r
 import android.view.Window;\r
 import android.widget.AdapterView;\r
+import android.widget.AdapterView.OnItemClickListener;\r
 import android.widget.Button;\r
 import android.widget.EditText;\r
-import android.widget.ListView;\r
 import android.widget.SimpleAdapter;\r
-import android.widget.SimpleCursorAdapter;\r
-import android.widget.AdapterView.OnItemClickListener;\r
-import android.widget.Toast;\r
 import eu.alefzero.owncloud.authenticator.AccountAuthenticator;\r
 import eu.alefzero.owncloud.datamodel.DataStorageManager;\r
 import eu.alefzero.owncloud.datamodel.FileDataStorageManager;\r
 import eu.alefzero.owncloud.datamodel.OCFile;\r
-import eu.alefzero.owncloud.db.ProviderMeta;\r
-import eu.alefzero.owncloud.db.ProviderMeta.ProviderTableMeta;\r
 import eu.alefzero.owncloud.files.services.FileUploader;\r
-import eu.alefzero.owncloud.utils.OwnCloudVersion;\r
 import eu.alefzero.webdav.WebdavClient;\r
 \r
 /**\r
@@ -75,7 +68,6 @@ public class Uploader extends ListActivity implements OnItemClickListener, andro
 \r
     private Account mAccount;\r
     private AccountManager mAccountManager;\r
-    private String mUsername, mPassword;\r
     private Stack<String> mParents;\r
     private ArrayList<Parcelable> mStreamsToUpload;\r
     private boolean mCreateDir;\r
@@ -215,7 +207,7 @@ public class Uploader extends ListActivity implements OnItemClickListener, andro
         EditText mDirname;\r
 \r
         public a(String path, EditText dirname) {\r
-            mPath = path;\r
+            mPath = path; \r
             mDirname = dirname;\r
         }\r
 \r
@@ -239,6 +231,7 @@ public class Uploader extends ListActivity implements OnItemClickListener, andro
     }\r
 \r
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) {\r
+        // click on folder in the list\r
         Log.d(TAG, "on item click");\r
         Vector<OCFile> tmpfiles = mStorageManager.getDirectoryContent(mFile);\r
         if (tmpfiles == null) return;\r
@@ -255,11 +248,13 @@ public class Uploader extends ListActivity implements OnItemClickListener, andro
     }\r
 \r
     public void onClick(View v) {\r
+        // click on button\r
         switch (v.getId()) {\r
         case R.id.uploader_choose_folder:\r
-            mUploadPath = "";\r
+            mUploadPath = "/";\r
             for (String p : mParents)\r
-                mUploadPath += URLEncoder.encode(p) + "/";\r
+                mUploadPath += p + "/";\r
+            mUploadPath = Uri.encode(mUploadPath, "/");\r
             Log.d(TAG, "Uploading file to dir " + mUploadPath);\r
 \r
             uploadFiles();\r
@@ -296,8 +291,6 @@ public class Uploader extends ListActivity implements OnItemClickListener, andro
     }\r
 \r
     private void populateDirectoryList() {\r
-        mUsername = mAccount.name.substring(0, mAccount.name.indexOf('@'));\r
-        mPassword = mAccountManager.getPassword(mAccount);\r
         setContentView(R.layout.uploader_layout);\r
 \r
         String full_path = "";\r
@@ -376,15 +369,7 @@ public class Uploader extends ListActivity implements OnItemClickListener, andro
     }\r
 \r
     public void uploadFiles() {\r
-        OwnCloudVersion ocv = new OwnCloudVersion(mAccountManager.getUserData(mAccount,\r
-                AccountAuthenticator.KEY_OC_VERSION));\r
-        String base_url = mAccountManager.getUserData(mAccount, AccountAuthenticator.KEY_OC_BASE_URL);\r
-        String webdav_path = AccountUtils.getWebdavPath(ocv);\r
-        Uri oc_uri = Uri.parse(base_url + webdav_path);\r
-\r
-        WebdavClient wdc = new WebdavClient(oc_uri);\r
-        wdc.setCredentials(mUsername, mPassword);\r
-        wdc.allowSelfsignedCertificates();\r
+        WebdavClient wdc = new WebdavClient(mAccount, getApplicationContext());\r
 \r
         // create last directory in path if nessesary\r
         if (mCreateDir) {\r
@@ -408,11 +393,11 @@ public class Uploader extends ListActivity implements OnItemClickListener, andro
                 final String display_name = c.getString(c.getColumnIndex(Media.DISPLAY_NAME)),\r
                              data = c.getString(c.getColumnIndex(Media.DATA));\r
                 local[i] = data;\r
-                remote[i] = mUploadPath + display_name;\r
+                remote[i] = mUploadPath + Uri.encode(display_name);\r
             } else if (uri.getScheme().equals("file")) {\r
                 final File file = new File(Uri.decode(uri.toString()).replace(uri.getScheme() + "://", ""));\r
                 local[i] = file.getAbsolutePath();\r
-                remote[i] = mUploadPath + file.getName();\r
+                remote[i] = mUploadPath + Uri.encode(file.getName());\r
             }\r
 \r
         }\r