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
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
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
if (mDirs != null)\r
for (String s : mDirs)\r
mDirectories.insert(s, 0);\r
- mCurrentDir = savedInstanceState.getParcelable(KEY_CURRENT_DIR);\r
+ mCurrentDir = savedInstanceState.getParcelable(FileDetailFragment.EXTRA_FILE);\r
}\r
\r
@Override\r
}\r
}\r
outState.putStringArray(KEY_DIR_ARRAY, mDirs);\r
- outState.putParcelable(KEY_CURRENT_DIR, mCurrentDir);\r
+ outState.putParcelable(FileDetailFragment.EXTRA_FILE, mCurrentDir);\r
}\r
\r
@Override\r
protected void onResume() {\r
super.onResume();\r
- \r
+\r
if (accountsAreSetup()) {\r
\r
setContentView(mLayoutView); // this should solve the crash by repeated inflating in big screens (DROIDCLOUD-27)\r
\r
// File list\r
mFileList = (FileListFragment) getSupportFragmentManager().findFragmentById(R.id.fileList);\r
- \r
+ \r
// Figure out what directory to list. \r
// 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
unregisterReceiver(syncBroadcastRevceiver);\r
syncBroadcastRevceiver = null;\r
}\r
+ getIntent().putExtra(FileDetailFragment.EXTRA_FILE, mCurrentDir);\r
}\r
\r
@Override\r
}\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