Javadoc @param formatting fix
[pub/Android/ownCloud.git] / src / eu / alefzero / owncloud / Uploader.java
index f210a6e..ca2ff24 100644 (file)
@@ -62,424 +62,498 @@ import eu.alefzero.webdav.WebdavUtils;
 \r
 /**\r
  * This can be used to upload things to an ownCloud instance.\r
+ * \r
  * @author Bartek Przybylski\r
- *\r
+ * \r
  */\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
-\r
-  private final static int DIALOG_NO_ACCOUNT = 0;\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
-\r
-  private final static int REQUEST_CODE_SETUP_ACCOUNT = 0;\r
-\r
-  @Override\r
-  protected void onCreate(Bundle savedInstanceState) {\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.getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE);\r
-      if (accounts.length == 0) {\r
-        Log.i(TAG, "No ownCloud account is available");\r
-        showDialog(DIALOG_NO_ACCOUNT);\r
-      } else if (accounts.length > 1) {\r
-        Log.i(TAG, "More then one ownCloud is available");\r
-        showDialog(DIALOG_MULTIPLE_ACCOUNT);\r
-      } else {\r
-        mAccount = accounts[0];\r
-        setContentView(R.layout.uploader_layout);\r
-        populateDirectoryList();\r
-      }\r
-    } else {\r
-      showDialog(DIALOG_NO_STREAM);\r
-    }\r
-  }\r
-\r
-  @Override\r
-  protected Dialog onCreateDialog(final int id) {\r
-    final AlertDialog.Builder builder = new Builder(this);\r
-    switch (id) {\r
-      case DIALOG_WAITING:\r
-        ProgressDialog pDialog = new ProgressDialog(this);\r
-        pDialog.setIndeterminate(false);\r
-        pDialog.setCancelable(false);\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.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 constatn is not defined\r
-              // in API7 < this constatant is defined in 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
+public class Uploader extends ListActivity implements OnItemClickListener,\r
+        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
+\r
+    private final static int DIALOG_NO_ACCOUNT = 0;\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
+\r
+    private final static int REQUEST_CODE_SETUP_ACCOUNT = 0;\r
+\r
+    @Override\r
+    protected void onCreate(Bundle savedInstanceState) {\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
+            if (accounts.length == 0) {\r
+                Log.i(TAG, "No ownCloud account is available");\r
+                showDialog(DIALOG_NO_ACCOUNT);\r
+            } else if (accounts.length > 1) {\r
+                Log.i(TAG, "More then one ownCloud is available");\r
+                showDialog(DIALOG_MULTIPLE_ACCOUNT);\r
             } else {\r
-              // since in API7 there is no direct call for account setup, so we need to\r
-              // show our own AccountSetupAcricity, get desired results and setup\r
-              // everything for ourself\r
-              Intent intent = new Intent(getBaseContext(), AccountAuthenticator.class);\r
-              startActivityForResult(intent, REQUEST_CODE_SETUP_ACCOUNT);\r
+                mAccount = accounts[0];\r
+                setContentView(R.layout.uploader_layout);\r
+                populateDirectoryList();\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
-        builder.setView(dirName);\r
-        builder.setTitle(R.string.uploader_info_dirname);\r
-        String pathToUpload;\r
-        if (mParents.empty()) {\r
-          pathToUpload = "/";\r
         } else {\r
-          mCursor = managedQuery(Uri.withAppendedPath(ProviderTableMeta.CONTENT_URI_FILE, mParents.peek()), \r
-                                 null,\r
-                                 null,\r
-                                 null,\r
-                                 null);\r
-          mCursor.moveToFirst();\r
-          pathToUpload = mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta.FILE_PATH)) +\r
-                         mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta.FILE_NAME)).replace(" ", "%20");\r
+            showDialog(DIALOG_NO_STREAM);\r
         }\r
-        a a = new a(pathToUpload, dirName);\r
-        builder.setPositiveButton(R.string.common_ok, a);\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.getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE).length];\r
-        for (int i = 0;  i < ac.length; ++i) {\r
-          ac[i] = mAccountManager.getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE)[i].name;\r
+    }\r
+\r
+    @Override\r
+    protected Dialog onCreateDialog(final int id) {\r
+        final AlertDialog.Builder builder = new Builder(this);\r
+        switch (id) {\r
+        case DIALOG_WAITING:\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
+            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
+            return builder.create();\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
+            String pathToUpload;\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(mCursor\r
+                        .getColumnIndex(ProviderTableMeta.FILE_PATH))\r
+                        + mCursor\r
+                                .getString(\r
+                                        mCursor.getColumnIndex(ProviderTableMeta.FILE_NAME))\r
+                                .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
+            return builder.create();\r
+        case DIALOG_MULTIPLE_ACCOUNT:\r
+            CharSequence ac[] = new CharSequence[mAccountManager\r
+                    .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
+            }\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
+                    populateDirectoryList();\r
+                }\r
+            });\r
+            builder.setCancelable(true);\r
+            builder.setOnCancelListener(new OnCancelListener() {\r
+                public void onCancel(DialogInterface dialog) {\r
+                    dialog.cancel();\r
+                    finish();\r
+                }\r
+            });\r
+            return builder.create();\r
+        default:\r
+            throw new IllegalArgumentException("Unknown dialog id: " + id);\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.getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE)[which];\r
-            populateDirectoryList();\r
-          }\r
-        });\r
-        builder.setCancelable(true);\r
-        builder.setOnCancelListener(new OnCancelListener() {\r
-          public void onCancel(DialogInterface dialog) {\r
-            dialog.cancel();\r
-            finish();\r
-          }\r
-        });\r
-        return builder.create();\r
-      default:\r
-        throw new IllegalArgumentException("Unknown dialog id: " + id);\r
     }\r
-  }\r
-  \r
-  class a implements OnClickListener {\r
-    String mPath;\r
-    EditText mDirname;\r
-    public a(String path, EditText dirname) {\r
-      mPath = path; mDirname = dirname;\r
+\r
+    class a implements OnClickListener {\r
+        String mPath;\r
+        EditText mDirname;\r
+\r
+        public a(String path, EditText dirname) {\r
+            mPath = path;\r
+            mDirname = dirname;\r
+        }\r
+\r
+        public void onClick(DialogInterface dialog, int which) {\r
+            showDialog(DIALOG_WAITING);\r
+            mUploadThread = new Thread(new BackgroundUploader(mPath\r
+                    + mDirname.getText().toString(), mStreamsToUpload,\r
+                    mHandler, true));\r
+            mUploadThread.start();\r
+        }\r
     }\r
-    public void onClick(DialogInterface dialog, int which) {\r
-      showDialog(DIALOG_WAITING);\r
-      mUploadThread = new Thread(new BackgroundUploader(mPath+mDirname.getText().toString(), mStreamsToUpload, mHandler, true));\r
-      mUploadThread.start();\r
+\r
+    @Override\r
+    public void onBackPressed() {\r
+\r
+        if (mParents.size() == 0) {\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
+        }\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
-  \r
-  @Override\r
-  public void onBackPressed() {\r
-    \r
-    if (mParents.size()==0) {\r
-      super.onBackPressed();\r
-      return;\r
-    } else if (mParents.size() == 1) {\r
-      mParents.pop();\r
-      mCursor = managedQuery(ProviderTableMeta.CONTENT_URI,\r
-          null,\r
-          ProviderTableMeta.FILE_CONTENT_TYPE+"=?",\r
-          new String[]{"DIR"},\r
-          null);\r
-    } else {\r
-      mParents.pop();\r
-      mCursor = managedQuery(Uri.withAppendedPath(ProviderTableMeta.CONTENT_URI_DIR, mParents.peek()),\r
-          null,\r
-          ProviderTableMeta.FILE_CONTENT_TYPE+"=?",\r
-          new String[]{"DIR"},\r
-          null);\r
+\r
+    public void onItemClick(AdapterView<?> parent, View view, int position,\r
+            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
+        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
     }\r
-    \r
-    SimpleCursorAdapter sca = new SimpleCursorAdapter(this, R.layout.uploader_list_item_layout,\r
-                                   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, long id) {\r
-    if (!mCursor.moveToPosition(position)) {\r
-      throw new IndexOutOfBoundsException("Incorrect item selected");\r
+\r
+    public void onClick(View v) {\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
+\r
+            showDialog(DIALOG_WAITING);\r
+            mUploadThread = new Thread(new BackgroundUploader(pathToUpload,\r
+                    mStreamsToUpload, mHandler));\r
+            mUploadThread.start();\r
+\r
+            break;\r
+        case android.R.id.button1: // dynamic action for create aditional dir\r
+            showDialog(DIALOG_GET_DIRNAME);\r
+            break;\r
+        default:\r
+            throw new IllegalArgumentException("Wrong element clicked");\r
+        }\r
     }\r
-    String _id = mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta._ID));\r
-    mParents.push(_id);\r
-    \r
-    mCursor.close();\r
-    mCursor = managedQuery(Uri.withAppendedPath(ProviderTableMeta.CONTENT_URI_DIR, _id),\r
-                           null,\r
-                           ProviderTableMeta.FILE_CONTENT_TYPE+"=?",\r
-                           new String[]{"DIR"},\r
-                           null);\r
-    SimpleCursorAdapter sca = new SimpleCursorAdapter(this, R.layout.uploader_list_item_layout,\r
-                                                      mCursor,\r
-                                                      new String[]{ProviderTableMeta.FILE_NAME},\r
-                                                      new int[]{R.id.textView1});\r
-    setListAdapter(sca);\r
-    getListView().invalidate();\r
-  }\r
-\r
-  public void onClick(View v) {\r
-    switch (v.getId()) {\r
-      case R.id.uploader_choose_folder:\r
-        String pathToUpload = null;\r
-        if (mParents.empty()) {\r
-          pathToUpload = "/";\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
-          mCursor = managedQuery(Uri.withAppendedPath(ProviderTableMeta.CONTENT_URI_FILE, mParents.peek()), \r
-                                 null,\r
-                                 null,\r
-                                 null,\r
-                                 null);\r
-          mCursor.moveToFirst();\r
-          pathToUpload = mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta.FILE_PATH)).replace(" ", "%20");\r
+            Toast.makeText(\r
+                    this,\r
+                    getResources().getString(R.string.uploader_upload_failed)\r
+                            + message, Toast.LENGTH_LONG).show();\r
         }\r
-        Log.d(TAG, "Uploading file to dir " + pathToUpload);\r
-        \r
-        showDialog(DIALOG_WAITING);\r
-        mUploadThread = new Thread(new BackgroundUploader(pathToUpload, mStreamsToUpload, mHandler));\r
-        mUploadThread.start();\r
-        \r
-        break;\r
-      case android.R.id.button1: // dynamic action for create aditional dir\r
-        showDialog(DIALOG_GET_DIRNAME);\r
-        break;\r
-      default:\r
-        throw new IllegalArgumentException("Wrong element clicked");\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, getResources().getString(R.string.uploader_upload_succeed), Toast.LENGTH_SHORT).show();\r
-    } else {\r
-      Toast.makeText(this, getResources().getString(R.string.uploader_upload_failed) + 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: " + 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.getAccountsByType(AccountAuthenticator.AUTH_TOKEN_TYPE);\r
-      if (accounts.length == 0) {\r
-        showDialog(DIALOG_NO_ACCOUNT);\r
-      } else {\r
-        // there is no need for checking for is there more then one account at this point\r
-        // since account setup can set only one account at time\r
-        mAccount = accounts[0];\r
-        populateDirectoryList();\r
-      }\r
-    }\r
-  }\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,\r
-                           ProviderTableMeta.FILE_NAME+"=? AND " +ProviderTableMeta.FILE_ACCOUNT_OWNER+"=?",\r
-                           new String[]{"/", mAccount.name},\r
-                           null);\r
-    \r
-    if (mCursor.moveToFirst()) {\r
-      mCursor = managedQuery(ProviderMeta.ProviderTableMeta.CONTENT_URI,\r
-                             null,\r
-                             ProviderTableMeta.FILE_CONTENT_TYPE+"=? AND " + ProviderTableMeta.FILE_ACCOUNT_OWNER + "=? AND " +ProviderTableMeta.FILE_PARENT+"=?",\r
-                             new String[]{"DIR", mAccount.name, mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta._ID))},\r
-                             null);    \r
-  \r
-      ListView lv = getListView();\r
-      lv.setOnItemClickListener(this);\r
-      SimpleCursorAdapter sca = new SimpleCursorAdapter(this,\r
-                                                        R.layout.uploader_list_item_layout,\r
-                                                        mCursor,\r
-                                                        new String[]{ProviderTableMeta.FILE_NAME},\r
-                                                        new int[]{R.id.textView1});\r
-      setListAdapter(sca);\r
-      Button btn = (Button) findViewById(R.id.uploader_choose_folder);\r
-      btn.setOnClickListener(this);\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(createDirBtn, 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(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
+    @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
+        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
+            if (accounts.length == 0) {\r
+                showDialog(DIALOG_NO_ACCOUNT);\r
+            } else {\r
+                // there is no need for checking for is there more then one\r
+                // account at this point\r
+                // since account setup can set only one account at time\r
+                mAccount = accounts[0];\r
+                populateDirectoryList();\r
+            }\r
+        }\r
     }\r
-  }\r
-  \r
-  public void PartialupdateUpload(String fileLocalPath, String filename, 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, 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 + " ++ " + contentType + " ++ " + fileLocalPath);\r
-    if (!mParents.empty()) {\r
-      Cursor c = managedQuery(Uri.withAppendedPath(ProviderTableMeta.CONTENT_URI_FILE, mParents.peek()),\r
-                              null,\r
-                              null,\r
-                              null,\r
-                              null);\r
-      c.moveToFirst();\r
-      cv.put(ProviderTableMeta.FILE_PARENT, c.getString(c.getColumnIndex(ProviderTableMeta._ID)));\r
-      c.close();\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
+\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_PARENT + "=?",\r
+                    new String[] {\r
+                            "DIR",\r
+                            mAccount.name,\r
+                            mCursor.getString(mCursor\r
+                                    .getColumnIndex(ProviderTableMeta._ID)) },\r
+                    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
+            setListAdapter(sca);\r
+            Button btn = (Button) findViewById(R.id.uploader_choose_folder);\r
+            btn.setOnClickListener(this);\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
-    getContentResolver().insert(ProviderTableMeta.CONTENT_URI_FILE, cv);\r
-  }\r
-  \r
-  class BackgroundUploader implements Runnable {\r
-    private ArrayList<Parcelable> mUploadStreams;\r
-    private Handler mHandler;\r
-    private String mUploadPath;\r
-    private boolean mCreateDir;\r
-    \r
-    public BackgroundUploader(String pathToUpload, ArrayList<Parcelable> streamsToUpload,\r
-        Handler handler) {\r
-      mUploadStreams = streamsToUpload;\r
-      mHandler = handler;\r
-      mUploadPath = pathToUpload.replace(" ", "%20");\r
-      mCreateDir = false;\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
+        } else if (getIntent().getAction().equals(Intent.ACTION_SEND_MULTIPLE)) {\r
+            mStreamsToUpload = getIntent().getParcelableArrayListExtra(\r
+                    Intent.EXTRA_STREAM);\r
+        } else {\r
+            // unknow action inserted\r
+            throw new IllegalArgumentException("Unknown action given: "\r
+                    + getIntent().getAction());\r
+        }\r
     }\r
 \r
-    public BackgroundUploader(String pathToUpload, ArrayList<Parcelable> streamsToUpload,\r
-                              Handler handler, boolean createDir) {\r
-      mUploadStreams = streamsToUpload;\r
-      mHandler = handler;\r
-      mUploadPath = pathToUpload.replace(" ", "%20");\r
-      mCreateDir = createDir;\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
 \r
-    public void run() {\r
-      WebdavClient wdc = new WebdavClient(Uri.parse(mAccountManager.getUserData(mAccount,\r
-          AccountAuthenticator.KEY_OC_URL)));\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
-      for (int i = 0; i < mUploadStreams.size(); ++i) {\r
-        Uri uri = (Uri) mUploadStreams.get(i);\r
-        if (uri.getScheme().equals("content")) {\r
-          final Cursor c = getContentResolver().query((Uri) mUploadStreams.get(i), null, null, null, null);\r
-          \r
-          if (!wdc.putFile(c.getString(c.getColumnIndex(Media.DATA)),\r
-                           mUploadPath+"/"+c.getString(c.getColumnIndex(Media.DISPLAY_NAME)),\r
-                           c.getString(c.getColumnIndex(Media.MIME_TYPE)))) {\r
-            mHandler.post(new Runnable() {\r
-              public void run() {\r
-                Uploader.this.onUploadComplete(false, "Error while uploading file: " + c.getString(c.getColumnIndex(Media.DISPLAY_NAME)));\r
-              }\r
-            });\r
-          } else {\r
-            mHandler.post(new Runnable() {\r
-              public void run() {\r
-                Uploader.this.PartialupdateUpload(c.getString(c.getColumnIndex(Media.DATA)),\r
-                    c.getString(c.getColumnIndex(Media.DISPLAY_NAME)),\r
-                    mUploadPath+"/"+c.getString(c.getColumnIndex(Media.DISPLAY_NAME)),\r
-                    c.getString(c.getColumnIndex(Media.MIME_TYPE)),\r
-                    c.getString(c.getColumnIndex(Media.SIZE)));\r
-              }\r
-            });\r
-          }\r
-        } else if (uri.getScheme().equals("file")) {\r
-         final File file = new File(Uri.decode(uri.toString()).replace(uri.getScheme()+"://", ""));\r
-         FileNameMap fileNameMap = URLConnection.getFileNameMap();\r
-         String contentType = fileNameMap.getContentTypeFor(uri.toString());\r
-         if (contentType == null) {\r
-           contentType = "text/plain";\r
-         }\r
-         if (!wdc.putFile(file.getAbsolutePath(), mUploadPath+"/"+file.getName(), contentType)) {\r
-           mHandler.post(new Runnable() {\r
-             public void run() {\r
-               Uploader.this.onUploadComplete(false, "Error while uploading file: " + file.getName());\r
-             }\r
-           });\r
-         }\r
+    class BackgroundUploader implements Runnable {\r
+        private ArrayList<Parcelable> mUploadStreams;\r
+        private Handler mHandler;\r
+        private String mUploadPath;\r
+        private boolean mCreateDir;\r
+\r
+        public BackgroundUploader(String pathToUpload,\r
+                ArrayList<Parcelable> streamsToUpload, Handler handler) {\r
+            mUploadStreams = streamsToUpload;\r
+            mHandler = handler;\r
+            mUploadPath = pathToUpload.replace(" ", "%20");\r
+            mCreateDir = false;\r
+        }\r
+\r
+        public BackgroundUploader(String pathToUpload,\r
+                ArrayList<Parcelable> streamsToUpload, Handler handler,\r
+                boolean createDir) {\r
+            mUploadStreams = streamsToUpload;\r
+            mHandler = handler;\r
+            mUploadPath = pathToUpload.replace(" ", "%20");\r
+            mCreateDir = createDir;\r
         }\r
-        \r
-      }\r
-      mHandler.post(new Runnable() {\r
+\r
         public void run() {\r
-          Uploader.this.onUploadComplete(true, null);\r
+            WebdavClient wdc = new WebdavClient(Uri.parse(mAccountManager\r
+                    .getUserData(mAccount, AccountAuthenticator.KEY_OC_URL)));\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
+            for (int i = 0; i < mUploadStreams.size(); ++i) {\r
+                Uri uri = (Uri) mUploadStreams.get(i);\r
+                if (uri.getScheme().equals("content")) {\r
+                    final Cursor c = getContentResolver()\r
+                            .query((Uri) mUploadStreams.get(i), null, null,\r
+                                    null, null);\r
+\r
+                    if (!wdc.putFile(\r
+                            c.getString(c.getColumnIndex(Media.DATA)),\r
+                            mUploadPath\r
+                                    + "/"\r
+                                    + c.getString(c\r
+                                            .getColumnIndex(Media.DISPLAY_NAME)),\r
+                            c.getString(c.getColumnIndex(Media.MIME_TYPE)))) {\r
+                        mHandler.post(new Runnable() {\r
+                            public void run() {\r
+                                Uploader.this\r
+                                        .onUploadComplete(\r
+                                                false,\r
+                                                "Error while uploading file: "\r
+                                                        + c.getString(c\r
+                                                                .getColumnIndex(Media.DISPLAY_NAME)));\r
+                            }\r
+                        });\r
+                    } else {\r
+                        mHandler.post(new Runnable() {\r
+                            public void run() {\r
+                                Uploader.this.PartialupdateUpload(\r
+                                        c.getString(c\r
+                                                .getColumnIndex(Media.DATA)),\r
+                                        c.getString(c\r
+                                                .getColumnIndex(Media.DISPLAY_NAME)),\r
+                                        mUploadPath\r
+                                                + "/"\r
+                                                + c.getString(c\r
+                                                        .getColumnIndex(Media.DISPLAY_NAME)),\r
+                                        c.getString(c\r
+                                                .getColumnIndex(Media.MIME_TYPE)),\r
+                                        c.getString(c\r
+                                                .getColumnIndex(Media.SIZE)));\r
+                            }\r
+                        });\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
+            mHandler.post(new Runnable() {\r
+                public void run() {\r
+                    Uploader.this.onUploadComplete(true, null);\r
+                }\r
+            });\r
         }\r
-      });\r
+\r
     }\r
 \r
-  }\r
-  \r
 }\r