Commit a9f50c61 authored by shohboz's avatar shohboz

[ADD] MUS-136 Feature, add forget password screens

parent 346220d6
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="deploymentTargetDropDown">
<targetSelectedWithDropDown>
<Target>
<type value="QUICK_BOOT_TARGET" />
<deviceKey>
<Key>
<type value="VIRTUAL_DEVICE_PATH" />
<value value="$USER_HOME$/.android/avd/Pixel_3_API_30.avd" />
</Key>
</deviceKey>
</Target>
</targetSelectedWithDropDown>
<timeTargetWasSelectedWithDropDown value="2021-11-29T09:58:34.680451Z" />
</component>
</project>
\ No newline at end of file
...@@ -4,9 +4,16 @@ ...@@ -4,9 +4,16 @@
<option name="filePathToZoomLevelMap"> <option name="filePathToZoomLevelMap">
<map> <map>
<entry key="app/src/main/res/drawable/bgn_lang.xml" value="0.2796296296296296" /> <entry key="app/src/main/res/drawable/bgn_lang.xml" value="0.2796296296296296" />
<entry key="app/src/main/res/drawable/bgn_pin_btn.xml" value="0.26525096525096525" />
<entry key="app/src/main/res/drawable/bgn_pin_checked.xml" value="0.26525096525096525" />
<entry key="app/src/main/res/drawable/bgn_ver_checked.xml" value="0.26525096525096525" />
<entry key="app/src/main/res/drawable/bgn_ver_unchecked.xml" value="0.26525096525096525" />
<entry key="app/src/main/res/drawable/button_default_bg.xml" value="0.30092592592592593" /> <entry key="app/src/main/res/drawable/button_default_bg.xml" value="0.30092592592592593" />
<entry key="app/src/main/res/drawable/button_false_bg.xml" value="0.30092592592592593" /> <entry key="app/src/main/res/drawable/button_false_bg.xml" value="0.30092592592592593" />
<entry key="app/src/main/res/drawable/button_selector.xml" value="0.30092592592592593" /> <entry key="app/src/main/res/drawable/button_selector.xml" value="0.30092592592592593" />
<entry key="app/src/main/res/drawable/edit_text_bgn.xml" value="0.26525096525096525" />
<entry key="app/src/main/res/drawable/edit_text_checked.xml" value="0.26525096525096525" />
<entry key="app/src/main/res/drawable/edit_text_unchecked.xml" value="0.26525096525096525" />
<entry key="app/src/main/res/drawable/ic_background.xml" value="0.2759259259259259" /> <entry key="app/src/main/res/drawable/ic_background.xml" value="0.2759259259259259" />
<entry key="app/src/main/res/drawable/ic_baseline_account_box.xml" value="0.2796296296296296" /> <entry key="app/src/main/res/drawable/ic_baseline_account_box.xml" value="0.2796296296296296" />
<entry key="app/src/main/res/drawable/ic_baseline_arrow_back.xml" value="0.2759259259259259" /> <entry key="app/src/main/res/drawable/ic_baseline_arrow_back.xml" value="0.2759259259259259" />
...@@ -14,6 +21,7 @@ ...@@ -14,6 +21,7 @@
<entry key="app/src/main/res/drawable/ic_baseline_check_circle.xml" value="0.20694444444444443" /> <entry key="app/src/main/res/drawable/ic_baseline_check_circle.xml" value="0.20694444444444443" />
<entry key="app/src/main/res/drawable/ic_baseline_home.xml" value="0.2796296296296296" /> <entry key="app/src/main/res/drawable/ic_baseline_home.xml" value="0.2796296296296296" />
<entry key="app/src/main/res/drawable/ic_baseline_keyboard_arrow_right.xml" value="0.2796296296296296" /> <entry key="app/src/main/res/drawable/ic_baseline_keyboard_arrow_right.xml" value="0.2796296296296296" />
<entry key="app/src/main/res/drawable/ic_fingerprint.xml" value="0.26525096525096525" />
<entry key="app/src/main/res/drawable/ic_group_12.xml" value="0.2796296296296296" /> <entry key="app/src/main/res/drawable/ic_group_12.xml" value="0.2796296296296296" />
<entry key="app/src/main/res/drawable/ic_russia.xml" value="0.2796296296296296" /> <entry key="app/src/main/res/drawable/ic_russia.xml" value="0.2796296296296296" />
<entry key="app/src/main/res/drawable/ic_vector_error.xml" value="0.20694444444444443" /> <entry key="app/src/main/res/drawable/ic_vector_error.xml" value="0.20694444444444443" />
...@@ -23,16 +31,23 @@ ...@@ -23,16 +31,23 @@
<entry key="app/src/main/res/layout/activity_pin.xml" value="0.3052536231884058" /> <entry key="app/src/main/res/layout/activity_pin.xml" value="0.3052536231884058" />
<entry key="app/src/main/res/layout/activity_splash.xml" value="0.29936594202898553" /> <entry key="app/src/main/res/layout/activity_splash.xml" value="0.29936594202898553" />
<entry key="app/src/main/res/layout/button_selector.xml" value="0.33242753623188404" /> <entry key="app/src/main/res/layout/button_selector.xml" value="0.33242753623188404" />
<entry key="app/src/main/res/layout/fragment_base.xml" value="0.23497267759562843" />
<entry key="app/src/main/res/layout/fragment_biometric.xml" value="0.23497267759562843" />
<entry key="app/src/main/res/layout/fragment_blank.xml" value="0.18385416666666668" /> <entry key="app/src/main/res/layout/fragment_blank.xml" value="0.18385416666666668" />
<entry key="app/src/main/res/layout/fragment_enter_password.xml" value="0.22" /> <entry key="app/src/main/res/layout/fragment_enter_password.xml" value="0.22" />
<entry key="app/src/main/res/layout/fragment_forget_password.xml" value="0.21174863387978143" /> <entry key="app/src/main/res/layout/fragment_forget_password.xml" value="0.21174863387978143" />
<entry key="app/src/main/res/layout/fragment_home.xml" value="0.18385416666666668" /> <entry key="app/src/main/res/layout/fragment_home.xml" value="0.18385416666666668" />
<entry key="app/src/main/res/layout/fragment_login.xml" value="0.2" /> <entry key="app/src/main/res/layout/fragment_login.xml" value="0.2" />
<entry key="app/src/main/res/layout/fragment_password.xml" value="0.2" /> <entry key="app/src/main/res/layout/fragment_password.xml" value="0.2" />
<entry key="app/src/main/res/layout/fragment_pin.xml" value="0.23497267759562843" />
<entry key="app/src/main/res/layout/fragment_pin_lock.xml" value="0.23497267759562843" />
<entry key="app/src/main/res/layout/fragment_progress.xml" value="0.33242753623188404" /> <entry key="app/src/main/res/layout/fragment_progress.xml" value="0.33242753623188404" />
<entry key="app/src/main/res/layout/fragment_register.xml" value="0.33242753623188404" /> <entry key="app/src/main/res/layout/fragment_register.xml" value="0.33242753623188404" />
<entry key="app/src/main/res/layout/fragment_verification.xml" value="0.2" /> <entry key="app/src/main/res/layout/fragment_verification.xml" value="0.2" />
<entry key="app/src/main/res/layout/item_confirm.xml" value="0.23497267759562843" />
<entry key="app/src/main/res/layout/item_home.xml" value="0.29936594202898553" /> <entry key="app/src/main/res/layout/item_home.xml" value="0.29936594202898553" />
<entry key="app/src/main/res/layout/item_pin.xml" value="0.23497267759562843" />
<entry key="app/src/main/res/layout/layout_ask_create_task.xml" value="0.22643442622950818" />
<entry key="app/src/main/res/menu/bottom_nav_menu.xml" value="0.3416666666666667" /> <entry key="app/src/main/res/menu/bottom_nav_menu.xml" value="0.3416666666666667" />
</map> </map>
</option> </option>
......
package uz.ssd.mobiuz package uz.ssd.mobiuz
import android.content.Intent import android.content.Intent
import android.graphics.Color
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import android.view.WindowManager
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import uz.ssd.mobiuz.databinding.ActivityLanguageBinding import uz.ssd.mobiuz.databinding.ActivityLanguageBinding
......
package uz.ssd.mobiuz package uz.ssd.mobiuz
import android.content.Intent import android.content.Intent
import android.graphics.Color
import android.os.Bundle import android.os.Bundle
import android.view.WindowManager import android.view.WindowManager
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
...@@ -24,7 +25,7 @@ class SplashActivity : AppCompatActivity() { ...@@ -24,7 +25,7 @@ class SplashActivity : AppCompatActivity() {
_bn = ActivitySplashBinding.inflate(layoutInflater) _bn = ActivitySplashBinding.inflate(layoutInflater)
setContentView(bn.root) setContentView(bn.root)
window.navigationBarColor = this.resources.getColor(R.color.red_dark)
lifecycleScope.launchWhenCreated { lifecycleScope.launchWhenCreated {
delay(1000) delay(1000)
if (pref.language.isEmpty()) { if (pref.language.isEmpty()) {
......
...@@ -39,4 +39,10 @@ class SharedPref @Inject constructor(@ApplicationContext context: Context) { ...@@ -39,4 +39,10 @@ class SharedPref @Inject constructor(@ApplicationContext context: Context) {
mySharedPref.edit().putString(::language.name, value).apply() mySharedPref.edit().putString(::language.name, value).apply()
} }
var pin_code: String
get() = mySharedPref.getString(::pin_code.name, "")?:""
set(value) {
mySharedPref.edit().putString(::pin_code.name, value).apply()
}
} }
\ No newline at end of file
package uz.ssd.mobiuz.ui.auth
import android.os.Bundle
import android.view.View
import androidx.fragment.app.viewModels
import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment
import dagger.hilt.android.AndroidEntryPoint
import uz.ssd.mobiuz.R
import uz.ssd.mobiuz.databinding.FragmentForgetPasswordBinding
import uz.ssd.mobiuz.ui.base.BaseFragment
@AndroidEntryPoint
class ForgetPasswordFragment : BaseFragment(R.layout.fragment_forget_password) {
private var _bn: FragmentForgetPasswordBinding? = null
private val bn get() = _bn ?: throw NullPointerException("cannot inflate")
private val viewModel: AuthViewModel by viewModels()
private val navController: NavController by lazy(LazyThreadSafetyMode.NONE) { NavHostFragment.findNavController(this) }
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
_bn = FragmentForgetPasswordBinding.bind(view)
setUpUI()
collects()
}
override fun setUpUI() {
}
override fun collects() {
}
override fun onDestroy() {
_bn = null
super.onDestroy()
}
}
\ No newline at end of file
...@@ -71,7 +71,7 @@ class LoginFragment : BaseFragment(R.layout.fragment_login) { ...@@ -71,7 +71,7 @@ class LoginFragment : BaseFragment(R.layout.fragment_login) {
is UiStateObject.SUCCESS -> { is UiStateObject.SUCCESS -> {
showProgressDialog(false) showProgressDialog(false)
if (phone != "+998949125150") { if (phone != "+998999999999") {
navController.navigate(R.id.enterPasswordFragment, null, Utils.navOptions()) navController.navigate(R.id.enterPasswordFragment, null, Utils.navOptions())
} else { } else {
navController.navigate(R.id.passwordFragment, bundleOf(CONSTANTS.PHONE to phoneRaw), Utils.navOptions()) navController.navigate(R.id.passwordFragment, bundleOf(CONSTANTS.PHONE to phoneRaw), Utils.navOptions())
......
...@@ -50,7 +50,7 @@ class PasswordFragment : BaseFragment(R.layout.fragment_password) { ...@@ -50,7 +50,7 @@ class PasswordFragment : BaseFragment(R.layout.fragment_password) {
txtForgetPassword.setOnClickListener(object : ButtonClick() { txtForgetPassword.setOnClickListener(object : ButtonClick() {
override fun onSingleClick(v: View?) { override fun onSingleClick(v: View?) {
navController.navigate(R.id.forgetPasswordFragment,null,Utils.navOptions()) navController.navigate(R.id.forgetLoginFragment,null,Utils.navOptions())
} }
}) })
......
package uz.ssd.mobiuz.ui.forget
import android.os.Bundle
import android.view.View
import androidx.core.os.bundleOf
import androidx.fragment.app.viewModels
import androidx.lifecycle.lifecycleScope
import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.flow.collect
import uz.ssd.mobiuz.R
import uz.ssd.mobiuz.databinding.FragmentLoginBinding
import uz.ssd.mobiuz.model.UserAuth
import uz.ssd.mobiuz.network.model.UiStateObject
import uz.ssd.mobiuz.ui.auth.AuthViewModel
import uz.ssd.mobiuz.ui.base.BaseFragment
import uz.ssd.mobiuz.ui.global.TextWatcherWrapper
import uz.ssd.mobiuz.utils.ButtonClick
import uz.ssd.mobiuz.utils.CONSTANTS
import uz.ssd.mobiuz.utils.Utils
import uz.ssd.mobiuz.utils.extensions.customLog
import uz.ssd.mobiuz.utils.extensions.showMessage
@AndroidEntryPoint
class ForgetLoginFragment : BaseFragment(R.layout.fragment_login) {
private var _bn: FragmentLoginBinding? = null
private val bn get() = _bn ?: throw NullPointerException("cannot inflate")
private val navController: NavController by lazy(LazyThreadSafetyMode.NONE) { NavHostFragment.findNavController(this) }
var phone = ""
var phoneRaw = ""
private val viewModel: AuthViewModel by viewModels()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
_bn = FragmentLoginBinding.bind(view)
setUpUI()
collects()
}
override fun setUpUI() {
bn.apply {
txtEnterPhone.text = "Забыли пароль?"
inputPhone.addTextChangedListener(object : TextWatcherWrapper(){
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
super.onTextChanged(s, start, before, count)
customLog("s=${s?.toString()?.length}")
btnLogin.isEnabled = inputPhone.text.toString().trim().length == 17
}
})
btnLogin.setOnClickListener(object : ButtonClick() {
override fun onSingleClick(v: View?) {
phone = "+998" + inputPhone.unmaskedText.toString().trim()
phoneRaw = inputPhone.text.toString().trim()
viewModel.login(UserAuth(phone, "password"))
}
})
toolbar.setNavigationOnClickListener {
navController.navigateUp()
}
}
}
override fun collects() {
viewLifecycleOwner.lifecycleScope.launchWhenStarted {
viewModel.loginUiState.collect {
when (it) {
is UiStateObject.SUCCESS -> {
showProgressDialog(false)
navController.navigate(R.id.forgetVerificationFragment, null, Utils.navOptions())
}
is UiStateObject.ERROR -> {
showProgressDialog(false)
showMessage(it.message)
}
is UiStateObject.LOADING -> {
showProgressDialog(true)
}
else -> Unit
}
}
}
}
override fun onDestroy() {
_bn = null
super.onDestroy()
}
}
package uz.ssd.mobiuz.ui.forget
import uz.ssd.mobiuz.ui.auth.AuthViewModel
import android.os.Bundle
import android.view.View
import androidx.core.view.isVisible
import androidx.fragment.app.viewModels
import androidx.lifecycle.lifecycleScope
import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.flow.collect
import uz.ssd.mobiuz.R
import uz.ssd.mobiuz.databinding.FragmentEnterPasswordBinding
import uz.ssd.mobiuz.model.UserAuth
import uz.ssd.mobiuz.network.model.UiStateObject
import uz.ssd.mobiuz.ui.base.BaseFragment
import uz.ssd.mobiuz.ui.global.TextWatcherWrapper
import uz.ssd.mobiuz.utils.ButtonClick
import uz.ssd.mobiuz.utils.Utils
import uz.ssd.mobiuz.utils.extensions.showMessage
@AndroidEntryPoint
class ForgetPasswordFragment : BaseFragment(R.layout.fragment_enter_password) {
private var _bn: FragmentEnterPasswordBinding? = null
private val bn get() = _bn ?: throw NullPointerException("cannot inflate")
private val navController: NavController by lazy(LazyThreadSafetyMode.NONE) { NavHostFragment.findNavController(this) }
private val viewModel: AuthViewModel by viewModels()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
_bn = FragmentEnterPasswordBinding.bind(view)
setUpUI()
collects()
}
override fun setUpUI() {
bn.apply {
inputPassword.addTextChangedListener(object : TextWatcherWrapper() {
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
super.onTextChanged(s, start, before, count)
txtCheckPassword.isVisible = (s.toString().length < 5)
}
})
inputConfirm.addTextChangedListener(object : TextWatcherWrapper() {
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
super.onTextChanged(s, start, before, count)
if (s.toString().length > 5 && s.toString() == inputPassword.text.toString().trim()) {
imageCheck.setImageResource(R.drawable.ic_baseline_check_circle)
txtCheckConfirm.text = "Пароли совпали"
txtCheckConfirm.setTextColor(requireActivity().resources.getColor(R.color.green))
btnLogin.isEnabled = true
} else {
imageCheck.setImageResource(R.drawable.ic_vector_error)
txtCheckConfirm.text = "Пароли не совпали"
btnLogin.isEnabled = true
txtCheckConfirm.setTextColor(requireActivity().resources.getColor(R.color.red))
}
imageCheck.isVisible = true
txtCheckConfirm.isVisible = true
}
})
btnLogin.setOnClickListener(object : ButtonClick() {
override fun onSingleClick(v: View?) {
val phone = inputPassword.text.toString().trim()
viewModel.login(UserAuth(phone, "password"))
}
})
toolbar.setNavigationOnClickListener {
navController.navigateUp()
}
}
}
override fun collects() {
viewLifecycleOwner.lifecycleScope.launchWhenStarted {
viewModel.loginUiState.collect {
when (it) {
is UiStateObject.SUCCESS -> {
showProgressDialog(false)
navController.navigate(R.id.pinFragment, null, Utils.navOptions())
}
is UiStateObject.ERROR -> {
showProgressDialog(false)
showMessage(it.message)
}
is UiStateObject.LOADING -> {
showProgressDialog(true)
}
else -> Unit
}
}
}
}
override fun onDestroy() {
_bn = null
super.onDestroy()
}
}
\ No newline at end of file
package uz.ssd.mobiuz.utils.extensions
import android.content.Context
import android.view.View
import android.view.inputmethod.InputMethodManager
fun View.hideKeyboard(): Boolean {
try {
val inputMethodManager =
context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
return inputMethodManager.hideSoftInputFromWindow(windowToken, 0)
} catch (ignored: RuntimeException) {
}
return false
}
fun View.showKeyboard() {
val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
this.requestFocus()
imm.showSoftInput(this, 0)
}
\ No newline at end of file
...@@ -14,4 +14,7 @@ ...@@ -14,4 +14,7 @@
<corners android:radius="@dimen/_6sdp"/> <corners android:radius="@dimen/_6sdp"/>
</shape> </shape>
</item> </item>
<item android:drawable="@drawable/edit_text_checked" android:state_focused="true"/>
<item android:drawable="@drawable/edit_text_unchecked" android:state_focused="false"/>
</selector> </selector>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/edit_text_checked" android:state_focused="true"/>
<item android:drawable="@drawable/edit_text_unchecked" android:state_focused="false"/>
</selector>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke
android:width="1.5dp"
android:color="@color/red" />
<corners
android:radius="6dp" />
<solid android:color="#FFFFFF" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners
android:radius="6dp" />
<solid android:color="@color/lang_bgn" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
...@@ -12,77 +11,87 @@ ...@@ -12,77 +11,87 @@
android:scaleType="fitXY" android:scaleType="fitXY"
android:src="@drawable/background" android:src="@drawable/background"
android:layout_marginTop="@dimen/_40sdp" android:layout_marginTop="@dimen/_40sdp"
android:layout_height="@dimen/_280sdp"/> android:layout_weight="1"
android:layout_height="0dp"/>
<TextView
android:layout_width="wrap_content"
android:text="@string/choose_lang"
android:layout_gravity="start"
android:textColor="@color/black"
android:textStyle="bold"
android:textSize="16sp"
android:layout_marginStart="@dimen/_12sdp"
android:layout_marginBottom="@dimen/_12sdp"
android:layout_height="wrap_content"/>
<LinearLayout
android:layout_width="match_parent"
android:gravity="center"
android:id="@+id/uzbek_lang"
android:layout_marginHorizontal="@dimen/_12sdp"
android:paddingVertical="@dimen/_12sdp"
android:background="@drawable/bgn_lang"
android:layout_height="wrap_content">
<ImageView
android:layout_width="wrap_content"
android:src="@drawable/ic_uzbekistan"
android:layout_height="wrap_content"/>
<TextView
android:layout_width="wrap_content"
android:text="@string/uzbek"
android:textSize="14dp"
android:layout_marginStart="@dimen/_12sdp"
android:layout_height="wrap_content"/>
</LinearLayout>
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:gravity="center" android:layout_height="0dp"
android:id="@+id/russian_lang" android:orientation="vertical"
android:layout_marginVertical="@dimen/_12sdp" android:layout_weight="1.2">
android:layout_marginHorizontal="@dimen/_12sdp"
android:paddingVertical="@dimen/_12sdp"
android:background="@drawable/bgn_lang"
android:layout_height="wrap_content">
<ImageView
android:layout_width="wrap_content"
android:src="@drawable/ic_russia"
android:layout_height="wrap_content"/>
<TextView
android:layout_width="wrap_content"
android:text="@string/russian"
android:textSize="14dp"
android:layout_marginStart="@dimen/_12sdp"
android:layout_height="wrap_content"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:gravity="center"
android:id="@+id/english_lang"
android:layout_marginHorizontal="@dimen/_12sdp"
android:paddingVertical="@dimen/_12sdp"
android:background="@drawable/bgn_lang"
android:layout_height="wrap_content">
<ImageView
android:layout_width="wrap_content"
android:src="@drawable/ic_united_kingdom"
android:layout_height="wrap_content"/>
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:text="@string/english" android:text="@string/choose_lang"
android:textSize="14dp" android:layout_gravity="start"
android:textColor="@color/black"
android:textStyle="bold"
android:textSize="16sp"
android:layout_marginStart="@dimen/_12sdp" android:layout_marginStart="@dimen/_12sdp"
android:layout_marginBottom="@dimen/_12sdp"
android:layout_height="wrap_content"/> android:layout_height="wrap_content"/>
<LinearLayout
android:layout_width="match_parent"
android:gravity="center"
android:id="@+id/uzbek_lang"
android:layout_marginHorizontal="@dimen/_12sdp"
android:paddingVertical="@dimen/_12sdp"
android:background="@drawable/bgn_lang"
android:layout_height="wrap_content">
<ImageView
android:layout_width="wrap_content"
android:src="@drawable/ic_uzbekistan"
android:layout_height="wrap_content"/>
<TextView
android:layout_width="wrap_content"
android:text="@string/uzbek"
android:textSize="14dp"
android:layout_marginStart="@dimen/_12sdp"
android:layout_height="wrap_content"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:gravity="center"
android:id="@+id/russian_lang"
android:layout_marginVertical="@dimen/_12sdp"
android:layout_marginHorizontal="@dimen/_12sdp"
android:paddingVertical="@dimen/_12sdp"
android:background="@drawable/bgn_lang"
android:layout_height="wrap_content">
<ImageView
android:layout_width="wrap_content"
android:src="@drawable/ic_russia"
android:layout_height="wrap_content"/>
<TextView
android:layout_width="wrap_content"
android:text="@string/russian"
android:textSize="14dp"
android:layout_marginStart="@dimen/_12sdp"
android:layout_height="wrap_content"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:gravity="center"
android:id="@+id/english_lang"
android:layout_marginHorizontal="@dimen/_12sdp"
android:paddingVertical="@dimen/_12sdp"
android:background="@drawable/bgn_lang"
android:layout_height="wrap_content">
<ImageView
android:layout_width="wrap_content"
android:src="@drawable/ic_united_kingdom"
android:layout_height="wrap_content"/>
<TextView
android:layout_width="wrap_content"
android:text="@string/english"
android:textSize="14dp"
android:layout_marginStart="@dimen/_12sdp"
android:layout_height="wrap_content"/>
</LinearLayout>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
\ No newline at end of file
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_gravity="center" android:layout_gravity="center"
android:background="@color/red_dark" android:background="@drawable/bgn_splash"
android:gravity="center" android:gravity="center"
android:fitsSystemWindows="false" android:fitsSystemWindows="false"
tools:context=".SplashActivity"> tools:context=".SplashActivity">
......
...@@ -4,43 +4,47 @@ ...@@ -4,43 +4,47 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@drawable/gradient"
android:orientation="vertical" android:orientation="vertical"
tools:context=".ui.auth.BiometricFragment"> tools:context=".ui.auth.BiometricFragment">
<FrameLayout <FrameLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:paddingHorizontal="@dimen/_12sdp" android:layout_height="?actionBarSize"
android:layout_height="?actionBarSize"> android:paddingHorizontal="@dimen/_12sdp">
<ImageView <ImageView
android:id="@+id/btn_back"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center|start" android:layout_gravity="center|start"
android:padding="@dimen/_4sdp"
android:id="@+id/btn_back"
android:background="?selectableItemBackgroundBorderless" android:background="?selectableItemBackgroundBorderless"
android:src="@drawable/ic_baseline_arrow_back"/> android:padding="@dimen/_4sdp"
android:src="@drawable/ic_baseline_arrow_back" />
<TextView <TextView
android:layout_width="wrap_content"
android:text="Пропустить"
android:id="@+id/txt_skip" android:id="@+id/txt_skip"
android:padding="@dimen/_4sdp" android:layout_width="wrap_content"
android:textStyle="bold" android:layout_height="wrap_content"
android:layout_gravity="center|end"
android:background="?android:selectableItemBackground" android:background="?android:selectableItemBackground"
android:padding="@dimen/_4sdp"
android:text="Пропустить"
android:textColor="@color/red_dark" android:textColor="@color/red_dark"
android:layout_gravity="center|end" android:textSize="16sp"
android:layout_height="wrap_content"/> android:textStyle="bold" />
</FrameLayout> </FrameLayout>
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_marginTop="@dimen/_12sdp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/_12sdp"
android:gravity="center"> android:gravity="center">
<ImageView <ImageView
android:layout_width="wrap_content" android:layout_width="@dimen/_100sdp"
android:layout_height="wrap_content" android:layout_height="@dimen/_100sdp"
android:src="@drawable/ic_fingerprint" /> android:src="@drawable/ic_fingerprint" />
</LinearLayout> </LinearLayout>
...@@ -48,8 +52,8 @@ ...@@ -48,8 +52,8 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:layout_gravity="center"
android:layout_marginTop="@dimen/_12sdp"
android:layout_marginHorizontal="@dimen/_12sdp" android:layout_marginHorizontal="@dimen/_12sdp"
android:layout_marginTop="@dimen/_12sdp"
android:text="Биометрический вход" android:text="Биометрический вход"
android:textSize="@dimen/_20sdp" android:textSize="@dimen/_20sdp"
android:textStyle="bold" /> android:textStyle="bold" />
...@@ -58,31 +62,32 @@ ...@@ -58,31 +62,32 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:layout_gravity="center"
android:gravity="center"
android:layout_marginTop="@dimen/_12sdp"
android:layout_marginHorizontal="@dimen/_12sdp" android:layout_marginHorizontal="@dimen/_12sdp"
android:layout_marginTop="@dimen/_12sdp"
android:text="Быстро войти в систему с помощью отпечатка пальца android:text="Быстро войти в систему с помощью отпечатка пальца
или Face ID." или Face ID."
android:textColor="@color/text_color_77" android:textColor="@color/text_color_77"
android:textSize="@dimen/_14sdp" /> android:textSize="@dimen/_14sdp" />
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:paddingHorizontal="@dimen/_12sdp"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_weight="1"
android:gravity="center" android:gravity="center"
android:layout_weight="1"> android:paddingHorizontal="@dimen/_12sdp">
<TextView <TextView
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:textSize="17sp"
android:text="Активировать" android:text="Активировать"
android:textStyle="bold" android:textStyle="bold" />
android:layout_height="wrap_content"/>
<Switch <Switch
android:layout_width="wrap_content"
android:id="@+id/btn_switch" android:id="@+id/btn_switch"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
tools:ignore="UseSwitchCompatOrMaterialXml" /> tools:ignore="UseSwitchCompatOrMaterialXml" />
</LinearLayout> </LinearLayout>
...@@ -91,31 +96,36 @@ ...@@ -91,31 +96,36 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_weight="1"> android:layout_weight="1">
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:layout_gravity="center"
android:textSize="15sp"
android:layout_marginHorizontal="@dimen/_12sdp" android:layout_marginHorizontal="@dimen/_12sdp"
android:text="Измените это в любое время в настройках" android:text="Измените это в любое время в настройках"
android:textColor="@color/text_color_77" />
android:textSize="@dimen/_14sdp" />
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
android:gravity="end|bottom" android:layout_weight="0.7"
android:layout_weight="1"> android:gravity="end|bottom">
<com.google.android.material.button.MaterialButton <com.google.android.material.button.MaterialButton
android:id="@+id/btn_next"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="end" android:layout_gravity="end"
android:id="@+id/btn_next"
android:layout_marginEnd="@dimen/_12sdp" android:layout_marginEnd="@dimen/_12sdp"
android:textAllCaps="false" android:paddingHorizontal="@dimen/_18sdp"
android:padding="@dimen/_10sdp" android:paddingVertical="@dimen/_10sdp"
android:textStyle="bold"
android:textSize="16sp"
android:text="@string/continuoue_task" android:text="@string/continuoue_task"
android:textAllCaps="false"
android:textColor="@color/red" android:textColor="@color/red"
app:backgroundTint="@color/white" /> app:backgroundTint="@color/white" />
</LinearLayout> </LinearLayout>
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
android:layout_marginStart="@dimen/_12sdp" android:layout_marginStart="@dimen/_12sdp"
android:layout_marginTop="@dimen/_14sdp" android:layout_marginTop="@dimen/_14sdp"
android:text="@string/think_password" android:text="@string/think_password"
android:textSize="@dimen/_16sdp" android:textSize="@dimen/_18sdp"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toTopOf="@id/txt_hint_password" app:layout_constraintBottom_toTopOf="@id/txt_hint_password"
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/_12sdp" android:layout_marginStart="@dimen/_12sdp"
android:layout_marginTop="@dimen/_14sdp" android:layout_marginTop="@dimen/_16sdp"
android:layout_marginBottom="@dimen/_4sdp" android:layout_marginBottom="@dimen/_4sdp"
android:text="Введите пароль:" android:text="Введите пароль:"
android:textColor="@color/black" android:textColor="@color/black"
...@@ -56,7 +56,7 @@ ...@@ -56,7 +56,7 @@
android:id="@+id/input_password" android:id="@+id/input_password"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@drawable/bgn_lang" android:background="@drawable/edit_text_bgn"
android:imeOptions="actionNext" android:imeOptions="actionNext"
android:textSize="@dimen/_12sdp" android:textSize="@dimen/_12sdp"
android:inputType="textPassword" android:inputType="textPassword"
...@@ -101,7 +101,7 @@ ...@@ -101,7 +101,7 @@
android:id="@+id/input_confirm" android:id="@+id/input_confirm"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@drawable/bgn_lang" android:background="@drawable/edit_text_bgn"
android:imeOptions="actionDone" android:imeOptions="actionDone"
android:textSize="@dimen/_12sdp" android:textSize="@dimen/_12sdp"
android:inputType="textPassword" android:inputType="textPassword"
......
...@@ -55,7 +55,7 @@ ...@@ -55,7 +55,7 @@
app:notMaskedSymbol="*" app:notMaskedSymbol="*"
android:textSize="@dimen/_12sdp" android:textSize="@dimen/_12sdp"
android:padding="@dimen/_14sdp" android:padding="@dimen/_14sdp"
android:background="@drawable/bgn_lang" android:background="@drawable/edit_text_bgn"
android:layout_height="match_parent"/> android:layout_height="match_parent"/>
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
android:layout_marginStart="@dimen/_12sdp" android:layout_marginStart="@dimen/_12sdp"
android:layout_marginTop="@dimen/_14sdp" android:layout_marginTop="@dimen/_14sdp"
android:text="@string/enter_number" android:text="@string/enter_number"
android:textSize="@dimen/_16sdp" android:textSize="@dimen/_18sdp"
android:textStyle="bold" /> android:textStyle="bold" />
<LinearLayout <LinearLayout
...@@ -58,7 +58,7 @@ ...@@ -58,7 +58,7 @@
app:notMaskedSymbol="*" app:notMaskedSymbol="*"
android:textSize="@dimen/_12sdp" android:textSize="@dimen/_12sdp"
android:padding="@dimen/_14sdp" android:padding="@dimen/_14sdp"
android:background="@drawable/bgn_lang" android:background="@drawable/edit_text_bgn"
android:layout_height="match_parent"/> android:layout_height="match_parent"/>
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
</LinearLayout> </LinearLayout>
...@@ -66,7 +66,7 @@ ...@@ -66,7 +66,7 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_weight="1"> android:layout_weight="1.5">
<Button <Button
android:id="@+id/btn_login" android:id="@+id/btn_login"
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
android:layout_marginStart="@dimen/_12sdp" android:layout_marginStart="@dimen/_12sdp"
android:layout_marginTop="@dimen/_14sdp" android:layout_marginTop="@dimen/_14sdp"
android:text="@string/enter" android:text="@string/enter"
android:textSize="@dimen/_16sdp" android:textSize="@dimen/_18sdp"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toTopOf="@id/txt_hint_password" app:layout_constraintBottom_toTopOf="@id/txt_hint_password"
...@@ -59,7 +59,7 @@ ...@@ -59,7 +59,7 @@
android:clickable="false" android:clickable="false"
android:focusable="false" android:focusable="false"
android:textSize="@dimen/_12sdp" android:textSize="@dimen/_12sdp"
android:background="@drawable/bgn_lang" android:background="@drawable/edit_text_bgn"
android:imeOptions="actionNext" android:imeOptions="actionNext"
android:inputType="phone" android:inputType="phone"
android:paddingVertical="@dimen/_12sdp" android:paddingVertical="@dimen/_12sdp"
...@@ -104,7 +104,7 @@ ...@@ -104,7 +104,7 @@
android:id="@+id/input_password" android:id="@+id/input_password"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@drawable/bgn_lang" android:background="@drawable/edit_text_bgn"
android:imeOptions="actionDone" android:imeOptions="actionDone"
android:inputType="textPassword" android:inputType="textPassword"
android:textSize="@dimen/_12sdp" android:textSize="@dimen/_12sdp"
......
...@@ -29,6 +29,26 @@ ...@@ -29,6 +29,26 @@
<fragment <fragment
android:id="@+id/forgetPasswordFragment" android:id="@+id/forgetPasswordFragment"
tools:layout="@layout/fragment_forget_password" tools:layout="@layout/fragment_forget_password"
android:name="uz.ssd.mobiuz.ui.auth.ForgetPasswordFragment" android:name="uz.ssd.mobiuz.ui.forget.ForgetPasswordFragment"
android:label="ForgetPasswordFragment" /> android:label="ForgetPasswordFragment" />
<fragment
android:id="@+id/pinFragment"
tools:layout="@layout/fragment_pin"
android:name="uz.ssd.mobiuz.ui.auth.PinFragment"
android:label="PinFragment" />
<fragment
android:id="@+id/biometricFragment"
android:name="uz.ssd.mobiuz.ui.auth.BiometricFragment"
android:label="fragment_biometric"
tools:layout="@layout/fragment_biometric" />
<fragment
android:id="@+id/forgetLoginFragment"
tools:layout="@layout/fragment_login"
android:name="uz.ssd.mobiuz.ui.forget.ForgetLoginFragment"
android:label="ForgetLoginFragment" />
<fragment
android:id="@+id/forgetVerificationFragment"
tools:layout="@layout/fragment_pin"
android:name="uz.ssd.mobiuz.ui.forget.ForgetVerificationFragment"
android:label="ForgetPinFragment" />
</navigation> </navigation>
\ No newline at end of file
...@@ -15,5 +15,6 @@ ...@@ -15,5 +15,6 @@
<color name="lang_bgn_dark">#B6B4B4</color> <color name="lang_bgn_dark">#B6B4B4</color>
<color name="light">#B6B6B6</color> <color name="light">#B6B6B6</color>
<color name="light_dark">#1C1C1E</color> <color name="light_dark">#1C1C1E</color>
<color name="text_color_77">#777777</color>
<color name="black_80">#CC000000</color> <color name="black_80">#CC000000</color>
</resources> </resources>
\ No newline at end of file
...@@ -38,7 +38,9 @@ ...@@ -38,7 +38,9 @@
<string name="continuoue_task">Далее</string> <string name="continuoue_task">Далее</string>
<string name="think_password">Придумайте пароль</string> <string name="think_password">Придумайте пароль</string>
<string name="enter">Войти</string> <string name="enter">Войти</string>
<string name="enter_verification">Ведите код подтверждения</string> <string name="enter_verification">Ведите код \nподтверждения</string>
<string name="sent_code_again">Sent code again</string> <string name="sent_code_again">Sent code again</string>
<string name="install_pin">Установите PIN-код</string>
<string name="confirm_pin">Повторите этот PIN-код</string>
</resources> </resources>
\ No newline at end of file
...@@ -7,16 +7,15 @@ ...@@ -7,16 +7,15 @@
<item name="colorOnPrimary">@color/white</item> <item name="colorOnPrimary">@color/white</item>
<!-- <item name="windowActionBar">false</item>--> <!-- <item name="windowActionBar">false</item>-->
<!-- <item name="windowNoTitle">false</item>--> <!-- <item name="windowNoTitle">false</item>-->
<item name="android:fitsSystemWindows">false</item> <item name="android:fitsSystemWindows">false</item>
<item name="colorPrimaryDark">@android:color/transparent</item> <item name="colorPrimaryDark">@android:color/transparent</item>
<!-- <item name="android:windowDrawsSystemBarBackgrounds">true</item>--> <!-- <item name="android:windowDrawsSystemBarBackgrounds">true</item>-->
<item name="android:statusBarColor">@android:color/transparent</item> <item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:windowTranslucentStatus">true</item> <item name="android:windowTranslucentStatus">true</item>
<!-- Secondary brand color. --> <!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item> <item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_700</item> <item name="colorSecondaryVariant">@color/teal_700</item>
...@@ -48,7 +47,7 @@ ...@@ -48,7 +47,7 @@
</style> </style>
<style name ="DialogThemeLight" parent="Theme.AppCompat.Light.Dialog.MinWidth"> <style name="DialogThemeLight" parent="Theme.AppCompat.Light.Dialog.MinWidth">
<item name="colorAccent">@color/chuck_colorAccent</item> <item name="colorAccent">@color/chuck_colorAccent</item>
<item name="android:colorAccent">@color/chuck_colorAccent</item> <item name="android:colorAccent">@color/chuck_colorAccent</item>
<item name="android:background">@color/chuck_colorPrimary</item> <item name="android:background">@color/chuck_colorPrimary</item>
...@@ -56,4 +55,37 @@ ...@@ -56,4 +55,37 @@
<item name="android:textColorSecondary">@color/chuck_colorPrimary</item> <item name="android:textColorSecondary">@color/chuck_colorPrimary</item>
</style> </style>
<style name="BtnStyle">
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">wrap_content</item>
<item name="background">@drawable/bgn_pin_btn</item>
<item name="android:paddingTop">@dimen/_16sdp</item>
<item name="android:paddingBottom">@dimen/_16sdp</item>
<item name="android:paddingStart">@dimen/_20sdp</item>
<item name="android:paddingEnd">@dimen/_20sdp</item>
<item name="android:clickable">true</item>
<item name="android:focusable">true</item>
<item name="android:gravity">center</item>
<item name="android:textStyle">bold</item>
<item name="android:textSize">18sp</item>
</style>
<style name="PinStyle">
<item name="android:layout_height">@dimen/_32sdp</item>
<item name="android:layout_width">@dimen/_32sdp</item>
<item name="background">@drawable/bgn_ver_unchecked</item>
<item name="android:clickable">true</item>
<item name="android:focusable">true</item>
<item name="android:hint">*</item>
<item name="android:inputType">number</item>
<item name="android:imeOptions">actionNext</item>
<item name="android:layout_marginStart">@dimen/_4sdp</item>
<item name="android:layout_marginEnd">@dimen/_4sdp</item>
<item name="android:textColorHint">@color/black</item>
<item name="android:gravity">center</item>
<item name="android:textStyle">bold</item>
<item name="android:textSize">18sp</item>
<item name="android:maxLength">1</item>
</style>
</resources> </resources>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment