X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/a4ba6170ea7696e085b07adfef73eeb8b77cb8e2..5fc7cd13e7e561ef528e12d2fa088b58e35e00d0:/src/com/owncloud/android/Uploader.java diff --git a/src/com/owncloud/android/Uploader.java b/src/com/owncloud/android/Uploader.java index 718911d3..7b661496 100644 --- a/src/com/owncloud/android/Uploader.java +++ b/src/com/owncloud/android/Uploader.java @@ -30,6 +30,7 @@ import com.owncloud.android.datamodel.DataStorageManager; import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.files.services.FileUploader; +import com.owncloud.android.network.OwnCloudClientUtils; import android.accounts.Account; import android.accounts.AccountManager; @@ -56,6 +57,8 @@ import android.widget.AdapterView.OnItemClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.SimpleAdapter; +import android.widget.Toast; + import com.owncloud.android.R; import eu.alefzero.webdav.WebdavClient; @@ -82,7 +85,7 @@ public class Uploader extends ListActivity implements OnItemClickListener, andro private final static int DIALOG_WAITING = 1; private final static int DIALOG_NO_STREAM = 2; private final static int DIALOG_MULTIPLE_ACCOUNT = 3; - private final static int DIALOG_GET_DIRNAME = 4; + //private final static int DIALOG_GET_DIRNAME = 4; private final static int REQUEST_CODE_SETUP_ACCOUNT = 0; @@ -92,8 +95,9 @@ public class Uploader extends ListActivity implements OnItemClickListener, andro getWindow().requestFeature(Window.FEATURE_NO_TITLE); mParents = new Stack(); mParents.add(""); - if (getIntent().hasExtra(Intent.EXTRA_STREAM)) { - prepareStreamsToUpload(); + /*if (getIntent().hasExtra(Intent.EXTRA_STREAM)) { + prepareStreamsToUpload();*/ + if (prepareStreamsToUpload()) { mAccountManager = (AccountManager) getSystemService(Context.ACCOUNT_SERVICE); Account[] accounts = mAccountManager.getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE); if (accounts.length == 0) { @@ -104,7 +108,6 @@ public class Uploader extends ListActivity implements OnItemClickListener, andro showDialog(DIALOG_MULTIPLE_ACCOUNT); } else { mAccount = accounts[0]; - setContentView(R.layout.uploader_layout); mStorageManager = new FileDataStorageManager(mAccount, getContentResolver()); populateDirectoryList(); } @@ -129,6 +132,7 @@ public class Uploader extends ListActivity implements OnItemClickListener, andro builder.setMessage(R.string.uploader_wrn_no_account_text); builder.setCancelable(false); builder.setPositiveButton(R.string.uploader_wrn_no_account_setup_btn_text, new OnClickListener() { + @Override public void onClick(DialogInterface dialog, int which) { if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.ECLAIR_MR1) { // using string value since in API7 this @@ -151,6 +155,7 @@ public class Uploader extends ListActivity implements OnItemClickListener, andro } }); builder.setNegativeButton(R.string.uploader_wrn_no_account_quit_btn_text, new OnClickListener() { + @Override public void onClick(DialogInterface dialog, int which) { finish(); } @@ -185,6 +190,7 @@ public class Uploader extends ListActivity implements OnItemClickListener, andro } builder.setTitle(R.string.common_choose_account); builder.setItems(ac, new OnClickListener() { + @Override public void onClick(DialogInterface dialog, int which) { mAccount = mAccountManager.getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE)[which]; mStorageManager = new FileDataStorageManager(mAccount, getContentResolver()); @@ -193,12 +199,25 @@ public class Uploader extends ListActivity implements OnItemClickListener, andro }); builder.setCancelable(true); builder.setOnCancelListener(new OnCancelListener() { + @Override public void onCancel(DialogInterface dialog) { dialog.cancel(); finish(); } }); return builder.create(); + case DIALOG_NO_STREAM: + builder.setIcon(android.R.drawable.ic_dialog_alert); + builder.setTitle(R.string.uploader_wrn_no_content_title); + builder.setMessage(R.string.uploader_wrn_no_content_text); + builder.setCancelable(false); + builder.setNegativeButton(R.string.common_cancel, new OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + finish(); + } + }); + return builder.create(); default: throw new IllegalArgumentException("Unknown dialog id: " + id); } @@ -213,6 +232,7 @@ public class Uploader extends ListActivity implements OnItemClickListener, andro mDirname = dirname; } + @Override public void onClick(DialogInterface dialog, int which) { Uploader.this.mUploadPath = mPath + mDirname.getText().toString(); Uploader.this.mCreateDir = true; @@ -232,6 +252,7 @@ public class Uploader extends ListActivity implements OnItemClickListener, andro } } + @Override public void onItemClick(AdapterView parent, View view, int position, long id) { // click on folder in the list Log.d(TAG, "on item click"); @@ -249,6 +270,7 @@ public class Uploader extends ListActivity implements OnItemClickListener, andro populateDirectoryList(); } + @Override public void onClick(View v) { // click on button switch (v.getId()) { @@ -261,9 +283,9 @@ public class Uploader extends ListActivity implements OnItemClickListener, andro uploadFiles(); break; - case android.R.id.button1: // dynamic action for create aditional dir + /*case android.R.id.button1: // dynamic action for create aditional dir showDialog(DIALOG_GET_DIRNAME); - break; + break;*/ default: throw new IllegalArgumentException("Wrong element clicked"); } @@ -357,59 +379,61 @@ public class Uploader extends ListActivity implements OnItemClickListener, andro }*/ } - private void prepareStreamsToUpload() { + private boolean prepareStreamsToUpload() { if (getIntent().getAction().equals(Intent.ACTION_SEND)) { mStreamsToUpload = new ArrayList(); mStreamsToUpload.add(getIntent().getParcelableExtra(Intent.EXTRA_STREAM)); } else if (getIntent().getAction().equals(Intent.ACTION_SEND_MULTIPLE)) { mStreamsToUpload = getIntent().getParcelableArrayListExtra(Intent.EXTRA_STREAM); - } else { - // unknow action inserted - throw new IllegalArgumentException("Unknown action given: " + getIntent().getAction()); } + return (mStreamsToUpload != null && mStreamsToUpload.get(0) != null); } public void uploadFiles() { - WebdavClient wdc = new WebdavClient(mAccount, getApplicationContext()); - wdc.allowSelfsignedCertificates(); + try { + WebdavClient wdc = OwnCloudClientUtils.createOwnCloudClient(mAccount, getApplicationContext()); - // create last directory in path if nessesary - if (mCreateDir) { - wdc.createDirectory(mUploadPath); - } + // create last directory in path if necessary + if (mCreateDir) { + wdc.createDirectory(mUploadPath); + } - String[] local = new String[mStreamsToUpload.size()], remote = new String[mStreamsToUpload.size()]; + String[] local = new String[mStreamsToUpload.size()], remote = new String[mStreamsToUpload.size()]; - for (int i = 0; i < mStreamsToUpload.size(); ++i) { - Uri uri = (Uri) mStreamsToUpload.get(i); - if (uri.getScheme().equals("content")) { - Cursor c = getContentResolver().query((Uri) mStreamsToUpload.get(i), + for (int i = 0; i < mStreamsToUpload.size(); ++i) { + Uri uri = (Uri) mStreamsToUpload.get(i); + if (uri.getScheme().equals("content")) { + Cursor c = getContentResolver().query((Uri) mStreamsToUpload.get(i), CONTENT_PROJECTION, null, null, null); - if (!c.moveToFirst()) - continue; - - final String display_name = c.getString(c.getColumnIndex(Media.DISPLAY_NAME)), - data = c.getString(c.getColumnIndex(Media.DATA)); - local[i] = data; - remote[i] = mUploadPath + display_name; - } else if (uri.getScheme().equals("file")) { - final File file = new File(Uri.decode(uri.toString()).replace(uri.getScheme() + "://", "")); - local[i] = file.getAbsolutePath(); - remote[i] = mUploadPath + file.getName(); - } + if (!c.moveToFirst()) + continue; + + final String display_name = c.getString(c.getColumnIndex(Media.DISPLAY_NAME)), + data = c.getString(c.getColumnIndex(Media.DATA)); + local[i] = data; + remote[i] = mUploadPath + display_name; + } else if (uri.getScheme().equals("file")) { + final File file = new File(Uri.decode(uri.toString()).replace(uri.getScheme() + "://", "")); + local[i] = file.getAbsolutePath(); + remote[i] = mUploadPath + file.getName(); + } + } + Intent intent = new Intent(getApplicationContext(), FileUploader.class); + intent.putExtra(FileUploader.KEY_UPLOAD_TYPE, FileUploader.UPLOAD_MULTIPLE_FILES); + intent.putExtra(FileUploader.KEY_LOCAL_FILE, local); + intent.putExtra(FileUploader.KEY_REMOTE_FILE, remote); + intent.putExtra(FileUploader.KEY_ACCOUNT, mAccount); + startService(intent); + finish(); + + } catch (SecurityException e) { + Toast.makeText(this, getString(R.string.uploader_error_forbidden_content), Toast.LENGTH_LONG).show(); } - Intent intent = new Intent(getApplicationContext(), FileUploader.class); - intent.putExtra(FileUploader.KEY_UPLOAD_TYPE, FileUploader.UPLOAD_MULTIPLE_FILES); - intent.putExtra(FileUploader.KEY_LOCAL_FILE, local); - intent.putExtra(FileUploader.KEY_REMOTE_FILE, remote); - intent.putExtra(FileUploader.KEY_ACCOUNT, mAccount); - startService(intent); - finish(); } }