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..6b3d3a62d381a3f9a59fa6e0999d03d755a608ae 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 @@ -177,6 +177,38 @@ public class LoginPresenter extends BaseErrorPresenter { }); } + public void pastePhone(String text) { + String phone = Utils.stripExceptNumbers(text, false); + String country = findCountryByPhone(phone); + if (country != null) { + String code = mCountryHelper.countriesMap.get(country); + getViewState().setCode(code); + getViewState().setSelectedCountry(mCountryHelper.countriesArray.indexOf(country)); + getViewState().setPhone(phone.replace(code, "")); + mCountryState = 0; + } else { + getViewState().setWrongCountryText(); + getViewState().setPhoneHint(null); + mCountryState = 2; + showDefaultSelectorState(); + } + } + + private String findCountryByPhone(String phone) { + String country; + if (phone.length() > 8) { + for (int a = 1; a <= 4; a++) { + String sub = phone.substring(0, a); + country = mCountryHelper.codesMap.get(sub); + if (country != null) { + return country; + } + } + } + + return null; + } + private void showDefaultSelectorState() { int firstCountryPosition = mCountryHelper.countriesArray.size() - 1; getViewState().setSelectedCountry(firstCountryPosition); 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..0154bd499a68685299ec983045b148e4029ec12d 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 @@ -1,6 +1,8 @@ package com.nynja.mobile.communicator.ui.fragments.signin; import android.Manifest; +import android.content.ClipData; +import android.content.ClipboardManager; import android.content.Context; import android.content.pm.PackageManager; import android.os.Bundle; @@ -10,11 +12,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; @@ -99,6 +105,9 @@ public class LoginFragment extends BaseFragment implements LoginView { } }); + registerForContextMenu(mPhoneEditText); + registerForContextMenu(mCountryCode); + mCountryCode.setBlockBackButton(true); mPhoneEditText.setBlockBackButton(true); mPhoneEditText.addTextChangedListener(new PhoneWatcher(mPhoneEditText)); @@ -127,6 +136,27 @@ 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); + } + + @Override public boolean onContextItemSelected(MenuItem item) { + switch (item.getItemId()) { + case R.id.action_paste: + ClipboardManager clipboard = (android.content.ClipboardManager) getActivity() + .getSystemService(Context.CLIPBOARD_SERVICE); + if (clipboard != null) { + ClipData.Item clipData = clipboard.getPrimaryClip().getItemAt(0); + mPresenter.pastePhone(clipData.getText().toString()); + } + 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 0000000000000000000000000000000000000000..30e62e57795b9c7be24dc13969724711d3a536e9 --- /dev/null +++ b/app/src/main/res/menu/paste_menu.xml @@ -0,0 +1,8 @@ + + + + + \ 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 567d4cee19ad0250fc4b7ec84b68ab10d4e4f31c..63f946b8709da88afb49fe5983c61b00de61457e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -232,4 +232,7 @@ Cancel group rules. Please review the latest changes before updating the group rules. + Paste + +