/* * This is the source code of iGap for Android * It is licensed under GNU AGPL v3.0 * You should have received a copy of the license in this archive (see LICENSE). * Copyright © 2017 , iGap - www.iGap.net * iGap Messenger | Free, Fast and Secure instant messaging application * The idea of the RooyeKhat Media Company - www.RooyeKhat.co * All rights reserved. */ package net.iGap.fragments; import android.content.Context; import android.content.IntentFilter; import android.content.res.Configuration; import android.databinding.DataBindingUtil; import android.graphics.Typeface; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.FragmentActivity; import android.text.method.ScrollingMovementMethod; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.ViewTreeObserver; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.Button; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.ProgressBar; import android.widget.ScrollView; import android.widget.TextView; import com.vicmikhailau.maskededittext.MaskedEditText; import net.iGap.G; import net.iGap.R; import net.iGap.databinding.ActivityRegisterBinding; import net.iGap.helper.HelperCalander; import net.iGap.helper.HelperPermission; import net.iGap.interfaces.OnGetPermission; import net.iGap.interfaces.OnSmsReceive; import net.iGap.module.AppUtils; import net.iGap.module.IncomingSms; import net.iGap.viewmodel.FragmentRegisterViewModel; import java.io.IOException; public class FragmentRegister extends BaseFragment { private static final String KEY_SAVE_CODENUMBER = "SAVE_CODENUMBER"; private static final String KEY_SAVE_PHONENUMBER_MASK = "SAVE_PHONENUMBER_MASK"; private static final String KEY_SAVE_PHONENUMBER_NUMBER = "SAVE_PHONENUMBER_NUMBER"; private static final String KEY_SAVE_NAMECOUNTRY = "SAVE_NAMECOUNTRY"; private static final String KEY_SAVE_REGEX = "KEY_SAVE_REGEX"; private static final String KEY_SAVE_AGREEMENT = "KEY_SAVE_REGISTER"; public static Button btnChoseCountry; public static EditText edtCodeNumber; public static MaskedEditText edtPhoneNumber; public static TextView btnOk; public static int positionRadioButton = -1; public static boolean smsPermission = true; public static OnStartAnimationRegister onStartAnimationRegister; private TextView txtAgreement_register; private ViewGroup layout_verify; //Array List for Store List of StructCountry Object private IncomingSms smsReceiver; private FragmentActivity mActivity; private ScrollView scrollView; private int headerLayoutHeight; private LinearLayout headerLayout; private FragmentRegisterViewModel fragmentRegisterViewModel; private ActivityRegisterBinding fragmentRegisterBinding; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { fragmentRegisterBinding = DataBindingUtil.inflate(inflater, R.layout.activity_register, container, false); return fragmentRegisterBinding.getRoot(); } @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); initBindView(); final IntentFilter filter = new IntentFilter(); filter.addAction("android.provider.Telephony.SMS_RECEIVED"); smsReceiver = new IncomingSms(new OnSmsReceive() { @Override public void onSmsReceive(final String phoneNumber, final String message) { try { if (message != null && !message.isEmpty() && !message.equals("null") && !message.equals("")) { //rg_txt_verify_sms.setText(message); fragmentRegisterViewModel.receiveVerifySms(message); } } catch (Exception e1) { e1.getStackTrace(); } } }); try { HelperPermission.getSmsPermision(G.fragmentActivity, new OnGetPermission() { @Override public void Allow() { smsPermission = true; G.fragmentActivity.registerReceiver(smsReceiver, filter); } @Override public void deny() { smsPermission = false; } }); } catch (IOException e) { e.printStackTrace(); } TextView txtTitleToolbar = fragmentRegisterBinding.rgTxtTitleToolbar; Typeface titleTypeface; if (!HelperCalander.isPersianUnicode) { titleTypeface = G.typeface_neuropolitical; } else { titleTypeface = G.typeface_IRANSansMobile; } txtTitleToolbar.setTypeface(titleTypeface); // if (G.selectedLanguage.equals("fa") || G.selectedLanguage.equals("ar")) { // // TextView rg_txt_verify_connect = fragmentRegisterBinding.rgTxtVerifyConnect; // rg_txt_verify_connect.setTypeface(G.typeface_IRANSansMobile); // // TextView rg_txt_verify_sms = fragmentRegisterBinding.rgTxtVerifySms; // rg_txt_verify_sms.setTypeface(G.typeface_IRANSansMobile); // // TextView rg_txt_verify_generate = fragmentRegisterBinding.rgTxtVerifyKey; // rg_txt_verify_generate.setTypeface(G.typeface_IRANSansMobile); // // TextView rg_txt_verify_register = fragmentRegisterBinding.rgTxtVerifyServer; // rg_txt_verify_register.setTypeface(G.typeface_IRANSansMobile); // // } ProgressBar rg_prg_verify_connect = fragmentRegisterBinding.rgPrgVerifyConnect; AppUtils.setProgresColler(rg_prg_verify_connect);// TODO: 12/16/2017 - 1 - ProgressBar rg_prg_verify_sms = fragmentRegisterBinding.rgPrgVerifySms; AppUtils.setProgresColler(rg_prg_verify_sms); ProgressBar rg_prg_verify_generate = fragmentRegisterBinding.rgPrgVerifyKey; AppUtils.setProgresColler(rg_prg_verify_generate); ProgressBar rg_prg_verify_register = fragmentRegisterBinding.rgPrgVerifyServer; AppUtils.setProgresColler(rg_prg_verify_register); ProgressBar prgWaiting = (ProgressBar) fragmentRegisterBinding.prgWaiting; AppUtils.setProgresColler(prgWaiting); scrollView = fragmentRegisterBinding.scrollView; headerLayout = fragmentRegisterBinding.headerLayout; edtCodeNumber = fragmentRegisterBinding.rgEdtCodeNumber; btnChoseCountry = fragmentRegisterBinding.rgBtnChoseCountry; edtPhoneNumber = fragmentRegisterBinding.rgEdtPhoneNumber; btnOk = fragmentRegisterBinding.rgEdtPhoneNumber; txtAgreement_register = fragmentRegisterBinding.txtAgreementRegister; txtAgreement_register.setMovementMethod(new ScrollingMovementMethod()); layout_verify = fragmentRegisterBinding.rgLayoutVerifyAndAgreement; onStartAnimationRegister = new OnStartAnimationRegister() { @Override public void start() { G.handler.post(new Runnable() { @Override public void run() { final Animation trans_x_in = AnimationUtils.loadAnimation(G.context, R.anim.rg_tansiton_y_in); final Animation trans_x_out = AnimationUtils.loadAnimation(G.context, R.anim.rg_tansiton_y_out); txtAgreement_register.setMovementMethod(new ScrollingMovementMethod()); txtAgreement_register.startAnimation(trans_x_out); G.handler.postDelayed(new Runnable() { @Override public void run() { fragmentRegisterBinding.rgLayoutVerifyAndAgreement.setVisibility(View.VISIBLE); layout_verify.startAnimation(trans_x_in); } }, 500); } }); } }; fragmentRegisterViewModel.saveInstance(savedInstanceState, getArguments()); } private void initBindView() { fragmentRegisterViewModel = new FragmentRegisterViewModel(this, fragmentRegisterBinding.getRoot(), mActivity); fragmentRegisterBinding.setFragmentRegisterViewModel(fragmentRegisterViewModel); } public void onSaveInstanceState(Bundle savedInstanceState) { // Save the user's current game state savedInstanceState.putString(KEY_SAVE_CODENUMBER, edtCodeNumber.getText().toString()); savedInstanceState.putString(KEY_SAVE_PHONENUMBER_MASK, edtPhoneNumber.getMask()); savedInstanceState.putString(KEY_SAVE_PHONENUMBER_NUMBER, edtPhoneNumber.getText().toString()); savedInstanceState.putString(KEY_SAVE_NAMECOUNTRY, btnChoseCountry.getText().toString()); savedInstanceState.putString(KEY_SAVE_REGEX, fragmentRegisterViewModel.regex); savedInstanceState.putString(KEY_SAVE_AGREEMENT, txtAgreement_register.getText().toString()); // Always call the superclass so it can save the view hierarchy state super.onSaveInstanceState(savedInstanceState); } @Override public void onConfigurationChanged(Configuration newConfig) { boolean beforeState = G.isLandscape; if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { G.isLandscape = true; } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) { G.isLandscape = false; } if (G.isLandscape && fragmentRegisterViewModel.isVerify) { ViewTreeObserver observer = headerLayout.getViewTreeObserver(); observer.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { // TODO Auto-generated method stub headerLayoutHeight = headerLayout.getHeight(); scrollView.scrollTo(0, headerLayoutHeight); headerLayout.getViewTreeObserver().removeGlobalOnLayoutListener(this); } }); } super.onConfigurationChanged(newConfig); } @Override public void onAttach(Context context) { super.onAttach(context); mActivity = (FragmentActivity) context; } @Override public void onStop() { super.onStop(); try { if (smsPermission) { if (G.fragmentActivity.isRestricted()) { G.fragmentActivity.unregisterReceiver(smsReceiver); } } } catch (Exception e) { e.printStackTrace(); } fragmentRegisterViewModel.onStop(); super.onStop(); } public enum Reason { SOCKET, TIME_OUT, INVALID_CODE } public interface OnStartAnimationRegister { void start(); } }