X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/c0da8a93f24f4f87256e71c32f3c2a300d22e62f..5ca1b94865fcb868c44fe11df01ba17d33673b17:/src/com/owncloud/android/ui/activity/Uploader.java diff --git a/src/com/owncloud/android/ui/activity/Uploader.java b/src/com/owncloud/android/ui/activity/Uploader.java index edd2f5db..9dc0fbf9 100644 --- a/src/com/owncloud/android/ui/activity/Uploader.java +++ b/src/com/owncloud/android/ui/activity/Uploader.java @@ -64,7 +64,6 @@ import com.actionbarsherlock.view.MenuItem; import com.owncloud.android.MainApp; import com.owncloud.android.R; import com.owncloud.android.authentication.AccountAuthenticator; -import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.files.services.FileUploader; import com.owncloud.android.lib.common.operations.RemoteOperation; @@ -84,15 +83,13 @@ public class Uploader extends FileActivity private static final String TAG = Uploader.class.getSimpleName(); - private Account mAccount; private AccountManager mAccountManager; private Stack mParents; private ArrayList mStreamsToUpload; private boolean mCreateDir; private String mUploadPath; - private FileDataStorageManager mStorageManager; private OCFile mFile; - private boolean mAccountSelected = false; + private boolean mAccountSelected; private final static int DIALOG_NO_ACCOUNT = 0; private final static int DIALOG_WAITING = 1; @@ -102,28 +99,31 @@ public class Uploader extends FileActivity private final static int REQUEST_CODE_SETUP_ACCOUNT = 0; private final static String KEY_PARENTS = "PARENTS"; - private final static String KEY_ACCOUNT = "ACCOUNT"; private final static String KEY_FILE = "FILE"; private final static String KEY_ACCOUNT_SELECTED = "ACCOUNT_SELECTED"; @Override protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); + prepareStreamsToUpload(); if (savedInstanceState == null) { mParents = new Stack(); + mAccountSelected = false; } else { mParents = (Stack) savedInstanceState.getSerializable(KEY_PARENTS); - mAccount = savedInstanceState.getParcelable(KEY_ACCOUNT); mFile = savedInstanceState.getParcelable(KEY_FILE); - mStorageManager = new FileDataStorageManager(mAccount, getContentResolver()); mAccountSelected = savedInstanceState.getBoolean(KEY_ACCOUNT_SELECTED); } + super.onCreate(savedInstanceState); ActionBar actionBar = getSupportActionBar(); actionBar.setIcon(DisplayUtils.getSeasonalIconId()); - if (prepareStreamsToUpload()) { + } + + @Override + protected void setAccount(Account account, boolean savedAccount) { + if (somethingToUpload()) { mAccountManager = (AccountManager) getSystemService(Context.ACCOUNT_SERVICE); Account[] accounts = mAccountManager.getAccountsByType(MainApp.getAccountType()); if (accounts.length == 0) { @@ -133,19 +133,23 @@ public class Uploader extends FileActivity Log_OC.i(TAG, "More than one ownCloud is available"); showDialog(DIALOG_MULTIPLE_ACCOUNT); } else { - if (savedInstanceState == null) { - mAccount = accounts[0]; - mStorageManager = new FileDataStorageManager(mAccount, getContentResolver()); + if (!savedAccount) { + setAccount(accounts[0]); } - initTargetFolder(); - populateDirectoryList(); - } - + } else { showDialog(DIALOG_NO_STREAM); } + super.setAccount(account, savedAccount); + } + + @Override + protected void onAccountSet(boolean stateWasRecovered) { + super.onAccountSet(mAccountWasRestored); + initTargetFolder(); + populateDirectoryList(); } @Override @@ -153,7 +157,7 @@ public class Uploader extends FileActivity Log_OC.d(TAG, "onSaveInstanceState() start"); super.onSaveInstanceState(outState); outState.putSerializable(KEY_PARENTS, mParents); - outState.putParcelable(KEY_ACCOUNT, mAccount); + //outState.putParcelable(KEY_ACCOUNT, mAccount); outState.putParcelable(KEY_FILE, mFile); outState.putBoolean(KEY_ACCOUNT_SELECTED, mAccountSelected); @@ -217,10 +221,8 @@ public class Uploader extends FileActivity builder.setItems(ac, new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { - mAccount = mAccountManager.getAccountsByType(MainApp.getAccountType())[which]; - mStorageManager = new FileDataStorageManager(mAccount, getContentResolver()); - initTargetFolder(); - populateDirectoryList(); + setAccount(mAccountManager.getAccountsByType(MainApp.getAccountType())[which]); + onAccountSet(mAccountWasRestored); dialog.dismiss(); mAccountSelected = true; } @@ -284,7 +286,7 @@ public class Uploader extends FileActivity public void onItemClick(AdapterView parent, View view, int position, long id) { // click on folder in the list Log_OC.d(TAG, "on item click"); - Vector tmpfiles = mStorageManager.getFolderContent(mFile); + Vector tmpfiles = getStorageManager().getFolderContent(mFile); if (tmpfiles.size() <= 0) return; // filter on dirtype Vector files = new Vector(); @@ -303,7 +305,8 @@ public class Uploader extends FileActivity // click on button switch (v.getId()) { case R.id.uploader_choose_folder: - mUploadPath = ""; // first element in mParents is root dir, represented by ""; init mUploadPath with "/" results in a "//" prefix + mUploadPath = ""; // first element in mParents is root dir, represented by ""; + // init mUploadPath with "/" results in a "//" prefix for (String p : mParents) mUploadPath += p + OCFile.PATH_SEPARATOR; Log_OC.d(TAG, "Uploading file to dir " + mUploadPath); @@ -339,7 +342,7 @@ public class Uploader extends FileActivity // there is no need for checking for is there more then one // account at this point // since account setup can set only one account at time - mAccount = accounts[0]; + setAccount(accounts[0]); populateDirectoryList(); } } @@ -366,9 +369,9 @@ public class Uploader extends FileActivity Log_OC.d(TAG, "Populating view with content of : " + full_path); - mFile = mStorageManager.getFileByPath(full_path); + mFile = getStorageManager().getFileByPath(full_path); if (mFile != null) { - Vector files = mStorageManager.getFolderContent(mFile); + Vector files = getStorageManager().getFolderContent(mFile); List> data = new LinkedList>(); for (OCFile f : files) { HashMap h = new HashMap(); @@ -402,13 +405,16 @@ public class Uploader extends FileActivity return full_path; } - private boolean prepareStreamsToUpload() { + private void 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); } + } + + private boolean somethingToUpload() { return (mStreamsToUpload != null && mStreamsToUpload.get(0) != null); } @@ -507,7 +513,7 @@ public class Uploader extends FileActivity intent.putExtra(FileUploader.KEY_LOCAL_FILE, local.toArray(new String[local.size()])); intent.putExtra(FileUploader.KEY_REMOTE_FILE, remote.toArray(new String[remote.size()])); - intent.putExtra(FileUploader.KEY_ACCOUNT, mAccount); + intent.putExtra(FileUploader.KEY_ACCOUNT, getAccount()); startService(intent); //Save the path to shared preferences @@ -570,7 +576,7 @@ public class Uploader extends FileActivity * The target account has to be chosen before this method is called. */ private void initTargetFolder() { - if (mStorageManager == null) { + if (getStorageManager() == null) { throw new IllegalStateException("Do not call this method before " + "initializing mStorageManager"); } @@ -589,7 +595,7 @@ public class Uploader extends FileActivity mParents.add(dir); } //Make sure that path still exists, if it doesn't pop the stack and try the previous path - while(!mStorageManager.fileExists(generatePath(mParents)) && mParents.size() > 1){ + while(!getStorageManager().fileExists(generatePath(mParents)) && mParents.size() > 1){ mParents.pop(); } }