diff --git a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/LoginPresenter.java b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/LoginPresenter.java index 3747c1670cbef415781fb8999c64f673a78c468a..4da1c1c5577755c4fb4ae52d7203576615f68b3b 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/LoginPresenter.java +++ b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/LoginPresenter.java @@ -48,11 +48,13 @@ public class LoginPresenter extends BaseErrorPresenter { TeleSignSMS, TeleSignVoice, Sms } - @Override protected Class[] getFilter() { + @Override + protected Class[] getFilter() { return new Class[]{Io.class}; } - @Override protected void handleResponse(Response response) { + @Override + protected void handleResponse(Response response) { if (response.data instanceof Io) { Io io = (Io) response.data; if (io.isSuccess()) { @@ -63,13 +65,15 @@ public class LoginPresenter extends BaseErrorPresenter { } } - @Override protected void onFirstViewAttach() { + @Override + protected void onFirstViewAttach() { super.onFirstViewAttach(); mCountryHelper = mDataManager.getCountryHelper(); if (mCountryHelper.code != null) getViewState().setCode(mCountryHelper.code); } - @Override public void attachView(LoginView view) { + @Override + public void attachView(LoginView view) { super.attachView(view); showCountryList(); addDisposable(mDataManager.subscribeToProfile() @@ -221,7 +225,8 @@ public class LoginPresenter extends BaseErrorPresenter { }, Timber::e); } - @Override public void detachView(LoginView view) { + @Override + public void detachView(LoginView view) { super.detachView(view); if (mDisposable != null && !mDisposable.isDisposed()) mDisposable.dispose(); } diff --git a/app/src/main/java/com/nynja/mobile/communicator/mvp/view/LoginView.java b/app/src/main/java/com/nynja/mobile/communicator/mvp/view/LoginView.java index 6ad68f848dcc1205cbc8e63c358ad31c008803b4..56046bf44479128ac45f0eab445e90095dc140cc 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/mvp/view/LoginView.java +++ b/app/src/main/java/com/nynja/mobile/communicator/mvp/view/LoginView.java @@ -1,5 +1,10 @@ package com.nynja.mobile.communicator.mvp.view; +import android.widget.TextView; + +import com.nynja.mobile.communicator.ui.views.CustomEditText; +import com.nynja.mobile.communicator.ui.views.HintEditText; + import java.util.List; /** diff --git a/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/contacts/AddContactByPhoneFragment.java b/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/contacts/AddContactByPhoneFragment.java index c4e28cd4b3562e1a5e98af5b21c6253807c074f0..734879cc6bc47d18ba7402ee9dc0d2dfdb3916dc 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/contacts/AddContactByPhoneFragment.java +++ b/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/contacts/AddContactByPhoneFragment.java @@ -26,7 +26,9 @@ import butterknife.BindView; import butterknife.OnClick; import butterknife.Optional; -public class AddContactByPhoneFragment extends BaseFragment implements AddContactByPhoneView { +public class AddContactByPhoneFragment extends BaseFragment implements + AddContactByPhoneView, + HintEditText.IOnKeyDelListener { private static final String COUNTRY_CODE_TAG = "country"; @@ -57,6 +59,7 @@ public class AddContactByPhoneFragment extends BaseFragment implements AddContac super.onViewCreated(view, savedInstanceState); mPhone.addTextChangedListener(new PhoneWatcher(mPhone)); + mPhone.setOnKeyDelListener(this); mPhone.setOnEditorActionListener((textView, i, keyEvent) -> { if (i == EditorInfo.IME_ACTION_SEARCH) { searchUser(); @@ -161,4 +164,8 @@ public class AddContactByPhoneFragment extends BaseFragment implements AddContac @Override public void setWrongCountryText() { mTvCountry.setText(getString(R.string.signin_text_wrong_country)); } + + @Override public void onSecondDel() { + mCountry.requestFocus(); + } } diff --git a/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/signin/LoginFragment.java b/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/signin/LoginFragment.java index a715aef429d241aa10c726a4f56c021a75bd1774..b70306fbedd0135e9c356cf3995b055e87346961 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/signin/LoginFragment.java +++ b/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/signin/LoginFragment.java @@ -56,7 +56,8 @@ import timber.log.Timber; * Email: duo.blood@gmail.com */ -public class LoginFragment extends BaseFragment implements LoginView { +public class LoginFragment extends BaseFragment implements LoginView, + HintEditText.IOnKeyDelListener { @BindView(R.id.f_iphone_view_wheel) WheelView mWheelView; @BindView(R.id.f_iphone_tv_country) TextView mCountry; @@ -99,9 +100,8 @@ public class LoginFragment extends BaseFragment implements LoginView { } }); - mCountryCode.setBlockBackButton(true); - mPhoneEditText.setBlockBackButton(true); mPhoneEditText.addTextChangedListener(new PhoneWatcher(mPhoneEditText)); + mPhoneEditText.setOnKeyDelListener(this); mPhoneEditText.setOnEditorActionListener((textView, i, keyEvent) -> { if (i == EditorInfo.IME_ACTION_DONE) { attemptGetSms(); @@ -172,8 +172,7 @@ public class LoginFragment extends BaseFragment implements LoginView { return false; } - @OnClick(R.id.f_iphone_tv_country) - public void onClickCountry() { + @OnClick(R.id.f_iphone_tv_country) public void onClickCountry() { Utils.hideKeyboard(getActivity()); mHandler.postDelayed(() -> { mWheelView.setVisibility(View.VISIBLE); @@ -306,4 +305,8 @@ public class LoginFragment extends BaseFragment implements LoginView { } return isSimCardEnable; } + + @Override public void onSecondDel() { + mCountryCode.requestFocus(); + } } diff --git a/app/src/main/java/com/nynja/mobile/communicator/ui/views/HintEditText.java b/app/src/main/java/com/nynja/mobile/communicator/ui/views/HintEditText.java index 383745223c21ae51efce4b43186d98597a78c9d0..d0af17e6e070765d2cbde6d3b52d1aaa75744c00 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/ui/views/HintEditText.java +++ b/app/src/main/java/com/nynja/mobile/communicator/ui/views/HintEditText.java @@ -6,6 +6,7 @@ import android.graphics.Paint; import android.graphics.Rect; import android.support.v4.content.ContextCompat; import android.util.AttributeSet; +import android.view.KeyEvent; import com.nynja.mobile.communicator.R; @@ -25,6 +26,8 @@ public class HintEditText extends CustomEditText { private float mNumberSize; private Paint mPaint; private Rect mRect = new Rect(); + private boolean isSecondTap = false; + private IOnKeyDelListener mOnKeyDelListener; public HintEditText(Context context) { this(context, null); @@ -54,6 +57,10 @@ public class HintEditText extends CustomEditText { setText(getText()); } + public void setOnKeyDelListener(IOnKeyDelListener listener) { + mOnKeyDelListener = listener; + } + @Override protected void onLayout(boolean changed, int left, int top, int right, int bottom) { super.onLayout(changed, left, top, right, bottom); @@ -91,4 +98,21 @@ public class HintEditText extends CustomEditText { } return (int) Math.ceil(getContext().getResources().getDisplayMetrics().density * value); } + + @Override public boolean dispatchKeyEvent(KeyEvent event) { + if (event.getKeyCode() == KeyEvent.KEYCODE_DEL) { + if (getText().toString().isEmpty() && isSecondTap) { + mOnKeyDelListener.onSecondDel(); + isSecondTap = false; + return true; + } else if (getText().toString().isEmpty()) { + isSecondTap = true; + } + } + return super.dispatchKeyEvent(event); + } + + public interface IOnKeyDelListener { + void onSecondDel(); + } }