Search in sources :

Example 1 with TextDetailSettingsCell

use of org.telegram.ui.Cells.TextDetailSettingsCell in project Telegram-FOSS by Telegram-FOSS-Team.

the class AndroidUtilities method showProxyAlert.

public static void showProxyAlert(Activity activity, final String address, final String port, final String user, final String password, final String secret) {
    BottomSheet.Builder builder = new BottomSheet.Builder(activity);
    final Runnable dismissRunnable = builder.getDismissRunnable();
    builder.setApplyTopPadding(false);
    builder.setApplyBottomPadding(false);
    LinearLayout linearLayout = new LinearLayout(activity);
    builder.setCustomView(linearLayout);
    linearLayout.setOrientation(LinearLayout.VERTICAL);
    if (!TextUtils.isEmpty(secret)) {
        TextView titleTextView = new TextView(activity);
        titleTextView.setText(LocaleController.getString("UseProxyTelegramInfo2", R.string.UseProxyTelegramInfo2));
        titleTextView.setTextColor(Theme.getColor(Theme.key_dialogTextGray4));
        titleTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14);
        titleTextView.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL);
        linearLayout.addView(titleTextView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, 17, 8, 17, 8));
        View lineView = new View(activity);
        lineView.setBackgroundColor(Theme.getColor(Theme.key_divider));
        linearLayout.addView(lineView, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 1));
    }
    for (int a = 0; a < 5; a++) {
        String text = null;
        String detail = null;
        if (a == 0) {
            text = address;
            detail = LocaleController.getString("UseProxyAddress", R.string.UseProxyAddress);
        } else if (a == 1) {
            text = "" + port;
            detail = LocaleController.getString("UseProxyPort", R.string.UseProxyPort);
        } else if (a == 2) {
            text = secret;
            detail = LocaleController.getString("UseProxySecret", R.string.UseProxySecret);
        } else if (a == 3) {
            text = user;
            detail = LocaleController.getString("UseProxyUsername", R.string.UseProxyUsername);
        } else if (a == 4) {
            text = password;
            detail = LocaleController.getString("UseProxyPassword", R.string.UseProxyPassword);
        }
        if (TextUtils.isEmpty(text)) {
            continue;
        }
        TextDetailSettingsCell cell = new TextDetailSettingsCell(activity);
        cell.setTextAndValue(text, detail, true);
        cell.getTextView().setTextColor(Theme.getColor(Theme.key_dialogTextBlack));
        cell.getValueTextView().setTextColor(Theme.getColor(Theme.key_dialogTextGray3));
        linearLayout.addView(cell, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
        if (a == 2) {
            break;
        }
    }
    PickerBottomLayout pickerBottomLayout = new PickerBottomLayout(activity, false);
    pickerBottomLayout.setBackgroundColor(Theme.getColor(Theme.key_dialogBackground));
    linearLayout.addView(pickerBottomLayout, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48, Gravity.LEFT | Gravity.BOTTOM));
    pickerBottomLayout.cancelButton.setPadding(AndroidUtilities.dp(18), 0, AndroidUtilities.dp(18), 0);
    pickerBottomLayout.cancelButton.setTextColor(Theme.getColor(Theme.key_dialogTextBlue2));
    pickerBottomLayout.cancelButton.setText(LocaleController.getString("Cancel", R.string.Cancel).toUpperCase());
    pickerBottomLayout.cancelButton.setOnClickListener(view -> dismissRunnable.run());
    pickerBottomLayout.doneButtonTextView.setTextColor(Theme.getColor(Theme.key_dialogTextBlue2));
    pickerBottomLayout.doneButton.setPadding(AndroidUtilities.dp(18), 0, AndroidUtilities.dp(18), 0);
    pickerBottomLayout.doneButtonBadgeTextView.setVisibility(View.GONE);
    pickerBottomLayout.doneButtonTextView.setText(LocaleController.getString("ConnectingConnectProxy", R.string.ConnectingConnectProxy).toUpperCase());
    pickerBottomLayout.doneButton.setOnClickListener(v -> {
        SharedPreferences.Editor editor = MessagesController.getGlobalMainSettings().edit();
        editor.putBoolean("proxy_enabled", true);
        editor.putString("proxy_ip", address);
        int p = Utilities.parseInt(port);
        editor.putInt("proxy_port", p);
        SharedConfig.ProxyInfo info;
        if (TextUtils.isEmpty(secret)) {
            editor.remove("proxy_secret");
            if (TextUtils.isEmpty(password)) {
                editor.remove("proxy_pass");
            } else {
                editor.putString("proxy_pass", password);
            }
            if (TextUtils.isEmpty(user)) {
                editor.remove("proxy_user");
            } else {
                editor.putString("proxy_user", user);
            }
            info = new SharedConfig.ProxyInfo(address, p, user, password, "");
        } else {
            editor.remove("proxy_pass");
            editor.remove("proxy_user");
            editor.putString("proxy_secret", secret);
            info = new SharedConfig.ProxyInfo(address, p, "", "", secret);
        }
        editor.commit();
        SharedConfig.currentProxy = SharedConfig.addProxy(info);
        ConnectionsManager.setProxySettings(true, address, p, user, password, secret);
        NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.proxySettingsChanged);
        dismissRunnable.run();
    });
    builder.show();
}
Also used : PickerBottomLayout(org.telegram.ui.Components.PickerBottomLayout) TextDetailSettingsCell(org.telegram.ui.Cells.TextDetailSettingsCell) SharedPreferences(android.content.SharedPreferences) SpannableStringBuilder(android.text.SpannableStringBuilder) SpannedString(android.text.SpannedString) HorizontalScrollView(android.widget.HorizontalScrollView) ScrollView(android.widget.ScrollView) View(android.view.View) RecyclerView(androidx.recyclerview.widget.RecyclerView) TextView(android.widget.TextView) ListView(android.widget.ListView) RecyclerListView(org.telegram.ui.Components.RecyclerListView) TextPaint(android.text.TextPaint) Paint(android.graphics.Paint) SuppressLint(android.annotation.SuppressLint) Point(android.graphics.Point) TextView(android.widget.TextView) BottomSheet(org.telegram.ui.ActionBar.BottomSheet) LinearLayout(android.widget.LinearLayout)

Example 2 with TextDetailSettingsCell

use of org.telegram.ui.Cells.TextDetailSettingsCell in project Telegram-FOSS by Telegram-FOSS-Team.

the class PassportActivity method createIdentityInterface.

private void createIdentityInterface(final Context context) {
    languageMap = new HashMap<>();
    try {
        BufferedReader reader = new BufferedReader(new InputStreamReader(context.getResources().getAssets().open("countries.txt")));
        String line;
        while ((line = reader.readLine()) != null) {
            String[] args = line.split(";");
            languageMap.put(args[1], args[2]);
        }
        reader.close();
    } catch (Exception e) {
        FileLog.e(e);
    }
    topErrorCell = new TextInfoPrivacyCell(context);
    topErrorCell.setBackgroundDrawable(Theme.getThemedDrawable(context, R.drawable.greydivider_top, Theme.key_windowBackgroundGrayShadow));
    topErrorCell.setPadding(0, AndroidUtilities.dp(7), 0, 0);
    linearLayout2.addView(topErrorCell, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
    checkTopErrorCell(true);
    if (currentDocumentsType != null) {
        headerCell = new HeaderCell(context);
        if (documentOnly) {
            headerCell.setText(LocaleController.getString("PassportDocuments", R.string.PassportDocuments));
        } else {
            headerCell.setText(LocaleController.getString("PassportRequiredDocuments", R.string.PassportRequiredDocuments));
        }
        headerCell.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite));
        linearLayout2.addView(headerCell, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
        frontLayout = new LinearLayout(context);
        frontLayout.setOrientation(LinearLayout.VERTICAL);
        linearLayout2.addView(frontLayout, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
        uploadFrontCell = new TextDetailSettingsCell(context);
        uploadFrontCell.setBackgroundDrawable(Theme.getSelectorDrawable(true));
        linearLayout2.addView(uploadFrontCell, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
        uploadFrontCell.setOnClickListener(v -> {
            uploadingFileType = UPLOADING_TYPE_FRONT;
            openAttachMenu();
        });
        reverseLayout = new LinearLayout(context);
        reverseLayout.setOrientation(LinearLayout.VERTICAL);
        linearLayout2.addView(reverseLayout, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
        boolean divider = currentDocumentsType.selfie_required;
        uploadReverseCell = new TextDetailSettingsCell(context);
        uploadReverseCell.setBackgroundDrawable(Theme.getSelectorDrawable(true));
        uploadReverseCell.setTextAndValue(LocaleController.getString("PassportReverseSide", R.string.PassportReverseSide), LocaleController.getString("PassportReverseSideInfo", R.string.PassportReverseSideInfo), divider);
        linearLayout2.addView(uploadReverseCell, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
        uploadReverseCell.setOnClickListener(v -> {
            uploadingFileType = UPLOADING_TYPE_REVERSE;
            openAttachMenu();
        });
        if (currentDocumentsType.selfie_required) {
            selfieLayout = new LinearLayout(context);
            selfieLayout.setOrientation(LinearLayout.VERTICAL);
            linearLayout2.addView(selfieLayout, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
            uploadSelfieCell = new TextDetailSettingsCell(context);
            uploadSelfieCell.setBackgroundDrawable(Theme.getSelectorDrawable(true));
            uploadSelfieCell.setTextAndValue(LocaleController.getString("PassportSelfie", R.string.PassportSelfie), LocaleController.getString("PassportSelfieInfo", R.string.PassportSelfieInfo), currentType.translation_required);
            linearLayout2.addView(uploadSelfieCell, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
            uploadSelfieCell.setOnClickListener(v -> {
                uploadingFileType = UPLOADING_TYPE_SELFIE;
                openAttachMenu();
            });
        }
        bottomCell = new TextInfoPrivacyCell(context);
        bottomCell.setBackgroundDrawable(Theme.getThemedDrawable(context, R.drawable.greydivider, Theme.key_windowBackgroundGrayShadow));
        bottomCell.setText(LocaleController.getString("PassportPersonalUploadInfo", R.string.PassportPersonalUploadInfo));
        linearLayout2.addView(bottomCell, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
        if (currentDocumentsType.translation_required) {
            headerCell = new HeaderCell(context);
            headerCell.setText(LocaleController.getString("PassportTranslation", R.string.PassportTranslation));
            headerCell.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite));
            linearLayout2.addView(headerCell, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
            translationLayout = new LinearLayout(context);
            translationLayout.setOrientation(LinearLayout.VERTICAL);
            linearLayout2.addView(translationLayout, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
            uploadTranslationCell = new TextSettingsCell(context);
            uploadTranslationCell.setBackgroundDrawable(Theme.getSelectorDrawable(true));
            linearLayout2.addView(uploadTranslationCell, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
            uploadTranslationCell.setOnClickListener(v -> {
                uploadingFileType = UPLOADING_TYPE_TRANSLATION;
                openAttachMenu();
            });
            bottomCellTranslation = new TextInfoPrivacyCell(context);
            bottomCellTranslation.setBackgroundDrawable(Theme.getThemedDrawable(context, R.drawable.greydivider, Theme.key_windowBackgroundGrayShadow));
            if (currentBotId != 0) {
                noAllTranslationErrorText = LocaleController.getString("PassportAddTranslationUploadInfo", R.string.PassportAddTranslationUploadInfo);
            } else {
                if (currentDocumentsType.type instanceof TLRPC.TL_secureValueTypePassport) {
                    noAllTranslationErrorText = LocaleController.getString("PassportAddPassportInfo", R.string.PassportAddPassportInfo);
                } else if (currentDocumentsType.type instanceof TLRPC.TL_secureValueTypeInternalPassport) {
                    noAllTranslationErrorText = LocaleController.getString("PassportAddInternalPassportInfo", R.string.PassportAddInternalPassportInfo);
                } else if (currentDocumentsType.type instanceof TLRPC.TL_secureValueTypeIdentityCard) {
                    noAllTranslationErrorText = LocaleController.getString("PassportAddIdentityCardInfo", R.string.PassportAddIdentityCardInfo);
                } else if (currentDocumentsType.type instanceof TLRPC.TL_secureValueTypeDriverLicense) {
                    noAllTranslationErrorText = LocaleController.getString("PassportAddDriverLicenceInfo", R.string.PassportAddDriverLicenceInfo);
                } else {
                    noAllTranslationErrorText = "";
                }
            }
            CharSequence text = noAllTranslationErrorText;
            if (documentsErrors != null) {
                String errorText;
                if ((errorText = documentsErrors.get("translation_all")) != null) {
                    SpannableStringBuilder stringBuilder = new SpannableStringBuilder(errorText);
                    stringBuilder.append("\n\n");
                    stringBuilder.append(noAllTranslationErrorText);
                    text = stringBuilder;
                    stringBuilder.setSpan(new ForegroundColorSpan(Theme.getColor(Theme.key_windowBackgroundWhiteRedText3)), 0, errorText.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
                    errorsValues.put("translation_all", "");
                }
            }
            bottomCellTranslation.setText(text);
            linearLayout2.addView(bottomCellTranslation, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
        }
    } else if (Build.VERSION.SDK_INT >= 18) {
        scanDocumentCell = new TextSettingsCell(context);
        scanDocumentCell.setBackgroundDrawable(Theme.getSelectorDrawable(true));
        scanDocumentCell.setText(LocaleController.getString("PassportScanPassport", R.string.PassportScanPassport), false);
        linearLayout2.addView(scanDocumentCell, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
        scanDocumentCell.setOnClickListener(v -> {
            if (Build.VERSION.SDK_INT >= 23 && getParentActivity().checkSelfPermission(Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
                getParentActivity().requestPermissions(new String[] { Manifest.permission.CAMERA }, 22);
                return;
            }
            CameraScanActivity fragment = new CameraScanActivity(org.telegram.ui.CameraScanActivity.TYPE_MRZ);
            fragment.setDelegate(new CameraScanActivity.CameraScanActivityDelegate() {

                @Override
                public void didFindMrzInfo(MrzRecognizer.Result result) {
                    if (!TextUtils.isEmpty(result.firstName)) {
                        inputFields[FIELD_NAME].setText(result.firstName);
                    }
                    if (!TextUtils.isEmpty(result.middleName)) {
                        inputFields[FIELD_MIDNAME].setText(result.middleName);
                    }
                    if (!TextUtils.isEmpty(result.lastName)) {
                        inputFields[FIELD_SURNAME].setText(result.lastName);
                    }
                    if (result.gender != MrzRecognizer.Result.GENDER_UNKNOWN) {
                        switch(result.gender) {
                            case MrzRecognizer.Result.GENDER_MALE:
                                currentGender = "male";
                                inputFields[FIELD_GENDER].setText(LocaleController.getString("PassportMale", R.string.PassportMale));
                                break;
                            case MrzRecognizer.Result.GENDER_FEMALE:
                                currentGender = "female";
                                inputFields[FIELD_GENDER].setText(LocaleController.getString("PassportFemale", R.string.PassportFemale));
                                break;
                        }
                    }
                    if (!TextUtils.isEmpty(result.nationality)) {
                        currentCitizeship = result.nationality;
                        String country = languageMap.get(currentCitizeship);
                        if (country != null) {
                            inputFields[FIELD_CITIZENSHIP].setText(country);
                        }
                    }
                    if (!TextUtils.isEmpty(result.issuingCountry)) {
                        currentResidence = result.issuingCountry;
                        String country = languageMap.get(currentResidence);
                        if (country != null) {
                            inputFields[FIELD_RESIDENCE].setText(country);
                        }
                    }
                    if (result.birthDay > 0 && result.birthMonth > 0 && result.birthYear > 0) {
                        inputFields[FIELD_BIRTHDAY].setText(String.format(Locale.US, "%02d.%02d.%d", result.birthDay, result.birthMonth, result.birthYear));
                    }
                }
            });
            presentFragment(fragment);
        });
        bottomCell = new TextInfoPrivacyCell(context);
        bottomCell.setBackgroundDrawable(Theme.getThemedDrawable(context, R.drawable.greydivider, Theme.key_windowBackgroundGrayShadow));
        bottomCell.setText(LocaleController.getString("PassportScanPassportInfo", R.string.PassportScanPassportInfo));
        linearLayout2.addView(bottomCell, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
    }
    headerCell = new HeaderCell(context);
    if (documentOnly) {
        headerCell.setText(LocaleController.getString("PassportDocument", R.string.PassportDocument));
    } else {
        headerCell.setText(LocaleController.getString("PassportPersonal", R.string.PassportPersonal));
    }
    headerCell.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite));
    linearLayout2.addView(headerCell, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
    int count = currentDocumentsType != null ? FIELD_IDENTITY_COUNT : FIELD_IDENTITY_NODOC_COUNT;
    inputFields = new EditTextBoldCursor[count];
    for (int a = 0; a < count; a++) {
        final EditTextBoldCursor field = new EditTextBoldCursor(context);
        inputFields[a] = field;
        ViewGroup container = new FrameLayout(context) {

            private StaticLayout errorLayout;

            private float offsetX;

            @Override
            protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
                int width = MeasureSpec.getSize(widthMeasureSpec) - AndroidUtilities.dp(34);
                errorLayout = field.getErrorLayout(width);
                if (errorLayout != null) {
                    int lineCount = errorLayout.getLineCount();
                    if (lineCount > 1) {
                        int height = AndroidUtilities.dp(64) + (errorLayout.getLineBottom(lineCount - 1) - errorLayout.getLineBottom(0));
                        heightMeasureSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY);
                    }
                    if (LocaleController.isRTL) {
                        float maxW = 0;
                        for (int a = 0; a < lineCount; a++) {
                            float l = errorLayout.getLineLeft(a);
                            if (l != 0) {
                                offsetX = 0;
                                break;
                            }
                            maxW = Math.max(maxW, errorLayout.getLineWidth(a));
                            if (a == lineCount - 1) {
                                offsetX = width - maxW;
                            }
                        }
                    }
                }
                super.onMeasure(widthMeasureSpec, heightMeasureSpec);
            }

            @Override
            protected void onDraw(Canvas canvas) {
                if (errorLayout != null) {
                    canvas.save();
                    canvas.translate(AndroidUtilities.dp(21) + offsetX, field.getLineY() + AndroidUtilities.dp(3));
                    errorLayout.draw(canvas);
                    canvas.restore();
                }
            }
        };
        container.setWillNotDraw(false);
        linearLayout2.addView(container, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 64));
        container.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite));
        if (a == count - 1) {
            extraBackgroundView = new View(context);
            extraBackgroundView.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite));
            linearLayout2.addView(extraBackgroundView, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 6));
        }
        if (documentOnly && currentDocumentsType != null && a < FIELD_CARDNUMBER) {
            container.setVisibility(View.GONE);
            if (extraBackgroundView != null) {
                extraBackgroundView.setVisibility(View.GONE);
            }
        }
        inputFields[a].setTag(a);
        inputFields[a].setSupportRtlHint(true);
        inputFields[a].setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16);
        inputFields[a].setHintColor(Theme.getColor(Theme.key_windowBackgroundWhiteHintText));
        inputFields[a].setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText));
        inputFields[a].setHeaderHintColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlueHeader));
        inputFields[a].setTransformHintToHeader(true);
        inputFields[a].setBackgroundDrawable(null);
        inputFields[a].setCursorColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText));
        inputFields[a].setCursorSize(AndroidUtilities.dp(20));
        inputFields[a].setCursorWidth(1.5f);
        inputFields[a].setLineColors(Theme.getColor(Theme.key_windowBackgroundWhiteInputField), Theme.getColor(Theme.key_windowBackgroundWhiteInputFieldActivated), Theme.getColor(Theme.key_windowBackgroundWhiteRedText3));
        if (a == FIELD_CITIZENSHIP || a == FIELD_RESIDENCE) {
            inputFields[a].setOnTouchListener((v, event) -> {
                if (getParentActivity() == null) {
                    return false;
                }
                if (event.getAction() == MotionEvent.ACTION_UP) {
                    CountrySelectActivity fragment = new CountrySelectActivity(false);
                    fragment.setCountrySelectActivityDelegate((country) -> {
                        int field12 = (Integer) v.getTag();
                        final EditTextBoldCursor editText = inputFields[field12];
                        if (field12 == FIELD_CITIZENSHIP) {
                            currentCitizeship = country.shortname;
                        } else {
                            currentResidence = country.shortname;
                        }
                        editText.setText(country.name);
                    });
                    presentFragment(fragment);
                }
                return true;
            });
            inputFields[a].setInputType(0);
        } else if (a == FIELD_BIRTHDAY || a == FIELD_EXPIRE) {
            inputFields[a].setOnTouchListener((v, event) -> {
                if (getParentActivity() == null) {
                    return false;
                }
                if (event.getAction() == MotionEvent.ACTION_UP) {
                    Calendar calendar = Calendar.getInstance();
                    int year = calendar.get(Calendar.YEAR);
                    int monthOfYear = calendar.get(Calendar.MONTH);
                    int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
                    try {
                        final EditTextBoldCursor field1 = (EditTextBoldCursor) v;
                        int num = (Integer) field1.getTag();
                        int minYear;
                        int maxYear;
                        int currentYearDiff;
                        String title;
                        if (num == FIELD_EXPIRE) {
                            title = LocaleController.getString("PassportSelectExpiredDate", R.string.PassportSelectExpiredDate);
                            minYear = 0;
                            maxYear = 20;
                            currentYearDiff = 0;
                        } else {
                            title = LocaleController.getString("PassportSelectBithdayDate", R.string.PassportSelectBithdayDate);
                            minYear = -120;
                            maxYear = 0;
                            currentYearDiff = -18;
                        }
                        int selectedDay = -1;
                        int selectedMonth = -1;
                        int selectedYear = -1;
                        String[] args = field1.getText().toString().split("\\.");
                        if (args.length == 3) {
                            selectedDay = Utilities.parseInt(args[0]);
                            selectedMonth = Utilities.parseInt(args[1]);
                            selectedYear = Utilities.parseInt(args[2]);
                        }
                        AlertDialog.Builder builder = AlertsCreator.createDatePickerDialog(context, minYear, maxYear, currentYearDiff, selectedDay, selectedMonth, selectedYear, title, num == FIELD_EXPIRE, (year1, month, dayOfMonth1) -> {
                            if (num == FIELD_EXPIRE) {
                                currentExpireDate[0] = year1;
                                currentExpireDate[1] = month + 1;
                                currentExpireDate[2] = dayOfMonth1;
                            }
                            field1.setText(String.format(Locale.US, "%02d.%02d.%d", dayOfMonth1, month + 1, year1));
                        });
                        if (num == FIELD_EXPIRE) {
                            builder.setNegativeButton(LocaleController.getString("PassportSelectNotExpire", R.string.PassportSelectNotExpire), (dialog, which) -> {
                                currentExpireDate[0] = currentExpireDate[1] = currentExpireDate[2] = 0;
                                field1.setText(LocaleController.getString("PassportNoExpireDate", R.string.PassportNoExpireDate));
                            });
                        }
                        showDialog(builder.create());
                    } catch (Exception e) {
                        FileLog.e(e);
                    }
                }
                return true;
            });
            inputFields[a].setInputType(0);
            inputFields[a].setFocusable(false);
        } else if (a == FIELD_GENDER) {
            inputFields[a].setOnTouchListener((v, event) -> {
                if (getParentActivity() == null) {
                    return false;
                }
                if (event.getAction() == MotionEvent.ACTION_UP) {
                    AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
                    builder.setTitle(LocaleController.getString("PassportSelectGender", R.string.PassportSelectGender));
                    builder.setItems(new CharSequence[] { LocaleController.getString("PassportMale", R.string.PassportMale), LocaleController.getString("PassportFemale", R.string.PassportFemale) }, (dialogInterface, i) -> {
                        if (i == 0) {
                            currentGender = "male";
                            inputFields[FIELD_GENDER].setText(LocaleController.getString("PassportMale", R.string.PassportMale));
                        } else if (i == 1) {
                            currentGender = "female";
                            inputFields[FIELD_GENDER].setText(LocaleController.getString("PassportFemale", R.string.PassportFemale));
                        }
                    });
                    builder.setPositiveButton(LocaleController.getString("Cancel", R.string.Cancel), null);
                    showDialog(builder.create());
                }
                return true;
            });
            inputFields[a].setInputType(0);
            inputFields[a].setFocusable(false);
        } else {
            inputFields[a].setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);
            inputFields[a].setImeOptions(EditorInfo.IME_ACTION_NEXT | EditorInfo.IME_FLAG_NO_EXTRACT_UI);
        }
        String value;
        final String key;
        HashMap<String, String> values;
        switch(a) {
            case FIELD_NAME:
                if (currentType.native_names) {
                    inputFields[a].setHintText(LocaleController.getString("PassportNameLatin", R.string.PassportNameLatin));
                } else {
                    inputFields[a].setHintText(LocaleController.getString("PassportName", R.string.PassportName));
                }
                key = "first_name";
                values = currentValues;
                break;
            case FIELD_MIDNAME:
                if (currentType.native_names) {
                    inputFields[a].setHintText(LocaleController.getString("PassportMidnameLatin", R.string.PassportMidnameLatin));
                } else {
                    inputFields[a].setHintText(LocaleController.getString("PassportMidname", R.string.PassportMidname));
                }
                key = "middle_name";
                values = currentValues;
                break;
            case FIELD_SURNAME:
                if (currentType.native_names) {
                    inputFields[a].setHintText(LocaleController.getString("PassportSurnameLatin", R.string.PassportSurnameLatin));
                } else {
                    inputFields[a].setHintText(LocaleController.getString("PassportSurname", R.string.PassportSurname));
                }
                key = "last_name";
                values = currentValues;
                break;
            case FIELD_BIRTHDAY:
                inputFields[a].setHintText(LocaleController.getString("PassportBirthdate", R.string.PassportBirthdate));
                key = "birth_date";
                values = currentValues;
                break;
            case FIELD_GENDER:
                inputFields[a].setHintText(LocaleController.getString("PassportGender", R.string.PassportGender));
                key = "gender";
                values = currentValues;
                break;
            case FIELD_CITIZENSHIP:
                inputFields[a].setHintText(LocaleController.getString("PassportCitizenship", R.string.PassportCitizenship));
                key = "country_code";
                values = currentValues;
                break;
            case FIELD_RESIDENCE:
                inputFields[a].setHintText(LocaleController.getString("PassportResidence", R.string.PassportResidence));
                key = "residence_country_code";
                values = currentValues;
                break;
            case FIELD_CARDNUMBER:
                inputFields[a].setHintText(LocaleController.getString("PassportDocumentNumber", R.string.PassportDocumentNumber));
                key = "document_no";
                values = currentDocumentValues;
                break;
            case FIELD_EXPIRE:
                inputFields[a].setHintText(LocaleController.getString("PassportExpired", R.string.PassportExpired));
                key = "expiry_date";
                values = currentDocumentValues;
                break;
            default:
                continue;
        }
        setFieldValues(values, inputFields[a], key);
        inputFields[a].setSelection(inputFields[a].length());
        if (a == FIELD_NAME || a == FIELD_SURNAME || a == FIELD_MIDNAME) {
            inputFields[a].addTextChangedListener(new TextWatcher() {

                private boolean ignore;

                @Override
                public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                }

                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {
                }

                @Override
                public void afterTextChanged(Editable s) {
                    if (ignore) {
                        return;
                    }
                    int num = (Integer) field.getTag();
                    boolean error = false;
                    for (int a = 0; a < s.length(); a++) {
                        char ch = s.charAt(a);
                        if (!(ch >= '0' && ch <= '9' || ch >= 'a' && ch <= 'z' || ch >= 'A' && ch <= 'Z' || ch == ' ' || ch == '\'' || ch == ',' || ch == '.' || ch == '&' || ch == '-' || ch == '/')) {
                            error = true;
                            break;
                        }
                    }
                    if (error && !allowNonLatinName) {
                        field.setErrorText(LocaleController.getString("PassportUseLatinOnly", R.string.PassportUseLatinOnly));
                    } else {
                        nonLatinNames[num] = error;
                        checkFieldForError(field, key, s, false);
                    }
                }
            });
        } else {
            inputFields[a].addTextChangedListener(new TextWatcher() {

                @Override
                public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                }

                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {
                }

                @Override
                public void afterTextChanged(Editable s) {
                    checkFieldForError(field, key, s, values == currentDocumentValues);
                    int field12 = (Integer) field.getTag();
                    final EditTextBoldCursor editText = inputFields[field12];
                    if (field12 == FIELD_RESIDENCE) {
                        checkNativeFields(true);
                    }
                }
            });
        }
        inputFields[a].setPadding(0, 0, 0, 0);
        inputFields[a].setGravity((LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.CENTER_VERTICAL);
        container.addView(inputFields[a], LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, Gravity.LEFT | Gravity.TOP, 21, 0, 21, 0));
        inputFields[a].setOnEditorActionListener((textView, i, keyEvent) -> {
            if (i == EditorInfo.IME_ACTION_NEXT) {
                int num = (Integer) textView.getTag();
                num++;
                if (num < inputFields.length) {
                    if (inputFields[num].isFocusable()) {
                        inputFields[num].requestFocus();
                    } else {
                        inputFields[num].dispatchTouchEvent(MotionEvent.obtain(0, 0, MotionEvent.ACTION_UP, 0, 0, 0));
                        textView.clearFocus();
                        AndroidUtilities.hideKeyboard(textView);
                    }
                }
                return true;
            }
            return false;
        });
    }
    sectionCell2 = new ShadowSectionCell(context);
    linearLayout2.addView(sectionCell2, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
    headerCell = new HeaderCell(context);
    headerCell.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite));
    linearLayout2.addView(headerCell, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
    inputExtraFields = new EditTextBoldCursor[FIELD_NATIVE_COUNT];
    for (int a = 0; a < FIELD_NATIVE_COUNT; a++) {
        final EditTextBoldCursor field = new EditTextBoldCursor(context);
        inputExtraFields[a] = field;
        ViewGroup container = new FrameLayout(context) {

            private StaticLayout errorLayout;

            private float offsetX;

            @Override
            protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
                int width = MeasureSpec.getSize(widthMeasureSpec) - AndroidUtilities.dp(34);
                errorLayout = field.getErrorLayout(width);
                if (errorLayout != null) {
                    int lineCount = errorLayout.getLineCount();
                    if (lineCount > 1) {
                        int height = AndroidUtilities.dp(64) + (errorLayout.getLineBottom(lineCount - 1) - errorLayout.getLineBottom(0));
                        heightMeasureSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY);
                    }
                    if (LocaleController.isRTL) {
                        float maxW = 0;
                        for (int a = 0; a < lineCount; a++) {
                            float l = errorLayout.getLineLeft(a);
                            if (l != 0) {
                                offsetX = 0;
                                break;
                            }
                            maxW = Math.max(maxW, errorLayout.getLineWidth(a));
                            if (a == lineCount - 1) {
                                offsetX = width - maxW;
                            }
                        }
                    }
                }
                super.onMeasure(widthMeasureSpec, heightMeasureSpec);
            }

            @Override
            protected void onDraw(Canvas canvas) {
                if (errorLayout != null) {
                    canvas.save();
                    canvas.translate(AndroidUtilities.dp(21) + offsetX, field.getLineY() + AndroidUtilities.dp(3));
                    errorLayout.draw(canvas);
                    canvas.restore();
                }
            }
        };
        container.setWillNotDraw(false);
        linearLayout2.addView(container, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 64));
        container.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite));
        if (a == FIELD_NATIVE_COUNT - 1) {
            extraBackgroundView2 = new View(context);
            extraBackgroundView2.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite));
            linearLayout2.addView(extraBackgroundView2, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 6));
        }
        inputExtraFields[a].setTag(a);
        inputExtraFields[a].setSupportRtlHint(true);
        inputExtraFields[a].setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16);
        inputExtraFields[a].setHintColor(Theme.getColor(Theme.key_windowBackgroundWhiteHintText));
        inputExtraFields[a].setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText));
        inputExtraFields[a].setHeaderHintColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlueHeader));
        inputExtraFields[a].setTransformHintToHeader(true);
        inputExtraFields[a].setBackgroundDrawable(null);
        inputExtraFields[a].setCursorColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText));
        inputExtraFields[a].setCursorSize(AndroidUtilities.dp(20));
        inputExtraFields[a].setCursorWidth(1.5f);
        inputExtraFields[a].setLineColors(Theme.getColor(Theme.key_windowBackgroundWhiteInputField), Theme.getColor(Theme.key_windowBackgroundWhiteInputFieldActivated), Theme.getColor(Theme.key_windowBackgroundWhiteRedText3));
        inputExtraFields[a].setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);
        inputExtraFields[a].setImeOptions(EditorInfo.IME_ACTION_NEXT | EditorInfo.IME_FLAG_NO_EXTRACT_UI);
        String value;
        final String key;
        HashMap<String, String> values;
        switch(a) {
            case FIELD_NATIVE_NAME:
                key = "first_name_native";
                values = currentValues;
                break;
            case FIELD_NATIVE_MIDNAME:
                key = "middle_name_native";
                values = currentValues;
                break;
            case FIELD_NATIVE_SURNAME:
                key = "last_name_native";
                values = currentValues;
                break;
            default:
                continue;
        }
        setFieldValues(values, inputExtraFields[a], key);
        inputExtraFields[a].setSelection(inputExtraFields[a].length());
        if (a == FIELD_NATIVE_NAME || a == FIELD_NATIVE_SURNAME || a == FIELD_NATIVE_MIDNAME) {
            inputExtraFields[a].addTextChangedListener(new TextWatcher() {

                private boolean ignore;

                @Override
                public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                }

                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {
                }

                @Override
                public void afterTextChanged(Editable s) {
                    if (ignore) {
                        return;
                    }
                    checkFieldForError(field, key, s, false);
                }
            });
        }
        inputExtraFields[a].setPadding(0, 0, 0, 0);
        inputExtraFields[a].setGravity((LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.CENTER_VERTICAL);
        container.addView(inputExtraFields[a], LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, Gravity.LEFT | Gravity.TOP, 21, 0, 21, 0));
        inputExtraFields[a].setOnEditorActionListener((textView, i, keyEvent) -> {
            if (i == EditorInfo.IME_ACTION_NEXT) {
                int num = (Integer) textView.getTag();
                num++;
                if (num < inputExtraFields.length) {
                    if (inputExtraFields[num].isFocusable()) {
                        inputExtraFields[num].requestFocus();
                    } else {
                        inputExtraFields[num].dispatchTouchEvent(MotionEvent.obtain(0, 0, MotionEvent.ACTION_UP, 0, 0, 0));
                        textView.clearFocus();
                        AndroidUtilities.hideKeyboard(textView);
                    }
                }
                return true;
            }
            return false;
        });
    }
    nativeInfoCell = new TextInfoPrivacyCell(context);
    linearLayout2.addView(nativeInfoCell, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
    if ((currentBotId != 0 || currentDocumentsType == null) && currentTypeValue != null && !documentOnly || currentDocumentsTypeValue != null) {
        if (currentDocumentsTypeValue != null) {
            addDocumentViews(currentDocumentsTypeValue.files);
            if (currentDocumentsTypeValue.front_side instanceof TLRPC.TL_secureFile) {
                addDocumentViewInternal((TLRPC.TL_secureFile) currentDocumentsTypeValue.front_side, UPLOADING_TYPE_FRONT);
            }
            if (currentDocumentsTypeValue.reverse_side instanceof TLRPC.TL_secureFile) {
                addDocumentViewInternal((TLRPC.TL_secureFile) currentDocumentsTypeValue.reverse_side, UPLOADING_TYPE_REVERSE);
            }
            if (currentDocumentsTypeValue.selfie instanceof TLRPC.TL_secureFile) {
                addDocumentViewInternal((TLRPC.TL_secureFile) currentDocumentsTypeValue.selfie, UPLOADING_TYPE_SELFIE);
            }
            addTranslationDocumentViews(currentDocumentsTypeValue.translation);
        }
        TextSettingsCell settingsCell1 = new TextSettingsCell(context);
        settingsCell1.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteRedText3));
        settingsCell1.setBackgroundDrawable(Theme.getSelectorDrawable(true));
        if (currentDocumentsType == null) {
            settingsCell1.setText(LocaleController.getString("PassportDeleteInfo", R.string.PassportDeleteInfo), false);
        } else {
            settingsCell1.setText(LocaleController.getString("PassportDeleteDocument", R.string.PassportDeleteDocument), false);
        }
        linearLayout2.addView(settingsCell1, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
        settingsCell1.setOnClickListener(v -> createDocumentDeleteAlert());
        nativeInfoCell.setBackgroundDrawable(Theme.getThemedDrawable(context, R.drawable.greydivider, Theme.key_windowBackgroundGrayShadow));
        sectionCell = new ShadowSectionCell(context);
        sectionCell.setBackgroundDrawable(Theme.getThemedDrawable(context, R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow));
        linearLayout2.addView(sectionCell, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
    } else {
        nativeInfoCell.setBackgroundDrawable(Theme.getThemedDrawable(context, R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow));
    }
    updateInterfaceStringsForDocumentType();
    checkNativeFields(false);
}
Also used : RandomAccessFile(java.io.RandomAccessFile) Arrays(java.util.Arrays) Bundle(android.os.Bundle) Uri(android.net.Uri) FrameLayout(android.widget.FrameLayout) ImageView(android.widget.ImageView) EditTextBoldCursor(org.telegram.ui.Components.EditTextBoldCursor) Drawable(android.graphics.drawable.Drawable) AvatarDrawable(org.telegram.ui.Components.AvatarDrawable) Manifest(android.Manifest) RSAPublicKey(java.security.interfaces.RSAPublicKey) MediaStore(android.provider.MediaStore) Canvas(android.graphics.Canvas) TimerTask(java.util.TimerTask) ForegroundColorSpan(android.text.style.ForegroundColorSpan) AnimatorListenerAdapter(android.animation.AnimatorListenerAdapter) X509EncodedKeySpec(java.security.spec.X509EncodedKeySpec) NotificationCenter(org.telegram.messenger.NotificationCenter) TextPaint(android.text.TextPaint) PorterDuffColorFilter(android.graphics.PorterDuffColorFilter) Paint(android.graphics.Paint) InputFilter(android.text.InputFilter) RadialProgress(org.telegram.ui.Components.RadialProgress) TextWatcher(android.text.TextWatcher) FileLoader(org.telegram.messenger.FileLoader) SlideView(org.telegram.ui.Components.SlideView) RequestDelegate(org.telegram.tgnet.RequestDelegate) Dialog(android.app.Dialog) URLSpanNoUnderline(org.telegram.ui.Components.URLSpanNoUnderline) AlertsCreator(org.telegram.ui.Components.AlertsCreator) Editable(android.text.Editable) TextInfoPrivacyCell(org.telegram.ui.Cells.TextInfoPrivacyCell) ArrayList(java.util.ArrayList) SpannableStringBuilder(android.text.SpannableStringBuilder) Calendar(java.util.Calendar) TextDetailSettingsCell(org.telegram.ui.Cells.TextDetailSettingsCell) TLRPC(org.telegram.tgnet.TLRPC) Toast(android.widget.Toast) PhoneFormat(org.telegram.PhoneFormat.PhoneFormat) Menu(android.view.Menu) BuildConfig(org.telegram.messenger.BuildConfig) TextSettingsCell(org.telegram.ui.Cells.TextSettingsCell) HintEditText(org.telegram.ui.Components.HintEditText) ActionBarMenu(org.telegram.ui.ActionBar.ActionBarMenu) R(org.telegram.messenger.R) TextUtils(android.text.TextUtils) InputStreamReader(java.io.InputStreamReader) File(java.io.File) Gravity(android.view.Gravity) UserObject(org.telegram.messenger.UserObject) SharedPreferences(android.content.SharedPreferences) TypedValue(android.util.TypedValue) ScrollView(android.widget.ScrollView) BufferedReader(java.io.BufferedReader) AlertDialog(org.telegram.ui.ActionBar.AlertDialog) ThemeDescription(org.telegram.ui.ActionBar.ThemeDescription) Rect(android.graphics.Rect) ActionMode(android.view.ActionMode) LinearLayout(android.widget.LinearLayout) ActionBarMenuItem(org.telegram.ui.ActionBar.ActionBarMenuItem) PackageManager(android.content.pm.PackageManager) Spannable(android.text.Spannable) AndroidUtilities(org.telegram.messenger.AndroidUtilities) ClickableSpan(android.text.style.ClickableSpan) Timer(java.util.Timer) Animator(android.animation.Animator) AccelerateDecelerateInterpolator(android.view.animation.AccelerateDecelerateInterpolator) CheckBoxCell(org.telegram.ui.Cells.CheckBoxCell) MrzRecognizer(org.telegram.messenger.MrzRecognizer) ShadowSectionCell(org.telegram.ui.Cells.ShadowSectionCell) JSONObject(org.json.JSONObject) ApplicationLoader(org.telegram.messenger.ApplicationLoader) Locale(java.util.Locale) MediaController(org.telegram.messenger.MediaController) View(android.view.View) ImageLoader(org.telegram.messenger.ImageLoader) ContextProgressView(org.telegram.ui.Components.ContextProgressView) Utilities(org.telegram.messenger.Utilities) EmptyTextProgressView(org.telegram.ui.Components.EmptyTextProgressView) ObjectAnimator(android.animation.ObjectAnimator) InputType(android.text.InputType) BaseFragment(org.telegram.ui.ActionBar.BaseFragment) PorterDuff(android.graphics.PorterDuff) SendMessagesHelper(org.telegram.messenger.SendMessagesHelper) ConnectionsManager(org.telegram.tgnet.ConnectionsManager) ViewGroup(android.view.ViewGroup) KeyFactory(java.security.KeyFactory) UserConfig(org.telegram.messenger.UserConfig) TextView(android.widget.TextView) FileProvider(androidx.core.content.FileProvider) EditorInfo(android.view.inputmethod.EditorInfo) Typeface(android.graphics.Typeface) Context(android.content.Context) StaticLayout(android.text.StaticLayout) Spanned(android.text.Spanned) KeyEvent(android.view.KeyEvent) Theme(org.telegram.ui.ActionBar.Theme) Intent(android.content.Intent) LocaleController(org.telegram.messenger.LocaleController) HashMap(java.util.HashMap) HeaderCell(org.telegram.ui.Cells.HeaderCell) PackageInfo(android.content.pm.PackageInfo) Cipher(javax.crypto.Cipher) MenuItem(android.view.MenuItem) SuppressLint(android.annotation.SuppressLint) PhoneNumberUtils(android.telephony.PhoneNumberUtils) MotionEvent(android.view.MotionEvent) SRPHelper(org.telegram.messenger.SRPHelper) SecureDocument(org.telegram.messenger.SecureDocument) TelephonyManager(android.telephony.TelephonyManager) ActionBar(org.telegram.ui.ActionBar.ActionBar) TLObject(org.telegram.tgnet.TLObject) AnimatorSet(android.animation.AnimatorSet) MessageObject(org.telegram.messenger.MessageObject) SharedConfig(org.telegram.messenger.SharedConfig) PasswordTransformationMethod(android.text.method.PasswordTransformationMethod) BuildVars(org.telegram.messenger.BuildVars) Build(android.os.Build) DownloadController(org.telegram.messenger.DownloadController) DialogInterface(android.content.DialogInterface) Browser(org.telegram.messenger.browser.Browser) Iterator(java.util.Iterator) BackupImageView(org.telegram.ui.Components.BackupImageView) LayoutHelper(org.telegram.ui.Components.LayoutHelper) FileLog(org.telegram.messenger.FileLog) SecureDocumentKey(org.telegram.messenger.SecureDocumentKey) ChatAttachAlert(org.telegram.ui.Components.ChatAttachAlert) Bitmap(android.graphics.Bitmap) Base64(android.util.Base64) Vibrator(android.os.Vibrator) Comparator(java.util.Comparator) Activity(android.app.Activity) Collections(java.util.Collections) JSONArray(org.json.JSONArray) AlertDialog(org.telegram.ui.ActionBar.AlertDialog) HeaderCell(org.telegram.ui.Cells.HeaderCell) SpannableStringBuilder(android.text.SpannableStringBuilder) TLRPC(org.telegram.tgnet.TLRPC) TextWatcher(android.text.TextWatcher) Editable(android.text.Editable) EditTextBoldCursor(org.telegram.ui.Components.EditTextBoldCursor) InputStreamReader(java.io.InputStreamReader) TextDetailSettingsCell(org.telegram.ui.Cells.TextDetailSettingsCell) ForegroundColorSpan(android.text.style.ForegroundColorSpan) ShadowSectionCell(org.telegram.ui.Cells.ShadowSectionCell) ViewGroup(android.view.ViewGroup) Canvas(android.graphics.Canvas) Calendar(java.util.Calendar) TextInfoPrivacyCell(org.telegram.ui.Cells.TextInfoPrivacyCell) StaticLayout(android.text.StaticLayout) ImageView(android.widget.ImageView) SlideView(org.telegram.ui.Components.SlideView) ScrollView(android.widget.ScrollView) View(android.view.View) ContextProgressView(org.telegram.ui.Components.ContextProgressView) EmptyTextProgressView(org.telegram.ui.Components.EmptyTextProgressView) TextView(android.widget.TextView) BackupImageView(org.telegram.ui.Components.BackupImageView) TextPaint(android.text.TextPaint) Paint(android.graphics.Paint) SuppressLint(android.annotation.SuppressLint) TextSettingsCell(org.telegram.ui.Cells.TextSettingsCell) FrameLayout(android.widget.FrameLayout) BufferedReader(java.io.BufferedReader) LinearLayout(android.widget.LinearLayout) SpannableStringBuilder(android.text.SpannableStringBuilder)

Example 3 with TextDetailSettingsCell

use of org.telegram.ui.Cells.TextDetailSettingsCell in project Telegram-FOSS by Telegram-FOSS-Team.

the class PaymentFormActivity method createView.

@SuppressLint({ "SetJavaScriptEnabled", "AddJavascriptInterface" })
@Override
public View createView(Context context) {
    if (currentStep == 0) {
        actionBar.setTitle(LocaleController.getString("PaymentShippingInfo", R.string.PaymentShippingInfo));
    } else if (currentStep == 1) {
        actionBar.setTitle(LocaleController.getString("PaymentShippingMethod", R.string.PaymentShippingMethod));
    } else if (currentStep == 2) {
        actionBar.setTitle(LocaleController.getString("PaymentCardInfo", R.string.PaymentCardInfo));
    } else if (currentStep == 3) {
        actionBar.setTitle(LocaleController.getString("PaymentCardInfo", R.string.PaymentCardInfo));
    } else if (currentStep == 4) {
        if (paymentForm.invoice.test) {
            actionBar.setTitle("Test " + LocaleController.getString("PaymentCheckout", R.string.PaymentCheckout));
        } else {
            actionBar.setTitle(LocaleController.getString("PaymentCheckout", R.string.PaymentCheckout));
        }
    } else if (currentStep == 5) {
        if (paymentForm.invoice.test) {
            actionBar.setTitle("Test " + LocaleController.getString("PaymentReceipt", R.string.PaymentReceipt));
        } else {
            actionBar.setTitle(LocaleController.getString("PaymentReceipt", R.string.PaymentReceipt));
        }
    } else if (currentStep == 6) {
        actionBar.setTitle(LocaleController.getString("PaymentPassword", R.string.PaymentPassword));
    }
    actionBar.setBackButtonImage(R.drawable.ic_ab_back);
    actionBar.setAllowOverlayTitle(true);
    actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() {

        @Override
        public void onItemClick(int id) {
            if (id == -1) {
                if (donePressed) {
                    return;
                }
                finishFragment();
            } else if (id == done_button) {
                if (donePressed) {
                    return;
                }
                if (currentStep != 3) {
                    AndroidUtilities.hideKeyboard(getParentActivity().getCurrentFocus());
                }
                if (currentStep == 0) {
                    setDonePressed(true);
                    sendForm();
                } else if (currentStep == 1) {
                    for (int a = 0; a < radioCells.length; a++) {
                        if (radioCells[a].isChecked()) {
                            shippingOption = requestedInfo.shipping_options.get(a);
                            break;
                        }
                    }
                    goToNextStep();
                } else if (currentStep == 2) {
                    sendCardData();
                } else if (currentStep == 3) {
                    checkPassword();
                } else if (currentStep == 6) {
                    sendSavePassword(false);
                }
            }
        }
    });
    ActionBarMenu menu = actionBar.createMenu();
    if (currentStep == 0 || currentStep == 1 || currentStep == 2 || currentStep == 3 || currentStep == 4 || currentStep == 6) {
        doneItem = menu.addItemWithWidth(done_button, R.drawable.ic_done, AndroidUtilities.dp(56), LocaleController.getString("Done", R.string.Done));
        progressView = new ContextProgressView(context, 1);
        progressView.setAlpha(0.0f);
        progressView.setScaleX(0.1f);
        progressView.setScaleY(0.1f);
        progressView.setVisibility(View.INVISIBLE);
        doneItem.addView(progressView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT));
    }
    fragmentView = new FrameLayout(context);
    FrameLayout frameLayout = (FrameLayout) fragmentView;
    fragmentView.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundGray));
    scrollView = new ScrollView(context);
    scrollView.setFillViewport(true);
    AndroidUtilities.setScrollViewEdgeEffectColor(scrollView, Theme.getColor(Theme.key_actionBarDefault));
    frameLayout.addView(scrollView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, Gravity.LEFT | Gravity.TOP, 0, 0, 0, currentStep == 4 ? 48 : 0));
    linearLayout2 = new LinearLayout(context);
    linearLayout2.setOrientation(LinearLayout.VERTICAL);
    linearLayout2.setClipChildren(false);
    scrollView.addView(linearLayout2, new ScrollView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
    if (currentStep == 0) {
        HashMap<String, String> languageMap = new HashMap<>();
        HashMap<String, String> countryMap = new HashMap<>();
        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(context.getResources().getAssets().open("countries.txt")));
            String line;
            while ((line = reader.readLine()) != null) {
                String[] args = line.split(";");
                countriesArray.add(0, args[2]);
                countriesMap.put(args[2], args[0]);
                codesMap.put(args[0], args[2]);
                countryMap.put(args[1], args[2]);
                if (args.length > 3) {
                    phoneFormatMap.put(args[0], args[3]);
                }
                languageMap.put(args[1], args[2]);
            }
            reader.close();
        } catch (Exception e) {
            FileLog.e(e);
        }
        Collections.sort(countriesArray, String::compareTo);
        inputFields = new EditTextBoldCursor[FIELDS_COUNT_ADDRESS];
        for (int a = 0; a < FIELDS_COUNT_ADDRESS; a++) {
            if (a == FIELD_STREET1) {
                headerCell[0] = new HeaderCell(context);
                headerCell[0].setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite));
                headerCell[0].setText(LocaleController.getString("PaymentShippingAddress", R.string.PaymentShippingAddress));
                linearLayout2.addView(headerCell[0], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
            } else if (a == FIELD_NAME) {
                sectionCell[0] = new ShadowSectionCell(context);
                linearLayout2.addView(sectionCell[0], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
                headerCell[1] = new HeaderCell(context);
                headerCell[1].setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite));
                headerCell[1].setText(LocaleController.getString("PaymentShippingReceiver", R.string.PaymentShippingReceiver));
                linearLayout2.addView(headerCell[1], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
            }
            ViewGroup container;
            if (a == FIELD_PHONECODE) {
                container = new LinearLayout(context);
                container.setClipChildren(false);
                ((LinearLayout) container).setOrientation(LinearLayout.HORIZONTAL);
                linearLayout2.addView(container, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 50));
                container.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite));
            } else if (a == FIELD_PHONE) {
                container = (ViewGroup) inputFields[FIELD_PHONECODE].getParent();
            } else {
                container = new FrameLayout(context);
                container.setClipChildren(false);
                linearLayout2.addView(container, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 50));
                container.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite));
                boolean allowDivider = a != FIELD_POSTCODE;
                if (allowDivider) {
                    if (a == FIELD_EMAIL && !paymentForm.invoice.phone_requested) {
                        allowDivider = false;
                    } else if (a == FIELD_NAME && !paymentForm.invoice.phone_requested && !paymentForm.invoice.email_requested) {
                        allowDivider = false;
                    }
                }
                if (allowDivider) {
                    View divider = new View(context) {

                        @Override
                        protected void onDraw(Canvas canvas) {
                            canvas.drawLine(LocaleController.isRTL ? 0 : AndroidUtilities.dp(20), getMeasuredHeight() - 1, getMeasuredWidth() - (LocaleController.isRTL ? AndroidUtilities.dp(20) : 0), getMeasuredHeight() - 1, Theme.dividerPaint);
                        }
                    };
                    divider.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite));
                    dividers.add(divider);
                    container.addView(divider, new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 1, Gravity.LEFT | Gravity.BOTTOM));
                }
            }
            if (a == FIELD_PHONE) {
                inputFields[a] = new HintEditText(context);
            } else {
                inputFields[a] = new EditTextBoldCursor(context);
            }
            inputFields[a].setTag(a);
            inputFields[a].setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16);
            inputFields[a].setHintTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteHintText));
            inputFields[a].setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText));
            inputFields[a].setBackgroundDrawable(null);
            inputFields[a].setCursorColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText));
            inputFields[a].setCursorSize(AndroidUtilities.dp(20));
            inputFields[a].setCursorWidth(1.5f);
            if (a == FIELD_COUNTRY) {
                inputFields[a].setOnTouchListener((v, event) -> {
                    if (getParentActivity() == null) {
                        return false;
                    }
                    if (event.getAction() == MotionEvent.ACTION_UP) {
                        CountrySelectActivity fragment = new CountrySelectActivity(false);
                        fragment.setCountrySelectActivityDelegate((country) -> {
                            inputFields[FIELD_COUNTRY].setText(country.name);
                            countryName = country.shortname;
                        });
                        presentFragment(fragment);
                    }
                    return true;
                });
                inputFields[a].setInputType(0);
            }
            if (a == FIELD_PHONE || a == FIELD_PHONECODE) {
                inputFields[a].setInputType(InputType.TYPE_CLASS_PHONE);
            } else if (a == FIELD_EMAIL) {
                inputFields[a].setInputType(InputType.TYPE_CLASS_TEXT);
            } else {
                inputFields[a].setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);
            }
            inputFields[a].setImeOptions(EditorInfo.IME_ACTION_NEXT | EditorInfo.IME_FLAG_NO_EXTRACT_UI);
            switch(a) {
                case FIELD_NAME:
                    inputFields[a].setHint(LocaleController.getString("PaymentShippingName", R.string.PaymentShippingName));
                    if (paymentForm.saved_info != null && paymentForm.saved_info.name != null) {
                        inputFields[a].setText(paymentForm.saved_info.name);
                    }
                    break;
                case FIELD_EMAIL:
                    inputFields[a].setHint(LocaleController.getString("PaymentShippingEmailPlaceholder", R.string.PaymentShippingEmailPlaceholder));
                    if (paymentForm.saved_info != null && paymentForm.saved_info.email != null) {
                        inputFields[a].setText(paymentForm.saved_info.email);
                    }
                    break;
                case FIELD_STREET1:
                    inputFields[a].setHint(LocaleController.getString("PaymentShippingAddress1Placeholder", R.string.PaymentShippingAddress1Placeholder));
                    if (paymentForm.saved_info != null && paymentForm.saved_info.shipping_address != null) {
                        inputFields[a].setText(paymentForm.saved_info.shipping_address.street_line1);
                    }
                    break;
                case FIELD_STREET2:
                    inputFields[a].setHint(LocaleController.getString("PaymentShippingAddress2Placeholder", R.string.PaymentShippingAddress2Placeholder));
                    if (paymentForm.saved_info != null && paymentForm.saved_info.shipping_address != null) {
                        inputFields[a].setText(paymentForm.saved_info.shipping_address.street_line2);
                    }
                    break;
                case FIELD_CITY:
                    inputFields[a].setHint(LocaleController.getString("PaymentShippingCityPlaceholder", R.string.PaymentShippingCityPlaceholder));
                    if (paymentForm.saved_info != null && paymentForm.saved_info.shipping_address != null) {
                        inputFields[a].setText(paymentForm.saved_info.shipping_address.city);
                    }
                    break;
                case FIELD_STATE:
                    inputFields[a].setHint(LocaleController.getString("PaymentShippingStatePlaceholder", R.string.PaymentShippingStatePlaceholder));
                    if (paymentForm.saved_info != null && paymentForm.saved_info.shipping_address != null) {
                        inputFields[a].setText(paymentForm.saved_info.shipping_address.state);
                    }
                    break;
                case FIELD_COUNTRY:
                    inputFields[a].setHint(LocaleController.getString("PaymentShippingCountry", R.string.PaymentShippingCountry));
                    if (paymentForm.saved_info != null && paymentForm.saved_info.shipping_address != null) {
                        String value = countryMap.get(paymentForm.saved_info.shipping_address.country_iso2);
                        countryName = paymentForm.saved_info.shipping_address.country_iso2;
                        inputFields[a].setText(value != null ? value : countryName);
                    }
                    break;
                case FIELD_POSTCODE:
                    inputFields[a].setHint(LocaleController.getString("PaymentShippingZipPlaceholder", R.string.PaymentShippingZipPlaceholder));
                    if (paymentForm.saved_info != null && paymentForm.saved_info.shipping_address != null) {
                        inputFields[a].setText(paymentForm.saved_info.shipping_address.post_code);
                    }
                    break;
            }
            inputFields[a].setSelection(inputFields[a].length());
            if (a == FIELD_PHONECODE) {
                textView = new TextView(context);
                textView.setText("+");
                textView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText));
                textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16);
                container.addView(textView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, 21, 12, 0, 6));
                inputFields[a].setPadding(AndroidUtilities.dp(10), 0, 0, 0);
                inputFields[a].setGravity(Gravity.LEFT | Gravity.CENTER_VERTICAL);
                InputFilter[] inputFilters = new InputFilter[1];
                inputFilters[0] = new InputFilter.LengthFilter(5);
                inputFields[a].setFilters(inputFilters);
                container.addView(inputFields[a], LayoutHelper.createLinear(55, LayoutHelper.WRAP_CONTENT, 0, 12, 21, 6));
                inputFields[a].addTextChangedListener(new TextWatcher() {

                    @Override
                    public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) {
                    }

                    @Override
                    public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) {
                    }

                    @Override
                    public void afterTextChanged(Editable editable) {
                        if (ignoreOnTextChange) {
                            return;
                        }
                        ignoreOnTextChange = true;
                        String text = PhoneFormat.stripExceptNumbers(inputFields[FIELD_PHONECODE].getText().toString());
                        inputFields[FIELD_PHONECODE].setText(text);
                        HintEditText phoneField = (HintEditText) inputFields[FIELD_PHONE];
                        if (text.length() == 0) {
                            phoneField.setHintText(null);
                            phoneField.setHint(LocaleController.getString("PaymentShippingPhoneNumber", R.string.PaymentShippingPhoneNumber));
                        } else {
                            String country;
                            boolean ok = false;
                            String textToSet = null;
                            if (text.length() > 4) {
                                for (int a = 4; a >= 1; a--) {
                                    String sub = text.substring(0, a);
                                    country = codesMap.get(sub);
                                    if (country != null) {
                                        ok = true;
                                        textToSet = text.substring(a) + inputFields[FIELD_PHONE].getText().toString();
                                        inputFields[FIELD_PHONECODE].setText(text = sub);
                                        break;
                                    }
                                }
                                if (!ok) {
                                    textToSet = text.substring(1) + inputFields[FIELD_PHONE].getText().toString();
                                    inputFields[FIELD_PHONECODE].setText(text = text.substring(0, 1));
                                }
                            }
                            country = codesMap.get(text);
                            boolean set = false;
                            if (country != null) {
                                int index = countriesArray.indexOf(country);
                                if (index != -1) {
                                    String hint = phoneFormatMap.get(text);
                                    if (hint != null) {
                                        set = true;
                                        phoneField.setHintText(hint.replace('X', '–'));
                                        phoneField.setHint(null);
                                    }
                                }
                            }
                            if (!set) {
                                phoneField.setHintText(null);
                                phoneField.setHint(LocaleController.getString("PaymentShippingPhoneNumber", R.string.PaymentShippingPhoneNumber));
                            }
                            if (!ok) {
                                inputFields[FIELD_PHONECODE].setSelection(inputFields[FIELD_PHONECODE].getText().length());
                            }
                            if (textToSet != null) {
                                phoneField.requestFocus();
                                phoneField.setText(textToSet);
                                phoneField.setSelection(phoneField.length());
                            }
                        }
                        ignoreOnTextChange = false;
                    }
                });
            } else if (a == FIELD_PHONE) {
                inputFields[a].setPadding(0, 0, 0, 0);
                inputFields[a].setGravity(Gravity.LEFT | Gravity.CENTER_VERTICAL);
                container.addView(inputFields[a], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, 0, 12, 21, 6));
                inputFields[a].addTextChangedListener(new TextWatcher() {

                    private int characterAction = -1;

                    private int actionPosition;

                    @Override
                    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                        if (count == 0 && after == 1) {
                            characterAction = 1;
                        } else if (count == 1 && after == 0) {
                            if (s.charAt(start) == ' ' && start > 0) {
                                characterAction = 3;
                                actionPosition = start - 1;
                            } else {
                                characterAction = 2;
                            }
                        } else {
                            characterAction = -1;
                        }
                    }

                    @Override
                    public void onTextChanged(CharSequence s, int start, int before, int count) {
                    }

                    @Override
                    public void afterTextChanged(Editable s) {
                        if (ignoreOnPhoneChange) {
                            return;
                        }
                        HintEditText phoneField = (HintEditText) inputFields[FIELD_PHONE];
                        int start = phoneField.getSelectionStart();
                        String phoneChars = "0123456789";
                        String str = phoneField.getText().toString();
                        if (characterAction == 3) {
                            str = str.substring(0, actionPosition) + str.substring(actionPosition + 1);
                            start--;
                        }
                        StringBuilder builder = new StringBuilder(str.length());
                        for (int a = 0; a < str.length(); a++) {
                            String ch = str.substring(a, a + 1);
                            if (phoneChars.contains(ch)) {
                                builder.append(ch);
                            }
                        }
                        ignoreOnPhoneChange = true;
                        String hint = phoneField.getHintText();
                        if (hint != null) {
                            for (int a = 0; a < builder.length(); a++) {
                                if (a < hint.length()) {
                                    if (hint.charAt(a) == ' ') {
                                        builder.insert(a, ' ');
                                        a++;
                                        if (start == a && characterAction != 2 && characterAction != 3) {
                                            start++;
                                        }
                                    }
                                } else {
                                    builder.insert(a, ' ');
                                    if (start == a + 1 && characterAction != 2 && characterAction != 3) {
                                        start++;
                                    }
                                    break;
                                }
                            }
                        }
                        phoneField.setText(builder);
                        if (start >= 0) {
                            phoneField.setSelection(Math.min(start, phoneField.length()));
                        }
                        phoneField.onTextChange();
                        ignoreOnPhoneChange = false;
                    }
                });
            } else {
                inputFields[a].setPadding(0, 0, 0, AndroidUtilities.dp(6));
                inputFields[a].setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT);
                container.addView(inputFields[a], LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.LEFT | Gravity.TOP, 21, 12, 21, 6));
            }
            inputFields[a].setOnEditorActionListener((textView, i, keyEvent) -> {
                if (i == EditorInfo.IME_ACTION_NEXT) {
                    int num = (Integer) textView.getTag();
                    while (num + 1 < inputFields.length) {
                        num++;
                        if (num != FIELD_COUNTRY && ((View) inputFields[num].getParent()).getVisibility() == View.VISIBLE) {
                            inputFields[num].requestFocus();
                            break;
                        }
                    }
                    return true;
                } else if (i == EditorInfo.IME_ACTION_DONE) {
                    doneItem.performClick();
                    return true;
                }
                return false;
            });
            if (a == FIELD_PHONE) {
                if (paymentForm.invoice.email_to_provider || paymentForm.invoice.phone_to_provider) {
                    TLRPC.User providerUser = null;
                    for (int b = 0; b < paymentForm.users.size(); b++) {
                        TLRPC.User user = paymentForm.users.get(b);
                        if (user.id == paymentForm.provider_id) {
                            providerUser = user;
                        }
                    }
                    final String providerName;
                    if (providerUser != null) {
                        providerName = ContactsController.formatName(providerUser.first_name, providerUser.last_name);
                    } else {
                        providerName = "";
                    }
                    bottomCell[1] = new TextInfoPrivacyCell(context);
                    bottomCell[1].setBackgroundDrawable(Theme.getThemedDrawable(context, R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow));
                    linearLayout2.addView(bottomCell[1], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
                    if (paymentForm.invoice.email_to_provider && paymentForm.invoice.phone_to_provider) {
                        bottomCell[1].setText(LocaleController.formatString("PaymentPhoneEmailToProvider", R.string.PaymentPhoneEmailToProvider, providerName));
                    } else if (paymentForm.invoice.email_to_provider) {
                        bottomCell[1].setText(LocaleController.formatString("PaymentEmailToProvider", R.string.PaymentEmailToProvider, providerName));
                    } else {
                        bottomCell[1].setText(LocaleController.formatString("PaymentPhoneToProvider", R.string.PaymentPhoneToProvider, providerName));
                    }
                } else {
                    sectionCell[1] = new ShadowSectionCell(context);
                    linearLayout2.addView(sectionCell[1], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
                }
                checkCell1 = new TextCheckCell(context);
                checkCell1.setBackgroundDrawable(Theme.getSelectorDrawable(true));
                checkCell1.setTextAndCheck(LocaleController.getString("PaymentShippingSave", R.string.PaymentShippingSave), saveShippingInfo, false);
                linearLayout2.addView(checkCell1, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
                checkCell1.setOnClickListener(v -> {
                    saveShippingInfo = !saveShippingInfo;
                    checkCell1.setChecked(saveShippingInfo);
                });
                bottomCell[0] = new TextInfoPrivacyCell(context);
                bottomCell[0].setBackgroundDrawable(Theme.getThemedDrawable(context, R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow));
                bottomCell[0].setText(LocaleController.getString("PaymentShippingSaveInfo", R.string.PaymentShippingSaveInfo));
                linearLayout2.addView(bottomCell[0], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
            }
        }
        if (!paymentForm.invoice.name_requested) {
            ((ViewGroup) inputFields[FIELD_NAME].getParent()).setVisibility(View.GONE);
        }
        if (!paymentForm.invoice.phone_requested) {
            ((ViewGroup) inputFields[FIELD_PHONECODE].getParent()).setVisibility(View.GONE);
        }
        if (!paymentForm.invoice.email_requested) {
            ((ViewGroup) inputFields[FIELD_EMAIL].getParent()).setVisibility(View.GONE);
        }
        if (paymentForm.invoice.phone_requested) {
            inputFields[FIELD_PHONE].setImeOptions(EditorInfo.IME_ACTION_DONE | EditorInfo.IME_FLAG_NO_EXTRACT_UI);
        } else if (paymentForm.invoice.email_requested) {
            inputFields[FIELD_EMAIL].setImeOptions(EditorInfo.IME_ACTION_DONE | EditorInfo.IME_FLAG_NO_EXTRACT_UI);
        } else if (paymentForm.invoice.name_requested) {
            inputFields[FIELD_NAME].setImeOptions(EditorInfo.IME_ACTION_DONE | EditorInfo.IME_FLAG_NO_EXTRACT_UI);
        } else {
            inputFields[FIELD_POSTCODE].setImeOptions(EditorInfo.IME_ACTION_DONE | EditorInfo.IME_FLAG_NO_EXTRACT_UI);
        }
        if (sectionCell[1] != null) {
            sectionCell[1].setVisibility(paymentForm.invoice.name_requested || paymentForm.invoice.phone_requested || paymentForm.invoice.email_requested ? View.VISIBLE : View.GONE);
        } else if (bottomCell[1] != null) {
            bottomCell[1].setVisibility(paymentForm.invoice.name_requested || paymentForm.invoice.phone_requested || paymentForm.invoice.email_requested ? View.VISIBLE : View.GONE);
        }
        headerCell[1].setVisibility(paymentForm.invoice.name_requested || paymentForm.invoice.phone_requested || paymentForm.invoice.email_requested ? View.VISIBLE : View.GONE);
        if (!paymentForm.invoice.shipping_address_requested) {
            headerCell[0].setVisibility(View.GONE);
            sectionCell[0].setVisibility(View.GONE);
            ((ViewGroup) inputFields[FIELD_STREET1].getParent()).setVisibility(View.GONE);
            ((ViewGroup) inputFields[FIELD_STREET2].getParent()).setVisibility(View.GONE);
            ((ViewGroup) inputFields[FIELD_CITY].getParent()).setVisibility(View.GONE);
            ((ViewGroup) inputFields[FIELD_STATE].getParent()).setVisibility(View.GONE);
            ((ViewGroup) inputFields[FIELD_COUNTRY].getParent()).setVisibility(View.GONE);
            ((ViewGroup) inputFields[FIELD_POSTCODE].getParent()).setVisibility(View.GONE);
        }
        if (paymentForm.saved_info != null && !TextUtils.isEmpty(paymentForm.saved_info.phone)) {
            fillNumber(paymentForm.saved_info.phone);
        } else {
            fillNumber(null);
        }
        if (inputFields[FIELD_PHONECODE].length() == 0 && (paymentForm.invoice.phone_requested && (paymentForm.saved_info == null || TextUtils.isEmpty(paymentForm.saved_info.phone)))) {
            String country = null;
            try {
                TelephonyManager telephonyManager = (TelephonyManager) ApplicationLoader.applicationContext.getSystemService(Context.TELEPHONY_SERVICE);
                if (telephonyManager != null) {
                    country = telephonyManager.getSimCountryIso().toUpperCase();
                }
            } catch (Exception e) {
                FileLog.e(e);
            }
            if (country != null) {
                String countryName = languageMap.get(country);
                if (countryName != null) {
                    int index = countriesArray.indexOf(countryName);
                    if (index != -1) {
                        inputFields[FIELD_PHONECODE].setText(countriesMap.get(countryName));
                    }
                }
            }
        }
    } else if (currentStep == 2) {
        if (paymentForm.native_params != null) {
            try {
                JSONObject jsonObject = new JSONObject(paymentForm.native_params.data);
                String googlePayKey = jsonObject.optString("google_pay_public_key");
                if (!TextUtils.isEmpty(googlePayKey)) {
                    googlePayPublicKey = googlePayKey;
                }
                googlePayCountryCode = jsonObject.optString("acquirer_bank_country");
                googlePayParameters = jsonObject.optJSONObject("gpay_parameters");
            } catch (Exception e) {
                FileLog.e(e);
            }
        }
        if (isWebView) {
            if (googlePayPublicKey != null || googlePayParameters != null) {
                initGooglePay(context);
            }
            createGooglePayButton(context);
            linearLayout2.addView(googlePayContainer, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 50));
            webviewLoading = true;
            showEditDoneProgress(true, true);
            progressView.setVisibility(View.VISIBLE);
            doneItem.setEnabled(false);
            doneItem.getContentView().setVisibility(View.INVISIBLE);
            webView = new WebView(context) {

                @Override
                public boolean onTouchEvent(MotionEvent event) {
                    ((ViewGroup) fragmentView).requestDisallowInterceptTouchEvent(true);
                    return super.onTouchEvent(event);
                }

                @Override
                protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
                    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
                }
            };
            webView.getSettings().setJavaScriptEnabled(true);
            webView.getSettings().setDomStorageEnabled(true);
            if (Build.VERSION.SDK_INT >= 21) {
                webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
                CookieManager cookieManager = CookieManager.getInstance();
                cookieManager.setAcceptThirdPartyCookies(webView, true);
            }
            if (Build.VERSION.SDK_INT >= 17) {
                webView.addJavascriptInterface(new TelegramWebviewProxy(), "TelegramWebviewProxy");
            }
            webView.setWebViewClient(new WebViewClient() {

                @Override
                public void onLoadResource(WebView view, String url) {
                    super.onLoadResource(view, url);
                }

                @Override
                public boolean shouldOverrideUrlLoading(WebView view, String url) {
                    shouldNavigateBack = !url.equals(webViewUrl);
                    return super.shouldOverrideUrlLoading(view, url);
                }

                @Override
                public void onPageFinished(WebView view, String url) {
                    super.onPageFinished(view, url);
                    webviewLoading = false;
                    showEditDoneProgress(true, false);
                    updateSavePaymentField();
                }
            });
            linearLayout2.addView(webView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
            sectionCell[2] = new ShadowSectionCell(context);
            linearLayout2.addView(sectionCell[2], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
            checkCell1 = new TextCheckCell(context);
            checkCell1.setBackgroundDrawable(Theme.getSelectorDrawable(true));
            checkCell1.setTextAndCheck(LocaleController.getString("PaymentCardSavePaymentInformation", R.string.PaymentCardSavePaymentInformation), saveCardInfo, false);
            linearLayout2.addView(checkCell1, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
            checkCell1.setOnClickListener(v -> {
                saveCardInfo = !saveCardInfo;
                checkCell1.setChecked(saveCardInfo);
            });
            bottomCell[0] = new TextInfoPrivacyCell(context);
            bottomCell[0].setBackgroundDrawable(Theme.getThemedDrawable(context, R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow));
            updateSavePaymentField();
            linearLayout2.addView(bottomCell[0], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
        } else {
            if (paymentForm.native_params != null) {
                try {
                    JSONObject jsonObject = new JSONObject(paymentForm.native_params.data);
                    try {
                        need_card_country = jsonObject.getBoolean("need_country");
                    } catch (Exception e) {
                        need_card_country = false;
                    }
                    try {
                        need_card_postcode = jsonObject.getBoolean("need_zip");
                    } catch (Exception e) {
                        need_card_postcode = false;
                    }
                    try {
                        need_card_name = jsonObject.getBoolean("need_cardholder_name");
                    } catch (Exception e) {
                        need_card_name = false;
                    }
                    if (jsonObject.has("public_token")) {
                        providerApiKey = jsonObject.getString("public_token");
                    } else {
                        try {
                            providerApiKey = jsonObject.getString("publishable_key");
                        } catch (Exception e) {
                            providerApiKey = "";
                        }
                    }
                    initGooglePay = !jsonObject.optBoolean("google_pay_hidden", false);
                } catch (Exception e) {
                    FileLog.e(e);
                }
            }
            if (initGooglePay && (!TextUtils.isEmpty(providerApiKey) && "stripe".equals(paymentForm.native_provider) || googlePayParameters != null)) {
                initGooglePay(context);
            }
            inputFields = new EditTextBoldCursor[FIELDS_COUNT_CARD];
            for (int a = 0; a < FIELDS_COUNT_CARD; a++) {
                if (a == FIELD_CARD) {
                    headerCell[0] = new HeaderCell(context);
                    headerCell[0].setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite));
                    headerCell[0].setText(LocaleController.getString("PaymentCardTitle", R.string.PaymentCardTitle));
                    linearLayout2.addView(headerCell[0], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
                } else if (a == FIELD_CARD_COUNTRY) {
                    headerCell[1] = new HeaderCell(context);
                    headerCell[1].setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite));
                    headerCell[1].setText(LocaleController.getString("PaymentBillingAddress", R.string.PaymentBillingAddress));
                    linearLayout2.addView(headerCell[1], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
                }
                boolean allowDivider = a != FIELD_CVV && a != FIELD_CARD_POSTCODE && !(a == FIELD_CARD_COUNTRY && !need_card_postcode);
                ViewGroup container = new FrameLayout(context);
                container.setClipChildren(false);
                container.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite));
                linearLayout2.addView(container, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 50));
                View.OnTouchListener onTouchListener = null;
                inputFields[a] = new EditTextBoldCursor(context);
                inputFields[a].setTag(a);
                inputFields[a].setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16);
                inputFields[a].setHintTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteHintText));
                inputFields[a].setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText));
                inputFields[a].setBackgroundDrawable(null);
                inputFields[a].setCursorColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText));
                inputFields[a].setCursorSize(AndroidUtilities.dp(20));
                inputFields[a].setCursorWidth(1.5f);
                if (a == FIELD_CVV) {
                    InputFilter[] inputFilters = new InputFilter[1];
                    inputFilters[0] = new InputFilter.LengthFilter(3);
                    inputFields[a].setFilters(inputFilters);
                    inputFields[a].setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_TEXT_VARIATION_PASSWORD);
                    inputFields[a].setTypeface(Typeface.DEFAULT);
                    inputFields[a].setTransformationMethod(PasswordTransformationMethod.getInstance());
                } else if (a == FIELD_CARD) {
                    inputFields[a].setInputType(InputType.TYPE_CLASS_PHONE);
                } else if (a == FIELD_CARD_COUNTRY) {
                    inputFields[a].setOnTouchListener((v, event) -> {
                        if (getParentActivity() == null) {
                            return false;
                        }
                        if (event.getAction() == MotionEvent.ACTION_UP) {
                            CountrySelectActivity fragment = new CountrySelectActivity(false);
                            fragment.setCountrySelectActivityDelegate((country) -> inputFields[FIELD_CARD_COUNTRY].setText(country.name));
                            presentFragment(fragment);
                        }
                        return true;
                    });
                    inputFields[a].setInputType(0);
                } else if (a == FIELD_EXPIRE_DATE) {
                    inputFields[a].setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);
                } else if (a == FIELD_CARDNAME) {
                    inputFields[a].setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS);
                } else {
                    inputFields[a].setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);
                }
                inputFields[a].setImeOptions(EditorInfo.IME_ACTION_NEXT | EditorInfo.IME_FLAG_NO_EXTRACT_UI);
                switch(a) {
                    case FIELD_CARD:
                        inputFields[a].setHint(LocaleController.getString("PaymentCardNumber", R.string.PaymentCardNumber));
                        break;
                    case FIELD_CVV:
                        inputFields[a].setHint(LocaleController.getString("PaymentCardCvv", R.string.PaymentCardCvv));
                        break;
                    case FIELD_EXPIRE_DATE:
                        inputFields[a].setHint(LocaleController.getString("PaymentCardExpireDate", R.string.PaymentCardExpireDate));
                        break;
                    case FIELD_CARDNAME:
                        inputFields[a].setHint(LocaleController.getString("PaymentCardName", R.string.PaymentCardName));
                        break;
                    case FIELD_CARD_POSTCODE:
                        inputFields[a].setHint(LocaleController.getString("PaymentShippingZipPlaceholder", R.string.PaymentShippingZipPlaceholder));
                        break;
                    case FIELD_CARD_COUNTRY:
                        inputFields[a].setHint(LocaleController.getString("PaymentShippingCountry", R.string.PaymentShippingCountry));
                        break;
                }
                if (a == FIELD_CARD) {
                    inputFields[a].addTextChangedListener(new TextWatcher() {

                        public final String[] PREFIXES_15 = { "34", "37" };

                        public final String[] PREFIXES_14 = { "300", "301", "302", "303", "304", "305", "309", "36", "38", "39" };

                        public final String[] PREFIXES_16 = { "2221", "2222", "2223", "2224", "2225", "2226", "2227", "2228", "2229", "223", "224", "225", "226", "227", "228", "229", "23", "24", "25", "26", "270", "271", "2720", "50", "51", "52", "53", "54", "55", "4", "60", "62", "64", "65", "35" };

                        public static final int MAX_LENGTH_STANDARD = 16;

                        public static final int MAX_LENGTH_AMERICAN_EXPRESS = 15;

                        public static final int MAX_LENGTH_DINERS_CLUB = 14;

                        private int characterAction = -1;

                        private int actionPosition;

                        @Override
                        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                            if (count == 0 && after == 1) {
                                characterAction = 1;
                            } else if (count == 1 && after == 0) {
                                if (s.charAt(start) == ' ' && start > 0) {
                                    characterAction = 3;
                                    actionPosition = start - 1;
                                } else {
                                    characterAction = 2;
                                }
                            } else {
                                characterAction = -1;
                            }
                        }

                        @Override
                        public void onTextChanged(CharSequence s, int start, int before, int count) {
                        }

                        @Override
                        public void afterTextChanged(Editable editable) {
                            if (ignoreOnCardChange) {
                                return;
                            }
                            EditText phoneField = inputFields[FIELD_CARD];
                            int start = phoneField.getSelectionStart();
                            String phoneChars = "0123456789";
                            String str = phoneField.getText().toString();
                            if (characterAction == 3) {
                                str = str.substring(0, actionPosition) + str.substring(actionPosition + 1);
                                start--;
                            }
                            StringBuilder builder = new StringBuilder(str.length());
                            for (int a = 0; a < str.length(); a++) {
                                String ch = str.substring(a, a + 1);
                                if (phoneChars.contains(ch)) {
                                    builder.append(ch);
                                }
                            }
                            ignoreOnCardChange = true;
                            String hint = null;
                            int maxLength = 100;
                            if (builder.length() > 0) {
                                String currentString = builder.toString();
                                for (int a = 0; a < 3; a++) {
                                    String[] checkArr;
                                    String resultHint;
                                    int resultMaxLength;
                                    switch(a) {
                                        case 0:
                                            checkArr = PREFIXES_16;
                                            resultMaxLength = 16;
                                            resultHint = "xxxx xxxx xxxx xxxx";
                                            break;
                                        case 1:
                                            checkArr = PREFIXES_15;
                                            resultMaxLength = 15;
                                            resultHint = "xxxx xxxx xxxx xxx";
                                            break;
                                        case 2:
                                        default:
                                            checkArr = PREFIXES_14;
                                            resultMaxLength = 14;
                                            resultHint = "xxxx xxxx xxxx xx";
                                            break;
                                    }
                                    for (int b = 0; b < checkArr.length; b++) {
                                        String prefix = checkArr[b];
                                        if (currentString.length() <= prefix.length()) {
                                            if (prefix.startsWith(currentString)) {
                                                hint = resultHint;
                                                maxLength = resultMaxLength;
                                                break;
                                            }
                                        } else {
                                            if (currentString.startsWith(prefix)) {
                                                hint = resultHint;
                                                maxLength = resultMaxLength;
                                                break;
                                            }
                                        }
                                    }
                                    if (hint != null) {
                                        break;
                                    }
                                }
                                if (builder.length() > maxLength) {
                                    builder.setLength(maxLength);
                                }
                            }
                            if (hint != null) {
                                if (builder.length() == maxLength) {
                                    inputFields[FIELD_EXPIRE_DATE].requestFocus();
                                }
                                phoneField.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText));
                                for (int a = 0; a < builder.length(); a++) {
                                    if (a < hint.length()) {
                                        if (hint.charAt(a) == ' ') {
                                            builder.insert(a, ' ');
                                            a++;
                                            if (start == a && characterAction != 2 && characterAction != 3) {
                                                start++;
                                            }
                                        }
                                    } else {
                                        builder.insert(a, ' ');
                                        if (start == a + 1 && characterAction != 2 && characterAction != 3) {
                                            start++;
                                        }
                                        break;
                                    }
                                }
                            } else {
                                phoneField.setTextColor(builder.length() > 0 ? Theme.getColor(Theme.key_windowBackgroundWhiteRedText4) : Theme.getColor(Theme.key_windowBackgroundWhiteBlackText));
                            }
                            if (!builder.toString().equals(editable.toString())) {
                                editable.replace(0, editable.length(), builder);
                            }
                            if (start >= 0) {
                                phoneField.setSelection(Math.min(start, phoneField.length()));
                            }
                            ignoreOnCardChange = false;
                        }
                    });
                } else if (a == FIELD_EXPIRE_DATE) {
                    inputFields[a].addTextChangedListener(new TextWatcher() {

                        private int characterAction = -1;

                        private boolean isYear;

                        private int actionPosition;

                        @Override
                        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                            if (count == 0 && after == 1) {
                                isYear = TextUtils.indexOf(inputFields[FIELD_EXPIRE_DATE].getText(), '/') != -1;
                                characterAction = 1;
                            } else if (count == 1 && after == 0) {
                                if (s.charAt(start) == '/' && start > 0) {
                                    isYear = false;
                                    characterAction = 3;
                                    actionPosition = start - 1;
                                } else {
                                    characterAction = 2;
                                }
                            } else {
                                characterAction = -1;
                            }
                        }

                        @Override
                        public void onTextChanged(CharSequence s, int start, int before, int count) {
                        }

                        @Override
                        public void afterTextChanged(Editable s) {
                            if (ignoreOnCardChange) {
                                return;
                            }
                            EditText phoneField = inputFields[FIELD_EXPIRE_DATE];
                            int start = phoneField.getSelectionStart();
                            String phoneChars = "0123456789";
                            String str = phoneField.getText().toString();
                            if (characterAction == 3) {
                                str = str.substring(0, actionPosition) + str.substring(actionPosition + 1);
                                start--;
                            }
                            StringBuilder builder = new StringBuilder(str.length());
                            for (int a = 0; a < str.length(); a++) {
                                String ch = str.substring(a, a + 1);
                                if (phoneChars.contains(ch)) {
                                    builder.append(ch);
                                }
                            }
                            ignoreOnCardChange = true;
                            inputFields[FIELD_EXPIRE_DATE].setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText));
                            if (builder.length() > 4) {
                                builder.setLength(4);
                            }
                            if (builder.length() < 2) {
                                isYear = false;
                            }
                            boolean isError = false;
                            if (isYear) {
                                String[] args = new String[builder.length() > 2 ? 2 : 1];
                                args[0] = builder.substring(0, 2);
                                if (args.length == 2) {
                                    args[1] = builder.substring(2);
                                }
                                if (builder.length() == 4 && args.length == 2) {
                                    int month = Utilities.parseInt(args[0]);
                                    int year = Utilities.parseInt(args[1]) + 2000;
                                    Calendar rightNow = Calendar.getInstance();
                                    int currentYear = rightNow.get(Calendar.YEAR);
                                    int currentMonth = rightNow.get(Calendar.MONTH) + 1;
                                    if (year < currentYear || year == currentYear && month < currentMonth) {
                                        inputFields[FIELD_EXPIRE_DATE].setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteRedText4));
                                        isError = true;
                                    }
                                } else {
                                    int value = Utilities.parseInt(args[0]);
                                    if (value > 12 || value == 0) {
                                        inputFields[FIELD_EXPIRE_DATE].setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteRedText4));
                                        isError = true;
                                    }
                                }
                            } else {
                                if (builder.length() == 1) {
                                    int value = Utilities.parseInt(builder.toString());
                                    if (value != 1 && value != 0) {
                                        builder.insert(0, "0");
                                        start++;
                                    }
                                } else if (builder.length() == 2) {
                                    int value = Utilities.parseInt(builder.toString());
                                    if (value > 12 || value == 0) {
                                        inputFields[FIELD_EXPIRE_DATE].setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteRedText4));
                                        isError = true;
                                    }
                                    start++;
                                }
                            }
                            if (!isError && builder.length() == 4) {
                                inputFields[need_card_name ? FIELD_CARDNAME : FIELD_CVV].requestFocus();
                            }
                            if (builder.length() == 2) {
                                builder.append('/');
                                start++;
                            } else if (builder.length() > 2 && builder.charAt(2) != '/') {
                                builder.insert(2, '/');
                                start++;
                            }
                            phoneField.setText(builder);
                            if (start >= 0) {
                                phoneField.setSelection(Math.min(start, phoneField.length()));
                            }
                            ignoreOnCardChange = false;
                        }
                    });
                }
                inputFields[a].setPadding(0, 0, 0, AndroidUtilities.dp(6));
                inputFields[a].setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT);
                container.addView(inputFields[a], LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.LEFT | Gravity.TOP, 21, 12, 21, 6));
                inputFields[a].setOnEditorActionListener((textView, i, keyEvent) -> {
                    if (i == EditorInfo.IME_ACTION_NEXT) {
                        int num = (Integer) textView.getTag();
                        while (num + 1 < inputFields.length) {
                            num++;
                            if (num == FIELD_CARD_COUNTRY) {
                                num++;
                            }
                            if (((View) inputFields[num].getParent()).getVisibility() == View.VISIBLE) {
                                inputFields[num].requestFocus();
                                break;
                            }
                        }
                        return true;
                    } else if (i == EditorInfo.IME_ACTION_DONE) {
                        doneItem.performClick();
                        return true;
                    }
                    return false;
                });
                if (a == FIELD_CVV) {
                    sectionCell[0] = new ShadowSectionCell(context);
                    linearLayout2.addView(sectionCell[0], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
                } else if (a == FIELD_CARD_POSTCODE) {
                    sectionCell[2] = new ShadowSectionCell(context);
                    linearLayout2.addView(sectionCell[2], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
                    checkCell1 = new TextCheckCell(context);
                    checkCell1.setBackgroundDrawable(Theme.getSelectorDrawable(true));
                    checkCell1.setTextAndCheck(LocaleController.getString("PaymentCardSavePaymentInformation", R.string.PaymentCardSavePaymentInformation), saveCardInfo, false);
                    linearLayout2.addView(checkCell1, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
                    checkCell1.setOnClickListener(v -> {
                        saveCardInfo = !saveCardInfo;
                        checkCell1.setChecked(saveCardInfo);
                    });
                    bottomCell[0] = new TextInfoPrivacyCell(context);
                    bottomCell[0].setBackgroundDrawable(Theme.getThemedDrawable(context, R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow));
                    updateSavePaymentField();
                    linearLayout2.addView(bottomCell[0], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
                } else if (a == FIELD_CARD) {
                    createGooglePayButton(context);
                    container.addView(googlePayContainer, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_VERTICAL | (LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT), 0, 0, 4, 0));
                }
                if (allowDivider) {
                    View divider = new View(context) {

                        @Override
                        protected void onDraw(Canvas canvas) {
                            canvas.drawLine(LocaleController.isRTL ? 0 : AndroidUtilities.dp(20), getMeasuredHeight() - 1, getMeasuredWidth() - (LocaleController.isRTL ? AndroidUtilities.dp(20) : 0), getMeasuredHeight() - 1, Theme.dividerPaint);
                        }
                    };
                    divider.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite));
                    dividers.add(divider);
                    container.addView(divider, new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 1, Gravity.LEFT | Gravity.BOTTOM));
                }
                if (a == FIELD_CARD_COUNTRY && !need_card_country || a == FIELD_CARD_POSTCODE && !need_card_postcode || a == FIELD_CARDNAME && !need_card_name) {
                    container.setVisibility(View.GONE);
                }
            }
            if (!need_card_country && !need_card_postcode) {
                headerCell[1].setVisibility(View.GONE);
                sectionCell[0].setVisibility(View.GONE);
            }
            if (need_card_postcode) {
                inputFields[FIELD_CARD_POSTCODE].setImeOptions(EditorInfo.IME_ACTION_DONE | EditorInfo.IME_FLAG_NO_EXTRACT_UI);
            } else {
                inputFields[FIELD_CVV].setImeOptions(EditorInfo.IME_ACTION_DONE | EditorInfo.IME_FLAG_NO_EXTRACT_UI);
            }
        }
    } else if (currentStep == 1) {
        int count = requestedInfo.shipping_options.size();
        radioCells = new RadioCell[count];
        for (int a = 0; a < count; a++) {
            TLRPC.TL_shippingOption shippingOption = requestedInfo.shipping_options.get(a);
            radioCells[a] = new RadioCell(context);
            radioCells[a].setTag(a);
            radioCells[a].setBackgroundDrawable(Theme.getSelectorDrawable(true));
            radioCells[a].setText(String.format("%s - %s", getTotalPriceString(shippingOption.prices), shippingOption.title), a == 0, a != count - 1);
            radioCells[a].setOnClickListener(v -> {
                int num = (Integer) v.getTag();
                for (int a1 = 0; a1 < radioCells.length; a1++) {
                    radioCells[a1].setChecked(num == a1, true);
                }
            });
            linearLayout2.addView(radioCells[a]);
        }
        bottomCell[0] = new TextInfoPrivacyCell(context);
        bottomCell[0].setBackgroundDrawable(Theme.getThemedDrawable(context, R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow));
        linearLayout2.addView(bottomCell[0], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
    } else if (currentStep == 3) {
        inputFields = new EditTextBoldCursor[FIELDS_COUNT_SAVEDCARD];
        for (int a = 0; a < FIELDS_COUNT_SAVEDCARD; a++) {
            if (a == FIELD_SAVEDCARD) {
                headerCell[0] = new HeaderCell(context);
                headerCell[0].setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite));
                headerCell[0].setText(LocaleController.getString("PaymentCardTitle", R.string.PaymentCardTitle));
                linearLayout2.addView(headerCell[0], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
            }
            ViewGroup container = new FrameLayout(context);
            container.setClipChildren(false);
            linearLayout2.addView(container, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 50));
            container.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite));
            boolean allowDivider = a != FIELD_SAVEDPASSWORD;
            if (allowDivider) {
                if (a == FIELD_EMAIL && !paymentForm.invoice.phone_requested) {
                    allowDivider = false;
                } else if (a == FIELD_NAME && !paymentForm.invoice.phone_requested && !paymentForm.invoice.email_requested) {
                    allowDivider = false;
                }
            }
            if (allowDivider) {
                View divider = new View(context) {

                    @Override
                    protected void onDraw(Canvas canvas) {
                        canvas.drawLine(LocaleController.isRTL ? 0 : AndroidUtilities.dp(20), getMeasuredHeight() - 1, getMeasuredWidth() - (LocaleController.isRTL ? AndroidUtilities.dp(20) : 0), getMeasuredHeight() - 1, Theme.dividerPaint);
                    }
                };
                divider.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite));
                dividers.add(divider);
                container.addView(divider, new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 1, Gravity.LEFT | Gravity.BOTTOM));
            }
            inputFields[a] = new EditTextBoldCursor(context);
            inputFields[a].setTag(a);
            inputFields[a].setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16);
            inputFields[a].setHintTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteHintText));
            inputFields[a].setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText));
            inputFields[a].setBackgroundDrawable(null);
            inputFields[a].setCursorColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText));
            inputFields[a].setCursorSize(AndroidUtilities.dp(20));
            inputFields[a].setCursorWidth(1.5f);
            if (a == FIELD_SAVEDCARD) {
                inputFields[a].setOnTouchListener((v, event) -> true);
                inputFields[a].setInputType(0);
            } else {
                inputFields[a].setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
                inputFields[a].setTypeface(Typeface.DEFAULT);
            }
            inputFields[a].setImeOptions(EditorInfo.IME_ACTION_DONE | EditorInfo.IME_FLAG_NO_EXTRACT_UI);
            switch(a) {
                case FIELD_SAVEDCARD:
                    inputFields[a].setText(paymentForm.saved_credentials.title);
                    break;
                case FIELD_SAVEDPASSWORD:
                    inputFields[a].setHint(LocaleController.getString("LoginPassword", R.string.LoginPassword));
                    inputFields[a].requestFocus();
                    break;
            }
            inputFields[a].setPadding(0, 0, 0, AndroidUtilities.dp(6));
            inputFields[a].setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT);
            container.addView(inputFields[a], LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.LEFT | Gravity.TOP, 21, 12, 21, 6));
            inputFields[a].setOnEditorActionListener((textView, i, keyEvent) -> {
                if (i == EditorInfo.IME_ACTION_DONE) {
                    doneItem.performClick();
                    return true;
                }
                return false;
            });
            if (a == FIELD_SAVEDPASSWORD) {
                bottomCell[0] = new TextInfoPrivacyCell(context);
                bottomCell[0].setText(LocaleController.formatString("PaymentConfirmationMessage", R.string.PaymentConfirmationMessage, paymentForm.saved_credentials.title));
                bottomCell[0].setBackgroundDrawable(Theme.getThemedDrawable(context, R.drawable.greydivider, Theme.key_windowBackgroundGrayShadow));
                linearLayout2.addView(bottomCell[0], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
                settingsCell[0] = new TextSettingsCell(context);
                settingsCell[0].setBackgroundDrawable(Theme.getSelectorDrawable(true));
                settingsCell[0].setText(LocaleController.getString("PaymentConfirmationNewCard", R.string.PaymentConfirmationNewCard), false);
                linearLayout2.addView(settingsCell[0], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
                settingsCell[0].setOnClickListener(v -> {
                    passwordOk = false;
                    goToNextStep();
                });
                bottomCell[1] = new TextInfoPrivacyCell(context);
                bottomCell[1].setBackgroundDrawable(Theme.getThemedDrawable(context, R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow));
                linearLayout2.addView(bottomCell[1], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
            }
        }
    } else if (currentStep == 4 || currentStep == 5) {
        paymentInfoCell = new PaymentInfoCell(context);
        paymentInfoCell.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite));
        if (messageObject != null) {
            paymentInfoCell.setInvoice((TLRPC.TL_messageMediaInvoice) messageObject.messageOwner.media, currentBotName);
        } else if (paymentReceipt != null) {
            paymentInfoCell.setReceipt(paymentReceipt, currentBotName);
        }
        linearLayout2.addView(paymentInfoCell, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
        sectionCell[0] = new ShadowSectionCell(context);
        linearLayout2.addView(sectionCell[0], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
        prices = new ArrayList<>(paymentForm.invoice.prices);
        if (shippingOption != null) {
            prices.addAll(shippingOption.prices);
        }
        totalPrice = new String[1];
        for (int a = 0; a < prices.size(); a++) {
            TLRPC.TL_labeledPrice price = prices.get(a);
            TextPriceCell priceCell = new TextPriceCell(context);
            priceCell.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite));
            priceCell.setTextAndValue(price.label, LocaleController.getInstance().formatCurrencyString(price.amount, paymentForm.invoice.currency), false);
            linearLayout2.addView(priceCell);
        }
        if (currentStep == 5 && tipAmount != null) {
            TextPriceCell priceCell = new TextPriceCell(context);
            priceCell.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite));
            priceCell.setTextAndValue(LocaleController.getString("PaymentTip", R.string.PaymentTip), LocaleController.getInstance().formatCurrencyString(tipAmount, paymentForm.invoice.currency), false);
            linearLayout2.addView(priceCell);
        }
        totalCell = new TextPriceCell(context);
        totalCell.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite));
        totalPrice[0] = getTotalPriceString(prices);
        totalCell.setTextAndValue(LocaleController.getString("PaymentTransactionTotal", R.string.PaymentTransactionTotal), totalPrice[0], true);
        if (currentStep == 4 && (paymentForm.invoice.flags & 256) != 0) {
            ViewGroup container = new FrameLayout(context);
            container.setClipChildren(false);
            container.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite));
            linearLayout2.addView(container, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, paymentForm.invoice.suggested_tip_amounts.isEmpty() ? 40 : 78));
            container.setOnClickListener(v -> {
                inputFields[0].requestFocus();
                AndroidUtilities.showKeyboard(inputFields[0]);
            });
            TextPriceCell cell = new TextPriceCell(context);
            cell.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite));
            cell.setTextAndValue(LocaleController.getString("PaymentTipOptional", R.string.PaymentTipOptional), "", false);
            container.addView(cell);
            inputFields = new EditTextBoldCursor[1];
            inputFields[0] = new EditTextBoldCursor(context);
            inputFields[0].setTag(0);
            inputFields[0].setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16);
            inputFields[0].setHintTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteGrayText2));
            inputFields[0].setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteGrayText2));
            inputFields[0].setBackgroundDrawable(null);
            inputFields[0].setCursorColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText));
            inputFields[0].setCursorSize(AndroidUtilities.dp(20));
            inputFields[0].setCursorWidth(1.5f);
            inputFields[0].setInputType(InputType.TYPE_CLASS_PHONE);
            inputFields[0].setImeOptions(EditorInfo.IME_ACTION_DONE | EditorInfo.IME_FLAG_NO_EXTRACT_UI);
            inputFields[0].setHint(LocaleController.getInstance().formatCurrencyString(0, paymentForm.invoice.currency));
            inputFields[0].setPadding(0, 0, 0, AndroidUtilities.dp(6));
            inputFields[0].setGravity(LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT);
            container.addView(inputFields[0], LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.LEFT | Gravity.TOP, 21, 9, 21, 1));
            inputFields[0].addTextChangedListener(new TextWatcher() {

                private boolean anyBefore;

                private String overrideText;

                private boolean isDeletedChar;

                private int beforeTextLength;

                private int enteredCharacterStart;

                private boolean lastDotEntered;

                char[] commas = new char[] { ',', '.', '٫', '、', '\u2E41', '︐', '︑', '﹐', '﹑', ',', '、', 'ʻ' };

                private int indexOfComma(String text) {
                    for (int a = 0; a < commas.length; a++) {
                        int idx = text.indexOf(commas[a]);
                        if (idx >= 0) {
                            return idx;
                        }
                    }
                    return -1;
                }

                @Override
                public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                    if (ignoreOnTextChange) {
                        return;
                    }
                    anyBefore = !TextUtils.isEmpty(s);
                    overrideText = null;
                    beforeTextLength = s == null ? 0 : s.length();
                    enteredCharacterStart = start;
                    if (isDeletedChar = (count == 1 && after == 0)) {
                        String fixed = LocaleController.fixNumbers(s);
                        char actionCh = fixed.charAt(start);
                        int idx = indexOfComma(fixed);
                        String reminderStr = idx >= 0 ? fixed.substring(idx + 1) : "";
                        long reminder = Utilities.parseLong(PhoneFormat.stripExceptNumbers(reminderStr));
                        if ((actionCh < '0' || actionCh > '9') && (reminderStr.length() == 0 || reminder != 0)) {
                            while (--start >= 0) {
                                actionCh = fixed.charAt(start);
                                if (actionCh >= '0' && actionCh <= '9') {
                                    overrideText = fixed.substring(0, start) + fixed.substring(start + 1);
                                    break;
                                }
                            }
                        } else if (idx > 0 && start > idx && reminder == 0) {
                            overrideText = fixed.substring(0, idx - 1);
                        }
                    }
                }

                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {
                }

                @Override
                public void afterTextChanged(Editable s) {
                    if (ignoreOnTextChange) {
                        return;
                    }
                    long oldAmount = tipAmount != null ? tipAmount : 0;
                    String text;
                    if (overrideText != null) {
                        text = overrideText;
                    } else {
                        text = LocaleController.fixNumbers(s.toString());
                    }
                    int idx = indexOfComma(text);
                    boolean dotEntered = idx >= 0;
                    int exp = LocaleController.getCurrencyExpDivider(paymentForm.invoice.currency);
                    String wholeStr = idx >= 0 ? text.substring(0, idx) : text;
                    String reminderStr = idx >= 0 ? text.substring(idx + 1) : "";
                    long whole = Utilities.parseLong(PhoneFormat.stripExceptNumbers(wholeStr)) * exp;
                    long reminder = Utilities.parseLong(PhoneFormat.stripExceptNumbers(reminderStr));
                    reminderStr = "" + reminder;
                    String expStr = "" + (exp - 1);
                    if (idx > 0 && reminderStr.length() > expStr.length()) {
                        if (enteredCharacterStart - idx < reminderStr.length()) {
                            reminderStr = reminderStr.substring(0, expStr.length());
                        } else {
                            reminderStr = reminderStr.substring(reminderStr.length() - expStr.length());
                        }
                        reminder = Utilities.parseLong(reminderStr);
                    }
                    tipAmount = whole + reminder;
                    if (paymentForm.invoice.max_tip_amount != 0 && tipAmount > paymentForm.invoice.max_tip_amount) {
                        tipAmount = paymentForm.invoice.max_tip_amount;
                    }
                    int start = inputFields[0].getSelectionStart();
                    ignoreOnTextChange = true;
                    String newText;
                    if (tipAmount == 0) {
                        inputFields[0].setText(newText = "");
                    } else {
                        inputFields[0].setText(newText = LocaleController.getInstance().formatCurrencyString(tipAmount, false, dotEntered, true, paymentForm.invoice.currency));
                    }
                    if (oldAmount < tipAmount && oldAmount != 0 && anyBefore && start >= 0) {
                        inputFields[0].setSelection(Math.min(start, inputFields[0].length()));
                    } else if (!isDeletedChar || beforeTextLength == inputFields[0].length()) {
                        if (!lastDotEntered && dotEntered && idx >= 0) {
                            idx = indexOfComma(newText);
                            if (idx > 0) {
                                inputFields[0].setSelection(idx + 1);
                            } else {
                                inputFields[0].setSelection(inputFields[0].length());
                            }
                        } else {
                            inputFields[0].setSelection(inputFields[0].length());
                        }
                    } else {
                        inputFields[0].setSelection(Math.max(0, Math.min(start, inputFields[0].length())));
                    }
                    lastDotEntered = dotEntered;
                    updateTotalPrice();
                    overrideText = null;
                    ignoreOnTextChange = false;
                }
            });
            inputFields[0].setOnEditorActionListener((textView, i, keyEvent) -> {
                if (i == EditorInfo.IME_ACTION_DONE) {
                    AndroidUtilities.hideKeyboard(textView);
                    return true;
                }
                return false;
            });
            inputFields[0].requestFocus();
            if (!paymentForm.invoice.suggested_tip_amounts.isEmpty()) {
                HorizontalScrollView scrollView = new HorizontalScrollView(context);
                scrollView.setHorizontalScrollBarEnabled(false);
                scrollView.setVerticalScrollBarEnabled(false);
                scrollView.setClipToPadding(false);
                scrollView.setPadding(AndroidUtilities.dp(21), 0, AndroidUtilities.dp(21), 0);
                scrollView.setFillViewport(true);
                container.addView(scrollView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 30, Gravity.LEFT | Gravity.TOP, 0, 44, 0, 0));
                int[] maxTextWidth = new int[1];
                int[] textWidths = new int[1];
                int N = paymentForm.invoice.suggested_tip_amounts.size();
                tipLayout = new LinearLayout(context) {

                    boolean ignoreLayout;

                    @Override
                    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
                        int availableSize = MeasureSpec.getSize(widthMeasureSpec);
                        ignoreLayout = true;
                        int gaps = AndroidUtilities.dp(9) * (N - 1);
                        if (maxTextWidth[0] * N + gaps <= availableSize) {
                            setWeightSum(1.0f);
                            for (int a = 0, N2 = getChildCount(); a < N2; a++) {
                                getChildAt(a).getLayoutParams().width = 0;
                                ((LayoutParams) getChildAt(a).getLayoutParams()).weight = 1.0f / N2;
                            }
                        } else if (textWidths[0] + gaps <= availableSize) {
                            setWeightSum(1.0f);
                            availableSize -= gaps;
                            float extraWeight = 1.0f;
                            for (int a = 0, N2 = getChildCount(); a < N2; a++) {
                                View child = getChildAt(a);
                                LayoutParams layoutParams = (LayoutParams) child.getLayoutParams();
                                layoutParams.width = 0;
                                int width = (Integer) child.getTag(R.id.width_tag);
                                layoutParams.weight = width / (float) availableSize;
                                extraWeight -= layoutParams.weight;
                            }
                            extraWeight /= (N - 1);
                            if (extraWeight > 0) {
                                for (int a = 0, N2 = getChildCount(); a < N2; a++) {
                                    View child = getChildAt(a);
                                    LayoutParams layoutParams = (LayoutParams) child.getLayoutParams();
                                    int width = (Integer) child.getTag(R.id.width_tag);
                                    if (width != maxTextWidth[0]) {
                                        layoutParams.weight += extraWeight;
                                    }
                                }
                            }
                        } else {
                            setWeightSum(0.0f);
                            for (int a = 0, N2 = getChildCount(); a < N2; a++) {
                                getChildAt(a).getLayoutParams().width = LayoutHelper.WRAP_CONTENT;
                                ((LayoutParams) getChildAt(a).getLayoutParams()).weight = 0.0f;
                            }
                        }
                        ignoreLayout = false;
                        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
                    }

                    @Override
                    public void requestLayout() {
                        if (ignoreLayout) {
                            return;
                        }
                        super.requestLayout();
                    }
                };
                tipLayout.setOrientation(LinearLayout.HORIZONTAL);
                scrollView.addView(tipLayout, LayoutHelper.createScroll(LayoutHelper.MATCH_PARENT, 30, Gravity.LEFT | Gravity.TOP));
                int color = Theme.getColor(Theme.key_contacts_inviteBackground);
                for (int a = 0; a < N; a++) {
                    long amount;
                    if (LocaleController.isRTL) {
                        amount = paymentForm.invoice.suggested_tip_amounts.get(N - a - 1);
                    } else {
                        amount = paymentForm.invoice.suggested_tip_amounts.get(a);
                    }
                    String text = LocaleController.getInstance().formatCurrencyString(amount, paymentForm.invoice.currency);
                    TextView valueTextView = new TextView(context);
                    valueTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14);
                    valueTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
                    valueTextView.setLines(1);
                    valueTextView.setTag(amount);
                    valueTextView.setMaxLines(1);
                    valueTextView.setText(text);
                    valueTextView.setPadding(AndroidUtilities.dp(15), 0, AndroidUtilities.dp(15), 0);
                    valueTextView.setTextColor(Theme.getColor(Theme.key_chats_secretName));
                    valueTextView.setBackground(Theme.createRoundRectDrawable(AndroidUtilities.dp(15), color & 0x1fffffff));
                    valueTextView.setSingleLine(true);
                    valueTextView.setGravity(Gravity.CENTER);
                    tipLayout.addView(valueTextView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.MATCH_PARENT, Gravity.CENTER_VERTICAL | Gravity.LEFT, 0, 0, a != N - 1 ? 9 : 0, 0));
                    valueTextView.setOnClickListener(v -> {
                        long amoumt = (Long) valueTextView.getTag();
                        if (tipAmount != null && amoumt == tipAmount) {
                            ignoreOnTextChange = true;
                            inputFields[0].setText("");
                            ignoreOnTextChange = false;
                            tipAmount = 0L;
                            updateTotalPrice();
                        } else {
                            inputFields[0].setText(LocaleController.getInstance().formatCurrencyString(amount, false, true, true, paymentForm.invoice.currency));
                        }
                        inputFields[0].setSelection(inputFields[0].length());
                    });
                    int width = (int) Math.ceil(valueTextView.getPaint().measureText(text)) + AndroidUtilities.dp(30);
                    valueTextView.setTag(R.id.width_tag, width);
                    maxTextWidth[0] = Math.max(maxTextWidth[0], width);
                    textWidths[0] += width;
                }
            }
        }
        linearLayout2.addView(totalCell);
        sectionCell[2] = new ShadowSectionCell(context);
        sectionCell[2].setBackgroundDrawable(Theme.getThemedDrawable(context, R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow));
        linearLayout2.addView(sectionCell[2], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
        detailSettingsCell[0] = new TextDetailSettingsCell(context);
        detailSettingsCell[0].setBackgroundDrawable(Theme.getSelectorDrawable(true));
        detailSettingsCell[0].setTextAndValueAndIcon(cardName != null && cardName.length() > 1 ? cardName.substring(0, 1).toUpperCase() + cardName.substring(1) : cardName, LocaleController.getString("PaymentCheckoutMethod", R.string.PaymentCheckoutMethod), R.drawable.payment_card, true);
        linearLayout2.addView(detailSettingsCell[0]);
        if (currentStep == 4) {
            detailSettingsCell[0].setOnClickListener(v -> {
                if (getParentActivity() == null) {
                    return;
                }
                BottomSheet.Builder builder = new BottomSheet.Builder(getParentActivity());
                builder.setTitle(LocaleController.getString("PaymentCheckoutMethod", R.string.PaymentCheckoutMethod), true);
                builder.setItems(new CharSequence[] { cardName, LocaleController.getString("PaymentCheckoutMethodNewCard", R.string.PaymentCheckoutMethodNewCard) }, new int[] { R.drawable.payment_card, R.drawable.msg_addbot }, (dialog, which) -> {
                    if (which == 1) {
                        PaymentFormActivity activity = new PaymentFormActivity(paymentForm, messageObject, 2, requestedInfo, shippingOption, tipAmount, null, cardName, validateRequest, saveCardInfo, null, parentFragment);
                        activity.setDelegate(new PaymentFormActivityDelegate() {

                            @Override
                            public boolean didSelectNewCard(String tokenJson, String card, boolean saveCard, TLRPC.TL_inputPaymentCredentialsGooglePay googlePay) {
                                paymentForm.saved_credentials = null;
                                paymentJson = tokenJson;
                                saveCardInfo = saveCard;
                                cardName = card;
                                googlePayCredentials = googlePay;
                                detailSettingsCell[0].setTextAndValue(cardName, LocaleController.getString("PaymentCheckoutMethod", R.string.PaymentCheckoutMethod), true);
                                return false;
                            }
                        });
                        presentFragment(activity);
                    }
                });
                showDialog(builder.create());
            });
        }
        TLRPC.User providerUser = null;
        for (int a = 0; a < paymentForm.users.size(); a++) {
            TLRPC.User user = paymentForm.users.get(a);
            if (user.id == paymentForm.provider_id) {
                providerUser = user;
            }
        }
        final String providerName;
        if (providerUser != null) {
            detailSettingsCell[1] = new TextDetailSettingsCell(context);
            detailSettingsCell[1].setBackgroundDrawable(Theme.getSelectorDrawable(true));
            detailSettingsCell[1].setTextAndValueAndIcon(providerName = ContactsController.formatName(providerUser.first_name, providerUser.last_name), LocaleController.getString("PaymentCheckoutProvider", R.string.PaymentCheckoutProvider), R.drawable.payment_provider, validateRequest != null && (validateRequest.info.shipping_address != null || shippingOption != null));
            linearLayout2.addView(detailSettingsCell[1]);
        } else {
            providerName = "";
        }
        if (validateRequest != null) {
            if (validateRequest.info.shipping_address != null) {
                detailSettingsCell[2] = new TextDetailSettingsCell(context);
                linearLayout2.addView(detailSettingsCell[2]);
                if (currentStep == 4) {
                    detailSettingsCell[2].setBackgroundDrawable(Theme.getSelectorDrawable(true));
                    detailSettingsCell[2].setOnClickListener(v -> {
                        PaymentFormActivity activity = new PaymentFormActivity(paymentForm, messageObject, 0, requestedInfo, shippingOption, tipAmount, null, cardName, validateRequest, saveCardInfo, null, parentFragment);
                        activity.setDelegate(new PaymentFormActivityDelegate() {

                            @Override
                            public void didSelectNewAddress(TLRPC.TL_payments_validateRequestedInfo validateRequested) {
                                validateRequest = validateRequested;
                                setAddressFields();
                            }
                        });
                        presentFragment(activity);
                    });
                } else {
                    detailSettingsCell[2].setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite));
                }
            }
            if (validateRequest.info.name != null) {
                detailSettingsCell[3] = new TextDetailSettingsCell(context);
                linearLayout2.addView(detailSettingsCell[3]);
                if (currentStep == 4) {
                    detailSettingsCell[3].setBackgroundDrawable(Theme.getSelectorDrawable(true));
                    detailSettingsCell[3].setOnClickListener(v -> {
                        PaymentFormActivity activity = new PaymentFormActivity(paymentForm, messageObject, 0, requestedInfo, shippingOption, tipAmount, null, cardName, validateRequest, saveCardInfo, null, parentFragment);
                        activity.setDelegate(new PaymentFormActivityDelegate() {

                            @Override
                            public void didSelectNewAddress(TLRPC.TL_payments_validateRequestedInfo validateRequested) {
                                validateRequest = validateRequested;
                                setAddressFields();
                            }
                        });
                        presentFragment(activity);
                    });
                } else {
                    detailSettingsCell[3].setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite));
                }
            }
            if (validateRequest.info.phone != null) {
                detailSettingsCell[4] = new TextDetailSettingsCell(context);
                linearLayout2.addView(detailSettingsCell[4]);
                if (currentStep == 4) {
                    detailSettingsCell[4].setBackgroundDrawable(Theme.getSelectorDrawable(true));
                    detailSettingsCell[4].setOnClickListener(v -> {
                        PaymentFormActivity activity = new PaymentFormActivity(paymentForm, messageObject, 0, requestedInfo, shippingOption, tipAmount, null, cardName, validateRequest, saveCardInfo, null, parentFragment);
                        activity.setDelegate(new PaymentFormActivityDelegate() {

                            @Override
                            public void didSelectNewAddress(TLRPC.TL_payments_validateRequestedInfo validateRequested) {
                                validateRequest = validateRequested;
                                setAddressFields();
                            }
                        });
                        presentFragment(activity);
                    });
                } else {
                    detailSettingsCell[4].setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite));
                }
            }
            if (validateRequest.info.email != null) {
                detailSettingsCell[5] = new TextDetailSettingsCell(context);
                linearLayout2.addView(detailSettingsCell[5]);
                if (currentStep == 4) {
                    detailSettingsCell[5].setBackgroundDrawable(Theme.getSelectorDrawable(true));
                    detailSettingsCell[5].setOnClickListener(v -> {
                        PaymentFormActivity activity = new PaymentFormActivity(paymentForm, messageObject, 0, requestedInfo, shippingOption, tipAmount, null, cardName, validateRequest, saveCardInfo, null, parentFragment);
                        activity.setDelegate(new PaymentFormActivityDelegate() {

                            @Override
                            public void didSelectNewAddress(TLRPC.TL_payments_validateRequestedInfo validateRequested) {
                                validateRequest = validateRequested;
                                setAddressFields();
                            }
                        });
                        presentFragment(activity);
                    });
                } else {
                    detailSettingsCell[5].setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite));
                }
            }
            if (shippingOption != null) {
                detailSettingsCell[6] = new TextDetailSettingsCell(context);
                detailSettingsCell[6].setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite));
                detailSettingsCell[6].setTextAndValueAndIcon(shippingOption.title, LocaleController.getString("PaymentCheckoutShippingMethod", R.string.PaymentCheckoutShippingMethod), R.drawable.payment_delivery, false);
                linearLayout2.addView(detailSettingsCell[6]);
            }
            setAddressFields();
        }
        if (currentStep == 4) {
            bottomLayout = new FrameLayout(context);
            if (Build.VERSION.SDK_INT >= 21) {
                bottomLayout.setBackgroundDrawable(Theme.getSelectorDrawable(Theme.getColor(Theme.key_listSelector), Theme.key_contacts_inviteBackground));
            } else {
                bottomLayout.setBackgroundColor(Theme.getColor(Theme.key_contacts_inviteBackground));
            }
            frameLayout.addView(bottomLayout, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48, Gravity.BOTTOM));
            bottomLayout.setOnClickListener(v -> {
                if (botUser != null && !botUser.verified) {
                    String botKey = "payment_warning_" + botUser.id;
                    SharedPreferences preferences = MessagesController.getNotificationsSettings(currentAccount);
                    if (!preferences.getBoolean(botKey, false)) {
                        preferences.edit().putBoolean(botKey, true).commit();
                        AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
                        builder.setTitle(LocaleController.getString("PaymentWarning", R.string.PaymentWarning));
                        builder.setMessage(LocaleController.formatString("PaymentWarningText", R.string.PaymentWarningText, currentBotName, providerName));
                        builder.setPositiveButton(LocaleController.getString("Continue", R.string.Continue), (dialogInterface, i) -> showPayAlert(totalPrice[0]));
                        showDialog(builder.create());
                    } else {
                        showPayAlert(totalPrice[0]);
                    }
                } else {
                    showPayAlert(totalPrice[0]);
                }
            });
            payTextView = new TextView(context);
            payTextView.setTextColor(Theme.getColor(Theme.key_contacts_inviteText));
            payTextView.setText(LocaleController.formatString("PaymentCheckoutPay", R.string.PaymentCheckoutPay, totalPrice[0]));
            payTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14);
            payTextView.setGravity(Gravity.CENTER);
            payTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
            bottomLayout.addView(payTextView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT));
            progressViewButton = new ContextProgressView(context, 0);
            progressViewButton.setVisibility(View.INVISIBLE);
            int color = Theme.getColor(Theme.key_contacts_inviteText);
            progressViewButton.setColors(color & 0x2fffffff, color);
            bottomLayout.addView(progressViewButton, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT));
            doneItem.setEnabled(false);
            doneItem.getContentView().setVisibility(View.INVISIBLE);
            webView = new WebView(context) {

                @Override
                public boolean onTouchEvent(MotionEvent event) {
                    getParent().requestDisallowInterceptTouchEvent(true);
                    return super.onTouchEvent(event);
                }
            };
            webView.setBackgroundColor(0xffffffff);
            webView.getSettings().setJavaScriptEnabled(true);
            webView.getSettings().setDomStorageEnabled(true);
            if (Build.VERSION.SDK_INT >= 21) {
                webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
                CookieManager cookieManager = CookieManager.getInstance();
                cookieManager.setAcceptThirdPartyCookies(webView, true);
            }
            webView.setWebViewClient(new WebViewClient() {

                @Override
                public void onLoadResource(WebView view, String url) {
                    try {
                        Uri uri = Uri.parse(url);
                        if ("t.me".equals(uri.getHost())) {
                            goToNextStep();
                            return;
                        }
                    } catch (Exception ignore) {
                    }
                    super.onLoadResource(view, url);
                }

                @Override
                public void onPageFinished(WebView view, String url) {
                    super.onPageFinished(view, url);
                    webviewLoading = false;
                    showEditDoneProgress(true, false);
                    updateSavePaymentField();
                }

                @Override
                public boolean shouldOverrideUrlLoading(WebView view, String url) {
                    try {
                        Uri uri = Uri.parse(url);
                        if ("t.me".equals(uri.getHost())) {
                            goToNextStep();
                            return true;
                        }
                    } catch (Exception ignore) {
                    }
                    return false;
                }
            });
            frameLayout.addView(webView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT));
            webView.setVisibility(View.GONE);
        }
        sectionCell[1] = new ShadowSectionCell(context);
        sectionCell[1].setBackgroundDrawable(Theme.getThemedDrawable(context, R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow));
        linearLayout2.addView(sectionCell[1], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
    } else if (currentStep == 6) {
        codeFieldCell = new EditTextSettingsCell(context);
        codeFieldCell.setTextAndHint("", LocaleController.getString("PasswordCode", R.string.PasswordCode), false);
        codeFieldCell.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite));
        EditTextBoldCursor editText = codeFieldCell.getTextView();
        editText.setInputType(InputType.TYPE_CLASS_PHONE);
        editText.setImeOptions(EditorInfo.IME_ACTION_DONE);
        editText.setOnEditorActionListener((textView, i, keyEvent) -> {
            if (i == EditorInfo.IME_ACTION_DONE) {
                sendSavePassword(false);
                return true;
            }
            return false;
        });
        editText.addTextChangedListener(new TextWatcher() {

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
            }

            @Override
            public void afterTextChanged(Editable s) {
                if (emailCodeLength != 0 && s.length() == emailCodeLength) {
                    sendSavePassword(false);
                }
            }
        });
        linearLayout2.addView(codeFieldCell, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
        bottomCell[2] = new TextInfoPrivacyCell(context);
        bottomCell[2].setBackgroundDrawable(Theme.getThemedDrawable(context, R.drawable.greydivider, Theme.key_windowBackgroundGrayShadow));
        linearLayout2.addView(bottomCell[2], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
        settingsCell[1] = new TextSettingsCell(context);
        settingsCell[1].setBackgroundDrawable(Theme.getSelectorDrawable(true));
        settingsCell[1].setTag(Theme.key_windowBackgroundWhiteBlackText);
        settingsCell[1].setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText));
        settingsCell[1].setText(LocaleController.getString("ResendCode", R.string.ResendCode), true);
        linearLayout2.addView(settingsCell[1], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
        settingsCell[1].setOnClickListener(v -> {
            TLRPC.TL_account_resendPasswordEmail req = new TLRPC.TL_account_resendPasswordEmail();
            ConnectionsManager.getInstance(currentAccount).sendRequest(req, (response, error) -> {
            });
            AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
            builder.setMessage(LocaleController.getString("ResendCodeInfo", R.string.ResendCodeInfo));
            builder.setTitle(LocaleController.getString("AppName", R.string.AppName));
            builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), null);
            showDialog(builder.create());
        });
        settingsCell[0] = new TextSettingsCell(context);
        settingsCell[0].setBackgroundDrawable(Theme.getSelectorDrawable(true));
        settingsCell[0].setTag(Theme.key_windowBackgroundWhiteRedText3);
        settingsCell[0].setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteRedText3));
        settingsCell[0].setText(LocaleController.getString("AbortPassword", R.string.AbortPassword), false);
        linearLayout2.addView(settingsCell[0], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
        settingsCell[0].setOnClickListener(v -> {
            AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
            String text = LocaleController.getString("TurnPasswordOffQuestion", R.string.TurnPasswordOffQuestion);
            if (currentPassword.has_secure_values) {
                text += "\n\n" + LocaleController.getString("TurnPasswordOffPassport", R.string.TurnPasswordOffPassport);
            }
            builder.setMessage(text);
            builder.setTitle(LocaleController.getString("TurnPasswordOffQuestionTitle", R.string.TurnPasswordOffQuestionTitle));
            builder.setPositiveButton(LocaleController.getString("Disable", R.string.Disable), (dialogInterface, i) -> sendSavePassword(true));
            builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null);
            AlertDialog alertDialog = builder.create();
            showDialog(alertDialog);
            TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE);
            if (button != null) {
                button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2));
            }
        });
        inputFields = new EditTextBoldCursor[FIELDS_COUNT_PASSWORD];
        for (int a = 0; a < FIELDS_COUNT_PASSWORD; a++) {
            if (a == FIELD_ENTERPASSWORD) {
                headerCell[0] = new HeaderCell(context);
                headerCell[0].setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite));
                headerCell[0].setText(LocaleController.getString("PaymentPasswordTitle", R.string.PaymentPasswordTitle));
                linearLayout2.addView(headerCell[0], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
            } else if (a == FIELD_ENTERPASSWORDEMAIL) {
                headerCell[1] = new HeaderCell(context);
                headerCell[1].setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite));
                headerCell[1].setText(LocaleController.getString("PaymentPasswordEmailTitle", R.string.PaymentPasswordEmailTitle));
                linearLayout2.addView(headerCell[1], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
            }
            ViewGroup container = new FrameLayout(context);
            container.setClipChildren(false);
            linearLayout2.addView(container, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 50));
            container.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite));
            if (a == FIELD_ENTERPASSWORD) {
                View divider = new View(context) {

                    @Override
                    protected void onDraw(Canvas canvas) {
                        canvas.drawLine(LocaleController.isRTL ? 0 : AndroidUtilities.dp(20), getMeasuredHeight() - 1, getMeasuredWidth() - (LocaleController.isRTL ? AndroidUtilities.dp(20) : 0), getMeasuredHeight() - 1, Theme.dividerPaint);
                    }
                };
                divider.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite));
                dividers.add(divider);
                container.addView(divider, new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 1, Gravity.LEFT | Gravity.BOTTOM));
            }
            inputFields[a] = new EditTextBoldCursor(context);
            inputFields[a].setTag(a);
            inputFields[a].setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16);
            inputFields[a].setHintTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteHintText));
            inputFields[a].setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText));
            inputFields[a].setBackgroundDrawable(null);
            inputFields[a].setCursorColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText));
            inputFields[a].setCursorSize(AndroidUtilities.dp(20));
            inputFields[a].setCursorWidth(1.5f);
            if (a == FIELD_ENTERPASSWORD || a == FIELD_REENTERPASSWORD) {
                inputFields[a].setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
                inputFields[a].setTypeface(Typeface.DEFAULT);
                inputFields[a].setImeOptions(EditorInfo.IME_ACTION_NEXT | EditorInfo.IME_FLAG_NO_EXTRACT_UI);
            } else {
                inputFields[a].setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS);
                inputFields[a].setImeOptions(EditorInfo.IME_ACTION_DONE | EditorInfo.IME_FLAG_NO_EXTRACT_UI);
            }
            switch(a) {
                case FIELD_ENTERPASSWORD:
                    inputFields[a].setHint(LocaleController.getString("PaymentPasswordEnter", R.string.PaymentPasswordEnter));
                    inputFields[a].requestFocus();
                    break;
                case FIELD_REENTERPASSWORD:
                    inputFields[a].setHint(LocaleController.getString("PaymentPasswordReEnter", R.string.PaymentPasswordReEnter));
                    break;
                case FIELD_ENTERPASSWORDEMAIL:
                    inputFields[a].setHint(LocaleController.getString("PaymentPasswordEmail", R.string.PaymentPasswordEmail));
                    break;
            }
            inputFields[a].setPadding(0, 0, 0, AndroidUtilities.dp(6));
            inputFields[a].setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT);
            container.addView(inputFields[a], LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.LEFT | Gravity.TOP, 21, 12, 21, 6));
            inputFields[a].setOnEditorActionListener((textView, i, keyEvent) -> {
                if (i == EditorInfo.IME_ACTION_DONE) {
                    doneItem.performClick();
                    return true;
                } else if (i == EditorInfo.IME_ACTION_NEXT) {
                    int num = (Integer) textView.getTag();
                    if (num == FIELD_ENTERPASSWORD) {
                        inputFields[FIELD_REENTERPASSWORD].requestFocus();
                    } else if (num == FIELD_REENTERPASSWORD) {
                        inputFields[FIELD_ENTERPASSWORDEMAIL].requestFocus();
                    }
                }
                return false;
            });
            if (a == FIELD_REENTERPASSWORD) {
                bottomCell[0] = new TextInfoPrivacyCell(context);
                bottomCell[0].setText(LocaleController.getString("PaymentPasswordInfo", R.string.PaymentPasswordInfo));
                bottomCell[0].setBackgroundDrawable(Theme.getThemedDrawable(context, R.drawable.greydivider, Theme.key_windowBackgroundGrayShadow));
                linearLayout2.addView(bottomCell[0], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
            } else if (a == FIELD_ENTERPASSWORDEMAIL) {
                bottomCell[1] = new TextInfoPrivacyCell(context);
                bottomCell[1].setText(LocaleController.getString("PaymentPasswordEmailInfo", R.string.PaymentPasswordEmailInfo));
                bottomCell[1].setBackgroundDrawable(Theme.getThemedDrawable(context, R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow));
                linearLayout2.addView(bottomCell[1], LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
            }
        }
        updatePasswordFields();
    }
    return fragmentView;
}
Also used : JavascriptInterface(android.webkit.JavascriptInterface) TokenParser(com.stripe.android.net.TokenParser) HttpURLConnection(java.net.HttpURLConnection) Arrays(java.util.Arrays) Uri(android.net.Uri) FrameLayout(android.widget.FrameLayout) ImageView(android.widget.ImageView) PaymentInfoCell(org.telegram.ui.Cells.PaymentInfoCell) EditTextBoldCursor(org.telegram.ui.Components.EditTextBoldCursor) HorizontalScrollView(android.widget.HorizontalScrollView) Manifest(android.Manifest) Card(com.stripe.android.model.Card) JSONException(org.json.JSONException) CookieManager(android.webkit.CookieManager) Canvas(android.graphics.Canvas) APIException(com.stripe.android.exception.APIException) UndoView(org.telegram.ui.Components.UndoView) AnimatorListenerAdapter(android.animation.AnimatorListenerAdapter) NotificationCenter(org.telegram.messenger.NotificationCenter) TextPaint(android.text.TextPaint) TextPriceCell(org.telegram.ui.Cells.TextPriceCell) Token(com.stripe.android.model.Token) RadioCell(org.telegram.ui.Cells.RadioCell) InputFilter(android.text.InputFilter) TextWatcher(android.text.TextWatcher) ViewParent(android.view.ViewParent) RequestDelegate(org.telegram.tgnet.RequestDelegate) Dialog(android.app.Dialog) AlertsCreator(org.telegram.ui.Components.AlertsCreator) Editable(android.text.Editable) TextInfoPrivacyCell(org.telegram.ui.Cells.TextInfoPrivacyCell) ArrayList(java.util.ArrayList) SpannableStringBuilder(android.text.SpannableStringBuilder) Calendar(java.util.Calendar) WebSettings(android.webkit.WebSettings) TextDetailSettingsCell(org.telegram.ui.Cells.TextDetailSettingsCell) TLRPC(org.telegram.tgnet.TLRPC) Toast(android.widget.Toast) PhoneFormat(org.telegram.PhoneFormat.PhoneFormat) EditTextSettingsCell(org.telegram.ui.Cells.EditTextSettingsCell) TextSettingsCell(org.telegram.ui.Cells.TextSettingsCell) HintEditText(org.telegram.ui.Components.HintEditText) ActionBarMenu(org.telegram.ui.ActionBar.ActionBarMenu) R(org.telegram.messenger.R) BottomSheet(org.telegram.ui.ActionBar.BottomSheet) TextUtils(android.text.TextUtils) IOException(java.io.IOException) InputStreamReader(java.io.InputStreamReader) Gravity(android.view.Gravity) SharedPreferences(android.content.SharedPreferences) TypedValue(android.util.TypedValue) ScrollView(android.widget.ScrollView) ContactsController(org.telegram.messenger.ContactsController) Stripe(com.stripe.android.Stripe) BufferedReader(java.io.BufferedReader) AlertDialog(org.telegram.ui.ActionBar.AlertDialog) EditText(android.widget.EditText) ThemeDescription(org.telegram.ui.ActionBar.ThemeDescription) LinearLayout(android.widget.LinearLayout) ActionBarMenuItem(org.telegram.ui.ActionBar.ActionBarMenuItem) PackageManager(android.content.pm.PackageManager) URL(java.net.URL) WindowManager(android.view.WindowManager) AndroidUtilities(org.telegram.messenger.AndroidUtilities) Scanner(java.util.Scanner) ClickableSpan(android.text.style.ClickableSpan) Animator(android.animation.Animator) ShadowSectionCell(org.telegram.ui.Cells.ShadowSectionCell) JSONObject(org.json.JSONObject) ApplicationLoader(org.telegram.messenger.ApplicationLoader) Locale(java.util.Locale) WebViewClient(android.webkit.WebViewClient) View(android.view.View) WebView(android.webkit.WebView) ContextProgressView(org.telegram.ui.Components.ContextProgressView) Utilities(org.telegram.messenger.Utilities) StripeApiHandler(com.stripe.android.net.StripeApiHandler) AsyncTask(android.os.AsyncTask) APIConnectionException(com.stripe.android.exception.APIConnectionException) ObjectAnimator(android.animation.ObjectAnimator) InputType(android.text.InputType) BaseFragment(org.telegram.ui.ActionBar.BaseFragment) ConnectionsManager(org.telegram.tgnet.ConnectionsManager) ViewGroup(android.view.ViewGroup) UserConfig(org.telegram.messenger.UserConfig) List(java.util.List) TextView(android.widget.TextView) Optional(java.util.Optional) EditorInfo(android.view.inputmethod.EditorInfo) Typeface(android.graphics.Typeface) Context(android.content.Context) Spanned(android.text.Spanned) Theme(org.telegram.ui.ActionBar.Theme) Intent(android.content.Intent) LocaleController(org.telegram.messenger.LocaleController) HashMap(java.util.HashMap) HeaderCell(org.telegram.ui.Cells.HeaderCell) SuppressLint(android.annotation.SuppressLint) MotionEvent(android.view.MotionEvent) SRPHelper(org.telegram.messenger.SRPHelper) TelephonyManager(android.telephony.TelephonyManager) ActionBar(org.telegram.ui.ActionBar.ActionBar) TLObject(org.telegram.tgnet.TLObject) AnimatorSet(android.animation.AnimatorSet) MessageObject(org.telegram.messenger.MessageObject) SharedConfig(org.telegram.messenger.SharedConfig) PasswordTransformationMethod(android.text.method.PasswordTransformationMethod) BuildVars(org.telegram.messenger.BuildVars) Build(android.os.Build) DialogInterface(android.content.DialogInterface) OutputStream(java.io.OutputStream) LayoutHelper(org.telegram.ui.Components.LayoutHelper) FileLog(org.telegram.messenger.FileLog) MessagesController(org.telegram.messenger.MessagesController) TokenCallback(com.stripe.android.TokenCallback) TextCheckCell(org.telegram.ui.Cells.TextCheckCell) Vibrator(android.os.Vibrator) Activity(android.app.Activity) Collections(java.util.Collections) JSONArray(org.json.JSONArray) InputStream(java.io.InputStream) AlertDialog(org.telegram.ui.ActionBar.AlertDialog) HashMap(java.util.HashMap) TextCheckCell(org.telegram.ui.Cells.TextCheckCell) HeaderCell(org.telegram.ui.Cells.HeaderCell) SpannableStringBuilder(android.text.SpannableStringBuilder) TLRPC(org.telegram.tgnet.TLRPC) TelephonyManager(android.telephony.TelephonyManager) TextView(android.widget.TextView) HorizontalScrollView(android.widget.HorizontalScrollView) ActionBar(org.telegram.ui.ActionBar.ActionBar) CookieManager(android.webkit.CookieManager) WebViewClient(android.webkit.WebViewClient) HintEditText(org.telegram.ui.Components.HintEditText) EditText(android.widget.EditText) InputFilter(android.text.InputFilter) ShadowSectionCell(org.telegram.ui.Cells.ShadowSectionCell) Canvas(android.graphics.Canvas) TextInfoPrivacyCell(org.telegram.ui.Cells.TextInfoPrivacyCell) ActionBarMenu(org.telegram.ui.ActionBar.ActionBarMenu) HintEditText(org.telegram.ui.Components.HintEditText) JSONObject(org.json.JSONObject) TextPriceCell(org.telegram.ui.Cells.TextPriceCell) BottomSheet(org.telegram.ui.ActionBar.BottomSheet) SpannableStringBuilder(android.text.SpannableStringBuilder) ContextProgressView(org.telegram.ui.Components.ContextProgressView) RadioCell(org.telegram.ui.Cells.RadioCell) Uri(android.net.Uri) PaymentInfoCell(org.telegram.ui.Cells.PaymentInfoCell) TextWatcher(android.text.TextWatcher) Editable(android.text.Editable) WebView(android.webkit.WebView) EditTextBoldCursor(org.telegram.ui.Components.EditTextBoldCursor) InputStreamReader(java.io.InputStreamReader) TextDetailSettingsCell(org.telegram.ui.Cells.TextDetailSettingsCell) SharedPreferences(android.content.SharedPreferences) ViewGroup(android.view.ViewGroup) Calendar(java.util.Calendar) EditTextSettingsCell(org.telegram.ui.Cells.EditTextSettingsCell) ImageView(android.widget.ImageView) HorizontalScrollView(android.widget.HorizontalScrollView) UndoView(org.telegram.ui.Components.UndoView) ScrollView(android.widget.ScrollView) View(android.view.View) WebView(android.webkit.WebView) ContextProgressView(org.telegram.ui.Components.ContextProgressView) TextView(android.widget.TextView) TextPaint(android.text.TextPaint) SuppressLint(android.annotation.SuppressLint) JSONException(org.json.JSONException) APIException(com.stripe.android.exception.APIException) IOException(java.io.IOException) APIConnectionException(com.stripe.android.exception.APIConnectionException) MotionEvent(android.view.MotionEvent) EditTextSettingsCell(org.telegram.ui.Cells.EditTextSettingsCell) TextSettingsCell(org.telegram.ui.Cells.TextSettingsCell) HorizontalScrollView(android.widget.HorizontalScrollView) ScrollView(android.widget.ScrollView) FrameLayout(android.widget.FrameLayout) BufferedReader(java.io.BufferedReader) LinearLayout(android.widget.LinearLayout) SuppressLint(android.annotation.SuppressLint)

Aggregations

SuppressLint (android.annotation.SuppressLint)3 SharedPreferences (android.content.SharedPreferences)3 SpannableStringBuilder (android.text.SpannableStringBuilder)3 TextPaint (android.text.TextPaint)3 View (android.view.View)3 Manifest (android.Manifest)2 Animator (android.animation.Animator)2 AnimatorListenerAdapter (android.animation.AnimatorListenerAdapter)2 AnimatorSet (android.animation.AnimatorSet)2 ObjectAnimator (android.animation.ObjectAnimator)2 Activity (android.app.Activity)2 Dialog (android.app.Dialog)2 Context (android.content.Context)2 DialogInterface (android.content.DialogInterface)2 Intent (android.content.Intent)2 PackageManager (android.content.pm.PackageManager)2 Canvas (android.graphics.Canvas)2 Paint (android.graphics.Paint)2 Typeface (android.graphics.Typeface)2 Uri (android.net.Uri)2