version bump for GP
[pub/Android/ownCloud.git] / src / eu / alefzero / owncloud / Uploader.java
index 10d16ab..523db94 100644 (file)
@@ -1,5 +1,5 @@
 /* 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.HashMap;\r
+import java.util.LinkedList;\r
+import java.util.List;\r
 import java.util.Stack;\r
+import java.util.Vector;\r
 \r
 import android.accounts.Account;\r
 import android.accounts.AccountManager;\r
 import android.app.AlertDialog;\r
+import android.app.AlertDialog.Builder;\r
 import android.app.Dialog;\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.content.DialogInterface.OnCancelListener;\r
 import android.content.DialogInterface.OnClickListener;\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.AdapterView.OnItemClickListener;\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 android.widget.SimpleAdapter;\r
 import eu.alefzero.owncloud.authenticator.AccountAuthenticator;\r
-import eu.alefzero.owncloud.db.ProviderMeta;\r
-import eu.alefzero.owncloud.db.ProviderMeta.ProviderTableMeta;\r
+import eu.alefzero.owncloud.datamodel.DataStorageManager;\r
+import eu.alefzero.owncloud.datamodel.FileDataStorageManager;\r
+import eu.alefzero.owncloud.datamodel.OCFile;\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
@@ -68,24 +63,18 @@ import eu.alefzero.webdav.WebdavUtils;
  * @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 AccountManager mAccountManager;\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
+    private DataStorageManager mStorageManager;\r
+    private OCFile mFile;\r
 \r
     private final static int DIALOG_NO_ACCOUNT = 0;\r
     private final static int DIALOG_WAITING = 1;\r
@@ -100,12 +89,11 @@ public class Uploader extends ListActivity implements OnItemClickListener,
         super.onCreate(savedInstanceState);\r
         getWindow().requestFeature(Window.FEATURE_NO_TITLE);\r
         mParents = new Stack<String>();\r
-        mHandler = new Handler();\r
+        mParents.add("");\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
@@ -115,13 +103,14 @@ public class Uploader extends ListActivity implements OnItemClickListener,
             } else {\r
                 mAccount = accounts[0];\r
                 setContentView(R.layout.uploader_layout);\r
+                mStorageManager = new FileDataStorageManager(mAccount, getContentResolver());\r
                 populateDirectoryList();\r
             }\r
         } else {\r
             showDialog(DIALOG_NO_STREAM);\r
         }\r
     }\r
-\r
+    \r
     @Override\r
     protected Dialog onCreateDialog(final int id) {\r
         final AlertDialog.Builder builder = new Builder(this);\r
@@ -130,53 +119,42 @@ public class Uploader extends ListActivity implements OnItemClickListener,
             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
+        /*case DIALOG_GET_DIRNAME:\r
             final EditText dirName = new EditText(getBaseContext());\r
             builder.setView(dirName);\r
             builder.setTitle(R.string.uploader_info_dirname);\r
@@ -184,38 +162,30 @@ public class Uploader extends ListActivity implements OnItemClickListener,
             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");   // TODO don't make this ; use WebdavUtils.encode in the right moment\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
-            return builder.create();\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
+                    mStorageManager = new FileDataStorageManager(mAccount, getContentResolver());\r
                     populateDirectoryList();\r
                 }\r
             });\r
@@ -237,7 +207,7 @@ public class Uploader extends ListActivity implements OnItemClickListener,
         EditText mDirname;\r
 \r
         public a(String path, EditText dirname) {\r
-            mPath = path;\r
+            mPath = path; \r
             mDirname = dirname;\r
         }\r
 \r
@@ -251,70 +221,41 @@ public class Uploader extends ListActivity implements OnItemClickListener,
     @Override\r
     public void onBackPressed() {\r
 \r
-        if (mParents.size() == 0) {\r
+        if (mParents.size() <= 1) {\r
             super.onBackPressed();\r
             return;\r
-        } else if (mParents.size() == 1) {\r
-            mParents.pop();\r
-            mCursor = managedQuery(ProviderTableMeta.CONTENT_URI, null,\r
-                    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
+            populateDirectoryList();\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
-        setListAdapter(sca);\r
     }\r
 \r
-    public void onItemClick(AdapterView<?> parent, View view, int position,\r
-            long id) {\r
-        if (!mCursor.moveToPosition(position)) {\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
+        Vector<OCFile> tmpfiles = mStorageManager.getDirectoryContent(mFile);\r
+        if (tmpfiles == null) return;\r
+        // filter on dirtype\r
+        Vector<OCFile> files = new Vector<OCFile>();\r
+        for (OCFile f : tmpfiles)\r
+            if (f.isDirectory())\r
+                files.add(f);\r
+        if (files.size() < position) {\r
             throw new IndexOutOfBoundsException("Incorrect item selected");\r
         }\r
-        String _id = mCursor.getString(mCursor\r
-                .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
-        setListAdapter(sca);\r
-        getListView().invalidate();\r
+        mParents.push(files.get(position).getFileName());\r
+        populateDirectoryList();\r
     }\r
 \r
     public void onClick(View v) {\r
+        // click on button\r
         switch (v.getId()) {\r
         case R.id.uploader_choose_folder:\r
-            String pathToUpload = null;\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.moveToFirst();\r
-                pathToUpload = mCursor.getString(\r
-                        mCursor.getColumnIndex(ProviderTableMeta.FILE_PATH))\r
-                        .replace(" ", "%20");\r
-            }\r
-            Log.d(TAG, "Uploading file to dir " + pathToUpload);\r
+            mUploadPath = "";   // first element in mParents is root dir, represented by ""; init mUploadPath with "/" results in a "//" prefix\r
+            for (String p : mParents)\r
+                mUploadPath += p + OCFile.PATH_SEPARATOR;\r
+            Log.d(TAG, "Uploading file to dir " + mUploadPath);\r
 \r
-            mUploadPath = pathToUpload;\r
-            mCreateDir = false;\r
             uploadFiles();\r
 \r
             break;\r
@@ -326,34 +267,16 @@ public class Uploader extends ListActivity implements OnItemClickListener,
         }\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
@@ -367,159 +290,124 @@ public class Uploader extends ListActivity implements OnItemClickListener,
     }\r
 \r
     private void populateDirectoryList() {\r
-        mUsername = mAccount.name.substring(0, mAccount.name.indexOf('@'));\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
+        String full_path = "";\r
+        for (String a : mParents)\r
+            full_path += a + "/";\r
+        \r
+        Log.d(TAG, "Populating view with content of : " + full_path);\r
+        \r
+        mFile = mStorageManager.getFileByPath(full_path);\r
+        if (mFile != null) {\r
+            Vector<OCFile> files = mStorageManager.getDirectoryContent(mFile);\r
+            if (files != null) {\r
+                List<HashMap<String, Object>> data = new LinkedList<HashMap<String,Object>>();\r
+                for (OCFile f : files) {\r
+                    HashMap<String, Object> h = new HashMap<String, Object>();\r
+                    if (f.isDirectory()) {\r
+                        h.put("dirname", f.getFileName());\r
+                        data.add(h);\r
+                    }\r
+                }\r
+                SimpleAdapter sa = new SimpleAdapter(this,\r
+                                                     data,\r
+                                                     R.layout.uploader_list_item_layout,\r
+                                                     new String[] {"dirname"},\r
+                                                     new int[] {R.id.textView1});\r
+                setListAdapter(sa);\r
+                Button btn = (Button) findViewById(R.id.uploader_choose_folder);\r
+                btn.setOnClickListener(this);\r
+                getListView().setOnItemClickListener(this);\r
+            }\r
+        }\r
+        /*\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
+            /*\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
+        WebdavClient wdc = new WebdavClient(mAccount, getApplicationContext());\r
+        wdc.allowSelfsignedCertificates();\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
+        // create last directory in path if nessesary\r
+        if (mCreateDir) {\r
+            wdc.createDirectory(mUploadPath);\r
+        }\r
 \r
-            // create last directory in path if nessesary\r
-            if (mCreateDir) {\r
-                wdc.createDirectory(mUploadPath);\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
-            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
-\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
+        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