X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/532492bf9bb64d5ea4be2783c1399925ed9dd369..a99f74bd9e09ed9acc74b0fe276ed030b91fc85d:/src/com/owncloud/android/Uploader.java diff --git a/src/com/owncloud/android/Uploader.java b/src/com/owncloud/android/Uploader.java index d6e7a4ad..6f9dc6dd 100644 --- a/src/com/owncloud/android/Uploader.java +++ b/src/com/owncloud/android/Uploader.java @@ -1,9 +1,10 @@ /* ownCloud Android client application * Copyright (C) 2012 Bartek Przybylski + * Copyright (C) 2012-2013 ownCloud Inc. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or + * the Free Software Foundation, either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, @@ -30,6 +31,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; @@ -84,7 +86,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; @@ -94,8 +96,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) { @@ -106,7 +109,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(); } @@ -128,9 +130,10 @@ public class Uploader extends ListActivity implements OnItemClickListener, andro case DIALOG_NO_ACCOUNT: builder.setIcon(android.R.drawable.ic_dialog_alert); builder.setTitle(R.string.uploader_wrn_no_account_title); - builder.setMessage(R.string.uploader_wrn_no_account_text); + builder.setMessage(String.format(getString(R.string.uploader_wrn_no_account_text), getString(R.string.app_name))); 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 @@ -153,6 +156,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(); } @@ -187,6 +191,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()); @@ -195,12 +200,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); } @@ -215,6 +233,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; @@ -234,11 +253,12 @@ 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"); Vector tmpfiles = mStorageManager.getDirectoryContent(mFile); - if (tmpfiles == null) return; + if (tmpfiles.size() <= 0) return; // filter on dirtype Vector files = new Vector(); for (OCFile f : tmpfiles) @@ -251,6 +271,7 @@ public class Uploader extends ListActivity implements OnItemClickListener, andro populateDirectoryList(); } + @Override public void onClick(View v) { // click on button switch (v.getId()) { @@ -263,9 +284,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"); } @@ -305,76 +326,39 @@ public class Uploader extends ListActivity implements OnItemClickListener, andro mFile = mStorageManager.getFileByPath(full_path); if (mFile != null) { Vector files = mStorageManager.getDirectoryContent(mFile); - if (files != null) { - List> data = new LinkedList>(); - for (OCFile f : files) { - HashMap h = new HashMap(); - if (f.isDirectory()) { - h.put("dirname", f.getFileName()); - data.add(h); - } + List> data = new LinkedList>(); + for (OCFile f : files) { + HashMap h = new HashMap(); + if (f.isDirectory()) { + h.put("dirname", f.getFileName()); + data.add(h); } - SimpleAdapter sa = new SimpleAdapter(this, - data, - R.layout.uploader_list_item_layout, - new String[] {"dirname"}, - new int[] {R.id.textView1}); - setListAdapter(sa); - Button btn = (Button) findViewById(R.id.uploader_choose_folder); - btn.setOnClickListener(this); - getListView().setOnItemClickListener(this); } - } - /* - mCursor = managedQuery(ProviderMeta.ProviderTableMeta.CONTENT_URI, null, ProviderTableMeta.FILE_NAME - + "=? AND " + ProviderTableMeta.FILE_ACCOUNT_OWNER + "=?", new String[] { "/", mAccount.name }, null); - - if (mCursor.moveToFirst()) { - mCursor = managedQuery( - ProviderMeta.ProviderTableMeta.CONTENT_URI, - null, - ProviderTableMeta.FILE_CONTENT_TYPE + "=? AND " + ProviderTableMeta.FILE_ACCOUNT_OWNER + "=? AND " - + ProviderTableMeta.FILE_PARENT + "=?", - new String[] { "DIR", mAccount.name, - mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta._ID)) }, null); - - ListView lv = getListView(); - lv.setOnItemClickListener(this); - SimpleCursorAdapter sca = new SimpleCursorAdapter(this, R.layout.uploader_list_item_layout, mCursor, - new String[] { ProviderTableMeta.FILE_NAME }, new int[] { R.id.textView1 }); - setListAdapter(sca); + SimpleAdapter sa = new SimpleAdapter(this, + data, + R.layout.uploader_list_item_layout, + new String[] {"dirname"}, + new int[] {R.id.textView1}); + setListAdapter(sa); Button btn = (Button) findViewById(R.id.uploader_choose_folder); btn.setOnClickListener(this); - /* - * disable this until new server interaction service wont be created - * // insert create new directory for multiple items uploading if - * (getIntent().getAction().equals(Intent.ACTION_SEND_MULTIPLE)) { - * Button createDirBtn = new Button(this); - * createDirBtn.setId(android.R.id.button1); - * createDirBtn.setText(R.string.uploader_btn_create_dir_text); - * createDirBtn.setOnClickListener(this); ((LinearLayout) - * findViewById(R.id.linearLayout1)).addView( createDirBtn, - * LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); } - * - }*/ + getListView().setOnItemClickListener(this); + } } - 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() { try { - WebdavClient wdc = new WebdavClient(mAccount, getApplicationContext()); - wdc.allowSelfsignedCertificates(); + WebdavClient wdc = OwnCloudClientUtils.createOwnCloudClient(mAccount, getApplicationContext()); // create last directory in path if necessary if (mCreateDir) { @@ -415,7 +399,8 @@ public class Uploader extends ListActivity implements OnItemClickListener, andro finish(); } catch (SecurityException e) { - Toast.makeText(this, getString(R.string.uploader_error_forbidden_content), Toast.LENGTH_LONG).show(); + String message = String.format(getString(R.string.uploader_error_forbidden_content), getString(R.string.app_name)); + Toast.makeText(this, message, Toast.LENGTH_LONG).show(); } }