From 4fee2fce53dc556dd5c025ae6c4b0adf820ba7c0 Mon Sep 17 00:00:00 2001 From: Pasha Shkaran Date: Thu, 23 Nov 2017 18:28:49 +0200 Subject: [PATCH 1/6] Task #277 --- .../intetfaces/IOnBackPressed.java | 9 ++++++ .../mvp/presenters/LoginPresenter.java | 15 ++++++---- .../communicator/mvp/view/LoginView.java | 5 ++++ .../ui/activities/HomeActivity.java | 12 +++++--- .../ui/activities/RegistrationActivity.java | 10 +++++++ .../contacts/AddContactByPhoneFragment.java | 22 ++++++++++++++- .../ui/fragments/signin/LoginFragment.java | 28 +++++++++++++++---- 7 files changed, 86 insertions(+), 15 deletions(-) create mode 100644 app/src/main/java/com/nynja/mobile/communicator/intetfaces/IOnBackPressed.java diff --git a/app/src/main/java/com/nynja/mobile/communicator/intetfaces/IOnBackPressed.java b/app/src/main/java/com/nynja/mobile/communicator/intetfaces/IOnBackPressed.java new file mode 100644 index 0000000000..d35dcb72d9 --- /dev/null +++ b/app/src/main/java/com/nynja/mobile/communicator/intetfaces/IOnBackPressed.java @@ -0,0 +1,9 @@ +package com.nynja.mobile.communicator.intetfaces; + +/** + * Created by pavel on 11/23/17. + */ + +public interface IOnBackPressed { + boolean onBackPressed(); +} 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 3747c1670c..4da1c1c557 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 6ad68f848d..56046bf444 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/activities/HomeActivity.java b/app/src/main/java/com/nynja/mobile/communicator/ui/activities/HomeActivity.java index 32c1e2ab56..208903b656 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/ui/activities/HomeActivity.java +++ b/app/src/main/java/com/nynja/mobile/communicator/ui/activities/HomeActivity.java @@ -29,6 +29,7 @@ import com.nynja.mobile.communicator.data.models.mqtt.Contact; import com.nynja.mobile.communicator.data.models.mqtt.Room; import com.nynja.mobile.communicator.data.voximplant.ActiveCall; import com.nynja.mobile.communicator.data.voximplant.VoxImplantModule; +import com.nynja.mobile.communicator.intetfaces.IOnBackPressed; import com.nynja.mobile.communicator.intetfaces.OnWheelContentListener; import com.nynja.mobile.communicator.mvp.presenters.HomePresenter; import com.nynja.mobile.communicator.mvp.view.HomeView; @@ -371,10 +372,13 @@ public class HomeActivity extends BaseActivity implements HomeView, MenuButton.O if (mCascadeWheel.isOpen()) { mCascadeWheel.openCloseWheels(); } else { - if (mLastBackPressTime + 1500 > System.currentTimeMillis()) { - super.onBackPressed(); - } else { - Toast.makeText(this, R.string.main_text_press_twice, Toast.LENGTH_SHORT).show(); + Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.container); + if (!(fragment instanceof IOnBackPressed) || !((IOnBackPressed) fragment).onBackPressed()) { + if (mLastBackPressTime + 1500 > System.currentTimeMillis()) { + super.onBackPressed(); + } else { + Toast.makeText(this, R.string.main_text_press_twice, Toast.LENGTH_SHORT).show(); + } } mLastBackPressTime = System.currentTimeMillis(); } diff --git a/app/src/main/java/com/nynja/mobile/communicator/ui/activities/RegistrationActivity.java b/app/src/main/java/com/nynja/mobile/communicator/ui/activities/RegistrationActivity.java index 0ea460e63b..fb44d1ee51 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/ui/activities/RegistrationActivity.java +++ b/app/src/main/java/com/nynja/mobile/communicator/ui/activities/RegistrationActivity.java @@ -3,8 +3,11 @@ package com.nynja.mobile.communicator.ui.activities; import android.content.Context; import android.content.Intent; import android.os.Bundle; +import android.support.v4.app.Fragment; import com.nynja.mobile.communicator.NynjaApp; +import com.nynja.mobile.communicator.R; +import com.nynja.mobile.communicator.intetfaces.IOnBackPressed; import com.nynja.mobile.communicator.ui.base.BaseActivity; import com.nynja.mobile.communicator.ui.base.BaseFragment; import com.nynja.mobile.communicator.ui.fragments.signin.CodeInputFragment; @@ -53,6 +56,13 @@ public class RegistrationActivity extends BaseActivity { NynjaApp.getNavigatorHolder().removeNavigator(); } + @Override public void onBackPressed() { + Fragment fragment = getSupportFragmentManager().findFragmentById(android.R.id.content); + if (!(fragment instanceof IOnBackPressed) || !((IOnBackPressed) fragment).onBackPressed()) { + super.onBackPressed(); + } + } + private void handleCommand(Command command) { if (command instanceof Replace) { BaseFragment fragment; 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 c4e28cd4b3..e7325a7e45 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 @@ -14,6 +14,7 @@ import com.arellomobile.mvp.presenter.InjectPresenter; import com.jakewharton.rxbinding2.widget.RxTextView; import com.nynja.mobile.communicator.R; import com.nynja.mobile.communicator.data.models.CountryCode; +import com.nynja.mobile.communicator.intetfaces.IOnBackPressed; import com.nynja.mobile.communicator.mvp.presenters.AddContactByPhonePresenter; import com.nynja.mobile.communicator.mvp.view.AddContactByPhoneView; import com.nynja.mobile.communicator.ui.base.BaseFragment; @@ -26,7 +27,8 @@ import butterknife.BindView; import butterknife.OnClick; import butterknife.Optional; -public class AddContactByPhoneFragment extends BaseFragment implements AddContactByPhoneView { +public class AddContactByPhoneFragment extends BaseFragment implements AddContactByPhoneView, + IOnBackPressed { private static final String COUNTRY_CODE_TAG = "country"; @@ -161,4 +163,22 @@ public class AddContactByPhoneFragment extends BaseFragment implements AddContac @Override public void setWrongCountryText() { mTvCountry.setText(getString(R.string.signin_text_wrong_country)); } + + @Override public boolean onBackPressed() { + return backBtnLogic(); + } + + public boolean backBtnLogic() { + if (!mPhone.getText().toString().isEmpty()) { + mPhone.setText(""); + } else if (!mCountry.getText().toString().isEmpty() && !mCountry.hasFocus()) { + mCountry.requestFocus(); + } else if (!mCountry.getText().toString().isEmpty() && mCountry.hasFocus()) { + mCountry.setText(""); + } else { + return false; + } + + return true; + } } 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 a715aef429..bea308f868 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 @@ -23,9 +23,11 @@ import android.widget.Toast; import com.arellomobile.mvp.presenter.InjectPresenter; import com.jakewharton.rxbinding2.widget.RxTextView; import com.nynja.mobile.communicator.R; +import com.nynja.mobile.communicator.intetfaces.IOnBackPressed; import com.nynja.mobile.communicator.mvp.presenters.BasePresenter; import com.nynja.mobile.communicator.mvp.presenters.LoginPresenter; import com.nynja.mobile.communicator.mvp.view.LoginView; +import com.nynja.mobile.communicator.ui.activities.RegistrationActivity; import com.nynja.mobile.communicator.ui.base.BaseFragment; import com.nynja.mobile.communicator.ui.views.AlphabetView; import com.nynja.mobile.communicator.ui.views.CustomEditText; @@ -56,7 +58,8 @@ import timber.log.Timber; * Email: duo.blood@gmail.com */ -public class LoginFragment extends BaseFragment implements LoginView { +public class LoginFragment extends BaseFragment implements LoginView, + IOnBackPressed { @BindView(R.id.f_iphone_view_wheel) WheelView mWheelView; @BindView(R.id.f_iphone_tv_country) TextView mCountry; @@ -99,8 +102,6 @@ public class LoginFragment extends BaseFragment implements LoginView { } }); - mCountryCode.setBlockBackButton(true); - mPhoneEditText.setBlockBackButton(true); mPhoneEditText.addTextChangedListener(new PhoneWatcher(mPhoneEditText)); mPhoneEditText.setOnEditorActionListener((textView, i, keyEvent) -> { if (i == EditorInfo.IME_ACTION_DONE) { @@ -172,8 +173,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 +306,22 @@ public class LoginFragment extends BaseFragment implements LoginView { } return isSimCardEnable; } + + @Override public boolean onBackPressed() { + return backBtnLogic(); + } + + public boolean backBtnLogic() { + if (!mPhoneEditText.getText().toString().isEmpty()) { + mPhoneEditText.setText(""); + } else if (!mCountryCode.getText().toString().isEmpty() && !mCountryCode.hasFocus()) { + mCountryCode.requestFocus(); + } else if (!mCountryCode.getText().toString().isEmpty() && mCountryCode.hasFocus()) { + mCountryCode.setText(""); + } else { + return false; + } + + return true; + } } -- GitLab From 6fbf1d83d655826425906a94f6eff9604aae9dcb Mon Sep 17 00:00:00 2001 From: Pasha Shkaran Date: Fri, 24 Nov 2017 12:18:47 +0200 Subject: [PATCH 2/6] wrong place --- .../ui/fragments/signin/LoginFragment.java | 23 +++++++++++++++++++ app/src/main/res/menu/paste_menu.xml | 9 ++++++++ app/src/main/res/values/strings.xml | 2 ++ 3 files changed, 34 insertions(+) create mode 100644 app/src/main/res/menu/paste_menu.xml 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 bea308f868..80f2f41a14 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 @@ -10,11 +10,15 @@ import android.support.constraint.ConstraintLayout; import android.support.v4.content.ContextCompat; import android.telephony.TelephonyManager; import android.text.InputFilter; +import android.view.ContextMenu; import android.view.LayoutInflater; +import android.view.MenuInflater; +import android.view.MenuItem; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.inputmethod.EditorInfo; +import android.widget.AdapterView; import android.widget.ImageButton; import android.widget.LinearLayout; import android.widget.TextView; @@ -103,6 +107,7 @@ public class LoginFragment extends BaseFragment implements LoginView, }); mPhoneEditText.addTextChangedListener(new PhoneWatcher(mPhoneEditText)); + registerForContextMenu(mPhoneEditText); mPhoneEditText.setOnEditorActionListener((textView, i, keyEvent) -> { if (i == EditorInfo.IME_ACTION_DONE) { attemptGetSms(); @@ -128,6 +133,24 @@ public class LoginFragment extends BaseFragment implements LoginView, mPresenter.unSubscribeWatchers(); } + @Override public void onCreateContextMenu(ContextMenu menu, View v, + ContextMenu.ContextMenuInfo menuInfo) { + MenuInflater inflater = getActivity().getMenuInflater(); + inflater.inflate(R.menu.paste_menu, menu); + AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo; + menu.setHeaderTitle("title"); + } + + @Override + public boolean onContextItemSelected(MenuItem item) { + AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo(); + switch (item.getItemId()) { + case R.id.action_paste: + break; + } + return true; + } + @OnClick(R.id.f_iphone_btn_next) void clickNext() { DialogFactory.showPhoneConfirm(getActivity(), getString(R.string.signin_mobile_correct, StringUtils.getFormattedPhone(mCountryCode, mPhoneEditText)), diff --git a/app/src/main/res/menu/paste_menu.xml b/app/src/main/res/menu/paste_menu.xml new file mode 100644 index 0000000000..7795b67ffd --- /dev/null +++ b/app/src/main/res/menu/paste_menu.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 567d4cee19..c887120e3b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -232,4 +232,6 @@ Cancel group rules. Please review the latest changes before updating the group rules. + Paste + -- GitLab From 62ef7bb4f4a70baf1a23ae119a677c76a136cb29 Mon Sep 17 00:00:00 2001 From: Pasha Shkaran Date: Fri, 24 Nov 2017 14:50:06 +0200 Subject: [PATCH 3/6] Revert "wrong place" This reverts commit 6fbf1d83d655826425906a94f6eff9604aae9dcb. --- .../ui/fragments/signin/LoginFragment.java | 23 ------------------- app/src/main/res/menu/paste_menu.xml | 9 -------- app/src/main/res/values/strings.xml | 2 -- 3 files changed, 34 deletions(-) delete mode 100644 app/src/main/res/menu/paste_menu.xml 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 80f2f41a14..bea308f868 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 @@ -10,15 +10,11 @@ import android.support.constraint.ConstraintLayout; import android.support.v4.content.ContextCompat; import android.telephony.TelephonyManager; import android.text.InputFilter; -import android.view.ContextMenu; import android.view.LayoutInflater; -import android.view.MenuInflater; -import android.view.MenuItem; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.inputmethod.EditorInfo; -import android.widget.AdapterView; import android.widget.ImageButton; import android.widget.LinearLayout; import android.widget.TextView; @@ -107,7 +103,6 @@ public class LoginFragment extends BaseFragment implements LoginView, }); mPhoneEditText.addTextChangedListener(new PhoneWatcher(mPhoneEditText)); - registerForContextMenu(mPhoneEditText); mPhoneEditText.setOnEditorActionListener((textView, i, keyEvent) -> { if (i == EditorInfo.IME_ACTION_DONE) { attemptGetSms(); @@ -133,24 +128,6 @@ public class LoginFragment extends BaseFragment implements LoginView, mPresenter.unSubscribeWatchers(); } - @Override public void onCreateContextMenu(ContextMenu menu, View v, - ContextMenu.ContextMenuInfo menuInfo) { - MenuInflater inflater = getActivity().getMenuInflater(); - inflater.inflate(R.menu.paste_menu, menu); - AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo; - menu.setHeaderTitle("title"); - } - - @Override - public boolean onContextItemSelected(MenuItem item) { - AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo(); - switch (item.getItemId()) { - case R.id.action_paste: - break; - } - return true; - } - @OnClick(R.id.f_iphone_btn_next) void clickNext() { DialogFactory.showPhoneConfirm(getActivity(), getString(R.string.signin_mobile_correct, StringUtils.getFormattedPhone(mCountryCode, mPhoneEditText)), diff --git a/app/src/main/res/menu/paste_menu.xml b/app/src/main/res/menu/paste_menu.xml deleted file mode 100644 index 7795b67ffd..0000000000 --- a/app/src/main/res/menu/paste_menu.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c887120e3b..567d4cee19 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -232,6 +232,4 @@ Cancel group rules. Please review the latest changes before updating the group rules. - Paste - -- GitLab From 4b96b21eb652663578f93c54a3dc73e4b2adc506 Mon Sep 17 00:00:00 2001 From: Pasha Shkaran Date: Sun, 26 Nov 2017 18:43:13 +0200 Subject: [PATCH 4/6] fix from back to backspace --- .../ui/activities/RegistrationActivity.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/nynja/mobile/communicator/ui/activities/RegistrationActivity.java b/app/src/main/java/com/nynja/mobile/communicator/ui/activities/RegistrationActivity.java index fb44d1ee51..8a4fdabb8a 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/ui/activities/RegistrationActivity.java +++ b/app/src/main/java/com/nynja/mobile/communicator/ui/activities/RegistrationActivity.java @@ -4,6 +4,7 @@ import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.Fragment; +import android.view.KeyEvent; import com.nynja.mobile.communicator.NynjaApp; import com.nynja.mobile.communicator.R; @@ -56,11 +57,14 @@ public class RegistrationActivity extends BaseActivity { NynjaApp.getNavigatorHolder().removeNavigator(); } - @Override public void onBackPressed() { - Fragment fragment = getSupportFragmentManager().findFragmentById(android.R.id.content); - if (!(fragment instanceof IOnBackPressed) || !((IOnBackPressed) fragment).onBackPressed()) { - super.onBackPressed(); + @Override public boolean onKeyUp(int keyCode, KeyEvent event) { + if (keyCode == KeyEvent.KEYCODE_DEL) { + Fragment fragment = getSupportFragmentManager().findFragmentById(android.R.id.content); + if (!(fragment instanceof IOnBackPressed) || !((IOnBackPressed) fragment).onBackPressed()) { + return true; + } } + return true; } private void handleCommand(Command command) { -- GitLab From 7f7bc6bb3c8c164c2309c2a4636206c7c5288ac3 Mon Sep 17 00:00:00 2001 From: Pasha Shkaran Date: Tue, 28 Nov 2017 13:21:11 +0200 Subject: [PATCH 5/6] fix with demands --- .../contacts/AddContactByPhoneFragment.java | 18 +++++++++--------- .../ui/fragments/signin/LoginFragment.java | 14 ++++++-------- 2 files changed, 15 insertions(+), 17 deletions(-) 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 e7325a7e45..5468b6cd52 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 @@ -27,7 +27,8 @@ import butterknife.BindView; import butterknife.OnClick; import butterknife.Optional; -public class AddContactByPhoneFragment extends BaseFragment implements AddContactByPhoneView, +public class AddContactByPhoneFragment extends BaseFragment implements + AddContactByPhoneView, IOnBackPressed { private static final String COUNTRY_CODE_TAG = "country"; @@ -38,6 +39,8 @@ public class AddContactByPhoneFragment extends BaseFragment implements AddContac @InjectPresenter AddContactByPhonePresenter mPresenter; + private boolean isSecondTap = false; + public static AddContactByPhoneFragment newInstance() { return new AddContactByPhoneFragment(); } @@ -168,15 +171,12 @@ public class AddContactByPhoneFragment extends BaseFragment implements AddContac return backBtnLogic(); } - public boolean backBtnLogic() { - if (!mPhone.getText().toString().isEmpty()) { - mPhone.setText(""); - } else if (!mCountry.getText().toString().isEmpty() && !mCountry.hasFocus()) { + private boolean backBtnLogic() { + if (mPhone.getText().toString().isEmpty() && !mCountry.hasFocus() && isSecondTap) { mCountry.requestFocus(); - } else if (!mCountry.getText().toString().isEmpty() && mCountry.hasFocus()) { - mCountry.setText(""); - } else { - return false; + isSecondTap = false; + } else if (mPhone.getText().toString().isEmpty() && mPhone.hasFocus()) { + isSecondTap = true; } return true; 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 bea308f868..bc89b19479 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 @@ -73,6 +73,7 @@ public class LoginFragment extends BaseFragment implements LoginView, @InjectPresenter LoginPresenter mPresenter; private Handler mHandler; + private boolean isSecondTap = false; public static LoginFragment newInstance() { return new LoginFragment(); @@ -311,15 +312,12 @@ public class LoginFragment extends BaseFragment implements LoginView, return backBtnLogic(); } - public boolean backBtnLogic() { - if (!mPhoneEditText.getText().toString().isEmpty()) { - mPhoneEditText.setText(""); - } else if (!mCountryCode.getText().toString().isEmpty() && !mCountryCode.hasFocus()) { + private boolean backBtnLogic() { + if (mPhoneEditText.getText().toString().isEmpty() && !mCountryCode.hasFocus() && isSecondTap) { mCountryCode.requestFocus(); - } else if (!mCountryCode.getText().toString().isEmpty() && mCountryCode.hasFocus()) { - mCountryCode.setText(""); - } else { - return false; + isSecondTap = false; + } else if (mPhoneEditText.getText().toString().isEmpty() && mPhoneEditText.hasFocus()) { + isSecondTap = true; } return true; -- GitLab From 015e706d7cdbf2d1b9570bf52a64452d9c5e4c28 Mon Sep 17 00:00:00 2001 From: Pasha Shkaran Date: Wed, 29 Nov 2017 11:47:35 +0200 Subject: [PATCH 6/6] fix back logic --- .../intetfaces/IOnBackPressed.java | 9 ------- .../ui/activities/HomeActivity.java | 12 ++++------ .../ui/activities/RegistrationActivity.java | 14 ----------- .../contacts/AddContactByPhoneFragment.java | 21 ++++------------ .../ui/fragments/signin/LoginFragment.java | 21 ++++------------ .../communicator/ui/views/HintEditText.java | 24 +++++++++++++++++++ 6 files changed, 36 insertions(+), 65 deletions(-) delete mode 100644 app/src/main/java/com/nynja/mobile/communicator/intetfaces/IOnBackPressed.java diff --git a/app/src/main/java/com/nynja/mobile/communicator/intetfaces/IOnBackPressed.java b/app/src/main/java/com/nynja/mobile/communicator/intetfaces/IOnBackPressed.java deleted file mode 100644 index d35dcb72d9..0000000000 --- a/app/src/main/java/com/nynja/mobile/communicator/intetfaces/IOnBackPressed.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.nynja.mobile.communicator.intetfaces; - -/** - * Created by pavel on 11/23/17. - */ - -public interface IOnBackPressed { - boolean onBackPressed(); -} diff --git a/app/src/main/java/com/nynja/mobile/communicator/ui/activities/HomeActivity.java b/app/src/main/java/com/nynja/mobile/communicator/ui/activities/HomeActivity.java index 208903b656..32c1e2ab56 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/ui/activities/HomeActivity.java +++ b/app/src/main/java/com/nynja/mobile/communicator/ui/activities/HomeActivity.java @@ -29,7 +29,6 @@ import com.nynja.mobile.communicator.data.models.mqtt.Contact; import com.nynja.mobile.communicator.data.models.mqtt.Room; import com.nynja.mobile.communicator.data.voximplant.ActiveCall; import com.nynja.mobile.communicator.data.voximplant.VoxImplantModule; -import com.nynja.mobile.communicator.intetfaces.IOnBackPressed; import com.nynja.mobile.communicator.intetfaces.OnWheelContentListener; import com.nynja.mobile.communicator.mvp.presenters.HomePresenter; import com.nynja.mobile.communicator.mvp.view.HomeView; @@ -372,13 +371,10 @@ public class HomeActivity extends BaseActivity implements HomeView, MenuButton.O if (mCascadeWheel.isOpen()) { mCascadeWheel.openCloseWheels(); } else { - Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.container); - if (!(fragment instanceof IOnBackPressed) || !((IOnBackPressed) fragment).onBackPressed()) { - if (mLastBackPressTime + 1500 > System.currentTimeMillis()) { - super.onBackPressed(); - } else { - Toast.makeText(this, R.string.main_text_press_twice, Toast.LENGTH_SHORT).show(); - } + if (mLastBackPressTime + 1500 > System.currentTimeMillis()) { + super.onBackPressed(); + } else { + Toast.makeText(this, R.string.main_text_press_twice, Toast.LENGTH_SHORT).show(); } mLastBackPressTime = System.currentTimeMillis(); } diff --git a/app/src/main/java/com/nynja/mobile/communicator/ui/activities/RegistrationActivity.java b/app/src/main/java/com/nynja/mobile/communicator/ui/activities/RegistrationActivity.java index 8a4fdabb8a..0ea460e63b 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/ui/activities/RegistrationActivity.java +++ b/app/src/main/java/com/nynja/mobile/communicator/ui/activities/RegistrationActivity.java @@ -3,12 +3,8 @@ package com.nynja.mobile.communicator.ui.activities; import android.content.Context; import android.content.Intent; import android.os.Bundle; -import android.support.v4.app.Fragment; -import android.view.KeyEvent; import com.nynja.mobile.communicator.NynjaApp; -import com.nynja.mobile.communicator.R; -import com.nynja.mobile.communicator.intetfaces.IOnBackPressed; import com.nynja.mobile.communicator.ui.base.BaseActivity; import com.nynja.mobile.communicator.ui.base.BaseFragment; import com.nynja.mobile.communicator.ui.fragments.signin.CodeInputFragment; @@ -57,16 +53,6 @@ public class RegistrationActivity extends BaseActivity { NynjaApp.getNavigatorHolder().removeNavigator(); } - @Override public boolean onKeyUp(int keyCode, KeyEvent event) { - if (keyCode == KeyEvent.KEYCODE_DEL) { - Fragment fragment = getSupportFragmentManager().findFragmentById(android.R.id.content); - if (!(fragment instanceof IOnBackPressed) || !((IOnBackPressed) fragment).onBackPressed()) { - return true; - } - } - return true; - } - private void handleCommand(Command command) { if (command instanceof Replace) { BaseFragment fragment; 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 5468b6cd52..734879cc6b 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 @@ -14,7 +14,6 @@ import com.arellomobile.mvp.presenter.InjectPresenter; import com.jakewharton.rxbinding2.widget.RxTextView; import com.nynja.mobile.communicator.R; import com.nynja.mobile.communicator.data.models.CountryCode; -import com.nynja.mobile.communicator.intetfaces.IOnBackPressed; import com.nynja.mobile.communicator.mvp.presenters.AddContactByPhonePresenter; import com.nynja.mobile.communicator.mvp.view.AddContactByPhoneView; import com.nynja.mobile.communicator.ui.base.BaseFragment; @@ -29,7 +28,7 @@ import butterknife.Optional; public class AddContactByPhoneFragment extends BaseFragment implements AddContactByPhoneView, - IOnBackPressed { + HintEditText.IOnKeyDelListener { private static final String COUNTRY_CODE_TAG = "country"; @@ -39,8 +38,6 @@ public class AddContactByPhoneFragment extends BaseFragment implements @InjectPresenter AddContactByPhonePresenter mPresenter; - private boolean isSecondTap = false; - public static AddContactByPhoneFragment newInstance() { return new AddContactByPhoneFragment(); } @@ -62,6 +59,7 @@ public class AddContactByPhoneFragment extends BaseFragment implements super.onViewCreated(view, savedInstanceState); mPhone.addTextChangedListener(new PhoneWatcher(mPhone)); + mPhone.setOnKeyDelListener(this); mPhone.setOnEditorActionListener((textView, i, keyEvent) -> { if (i == EditorInfo.IME_ACTION_SEARCH) { searchUser(); @@ -167,18 +165,7 @@ public class AddContactByPhoneFragment extends BaseFragment implements mTvCountry.setText(getString(R.string.signin_text_wrong_country)); } - @Override public boolean onBackPressed() { - return backBtnLogic(); - } - - private boolean backBtnLogic() { - if (mPhone.getText().toString().isEmpty() && !mCountry.hasFocus() && isSecondTap) { - mCountry.requestFocus(); - isSecondTap = false; - } else if (mPhone.getText().toString().isEmpty() && mPhone.hasFocus()) { - isSecondTap = true; - } - - return true; + @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 bc89b19479..b70306fbed 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 @@ -23,11 +23,9 @@ import android.widget.Toast; import com.arellomobile.mvp.presenter.InjectPresenter; import com.jakewharton.rxbinding2.widget.RxTextView; import com.nynja.mobile.communicator.R; -import com.nynja.mobile.communicator.intetfaces.IOnBackPressed; import com.nynja.mobile.communicator.mvp.presenters.BasePresenter; import com.nynja.mobile.communicator.mvp.presenters.LoginPresenter; import com.nynja.mobile.communicator.mvp.view.LoginView; -import com.nynja.mobile.communicator.ui.activities.RegistrationActivity; import com.nynja.mobile.communicator.ui.base.BaseFragment; import com.nynja.mobile.communicator.ui.views.AlphabetView; import com.nynja.mobile.communicator.ui.views.CustomEditText; @@ -59,7 +57,7 @@ import timber.log.Timber; */ public class LoginFragment extends BaseFragment implements LoginView, - IOnBackPressed { + HintEditText.IOnKeyDelListener { @BindView(R.id.f_iphone_view_wheel) WheelView mWheelView; @BindView(R.id.f_iphone_tv_country) TextView mCountry; @@ -73,7 +71,6 @@ public class LoginFragment extends BaseFragment implements LoginView, @InjectPresenter LoginPresenter mPresenter; private Handler mHandler; - private boolean isSecondTap = false; public static LoginFragment newInstance() { return new LoginFragment(); @@ -104,6 +101,7 @@ public class LoginFragment extends BaseFragment implements LoginView, }); mPhoneEditText.addTextChangedListener(new PhoneWatcher(mPhoneEditText)); + mPhoneEditText.setOnKeyDelListener(this); mPhoneEditText.setOnEditorActionListener((textView, i, keyEvent) -> { if (i == EditorInfo.IME_ACTION_DONE) { attemptGetSms(); @@ -308,18 +306,7 @@ public class LoginFragment extends BaseFragment implements LoginView, return isSimCardEnable; } - @Override public boolean onBackPressed() { - return backBtnLogic(); - } - - private boolean backBtnLogic() { - if (mPhoneEditText.getText().toString().isEmpty() && !mCountryCode.hasFocus() && isSecondTap) { - mCountryCode.requestFocus(); - isSecondTap = false; - } else if (mPhoneEditText.getText().toString().isEmpty() && mPhoneEditText.hasFocus()) { - isSecondTap = true; - } - - return true; + @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 383745223c..d0af17e6e0 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(); + } } -- GitLab