fix uploading to nonascii characters in path
[pub/Android/ownCloud.git] / src / eu / alefzero / owncloud / ui / activity / FileDisplayActivity.java
index ef31ce8..7f92d5a 100644 (file)
@@ -185,41 +185,36 @@ public class FileDisplayActivity extends SherlockFragmentActivity implements
     public boolean onOptionsItemSelected(MenuItem item) {\r
         boolean retval = true;\r
         switch (item.getItemId()) {\r
-        case R.id.settingsItem: {\r
-            Intent i = new Intent(this, Preferences.class);\r
-            startActivity(i);\r
-            break;\r
-        }\r
-        case R.id.createDirectoryItem: {\r
-            showDialog(DIALOG_CREATE_DIR);\r
-            break;\r
-        }\r
-        case R.id.startSync: {\r
-            Bundle bundle = new Bundle();\r
-            bundle.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, true);\r
-            ContentResolver.requestSync(\r
-                    AccountUtils.getCurrentOwnCloudAccount(this),\r
-                    "org.owncloud", bundle);\r
-            break;\r
-        }\r
-        case R.id.action_upload: {\r
-            Intent action = new Intent(Intent.ACTION_GET_CONTENT);\r
-            action = action.setType("*/*")\r
-                    .addCategory(Intent.CATEGORY_OPENABLE);\r
-            startActivityForResult(\r
-                    Intent.createChooser(action, "Upload file from..."),\r
-                    ACTION_SELECT_FILE);\r
-            break;\r
-        }\r
-\r
-        case android.R.id.home: {\r
-            Intent i = new Intent(this, AccountSelectActivity.class);\r
-            startActivity(i);\r
-            finish();\r
-            break;\r
-        }\r
-        default:\r
-            retval = false;\r
+            case R.id.createDirectoryItem: {\r
+                showDialog(DIALOG_CREATE_DIR);\r
+                break;\r
+            }\r
+            case R.id.startSync: {\r
+                Bundle bundle = new Bundle();\r
+                bundle.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, true);\r
+                ContentResolver.requestSync(\r
+                        AccountUtils.getCurrentOwnCloudAccount(this),\r
+                        "org.owncloud", bundle);\r
+                break;\r
+            }\r
+            case R.id.action_upload: {\r
+                Intent action = new Intent(Intent.ACTION_GET_CONTENT);\r
+                action = action.setType("*/*")\r
+                        .addCategory(Intent.CATEGORY_OPENABLE);\r
+                startActivityForResult(\r
+                        Intent.createChooser(action, "Upload file from..."),\r
+                        ACTION_SELECT_FILE);\r
+                break;\r
+            }\r
+    \r
+            case android.R.id.home: {\r
+                Intent i = new Intent(this, AccountSelectActivity.class);\r
+                startActivity(i);\r
+                finish();\r
+                break;\r
+            }\r
+            default:\r
+                retval = false;\r
         }\r
         return retval;\r
     }\r
@@ -260,9 +255,11 @@ public class FileDisplayActivity extends SherlockFragmentActivity implements
     @Override\r
     protected void onSaveInstanceState(Bundle outState) {\r
         super.onSaveInstanceState(outState);\r
-        mDirs = new String[mDirectories.getCount()-1];\r
-        for (int j = mDirectories.getCount() - 2, i = 0; j >= 0; --j, ++i) {\r
-            mDirs[i] = mDirectories.getItem(j);\r
+        if(mDirectories != null){\r
+            mDirs = new String[mDirectories.getCount()-1];\r
+            for (int j = mDirectories.getCount() - 2, i = 0; j >= 0; --j, ++i) {\r
+                mDirs[i] = mDirectories.getItem(j);\r
+            }\r
         }\r
     }\r
 \r
@@ -299,7 +296,6 @@ public class FileDisplayActivity extends SherlockFragmentActivity implements
     }\r
 \r
     public void onActivityResult(int requestCode, int resultCode, Intent data) {\r
-        Log.e("ASD", requestCode + " " + resultCode);\r
         if (resultCode == RESULT_OK) {\r
             if (requestCode == ACTION_SELECT_FILE) {\r
                 Uri selectedImageUri = data.getData();\r
@@ -323,17 +319,16 @@ public class FileDisplayActivity extends SherlockFragmentActivity implements
                         AccountUtils.getCurrentOwnCloudAccount(this));\r
                 String remotepath = new String();\r
                 for (int j = mDirectories.getCount() - 2; j >= 0; --j) {\r
-                    remotepath += "/" + URLDecoder.decode(mDirectories.getItem(j));\r
+                    remotepath += "/" + URLEncoder.encode(mDirectories.getItem(j));\r
                 }\r
                 if (!remotepath.endsWith("/"))\r
                     remotepath += "/";\r
-                remotepath += new File(filepath).getName();\r
+                remotepath += URLEncoder.encode(new File(filepath).getName());\r
                 Log.e("ASD", remotepath + "");\r
 \r
                 i.putExtra(FileUploader.KEY_LOCAL_FILE, filepath);\r
                 i.putExtra(FileUploader.KEY_REMOTE_FILE, remotepath);\r
-                i.putExtra(FileUploader.KEY_UPLOAD_TYPE,\r
-                        FileUploader.UPLOAD_SINGLE_FILE);\r
+                i.putExtra(FileUploader.KEY_UPLOAD_TYPE, FileUploader.UPLOAD_SINGLE_FILE);\r
                 startService(i);\r
             }\r
         }\r