diff --git a/app/src/main/java/com/nivesh/production/niveshfd/fd/db/PreferenceManager.kt b/app/src/main/java/com/nivesh/production/niveshfd/fd/db/PreferenceManager.kt index f65057f..010bb76 100644 --- a/app/src/main/java/com/nivesh/production/niveshfd/fd/db/PreferenceManager.kt +++ b/app/src/main/java/com/nivesh/production/niveshfd/fd/db/PreferenceManager.kt @@ -17,6 +17,8 @@ open class PreferenceManager(context: Context) : IPreferenceHelper { const val KEY_CLIENT_CODE = "ClientCode" const val KEY_GET_TOKEN = "GetToken" const val CLIENT_LANGUAGE = "LANGUAGE" + + const val ISFIRST_TIME = "IS FIRST TIME" } @@ -86,6 +88,16 @@ open class PreferenceManager(context: Context) : IPreferenceHelper { } + override fun setIsFirstTime(appName: Boolean) { + preferences[ISFIRST_TIME] = appName + } + + override fun getFirstTime(): Boolean { + return preferences[ISFIRST_TIME] ?: false + } + + + override fun clearPrefs() { preferences.edit().clear().apply() } diff --git a/app/src/main/java/com/nivesh/production/niveshfd/fd/interfaces/IPreferenceHelper.kt b/app/src/main/java/com/nivesh/production/niveshfd/fd/interfaces/IPreferenceHelper.kt index 5a98806..6b4ea1e 100644 --- a/app/src/main/java/com/nivesh/production/niveshfd/fd/interfaces/IPreferenceHelper.kt +++ b/app/src/main/java/com/nivesh/production/niveshfd/fd/interfaces/IPreferenceHelper.kt @@ -26,5 +26,8 @@ interface IPreferenceHelper { fun setLanguage(appName: String) fun getLanguage(): String + fun setIsFirstTime(appName: Boolean) + fun getFirstTime(): Boolean + fun clearPrefs() } \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/niveshfd/fd/util/Common.kt b/app/src/main/java/com/nivesh/production/niveshfd/fd/util/Common.kt index 609b3d1..9814f22 100644 --- a/app/src/main/java/com/nivesh/production/niveshfd/fd/util/Common.kt +++ b/app/src/main/java/com/nivesh/production/niveshfd/fd/util/Common.kt @@ -4,11 +4,13 @@ import android.Manifest import android.annotation.SuppressLint import android.app.Activity import android.app.AlertDialog +import android.app.Dialog import android.content.Context import android.content.Intent import android.content.pm.PackageManager import android.graphics.Color import android.graphics.drawable.GradientDrawable +import android.hardware.display.DisplayManager import android.net.ConnectivityManager import android.net.NetworkCapabilities import android.net.Uri @@ -17,9 +19,19 @@ import android.provider.Settings import android.telephony.TelephonyManager import android.text.TextUtils import android.text.format.DateFormat +import android.util.DisplayMetrics import android.util.Log import android.util.Patterns +import android.view.Display +import android.view.Gravity +import android.view.Window +import android.webkit.WebView +import android.webkit.WebViewClient +import android.widget.ImageView +import androidx.appcompat.app.ActionBar import androidx.core.app.ActivityCompat +import androidx.core.content.ContextCompat.getSystemService +import androidx.core.hardware.display.DisplayManagerCompat import com.google.android.material.textfield.MaterialAutoCompleteTextView import com.google.android.material.textfield.TextInputEditText import com.google.android.material.textfield.TextInputLayout @@ -136,6 +148,29 @@ class Common { builder.show() } + fun showWebViewDialogBottom(context: Context, url: String,height: Int){ + val dialog = Dialog(context) + dialog.window?.setBackgroundDrawableResource(android.R.color.transparent) + dialog.setContentView(R.layout.web_view_bottom_dialog) + val webView: WebView = dialog.findViewById(R.id.webView) + val imageCross: ImageView = dialog.findViewById(R.id.imageCross) + + imageCross.setOnClickListener { + dialog.dismiss() + } + webView.isScrollbarFadingEnabled = false + webView.isHorizontalScrollBarEnabled = false + webView.settings.javaScriptEnabled = true + webView.settings.userAgentString = "AndroidWebView" + webView.clearCache(true) + webView.loadUrl(url) + dialog.show() + val window: Window = dialog.window!! + window.setGravity(Gravity.BOTTOM) + window.setLayout(ActionBar.LayoutParams.MATCH_PARENT,(height-400)) + window.setWindowAnimations(R.style.DialogBottomAnimation) + } + fun showDialogWithTwoButtons(activity: Activity?, message: CharSequence?, title: String) { val builder = AlertDialog.Builder(activity) builder.setTitle(title) @@ -371,6 +406,5 @@ class Common { } return deviceInfo } - } } \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/adapters1/SectionsPagerAdapter1.kt b/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/adapters1/SectionsPagerAdapter1.kt index 0320d69..3ad3d47 100644 --- a/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/adapters1/SectionsPagerAdapter1.kt +++ b/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/adapters1/SectionsPagerAdapter1.kt @@ -13,6 +13,6 @@ class SectionsPagerAdapter1(manager: FragmentManager, private val fragments: Arr override fun getCount(): Int = fragments.size - override fun getPageTitle(position: Int): CharSequence = titles[position] + // override fun getPageTitle(position: Int): CharSequence = titles[position] } \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/activities1/BasActivity.kt b/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/activities1/BasActivity.kt new file mode 100644 index 0000000..d644182 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/activities1/BasActivity.kt @@ -0,0 +1,13 @@ +package com.nivesh.production.niveshfd.partnerOnBoarding.ui.activities1 + +import android.app.Activity +import android.os.Bundle + +class BasActivity : Activity() { + + lateinit var mActivity : Activity + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + mActivity = this; + } +} \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/activities1/RegisterActivity.kt b/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/activities1/RegisterActivity.kt index 73558a1..c4766a2 100644 --- a/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/activities1/RegisterActivity.kt +++ b/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/activities1/RegisterActivity.kt @@ -1,13 +1,15 @@ package com.nivesh.production.niveshfd.partnerOnBoarding.ui.activities1 import android.content.Intent +import android.os.Build import android.os.Bundle -import android.text.Editable -import android.text.TextWatcher -import com.nivesh.production.niveshfd.databinding.ActivityLoginBinding +import android.util.DisplayMetrics +import android.view.Display +import androidx.core.hardware.display.DisplayManagerCompat import com.nivesh.production.niveshfd.databinding.ActivityRegisterBinding +import com.nivesh.production.niveshfd.fd.db.PreferenceManager import com.nivesh.production.niveshfd.fd.ui.activity.BaseActivity -import com.nivesh.production.niveshfd.fd.util.Common +import com.nivesh.production.niveshfd.fd.util.Common.Companion.showWebViewDialogBottom class RegisterActivity : BaseActivity() { lateinit var binding: ActivityRegisterBinding @@ -23,22 +25,58 @@ class RegisterActivity : BaseActivity() { setContentView(this.root) } - binding.imgInfo.setOnClickListener{ + + binding.imgInfo.setOnClickListener { } - binding.btnInvestor.setOnClickListener{ - intent = Intent(this@RegisterActivity, RegisterActivity::class.java) + binding.btnInvestor.setOnClickListener { + intent = Intent(this@RegisterActivity, RegisterActivity::class.java) startActivity(intent) } - binding.btnDistributor.setOnClickListener{ - intent = Intent(this@RegisterActivity, RegisterActivity::class.java) - startActivity(intent) + binding.btnDistributor.setOnClickListener { + if (!PreferenceManager(this@RegisterActivity).getFirstTime()){ + intent = Intent(this@RegisterActivity, ViewPagerActivity::class.java) + intent.putExtra("type", 4) + startActivity(intent) + }else{ + intent = Intent(this@RegisterActivity, SignUpActivity::class.java) + intent.putExtra("type", 4) + startActivity(intent) + } } - binding.btnReferrer.setOnClickListener{ - intent = Intent(this@RegisterActivity, RegisterActivity::class.java) - startActivity(intent) + binding.btnReferrer.setOnClickListener { + if (!PreferenceManager(this@RegisterActivity).getFirstTime()){ + intent = Intent(this@RegisterActivity, ViewPagerActivity::class.java) + intent.putExtra("type", 3) + startActivity(intent) + }else{ + intent = Intent(this@RegisterActivity, SignUpActivity::class.java) + intent.putExtra("type", 3) + startActivity(intent) + } } + binding.imgInfo.setOnClickListener { + showWebViewDialogBottom( + this@RegisterActivity, + "https://smallbusiness.chron.com/create-dummy-webpage-51199.html", + getScreenHeight() + ) + } + } + private fun getScreenHeight(): Int { + val height: Int = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + val defaultDisplay = + DisplayManagerCompat.getInstance(this).getDisplay(Display.DEFAULT_DISPLAY) + val displayContext = createDisplayContext(defaultDisplay!!) + displayContext.resources.displayMetrics.heightPixels + } else { + val displayMetrics = DisplayMetrics() + @Suppress("DEPRECATION") + windowManager.defaultDisplay.getMetrics(displayMetrics) + displayMetrics.heightPixels + } + return height } } \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/activities1/SignUpActivity.kt b/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/activities1/SignUpActivity.kt index 53498e6..9ee5946 100644 --- a/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/activities1/SignUpActivity.kt +++ b/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/activities1/SignUpActivity.kt @@ -1,6 +1,9 @@ package com.nivesh.production.niveshfd.partnerOnBoarding.ui.activities1 +import android.os.Build import android.os.Bundle +import android.window.OnBackInvokedDispatcher +import androidx.activity.OnBackPressedCallback import com.nivesh.production.niveshfd.R import com.nivesh.production.niveshfd.databinding.ActivitySignupBinding import com.nivesh.production.niveshfd.fd.ui.activity.BaseActivity @@ -9,6 +12,7 @@ import com.nivesh.production.niveshfd.partnerOnBoarding.ui.fragments1.SignUpFrag class SignUpActivity : BaseActivity() { lateinit var binding: ActivitySignupBinding + var type : Int? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -16,6 +20,8 @@ class SignUpActivity : BaseActivity() { } private fun init() { + type = intent.getIntExtra("type", 0); + binding = ActivitySignupBinding.inflate(layoutInflater) binding.apply { setContentView(this.root) @@ -25,6 +31,30 @@ class SignUpActivity : BaseActivity() { .commit() } + @Deprecated("Deprecated in Java") + override fun onBackPressed() { + if (Build.VERSION.SDK_INT >= 33) { + onBackInvokedDispatcher.registerOnBackInvokedCallback( + OnBackInvokedDispatcher.PRIORITY_DEFAULT + ) { + exitOnBackPressed() + } + } else { + onBackPressedDispatcher.addCallback(this, object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + exitOnBackPressed() + } + }) + } + } + + private fun exitOnBackPressed() { + if (isTaskRoot) { + finish() + } else { + + } + } } diff --git a/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/activities1/ViewPagerActivity.kt b/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/activities1/ViewPagerActivity.kt index 6cfe980..12bb248 100644 --- a/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/activities1/ViewPagerActivity.kt +++ b/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/activities1/ViewPagerActivity.kt @@ -5,6 +5,7 @@ import android.os.Bundle import androidx.fragment.app.Fragment import androidx.viewpager.widget.ViewPager import com.nivesh.production.niveshfd.databinding.ActivityViewpagerBinding +import com.nivesh.production.niveshfd.fd.db.PreferenceManager import com.nivesh.production.niveshfd.fd.ui.activity.BaseActivity import com.nivesh.production.niveshfd.partnerOnBoarding.adapters1.DisableAdapter1 import com.nivesh.production.niveshfd.partnerOnBoarding.adapters1.SectionsPagerAdapter1 @@ -19,6 +20,7 @@ class ViewPagerActivity : BaseActivity() { private val stepOnePagerFragment = StepOnePagerFragment() private val stepTwoPagerFragment = StepTwoPagerFragment() private val stepThreePagerFragment = StepThreePagerFragment() + var type : Int? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) init() @@ -33,6 +35,10 @@ class ViewPagerActivity : BaseActivity() { } private fun setViewPager() { + + PreferenceManager(this@ViewPagerActivity).setIsFirstTime(true) + type = intent.getIntExtra("type", 0); + fragments = arrayOf( stepOnePagerFragment, stepTwoPagerFragment, @@ -44,6 +50,7 @@ class ViewPagerActivity : BaseActivity() { viewPager.adapter = sectionsPagerAdapter viewPager.setPagingEnabled(false) viewPager.offscreenPageLimit = 3 + binding.tabDots.setupWithViewPager(viewPager) viewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( position: Int, @@ -71,6 +78,10 @@ class ViewPagerActivity : BaseActivity() { } }) + + binding.tvSkip.setOnClickListener{ + stepFourApi() + } } // step 1 response @@ -91,6 +102,7 @@ class ViewPagerActivity : BaseActivity() { // step 4 response fun stepFourApi() { intent = Intent(this@ViewPagerActivity, SignUpActivity::class.java) + intent.putExtra("type", type) startActivity(intent) } diff --git a/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/fragments1/AlmostThereFragment.kt b/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/fragments1/AlmostThereFragment.kt new file mode 100644 index 0000000..3f479a3 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/fragments1/AlmostThereFragment.kt @@ -0,0 +1,192 @@ +package com.nivesh.production.niveshfd.partnerOnBoarding.ui.fragments1 + +import android.os.Bundle +import android.text.Editable +import android.text.TextWatcher +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import com.nivesh.production.niveshfd.databinding.FragmentAlmostThereBinding +import com.nivesh.production.niveshfd.fd.util.Common + +class AlmostThereFragment : Fragment() { + private var _binding: FragmentAlmostThereBinding? = null + private val binding get() = _binding!! + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? + ): View { + _binding = FragmentAlmostThereBinding.inflate(inflater, container, false) + return binding.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + init() + } + + private fun init() { + binding.edtDay.addTextChangedListener(object : TextWatcher { + override fun afterTextChanged(s: Editable?) {} + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {} + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + Common.removeError(binding.tlDay) + } + }) + binding.edtMonth.addTextChangedListener(object : TextWatcher { + override fun afterTextChanged(s: Editable?) {} + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {} + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + Common.removeError(binding.tlMonth) + } + }) + binding.edtYear.addTextChangedListener(object : TextWatcher { + override fun afterTextChanged(s: Editable?) {} + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {} + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + Common.removeError(binding.tlYear) + } + }) + + binding.edtFullName.addTextChangedListener(object : TextWatcher { + override fun afterTextChanged(s: Editable?) {} + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {} + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + Common.removeError(binding.tlFullName) + } + }) + + binding.edtEmail.addTextChangedListener(object : TextWatcher { + override fun afterTextChanged(s: Editable?) {} + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {} + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + Common.removeError(binding.tlEmail) + } + }) + + binding.edtAddressLine1.addTextChangedListener(object : TextWatcher { + override fun afterTextChanged(s: Editable?) {} + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {} + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + Common.removeError(binding.tlAddressLine1) + } + }) + + binding.edtPinCode.addTextChangedListener(object : TextWatcher { + override fun afterTextChanged(s: Editable?) {} + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {} + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + Common.removeError(binding.tlPinCode) + } + }) + + binding.spCity.setOnClickListener { + + } + + binding.spState.setOnClickListener { + + } + binding.cbCheck.setOnClickListener { + + } + + binding.tvTermsAndCondition.setOnClickListener{ + + } + binding.tvPrivacyPolicy.setOnClickListener{ + + } + binding.tvAgreement.setOnClickListener{ + + } + + binding.btnBack.setOnClickListener { + + } + + binding.btnNext.setOnClickListener { + if (validate()) { + // submit + } + } + + + } + + private fun validate(): Boolean { + return if (binding.edtDay.text.toString().isEmpty()) { // EditText + Common.commonErrorMethod( + binding.edtDay, + binding.tlDay, + "" + ) + } else if (binding.edtMonth.text.toString().isEmpty()) { // EditText + Common.commonErrorMethod( + binding.edtMonth, + binding.tlMonth, + "" + ) + } else if (binding.edtYear.text.toString().isEmpty()) { // EditText + Common.commonErrorMethod( + binding.edtYear, + binding.tlYear, + "" + ) + } else if (binding.edtFullName.text.toString().isEmpty()) { // EditText + Common.commonErrorMethod( + binding.edtFullName, + binding.tlFullName, + "" + ) + } else if (binding.edtEmail.text.toString().isEmpty()) { // EditText + Common.commonErrorMethod( + binding.edtFullName, + binding.tlFullName, + "" + ) + } else if (!Common.isValidEmail(binding.edtEmail.text.toString())) { // EditText + Common.commonErrorMethod( + binding.edtFullName, + binding.tlFullName, + "" + ) + } else if (binding.edtAddressLine1.text.toString().isEmpty()) { // EditText + Common.commonErrorMethod( + binding.edtAddressLine1, + binding.tlAddressLine1, + "" + ) + } else if (binding.edtPinCode.text.toString().isEmpty()) { // EditText + Common.commonErrorMethod( + binding.edtPinCode, + binding.tlPinCode, + "" + ) + } else if (binding.edtPinCode.text.toString().length != 6) { // EditText + Common.commonErrorMethod( + binding.edtPinCode, + binding.tlPinCode, + "" + ) + } else if (binding.spCity.text.toString().isEmpty()) { // EditText + Common.commonSpinnerErrorMethod( + binding.spCity, + binding.tlCity, + "" + ) + } else if (binding.spState.text.toString().isEmpty()) { // EditText + Common.commonSpinnerErrorMethod( + binding.spState, + binding.tlState, + "" + ) + }else if (!binding.cbCheck.isChecked) { // EditText + return false + } else { + return true + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/fragments1/BaseFragment.kt b/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/fragments1/BaseFragment.kt new file mode 100644 index 0000000..e68d2e1 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/fragments1/BaseFragment.kt @@ -0,0 +1,47 @@ +package com.nivesh.production.niveshfd.partnerOnBoarding.ui.fragments1 + +import android.app.Activity +import android.content.Context +import androidx.fragment.app.Fragment +import com.nivesh.production.niveshfd.fd.ui.activity.BaseActivity + +open class BaseFragment : Fragment() { + + private lateinit var mActivity: Activity + override fun onAttach(context: Context) { + super.onAttach(context) + mActivity = context as BaseActivity + } + + companion object { + fun addFragment( + activity: BaseActivity, + containerViewId: Int, + fragment: Fragment, + tag: String, + addToBackStack: Boolean + ) { + val fragmentTransaction = activity.supportFragmentManager.beginTransaction() + fragmentTransaction.add(containerViewId, fragment, tag) + if (addToBackStack) { + fragmentTransaction.addToBackStack(tag) + } + fragmentTransaction.commit() + } + + fun replaceFragment( + activity: BaseActivity, + containerViewId: Int, + fragment: Fragment, + tag: String, + addToBackStack: Boolean + ) { + val fragmentTransaction = activity.supportFragmentManager.beginTransaction() + fragmentTransaction.replace(containerViewId, fragment, tag) + if (addToBackStack) { + fragmentTransaction.addToBackStack(tag) + } + fragmentTransaction.commit() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/fragments1/GetStartedFragment.kt b/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/fragments1/GetStartedFragment.kt new file mode 100644 index 0000000..19c02d9 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/fragments1/GetStartedFragment.kt @@ -0,0 +1,64 @@ +package com.nivesh.production.niveshfd.partnerOnBoarding.ui.fragments1 + +import android.os.Build.VERSION_CODES.R +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import com.nivesh.production.niveshfd.databinding.FragmentGetStartedBinding +import com.nivesh.production.niveshfd.databinding.FragmentOtpBinding + +private const val ARG_PARAM1 = "param1" +private const val ARG_PARAM2 = "param2" + +class GetStartedFragment : BaseFragment() { + // TODO: Rename and change types of parameters + private var param1: String? = null + private var param2: String? = null + private var _binding: FragmentGetStartedBinding? = null + private val binding get() = _binding!! + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + arguments?.let { + param1 = it.getString(ARG_PARAM1) + param2 = it.getString(ARG_PARAM2) + } + } + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View { + // Inflate the layout for this fragment + _binding = FragmentGetStartedBinding.inflate(inflater, container, false) + return binding.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + init() + } + + private fun init() { + + + } + + companion object { + /** + * Use this factory method to create a new instance of + * this fragment using the provided parameters. + * + * @param param1 Parameter 1. + * @param param2 Parameter 2. + * @return A new instance of fragment GetStarted. + */ + // TODO: Rename and change types and number of parameters + @JvmStatic + fun newInstance(param1: String, param2: String) = + GetStartedFragment().apply { + arguments = Bundle().apply { + putString(ARG_PARAM1, param1) + putString(ARG_PARAM2, param2) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/fragments1/OTPFragment.kt b/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/fragments1/OTPFragment.kt index 0286ec1..deb6507 100644 --- a/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/fragments1/OTPFragment.kt +++ b/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/fragments1/OTPFragment.kt @@ -2,6 +2,7 @@ package com.nivesh.production.niveshfd.partnerOnBoarding.ui.fragments1 import android.os.Bundle import android.text.Editable +import android.text.InputFilter import android.text.TextWatcher import android.view.KeyEvent import android.view.LayoutInflater @@ -11,10 +12,10 @@ import android.widget.EditText import androidx.fragment.app.Fragment import com.nivesh.production.niveshfd.R import com.nivesh.production.niveshfd.databinding.FragmentOtpBinding -import com.nivesh.production.niveshfd.databinding.FragmentSignupBinding +import com.nivesh.production.niveshfd.fd.ui.activity.BaseActivity import com.nivesh.production.niveshfd.fd.util.Common -class OTPFragment : Fragment() { +class OTPFragment : BaseFragment() { private var _binding: FragmentOtpBinding? = null private val binding get() = _binding!! @@ -31,6 +32,14 @@ class OTPFragment : Fragment() { } private fun init() { + + binding.edtOTP1.filters = arrayOf(InputFilter.LengthFilter(1)) + binding.edtOTP2.filters = arrayOf(InputFilter.LengthFilter(1)) + binding.edtOTP3.filters = arrayOf(InputFilter.LengthFilter(1)) + binding.edtOTP4.filters = arrayOf(InputFilter.LengthFilter(1)) + binding.edtOTP5.filters = arrayOf(InputFilter.LengthFilter(1)) + binding.edtOTP6.filters = arrayOf(InputFilter.LengthFilter(1)) + binding.edtOTP1.addTextChangedListener(GenericTextWatcher(binding.edtOTP1, binding.edtOTP2)) binding.edtOTP2.addTextChangedListener(GenericTextWatcher(binding.edtOTP2, binding.edtOTP3)) binding.edtOTP3.addTextChangedListener(GenericTextWatcher(binding.edtOTP3, binding.edtOTP4)) @@ -41,19 +50,72 @@ class OTPFragment : Fragment() { binding.edtOTP1.setOnKeyListener(GenericKeyEvent(binding.edtOTP1, null)) binding.edtOTP2.setOnKeyListener(GenericKeyEvent(binding.edtOTP2, binding.edtOTP1)) binding.edtOTP3.setOnKeyListener(GenericKeyEvent(binding.edtOTP3, binding.edtOTP2)) - binding.edtOTP4.setOnKeyListener(GenericKeyEvent(binding.edtOTP4,binding.edtOTP3)) - binding.edtOTP5.setOnKeyListener(GenericKeyEvent(binding.edtOTP5,binding.edtOTP4)) - binding.edtOTP6.setOnKeyListener(GenericKeyEvent(binding.edtOTP6,binding.edtOTP5)) + binding.edtOTP4.setOnKeyListener(GenericKeyEvent(binding.edtOTP4, binding.edtOTP3)) + binding.edtOTP5.setOnKeyListener(GenericKeyEvent(binding.edtOTP5, binding.edtOTP4)) + binding.edtOTP6.setOnKeyListener(GenericKeyEvent(binding.edtOTP6, binding.edtOTP5)) + + binding.txtDigit.text = getString(R.string.sixDigitOTP).plus(" ").plus("+91.00000.00000") + + binding.txtResendOTP.setOnClickListener{ + + } + + binding.btnSubmit.setOnClickListener { + if (validate()) { + replaceFragment(activity as BaseActivity, R.id.signUpContainer,GetStartedFragment(),"GET STARTED", true) + } + } } private fun validate(): Boolean { - return false; + return if (binding.edtOTP1.text.toString().isEmpty()) { // EditText + Common.commonErrorMethod( + binding.edtOTP1, + binding.tlOTP1, + "" + ) + } else if (binding.edtOTP2.text.toString().isEmpty()) { // EditText + Common.commonErrorMethod( + binding.edtOTP2, + binding.tlOTP2, + "" + ) + } else if (binding.edtOTP3.text.toString().isEmpty()) { // EditText + Common.commonErrorMethod( + binding.edtOTP3, + binding.tlOTP3, + "" + ) + } else if (binding.edtOTP4.text.toString().isEmpty()) { // EditText + Common.commonErrorMethod( + binding.edtOTP4, + binding.tlOTP4, + "" + ) + } else if (binding.edtOTP5.text.toString().isEmpty()) { // EditText + Common.commonErrorMethod( + binding.edtOTP5, + binding.tlOTP5, + "" + ) + } else if (binding.edtOTP6.text.toString().isEmpty()) { // EditText + Common.commonErrorMethod( + binding.edtOTP6, + binding.tlOTP6, + "" + ) + } else { + return true + } } - class GenericKeyEvent internal constructor(private val currentView: EditText, private val previousView: EditText?) : View.OnKeyListener{ + class GenericKeyEvent internal constructor( + private val currentView: EditText, + private val previousView: EditText? + ) : View.OnKeyListener { override fun onKey(p0: View?, keyCode: Int, event: KeyEvent?): Boolean { - if(event!!.action == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_DEL && currentView.id != R.id.edtOTP1 && currentView.text.isEmpty()) { + if (event!!.action == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_DEL && currentView.id != R.id.edtOTP1 && currentView.text.isEmpty()) { //If current is empty then previous EditText's number will also be deleted previousView!!.text = null previousView.requestFocus() @@ -63,7 +125,10 @@ class OTPFragment : Fragment() { } } - class GenericTextWatcher internal constructor(private val currentView: View, private val nextView: View?) : TextWatcher { + class GenericTextWatcher internal constructor( + private val currentView: View, + private val nextView: View? + ) : TextWatcher { override fun afterTextChanged(editable: Editable) { // TODO Auto-generated method stub val text = editable.toString() when (currentView.id) { @@ -95,4 +160,5 @@ class OTPFragment : Fragment() { } + } \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/fragments1/SignUpFragment.kt b/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/fragments1/SignUpFragment.kt index 6c7b5da..037d684 100644 --- a/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/fragments1/SignUpFragment.kt +++ b/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/fragments1/SignUpFragment.kt @@ -2,19 +2,21 @@ package com.nivesh.production.niveshfd.partnerOnBoarding.ui.fragments1 import android.os.Bundle import android.text.Editable +import android.text.InputFilter import android.text.TextWatcher import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.Fragment -import com.nivesh.production.niveshfd.R import com.nivesh.production.niveshfd.databinding.FragmentSignupBinding +import com.nivesh.production.niveshfd.fd.ui.activity.BaseActivity import com.nivesh.production.niveshfd.fd.util.Common -class SignUpFragment : Fragment() { + +class SignUpFragment : BaseFragment() { private var _binding: FragmentSignupBinding? = null private val binding get() = _binding!! + override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View { @@ -28,6 +30,7 @@ class SignUpFragment : Fragment() { } private fun init() { + binding.edtMobileNumber.filters = arrayOf(InputFilter.LengthFilter(10)) binding.edtMobileNumber.addTextChangedListener(object : TextWatcher { override fun afterTextChanged(s: Editable?) {} override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {} @@ -38,33 +41,41 @@ class SignUpFragment : Fragment() { binding.btnSignUp.setOnClickListener { if (validate()) { - + replaceFragment( + activity as BaseActivity, + com.nivesh.production.niveshfd.R.id.signUpContainer, + OTPFragment(), + "OTP", + true + ) } } } + private fun validate(): Boolean { return if (binding.edtMobileNumber.text.toString().isEmpty()) { // EditText Common.commonErrorMethod( binding.edtMobileNumber, binding.tlMobileNumber, - getString(R.string.emptyMobileNumber) + getString(com.nivesh.production.niveshfd.R.string.emptyMobileNumber) ) - } else if (!Common.isIndianMobileNo(binding.edtMobileNumber.text.toString())) { // EditText + } else if (binding.edtMobileNumber.text?.length != 10) { // EditText Common.commonErrorMethod( binding.edtMobileNumber, binding.tlMobileNumber, - getString(R.string.inValidIndianMobileNumber) + getString(com.nivesh.production.niveshfd.R.string.inValidMobileNumber) ) - } else if (binding.edtMobileNumber.text?.length != 10) { // EditText + } else if (!Common.isIndianMobileNo(binding.edtMobileNumber.text.toString())) { // EditText Common.commonErrorMethod( binding.edtMobileNumber, binding.tlMobileNumber, - getString(R.string.inValidMobileNumber) + getString(com.nivesh.production.niveshfd.R.string.inValidIndianMobileNumber) ) } else { return true } } + } \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/fragments1/StepThreePagerFragment.kt b/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/fragments1/StepThreePagerFragment.kt index 9a23cf3..447f122 100644 --- a/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/fragments1/StepThreePagerFragment.kt +++ b/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/fragments1/StepThreePagerFragment.kt @@ -30,8 +30,8 @@ class StepThreePagerFragment : Fragment() { (activity as ViewPagerActivity).stepFourApi() } - binding.btnNext.setOnClickListener { - (activity as ViewPagerActivity).stepThreeApi() + binding.btnBack.setOnClickListener { + (activity as ViewPagerActivity).stepTwoApi() } } diff --git a/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/fragments1/StepTwoPagerFragment.kt b/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/fragments1/StepTwoPagerFragment.kt index a60752e..4691a08 100644 --- a/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/fragments1/StepTwoPagerFragment.kt +++ b/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/fragments1/StepTwoPagerFragment.kt @@ -30,7 +30,7 @@ class StepTwoPagerFragment : Fragment() { (activity as ViewPagerActivity).stepThreeApi() } binding.btnBack.setOnClickListener { - (activity as ViewPagerActivity).stepTwoApi() + (activity as ViewPagerActivity).stepOneApi() } } } \ No newline at end of file diff --git a/app/src/main/res/anim/slide_down.xml b/app/src/main/res/anim/slide_down.xml new file mode 100644 index 0000000..4be7711 --- /dev/null +++ b/app/src/main/res/anim/slide_down.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/slide_up.xml b/app/src/main/res/anim/slide_up.xml new file mode 100644 index 0000000..e19132f --- /dev/null +++ b/app/src/main/res/anim/slide_up.xml @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/app/src/main/res/drawable/default_pager_dot.xml b/app/src/main/res/drawable/default_pager_dot.xml new file mode 100644 index 0000000..713ba10 --- /dev/null +++ b/app/src/main/res/drawable/default_pager_dot.xml @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/pager_1.png b/app/src/main/res/drawable/pager_1.png new file mode 100644 index 0000000..8b1da12 Binary files /dev/null and b/app/src/main/res/drawable/pager_1.png differ diff --git a/app/src/main/res/drawable/pager_2.png b/app/src/main/res/drawable/pager_2.png new file mode 100644 index 0000000..9987985 Binary files /dev/null and b/app/src/main/res/drawable/pager_2.png differ diff --git a/app/src/main/res/drawable/pager_3.png b/app/src/main/res/drawable/pager_3.png new file mode 100644 index 0000000..e736d49 Binary files /dev/null and b/app/src/main/res/drawable/pager_3.png differ diff --git a/app/src/main/res/drawable/round_corner_top.xml b/app/src/main/res/drawable/round_corner_top.xml new file mode 100644 index 0000000..8d7cdeb --- /dev/null +++ b/app/src/main/res/drawable/round_corner_top.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selected_pager_dot.xml b/app/src/main/res/drawable/selected_pager_dot.xml new file mode 100644 index 0000000..22ac7a6 --- /dev/null +++ b/app/src/main/res/drawable/selected_pager_dot.xml @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/signup.png b/app/src/main/res/drawable/signup.png new file mode 100644 index 0000000..863343c Binary files /dev/null and b/app/src/main/res/drawable/signup.png differ diff --git a/app/src/main/res/drawable/svg_indicator_bg.xml b/app/src/main/res/drawable/svg_indicator_bg.xml new file mode 100644 index 0000000..4bd629e --- /dev/null +++ b/app/src/main/res/drawable/svg_indicator_bg.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/tab_pager_selector.xml b/app/src/main/res/drawable/tab_pager_selector.xml new file mode 100644 index 0000000..9887a8c --- /dev/null +++ b/app/src/main/res/drawable/tab_pager_selector.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_register.xml b/app/src/main/res/layout/activity_register.xml index 14cd15f..ffef1a3 100644 --- a/app/src/main/res/layout/activity_register.xml +++ b/app/src/main/res/layout/activity_register.xml @@ -50,7 +50,7 @@ android:id="@+id/txtAccount" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginStart="@dimen/margin_20" + android:layout_marginStart="@dimen/margin_15" android:layout_marginTop="@dimen/margin_15" android:maxLines="2" android:padding="@dimen/margin_5" diff --git a/app/src/main/res/layout/activity_viewpager.xml b/app/src/main/res/layout/activity_viewpager.xml index d4e6fa9..babf141 100644 --- a/app/src/main/res/layout/activity_viewpager.xml +++ b/app/src/main/res/layout/activity_viewpager.xml @@ -1,49 +1,9 @@ - - - - - - - - - - - - - + android:layout_height="match_parent" + android:orientation="vertical"> + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_almost_there.xml b/app/src/main/res/layout/fragment_almost_there.xml new file mode 100644 index 0000000..bc264f2 --- /dev/null +++ b/app/src/main/res/layout/fragment_almost_there.xml @@ -0,0 +1,398 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_otp.xml b/app/src/main/res/layout/fragment_otp.xml index c19aa05..b059591 100644 --- a/app/src/main/res/layout/fragment_otp.xml +++ b/app/src/main/res/layout/fragment_otp.xml @@ -4,15 +4,15 @@ xmlns:tool="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" + android:id="@+id/containerOTP" android:orientation="vertical"> @@ -21,7 +21,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="@dimen/margin_5" - android:text="We sent a code to your mobile number" + android:text="@string/mobNoText" android:textColor="@color/black" android:textSize="@dimen/text_size_20" android:textStyle="bold" @@ -33,153 +33,258 @@ android:id="@+id/txtDigit" android:layout_width="match_parent" android:layout_height="wrap_content" + android:layout_marginStart="@dimen/margin_10" android:layout_marginTop="@dimen/margin_5" - android:text="Enter the 6-digit verification code sent to +91-00000-00000" android:textColor="@color/black" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/txtSignUp" /> - + + + + + app:layout_constraintTop_toBottomOf="@+id/txtCode"> + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> + tool:ignore="TextContrastCheck,SpeakableTextPresentCheck" /> + + app:layout_constraintStart_toEndOf="@+id/tlOTP1" + app:layout_constraintTop_toTopOf="parent"> + tool:ignore="TextContrastCheck,SpeakableTextPresentCheck" /> + + android:gravity="center" + app:layout_constraintStart_toEndOf="@+id/tlOTP2" + app:layout_constraintTop_toTopOf="parent"> + tool:ignore="TextContrastCheck,SpeakableTextPresentCheck" /> + + android:gravity="center" + app:layout_constraintStart_toEndOf="@+id/tlOTP3" + app:layout_constraintTop_toTopOf="parent"> + tool:ignore="TextContrastCheck,SpeakableTextPresentCheck" /> + + app:layout_constraintStart_toEndOf="@+id/tlOTP4" + app:layout_constraintTop_toTopOf="parent"> + tool:ignore="TextContrastCheck,SpeakableTextPresentCheck" /> + + app:layout_constraintStart_toEndOf="@+id/tlOTP5" + app:layout_constraintTop_toTopOf="parent"> + tool:ignore="TextContrastCheck,SpeakableTextPresentCheck,TouchTargetSizeCheck" /> - + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_pager_step_one.xml b/app/src/main/res/layout/fragment_pager_step_one.xml index edfd79e..2a8c176 100644 --- a/app/src/main/res/layout/fragment_pager_step_one.xml +++ b/app/src/main/res/layout/fragment_pager_step_one.xml @@ -6,32 +6,26 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center_vertical" - android:background="@color/NiveshColorAppBg" + android:background="@drawable/pager_1" tool:context="com.nivesh.production.niveshfd.partnerOnBoarding.ui.fragments1.StepOnePagerFragment"> - - -