Code cleanup to make the class more readable, extracted string resource and dealt with warnings.

This commit is contained in:
Paul Hawke 2017-10-07 11:14:38 -05:00
parent 3d0d48745e
commit cc2bb36560
5 changed files with 77 additions and 73 deletions

View file

@ -31,19 +31,16 @@ import timber.log.Timber;
import static android.view.KeyEvent.KEYCODE_ENTER;
import static android.view.inputmethod.EditorInfo.IME_ACTION_DONE;
public class LoginActivity extends AccountAuthenticatorActivity {
public static final String PARAM_USERNAME = "fr.free.nrw.commons.login.username";
ProgressDialog progressDialog;
private AppCompatDelegate delegate;
private SharedPreferences prefs = null;
private Button loginButton;
private EditText usernameEdit;
private EditText passwordEdit;
private EditText twoFactorEdit;
ProgressDialog progressDialog;
private LoginTextWatcher textWatcher = new LoginTextWatcher();
private CommonsApplication app;
private ViewGroup errorMessageContainer;
@ -137,6 +134,51 @@ public class LoginActivity extends AccountAuthenticatorActivity {
getDelegate().setContentView(view, params);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
@NonNull
public MenuInflater getMenuInflater() {
return getDelegate().getMenuInflater();
}
public void askUserForTwoFactorAuth() {
if (BuildConfig.DEBUG) {
twoFactorEdit.setVisibility(View.VISIBLE);
showMessageAndCancelDialog(R.string.login_failed_2fa_needed);
} else {
showMessageAndCancelDialog(R.string.login_failed_2fa_not_supported);
}
}
public void showMessageAndCancelDialog(@StringRes int resId) {
showMessage(resId);
progressDialog.cancel();
}
public void showSuccessAndDismissDialog() {
showMessage(R.string.login_success);
progressDialog.dismiss();
}
public void emptySensitiveEditFields() {
passwordEdit.setText("");
twoFactorEdit.setText("");
}
public void startMainActivity() {
ContributionsActivity.startYourself(this);
finish();
}
private void performLogin() {
Timber.d("Login to start!");
LoginTask task = getLoginTask();
@ -148,26 +190,6 @@ public class LoginActivity extends AccountAuthenticatorActivity {
startActivity(intent);
}
private class LoginTextWatcher implements TextWatcher {
@Override
public void beforeTextChanged(CharSequence charSequence, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence charSequence, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable editable) {
if (usernameEdit.getText().length() != 0 && passwordEdit.getText().length() != 0 &&
(BuildConfig.DEBUG || twoFactorEdit.getText().length() != 0 || twoFactorEdit.getVisibility() != View.VISIBLE)) {
loginButton.setEnabled(true);
} else {
loginButton.setEnabled(false);
}
}
}
private TextView.OnEditorActionListener newLoginInputActionListener() {
return (textView, actionId, keyEvent) -> {
if (loginButton.isEnabled()) {
@ -201,60 +223,35 @@ public class LoginActivity extends AccountAuthenticatorActivity {
return new PageTitle(username).getText();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
@NonNull
public MenuInflater getMenuInflater() {
return getDelegate().getMenuInflater();
}
public void askUserForTwoFactorAuth() {
if (BuildConfig.DEBUG) {
twoFactorEdit.setVisibility(View.VISIBLE);
showMessageAndCancelDialog(R.string.login_failed_2fa_needed);
} else {
showMessageAndCancelDialog(R.string.login_failed_2fa_not_supported);
}
}
public void showMessageAndCancelDialog(@StringRes int resId) {
showMessage(resId);
progressDialog.cancel();
}
private void showMessage(@StringRes int resId) {
errorMessage.setText(getString(resId));
errorMessageContainer.setVisibility(View.VISIBLE);
}
public void showSuccessAndDismissDialog() {
showMessage(R.string.login_success);
progressDialog.dismiss();
}
public void emptySensitiveEditFields() {
passwordEdit.setText("");
twoFactorEdit.setText("");
}
public void startMainActivity() {
ContributionsActivity.startYourself(this);
finish();
}
private AppCompatDelegate getDelegate() {
if (delegate == null) {
delegate = AppCompatDelegate.create(this, null);
}
return delegate;
}
private class LoginTextWatcher implements TextWatcher {
@Override
public void beforeTextChanged(CharSequence charSequence, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence charSequence, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable editable) {
if (usernameEdit.getText().length() != 0 && passwordEdit.getText().length() != 0 &&
(BuildConfig.DEBUG || twoFactorEdit.getText().length() != 0 || twoFactorEdit.getVisibility() != View.VISIBLE)) {
loginButton.setEnabled(true);
} else {
loginButton.setEnabled(false);
}
}
}
}

View file

@ -36,7 +36,7 @@
android:gravity="center"
android:paddingBottom="32dp"
android:paddingTop="32dp"
android:text="Login to your account"
android:text="@string/login_to_your_account"
android:textColor="@android:color/white"
android:textSize="24sp" />
@ -178,11 +178,13 @@
android:layout_width="64dp"
android:layout_height="64dp"
android:elevation="8dp"
tools:ignore="UnusedAttribute"
android:layout_gravity="center_horizontal"
app:srcCompat="@drawable/blue_rinse_circle" />
<android.support.v7.widget.AppCompatImageView
android:layout_width="42dp"
tools:ignore="UnusedAttribute"
android:layout_height="42dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="8dp"

View file

@ -36,7 +36,7 @@
android:gravity="center"
android:paddingBottom="32dp"
android:paddingTop="32dp"
android:text="Login to your account"
android:text="@string/login_to_your_account"
android:textColor="@android:color/white"
android:textSize="24sp" />
@ -179,13 +179,15 @@
android:layout_height="64dp"
android:elevation="8dp"
android:layout_gravity="center_horizontal"
app:srcCompat="@drawable/blue_rinse_circle" />
app:srcCompat="@drawable/blue_rinse_circle"
tools:ignore="UnusedAttribute" />
<android.support.v7.widget.AppCompatImageView
android:layout_width="42dp"
android:layout_height="42dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="8dp"
tools:ignore="UnusedAttribute"
android:elevation="8dp"
app:srcCompat="@drawable/commons_logo_large" />

View file

@ -36,7 +36,7 @@
android:gravity="center"
android:paddingBottom="32dp"
android:paddingTop="32dp"
android:text="Login to your account"
android:text="@string/login_to_your_account"
android:textColor="@android:color/white"
android:textSize="24sp" />
@ -178,6 +178,7 @@
android:layout_width="64dp"
android:layout_height="64dp"
android:elevation="8dp"
tools:ignore="UnusedAttribute"
android:layout_gravity="center_horizontal"
app:srcCompat="@drawable/blue_rinse_circle" />
@ -186,6 +187,7 @@
android:layout_height="42dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="8dp"
tools:ignore="UnusedAttribute"
android:elevation="8dp"
app:srcCompat="@drawable/commons_logo_large" />

View file

@ -206,4 +206,5 @@ Tap this message (or hit back) to skip this step.</string>
<string name="description_info">Please describe the media as much as possible: Where was it taken? What does it show? What is the context? Please describe the objects or persons. Reveal information that can not be easily guessed, for instance the time of day if it is a landscape. If the media shows something unusual, please explain what makes it unusual.</string>
<string name="use_external_storage">Use external storage</string>
<string name="use_external_storage_summary">Save pictures taken with the in-app camera on your device</string>
<string name="login_to_your_account">Login to your account</string>
</resources>