Commit e2d10b51 authored by shohboz's avatar shohboz

[ADD] MUS-212 Feature, added service ussd screen

parent ac18280e
package com.mobiuz.app.dev.ui.service
import android.content.Context
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import com.mobiuz.app.R
import com.mobiuz.app.databinding.BottomSheetUssdBinding
import com.mobiuz.app.databinding.FragmentMainUssdBinding
import com.mobiuz.app.dev.ui.global.ButtonClick
class UssdBottomSheetDialog(val data: UssdData) : BottomSheetDialogFragment() {
private var _bn: BottomSheetUssdBinding? = null
private val bn get() = _bn ?: throw NullPointerException("cannot inflate")
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
_bn = BottomSheetUssdBinding.inflate(inflater)
return bn.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
_bn = BottomSheetUssdBinding.bind(view)
bn.apply {
data.apply {
txtTitle.text = this.title
txtTarif.text = this.tariff
txtCode.text = this.code
btnZapros.text = this.text_button
}
btnZapros.setOnClickListener(object : ButtonClick(){
override fun onSingleClick(v: View?) {
dismiss()
}
})
}
}
override fun onDestroy() {
super.onDestroy()
_bn = null
}
}
\ No newline at end of file
package com.mobiuz.app.dev.ui.service
data class UssdData(
val title:String,
val tariff:String,
val code:String,
val text_button:String,
)
package com.mobiuz.app.dev.ui.service.ussd
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.mobiuz.app.databinding.ItemUssdBinding
import com.mobiuz.app.dev.model.PinData
import com.mobiuz.app.dev.utils.extensions.SingleBlock
class MainUssdAdapter : RecyclerView.Adapter<MainUssdAdapter.VHolder>() {
private val list: ArrayList<PinData> by lazy { ArrayList() }
private var listener: SingleBlock<String>? = null
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): VHolder {
return VHolder(ItemUssdBinding.inflate(LayoutInflater.from(parent.context)))
}
override fun onBindViewHolder(holder: VHolder, position: Int) = holder.bind(position)
override fun getItemCount() = 16
inner class VHolder(private val binding: ItemUssdBinding) : RecyclerView.ViewHolder(binding.root) {
fun bind(position: Int) {
itemView.setOnClickListener {
listener?.invoke("")
}
// val d = list[position]
// binding.imagePin.setImageResource(if (d.count == -1) R.drawable.ic_pin_unchecked else R.drawable.ic_pin_checked)
}
}
fun submitList(ls: List<PinData>) {
list.clear()
list.addAll(ls)
notifyDataSetChanged()
}
fun setOnClickListener(block: SingleBlock<String>) {
listener = block
}
}
\ No newline at end of file
package com.mobiuz.app.dev.ui.service.ussd
import android.os.Bundle
import android.view.View
import androidx.lifecycle.ViewModelProvider
import com.mobiuz.app.R
import com.mobiuz.app.databinding.FragmentMainUssdBinding
import com.mobiuz.app.dev.MainViewModel
import com.mobiuz.app.dev.ui.base.BaseFragment
import com.mobiuz.app.dev.ui.service.UssdBottomSheetDialog
import com.mobiuz.app.dev.ui.service.UssdData
import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint
class MainUssdFragment : BaseFragment(R.layout.fragment_main_ussd) {
private lateinit var mainViewModel: MainViewModel
private var _bn: FragmentMainUssdBinding? = null
private val bn get() = _bn ?: throw NullPointerException("cannot inflate")
private val adapter = MainUssdAdapter()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
mainViewModel = ViewModelProvider(requireActivity())[MainViewModel::class.java]
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
_bn = FragmentMainUssdBinding.bind(view)
setUpUI()
collects()
}
override fun setUpUI() {
bn.apply {
rvUssdCommand.adapter = adapter
toolbar.setNavigationOnClickListener {
requireActivity().finish()
}
adapter.setOnClickListener {
val dialog = UssdBottomSheetDialog(UssdData("USSD ЗАПРОС", "проверка баланса", "*111*120#", "Запросить"))
dialog.show(childFragmentManager, "tag")
}
}
}
override fun collects() {
}
override fun onDestroy() {
_bn = null
super.onDestroy()
}
}
\ 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"
android:orientation="vertical"
android:layout_height="wrap_content">
<ImageView
android:layout_width="wrap_content"
android:src="@drawable/ic_rectangle_122"
android:layout_gravity="center"
android:layout_marginTop="12dp"
android:layout_height="wrap_content"/>
<TextView
style="@style/ServicesTextStyle"
android:id="@+id/txt_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="20dp"
android:text="USSD ЗАПРОС"
android:textSize="20sp"
android:textStyle="bold" />
<TextView
android:id="@+id/txt_tarif"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="16dp"
android:textAllCaps="true"
android:text="проверка баланса"
android:textColor="@color/black100"
android:textSize="17sp" />
<TextView
android:id="@+id/txt_code"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textAllCaps="false"
android:layout_marginTop="8dp"
android:text="*100#"
android:textStyle="bold"
android:textColor="@color/primary100"
android:textSize="14sp" />
<Button
android:id="@+id/btn_zapros"
style="@style/ButtonPrimary"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="24dp"
android:paddingVertical="12dp"
android:text="Запросить"
android:textSize="14sp" />
</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"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools"
android:fitsSystemWindows="true"
android:orientation="vertical">
<com.google.android.material.appbar.MaterialToolbar
android:layout_width="match_parent"
app:title="@string/main_ussd_command"
android:background="@color/white100"
android:layout_height="wrap_content"
android:id="@+id/toolbar"
android:elevation="0dp"
app:navigationIcon="@drawable/ic_baseline_arrow_back" />
<androidx.recyclerview.widget.RecyclerView
android:layout_width="match_parent"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
android:id="@+id/rv_ussd_command"
android:layout_marginHorizontal="12dp"
tools:listitem="@layout/item_ussd"
android:layout_height="match_parent"/>
</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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:orientation="vertical">
<com.google.android.material.appbar.MaterialToolbar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/toolbar"
app:navigationIcon="@drawable/ic_menu_red" />
<TextView
style="@style/TitleTextStyle"
android:layout_marginStart="16dp"
android:layout_marginTop="10dp"
android:text="@string/services" />
<com.google.android.material.card.MaterialCardView
android:layout_width="match_parent"
android:id="@+id/btn_usd_command"
android:layout_height="70dp"
app:cardElevation="1dp"
app:cardCornerRadius="12dp"
android:layout_marginHorizontal="16dp"
android:layout_marginTop="32dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp">
<LinearLayout
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
style="@style/ServicesTextStyle"
android:text="Основные ussd команды" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
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:layout_width="match_parent"
android:minHeight="74dp"
android:id="@+id/btn_tarifi"
app:cardElevation="1dp"
app:cardCornerRadius="12dp"
android:layout_height="70dp"
android:layout_marginHorizontal="16dp"
android:layout_marginTop="12dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp">
<LinearLayout
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
style="@style/ServicesTextStyle"
android:text="Тарифы" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Активные • Годовые"
android:textColor="@color/grey80"
/>
</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:layout_width="match_parent"
android:minHeight="64dp"
android:id="@+id/btn_paketi"
app:cardElevation="1dp"
app:cardCornerRadius="12dp"
android:layout_height="70dp"
android:layout_marginHorizontal="16dp"
android:layout_marginTop="12dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp">
<LinearLayout
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
style="@style/ServicesTextStyle"
android:text="Интернет пакеты" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Месячные • Суточные • Ночные • Ночной Drive"
android:textColor="@color/grey80"
/>
</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:layout_width="match_parent"
android:minHeight="64dp"
app:cardElevation="1dp"
app:cardCornerRadius="12dp"
android:id="@+id/btn_minutes_and_sms"
android:layout_height="70dp"
android:layout_marginHorizontal="16dp"
android:layout_marginTop="12dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp">
<LinearLayout
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
style="@style/ServicesTextStyle"
android:text="Минуты и SMS" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Пакеты минут • Роуминг пакеты • SMS пакеты"
android:textColor="@color/grey80"
/>
</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
......@@ -6,6 +6,6 @@
android:icon="@drawable/ic_vector"/>
<item android:id="@+id/nav_graph_profile"
android:title="Profile"
android:icon="@drawable/ic_baseline_account_box"/>
android:title="Услуги"
android:icon="@drawable/ic_vector_service"/>
</menu>
\ 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"
android:id="@+id/nav_graph_services"
app:startDestination="@id/mainUssdFragment">
<fragment
android:id="@+id/mainUssdFragment"
android:name="com.mobiuz.app.dev.ui.service.ussd.MainUssdFragment"
android:label="fragment_main_ussd"
tools:layout="@layout/fragment_main_ussd" />
<fragment
android:id="@+id/tariffsFragment"
android:name="com.mobiuz.app.dev.ui.service.tarifes.TariffsFragment"
android:label="TariffsFragment" />
<fragment
android:id="@+id/packetsFragment"
android:name="com.mobiuz.app.dev.ui.service.packets.PacketsFragment"
android:label="PacketsFragment" />
<fragment
android:id="@+id/minutesFragment"
android:name="com.mobiuz.app.dev.ui.service.minutes.MinutesFragment"
android:label="MinutesFragment" />
</navigation>
\ 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