From 0d0631439ed3c139b4be8a605736033914e5f1d4 Mon Sep 17 00:00:00 2001 From: Pasha Shkaran Date: Fri, 24 Nov 2017 14:48:00 +0200 Subject: [PATCH 1/2] add paste menu --- .../ui/fragments/signin/LoginFragment.java | 33 +++++++++++++++++++ app/src/main/res/menu/paste_menu.xml | 8 +++++ app/src/main/res/values/strings.xml | 3 ++ 3 files changed, 44 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 a715aef429..964d05112c 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,8 @@ public class LoginFragment extends BaseFragment implements LoginView { } }); + registerForContextMenu(mPhoneEditText); + mCountryCode.setBlockBackButton(true); mPhoneEditText.setBlockBackButton(true); mPhoneEditText.addTextChangedListener(new PhoneWatcher(mPhoneEditText)); @@ -127,6 +135,31 @@ 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); + mPhoneEditText.setText(clipData.getText().toString()); + } + break; + } + return true; + } + + private boolean validateString(String str) { + return str.matches("[0-9]+") && str.length() > 5; + } + + @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..30e62e5779 --- /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 567d4cee19..63f946b870 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 + + -- GitLab From 9712666a036556f6b2ddbe5b50bfd0f5b852e739 Mon Sep 17 00:00:00 2001 From: Pasha Shkaran Date: Mon, 27 Nov 2017 13:51:06 +0200 Subject: [PATCH 2/2] Task #134 --- .../mvp/presenters/LoginPresenter.java | 32 +++++++++++++++++++ .../ui/fragments/signin/LoginFragment.java | 7 ++-- 2 files changed, 34 insertions(+), 5 deletions(-) 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..6b3d3a62d3 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 964d05112c..0154bd499a 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 @@ -106,6 +106,7 @@ public class LoginFragment extends BaseFragment implements LoginView { }); registerForContextMenu(mPhoneEditText); + registerForContextMenu(mCountryCode); mCountryCode.setBlockBackButton(true); mPhoneEditText.setBlockBackButton(true); @@ -148,17 +149,13 @@ public class LoginFragment extends BaseFragment implements LoginView { .getSystemService(Context.CLIPBOARD_SERVICE); if (clipboard != null) { ClipData.Item clipData = clipboard.getPrimaryClip().getItemAt(0); - mPhoneEditText.setText(clipData.getText().toString()); + mPresenter.pastePhone(clipData.getText().toString()); } break; } return true; } - private boolean validateString(String str) { - return str.matches("[0-9]+") && str.length() > 5; - } - @OnClick(R.id.f_iphone_btn_next) void clickNext() { DialogFactory.showPhoneConfirm(getActivity(), -- GitLab