diff --git a/src/main/java/eu/siacs/conversations/ui/EditAccountActivity.java b/src/main/java/eu/siacs/conversations/ui/EditAccountActivity.java index 98c8a22a6..cdc626105 100644 --- a/src/main/java/eu/siacs/conversations/ui/EditAccountActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/EditAccountActivity.java @@ -12,6 +12,7 @@ import android.os.Handler; import android.provider.Settings; import android.security.KeyChain; import android.security.KeyChainAliasCallback; +import android.support.design.widget.TextInputLayout; import android.support.v4.content.ContextCompat; import android.support.v7.app.ActionBar; import android.support.v7.app.AlertDialog; @@ -74,7 +75,9 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat private static final int REQUEST_DATA_SAVER = 0x37af244; private AutoCompleteTextView mAccountJid; + private TextInputLayout mAccountJidLayout; private EditText mPassword; + private TextInputLayout mPasswordLayout; private CheckBox mRegisterNew; private Button mCancelButton; private Button mSaveButton; @@ -101,7 +104,6 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat private TextView mOwnFingerprintDesc; private TextView mOtrFingerprintDesc; private TextView getmPgpFingerprintDesc; - private TextView mAccountJidLabel; private ImageView mAvatar; private RelativeLayout mOtrFingerprintBox; private RelativeLayout mAxolotlFingerprintBox; @@ -113,7 +115,9 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat private LinearLayout keysCard; private LinearLayout mNamePort; private EditText mHostname; + private TextInputLayout mHostnameLayout; private EditText mPort; + private TextInputLayout mPortLayout; private AlertDialog mCaptchaDialog = null; private Jid jidToEdit; @@ -148,7 +152,7 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat } final boolean registerNewAccount = mRegisterNew.isChecked() && !Config.DISALLOW_REGISTRATION_IN_UI; if (mUsernameMode && mAccountJid.getText().toString().contains("@")) { - mAccountJid.setError(getString(R.string.invalid_username)); + mAccountJidLayout.setError(getString(R.string.invalid_username)); mAccountJid.requestFocus(); return; } @@ -177,9 +181,9 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat } } catch (final InvalidJidException e) { if (mUsernameMode) { - mAccountJid.setError(getString(R.string.invalid_username)); + mAccountJidLayout.setError(getString(R.string.invalid_username)); } else { - mAccountJid.setError(getString(R.string.invalid_jid)); + mAccountJidLayout.setError(getString(R.string.invalid_jid)); } mAccountJid.requestFocus(); return; @@ -190,20 +194,20 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat hostname = mHostname.getText().toString().replaceAll("\\s",""); final String port = mPort.getText().toString().replaceAll("\\s",""); if (hostname.contains(" ")) { - mHostname.setError(getString(R.string.not_valid_hostname)); + mHostnameLayout.setError(getString(R.string.not_valid_hostname)); mHostname.requestFocus(); return; } try { numericPort = Integer.parseInt(port); if (numericPort < 0 || numericPort > 65535) { - mPort.setError(getString(R.string.not_a_valid_port)); + mPortLayout.setError(getString(R.string.not_a_valid_port)); mPort.requestFocus(); return; } } catch (NumberFormatException e) { - mPort.setError(getString(R.string.not_a_valid_port)); + mPortLayout.setError(getString(R.string.not_a_valid_port)); mPort.requestFocus(); return; } @@ -211,9 +215,9 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat if (jid.isDomainJid()) { if (mUsernameMode) { - mAccountJid.setError(getString(R.string.invalid_username)); + mAccountJidLayout.setError(getString(R.string.invalid_username)); } else { - mAccountJid.setError(getString(R.string.invalid_jid)); + mAccountJidLayout.setError(getString(R.string.invalid_jid)); } mAccountJid.requestFocus(); return; @@ -225,7 +229,7 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat mAccount.setJid(jid); mAccount.setPort(numericPort); mAccount.setHostname(hostname); - mAccountJid.setError(null); + mAccountJidLayout.setError(null); mAccount.setPassword(password); mAccount.setOption(Account.OPTION_REGISTER, registerNewAccount); if (!xmppConnectionService.updateAccount(mAccount)) { @@ -234,7 +238,7 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat } } else { if (xmppConnectionService.findAccountByJid(jid) != null) { - mAccountJid.setError(getString(R.string.account_already_exists)); + mAccountJidLayout.setError(getString(R.string.account_already_exists)); mAccountJid.requestFocus(); return; } @@ -246,8 +250,8 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat mAccount.setOption(Account.OPTION_REGISTER, registerNewAccount); xmppConnectionService.createAccount(mAccount); } - mHostname.setError(null); - mPort.setError(null); + mHostnameLayout.setError(null); + mPortLayout.setError(null); if (mAccount.isEnabled() && !registerNewAccount && !mInitMode) { @@ -535,8 +539,10 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat this.mAccountJid = (AutoCompleteTextView) findViewById(R.id.account_jid); this.mAccountJid.addTextChangedListener(this.mTextWatcher); this.mAccountJid.setOnFocusChangeListener(this.mEditTextFocusListener); + this.mAccountJidLayout = (TextInputLayout) findViewById(R.id.account_jid_layout); this.mPassword = (EditText) findViewById(R.id.account_password); this.mPassword.addTextChangedListener(this.mTextWatcher); + this.mPasswordLayout = (TextInputLayout) findViewById(R.id.account_password_layout); this.mAvatar = (ImageView) findViewById(R.id.avater); this.mAvatar.setOnClickListener(this.mAvatarClickListener); this.mRegisterNew = (CheckBox) findViewById(R.id.account_register_new); @@ -574,6 +580,7 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat this.mHostname = (EditText) findViewById(R.id.hostname); this.mHostname.addTextChangedListener(mTextWatcher); this.mHostname.setOnFocusChangeListener(mEditTextFocusListener); + this.mHostnameLayout = (TextInputLayout)findViewById(R.id.hostname_layout); this.mClearDevicesButton = (Button) findViewById(R.id.clear_devices); this.mClearDevicesButton.setOnClickListener(new OnClickListener() { @Override @@ -584,6 +591,7 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat this.mPort = (EditText) findViewById(R.id.port); this.mPort.setText("5222"); this.mPort.addTextChangedListener(mTextWatcher); + this.mPortLayout = (TextInputLayout)findViewById(R.id.port_layout); this.mSaveButton = (Button) findViewById(R.id.save_button); this.mCancelButton = (Button) findViewById(R.id.cancel_button); this.mSaveButton.setOnClickListener(this.mSaveButtonClickListener); @@ -753,7 +761,6 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat this.mCancelButton.setTextColor(getSecondaryTextColor()); } if (mUsernameMode) { - this.mAccountJidLabel.setText(R.string.username); this.mAccountJid.setHint(R.string.username_hint); } else { final KnownHostsAdapter mKnownHostsAdapter = new KnownHostsAdapter(this, @@ -1055,24 +1062,24 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat } } else { if (this.mAccount.errorStatus()) { - final EditText errorTextField; + final TextInputLayout errorLayout; if (this.mAccount.getStatus() == Account.State.UNAUTHORIZED) { - errorTextField = this.mPassword; + errorLayout = this.mPasswordLayout; } else if (mShowOptions && this.mAccount.getStatus() == Account.State.SERVER_NOT_FOUND && this.mHostname.getText().length() > 0) { - errorTextField = this.mHostname; + errorLayout = this.mHostnameLayout; } else { - errorTextField = this.mAccountJid; + errorLayout = this.mAccountJidLayout; } - errorTextField.setError(getString(this.mAccount.getStatus().getReadableId())); + errorLayout.setError(getString(this.mAccount.getStatus().getReadableId())); if (init || !accountInfoEdited()) { - errorTextField.requestFocus(); + errorLayout.requestFocus(); } } else { - this.mAccountJid.setError(null); - this.mPassword.setError(null); - this.mHostname.setError(null); + this.mAccountJidLayout.setError(null); + this.mPasswordLayout.setError(null); + this.mHostnameLayout.setError(null); } this.mStats.setVisibility(View.GONE); } diff --git a/src/main/res/layout/activity_edit_account.xml b/src/main/res/layout/activity_edit_account.xml index c65a93e4f..def85bcd0 100644 --- a/src/main/res/layout/activity_edit_account.xml +++ b/src/main/res/layout/activity_edit_account.xml @@ -46,6 +46,7 @@ android:orientation="vertical"> @@ -63,6 +64,7 @@