import com.owncloud.android.datamodel.FileDataStorageManager;\r
import com.owncloud.android.datamodel.OCFile;\r
import com.owncloud.android.files.services.FileUploader;\r
+import com.owncloud.android.network.OwnCloudClientUtils;\r
\r
import android.accounts.Account;\r
import android.accounts.AccountManager;\r
import android.widget.Button;\r
import android.widget.EditText;\r
import android.widget.SimpleAdapter;\r
+import android.widget.Toast;\r
+\r
import com.owncloud.android.R;\r
import eu.alefzero.webdav.WebdavClient;\r
\r
private final static int DIALOG_WAITING = 1;\r
private final static int DIALOG_NO_STREAM = 2;\r
private final static int DIALOG_MULTIPLE_ACCOUNT = 3;\r
- private final static int DIALOG_GET_DIRNAME = 4;\r
+ //private final static int DIALOG_GET_DIRNAME = 4;\r
\r
private final static int REQUEST_CODE_SETUP_ACCOUNT = 0;\r
\r
getWindow().requestFeature(Window.FEATURE_NO_TITLE);\r
mParents = new Stack<String>();\r
mParents.add("");\r
- if (getIntent().hasExtra(Intent.EXTRA_STREAM)) {\r
- prepareStreamsToUpload();\r
+ /*if (getIntent().hasExtra(Intent.EXTRA_STREAM)) {\r
+ prepareStreamsToUpload();*/\r
+ if (prepareStreamsToUpload()) {\r
mAccountManager = (AccountManager) getSystemService(Context.ACCOUNT_SERVICE);\r
Account[] accounts = mAccountManager.getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE);\r
if (accounts.length == 0) {\r
showDialog(DIALOG_MULTIPLE_ACCOUNT);\r
} else {\r
mAccount = accounts[0];\r
- setContentView(R.layout.uploader_layout);\r
mStorageManager = new FileDataStorageManager(mAccount, getContentResolver());\r
populateDirectoryList();\r
}\r
builder.setMessage(R.string.uploader_wrn_no_account_text);\r
builder.setCancelable(false);\r
builder.setPositiveButton(R.string.uploader_wrn_no_account_setup_btn_text, new OnClickListener() {\r
+ @Override\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
}\r
});\r
builder.setNegativeButton(R.string.uploader_wrn_no_account_quit_btn_text, new OnClickListener() {\r
+ @Override\r
public void onClick(DialogInterface dialog, int which) {\r
finish();\r
}\r
}\r
builder.setTitle(R.string.common_choose_account);\r
builder.setItems(ac, new OnClickListener() {\r
+ @Override\r
public void onClick(DialogInterface dialog, int which) {\r
mAccount = mAccountManager.getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE)[which];\r
mStorageManager = new FileDataStorageManager(mAccount, getContentResolver());\r
});\r
builder.setCancelable(true);\r
builder.setOnCancelListener(new OnCancelListener() {\r
+ @Override\r
public void onCancel(DialogInterface dialog) {\r
dialog.cancel();\r
finish();\r
}\r
});\r
return builder.create();\r
+ case DIALOG_NO_STREAM:\r
+ builder.setIcon(android.R.drawable.ic_dialog_alert);\r
+ builder.setTitle(R.string.uploader_wrn_no_content_title);\r
+ builder.setMessage(R.string.uploader_wrn_no_content_text);\r
+ builder.setCancelable(false);\r
+ builder.setNegativeButton(R.string.common_cancel, new OnClickListener() {\r
+ @Override\r
+ public void onClick(DialogInterface dialog, int which) {\r
+ finish();\r
+ }\r
+ });\r
+ return builder.create();\r
default:\r
throw new IllegalArgumentException("Unknown dialog id: " + id);\r
}\r
mDirname = dirname;\r
}\r
\r
+ @Override\r
public void onClick(DialogInterface dialog, int which) {\r
Uploader.this.mUploadPath = mPath + mDirname.getText().toString();\r
Uploader.this.mCreateDir = true;\r
}\r
}\r
\r
+ @Override\r
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {\r
// click on folder in the list\r
Log.d(TAG, "on item click");\r
populateDirectoryList();\r
}\r
\r
+ @Override\r
public void onClick(View v) {\r
// click on button\r
switch (v.getId()) {\r
uploadFiles();\r
\r
break;\r
- case android.R.id.button1: // dynamic action for create aditional dir\r
+ /*case android.R.id.button1: // dynamic action for create aditional dir\r
showDialog(DIALOG_GET_DIRNAME);\r
- break;\r
+ break;*/\r
default:\r
throw new IllegalArgumentException("Wrong element clicked");\r
}\r
}*/\r
}\r
\r
- private void prepareStreamsToUpload() {\r
+ private boolean prepareStreamsToUpload() {\r
if (getIntent().getAction().equals(Intent.ACTION_SEND)) {\r
mStreamsToUpload = new ArrayList<Parcelable>();\r
mStreamsToUpload.add(getIntent().getParcelableExtra(Intent.EXTRA_STREAM));\r
} else if (getIntent().getAction().equals(Intent.ACTION_SEND_MULTIPLE)) {\r
mStreamsToUpload = getIntent().getParcelableArrayListExtra(Intent.EXTRA_STREAM);\r
- } else {\r
- // unknow action inserted\r
- throw new IllegalArgumentException("Unknown action given: " + getIntent().getAction());\r
}\r
+ return (mStreamsToUpload != null && mStreamsToUpload.get(0) != null);\r
}\r
\r
public void uploadFiles() {\r
- WebdavClient wdc = new WebdavClient(mAccount, getApplicationContext());\r
- wdc.allowSelfsignedCertificates();\r
+ try {\r
+ WebdavClient wdc = OwnCloudClientUtils.createOwnCloudClient(mAccount, getApplicationContext());\r
\r
- // create last directory in path if nessesary\r
- if (mCreateDir) {\r
- wdc.createDirectory(mUploadPath);\r
- }\r
+ // create last directory in path if necessary\r
+ if (mCreateDir) {\r
+ wdc.createDirectory(mUploadPath);\r
+ }\r
\r
- String[] local = new String[mStreamsToUpload.size()], remote = new String[mStreamsToUpload.size()];\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
+ 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
+ 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
+ } catch (SecurityException e) {\r
+ Toast.makeText(this, getString(R.string.uploader_error_forbidden_content), Toast.LENGTH_LONG).show();\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