fix webdav path sync for oc3 and oc4
[pub/Android/ownCloud.git] / src / eu / alefzero / owncloud / ui / activity / FileDisplayActivity.java
index 4ca240d..ef31ce8 100644 (file)
@@ -19,6 +19,7 @@
 package eu.alefzero.owncloud.ui.activity;\r
 \r
 import java.io.File;\r
+import java.net.URLDecoder;\r
 import java.net.URLEncoder;\r
 \r
 import android.accounts.Account;\r
@@ -75,9 +76,12 @@ public class FileDisplayActivity extends SherlockFragmentActivity implements
         OnNavigationListener, OnClickListener {\r
     private ArrayAdapter<String> mDirectories;\r
     private DataStorageManager mStorageManager;\r
+    private String[] mDirs = null;\r
 \r
     private SyncBroadcastReceiver syncBroadcastRevceiver;\r
 \r
+    private static final String KEY_DIR = "DIR";\r
+    \r
     private static final int DIALOG_SETUP_ACCOUNT = 0;\r
     private static final int DIALOG_CREATE_DIR = 1;\r
 \r
@@ -245,6 +249,21 @@ public class FileDisplayActivity extends SherlockFragmentActivity implements
         if (!accountsAreSetup()) {\r
             showDialog(DIALOG_SETUP_ACCOUNT);\r
         }\r
+        mDirs = savedInstanceState.getStringArray(KEY_DIR);\r
+        mDirectories = new CustomArrayAdapter<String>(this, R.layout.sherlock_spinner_dropdown_item);\r
+        mDirectories.add("/");\r
+        if (mDirs != null)\r
+            for (String s : mDirs)\r
+                mDirectories.insert(s, 0);\r
+    }\r
+    \r
+    @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
+        }\r
     }\r
 \r
     @Override\r
@@ -259,9 +278,15 @@ public class FileDisplayActivity extends SherlockFragmentActivity implements
         syncBroadcastRevceiver = new SyncBroadcastReceiver();\r
         registerReceiver(syncBroadcastRevceiver, f);\r
 \r
-        mDirectories = new CustomArrayAdapter<String>(this,\r
-                R.layout.sherlock_spinner_dropdown_item);\r
+        mDirectories = new CustomArrayAdapter<String>(this, R.layout.sherlock_spinner_dropdown_item);\r
         mDirectories.add("/");\r
+        if (mDirs != null) {\r
+            for (String s : mDirs)\r
+                mDirectories.insert(s, 0);\r
+            FileListFragment fileListFramgent = (FileListFragment) getSupportFragmentManager()\r
+                    .findFragmentById(R.id.fileList);\r
+            if (fileListFramgent != null) fileListFramgent.populateFileList();\r
+        }\r
 \r
         mStorageManager = new FileDataStorageManager(\r
                 AccountUtils.getCurrentOwnCloudAccount(this),\r
@@ -298,7 +323,7 @@ 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 += "/" + mDirectories.getItem(j);\r
+                    remotepath += "/" + URLDecoder.decode(mDirectories.getItem(j));\r
                 }\r
                 if (!remotepath.endsWith("/"))\r
                     remotepath += "/";\r