Merge branch 'master' of gitorious.org:owncloud/android-devel
[pub/Android/ownCloud.git] / src / eu / alefzero / owncloud / ui / activity / FileDisplayActivity.java
index dbba188..ec4def4 100644 (file)
@@ -22,7 +22,6 @@ import java.io.BufferedReader;
 import java.io.File;\r
 import java.io.InputStreamReader;\r
 import java.lang.Thread.UncaughtExceptionHandler;\r
-import java.net.URLEncoder;\r
 import java.util.ArrayList;\r
 \r
 import android.accounts.Account;\r
@@ -105,8 +104,12 @@ public class FileDisplayActivity extends SherlockFragmentActivity implements
     public void onCreate(Bundle savedInstanceState) {\r
         super.onCreate(savedInstanceState);\r
 \r
-        requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);\r
-        setProgressBarIndeterminateVisibility(false);\r
+        // TODO: fix hack: workaround for bug in actionbar sherlock\r
+        // it always shows indeterminate progress bar\r
+        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB) {\r
+            requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);\r
+            setProgressBarIndeterminateVisibility(false);\r
+        }\r
 \r
         Thread.setDefaultUncaughtExceptionHandler(new CrashHandler(getApplicationContext()));\r
 \r
@@ -219,11 +222,12 @@ 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 += "/" + URLEncoder.encode(mDirectories.getItem(j));\r
+                    remotepath += "/" + mDirectories.getItem(j);\r
                 }\r
                 if (!remotepath.endsWith("/"))\r
                     remotepath += "/";\r
-                remotepath += URLEncoder.encode(new File(filepath).getName());\r
+                remotepath += new File(filepath).getName();\r
+                remotepath = Uri.encode(remotepath, "/");\r
     \r
                 i.putExtra(FileUploader.KEY_LOCAL_FILE, filepath);\r
                 i.putExtra(FileUploader.KEY_REMOTE_FILE, remotepath);\r
@@ -251,7 +255,6 @@ public class FileDisplayActivity extends SherlockFragmentActivity implements
 \r
     @Override\r
     protected void onRestoreInstanceState(Bundle savedInstanceState) {\r
-        Log.e("ASD", "restore");\r
         super.onRestoreInstanceState(savedInstanceState);\r
         mDirs = savedInstanceState.getStringArray(KEY_DIR_ARRAY);\r
         mDirectories = new CustomArrayAdapter<String>(this, R.layout.sherlock_spinner_dropdown_item);\r
@@ -264,7 +267,6 @@ public class FileDisplayActivity extends SherlockFragmentActivity implements
     \r
     @Override\r
     protected void onSaveInstanceState(Bundle outState) {\r
-        Log.e("ASD", "save " + (mCurrentDir != null ? mCurrentDir.getFileName() : "NULL"));\r
         super.onSaveInstanceState(outState);\r
         if(mDirectories != null && mDirectories.getCount() != 0){\r
             mDirs = new String[mDirectories.getCount()-1];\r
@@ -301,15 +303,16 @@ public class FileDisplayActivity extends SherlockFragmentActivity implements
             // Priority: Intent (here), savedInstanceState (onCreate), root dir (dir is null)\r
             if(getIntent().hasExtra(FileDetailFragment.EXTRA_FILE)){\r
                 mCurrentDir = (OCFile) getIntent().getParcelableExtra(FileDetailFragment.EXTRA_FILE);\r
-                if(!mCurrentDir.isDirectory()){\r
+                if(mCurrentDir != null && !mCurrentDir.isDirectory()){\r
                     mCurrentDir = mStorageManager.getFileById(mCurrentDir.getParentId());\r
                 }\r
             \r
                 // Clear intent extra, so rotating the screen will not return us to this directory\r
                 getIntent().removeExtra(FileDetailFragment.EXTRA_FILE);\r
-            } else {\r
-                mCurrentDir = mStorageManager.getFileByPath("/");\r
             }\r
+            \r
+            if (mCurrentDir == null)\r
+                mCurrentDir = mStorageManager.getFileByPath("/");\r
                 \r
             // Drop-Down navigation and file list restore\r
             mDirectories = new CustomArrayAdapter<String>(this, R.layout.sherlock_spinner_dropdown_item);\r
@@ -412,10 +415,19 @@ public class FileDisplayActivity extends SherlockFragmentActivity implements
                             }\r
     \r
                             // Figure out the path where the dir needs to be created\r
-                            String path = FileDisplayActivity.this.mCurrentDir.getRemotePath();\r
+                            String path;\r
+                            if (mCurrentDir == null) {\r
+                                // this is just a patch; we should ensure that mCurrentDir never is null\r
+                                if (!mStorageManager.fileExists("/")) {\r
+                                    OCFile file = new OCFile("/");\r
+                                    mStorageManager.saveFile(file);\r
+                                }\r
+                                mCurrentDir = mStorageManager.getFileByPath("/");\r
+                            }\r
+                            path = FileDisplayActivity.this.mCurrentDir.getRemotePath();\r
                             \r
                             // Create directory\r
-                            path += directoryName + "/";\r
+                            path += Uri.encode(directoryName) + "/";\r
                             Thread thread = new Thread(new DirectoryCreator(path, a));\r
                             thread.start();\r
     \r