/* ownCloud Android client application\r
- * Copyright (C) 2011 Bartek Przybylski\r
+ * Copyright (C) 2012 Bartek Przybylski\r
*\r
* This program is free software: you can redistribute it and/or modify\r
* it under the terms of the GNU General Public License as published by\r
package eu.alefzero.owncloud;\r
\r
import java.io.File;\r
-import java.net.FileNameMap;\r
-import java.net.URLConnection;\r
import java.util.ArrayList;\r
import java.util.Stack;\r
\r
import android.app.ListActivity;\r
import android.app.ProgressDialog;\r
import android.app.AlertDialog.Builder;\r
-import android.content.ContentValues;\r
import android.content.Context;\r
import android.content.DialogInterface;\r
import android.content.Intent;\r
import android.database.Cursor;\r
import android.net.Uri;\r
import android.os.Bundle;\r
-import android.os.Handler;\r
import android.os.Parcelable;\r
import android.provider.MediaStore.Images.Media;\r
import android.util.Log;\r
import android.view.View;\r
import android.view.Window;\r
-import android.view.ViewGroup.LayoutParams;\r
import android.widget.AdapterView;\r
import android.widget.Button;\r
import android.widget.EditText;\r
-import android.widget.LinearLayout;\r
import android.widget.ListView;\r
import android.widget.SimpleCursorAdapter;\r
-import android.widget.Toast;\r
import android.widget.AdapterView.OnItemClickListener;\r
import eu.alefzero.owncloud.authenticator.AccountAuthenticator;\r
import eu.alefzero.owncloud.db.ProviderMeta;\r
import eu.alefzero.owncloud.files.services.FileUploader;\r
import eu.alefzero.owncloud.utils.OwnCloudVersion;\r
import eu.alefzero.webdav.WebdavClient;\r
-import eu.alefzero.webdav.WebdavUtils;\r
\r
/**\r
* This can be used to upload things to an ownCloud instance.\r
* @author Bartek Przybylski\r
* \r
*/\r
-public class Uploader extends ListActivity implements OnItemClickListener,\r
- android.view.View.OnClickListener {\r
+public class Uploader extends ListActivity implements OnItemClickListener, android.view.View.OnClickListener {\r
private static final String TAG = "ownCloudUploader";\r
\r
private Account mAccount;\r
private String mUsername, mPassword;\r
private Cursor mCursor;\r
private Stack<String> mParents;\r
- private Thread mUploadThread;\r
- private Handler mHandler;\r
private ArrayList<Parcelable> mStreamsToUpload;\r
private boolean mCreateDir;\r
private String mUploadPath;\r
- private static final String[] CONTENT_PROJECTION = {Media.DATA,\r
- Media.DISPLAY_NAME,\r
- Media.MIME_TYPE,\r
- Media.SIZE};\r
+ private static final String[] CONTENT_PROJECTION = { Media.DATA, Media.DISPLAY_NAME, Media.MIME_TYPE, Media.SIZE };\r
\r
private final static int DIALOG_NO_ACCOUNT = 0;\r
private final static int DIALOG_WAITING = 1;\r
super.onCreate(savedInstanceState);\r
getWindow().requestFeature(Window.FEATURE_NO_TITLE);\r
mParents = new Stack<String>();\r
- mHandler = new Handler();\r
if (getIntent().hasExtra(Intent.EXTRA_STREAM)) {\r
prepareStreamsToUpload();\r
mAccountManager = (AccountManager) getSystemService(Context.ACCOUNT_SERVICE);\r
- Account[] accounts = mAccountManager\r
- .getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE);\r
+ Account[] accounts = mAccountManager.getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE);\r
if (accounts.length == 0) {\r
Log.i(TAG, "No ownCloud account is available");\r
showDialog(DIALOG_NO_ACCOUNT);\r
ProgressDialog pDialog = new ProgressDialog(this);\r
pDialog.setIndeterminate(false);\r
pDialog.setCancelable(false);\r
- pDialog.setMessage(getResources().getString(\r
- R.string.uploader_info_uploading));\r
+ pDialog.setMessage(getResources().getString(R.string.uploader_info_uploading));\r
return pDialog;\r
case DIALOG_NO_ACCOUNT:\r
builder.setIcon(android.R.drawable.ic_dialog_alert);\r
builder.setTitle(R.string.uploader_wrn_no_account_title);\r
builder.setMessage(R.string.uploader_wrn_no_account_text);\r
builder.setCancelable(false);\r
- builder.setPositiveButton(\r
- R.string.uploader_wrn_no_account_setup_btn_text,\r
- new OnClickListener() {\r
- public void onClick(DialogInterface dialog, int which) {\r
- if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.ECLAIR_MR1) {\r
- // using string value since in API7 this\r
- // constatn is not defined\r
- // in API7 < this constatant is defined in\r
- // Settings.ADD_ACCOUNT_SETTINGS\r
- // and Settings.EXTRA_AUTHORITIES\r
- Intent intent = new Intent(\r
- "android.settings.ADD_ACCOUNT_SETTINGS");\r
- intent.putExtra(\r
- "authorities",\r
- new String[] { AccountAuthenticator.AUTH_TOKEN_TYPE });\r
- startActivityForResult(intent,\r
- REQUEST_CODE_SETUP_ACCOUNT);\r
- } else {\r
- // since in API7 there is no direct call for\r
- // account setup, so we need to\r
- // show our own AccountSetupAcricity, get\r
- // desired results and setup\r
- // everything for ourself\r
- Intent intent = new Intent(getBaseContext(),\r
- AccountAuthenticator.class);\r
- startActivityForResult(intent,\r
- REQUEST_CODE_SETUP_ACCOUNT);\r
- }\r
- }\r
- });\r
- builder.setNegativeButton(\r
- R.string.uploader_wrn_no_account_quit_btn_text,\r
- new OnClickListener() {\r
- public void onClick(DialogInterface dialog, int which) {\r
- finish();\r
- }\r
- });\r
+ builder.setPositiveButton(R.string.uploader_wrn_no_account_setup_btn_text, new OnClickListener() {\r
+ public void onClick(DialogInterface dialog, int which) {\r
+ if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.ECLAIR_MR1) {\r
+ // using string value since in API7 this\r
+ // constatn is not defined\r
+ // in API7 < this constatant is defined in\r
+ // Settings.ADD_ACCOUNT_SETTINGS\r
+ // and Settings.EXTRA_AUTHORITIES\r
+ Intent intent = new Intent("android.settings.ADD_ACCOUNT_SETTINGS");\r
+ intent.putExtra("authorities", new String[] { AccountAuthenticator.AUTH_TOKEN_TYPE });\r
+ startActivityForResult(intent, REQUEST_CODE_SETUP_ACCOUNT);\r
+ } else {\r
+ // since in API7 there is no direct call for\r
+ // account setup, so we need to\r
+ // show our own AccountSetupAcricity, get\r
+ // desired results and setup\r
+ // everything for ourself\r
+ Intent intent = new Intent(getBaseContext(), AccountAuthenticator.class);\r
+ startActivityForResult(intent, REQUEST_CODE_SETUP_ACCOUNT);\r
+ }\r
+ }\r
+ });\r
+ builder.setNegativeButton(R.string.uploader_wrn_no_account_quit_btn_text, new OnClickListener() {\r
+ public void onClick(DialogInterface dialog, int which) {\r
+ finish();\r
+ }\r
+ });\r
return builder.create();\r
case DIALOG_GET_DIRNAME:\r
final EditText dirName = new EditText(getBaseContext());\r
if (mParents.empty()) {\r
pathToUpload = "/";\r
} else {\r
- mCursor = managedQuery(Uri.withAppendedPath(\r
- ProviderTableMeta.CONTENT_URI_FILE, mParents.peek()),\r
- null, null, null, null);\r
+ mCursor = managedQuery(Uri.withAppendedPath(ProviderTableMeta.CONTENT_URI_FILE, mParents.peek()), null,\r
+ null, null, null);\r
mCursor.moveToFirst();\r
- pathToUpload = mCursor.getString(mCursor\r
- .getColumnIndex(ProviderTableMeta.FILE_PATH))\r
- + mCursor\r
- .getString(\r
- mCursor.getColumnIndex(ProviderTableMeta.FILE_NAME))\r
- .replace(" ", "%20");\r
+ pathToUpload = mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta.FILE_PATH))\r
+ + mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta.FILE_NAME)).replace(" ", "%20");\r
}\r
a a = new a(pathToUpload, dirName);\r
builder.setPositiveButton(R.string.common_ok, a);\r
- builder.setNegativeButton(R.string.common_cancel,\r
- new OnClickListener() {\r
- public void onClick(DialogInterface dialog, int which) {\r
- dialog.cancel();\r
- }\r
- });\r
+ builder.setNegativeButton(R.string.common_cancel, new OnClickListener() {\r
+ public void onClick(DialogInterface dialog, int which) {\r
+ dialog.cancel();\r
+ }\r
+ });\r
return builder.create();\r
case DIALOG_MULTIPLE_ACCOUNT:\r
- CharSequence ac[] = new CharSequence[mAccountManager\r
- .getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE).length];\r
+ CharSequence ac[] = new CharSequence[mAccountManager.getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE).length];\r
for (int i = 0; i < ac.length; ++i) {\r
- ac[i] = mAccountManager\r
- .getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE)[i].name;\r
+ ac[i] = mAccountManager.getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE)[i].name;\r
}\r
builder.setTitle(R.string.common_choose_account);\r
builder.setItems(ac, new OnClickListener() {\r
public void onClick(DialogInterface dialog, int which) {\r
- mAccount = mAccountManager\r
- .getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE)[which];\r
+ mAccount = mAccountManager.getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE)[which];\r
populateDirectoryList();\r
}\r
});\r
return;\r
} else if (mParents.size() == 1) {\r
mParents.pop();\r
- mCursor = managedQuery(ProviderTableMeta.CONTENT_URI, null,\r
- ProviderTableMeta.FILE_CONTENT_TYPE + "=?",\r
+ mCursor = managedQuery(ProviderTableMeta.CONTENT_URI, null, ProviderTableMeta.FILE_CONTENT_TYPE + "=?",\r
new String[] { "DIR" }, null);\r
} else {\r
mParents.pop();\r
- mCursor = managedQuery(Uri.withAppendedPath(\r
- ProviderTableMeta.CONTENT_URI_DIR, mParents.peek()), null,\r
- ProviderTableMeta.FILE_CONTENT_TYPE + "=?",\r
- new String[] { "DIR" }, null);\r
+ mCursor = managedQuery(Uri.withAppendedPath(ProviderTableMeta.CONTENT_URI_DIR, mParents.peek()), null,\r
+ ProviderTableMeta.FILE_CONTENT_TYPE + "=?", new String[] { "DIR" }, null);\r
}\r
\r
- SimpleCursorAdapter sca = new SimpleCursorAdapter(this,\r
- R.layout.uploader_list_item_layout, mCursor,\r
- new String[] { ProviderTableMeta.FILE_NAME },\r
- new int[] { R.id.textView1 });\r
+ SimpleCursorAdapter sca = new SimpleCursorAdapter(this, R.layout.uploader_list_item_layout, mCursor,\r
+ new String[] { ProviderTableMeta.FILE_NAME }, new int[] { R.id.textView1 });\r
setListAdapter(sca);\r
}\r
\r
- public void onItemClick(AdapterView<?> parent, View view, int position,\r
- long id) {\r
+ public void onItemClick(AdapterView<?> parent, View view, int position, long id) {\r
if (!mCursor.moveToPosition(position)) {\r
throw new IndexOutOfBoundsException("Incorrect item selected");\r
}\r
- String _id = mCursor.getString(mCursor\r
- .getColumnIndex(ProviderTableMeta._ID));\r
+ String _id = mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta._ID));\r
mParents.push(_id);\r
\r
mCursor.close();\r
- mCursor = managedQuery(\r
- Uri.withAppendedPath(ProviderTableMeta.CONTENT_URI_DIR, _id),\r
- null, ProviderTableMeta.FILE_CONTENT_TYPE + "=?",\r
- new String[] { "DIR" }, null);\r
- SimpleCursorAdapter sca = new SimpleCursorAdapter(this,\r
- R.layout.uploader_list_item_layout, mCursor,\r
- new String[] { ProviderTableMeta.FILE_NAME },\r
- new int[] { R.id.textView1 });\r
+ mCursor = managedQuery(Uri.withAppendedPath(ProviderTableMeta.CONTENT_URI_DIR, _id), null,\r
+ ProviderTableMeta.FILE_CONTENT_TYPE + "=?", new String[] { "DIR" }, null);\r
+ SimpleCursorAdapter sca = new SimpleCursorAdapter(this, R.layout.uploader_list_item_layout, mCursor,\r
+ new String[] { ProviderTableMeta.FILE_NAME }, new int[] { R.id.textView1 });\r
setListAdapter(sca);\r
getListView().invalidate();\r
}\r
if (mParents.empty()) {\r
pathToUpload = "/";\r
} else {\r
- mCursor = managedQuery(Uri.withAppendedPath(\r
- ProviderTableMeta.CONTENT_URI_FILE, mParents.peek()),\r
- null, null, null, null);\r
+ mCursor = managedQuery(Uri.withAppendedPath(ProviderTableMeta.CONTENT_URI_FILE, mParents.peek()), null,\r
+ null, null, null);\r
mCursor.moveToFirst();\r
- pathToUpload = mCursor.getString(\r
- mCursor.getColumnIndex(ProviderTableMeta.FILE_PATH))\r
- .replace(" ", "%20");\r
+ pathToUpload = mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta.FILE_PATH)).replace(" ",\r
+ "%20");\r
}\r
Log.d(TAG, "Uploading file to dir " + pathToUpload);\r
\r
}\r
}\r
\r
- public void onUploadComplete(boolean uploadSucc, String message) {\r
- dismissDialog(DIALOG_WAITING);\r
- Log.i(TAG, "UploadSucc: " + uploadSucc + " message: " + message);\r
- if (uploadSucc) {\r
- Toast.makeText(this,\r
- getResources().getString(R.string.uploader_upload_succeed),\r
- Toast.LENGTH_SHORT).show();\r
- } else {\r
- Toast.makeText(\r
- this,\r
- getResources().getString(R.string.uploader_upload_failed)\r
- + message, Toast.LENGTH_LONG).show();\r
- }\r
- finish();\r
- }\r
-\r
@Override\r
protected void onActivityResult(int requestCode, int resultCode, Intent data) {\r
super.onActivityResult(requestCode, resultCode, data);\r
- Log.i(TAG, "result received. req: " + requestCode + " res: "\r
- + resultCode);\r
+ Log.i(TAG, "result received. req: " + requestCode + " res: " + resultCode);\r
if (requestCode == REQUEST_CODE_SETUP_ACCOUNT) {\r
dismissDialog(DIALOG_NO_ACCOUNT);\r
if (resultCode == RESULT_CANCELED) {\r
finish();\r
}\r
- Account[] accounts = mAccountManager\r
- .getAccountsByType(AccountAuthenticator.AUTH_TOKEN_TYPE);\r
+ Account[] accounts = mAccountManager.getAccountsByType(AccountAuthenticator.AUTH_TOKEN_TYPE);\r
if (accounts.length == 0) {\r
showDialog(DIALOG_NO_ACCOUNT);\r
} else {\r
mPassword = mAccountManager.getPassword(mAccount);\r
setContentView(R.layout.uploader_layout);\r
\r
- mCursor = managedQuery(ProviderMeta.ProviderTableMeta.CONTENT_URI,\r
- null, ProviderTableMeta.FILE_NAME + "=? AND "\r
- + ProviderTableMeta.FILE_ACCOUNT_OWNER + "=?",\r
- new String[] { "/", mAccount.name }, null);\r
+ mCursor = managedQuery(ProviderMeta.ProviderTableMeta.CONTENT_URI, null, ProviderTableMeta.FILE_NAME\r
+ + "=? AND " + ProviderTableMeta.FILE_ACCOUNT_OWNER + "=?", new String[] { "/", mAccount.name }, null);\r
\r
if (mCursor.moveToFirst()) {\r
mCursor = managedQuery(\r
ProviderMeta.ProviderTableMeta.CONTENT_URI,\r
null,\r
- ProviderTableMeta.FILE_CONTENT_TYPE + "=? AND "\r
- + ProviderTableMeta.FILE_ACCOUNT_OWNER + "=? AND "\r
+ ProviderTableMeta.FILE_CONTENT_TYPE + "=? AND " + ProviderTableMeta.FILE_ACCOUNT_OWNER + "=? AND "\r
+ ProviderTableMeta.FILE_PARENT + "=?",\r
- new String[] {\r
- "DIR",\r
- mAccount.name,\r
- mCursor.getString(mCursor\r
- .getColumnIndex(ProviderTableMeta._ID)) },\r
- null);\r
+ new String[] { "DIR", mAccount.name,\r
+ mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta._ID)) }, null);\r
\r
ListView lv = getListView();\r
lv.setOnItemClickListener(this);\r
- SimpleCursorAdapter sca = new SimpleCursorAdapter(this,\r
- R.layout.uploader_list_item_layout, mCursor,\r
- new String[] { ProviderTableMeta.FILE_NAME },\r
- new int[] { R.id.textView1 });\r
+ SimpleCursorAdapter sca = new SimpleCursorAdapter(this, R.layout.uploader_list_item_layout, mCursor,\r
+ new String[] { ProviderTableMeta.FILE_NAME }, new int[] { R.id.textView1 });\r
setListAdapter(sca);\r
Button btn = (Button) findViewById(R.id.uploader_choose_folder);\r
btn.setOnClickListener(this);\r
- /* disable this until new server interaction service wont be created\r
- // insert create new directory for multiple items uploading\r
- if (getIntent().getAction().equals(Intent.ACTION_SEND_MULTIPLE)) {\r
- Button createDirBtn = new Button(this);\r
- createDirBtn.setId(android.R.id.button1);\r
- createDirBtn.setText(R.string.uploader_btn_create_dir_text);\r
- createDirBtn.setOnClickListener(this);\r
- ((LinearLayout) findViewById(R.id.linearLayout1)).addView(\r
- createDirBtn, LayoutParams.FILL_PARENT,\r
- LayoutParams.WRAP_CONTENT);\r
- }*/\r
+ /*\r
+ * disable this until new server interaction service wont be created\r
+ * // insert create new directory for multiple items uploading if\r
+ * (getIntent().getAction().equals(Intent.ACTION_SEND_MULTIPLE)) {\r
+ * Button createDirBtn = new Button(this);\r
+ * createDirBtn.setId(android.R.id.button1);\r
+ * createDirBtn.setText(R.string.uploader_btn_create_dir_text);\r
+ * createDirBtn.setOnClickListener(this); ((LinearLayout)\r
+ * findViewById(R.id.linearLayout1)).addView( createDirBtn,\r
+ * LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); }\r
+ */\r
}\r
}\r
\r
private void prepareStreamsToUpload() {\r
if (getIntent().getAction().equals(Intent.ACTION_SEND)) {\r
mStreamsToUpload = new ArrayList<Parcelable>();\r
- mStreamsToUpload.add(getIntent().getParcelableExtra(\r
- Intent.EXTRA_STREAM));\r
+ mStreamsToUpload.add(getIntent().getParcelableExtra(Intent.EXTRA_STREAM));\r
} else if (getIntent().getAction().equals(Intent.ACTION_SEND_MULTIPLE)) {\r
- mStreamsToUpload = getIntent().getParcelableArrayListExtra(\r
- Intent.EXTRA_STREAM);\r
+ mStreamsToUpload = getIntent().getParcelableArrayListExtra(Intent.EXTRA_STREAM);\r
} else {\r
// unknow action inserted\r
- throw new IllegalArgumentException("Unknown action given: "\r
- + getIntent().getAction());\r
+ throw new IllegalArgumentException("Unknown action given: " + getIntent().getAction());\r
}\r
}\r
\r
- public void PartialupdateUpload(String fileLocalPath, String filename,\r
- String filepath, String contentType, String contentLength) {\r
- ContentValues cv = new ContentValues();\r
- cv.put(ProviderTableMeta.FILE_NAME, filename);\r
- cv.put(ProviderTableMeta.FILE_PATH, filepath);\r
- cv.put(ProviderTableMeta.FILE_STORAGE_PATH, fileLocalPath);\r
- cv.put(ProviderTableMeta.FILE_MODIFIED,\r
- WebdavUtils.DISPLAY_DATE_FORMAT.format(new java.util.Date()));\r
- cv.put(ProviderTableMeta.FILE_CONTENT_TYPE, contentType);\r
- cv.put(ProviderTableMeta.FILE_CONTENT_LENGTH, contentLength);\r
- cv.put(ProviderTableMeta.FILE_ACCOUNT_OWNER, mAccount.name);\r
- Log.d(TAG, filename + " ++ " + filepath + " ++ " + contentLength\r
- + " ++ " + contentType + " ++ " + fileLocalPath);\r
- if (!mParents.empty()) {\r
- Cursor c = managedQuery(Uri.withAppendedPath(\r
- ProviderTableMeta.CONTENT_URI_FILE, mParents.peek()), null,\r
- null, null, null);\r
- c.moveToFirst();\r
- cv.put(ProviderTableMeta.FILE_PARENT,\r
- c.getString(c.getColumnIndex(ProviderTableMeta._ID)));\r
- c.close();\r
- }\r
- getContentResolver().insert(ProviderTableMeta.CONTENT_URI_FILE, cv);\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
- public void uploadFiles() {\r
- OwnCloudVersion ocv = new OwnCloudVersion(mAccountManager\r
- .getUserData(mAccount, 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.allowUnsignedCertificates();\r
-\r
- // create last directory in path if nessesary\r
- if (mCreateDir) {\r
- wdc.createDirectory(mUploadPath);\r
- }\r
- \r
- String[] local = new String[mStreamsToUpload.size()],\r
- remote = new String[mStreamsToUpload.size()];\r
-\r
- for (int i = 0; i < mStreamsToUpload.size(); ++i) {\r
- Uri uri = (Uri) mStreamsToUpload.get(i);\r
- if (uri.getScheme().equals("content")) {\r
- Cursor c = getContentResolver().query((Uri) mStreamsToUpload.get(i),\r
- CONTENT_PROJECTION,\r
- null,\r
- null,\r
- null);\r
-\r
- if (!c.moveToFirst()) continue;\r
- \r
- 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
-\r
- } else if (uri.getScheme().equals("file")) {\r
- final File file = new File(Uri.decode(uri.toString())\r
- .replace(uri.getScheme() + "://", ""));\r
- FileNameMap fileNameMap = URLConnection.getFileNameMap();\r
- String contentType = fileNameMap.getContentTypeFor(uri\r
- .toString());\r
- if (contentType == null) {\r
- contentType = "text/plain";\r
- }\r
- if (!wdc.putFile(file.getAbsolutePath(), mUploadPath + "/"\r
- + file.getName(), contentType)) {\r
- mHandler.post(new Runnable() {\r
- public void run() {\r
- Uploader.this.onUploadComplete(\r
- false,\r
- "Error while uploading file: "\r
- + file.getName());\r
- }\r
- });\r
- }\r
- }\r
+ WebdavClient wdc = new WebdavClient(oc_uri);\r
+ wdc.setCredentials(mUsername, mPassword);\r
+ wdc.allowUnsignedCertificates();\r
\r
- }\r
- Intent intent = new Intent(getApplicationContext(), FileUploader.class);\r
- intent.putExtra(FileUploader.KEY_UPLOAD_TYPE, FileUploader.UPLOAD_MULTIPLE_FILES);\r
- intent.putExtra(FileUploader.KEY_LOCAL_FILE, local);\r
- intent.putExtra(FileUploader.KEY_REMOTE_FILE, remote);\r
- intent.putExtra(FileUploader.KEY_ACCOUNT, mAccount);\r
- startService(intent);\r
- finish();\r
+ // create last directory in path if nessesary\r
+ if (mCreateDir) {\r
+ wdc.createDirectory(mUploadPath);\r
}\r
\r
+ String[] local = new String[mStreamsToUpload.size()], remote = new String[mStreamsToUpload.size()];\r
+\r
+ for (int i = 0; i < mStreamsToUpload.size(); ++i) {\r
+ Uri uri = (Uri) mStreamsToUpload.get(i);\r
+ if (uri.getScheme().equals("content")) {\r
+ Cursor c = getContentResolver().query((Uri) mStreamsToUpload.get(i),\r
+ CONTENT_PROJECTION,\r
+ null,\r
+ null,\r
+ null);\r
+\r
+ if (!c.moveToFirst())\r
+ continue;\r
+\r
+ 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
+ } 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
+ }\r
\r
+ }\r
+ Intent intent = new Intent(getApplicationContext(), FileUploader.class);\r
+ intent.putExtra(FileUploader.KEY_UPLOAD_TYPE, FileUploader.UPLOAD_MULTIPLE_FILES);\r
+ intent.putExtra(FileUploader.KEY_LOCAL_FILE, local);\r
+ intent.putExtra(FileUploader.KEY_REMOTE_FILE, remote);\r
+ intent.putExtra(FileUploader.KEY_ACCOUNT, mAccount);\r
+ startService(intent);\r
+ finish();\r
+ }\r
\r
}\r