Commit ed67cd6a authored by shohboz's avatar shohboz

[UPD] MUS-280 Feature, add card screen

parent 2fed12d2
Pipeline #53 failed with stages
package com.mobiuz.app
import android.os.Bundle
import android.view.View
import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment
import com.mobiuz.app.databinding.FragmentBillingBinding
import com.mobiuz.app.dev.model.PinData
import com.mobiuz.app.dev.model.SharedPref
import com.mobiuz.app.dev.ui.auth.pin.PinAdapter
import com.mobiuz.app.dev.ui.base.BaseFragment
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject
@AndroidEntryPoint
class BillingFragment : BaseFragment(R.layout.fragment_billing) {
@Inject
lateinit var pref: SharedPref
private var _bn: FragmentBillingBinding? = null
private val bn get() = _bn ?: throw NullPointerException("cannot inflate")
private val navController: NavController by lazy(LazyThreadSafetyMode.NONE) { NavHostFragment.findNavController(this) }
private val data = ArrayList<PinData>()
private val pinAdapter = PinAdapter()
private var count = 3
private lateinit var decorView: View
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
_bn = FragmentBillingBinding.bind(view)
count = 3
setUpUI()
collects()
}
override fun setUpUI() {
bn.apply {
cardView1.setOnClickListener {
}
}
}
override fun collects() {
}
override fun onDestroy() {
_bn = null
super.onDestroy()
}
}
\ No newline at end of file
package com.mobiuz.app.dev
import android.os.Bundle
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import androidx.core.os.bundleOf
import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment
import com.mobiuz.app.R
import com.mobiuz.app.databinding.ActivityOfflineBinding
import com.mobiuz.app.dev.model.SharedPref
import com.mobiuz.app.dev.ui.global.CONSTANTS
import com.mobiuz.app.dev.ui.service.ServiceAdapter
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject
@AndroidEntryPoint
class OfflineActivity : AppCompatActivity() {
private var _bn: ActivityOfflineBinding? = null
private val bn get() = _bn ?: throw NullPointerException("cannot inflate")
private lateinit var adapter: ServiceAdapter
private lateinit var navController: NavController
@Inject
lateinit var pref: SharedPref
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
_bn = ActivityOfflineBinding.inflate(layoutInflater)
setContentView(bn.root)
window.decorView.systemUiVisibility = window.decorView.systemUiVisibility or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
adapter = ServiceAdapter(pref.language)
val fragment = supportFragmentManager.findFragmentById(R.id.offline_container) as NavHostFragment
navController = NavHostFragment.findNavController(fragment)
navController.popBackStack()
navController.navigate(R.id.serviceFragment, bundleOf(CONSTANTS.TYPE_SERVICE to CONSTANTS.OFFLINE))
}
override fun onDestroy() {
_bn = null
super.onDestroy()
}
}
\ No newline at end of file
package com.mobiuz.app.dev package com.mobiuz.app.dev
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent import android.content.Intent
import android.content.IntentFilter
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import androidx.activity.viewModels import androidx.activity.viewModels
...@@ -14,6 +17,7 @@ import com.mobiuz.app.dev.network.model.UiStateObject ...@@ -14,6 +17,7 @@ import com.mobiuz.app.dev.network.model.UiStateObject
import com.mobiuz.app.dev.ui.auth.AuthActivity import com.mobiuz.app.dev.ui.auth.AuthActivity
import com.mobiuz.app.dev.ui.global.ButtonClick import com.mobiuz.app.dev.ui.global.ButtonClick
import com.mobiuz.app.dev.ui.global.CONSTANTS import com.mobiuz.app.dev.ui.global.CONSTANTS
import com.mobiuz.app.dev.utils.NetworkUtil
import com.mobiuz.app.dev.utils.extensions.showMessage import com.mobiuz.app.dev.utils.extensions.showMessage
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
...@@ -29,13 +33,37 @@ class SplashActivity : AppCompatActivity() { ...@@ -29,13 +33,37 @@ class SplashActivity : AppCompatActivity() {
private val viewModel: MainViewModel by viewModels() private val viewModel: MainViewModel by viewModels()
@Inject @Inject
lateinit var pref: SharedPref lateinit var pref: SharedPref
private lateinit var receiver: BroadcastReceiver
private var isTypeOffline = false
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
_bn = ActivitySplashBinding.inflate(layoutInflater) _bn = ActivitySplashBinding.inflate(layoutInflater)
setContentView(bn.root) setContentView(bn.root)
viewModel.services() receiver = object : BroadcastReceiver(){
override fun onReceive(context: Context?, intent: Intent?) {
val type = NetworkUtil.getConnectivityStatus(this@SplashActivity)
if (type == 0){
isTypeOffline = true
}else{
viewModel.services()
isTypeOffline = false
}
}
}
val intentFilter = IntentFilter("android.net.conn.CONNECTIVITY_CHANGE")
registerReceiver(receiver,intentFilter)
lifecycleScope.launchWhenCreated {
delay(1000)
if (isTypeOffline){
startActivity(Intent(this@SplashActivity, OfflineActivity::class.java))
finish()
}
}
bn.btnTryAgain.setOnClickListener(object : ButtonClick(){ bn.btnTryAgain.setOnClickListener(object : ButtonClick(){
override fun onSingleClick(v: View?) { override fun onSingleClick(v: View?) {
viewModel.services() viewModel.services()
...@@ -84,6 +112,7 @@ class SplashActivity : AppCompatActivity() { ...@@ -84,6 +112,7 @@ class SplashActivity : AppCompatActivity() {
} }
override fun onDestroy() { override fun onDestroy() {
unregisterReceiver(receiver)
_bn = null _bn = null
super.onDestroy() super.onDestroy()
} }
......
package com.mobiuz.app.dev.ui.service package com.mobiuz.app.dev.ui.service
import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import androidx.core.os.bundleOf import androidx.core.os.bundleOf
import androidx.core.view.isVisible
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.navigation.NavController import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment import androidx.navigation.fragment.NavHostFragment
import androidx.recyclerview.widget.RecyclerView
import com.google.gson.Gson import com.google.gson.Gson
import com.google.gson.reflect.TypeToken import com.google.gson.reflect.TypeToken
import com.mobiuz.app.R import com.mobiuz.app.R
...@@ -31,11 +30,16 @@ class ServiceFragment : BaseFragment(R.layout.fragment_service) { ...@@ -31,11 +30,16 @@ class ServiceFragment : BaseFragment(R.layout.fragment_service) {
private val bn get() = _bn ?: throw NullPointerException("cannot inflate") private val bn get() = _bn ?: throw NullPointerException("cannot inflate")
private lateinit var adapter: ServiceAdapter private lateinit var adapter: ServiceAdapter
private val navController: NavController by lazy(LazyThreadSafetyMode.NONE) { NavHostFragment.findNavController(this) } private val navController: NavController by lazy(LazyThreadSafetyMode.NONE) { NavHostFragment.findNavController(this) }
var type = ""
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
mainViewModel = ViewModelProvider(requireActivity())[MainViewModel::class.java] mainViewModel = ViewModelProvider(requireActivity())[MainViewModel::class.java]
adapter = ServiceAdapter(pref.language) adapter = ServiceAdapter(pref.language)
arguments?.let {
type = it.getString(CONSTANTS.TYPE_SERVICE) ?: ""
}
} }
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
...@@ -58,11 +62,17 @@ class ServiceFragment : BaseFragment(R.layout.fragment_service) { ...@@ -58,11 +62,17 @@ class ServiceFragment : BaseFragment(R.layout.fragment_service) {
override fun setUpUI() { override fun setUpUI() {
bn.apply { bn.apply {
if (type == CONSTANTS.OFFLINE) {
toolbar.isVisible = false
txtDostupno.isVisible = true
layoutOffline.isVisible = true
}
rvService.adapter = adapter rvService.adapter = adapter
// rvService.edgeEffectFactory = RecyclerView.EdgeEffectFactory() // rvService.edgeEffectFactory = RecyclerView.EdgeEffectFactory()
val arg = pref.services val arg = pref.services
val list = Gson().fromJson<List<ServiceData>>(arg,object : TypeToken<List<ServiceData>>(){}.type) val list = Gson().fromJson<List<ServiceData>>(arg, object : TypeToken<List<ServiceData>>() {}.type)
adapter.submitList(list) adapter.submitList(list)
OverScrollDecoratorHelper.setUpStaticOverScroll(bn.rvService, OverScrollDecoratorHelper.ORIENTATION_VERTICAL) OverScrollDecoratorHelper.setUpStaticOverScroll(bn.rvService, OverScrollDecoratorHelper.ORIENTATION_VERTICAL)
...@@ -83,7 +93,7 @@ class ServiceFragment : BaseFragment(R.layout.fragment_service) { ...@@ -83,7 +93,7 @@ class ServiceFragment : BaseFragment(R.layout.fragment_service) {
private fun navigateToServiceScreen(key: ServiceData) { private fun navigateToServiceScreen(key: ServiceData) {
navController.navigate(R.id.servicesFragmentActivity, bundleOf(CONSTANTS.SERVICE to Gson().toJson(key))) navController.navigate(R.id.servicesFragmentActivity, bundleOf(CONSTANTS.SERVICE to Gson().toJson(key)))
mainViewModel.bottomSheet(false) mainViewModel.bottomSheet(false)
} }
......
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="22dp"
android:height="22dp"
android:viewportWidth="22"
android:viewportHeight="22">
<path
android:pathData="M1.084,1.0851L0.5,1.6701L2.0762,3.2458L3.6525,4.8215L3.2767,5.0864C3.0701,5.2321 2.7253,5.4903 2.5105,5.6602C2.0514,6.0232 0.5255,7.5298 0.5482,7.5978C0.5567,7.6235 0.8216,7.8832 1.1367,8.1749L1.7097,8.7053L2.3044,8.0937C2.936,7.4443 3.3114,7.1061 3.8426,6.7078C4.2427,6.4077 4.791,6.0374 4.8351,6.0374C4.8529,6.0374 5.3421,6.5118 5.9223,7.0916L6.9772,8.1458L6.5342,8.3761C5.6194,8.8518 4.7968,9.4625 3.9181,10.3183L3.3914,10.8312L3.9735,11.4154L4.5555,11.9997L5.1222,11.4486C5.7,10.8868 6.2408,10.4524 6.7548,10.1377C7.0889,9.9331 7.7299,9.6069 8.0299,9.489L8.2384,9.407L9.4592,10.6282C10.732,11.9014 10.7317,11.901 10.4122,11.9032C10.241,11.9044 9.6531,12.0357 9.3184,12.1475C8.9101,12.284 8.3438,12.5632 7.9514,12.8216C7.624,13.0372 6.95,13.6151 6.6124,13.9696L6.4701,14.1191L7.0516,14.7006L7.6331,15.282L8.0758,14.851C8.8861,14.0623 9.6327,13.6692 10.5696,13.5382C11.1955,13.4506 12.0838,13.6284 12.6809,13.9608C12.8533,14.0567 13.7938,14.9718 16.6197,17.7934L20.3321,21.5L20.9161,20.9151L21.5,20.3301L11.584,10.415L1.6681,0.5L1.084,1.0851ZM9.7491,2.717C8.8746,2.8044 7.3842,3.1048 6.9211,3.287L6.8002,3.3345L7.4594,3.9937L8.1187,4.6529L8.5237,4.5674C9.4296,4.3763 9.8606,4.3367 11.0206,4.3378C12.1705,4.3389 12.5485,4.3738 13.4599,4.5626C15.229,4.9291 17.0071,5.774 18.4652,6.9408C18.7021,7.1304 19.2101,7.6035 19.5942,7.9922L20.2925,8.699L20.8644,8.1718C21.179,7.8818 21.4433,7.624 21.4516,7.5989C21.4755,7.5274 19.9306,6.0077 19.4291,5.6093C17.5191,4.0919 15.355,3.161 12.8869,2.7948C12.2144,2.6951 10.4148,2.6504 9.7491,2.717ZM11.6291,8.1633L12.524,9.0589L12.8301,9.131C13.3984,9.265 13.889,9.4455 14.5071,9.7479C15.4716,10.2199 16.027,10.6213 16.9184,11.4901L17.4429,12.0014L18.0258,11.4159L18.6088,10.8306L18.0756,10.3132C17.1049,9.3716 16.2967,8.7882 15.2454,8.2699C13.9642,7.6385 12.4341,7.2678 11.1089,7.2678H10.7342L11.6291,8.1633ZM10.6861,16.7419C10.2961,16.823 9.9553,17.0989 9.7742,17.4802C9.6241,17.7962 9.6213,18.2691 9.7678,18.5671C9.9135,18.8635 10.1996,19.1326 10.4811,19.2379C11.1334,19.482 11.8403,19.1979 12.1503,18.5671C12.2968,18.2691 12.294,17.7962 12.1439,17.4802C11.882,16.9287 11.2726,16.6201 10.6861,16.7419Z"
android:fillColor="#E62229"
android:fillType="evenOdd"/>
</vector>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:fitsSystemWindows="false">
<androidx.fragment.app.FragmentContainerView
android:id="@+id/offline_container"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
app:navGraph="@navigation/nav_graph_offline" />
</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"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
tools:context=".BillingFragment">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
app:title="Billing"
android:layout_height="wrap_content"
app:navigationIcon="@drawable/ic_baseline_arrow_back" />
<com.google.android.material.card.MaterialCardView
android:id="@+id/card_view1"
app:cardUseCompatPadding="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="12dp"
app:cardElevation="1dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="16dp">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical">
<TextView
style="@style/ServicesTextStyle"
android:layout_marginEnd="12dp"
android:ellipsize="end"
android:maxLines="1"
android:text="Add card" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="12dp"
android:ellipsize="end"
android:maxLines="1"
android:text="23 команды"
android:textColor="@color/grey80"
android:textSize="12sp" />
</LinearLayout>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/ic_baseline_arrow_red" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
<com.google.android.material.card.MaterialCardView
android:id="@+id/card_view2"
app:cardUseCompatPadding="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="12dp"
app:cardElevation="1dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="16dp">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical">
<TextView
style="@style/ServicesTextStyle"
android:layout_marginEnd="12dp"
android:ellipsize="end"
android:maxLines="1"
android:text="poplnit balance" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="12dp"
android:ellipsize="end"
android:maxLines="1"
android:text="23 команды"
android:textColor="@color/grey80"
android:textSize="12sp" />
</LinearLayout>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/ic_baseline_arrow_red" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
<com.google.android.material.card.MaterialCardView
android:id="@+id/card_view3"
app:cardUseCompatPadding="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="12dp"
app:cardElevation="1dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="16dp">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@+id/txt_title"
style="@style/ServicesTextStyle"
android:layout_marginEnd="12dp"
android:ellipsize="end"
android:maxLines="1"
android:text="history" />
<TextView
android:id="@+id/txt_description"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="12dp"
android:ellipsize="end"
android:maxLines="1"
android:text="23 команды"
android:textColor="@color/grey80"
android:textSize="12sp" />
</LinearLayout>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/ic_baseline_arrow_red" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
</LinearLayout>
\ No newline at end of file
...@@ -3,35 +3,85 @@ ...@@ -3,35 +3,85 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:fitsSystemWindows="true" android:fitsSystemWindows="false"
android:orientation="vertical"> android:orientation="vertical">
<com.google.android.material.appbar.MaterialToolbar <LinearLayout
android:id="@+id/layout_offline"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginHorizontal="16dp"
android:layout_marginVertical="@dimen/_24sdp"
android:background="@color/grey10"
android:orientation="vertical"
android:paddingTop="@dimen/_22sdp"
android:visibility="gone">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="@dimen/_16sdp"
android:src="@drawable/ic_image_offline"
android:textColor="@color/grey80" />
<TextView
style="@style/ServicesTextStyle"
android:layout_gravity="center"
android:layout_marginTop="@dimen/_20sdp"
android:text="Нет интернет соединения" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/_32sdp"
android:layout_marginTop="10dp"
android:layout_marginBottom="24dp"
android:gravity="center"
android:text="Проверьте интернет соединение и попробуйте снова"
android:textColor="@color/grey100"
android:textSize="14sp" />
</LinearLayout>
<TextView
android:id="@+id/txt_dostupno"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="26dp"
android:text="Доступно"
android:textColor="@color/grey80"
android:visibility="gone" />
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar" android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/_24sdp"
android:layout_marginBottom="10dp"
android:visibility="visible"
app:navigationIcon="@drawable/ic_menu_red" /> app:navigationIcon="@drawable/ic_menu_red" />
<TextView <TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:textSize="34sp" android:layout_height="wrap_content"
android:textStyle="bold"
android:layout_marginStart="16dp" android:layout_marginStart="16dp"
android:layout_marginTop="10dp" android:text="@string/services"
android:text="@string/services" /> android:textSize="34sp"
android:textStyle="bold" />
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:layout_width="match_parent"
android:id="@+id/rv_service" android:id="@+id/rv_service"
android:visibility="visible" android:layout_width="match_parent"
android:scrollbars="none" android:layout_height="match_parent"
android:overScrollMode="never"
android:layout_marginTop="@dimen/_20sdp"
android:layout_marginHorizontal="12dp" android:layout_marginHorizontal="12dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" android:layout_marginTop="@dimen/_20sdp"
android:layout_height="match_parent"/> android:overScrollMode="never"
android:scrollbars="none"
android:visibility="visible"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
</LinearLayout> </LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"> <menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/nav_graph_home" <item
android:title="My MOBI" android:id="@+id/nav_graph_home"
android:icon="@drawable/ic_vector"/> android:icon="@drawable/ic_vector"
android:title="My MOBI" />
<item
android:id="@+id/nav_graph_profile"
android:icon="@drawable/ic_vector_service"
android:title="Услуги" />
<item android:id="@+id/nav_graph_profile"
android:title="Услуги"
android:icon="@drawable/ic_vector_service"/>
</menu> </menu>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment