From ac940b3a12173c25bc1c4328861c05718e19f79c Mon Sep 17 00:00:00 2001 From: Ricki Hirner Date: Sat, 13 Aug 2016 23:06:28 +0200 Subject: [PATCH] Accept intent extras for LoginActivity --- .../ui/setup/AccountDetailsFragment.java | 6 ++-- .../davdroid/ui/setup/LoginActivity.java | 22 ++++++++++++++ .../ui/setup/LoginCredentialsFragment.java | 29 +++++++++++++++++-- doc/.gitignore | 2 +- 4 files changed, 54 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/at/bitfire/davdroid/ui/setup/AccountDetailsFragment.java b/app/src/main/java/at/bitfire/davdroid/ui/setup/AccountDetailsFragment.java index f530b1b4..50f509f2 100644 --- a/app/src/main/java/at/bitfire/davdroid/ui/setup/AccountDetailsFragment.java +++ b/app/src/main/java/at/bitfire/davdroid/ui/setup/AccountDetailsFragment.java @@ -10,6 +10,7 @@ package at.bitfire.davdroid.ui.setup; import android.accounts.Account; import android.accounts.AccountManager; +import android.app.Activity; import android.content.ContentResolver; import android.content.ContentValues; import android.content.Intent; @@ -92,9 +93,10 @@ public class AccountDetailsFragment extends Fragment { if (name.isEmpty()) editName.setError(getString(R.string.login_account_name_required)); else { - if (createAccount(name, (DavResourceFinder.Configuration)getArguments().getSerializable(KEY_CONFIG))) + if (createAccount(name, (DavResourceFinder.Configuration)getArguments().getSerializable(KEY_CONFIG))) { + getActivity().setResult(Activity.RESULT_OK); getActivity().finish(); - else + } else Snackbar.make(v, R.string.login_account_not_created, Snackbar.LENGTH_LONG).show(); } } diff --git a/app/src/main/java/at/bitfire/davdroid/ui/setup/LoginActivity.java b/app/src/main/java/at/bitfire/davdroid/ui/setup/LoginActivity.java index 62193ad1..1e56a444 100644 --- a/app/src/main/java/at/bitfire/davdroid/ui/setup/LoginActivity.java +++ b/app/src/main/java/at/bitfire/davdroid/ui/setup/LoginActivity.java @@ -17,8 +17,30 @@ import android.view.MenuItem; import at.bitfire.davdroid.Constants; import at.bitfire.davdroid.R; +/** + * Activity to initially connect to a server and create an account. + * Fields for server/user data can be pre-filled with extras in the Intent. + */ public class LoginActivity extends AppCompatActivity { + /** + * When set, "login by URL" will be activated by default, and the URL field will be set to this value. + * When not set, "login by email" will be activated by default. + */ + public static final String EXTRA_URL = "url"; + + /** + * When set, and {@link #EXTRA_PASSWORD} is set too, the user name field will be set to this value. + * When set, and {@link #EXTRA_URL} is not set, the email address field will be set to this value. + */ + public static final String EXTRA_USERNAME = "username"; + + /** + * When set, the password field will be set to this value. + */ + public static final String EXTRA_PASSWORD = "password"; + + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); diff --git a/app/src/main/java/at/bitfire/davdroid/ui/setup/LoginCredentialsFragment.java b/app/src/main/java/at/bitfire/davdroid/ui/setup/LoginCredentialsFragment.java index 0a3b057b..5781b99a 100644 --- a/app/src/main/java/at/bitfire/davdroid/ui/setup/LoginCredentialsFragment.java +++ b/app/src/main/java/at/bitfire/davdroid/ui/setup/LoginCredentialsFragment.java @@ -8,6 +8,8 @@ package at.bitfire.davdroid.ui.setup; +import android.app.Activity; +import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.support.v4.app.Fragment; @@ -63,8 +65,31 @@ public class LoginCredentialsFragment extends Fragment implements CompoundButton radioUseEmail.setOnCheckedChangeListener(this); radioUseURL.setOnCheckedChangeListener(this); - if (savedInstanceState == null) - radioUseEmail.setChecked(true); + if (savedInstanceState == null) { + // first call + + Activity activity = getActivity(); + Intent intent = (activity != null) ? activity.getIntent() : null; + if (intent != null) { + // we've got initial login data + String url = intent.getStringExtra(LoginActivity.EXTRA_URL), + username = intent.getStringExtra(LoginActivity.EXTRA_USERNAME), + password = intent.getStringExtra(LoginActivity.EXTRA_PASSWORD); + + if (url != null) { + radioUseURL.setChecked(true); + editBaseURL.setText(url); + editUserName.setText(username); + editUrlPassword.setText(password); + } else { + radioUseEmail.setChecked(true); + editEmailAddress.setText(username); + editEmailPassword.setText(password); + } + + } else + radioUseEmail.setChecked(true); + } final Button login = (Button)v.findViewById(R.id.login); login.setOnClickListener(new View.OnClickListener() { diff --git a/doc/.gitignore b/doc/.gitignore index 547e8636..ba62ebb0 100644 --- a/doc/.gitignore +++ b/doc/.gitignore @@ -1 +1 @@ -pr/ +javadoc/