Commit 1762fbce authored by shohboz's avatar shohboz

[ADD] MUS-103 Feature, add auth screens

parent 3c0dea8b
<?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
......@@ -3,8 +3,37 @@
<component name="DesignSurface">
<option name="filePathToZoomLevelMap">
<map>
<entry key="app/src/main/res/drawable/bgn_lang.xml" value="0.2796296296296296" />
<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_selector.xml" value="0.30092592592592593" />
<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_arrow_back.xml" value="0.2759259259259259" />
<entry key="app/src/main/res/drawable/ic_baseline_ballot.xml" value="0.2796296296296296" />
<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_keyboard_arrow_right.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_vector_error.xml" value="0.20694444444444443" />
<entry key="app/src/main/res/layout/activity_auth.xml" value="0.3416666666666667" />
<entry key="app/src/main/res/layout/activity_language.xml" value="0.25" />
<entry key="app/src/main/res/layout/activity_main.xml" value="0.22" />
<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/button_selector.xml" value="0.33242753623188404" />
<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_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_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_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_verification.xml" value="0.2" />
<entry key="app/src/main/res/layout/item_home.xml" value="0.29936594202898553" />
<entry key="app/src/main/res/menu/bottom_nav_menu.xml" value="0.3416666666666667" />
</map>
</option>
</component>
......
......@@ -83,4 +83,16 @@ dependencies {
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
implementation 'com.nabinbhandari.android:permissions:3.8'
implementation 'com.intuit.sdp:sdp-android:1.0.6'
implementation "androidx.biometric:biometric:1.1.0"
implementation 'io.github.chaosleung:pinview:1.4.4'
implementation 'com.github.pinball83:masked-edittext:1.0.4'
// pin view
implementation "com.github.iwgang:countdownview:2.1.6"
}
\ No newline at end of file
......@@ -3,6 +3,7 @@
package="uz.ssd.mobiuz">
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.USE_BIOMETRIC" />
<application
android:name=".app.App"
......@@ -14,12 +15,22 @@
android:theme="@style/Theme.MobiUzAndroid"
android:usesCleartextTraffic="true">
<activity
android:name=".AuthActivity"
android:name=".LanguageActivity"
android:windowSoftInputMode="adjustResize"
android:exported="false" />
<activity
android:name=".MainActivity"
android:windowSoftInputMode="adjustResize"
android:exported="false" />
<activity
android:name=".AuthActivity"
android:windowSoftInputMode="adjustResize"
android:exported="false" />
<activity
android:name=".SplashActivity"
android:configChanges="orientation"
android:exported="true"
android:windowSoftInputMode="adjustResize"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
......
package uz.ssd.mobiuz
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import dagger.hilt.android.AndroidEntryPoint
import uz.ssd.mobiuz.databinding.ActivityAuthBinding
@AndroidEntryPoint
class AuthActivity : AppCompatActivity() {
private var _bn: ActivityAuthBinding? = null
private val bn get() = _bn ?: throw NullPointerException("cannot inflate")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_auth)
_bn = ActivityAuthBinding.inflate(layoutInflater)
setContentView(bn.root)
window.decorView.systemUiVisibility = window.decorView.systemUiVisibility or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
}
override fun onDestroy() {
_bn = null
super.onDestroy()
}
}
\ No newline at end of file
package uz.ssd.mobiuz.ui.auth
package uz.ssd.mobiuz
import android.os.Bundle
import android.view.View
import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels
import dagger.hilt.android.AndroidEntryPoint
import uz.ssd.mobiuz.R
import uz.ssd.mobiuz.databinding.FragmentVerificationBinding
import uz.ssd.mobiuz.databinding.FragmentBlankBinding
import uz.ssd.mobiuz.ui.auth.AuthViewModel
import uz.ssd.mobiuz.ui.base.BaseFragment
import java.lang.NullPointerException
@AndroidEntryPoint
class RegisterFragment : BaseFragment(R.layout.fragment_register) {
private var _bn: FragmentVerificationBinding? = null
class BlankFragment : BaseFragment(R.layout.fragment_blank) {
private var _bn: FragmentBlankBinding? = null
private val bn get() = _bn ?: throw NullPointerException("cannot inflate")
private val viewModel: AuthViewModel by viewModels()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
_bn = FragmentVerificationBinding.bind(view)
_bn = FragmentBlankBinding.bind(view)
setUpUI()
collects()
......@@ -33,4 +35,5 @@ class RegisterFragment : BaseFragment(R.layout.fragment_register) {
_bn = null
super.onDestroy()
}
}
\ No newline at end of file
package uz.ssd.mobiuz
import android.content.Intent
import android.net.Uri
import androidx.appcompat.app.AppCompatActivity
import android.graphics.Color
import android.os.Bundle
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.LiveData
import androidx.navigation.NavController
import com.google.android.material.bottomnavigation.BottomNavigationView
import dagger.hilt.android.AndroidEntryPoint
import uz.ssd.mobiuz.databinding.ActivityMainBinding
import java.lang.NullPointerException
import uz.ssd.mobiuz.utils.extensions.setupWithNavController
@AndroidEntryPoint
class MainActivity : AppCompatActivity() {
private var _bn: ActivityMainBinding? = null
private val bn get() = _bn ?: throw NullPointerException("cannot inflate")
private lateinit var bottomNavigationView: BottomNavigationView
private var currentNavController: LiveData<NavController>? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
_bn = ActivityMainBinding.inflate(layoutInflater)
setContentView(bn.root)
bn.button.setOnClickListener {
val intent = Intent(Intent.ACTION_CALL)
// intent.data = Uri.parse(Uri.parse("tel:" + "211") Uri.encode("#"))
startActivity(intent)
window.statusBarColor = Color.TRANSPARENT
if (savedInstanceState == null) {
setupBottomNavigationBar()
}
}
private fun setupBottomNavigationBar() {
try {
bottomNavigationView = findViewById(R.id.bottom_nav_view)
val navGraphIds = listOf(
R.navigation.nav_graph_home,
R.navigation.nav_graph_profile
)
val controller = bottomNavigationView.setupWithNavController(
navGraphIds = navGraphIds,
fragmentManager = supportFragmentManager,
containerId = R.id.nav_host_fragment,
intent = intent
)
currentNavController = controller
} catch (e: Exception) {
e.printStackTrace()
}
}
override fun onSupportNavigateUp(): Boolean {
return currentNavController?.value?.navigateUp() ?: false
}
override fun onDestroy() {
......
package uz.ssd.mobiuz
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Toast
import androidx.biometric.BiometricPrompt
import androidx.core.content.ContextCompat
import dagger.hilt.android.AndroidEntryPoint
import uz.ssd.mobiuz.databinding.ActivityMainBinding
import uz.ssd.mobiuz.databinding.ActivityPinBinding
import java.util.concurrent.Executor
@AndroidEntryPoint
class PinActivity : AppCompatActivity() {
private var _bn: ActivityPinBinding? = null
private val bn get() = _bn ?: throw NullPointerException("cannot inflate")
private lateinit var executor: Executor
private lateinit var biometricPrompt: BiometricPrompt
private lateinit var promptInfo: BiometricPrompt.PromptInfo
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
_bn = ActivityPinBinding.inflate(layoutInflater)
setContentView(bn.root)
executor = ContextCompat.getMainExecutor(this)
biometricPrompt = BiometricPrompt(this, executor,
object : BiometricPrompt.AuthenticationCallback() {
override fun onAuthenticationError(errorCode: Int,
errString: CharSequence) {
super.onAuthenticationError(errorCode, errString)
Toast.makeText(applicationContext,
"Authentication error: $errString", Toast.LENGTH_SHORT)
.show()
}
override fun onAuthenticationSucceeded(
result: BiometricPrompt.AuthenticationResult) {
super.onAuthenticationSucceeded(result)
Toast.makeText(applicationContext,
"Authentication succeeded!", Toast.LENGTH_SHORT)
.show()
}
override fun onAuthenticationFailed() {
super.onAuthenticationFailed()
Toast.makeText(applicationContext, "Authentication failed",
Toast.LENGTH_SHORT)
.show()
}
})
promptInfo = BiometricPrompt.PromptInfo.Builder()
.setTitle("Biometric login for my app")
.setSubtitle("Log in using your biometric credential")
.setNegativeButtonText("Use account password")
.build()
biometricPrompt.authenticate(promptInfo)
}
override fun onDestroy() {
_bn = null
super.onDestroy()
}
}
\ No newline at end of file
package uz.ssd.mobiuz
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.databinding.FragmentPinLockBinding
import uz.ssd.mobiuz.ui.auth.AuthViewModel
import uz.ssd.mobiuz.ui.base.BaseFragment
@AndroidEntryPoint
class PinLockFragment : BaseFragment(R.layout.fragment_pin_lock) {
private var _bn: FragmentPinLockBinding? = 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 = FragmentPinLockBinding.bind(view)
//200281 svet h shuhrat 50
// 0700268 100 gaz shuhrat
setUpUI()
collects()
}
override fun setUpUI() {
}
override fun collects() {
}
override fun onDestroy() {
_bn = null
super.onDestroy()
}
}
\ No newline at end of file
package uz.ssd.mobiuz
import android.content.Intent
import android.os.Bundle
import android.view.WindowManager
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.lifecycleScope
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.delay
import uz.ssd.mobiuz.databinding.ActivitySplashBinding
import uz.ssd.mobiuz.model.SharedPref
import javax.inject.Inject
@AndroidEntryPoint
class SplashActivity : AppCompatActivity() {
private var _bn: ActivitySplashBinding? = null
private val bn get() = _bn ?: throw NullPointerException("cannot inflate")
@Inject
lateinit var pref: SharedPref
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
_bn = ActivitySplashBinding.inflate(layoutInflater)
setContentView(bn.root)
lifecycleScope.launchWhenCreated {
delay(1000)
if (pref.language.isEmpty()) {
startActivity(Intent(this@SplashActivity, LanguageActivity::class.java))
} else {
startActivity(Intent(this@SplashActivity, LanguageActivity::class.java))
}
finish()
}
}
override fun onDestroy() {
_bn = null
super.onDestroy()
}
}
\ No newline at end of file
package uz.ssd.mobiuz.model
data class UserAuth(
val phoneNumber: String,
val password: String
)
\ No newline at end of file
package uz.ssd.mobiuz.network.api
import retrofit2.http.Body
import retrofit2.http.POST
import uz.ssd.mobiuz.model.UserAuth
import uz.ssd.mobiuz.network.model.ResponseObject
interface ApiService {
@POST("auth/login")
suspend fun login(
@Body req: UserAuth
): ResponseObject<String>
}
\ No newline at end of file
package uz.ssd.mobiuz.network.repository
import android.content.Context
import dagger.hilt.android.qualifiers.ApplicationContext
import uz.ssd.mobiuz.model.UserAuth
import uz.ssd.mobiuz.network.api.ApiService
import uz.ssd.mobiuz.network.model.UiStateObject
import javax.inject.Inject
import javax.inject.Singleton
@Singleton
class AuthRepository @Inject constructor(
private val apiService: ApiService,
@ApplicationContext val context: Context
) {
suspend fun loginUser(data: UserAuth): UiStateObject<String> {
return try {
val res = apiService.login(data)
when (res.status.code) {
200 -> {
UiStateObject.SUCCESS(res.status.message)
}
else -> UiStateObject.SUCCESS(res.status.message)
}
} catch (e: Exception) {
UiStateObject.SUCCESS("res.message")
}
}
}
\ No newline at end of file
package uz.ssd.mobiuz.network.repository
import uz.ssd.mobiuz.network.api.ApiService
import javax.inject.Inject
import javax.inject.Singleton
@Singleton
class MainRepository @Inject constructor(
private val apiService: ApiService
) {
}
\ No newline at end of file
package uz.ssd.mobiuz.ui.auth
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.launch
import uz.ssd.mobiuz.model.UserAuth
import uz.ssd.mobiuz.network.model.UiStateObject
import uz.ssd.mobiuz.network.repository.AuthRepository
import javax.inject.Inject
@HiltViewModel
class AuthViewModel @Inject constructor(
private val repository: AuthRepository
) : ViewModel() {
private val _loginUiState = MutableStateFlow<UiStateObject<String>>(UiStateObject.EMPTY)
val loginUiState: StateFlow<UiStateObject<String>> = _loginUiState
fun login(data: UserAuth) = viewModelScope.launch {
_loginUiState.value = UiStateObject.LOADING
delay(1000)
_loginUiState.value = repository.loginUser(data)
_loginUiState.value = UiStateObject.EMPTY
}
}
\ No newline at end of file
package uz.ssd.mobiuz.ui.auth
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 EnterPasswordFragment : 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.verificationFragment, 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.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
......@@ -2,32 +2,92 @@ package uz.ssd.mobiuz.ui.auth
import android.os.Bundle
import android.view.View
import androidx.fragment.app.Fragment
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.FragmentVerificationBinding
import uz.ssd.mobiuz.databinding.FragmentLoginBinding
import uz.ssd.mobiuz.model.UserAuth
import uz.ssd.mobiuz.network.model.UiStateObject
import uz.ssd.mobiuz.ui.base.BaseFragment
import java.lang.NullPointerException
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 LoginFragment : BaseFragment(R.layout.fragment_login) {
private var _bn: FragmentVerificationBinding? = null
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 = FragmentVerificationBinding.bind(view)
_bn = FragmentLoginBinding.bind(view)
setUpUI()
collects()
}
override fun setUpUI() {
bn.apply {
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)
if (phone != "+998949125150") {
navController.navigate(R.id.enterPasswordFragment, null, Utils.navOptions())
} else {
navController.navigate(R.id.passwordFragment, bundleOf(CONSTANTS.PHONE to phoneRaw), Utils.navOptions())
}
}
is UiStateObject.ERROR -> {
showProgressDialog(false)
showMessage(it.message)
}
is UiStateObject.LOADING -> {
showProgressDialog(true)
}
else -> Unit
}
}
}
}
override fun onDestroy() {
......@@ -35,3 +95,16 @@ class LoginFragment : BaseFragment(R.layout.fragment_login) {
super.onDestroy()
}
}
//fun main(){
// var ss = -421
// if(ss.toString().startsWith("-")){
// ss = ss.toString().replace("-","").toInt()
// val dd = (ss.toString().reversed().toInt()) * -1
// print(dd)
// }else{
// val dd = ss.toString().reversed().toInt()
// print(dd)
// }
//
//}
\ 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.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.FragmentPasswordBinding
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.CONSTANTS
import uz.ssd.mobiuz.utils.Utils
import uz.ssd.mobiuz.utils.extensions.showMessage
@AndroidEntryPoint
class PasswordFragment : BaseFragment(R.layout.fragment_password) {
private var _bn: FragmentPasswordBinding? = null
private val bn get() = _bn ?: throw NullPointerException("cannot inflate")
private val navController: NavController by lazy(LazyThreadSafetyMode.NONE) { NavHostFragment.findNavController(this) }
private var phone = ""
private val viewModel: AuthViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
arguments?.let {
phone = it.getString(CONSTANTS.PHONE, "")
}
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
_bn = FragmentPasswordBinding.bind(view)
setUpUI()
collects()
}
override fun setUpUI() {
bn.apply {
inputPhone.setText(phone)
txtForgetPassword.setOnClickListener(object : ButtonClick() {
override fun onSingleClick(v: View?) {
navController.navigate(R.id.forgetPasswordFragment,null,Utils.navOptions())
}
})
inputPassword.addTextChangedListener(object : TextWatcherWrapper() {
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
super.onTextChanged(s, start, before, count)
btnLogin.isEnabled = (s.toString().length > 5)
}
})
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.verificationFragment, 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.ui.auth
import android.content.Intent
import android.graphics.Color
import android.os.Bundle
import android.view.View
import androidx.core.view.isVisible
import androidx.fragment.app.Fragment
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.MainActivity
import uz.ssd.mobiuz.R
import uz.ssd.mobiuz.databinding.FragmentVerificationBinding
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
import java.lang.NullPointerException
@AndroidEntryPoint
......@@ -14,19 +29,79 @@ class VerificationFragment : BaseFragment(R.layout.fragment_verification) {
private var _bn: FragmentVerificationBinding? = 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 = FragmentVerificationBinding.bind(view)
setUpUI()
count(true)
collects()
}
override fun setUpUI() {
bn.apply {
toolbar.setNavigationOnClickListener {
navController.navigateUp()
}
pinView.addTextChangedListener(object : TextWatcherWrapper(){
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
super.onTextChanged(s, start, before, count)
btnLogin.isEnabled = s.toString().length > 5
}
})
btnLogin.setOnClickListener(object : ButtonClick(){
override fun onSingleClick(v: View?) {
viewModel.login(UserAuth("phone", "password"))
}
})
countWaitText.setTextColor(Color.parseColor("#97ADB6"))
sentCodeAgain.setTextColor(Color.parseColor("#FF9500"))
sentCodeAgain.setOnClickListener {
viewModel.login(UserAuth("",""))
count(true)
}
coutdownView.setOnCountdownEndListener {
count(false)
}
}
}
override fun collects() {
viewLifecycleOwner.lifecycleScope.launchWhenStarted {
viewModel.loginUiState.collect {
when (it) {
is UiStateObject.SUCCESS -> {
showProgressDialog(false)
requireActivity().finish()
startActivity(Intent(requireContext(),MainActivity::class.java))
}
is UiStateObject.ERROR -> {
showProgressDialog(false)
showMessage(it.message)
}
is UiStateObject.LOADING -> {
showProgressDialog(true)
}
else -> Unit
}
}
}
}
fun count(status: Boolean) {
bn.apply {
sentCodeAgain.isVisible = !status
countWaitText.isVisible = status
coutdownView.isVisible = status
if (status) coutdownView.start(120000)
}
}
override fun onDestroy() {
......
package uz.ssd.mobiuz.ui.base
import android.graphics.Color
import android.os.Bundle
import android.text.SpannableStringBuilder
import android.text.Spanned
import android.text.style.ForegroundColorSpan
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.google.android.material.snackbar.Snackbar
import uz.ssd.mobiuz.R
import uz.ssd.mobiuz.ui.global.ProgressDialog
abstract class BaseFragment(private val layoutId:Int) : Fragment() {
......@@ -17,4 +23,18 @@ abstract class BaseFragment(private val layoutId:Int) : Fragment() {
protected abstract fun setUpUI()
protected abstract fun collects()
protected fun showProgressDialog(progress: Boolean) {
if (!isAdded) return
val fragment = childFragmentManager.findFragmentByTag("bf_progress")
if (fragment != null && !progress) {
(fragment as ProgressDialog).dismissAllowingStateLoss()
childFragmentManager.executePendingTransactions()
} else if (fragment == null && progress) {
ProgressDialog().show(childFragmentManager, "bf_progress")
childFragmentManager.executePendingTransactions()
}
}
}
\ No newline at end of file
package uz.ssd.mobiuz.ui.global
import android.os.Bundle
import androidx.fragment.app.DialogFragment
import uz.ssd.mobiuz.R
class ProgressDialog : DialogFragment(R.layout.fragment_progress) {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setStyle(STYLE_NO_FRAME, R.style.ProgressDialogTheme)
isCancelable = false
}
}
\ No newline at end of file
package uz.ssd.mobiuz.ui.global
import android.text.Editable
import android.text.TextWatcher
/**
* Created by mr-shoxruxbek on 20/08/2021.
*/
open class TextWatcherWrapper : TextWatcher {
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {}
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {}
override fun afterTextChanged(s: Editable) {}
}
\ No newline at end of file
......@@ -2,13 +2,11 @@ package uz.ssd.mobiuz.ui.home
import android.os.Bundle
import android.view.View
import androidx.fragment.app.Fragment
import dagger.hilt.android.AndroidEntryPoint
import uz.ssd.mobiuz.R
import uz.ssd.mobiuz.databinding.FragmentHomeBinding
import uz.ssd.mobiuz.databinding.FragmentVerificationBinding
import uz.ssd.mobiuz.ui.base.BaseFragment
import java.lang.NullPointerException
import uz.ssd.mobiuz.utils.ButtonClick
@AndroidEntryPoint
......@@ -26,8 +24,19 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) {
}
override fun setUpUI() {
bn.apply {
btnMenu.setOnClickListener(object : ButtonClick() {
override fun onSingleClick(v: View?) {
}
})
btnAddSum.setOnClickListener(object : ButtonClick() {
override fun onSingleClick(v: View?) {
}
})
}
}
override fun collects() {
......
package uz.ssd.mobiuz.utils
import android.os.SystemClock
import android.view.View
abstract class ButtonClick : View.OnClickListener {
private var mLastClickTime: Long = 0L
abstract fun onSingleClick(v: View?)
override fun onClick(v: View?) {
if (SystemClock.elapsedRealtime() - mLastClickTime < 1500) return
mLastClickTime = SystemClock.elapsedRealtime()
onSingleClick(v)
}
}
......@@ -8,8 +8,9 @@ object CONSTANTS {
const val ROOM = "room"
const val RU = "ru"
const val UZ = "uz"
const val UZ_RU = "kv"
const val EN = "en"
const val DES_POINT = "des_point"
const val PHONE = "phone"
const val TYPE_REPORT = "type_report"
const val TYPE_CREATE_SELF = "type_create_self"
const val TYPE_REPORT_102 = "type_report_102"
......
package uz.ssd.mobiuz.utils.extensions
import android.app.Activity
import android.content.Context
import android.util.Log
import android.widget.Toast
import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.RecyclerView
import com.google.gson.JsonSyntaxException
import retrofit2.HttpException
import uz.ssd.mobiuz.R
import java.io.IOException
import java.net.ConnectException
fun Fragment.showMessage(message: String) {
Toast.makeText(requireContext(), message, Toast.LENGTH_SHORT).show()
}
fun Activity.showMessage(message: String) {
Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
}
fun Fragment.customLog(message: Any) {
Log.e("AAA", message.toString())
}
fun Activity.customLog(message: Any) {
Log.e("AAA", message.toString())
}
fun RecyclerView.customLog(message: Any) {
Log.e("AAA", message.toString())
}
fun Throwable.userMessage(context: Context) = when (this) {
is HttpException -> when (this.code()) {
304 -> context.getString(R.string.ex304)
400 -> context.getString(R.string.ex400)
401 -> context.getString(R.string.ex401)
403 -> context.getString(R.string.ex403)
404 -> context.getString(R.string.ex404)
405 -> context.getString(R.string.ex405)
406 -> context.getString(R.string.ex406)
408 -> context.getString(R.string.ex408)
409 -> context.getString(R.string.ex409)
413 -> context.getString(R.string.ex413)
422 -> context.getString(R.string.ex422)
429 -> context.getString(R.string.ex429)
500 -> context.getString(R.string.ex500)
502 -> context.getString(R.string.ex502)
else -> context.getString(R.string.exelse)
}
is IOException -> context.getString(R.string.ioexception)
is JsonSyntaxException -> context.getString(R.string.jsonsyntaxexception)
is ConnectException -> context.getString(R.string.connect_exception)
else -> context.getString(R.string.ex_nothing)
}
typealias SingleBlock<T> = (T) -> Unit
typealias MultiBlock<T, K> = (T, K) -> Unit
typealias ThreeBlock<T, K, M> = (T, K, M) -> Unit
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="?attr/colorSecondary" android:alpha="0.12" android:state_checked="true" />
<item android:alpha="0.12" android:color="@android:color/white" android:state_pressed="true" />
<item android:color="@android:color/transparent" />
</selector>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/red_dark" android:state_checked="true" />
<item android:color="?colorControlNormal" />
</selector>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape>
<solid android:color="@color/lang_bgn_dark"/>
<corners android:radius="@dimen/_6sdp"/>
</shape>
</item>
<item android:state_pressed="false">
<shape>
<solid android:color="@color/lang_bgn"/>
<corners android:radius="@dimen/_6sdp"/>
</shape>
</item>
</selector>
\ 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="10dp"/>
<solid android:color="@color/red"/>
</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="10dp"/>
<solid android:color="@color/red_disabled"/>
</shape>
\ 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:state_pressed="true">
<shape>
<corners android:radius="10dp"/>
<solid android:color="@color/red_dark"/>
</shape>
</item>
<item android:drawable="@drawable/button_default_bg"
android:state_enabled="true"/>
<item android:drawable="@drawable/button_false_bg"
android:state_enabled="false"
/>
</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:color="?attr/colorSecondary" android:alpha="0.12" android:state_checked="true" />
<item android:alpha="0.12" android:color="@android:color/white" android:state_pressed="true" />
<item android:color="@android:color/transparent" />
</selector>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/primary" android:state_checked="true" />
<item android:color="?colorControlNormal" />
</selector>
This diff is collapsed.
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M3,5v14c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2L21,5c0,-1.1 -0.9,-2 -2,-2L5,3c-1.11,0 -2,0.9 -2,2zM15,9c0,1.66 -1.34,3 -3,3s-3,-1.34 -3,-3 1.34,-3 3,-3 3,1.34 3,3zM6,17c0,-2 4,-3.1 6,-3.1s6,1.1 6,3.1v1L6,18v-1z"/>
</vector>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="@color/red"
android:autoMirrored="true">
<path
android:fillColor="@android:color/white"
android:pathData="M20,11H7.83l5.59,-5.59L12,4l-8,8 8,8 1.41,-1.41L7.83,13H20v-2z"/>
</vector>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M13,9.5h5v-2h-5V9.5zM13,16.5h5v-2h-5V16.5zM19,21H5c-1.1,0 -2,-0.9 -2,-2V5c0,-1.1 0.9,-2 2,-2h14c1.1,0 2,0.9 2,2v14C21,20.1 20.1,21 19,21zM6,11h5V6H6V11zM7,7h3v3H7V7zM6,18h5v-5H6V18zM7,14h3v3H7V14z"
android:fillType="evenOdd"/>
</vector>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="16dp"
android:height="16dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="@color/green">
<path
android:fillColor="@android:color/white"
android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM10,17l-5,-5 1.41,-1.41L10,14.17l7.59,-7.59L19,8l-9,9z"/>
</vector>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M10,20v-6h4v6h5v-8h3L12,3 2,12h3v8z"/>
</vector>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="16dp"
android:height="16dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="@color/red_dark">
<path
android:fillColor="@android:color/holo_red_dark"
android:pathData="M8.59,16.59L13.17,12 8.59,7.41 10,6l6,6 -6,6 -1.41,-1.41z"/>
</vector>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="55dp"
android:height="10dp"
android:viewportWidth="55"
android:viewportHeight="10">
<path
android:pathData="M5,5m-5,0a5,5 0,1 1,10 0a5,5 0,1 1,-10 0"
android:fillColor="#E72B32"/>
<path
android:strokeWidth="1"
android:pathData="M5,5m-4.5,0a4.5,4.5 0,1 1,9 0a4.5,4.5 0,1 1,-9 0"
android:strokeAlpha="0.06"
android:fillColor="#00000000"
android:strokeColor="#000000"/>
<path
android:strokeWidth="1"
android:pathData="M20,5m-4.5,0a4.5,4.5 0,1 1,9 0a4.5,4.5 0,1 1,-9 0"
android:strokeAlpha="0.06"
android:fillColor="#00000000"
android:strokeColor="#000000"/>
<path
android:strokeWidth="1"
android:pathData="M35,5m-4.5,0a4.5,4.5 0,1 1,9 0a4.5,4.5 0,1 1,-9 0"
android:strokeAlpha="0.06"
android:fillColor="#00000000"
android:strokeColor="#000000"/>
<path
android:strokeWidth="1"
android:pathData="M50,5m-4.5,0a4.5,4.5 0,1 1,9 0a4.5,4.5 0,1 1,-9 0"
android:strokeAlpha="0.06"
android:fillColor="#00000000"
android:strokeColor="#000000"/>
</vector>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="18dp"
android:height="12dp"
android:viewportWidth="18"
android:viewportHeight="12">
<path
android:pathData="M12,12H0V10H12V12ZM18,7H0V5H18V7ZM18,2H0V0H18V2Z"
android:fillColor="#ffffff"/>
</vector>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="15dp"
android:height="15dp"
android:viewportWidth="15"
android:viewportHeight="15">
<path
android:pathData="M12.75,0.333H2.25C1.6533,0.333 1.081,0.5687 0.659,0.9882C0.2371,1.4076 0,1.9766 0,2.5698V13.7541C0.0002,13.8862 0.0358,14.0159 0.103,14.1298C0.1702,14.2438 0.2666,14.338 0.3825,14.4027C0.4946,14.4659 0.6212,14.4993 0.75,14.4997C0.8846,14.4996 1.0167,14.4636 1.1325,14.3953L4.5,12.3672C4.6245,12.2935 4.7677,12.2573 4.9125,12.2628H12.75C13.3467,12.2628 13.919,12.0272 14.341,11.6077C14.7629,11.1882 15,10.6192 15,10.026V2.5698C15,1.9766 14.7629,1.4076 14.341,0.9882C13.919,0.5687 13.3467,0.333 12.75,0.333ZM4.5,7.0435C4.3517,7.0435 4.2067,6.9998 4.0833,6.9179C3.96,6.8359 3.8639,6.7195 3.8071,6.5833C3.7503,6.447 3.7355,6.2971 3.7644,6.1525C3.7933,6.0078 3.8648,5.875 3.9697,5.7707C4.0746,5.6664 4.2082,5.5954 4.3537,5.5666C4.4992,5.5379 4.65,5.5526 4.787,5.6091C4.9241,5.6655 5.0412,5.7611 5.1236,5.8837C5.206,6.0063 5.25,6.1505 5.25,6.2979C5.25,6.4957 5.171,6.6853 5.0303,6.8252C4.8897,6.965 4.6989,7.0435 4.5,7.0435ZM7.5,7.0435C7.3517,7.0435 7.2067,6.9998 7.0833,6.9179C6.96,6.8359 6.8639,6.7195 6.8071,6.5833C6.7503,6.447 6.7355,6.2971 6.7644,6.1525C6.7934,6.0078 6.8648,5.875 6.9697,5.7707C7.0746,5.6664 7.2082,5.5954 7.3537,5.5666C7.4992,5.5379 7.65,5.5526 7.787,5.6091C7.9241,5.6655 8.0412,5.7611 8.1236,5.8837C8.206,6.0063 8.25,6.1505 8.25,6.2979C8.25,6.4957 8.171,6.6853 8.0303,6.8252C7.8897,6.965 7.6989,7.0435 7.5,7.0435ZM10.5,7.0435C10.3517,7.0435 10.2067,6.9998 10.0833,6.9179C9.96,6.8359 9.8639,6.7195 9.8071,6.5833C9.7503,6.447 9.7355,6.2971 9.7644,6.1525C9.7934,6.0078 9.8648,5.875 9.9697,5.7707C10.0746,5.6664 10.2082,5.5954 10.3537,5.5666C10.4992,5.5379 10.65,5.5526 10.787,5.6091C10.9241,5.6655 11.0412,5.7611 11.1236,5.8837C11.206,6.0063 11.25,6.1505 11.25,6.2979C11.25,6.4957 11.171,6.6853 11.0303,6.8252C10.8897,6.965 10.6989,7.0435 10.5,7.0435Z"
android:fillColor="#E62229"/>
</vector>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="161dp"
android:height="32dp"
android:viewportWidth="161"
android:viewportHeight="32">
<path
android:pathData="M0,9.575H6.463L6.695,11.979C7.382,11.146 8.258,10.453 9.319,9.898C10.38,9.344 11.627,9.066 13.065,9.066C13.939,9.066 14.72,9.158 15.406,9.344C16.092,9.528 16.694,9.768 17.208,10.059C17.724,10.354 18.176,10.677 18.567,11.031C18.957,11.386 19.277,11.732 19.525,12.072C20.432,11.115 21.531,10.376 22.827,9.852C24.124,9.328 25.475,9.066 26.878,9.066C29.689,9.066 31.834,9.852 33.317,11.424C34.8,12.997 35.541,15.14 35.541,17.851V31.26H28.799V18.915C28.799,17.621 28.509,16.619 27.932,15.91C27.355,15.2 26.486,14.846 25.333,14.846C24.022,14.846 22.976,15.294 22.195,16.186C21.416,17.081 21.026,18.222 21.026,19.608V31.26H14.516V18.915C14.516,17.621 14.228,16.619 13.65,15.91C13.072,15.2 12.207,14.846 11.051,14.846C9.77,14.846 8.734,15.294 7.937,16.186C7.14,17.081 6.743,18.222 6.743,19.608V31.26H0V9.575Z"
android:fillColor="#ffffff"/>
<path
android:pathData="M53.146,26.22C53.989,26.22 54.74,26.058 55.393,25.734C56.05,25.41 56.603,24.971 57.057,24.417C57.508,23.861 57.844,23.238 58.062,22.544C58.281,21.85 58.391,21.134 58.391,20.393C58.391,19.655 58.281,18.937 58.062,18.244C57.844,17.55 57.508,16.934 57.057,16.395C56.603,15.855 56.05,15.423 55.393,15.1C54.74,14.776 53.989,14.615 53.146,14.615C52.303,14.615 51.547,14.776 50.875,15.1C50.204,15.423 49.649,15.855 49.213,16.395C48.776,16.934 48.442,17.55 48.206,18.244C47.971,18.937 47.855,19.655 47.855,20.393C47.855,21.134 47.971,21.85 48.206,22.544C48.442,23.238 48.776,23.861 49.213,24.417C49.649,24.971 50.204,25.41 50.875,25.734C51.547,26.058 52.303,26.22 53.146,26.22ZM41.346,20.393C41.346,18.791 41.634,17.288 42.212,15.885C42.789,14.483 43.594,13.258 44.623,12.209C45.654,11.162 46.894,10.336 48.347,9.735C49.799,9.134 51.398,8.834 53.146,8.834C54.895,8.834 56.486,9.134 57.924,9.735C59.359,10.336 60.593,11.162 61.622,12.209C62.653,13.258 63.456,14.483 64.033,15.885C64.611,17.288 64.9,18.791 64.9,20.393C64.9,21.997 64.611,23.5 64.033,24.902C63.456,26.305 62.653,27.532 61.622,28.577C60.593,29.628 59.359,30.459 57.924,31.075C56.486,31.692 54.895,32 53.146,32C51.398,32 49.799,31.692 48.347,31.075C46.894,30.459 45.654,29.628 44.623,28.577C43.594,27.532 42.789,26.305 42.212,24.902C41.634,23.5 41.346,21.997 41.346,20.393Z"
android:fillColor="#ffffff"/>
<path
android:pathData="M77.59,25.569C77.965,25.725 78.377,25.84 78.831,25.917C79.283,25.993 79.915,26.032 80.728,26.032C82.507,26.032 83.888,25.462 84.872,24.322C85.854,23.181 86.346,21.686 86.346,19.836C86.346,19.159 86.26,18.495 86.09,17.849C85.918,17.2 85.66,16.622 85.317,16.115C84.973,15.606 84.528,15.19 83.982,14.865C83.436,14.542 82.772,14.381 81.992,14.381C80.494,14.381 79.385,14.789 78.666,15.606C77.948,16.422 77.59,17.51 77.59,18.864V25.569ZM70.848,0H77.59V10.773C78.216,10.126 79.065,9.617 80.143,9.248C81.22,8.878 82.289,8.692 83.35,8.692C84.911,8.692 86.299,8.985 87.517,9.571C88.736,10.157 89.757,10.951 90.585,11.953C91.412,12.955 92.043,14.11 92.481,15.42C92.918,16.731 93.137,18.125 93.137,19.606C93.137,21.362 92.848,22.98 92.27,24.46C91.692,25.939 90.858,27.204 89.767,28.251C88.673,29.3 87.33,30.118 85.738,30.703C84.147,31.287 82.335,31.58 80.307,31.58C78.434,31.58 76.662,31.41 74.991,31.073C73.322,30.733 71.94,30.378 70.848,30.009V0Z"
android:fillColor="#ffffff"/>
<path
android:pathData="M99.27,9.574H106.013V31.261H99.27V9.574Z"
android:fillColor="#ffffff"/>
<path
android:pathData="M112.992,9.574H119.736V22.058C119.736,23.292 120.04,24.264 120.648,24.97C121.257,25.681 122.155,26.035 123.342,26.035C124.028,26.035 124.637,25.905 125.168,25.642C125.697,25.381 126.151,25.033 126.525,24.601C126.9,24.17 127.182,23.661 127.368,23.076C127.554,22.491 127.648,21.89 127.648,21.272V9.574H134.345V31.26H127.884L127.697,28.948C126.978,29.779 126.033,30.467 124.863,31.006C123.692,31.544 122.467,31.815 121.187,31.815C118.659,31.815 116.66,31.075 115.194,29.596C113.726,28.116 112.992,25.927 112.992,23.03V9.574Z"
android:fillColor="#ffffff"/>
<path
android:pathData="M140.664,26.775L151.434,14.939H141.133V9.574H159.955V14.153L149.14,26.035H160.004V31.261H140.664V26.775Z"
android:fillColor="#ffffff"/>
<path
android:pathData="M102.518,6.118L98.914,0H106.124L102.518,6.118Z"
android:fillColor="#ffffff"/>
</vector>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="15dp"
android:height="16dp"
android:viewportWidth="15"
android:viewportHeight="16">
<path
android:pathData="M0.5449,1.221L3.5917,0.5179C3.9228,0.4417 4.2626,0.6146 4.3974,0.9251L5.8036,4.2063C5.9266,4.4934 5.8446,4.8303 5.6014,5.0266L3.8261,6.4797C4.8808,8.7267 6.7235,10.5958 9.0174,11.671L10.4705,9.8956C10.6697,9.6525 11.0037,9.5704 11.2908,9.6935L14.572,11.0997C14.8854,11.2374 15.0583,11.5772 14.9821,11.9083L14.279,14.9551C14.2058,15.2715 13.9245,15.5 13.5935,15.5C6.0907,15.5 0,9.421 0,1.9065C0,1.5784 0.2256,1.2943 0.5449,1.221Z"
android:fillColor="#E62229"/>
</vector>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="32dp"
android:height="32dp"
android:viewportWidth="32"
android:viewportHeight="32">
<path
android:pathData="M2,0L30,0A2,2 0,0 1,32 2L32,30A2,2 0,0 1,30 32L2,32A2,2 0,0 1,0 30L0,2A2,2 0,0 1,2 0z"
android:fillColor="#ffffff"/>
<path
android:pathData="M15.4438,7.0104C14.4641,7.1147 13.8582,7.3611 13.3371,7.8668C12.6434,8.5401 12.3698,9.3661 12.3111,10.965C12.2707,12.0661 12.4242,12.8643 12.8284,13.6552C13.716,15.392 15.444,16.1814 17.0834,15.599C18.2634,15.1798 19.2259,14.0141 19.5594,12.6001C19.6823,12.0794 19.7163,11.6582 19.6909,10.9708C19.6316,9.3649 19.3591,8.5405 18.6649,7.8668C18.2228,7.4377 17.7253,7.1983 17.0174,7.0743C16.708,7.02 15.7271,6.9802 15.4438,7.0104ZM13.4305,16.2403C11.6965,16.606 10.794,16.998 10.144,17.6677C9.7,18.125 9.4266,18.6838 9.2575,19.4789C9.1296,20.0808 9.0681,20.7119 9.0239,21.8786C8.9781,23.0855 8.9592,22.9978 9.3429,23.3559C10.3169,24.2651 12.2275,24.8272 14.8146,24.9657C18.382,25.1568 21.3915,24.5392 22.6592,23.3559C23.0397,23.0006 23.0209,23.087 22.9776,21.8957C22.9409,20.8851 22.9017,20.3606 22.8282,19.9C22.4745,17.6816 21.4471,16.8145 18.4693,16.221L18.0408,16.1356L17.8984,16.2615C17.5965,16.5285 17.2138,16.7077 16.7021,16.8217C16.367,16.8963 15.635,16.8963 15.3,16.8217C14.7862,16.7072 14.2986,16.4727 14.0624,16.2264C13.9592,16.1189 14.0115,16.1177 13.4305,16.2403Z"
android:fillColor="#E62229"
android:fillType="evenOdd"/>
</vector>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="48dp"
android:height="48dp"
android:viewportWidth="48"
android:viewportHeight="48">
<path
android:pathData="M24,48C37.2548,48 48,37.2548 48,24C48,10.7452 37.2548,-0 24,-0C10.7452,-0 0,10.7452 0,24L0,46C0,47.1046 0.8954,48 2,48L24,48Z"
android:fillColor="#ffffff"/>
<path
android:pathData="M25.5,15.5L22.5,15.5L22.5,22.5L15.5,22.5L15.5,25.5H22.5L22.5,32.5H25.5L25.5,25.5L32.5,25.5V22.5L25.5,22.5L25.5,15.5Z"
android:fillColor="#E62229"/>
</vector>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="25dp"
android:height="24dp"
android:viewportWidth="25"
android:viewportHeight="24">
<group>
<clip-path
android:pathData="M12.5,0L12.5,0A12,12 0,0 1,24.5 12L24.5,12A12,12 0,0 1,12.5 24L12.5,24A12,12 0,0 1,0.5 12L0.5,12A12,12 0,0 1,12.5 0z"/>
<path
android:pathData="M0.5,0H32.5V24H0.5V0Z"
android:fillColor="#F9F9F9"
android:fillType="evenOdd"/>
<path
android:pathData="M0.5,8H32.5V24H0.5V8Z"
android:fillColor="#0039A6"
android:fillType="evenOdd"/>
<path
android:pathData="M0.5,16H32.5V24H0.5V16Z"
android:fillColor="#EC4336"
android:fillType="evenOdd"/>
</group>
</vector>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="25dp"
android:height="24dp"
android:viewportWidth="25"
android:viewportHeight="24">
<group>
<clip-path
android:pathData="M12.5,0L12.5,0A12,12 0,0 1,24.5 12L24.5,12A12,12 0,0 1,12.5 24L12.5,24A12,12 0,0 1,0.5 12L0.5,12A12,12 0,0 1,12.5 0z"/>
<path
android:pathData="M-3.5,0H28.5V24H-3.5V0Z"
android:fillColor="#012169"/>
<path
android:pathData="M0.25,0L12.45,9.05L24.6,0H28.5V3.1L16.5,12.05L28.5,20.95V24H24.5L12.5,15.05L0.55,24H-3.5V21L8.45,12.1L-3.5,3.2V0H0.25Z"
android:fillColor="#ffffff"/>
<path
android:pathData="M17.7,14.05L28.5,22V24L14.95,14.05H17.7ZM8.5,15.05L8.8,16.8L-0.8,24H-3.5L8.5,15.05ZM28.5,0V0.15L16.05,9.55L16.15,7.35L26,0H28.5ZM-3.5,0L8.45,8.8H5.45L-3.5,2.1V0Z"
android:fillColor="#C8102E"/>
<path
android:pathData="M8.55,0V24H16.55V0H8.55ZM-3.5,8V16H28.5V8H-3.5Z"
android:fillColor="#ffffff"/>
<path
android:pathData="M-3.5,9.65V14.45H28.5V9.65H-3.5ZM10.15,0V24H14.95V0H10.15Z"
android:fillColor="#C8102E"/>
</group>
</vector>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="25dp"
android:height="24dp"
android:viewportWidth="25"
android:viewportHeight="24">
<group>
<clip-path
android:pathData="M12.5,0L12.5,0A12,12 0,0 1,24.5 12L24.5,12A12,12 0,0 1,12.5 24L12.5,24A12,12 0,0 1,0.5 12L0.5,12A12,12 0,0 1,12.5 0z"/>
<path
android:pathData="M0.5,16H32.5V24H0.5V16Z"
android:fillColor="#1EB53A"/>
<path
android:pathData="M0.5,0H32.5V8H0.5V0Z"
android:fillColor="#0099B5"/>
<path
android:pathData="M0.5,7.6807H32.5V16.3207H0.5V7.6807Z"
android:fillColor="#CE1126"/>
<path
android:pathData="M0.5,8.1602H32.5V15.8402H0.5V8.1602Z"
android:fillColor="#F9F9F9"/>
</group>
</vector>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="22dp"
android:height="19dp"
android:viewportWidth="22"
android:viewportHeight="19">
<path
android:pathData="M10.7495,18.4279L0.3984,0.8574H21.1048L10.7495,18.4279Z"
android:fillColor="#E62229"/>
</vector>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="16dp"
android:height="16dp"
android:viewportWidth="14"
android:viewportHeight="13">
<path
android:pathData="M7.5887,0.6883C7.358,0.2523 6.6406,0.2523 6.41,0.6883L0.41,12.0217C0.356,12.1232 0.3292,12.2371 0.3323,12.3521C0.3353,12.4671 0.3681,12.5793 0.4275,12.6779C0.4868,12.7765 0.5707,12.858 0.6709,12.9145C0.7711,12.971 0.8843,13.0006 0.9993,13.0003H12.9993C13.1143,13.0006 13.2274,12.971 13.3275,12.9145C13.4276,12.8581 13.5114,12.7766 13.5707,12.6781C13.63,12.5796 13.6628,12.4674 13.6658,12.3525C13.6688,12.2376 13.642,12.1238 13.588,12.0223L7.5887,0.6883ZM7.666,11.0003H6.3327V9.667H7.666V11.0003ZM6.3327,8.3337V5.0003H7.666L7.6666,8.3337H6.3327Z"
android:fillColor="#D31F28"/>
</vector>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="19dp"
android:height="14dp"
android:viewportWidth="19"
android:viewportHeight="14">
<path
android:pathData="M10.6791,13.1768C10.8342,13.0224 10.9572,12.8389 11.0412,12.6368C11.1251,12.4348 11.1684,12.2181 11.1684,11.9993C11.1684,11.7805 11.1251,11.5638 11.0412,11.3617C10.9572,11.1597 10.8342,10.9762 10.6791,10.8218C10.5248,10.6664 10.3413,10.543 10.1392,10.4587C9.937,10.3745 9.7202,10.331 9.5012,10.3309C9.2821,10.3307 9.0653,10.3739 8.863,10.4578C8.6607,10.5418 8.477,10.6649 8.3225,10.8201C8.1633,10.9739 8.0363,11.1578 7.949,11.3611C7.8616,11.5644 7.8156,11.7831 7.8137,12.0044C7.8118,12.2257 7.854,12.4452 7.9378,12.65C8.0216,12.8549 8.1453,13.041 8.3018,13.1974C8.4583,13.3539 8.6444,13.4777 8.8492,13.5615C9.054,13.6453 9.2735,13.6875 9.4948,13.6855C9.7161,13.6836 9.9348,13.6376 10.1381,13.5503C10.3415,13.4629 10.5254,13.336 10.6791,13.1768ZM16.5716,6.596C16.3527,6.5964 16.1359,6.5534 15.9336,6.4696C15.7314,6.3858 15.5478,6.2628 15.3933,6.1076C12.1441,2.8584 6.8575,2.8593 3.6075,6.1076C3.2949,6.4202 2.8708,6.5959 2.4287,6.5959C1.9866,6.5959 1.5626,6.4202 1.25,6.1076C0.9373,5.795 0.7617,5.371 0.7617,4.9289C0.7617,4.4868 0.9373,4.0627 1.25,3.7501C5.7991,-0.7982 13.2008,-0.7982 17.7491,3.7501C17.9824,3.9831 18.1413,4.28 18.2058,4.6034C18.2702,4.9267 18.2374,5.2619 18.1113,5.5665C17.9853,5.8711 17.7717,6.1315 17.4976,6.3148C17.2236,6.498 16.9013,6.5959 16.5716,6.596ZM5.965,10.131C5.6354,10.1309 5.3132,10.0331 5.0392,9.8499C4.7652,9.6668 4.5516,9.4065 4.4255,9.102C4.2994,8.7975 4.2664,8.4625 4.3307,8.1392C4.3949,7.816 4.5536,7.519 4.7866,7.286C7.385,4.6868 11.615,4.6868 14.2141,7.286C14.5268,7.5986 14.7024,8.0226 14.7024,8.4647C14.7024,8.9068 14.5268,9.3308 14.2141,9.6434C13.9015,9.9561 13.4775,10.1317 13.0354,10.1317C12.5933,10.1317 12.1693,9.9561 11.8566,9.6434C11.231,9.0193 10.3833,8.6688 9.4996,8.6688C8.6158,8.6688 7.7681,9.0193 7.1425,9.6434C6.988,9.7984 6.8045,9.9212 6.6024,10.0048C6.4003,10.0885 6.1837,10.1314 5.965,10.131Z"
android:fillColor="#E62229"/>
</vector>
<?xml version="1.0" encoding="utf-8"?>
<androidx.fragment.app.FragmentContainerView xmlns:android="http://schemas.android.com/apk/res/android"
<LinearLayout
android:layout_width="match_parent"
android:fitsSystemWindows="true"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_height="match_parent">
<androidx.fragment.app.FragmentContainerView
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
......@@ -9,4 +15,6 @@
app:defaultNavHost="true"
android:name="androidx.navigation.fragment.NavHostFragment"
tools:context=".AuthActivity">
</androidx.fragment.app.FragmentContainerView>
\ No newline at end of file
</androidx.fragment.app.FragmentContainerView>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<androidx.fragment.app.FragmentContainerView 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"
android:id="@+id/main_container"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
<LinearLayout android:layout_width="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
app:defaultNavHost="true"
app:navGraph="@navigation/nav_graph_main"
tools:context=".MainActivity">
android:orientation="vertical"
android:fitsSystemWindows="false"
xmlns:app="http://schemas.android.com/apk/res-auto">
<androidx.fragment.app.FragmentContainerView
android:id="@+id/nav_host_fragment"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
/>
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottom_nav_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
app:itemIconSize="24dp"
app:elevation="4dp"
app:itemIconTint="@color/nav_item_tint"
app:itemTextColor="@color/nav_item_tint"
app:labelVisibilityMode="labeled"
app:menu="@menu/bottom_nav_menu" />
</androidx.fragment.app.FragmentContainerView>
\ No newline at end of file
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<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"
android:layout_width="match_parent"
android:gravity="center"
android:layout_height="match_parent"
tools:context=".PinActivity">
<com.chaos.view.PinView
android:id="@+id/firstPinView"
style="@style/PinWidget.PinView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:cursorVisible="true"
android:hint="00000"
android:inputType="text"
android:padding="@dimen/_1sdp"
android:textColor="@color/black"
android:textSize="18sp"
android:textStyle="bold"
app:cursorColor="@color/teal_200"
app:cursorWidth="2dp"
app:hideLineWhenFilled="true"
app:itemCount="5"
app:itemHeight="48dp"
app:itemRadius="4dp"
app:itemSpacing="0dp"
app:itemWidth="48dp"
app:lineColor="@color/teal_700"
app:lineWidth="2dp"
app:viewType="rectangle" />
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:background="@color/red_dark"
android:gravity="center"
android:fitsSystemWindows="false"
tools:context=".SplashActivity">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_mobiuz_logo"
android:layout_marginBottom="@dimen/_58sdp"
android:textStyle="bold" />
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".BlankFragment">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/hello_blank_fragment" />
</FrameLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:navigationIcon="@drawable/ic_baseline_arrow_back"
/>
<TextView
android:id="@+id/txt_enter_phone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/_12sdp"
android:layout_marginTop="@dimen/_14sdp"
android:text="@string/think_password"
android:textSize="@dimen/_16sdp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toTopOf="@id/txt_hint_password"
app:layout_constraintTop_toBottomOf="@id/toolbar" />
<TextView
android:id="@+id/txt_hint_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/_12sdp"
android:layout_marginTop="@dimen/_14sdp"
android:layout_marginBottom="@dimen/_4sdp"
android:text="Введите пароль:"
android:textColor="@color/black"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toTopOf="@id/layout_input_password"
app:layout_constraintTop_toBottomOf="@id/txt_enter_phone" />
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/layout_input_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/_12sdp"
android:layout_marginEnd="@dimen/_12sdp"
android:layout_marginBottom="@dimen/_140sdp"
app:endIconMode="password_toggle"
app:layout_constraintBottom_toTopOf="@id/txt_hint_confirm"
app:layout_constraintTop_toBottomOf="@id/txt_hint_password">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/input_password"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bgn_lang"
android:imeOptions="actionNext"
android:textSize="@dimen/_12sdp"
android:inputType="textPassword"
android:paddingVertical="@dimen/_12sdp"
android:paddingStart="@dimen/_12sdp" />
</com.google.android.material.textfield.TextInputLayout>
<TextView
android:id="@+id/txt_check_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/_6sdp"
android:visibility="invisible"
android:text="Должно быть не менее 6 символов"
android:textColor="@color/light"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="@id/layout_input_confirm"
app:layout_constraintTop_toBottomOf="@id/layout_input_password" />
<TextView
android:id="@+id/txt_hint_confirm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/_34sdp"
android:layout_marginBottom="@dimen/_4sdp"
android:text="Введите пароль повторно:"
android:textColor="@color/black"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="@id/layout_input_confirm"
app:layout_constraintTop_toBottomOf="@id/layout_input_password" />
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/layout_input_confirm"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/_12sdp"
android:layout_marginEnd="@dimen/_12sdp"
app:endIconMode="password_toggle"
app:layout_constraintTop_toBottomOf="@id/txt_hint_confirm">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/input_confirm"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bgn_lang"
android:imeOptions="actionDone"
android:textSize="@dimen/_12sdp"
android:inputType="textPassword"
android:paddingVertical="@dimen/_12sdp"
android:paddingStart="@dimen/_12sdp"
/>
</com.google.android.material.textfield.TextInputLayout>
<ImageView
android:id="@+id/image_check"
android:layout_width="wrap_content"
app:layout_constraintStart_toStartOf="@id/layout_input_confirm"
app:layout_constraintTop_toTopOf="@id/txt_check_confirm"
android:visibility="invisible"
app:layout_constraintBottom_toBottomOf="@id/txt_check_confirm"
android:src="@drawable/ic_vector_error"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/txt_check_confirm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/_10sdp"
android:text="Пароли должны совпадать"
android:textColor="@color/light"
android:textStyle="bold"
android:visibility="invisible"
android:layout_marginStart="@dimen/_6sdp"
app:layout_constraintStart_toEndOf="@id/image_check"
app:layout_constraintTop_toBottomOf="@id/layout_input_confirm" />
<Button
android:id="@+id/btn_login"
android:layout_width="match_parent"
android:enabled="false"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:textSize="@dimen/_12sdp"
android:layout_marginHorizontal="@dimen/_12sdp"
android:layout_marginTop="@dimen/_34sdp"
android:text="@string/continuoue_task"
app:layout_constraintTop_toBottomOf="@id/layout_input_confirm"
app:layout_constraintBottom_toBottomOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:navigationIcon="@drawable/ic_baseline_arrow_back"
/>
<TextView
android:id="@+id/txt_enter_phone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/_12sdp"
android:layout_marginTop="@dimen/_14sdp"
android:text="@string/enter_number"
android:textSize="@dimen/_16sdp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/toolbar" />
<TextView
android:id="@+id/hint_phone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/phone"
android:textColor="@color/light"
android:textStyle="bold"
app:layout_constraintBottom_toTopOf="@id/layout_input"
app:layout_constraintStart_toStartOf="@id/layout_input" />
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/layout_input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginStart="@dimen/_12sdp"
android:layout_marginEnd="@dimen/_12sdp"
app:layout_constraintBottom_toTopOf="@id/btn_login"
app:layout_constraintTop_toBottomOf="@id/toolbar">
<com.github.pinball83.maskededittext.MaskedEditText
android:layout_width="match_parent"
android:id="@+id/input_phone"
android:inputType="phone"
android:imeOptions="actionDone"
app:mask="+998 ** *** ** **"
app:notMaskedSymbol="*"
android:textSize="@dimen/_12sdp"
android:padding="@dimen/_14sdp"
android:background="@drawable/bgn_lang"
android:layout_height="match_parent"/>
</com.google.android.material.textfield.TextInputLayout>
<Button
android:id="@+id/btn_login"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:enabled="false"
android:textSize="@dimen/_12sdp"
android:layout_marginHorizontal="@dimen/_12sdp"
android:layout_marginTop="@dimen/_24sdp"
android:text="@string/continuoue_task"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/layout_input" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
This diff is collapsed.
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".LoginFragment">
android:orientation="vertical">
<!-- TODO: Update blank fragment layout -->
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:navigationIcon="@drawable/ic_baseline_arrow_back"
/>
<TextView
android:id="@+id/txt_enter_phone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/_12sdp"
android:layout_marginTop="@dimen/_14sdp"
android:text="@string/enter_number"
android:textSize="@dimen/_16sdp"
android:textStyle="bold" />
<LinearLayout
android:layout_width="match_parent"
android:orientation="vertical"
android:gravity="center"
android:layout_height="0dp"
android:layout_weight="1">
<TextView
android:id="@+id/hint_phone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/phone"
android:layout_marginStart="@dimen/_12sdp"
android:layout_gravity="start"
android:textColor="@color/light"
android:textStyle="bold"
/>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/layout_input"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/hello_blank_fragment" />
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginStart="@dimen/_12sdp"
android:layout_marginEnd="@dimen/_12sdp">
<com.github.pinball83.maskededittext.MaskedEditText
android:layout_width="match_parent"
android:id="@+id/input_phone"
android:inputType="phone"
android:imeOptions="actionDone"
app:mask="+998 ** *** ** **"
app:notMaskedSymbol="*"
android:textSize="@dimen/_12sdp"
android:padding="@dimen/_14sdp"
android:background="@drawable/bgn_lang"
android:layout_height="match_parent"/>
</com.google.android.material.textfield.TextInputLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<Button
android:id="@+id/btn_login"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:enabled="false"
android:textSize="@dimen/_12sdp"
android:layout_marginHorizontal="@dimen/_12sdp"
android:layout_marginTop="@dimen/_24sdp"
android:text="@string/continuoue_task" />
</FrameLayout>
\ No newline at end of file
</LinearLayout>
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:navigationIcon="@drawable/ic_baseline_arrow_back"
/>
<TextView
android:id="@+id/txt_enter_phone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/_12sdp"
android:layout_marginTop="@dimen/_14sdp"
android:text="@string/enter"
android:textSize="@dimen/_16sdp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toTopOf="@id/txt_hint_password"
app:layout_constraintTop_toBottomOf="@id/toolbar" />
<TextView
android:id="@+id/txt_hint_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/_12sdp"
android:layout_marginTop="@dimen/_14sdp"
android:layout_marginBottom="@dimen/_4sdp"
android:text="Телефон:"
android:textColor="@color/black"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toTopOf="@id/layout_input_password"
app:layout_constraintTop_toBottomOf="@id/txt_enter_phone" />
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/layout_input_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginStart="@dimen/_12sdp"
android:layout_marginEnd="@dimen/_12sdp"
android:layout_marginBottom="@dimen/_140sdp"
app:layout_constraintBottom_toTopOf="@id/txt_hint_password"
app:layout_constraintTop_toBottomOf="@id/txt_hint_password">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/input_phone"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="false"
android:focusable="false"
android:textSize="@dimen/_12sdp"
android:background="@drawable/bgn_lang"
android:imeOptions="actionNext"
android:inputType="phone"
android:paddingVertical="@dimen/_12sdp"
android:paddingStart="@dimen/_12sdp" />
</com.google.android.material.textfield.TextInputLayout>
<TextView
android:id="@+id/txt_check_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/_6sdp"
android:visibility="invisible"
android:text="Должно быть не менее 6 символов"
android:textColor="@color/light"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="@id/layout_input_confirm"
app:layout_constraintTop_toBottomOf="@id/layout_input_password" />
<TextView
android:id="@+id/txt_hint_confirm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/_34sdp"
android:layout_marginBottom="@dimen/_4sdp"
android:text="Пароль:"
android:textColor="@color/black"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="@id/layout_input_confirm"
app:layout_constraintTop_toBottomOf="@id/layout_input_password" />
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/layout_input_confirm"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginStart="@dimen/_12sdp"
android:layout_marginEnd="@dimen/_12sdp"
app:endIconMode="password_toggle"
app:layout_constraintTop_toBottomOf="@id/txt_hint_confirm">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/input_password"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bgn_lang"
android:imeOptions="actionDone"
android:inputType="textPassword"
android:textSize="@dimen/_12sdp"
android:paddingVertical="@dimen/_12sdp"
android:paddingStart="@dimen/_12sdp"
/>
</com.google.android.material.textfield.TextInputLayout>
<TextView
android:id="@+id/txt_forget_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="@dimen/_6sdp"
android:text="Забыли пароль?"
android:background="?android:selectableItemBackground"
android:textColor="@color/light_dark"
android:textStyle="bold"
android:layout_marginTop="@dimen/_10sdp"
android:layout_marginEnd="@dimen/_10sdp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/layout_input_confirm" />
<Button
android:id="@+id/btn_login"
android:layout_width="match_parent"
android:enabled="false"
android:textSize="@dimen/_12sdp"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_marginHorizontal="@dimen/_12sdp"
android:layout_marginTop="@dimen/_34sdp"
android:text="@string/enter"
app:layout_constraintTop_toBottomOf="@id/layout_input_confirm"
app:layout_constraintBottom_toBottomOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
......@@ -3,7 +3,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".RegisterFragment">
tools:context=".PinLockFragment">
<!-- TODO: Update blank fragment layout -->
<TextView
......
<?xml version="1.0" encoding="utf-8"?>
<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"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="18dp">
<com.airbnb.lottie.LottieAnimationView
android:layout_width="@dimen/_70sdp"
android:layout_height="@dimen/_70sdp"
android:adjustViewBounds="true"
app:lottie_autoPlay="true"
app:lottie_loop="true"
app:lottie_rawRes="@raw/rifki_loading"
app:lottie_speed="1"
tools:ignore="ContentDescription" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".VerificationFragment">
android:orientation="vertical">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:navigationIcon="@drawable/ic_baseline_arrow_back"
/>
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:id="@+id/pin_view"
app:layout_constraintTop_toTopOf="parent"
android:background="@drawable/bgn_lang"
android:padding="@dimen/_14sdp"
android:layout_marginHorizontal="@dimen/_12sdp"
android:gravity="center"
android:textSize="@dimen/_12sdp"
android:inputType="number"
android:imeOptions="actionDone"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/txt_enter_phone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/_12sdp"
android:layout_marginTop="@dimen/_14sdp"
android:text="@string/enter_verification"
android:textSize="@dimen/_16sdp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/toolbar" />
<!-- TODO: Update blank fragment layout -->
<TextView
android:id="@+id/countWaitText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="38dp"
android:text="@string/sent_code_again"
android:textSize="16sp"
app:layout_constraintEnd_toStartOf="@id/coutdown_view"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/pin_view" />
<TextView
android:id="@+id/sent_code_again"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="38dp"
android:background="?selectableItemBackground"
android:text="@string/sent_code_again"
android:textSize="14sp"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/pin_view" />
<cn.iwgang.countdownview.CountdownView
android:id="@+id/coutdown_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/_12sdp"
android:layout_marginTop="4dp"
android:visibility="visible"
app:isHideTimeBackground="false"
app:isShowDay="false"
app:isShowHour="false"
app:isShowMillisecond="false"
app:isShowMinute="true"
app:isShowSecond="true"
app:isShowTimeBgBorder="false"
app:isShowTimeBgDivisionLine="false"
app:isTimeTextBold="true"
app:layout_constraintBottom_toBottomOf="@id/countWaitText"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/countWaitText"
app:layout_constraintTop_toTopOf="@id/countWaitText"
app:suffixDay="days"
app:suffixGravity="center"
app:suffixHour=":"
app:suffixMillisecond="ss"
app:suffixMinute=":"
app:suffixSecond=""
app:suffixTextSize="12sp"
app:timeBgColor="#00FF5000"
app:timeBgRadius="3dp"
app:timeBgSize="14dp"
app:timeTextSize="14dp" />
<Button
android:id="@+id/btn_login"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/hello_blank_fragment" />
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_marginHorizontal="@dimen/_12sdp"
android:layout_marginTop="@dimen/_24sdp"
android:text="@string/continuoue_task"
android:textSize="@dimen/_12sdp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/pin_view" />
</FrameLayout>
\ No newline at end of file
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".VerificationFragment">
<!-- TODO: Update blank fragment layout -->
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/hello_blank_fragment" />
</FrameLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:paddingVertical="@dimen/_16sdp"
android:paddingHorizontal="12dp"
android:background="@drawable/banner"
android:layout_height="@dimen/_140sdp">
<TextView
android:layout_width="wrap_content"
android:textColor="@color/red"
android:text="mobiuz"
android:textStyle="bold"
android:textSize="24sp"
android:layout_height="wrap_content"/>
<TextView
android:layout_width="wrap_content"
android:textColor="@color/black_80"
android:maxWidth="@dimen/_150sdp"
android:layout_marginTop="6dp"
android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Dui, risus"
android:textStyle="bold"
android:textSize="14sp"
android:layout_marginBottom="8dp"
android:layout_height="wrap_content"/>
<com.google.android.material.card.MaterialCardView
android:layout_width="wrap_content"
app:cardCornerRadius="4dp"
android:layout_marginTop="6dp"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="wrap_content"
android:paddingHorizontal="12dp"
android:paddingVertical="10dp"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:textColor="@color/red"
android:text="Узнать больше"
android:textStyle="bold"
android:layout_height="wrap_content"/>
<ImageView
android:layout_width="wrap_content"
android:layout_marginStart="4dp"
android:src="@drawable/ic_baseline_keyboard_arrow_right"
android:layout_height="wrap_content"/>
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/nav_graph_home"
android:title="My MOBI"
android:icon="@drawable/ic_vector"/>
<item android:id="@+id/nav_graph_profile"
android:title="Profile"
android:icon="@drawable/ic_baseline_account_box"/>
</menu>
\ No newline at end of file
......@@ -7,17 +7,28 @@
<fragment
android:id="@+id/loginFragment"
android:name="uz.ssd.mobiuz.LoginFragment"
android:name="uz.ssd.mobiuz.ui.auth.LoginFragment"
android:label="fragment_login"
tools:layout="@layout/fragment_login" />
<fragment
android:id="@+id/registerFragment"
android:name="uz.ssd.mobiuz.RegisterFragment"
android:label="fragment_register"
tools:layout="@layout/fragment_register" />
<fragment
android:id="@+id/verificationFragment"
android:name="uz.ssd.mobiuz.VerificationFragment"
android:name="uz.ssd.mobiuz.ui.auth.VerificationFragment"
android:label="fragment_verification"
tools:layout="@layout/fragment_verification" />
<fragment
android:id="@+id/enterPasswordFragment"
tools:layout="@layout/fragment_enter_password"
android:name="uz.ssd.mobiuz.ui.auth.EnterPasswordFragment"
android:label="EnterPasswordFragment" />
<fragment
android:id="@+id/passwordFragment"
android:name="uz.ssd.mobiuz.ui.auth.PasswordFragment"
android:label="fragment_password"
tools:layout="@layout/fragment_password" />
<fragment
android:id="@+id/forgetPasswordFragment"
tools:layout="@layout/fragment_forget_password"
android:name="uz.ssd.mobiuz.ui.auth.ForgetPasswordFragment"
android:label="ForgetPasswordFragment" />
</navigation>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<navigation 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"
app:startDestination="@id/homeFragment"
android:id="@+id/nav_graph_home">
<fragment
android:id="@+id/homeFragment"
android:name="uz.ssd.mobiuz.ui.home.HomeFragment"
android:label="fragment_home"
tools:layout="@layout/fragment_home" />
</navigation>
\ No newline at end of file
......@@ -7,7 +7,7 @@
<fragment
android:id="@+id/homeFragment"
android:name="uz.ssd.mobiuz.HomeFragment"
android:name="uz.ssd.mobiuz.ui.home.HomeFragment"
android:label="fragment_home"
tools:layout="@layout/fragment_home" />
</navigation>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<navigation 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"
app:startDestination="@id/homeFragment"
android:id="@+id/nav_graph_profile">
<fragment
android:id="@+id/homeFragment"
android:name="uz.ssd.mobiuz.ui.home.HomeFragment"
android:label="fragment_home"
tools:layout="@layout/fragment_home" />
</navigation>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<navigation 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"
app:startDestination="@id/blankFragment"
android:id="@+id/nav_graph_red">
<fragment
android:id="@+id/homeFragment"
android:name="uz.ssd.mobiuz.ui.home.HomeFragment"
android:label="fragment_home"
tools:layout="@layout/fragment_home" />
<fragment
android:id="@+id/blankFragment"
android:name="uz.ssd.mobiuz.BlankFragment"
android:label="fragment_blank"
tools:layout="@layout/fragment_blank" />
</navigation>
\ No newline at end of file
{"v":"5.5.8","fr":29.9700012207031,"ip":0,"op":45.0000018328876,"w":200,"h":200,"nm":"Comp 1","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"circle_group","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[100,100,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":0,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":15,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":23,"s":[50,50,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":30,"s":[100,100,100]},{"t":45.0000018328876,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[0.57,0.926],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-277.715,-177.537],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[72,72],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0.196078434587,0.556862771511,0.960784316063,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":23,"s":[0.239215686917,0.784313738346,1,1]},{"t":45.0000018328876,"s":[0.196078434587,0.556862771511,0.960784316063,1]}],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[0,-50],"to":[-9.167,16.667],"ti":[-9.167,-16.667]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":15,"s":[-55,50],"to":[9.167,16.667],"ti":[-9.167,16.667]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":30,"s":[55,50],"to":[9.167,-16.667],"ti":[9.167,16.667]},{"t":45.0000018328876,"s":[0,-50]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"circle_A","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[72,72],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0.196078434587,0.556862771511,0.960784316063,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":23,"s":[0.239215686917,0.784313738346,1,1]},{"t":45.0000018328876,"s":[0.196078434587,0.556862771511,0.960784316063,1]}],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[-55,50],"to":[18.333,0],"ti":[-9.167,16.667]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":15,"s":[55,50],"to":[9.167,-16.667],"ti":[18.333,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":30,"s":[0,-50],"to":[-18.333,0],"ti":[9.167,-16.667]},{"t":45.0000018328876,"s":[-55,50]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"circle_B","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[72,72],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0.196078434587,0.556862771511,0.960784316063,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":23,"s":[0.239215686917,0.784313738346,1,1]},{"t":45.0000018328876,"s":[0.196078434587,0.556862771511,0.960784316063,1]}],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[55,50],"to":[-9.167,-16.667],"ti":[18.333,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":15,"s":[0,-50],"to":[-18.333,0],"ti":[-9.167,-16.667]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":30,"s":[-55,50],"to":[9.167,16.667],"ti":[-18.333,0]},{"t":45.0000018328876,"s":[55,50]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"circle_C","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900.000036657751,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
{"v":"5.5.7","meta":{"g":"LottieFiles AE 0.1.20","a":"","k":"","d":"","tc":""},"fr":30,"ip":0,"op":80,"w":500,"h":500,"nm":"exclamação animation","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"exclamation","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":7,"s":[258.4,231.36,0],"to":[0,-1.06,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":10,"s":[258.4,225,0],"to":[0,0,0],"ti":[0,-1.06,0]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":13,"s":[258.4,231.36,0],"to":[0,1.06,0],"ti":[0,1.06,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":41,"s":[258.4,231.36,0],"to":[0,-1.06,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":44,"s":[258.4,225,0],"to":[0,0,0],"ti":[0,-1.06,0]},{"t":47,"s":[258.4,231.36,0]}],"ix":2},"a":{"a":0,"k":[16.613,83.692,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":7,"s":[90,90,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":10,"s":[93,93,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":13,"s":[90,90,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":41,"s":[90,90,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":44,"s":[93,93,100]},{"t":47,"s":[90,90,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[9.037,0],[0,0],[0,9.038],[-9.037,0],[0,-9.037]],"o":[[0,0],[-9.037,0],[0,-9.037],[9.037,0],[0,9.038]],"v":[[0,16.363],[0,16.363],[-16.363,0],[0,-16.363],[16.363,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[16.613,150.771],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[8.134,0],[0,0],[0,8.134],[0,0],[-8.133,0],[0,-8.134],[0,0]],"o":[[0,0],[-8.133,0],[0,0],[0,-8.134],[8.134,0],[0,0],[0,8.134]],"v":[[0,59.999],[0,59.999],[-14.727,45.271],[-14.727,-45.271],[0,-59.999],[14.727,-45.271],[14.727,45.271]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[16.613,60.249],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":80,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"stroke circle","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[258.4,231.36,0],"ix":2},"a":{"a":0,"k":[146,146,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-77.872,0],[0,-77.872],[77.872,0],[0,77.872]],"o":[[77.872,0],[0,77.872],[-77.872,0],[0,-77.872]],"v":[[0,-141],[141,0],[0,141],[-141,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.952999997606,0.340999977261,0.301999978458,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[146,146],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":30,"s":[90,90]},{"t":78,"s":[120,120]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":30,"s":[90]},{"t":79,"s":[0]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":90,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"stroke circle 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[258.4,231.36,0],"ix":2},"a":{"a":0,"k":[146,146,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-77.872,0],[0,-77.872],[77.872,0],[0,77.872]],"o":[[77.872,0],[0,77.872],[-77.872,0],[0,-77.872]],"v":[[0,-141],[141,0],[0,141],[-141,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.952999997606,0.340999977261,0.301999978458,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[146,146],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":0,"s":[90,90]},{"t":48,"s":[120,120]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[90]},{"t":49,"s":[0]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":90,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"circle","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[258.4,231.36,0],"ix":2},"a":{"a":0,"k":[130.82,130.82,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-72.112,0],[0,-72.112],[72.111,0],[0,72.111]],"o":[[72.111,0],[0,72.111],[-72.112,0],[0,-72.112]],"v":[[0,-130.57],[130.57,0],[0,130.57],[-130.57,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.952999997606,0.340999977261,0.301999978458,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[130.82,130.82],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":90,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
{"v":"5.5.8","fr":60,"ip":0,"op":50,"w":352,"h":328,"nm":"loading","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Layer 5 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":10,"s":[0]},{"t":20,"s":[90]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[273.692,264.004,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":10,"s":[249.692,238.504,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":20,"s":[102.152,237.514,0],"to":[0,0,0],"ti":[0,0,0]},{"t":35,"s":[75.986,264.652,0]}],"ix":2},"a":{"a":0,"k":[39.639,39.363,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.002,8.87],[0.307,9.885],[-7.001,-0.101],[-20.127,0.246],[-0.027,-5.58],[0.213,-19.786],[7.326,0.11],[18.424,-0.127],[-0.751,8.993]],"o":[[0.001,-9.896],[-0.195,-6.285],[20.126,0.289],[6.265,-0.078],[0.095,19.788],[-0.074,6.933],[-18.42,-0.276],[-8.522,0.057],[0.736,-8.81]],"v":[[-38.476,0.024],[-38.556,-29.658],[-29.966,-39.012],[30.422,-39.001],[39.284,-30.48],[39.176,28.883],[28.115,39.003],[-27.157,38.947],[-38.638,26.624]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.373285779766,0.419364121381,0.629613420075,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[39.639,39.363],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":50,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"cube 2 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":10,"s":[0]},{"t":20,"s":[90]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[76.311,265.093,0],"to":[-6.578,5.854,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":10,"s":[103.061,237.593,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":20,"s":[102.601,90.397,0],"to":[0,0,0],"ti":[0,0,0]},{"t":35,"s":[76.101,65.093,0]}],"ix":2},"a":{"a":0,"k":[39.628,39.611,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.001,-9.556],[-0.41,-9.879],[6.697,-0.013],[18.429,0.122],[-0.298,9.885],[0.053,17.064],[-10.503,-0.497],[-18.425,0.287],[0.288,-7.214]],"o":[[0.001,9.897],[0.294,7.073],[-18.43,0.035],[-8.916,-0.058],[0.515,-17.049],[-0.027,-8.788],[18.388,0.87],[6.954,-0.107],[-0.381,9.541]],"v":[[38.98,-0.574],[39.083,29.113],[29.581,39.262],[-25.707,39.24],[-39.079,25.488],[-38.949,-25.701],[-25.917,-38.865],[29.359,-38.717],[39.072,-29.238]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.636960018382,0.710408169616,0.82662969851,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[39.627,39.611],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":50,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"cube 3 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":10,"s":[0]},{"t":20,"s":[90]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[275.125,64.031,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":10,"s":[249.625,91.031,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":20,"s":[249.625,237.553,0],"to":[0,0,0],"ti":[0,0,0]},{"t":35,"s":[274.969,265.125,0]}],"ix":2},"a":{"a":0,"k":[39.465,39.399,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[8.873,0.002],[9.548,-0.285],[-0.078,6.772],[0.279,19.791],[-6.186,0.033],[-19.107,-0.282],[0.206,-8.717],[0.169,-17.063],[12.029,-0.025]],"o":[[-9.557,-0.003],[-6.413,0.192],[0.227,-19.792],[-0.093,-6.557],[19.111,-0.103],[8.092,0.12],[-0.403,17.055],[-0.124,12.438],[-8.873,0.019]],"v":[[-1.143,38.887],[-29.809,38.958],[-39.1,30.12],[-39.122,-29.26],[-30.236,-38.949],[27.097,-38.867],[39.01,-25.832],[38.85,25.357],[25.476,38.886]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.636960018382,0.710408169616,0.82662969851,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[39.465,39.4],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":50,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"cube 4 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":10,"s":[0]},{"t":20,"s":[90]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[76.267,63.981,0],"to":[-0.73,-0.912,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":10,"s":[99.767,91.006,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":20,"s":[249.396,91.006,0],"to":[0,0,0],"ti":[0,0,0]},{"t":35,"s":[274.89,65.082,0]}],"ix":2},"a":{"a":0,"k":[39.634,39.346,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.003,-9.212],[-0.288,-9.886],[6.112,0.064],[20.127,-0.256],[0.031,5.612],[-0.209,19.786],[-7.384,-0.112],[-18.423,0.131],[0.741,-9.077]],"o":[[-0.003,9.895],[0.181,6.219],[-20.127,-0.208],[-6.228,0.079],[-0.108,-19.788],[0.072,-6.877],[18.42,0.278],[8.459,-0.06],[-0.747,9.151]],"v":[[38.477,0.925],[38.551,30.607],[30.062,38.999],[-30.327,39.018],[-39.268,30.579],[-39.176,-28.784],[-28.195,-38.984],[27.076,-38.931],[38.644,-26.697]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.373285779766,0.419364121381,0.629613420075,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[39.895,39.223],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":50,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"bg Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[175.544,163.841,0],"ix":2},"a":{"a":0,"k":[175.794,164.091,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-175.544,163.841],[175.544,163.841],[175.544,-163.841],[-175.544,-163.841]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.999999940162,0.999999940162,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[175.794,164.091],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":50,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
{
"v": "5.7.11",
"fr": 25,
"ip": 0,
"op": 110,
"w": 800,
"h": 800,
"nm": "Comp 2",
"ddd": 0,
"assets": [],
"layers": [
{
"ddd": 0,
"ind": 1,
"ty": 4,
"nm": "Shape Layer 1",
"sr": 1,
"ks": {
"o": {
"a": 0,
"k": 100,
"ix": 11
},
"r": {
"a": 1,
"k": [
{
"t": 0,
"s": [
0
],
"h": 1
},
{
"t": 1,
"s": [
36
],
"h": 1
},
{
"t": 2,
"s": [
72
],
"h": 1
},
{
"t": 3,
"s": [
108
],
"h": 1
},
{
"t": 4,
"s": [
144
],
"h": 1
},
{
"t": 5,
"s": [
180
],
"h": 1
},
{
"t": 6,
"s": [
216
],
"h": 1
},
{
"t": 7,
"s": [
252
],
"h": 1
},
{
"t": 8,
"s": [
288
],
"h": 1
},
{
"t": 9,
"s": [
324
],
"h": 1
},
{
"t": 10,
"s": [
360
],
"h": 1
}
],
"ix": 10,
"x": "var $bm_rt;\n$bm_rt = loopOut();"
},
"p": {
"a": 0,
"k": [
400,
400,
0
],
"ix": 2,
"l": 2
},
"a": {
"a": 0,
"k": [
0,
0,
0
],
"ix": 1,
"l": 2
},
"s": {
"a": 0,
"k": [
100,
100,
100
],
"ix": 6,
"l": 2
}
},
"ao": 0,
"shapes": [
{
"ty": "gr",
"it": [
{
"d": 1,
"ty": "el",
"s": {
"a": 0,
"k": [
800,
800
],
"ix": 2
},
"p": {
"a": 0,
"k": [
0,
0
],
"ix": 3
},
"nm": "Ellipse Path 1",
"mn": "ADBE Vector Shape - Ellipse",
"hd": false
},
{
"ty": "fl",
"c": {
"a": 0,
"k": [
0.781960880055,
0.1576186685,
0.1576186685,
1
],
"ix": 4
},
"o": {
"a": 0,
"k": 100,
"ix": 5
},
"r": 1,
"bm": 0,
"nm": "Fill 1",
"mn": "ADBE Vector Graphic - Fill",
"hd": false
},
{
"ty": "tr",
"p": {
"a": 0,
"k": [
0,
-130
],
"ix": 2
},
"a": {
"a": 0,
"k": [
0,
0
],
"ix": 1
},
"s": {
"a": 0,
"k": [
7,
7
],
"ix": 3
},
"r": {
"a": 0,
"k": 0,
"ix": 6
},
"o": {
"a": 0,
"k": 100,
"ix": 7
},
"sk": {
"a": 0,
"k": 0,
"ix": 4
},
"sa": {
"a": 0,
"k": 0,
"ix": 5
},
"nm": "Transform"
}
],
"nm": "Ellipse 1",
"np": 3,
"cix": 2,
"bm": 0,
"ix": 1,
"mn": "ADBE Vector Group",
"hd": false
},
{
"ty": "rp",
"c": {
"a": 0,
"k": 10,
"ix": 1
},
"o": {
"a": 0,
"k": 0,
"ix": 2
},
"m": 1,
"ix": 2,
"tr": {
"ty": "tr",
"p": {
"a": 0,
"k": [
0,
0
],
"ix": 2
},
"a": {
"a": 0,
"k": [
0,
0
],
"ix": 1
},
"s": {
"a": 0,
"k": [
100,
100
],
"ix": 3
},
"r": {
"a": 0,
"k": 36,
"ix": 4
},
"so": {
"a": 0,
"k": 5,
"ix": 5
},
"eo": {
"a": 0,
"k": 100,
"ix": 6
},
"nm": "Transform"
},
"nm": "Repeater 1",
"mn": "ADBE Vector Filter - Repeater",
"hd": false
}
],
"ip": 0,
"op": 110,
"st": 0,
"bm": 0
}
],
"markers": []
}
\ No newline at end of file
{"v":"5.5.7","meta":{"g":"LottieFiles AE 0.1.20","a":"Inktwin","k":"Successful animation, check, success, congrats, cangratulation","d":"Successful animation","tc":"dark"},"fr":24,"ip":0,"op":48,"w":200,"h":200,"nm":"Success","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Shape Layer 4","parent":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":60,"s":[100]},{"t":70,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-5.051,60.949,0],"ix":2},"a":{"a":0,"k":[77,2,0],"ix":1},"s":{"a":0,"k":[55.682,55.682,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0]],"o":[[0,0]],"v":[[955.194,251.637]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":64,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-236,0],[0,169.697],[223.622,0],[0,0],[0,0],[0,0],[0,0]],"o":[[232.172,0],[0,-178.341],[-228.293,0],[0,0],[0,0],[0,0],[0,0]],"v":[[54.299,326.269],[430.045,-2.319],[81.56,-379.819],[-238.557,-171.999],[-56,6],[30,92],[210,-88]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":64,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.851],"y":[0]},"t":48,"s":[83]},{"t":69,"s":[0]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.851],"y":[0]},"t":49,"s":[100]},{"t":70,"s":[0]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":3,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":48,"op":973,"st":13,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Shape Layer 2","parent":4,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-5.051,60.949,0],"ix":2},"a":{"a":0,"k":[77,2,0],"ix":1},"s":{"a":0,"k":[55.682,55.682,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-56,6],[30,92],[210,-88]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":64,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.2196078431372549,0.7568627450980392,0.4470588235294118,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":12,"s":[0]},{"t":24,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":49,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Shape Layer 3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[101.49999999999999,92.5,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[25,25,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8,-78],[-8,-254]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":20,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.2196078431372549,0.7568627450980392,0.4470588235294118,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":11,"s":[0]},{"t":23,"s":[100]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":9,"s":[0]},{"t":21,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"rp","c":{"a":0,"k":10,"ix":1},"o":{"a":0,"k":0,"ix":2},"m":1,"ix":3,"tr":{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[-9,17],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":36,"ix":4},"so":{"a":0,"k":100,"ix":5},"eo":{"a":0,"k":100,"ix":6},"nm":"Transform"},"nm":"Repeater 1","mn":"ADBE Vector Filter - Repeater","hd":false}],"ip":-3,"op":957,"st":-3,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Shape Layer 1","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":56,"s":[100]},{"t":64,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[45]},{"t":12,"s":[0]}],"ix":10,"x":"var $bm_rt;\nvar amp, freq, decay, n, n, t, t, v;\namp = 0.06;\nfreq = 2;\ndecay = 4;\n$bm_rt = n = 0;\nif (numKeys > 0) {\n $bm_rt = n = nearestKey(time).index;\n if (key(n).time > time) {\n n--;\n }\n}\nif (n == 0) {\n $bm_rt = t = 0;\n} else {\n $bm_rt = t = $bm_sub(time, key(n).time);\n}\nif (n > 0) {\n v = velocityAtTime($bm_sub(key(n).time, $bm_div(thisComp.frameDuration, 10)));\n $bm_rt = $bm_sum(value, $bm_div($bm_mul($bm_mul(v, amp), Math.sin($bm_mul($bm_mul($bm_mul(freq, t), 2), Math.PI))), Math.exp($bm_mul(decay, t))));\n} else {\n $bm_rt = value;\n}"},"p":{"a":0,"k":[100,100,0],"ix":2},"a":{"a":0,"k":[-5.051,60.949,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,-15.667]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":12,"s":[25,25,100]}],"ix":6,"x":"var $bm_rt;\nvar amp, freq, decay, n, n, t, t, v;\namp = 0.06;\nfreq = 2;\ndecay = 4;\n$bm_rt = n = 0;\nif (numKeys > 0) {\n $bm_rt = n = nearestKey(time).index;\n if (key(n).time > time) {\n n--;\n }\n}\nif (n == 0) {\n $bm_rt = t = 0;\n} else {\n $bm_rt = t = $bm_sub(time, key(n).time);\n}\nif (n > 0) {\n v = velocityAtTime($bm_sub(key(n).time, $bm_div(thisComp.frameDuration, 10)));\n $bm_rt = $bm_sum(value, $bm_div($bm_mul($bm_mul(v, amp), Math.sin($bm_mul($bm_mul($bm_mul(freq, t), 2), Math.PI))), Math.exp($bm_mul(decay, t))));\n} else {\n $bm_rt = value;\n}"}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[0.2196078431372549,0.7568627450980392,0.4470588235294118,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":8,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.2196078431372549,0.7568627450980392,0.4470588235294118,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[393.898,393.898],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.2196078431372549,0.7568627450980392,0.4470588235294118,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":8,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.2196078431372549,0.7568627450980392,0.4470588235294118,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-5.051,44.949],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":960,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
......@@ -7,4 +7,13 @@
<color name="teal_700">#FF018786</color>
<color name="black">#FF000000</color>
<color name="white">#FFFFFFFF</color>
<color name="red_dark">#981419</color>
<color name="red">#E62229</color>
<color name="green">#23B91B</color>
<color name="red_disabled">#F4CDCE</color>
<color name="lang_bgn">#F1F1F1</color>
<color name="lang_bgn_dark">#B6B4B4</color>
<color name="light">#B6B6B6</color>
<color name="light_dark">#1C1C1E</color>
<color name="black_80">#CC000000</color>
</resources>
\ No newline at end of file
......@@ -2,4 +2,43 @@
<string name="app_name">MobiUz-Android</string>
<!-- TODO: Remove or change this placeholder text -->
<string name="hello_blank_fragment">Hello blank fragment</string>
<string name="login">Login</string>
<string name="phone_number">Phone Number</string>
<string name="ex304">Не исправимая ошибка</string>
<string name="ex400">неверный запрос</string>
<string name="ex401">Пользователь не зарегистрирован</string>
<string name="ex403">Запрещено</string>
<string name="ex404">Не Найдено</string>
<string name="ex405">Метод запрещен</string>
<string name="ex406">Неприемлемо</string>
<string name="ex408">Тайм-аут запроса</string>
<string name="ex409">Конфликт</string>
<string name="ex413">Тайм-аут запроса</string>
<string name="ex422">Необработанный</string>
<string name="ex429">Необработанный</string>
<string name="ex500">Ошибка сервера</string>
<string name="ex502">Неверный шлюз</string>
<string name="exelse">Непредвиденная ошибка, повторите попытку позже</string>
<string name="ioexception">Ошибка сетевого подключения</string>
<string name="jsonsyntaxexception">Ma\'lumot olishda xatolik</string>
<string name="connect_exception">Internet yo\'q</string>
<string name="ex_nothing">Неизвестная ошибка</string>
<string name="home_fragment">This is home page</string>
<string name="register">Registration</string>
<string name="password">Password</string>
<string name="choose_lang">Tilni tanlang</string>
<string name="uzbek">O\'zbek</string>
<string name="english">English</string>
<string name="russian">Russian</string>
<string name="back">Back</string>
<string name="enter_number">Введите номер</string>
<string name="continuoue">Далее</string>
<string name="phone">Телефон:</string>
<string name="continuoue_task">Далее</string>
<string name="think_password">Придумайте пароль</string>
<string name="enter">Войти</string>
<string name="enter_verification">Ведите код подтверждения</string>
<string name="sent_code_again">Sent code again</string>
</resources>
\ No newline at end of file
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.MobiUzAndroid" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
<style name="Theme.MobiUzAndroid" parent="Theme.MaterialComponents.DayNight.NoActionBar.Bridge">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_500</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/white</item>
<!-- <item name="windowActionBar">false</item>-->
<!-- <item name="windowNoTitle">false</item>-->
<item name="android:fitsSystemWindows">false</item>
<item name="colorPrimaryDark">@android:color/transparent</item>
<!-- <item name="android:windowDrawsSystemBarBackgrounds">true</item>-->
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:windowTranslucentStatus">true</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_700</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<item name="android:textSize">13sp</item>
<item name="android:textColor">@color/black</item>
<item name="buttonStyle">@style/ButtonPrimary</item>
<!-- Customize your theme here. -->
</style>
<style name="ProgressDialogTheme" parent="ThemeOverlay.AppCompat.Dialog">
<item name="android:windowBackground">@android:color/transparent</item>
</style>
<style name="FullScreenDialog" parent="Theme.AppCompat.Light.Dialog">
<item name="android:backgroundDimEnabled">false</item>
<item name="android:windowNoTitle">true</item>
<item name="android:padding">0dp</item>
<item name="android:windowIsFloating">false</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowCloseOnTouchOutside">false</item>
</style>
<style name="ButtonPrimary" parent="Widget.AppCompat.Button">
<item name="android:textColor" tools:ignore="DuplicateDefinition">@color/white</item>
<item name="android:background">@drawable/button_selector</item>
<item name="textAllCaps">false</item>
</style>
<style name ="DialogThemeLight" parent="Theme.AppCompat.Light.Dialog.MinWidth">
<item name="colorAccent">@color/chuck_colorAccent</item>
<item name="android:colorAccent">@color/chuck_colorAccent</item>
<item name="android:background">@color/chuck_colorPrimary</item>
<item name="android:textColorPrimary">@color/chuck_colorPrimary</item>
<item name="android:textColorSecondary">@color/chuck_colorPrimary</item>
</style>
</resources>
\ No newline at end of file
......@@ -11,7 +11,10 @@ buildscript {
repositories {
google()
mavenCentral()
maven { url "https://jitpack.io" }
}
dependencies {
classpath "com.android.tools.build:gradle:7.0.3"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.20"
......
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