This commit is contained in:
Gracia
2025-04-25 11:22:10 +07:00
parent d8dda02d69
commit db70bce237
14 changed files with 498 additions and 59 deletions

View File

@ -94,6 +94,8 @@ dependencies {
implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0") implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0")
implementation("de.hdodenhof:circleimageview:3.1.0") implementation("de.hdodenhof:circleimageview:3.1.0")
//maps
implementation("org.osmdroid:osmdroid-android:6.0.3")
// implementation(libs.hilt.android) // implementation(libs.hilt.android)
// kapt("com.google.dagger:hilt-compiler:2.48") // kapt("com.google.dagger:hilt-compiler:2.48")

View File

@ -8,9 +8,12 @@
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<application <application
android:allowBackup="true" android:allowBackup="true"
android:enableOnBackInvokedCallback="true"
android:dataExtractionRules="@xml/data_extraction_rules" android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules" android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher" android:icon="@mipmap/ic_launcher"
@ -46,7 +49,7 @@
android:name=".ui.profile.mystore.profile.payment_info.PaymentInfoActivity" android:name=".ui.profile.mystore.profile.payment_info.PaymentInfoActivity"
android:exported="false" /> android:exported="false" />
<activity <activity
android:name=".ui.profile.mystore.profile.address.StoreAddressActivity" android:name=".ui.profile.mystore.profile.address.DetailStoreAddressActivity"
android:exported="false" /> android:exported="false" />
<activity <activity
android:name=".ui.profile.mystore.product.ProductActivity" android:name=".ui.profile.mystore.product.ProductActivity"
@ -70,7 +73,7 @@
android:name=".ui.profile.mystore.balance.BalanceTopUpActivity" android:name=".ui.profile.mystore.balance.BalanceTopUpActivity"
android:exported="false" /> android:exported="false" />
<activity <activity
android:name=".ui.profile.mystore.product.StoreProductDetailActivity" android:name=".ui.profile.mystore.product.DetailStoreProductActivity"
android:exported="false" /> android:exported="false" />
<activity <activity
android:name=".ui.profile.mystore.profile.DetailStoreProfileActivity" android:name=".ui.profile.mystore.profile.DetailStoreProfileActivity"

View File

@ -20,7 +20,7 @@ import com.alya.ecommerce_serang.data.api.dto.Product
import com.alya.ecommerce_serang.data.api.retrofit.ApiConfig import com.alya.ecommerce_serang.data.api.retrofit.ApiConfig
import com.alya.ecommerce_serang.data.repository.ProductRepository import com.alya.ecommerce_serang.data.repository.ProductRepository
import com.alya.ecommerce_serang.data.repository.Result import com.alya.ecommerce_serang.data.repository.Result
import com.alya.ecommerce_serang.databinding.ActivityStoreProductDetailBinding import com.alya.ecommerce_serang.databinding.ActivityDetailStoreProductBinding
import com.alya.ecommerce_serang.utils.viewmodel.ProductViewModel import com.alya.ecommerce_serang.utils.viewmodel.ProductViewModel
import com.alya.ecommerce_serang.utils.BaseViewModelFactory import com.alya.ecommerce_serang.utils.BaseViewModelFactory
import com.alya.ecommerce_serang.utils.SessionManager import com.alya.ecommerce_serang.utils.SessionManager
@ -33,9 +33,9 @@ import java.io.FileOutputStream
import kotlin.getValue import kotlin.getValue
import androidx.core.net.toUri import androidx.core.net.toUri
class StoreProductDetailActivity : AppCompatActivity() { class DetailStoreProductActivity : AppCompatActivity() {
private lateinit var binding: ActivityStoreProductDetailBinding private lateinit var binding: ActivityDetailStoreProductBinding
private lateinit var sessionManager: SessionManager private lateinit var sessionManager: SessionManager
private lateinit var categoryList: List<CategoryItem> private lateinit var categoryList: List<CategoryItem>
private var imageUri: Uri? = null private var imageUri: Uri? = null
@ -81,7 +81,7 @@ class StoreProductDetailActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
binding = ActivityStoreProductDetailBinding.inflate(layoutInflater) binding = ActivityDetailStoreProductBinding.inflate(layoutInflater)
setContentView(binding.root) setContentView(binding.root)
val isEditing = intent.getBooleanExtra("is_editing", false) val isEditing = intent.getBooleanExtra("is_editing", false)

View File

@ -73,7 +73,7 @@ class ProductActivity : AppCompatActivity() {
} }
binding.header.headerRightText.setOnClickListener { binding.header.headerRightText.setOnClickListener {
val intent = Intent(this, StoreProductDetailActivity::class.java) val intent = Intent(this, DetailStoreProductActivity::class.java)
intent.putExtra("is_editing", false) intent.putExtra("is_editing", false)
startActivity(intent) startActivity(intent)
} }

View File

@ -3,13 +3,11 @@ package com.alya.ecommerce_serang.ui.profile.mystore.product
import android.app.AlertDialog import android.app.AlertDialog
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.Toast import android.widget.Toast
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import com.alya.ecommerce_serang.R
import com.alya.ecommerce_serang.data.api.dto.ProductsItem import com.alya.ecommerce_serang.data.api.dto.ProductsItem
import com.alya.ecommerce_serang.databinding.FragmentProductOptionsBottomSheetBinding import com.alya.ecommerce_serang.databinding.FragmentProductOptionsBottomSheetBinding
import com.alya.ecommerce_serang.utils.viewmodel.ProductViewModel import com.alya.ecommerce_serang.utils.viewmodel.ProductViewModel
@ -32,7 +30,7 @@ class ProductOptionsBottomSheetFragment(private val product: ProductsItem) : Bot
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
binding.btnEditProduct.setOnClickListener { binding.btnEditProduct.setOnClickListener {
val intent = Intent(requireContext(), StoreProductDetailActivity::class.java) val intent = Intent(requireContext(), DetailStoreProductActivity::class.java)
intent.putExtra("product_id", product.id) intent.putExtra("product_id", product.id)
intent.putExtra("is_editing", true) intent.putExtra("is_editing", true)
startActivity(intent) startActivity(intent)

View File

@ -7,11 +7,11 @@ import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat import androidx.core.view.WindowInsetsCompat
import com.alya.ecommerce_serang.R import com.alya.ecommerce_serang.R
class StoreAddressActivity : AppCompatActivity() { class DetailStoreAddressActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
enableEdgeToEdge() enableEdgeToEdge()
setContentView(R.layout.activity_store_address) setContentView(R.layout.activity_detail_store_address)
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets -> ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()) val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom) v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)

View File

@ -0,0 +1,152 @@
package com.alya.ecommerce_serang.ui.profile.mystore.sells
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.alya.ecommerce_serang.R
import com.alya.ecommerce_serang.data.api.dto.OrdersItem
class SellsAdapter : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
private var orderList: List<OrdersItem?> = emptyList()
// View Types for different statuses
private val TYPE_PENDING = 0
private val TYPE_PAYMENT = 1
private val TYPE_SHIPMENT = 2
private val TYPE_COMPLETED = 3
private val TYPE_FAILED_PAYMENT = 4
private val TYPE_FAILED_SHIPMENT = 5
// Method to submit list to the adapter
fun submitList(orders: List<OrdersItem?>?) {
orderList = orders ?: emptyList()
notifyDataSetChanged()
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
return when (viewType) {
TYPE_PENDING -> {
val view = LayoutInflater.from(parent.context).inflate(R.layout.item_sells_order, parent, false)
OrderViewHolder(view)
}
TYPE_PAYMENT -> {
val view = LayoutInflater.from(parent.context).inflate(R.layout.item_sells_payment, parent, false)
PaymentViewHolder(view)
}
TYPE_SHIPMENT -> {
val view = LayoutInflater.from(parent.context).inflate(R.layout.item_sells_shipment, parent, false)
ShipmentViewHolder(view)
}
// TYPE_COMPLETED -> {
// val view = LayoutInflater.from(parent.context).inflate(R.layout.item_sells_completed, parent, false)
// CompletedViewHolder(view)
// }
// TYPE_FAILED_PAYMENT -> {
// val view = LayoutInflater.from(parent.context).inflate(R.layout.item_sells_failed_payment, parent, false)
// FailedPaymentViewHolder(view)
// }
// TYPE_FAILED_SHIPMENT -> {
// val view = LayoutInflater.from(parent.context).inflate(R.layout.item_sells_failed_shipment, parent, false)
// FailedShipmentViewHolder(view)
// }
else -> {
val view = LayoutInflater.from(parent.context).inflate(R.layout.item_sells_order, parent, false)
OrderViewHolder(view)
}
}
}
// Determine the view type based on the order status
override fun getItemViewType(position: Int): Int {
val order = orderList[position]
return when (order?.status) {
"pending" -> TYPE_PENDING
"paid" -> TYPE_PAYMENT
"shipped" -> TYPE_SHIPMENT
"completed" -> TYPE_COMPLETED
"failedPayment" -> TYPE_FAILED_PAYMENT
"failedShipment" -> TYPE_FAILED_SHIPMENT
else -> TYPE_PENDING // Default to pending if no status is matched
}
}
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
val order = orderList[position]
when (holder) {
is OrderViewHolder -> holder.bind(order)
is PaymentViewHolder -> holder.bind(order)
is ShipmentViewHolder -> holder.bind(order)
is CompletedViewHolder -> holder.bind(order)
is FailedPaymentViewHolder -> holder.bind(order)
is FailedShipmentViewHolder -> holder.bind(order)
}
}
override fun getItemCount(): Int = orderList.size
// ViewHolder for 'pending' status (Order)
class OrderViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
private val tvOrderNumber: TextView = itemView.findViewById(R.id.tv_order_number)
private val tvOrderCustomer: TextView = itemView.findViewById(R.id.tv_order_customer)
private val tvOrderPrice: TextView = itemView.findViewById(R.id.tv_order_price)
fun bind(order: OrdersItem?) {
tvOrderNumber.text = "Order #${order?.orderId}"
tvOrderCustomer.text = order?.username
tvOrderPrice.text = "Total: ${order?.totalAmount}"
}
}
// ViewHolder for 'paid' status (Payment)
class PaymentViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
private val tvPaymentNumber: TextView = itemView.findViewById(R.id.tv_payment_number)
private val tvPaymentCustomer: TextView = itemView.findViewById(R.id.tv_payment_customer)
private val tvPaymentPrice: TextView = itemView.findViewById(R.id.tv_payment_price)
fun bind(order: OrdersItem?) {
tvPaymentNumber.text = "Order #${order?.orderId}"
tvPaymentCustomer.text = order?.username
tvPaymentPrice.text = "Paid: ${order?.totalAmount}"
}
}
// ViewHolder for 'shipped' status (Shipment)
class ShipmentViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
private val tvShipmentNumber: TextView = itemView.findViewById(R.id.tv_shipment_number)
private val tvShipmentLocation: TextView = itemView.findViewById(R.id.tv_shipment_location)
fun bind(order: OrdersItem?) {
tvShipmentNumber.text = "Shipment #${order?.orderId}"
tvShipmentLocation.text = "Location: ${order?.address?.subdistrict}"
}
}
// ViewHolder for 'completed' status
class CompletedViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
//private val tvCompletedNumber: TextView = itemView.findViewById(R.id.tv_completed_number)
fun bind(order: OrdersItem?) {
// tvCompletedNumber.text = "Completed Order #${order?.orderId}"
}
}
// ViewHolder for 'failedPayment' status
class FailedPaymentViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
//private val tvFailedPaymentNumber: TextView = itemView.findViewById(R.id.tv_failed_payment_number)
fun bind(order: OrdersItem?) {
//tvFailedPaymentNumber.text = "Failed Payment Order #${order?.orderId}"
}
}
// ViewHolder for 'failedShipment' status
class FailedShipmentViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
//private val tvFailedShipmentNumber: TextView = itemView.findViewById(R.id.tv_failed_shipment_number)
fun bind(order: OrdersItem?) {
//tvFailedShipmentNumber.text = "Failed Shipment Order #${order?.orderId}"
}
}
}

View File

@ -24,6 +24,8 @@ class SellsFragment : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
// val repository = OrderRepository(ApiService.create())
viewModel = ViewModelProvider(this)[SellsViewModel::class.java] viewModel = ViewModelProvider(this)[SellsViewModel::class.java]
val tabs = listOf( val tabs = listOf(

View File

@ -8,8 +8,8 @@ import android.view.ViewGroup
import androidx.lifecycle.Observer import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import com.alya.ecommerce_serang.R
import com.alya.ecommerce_serang.databinding.FragmentAllSellsBinding import com.alya.ecommerce_serang.databinding.FragmentAllSellsBinding
import com.alya.ecommerce_serang.ui.profile.mystore.sells.SellsAdapter
import com.alya.ecommerce_serang.utils.viewmodel.SellsViewModel import com.alya.ecommerce_serang.utils.viewmodel.SellsViewModel
class AllSellsFragment : Fragment() { class AllSellsFragment : Fragment() {
@ -29,13 +29,13 @@ class AllSellsFragment : Fragment() {
viewModel = ViewModelProvider(this).get(SellsViewModel::class.java) viewModel = ViewModelProvider(this).get(SellsViewModel::class.java)
// val adapter = SellsAdapter() val adapter = SellsAdapter()
// binding.rvAllSells.layoutManager = LinearLayoutManager(context) binding.rvAllSells.layoutManager = LinearLayoutManager(context)
// binding.rvAllSells.adapter = adapter binding.rvAllSells.adapter = adapter
//
// viewModel.loadAllSells() viewModel.loadOrdersByStatus("all")
// viewModel.sellsList.observe(viewLifecycleOwner, Observer { sells -> viewModel.sellsList.observe(viewLifecycleOwner, Observer { sells ->
// adapter.submitList(sells) adapter.submitList(sells)
// }) })
} }
} }

View File

@ -0,0 +1,285 @@
<?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:fitsSystemWindows="true"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".ui.profile.mystore.profile.address.DetailStoreAddressActivity">
<include
android:id="@+id/header"
layout="@layout/header" />
<ScrollView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingVertical="@dimen/vertical_safe_area"
android:paddingHorizontal="@dimen/horizontal_safe_area"
android:layout_marginTop="19dp">
<!-- Nama Lokasi -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginBottom="24dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Nama Lokasi"
style="@style/body_medium"
android:layout_marginEnd="4dp"/>
<EditText
android:id="@+id/edt_nama_lokasi"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_text_field_disabled"
android:text="Alamat Toko"
android:padding="8dp"
style="@style/body_small"
android:layout_marginTop="10dp"
android:enabled="false"/>
</LinearLayout>
<!-- Jalan -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginBottom="24dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Jalan"
style="@style/body_medium"
android:layout_marginEnd="4dp"/>
<EditText
android:id="@+id/edt_street"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_text_field"
android:padding="8dp"
style="@style/body_small"
android:layout_marginTop="10dp"/>
</LinearLayout>
<!-- Kecamatan -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginBottom="24dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Kecamatan"
style="@style/body_medium"
android:layout_marginEnd="4dp"/>
<EditText
android:id="@+id/edt_subdistrict"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_text_field"
android:padding="8dp"
style="@style/body_small"
android:layout_marginTop="10dp"/>
</LinearLayout>
<!-- Kota/Kabupaten -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginBottom="24dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Kota atau Kabupaten"
style="@style/body_medium"
android:layout_marginEnd="4dp"/>
<!-- Spinner Dropdown dengan Chevron -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="@drawable/bg_text_field"
android:gravity="center_vertical"
android:layout_marginTop="10dp">
<Spinner
android:id="@+id/spinner_city"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:padding="8dp"
style="@style/body_small"
android:background="@null"/>
<!-- Chevron Down Icon -->
<ImageView
android:layout_width="16dp"
android:layout_height="16dp"
android:src="@drawable/ic_down"
android:layout_marginEnd="8dp"
android:contentDescription="Chevron Down" />
</LinearLayout>
</LinearLayout>
<!-- Provinsi -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginBottom="24dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Provinsi"
style="@style/body_medium"
android:layout_marginEnd="4dp"/>
<!-- Spinner Dropdown dengan Chevron -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="@drawable/bg_text_field"
android:gravity="center_vertical"
android:layout_marginTop="10dp">
<Spinner
android:id="@+id/spinner_province"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:padding="8dp"
style="@style/body_small"
android:background="@null"/>
<!-- Chevron Down Icon -->
<ImageView
android:layout_width="16dp"
android:layout_height="16dp"
android:src="@drawable/ic_down"
android:layout_marginEnd="8dp"
android:contentDescription="Chevron Down" />
</LinearLayout>
</LinearLayout>
<!-- Kode Pos -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginBottom="24dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Kode Pos"
style="@style/body_medium"
android:layout_marginEnd="4dp"/>
<EditText
android:id="@+id/edt_postal_code"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_text_field"
android:padding="8dp"
style="@style/body_small"
android:layout_marginTop="10dp"/>
</LinearLayout>
<!-- Detail Alamat -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginBottom="24dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Detail Alamat"
style="@style/body_medium"
android:layout_marginEnd="4dp"/>
<EditText
android:id="@+id/edt_detail_address"
android:layout_width="match_parent"
android:layout_height="70dp"
android:background="@drawable/bg_text_field"
android:hint="Isi detail alamat di sini, contoh: Blok, No. Kavling, dsb."
android:padding="8dp"
style="@style/body_small"
android:inputType="text|textMultiLine"
android:gravity="top"
android:layout_marginTop="10dp"/>
</LinearLayout>
<!-- Pinpoint Lokasi -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginBottom="24dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Pinpoint Lokasi"
style="@style/body_medium"
android:layout_marginEnd="4dp"/>
<!-- Map -->
<org.osmdroid.views.MapView android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="220dp" />
<TextView
android:id="@+id/tv_location_display"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Lokasi: Tidak dipilih"
style="@style/body_medium"/>
</LinearLayout>
<Button
android:id="@+id/btn_save_address"
android:text="Simpan Perubahan"
style="@style/button.large.disabled.long"
android:enabled="false"/>
</LinearLayout>
</ScrollView>
</LinearLayout>

View File

@ -7,7 +7,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical" android:orientation="vertical"
tools:context=".ui.profile.mystore.product.StoreProductDetailActivity"> tools:context=".ui.profile.mystore.product.DetailStoreProductActivity">
<include <include
android:id="@+id/header" android:id="@+id/header"

View File

@ -142,6 +142,36 @@
</LinearLayout> </LinearLayout>
<!-- Toko Aktif -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Toko Aktif"
style="@style/label_large"/>
<Switch
android:id="@+id/switch_is_active"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
tools:ignore="UseSwitchCompatOrMaterialXml" />
</LinearLayout>
</LinearLayout>
</LinearLayout> </LinearLayout>
<!-- Alamat Toko --> <!-- Alamat Toko -->
@ -170,32 +200,6 @@
</LinearLayout> </LinearLayout>
<!-- Status Toko -->
<LinearLayout
android:id="@+id/layout_status"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingVertical="10dp"
android:paddingHorizontal="@dimen/horizontal_safe_area"
android:gravity="center">
<TextView
style="@style/label_large"
android:id="@+id/tv_status"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Atur Status Toko" />
<ImageView
android:id="@+id/iv_status"
android:layout_width="20dp"
android:layout_height="20dp"
android:src="@drawable/ic_navigate_next"/>
</LinearLayout>
<!-- Metode Pembayaran --> <!-- Metode Pembayaran -->
<LinearLayout <LinearLayout
android:id="@+id/layout_payment_method" android:id="@+id/layout_payment_method"

View File

@ -1,11 +0,0 @@
<?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"
xmlns:tools="http://schemas.android.com/tools"
android:fitsSystemWindows="true"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.profile.mystore.profile.address.StoreAddressActivity">
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -20,6 +20,8 @@ lifecycleViewmodelKtx = "2.8.7"
fragmentKtx = "1.5.6" fragmentKtx = "1.5.6"
navigationFragmentKtx = "2.8.5" navigationFragmentKtx = "2.8.5"
navigationUiKtx = "2.8.5" navigationUiKtx = "2.8.5"
playServicesLocation = "21.3.0"
playServicesMaps = "19.2.0"
recyclerview = "1.4.0" recyclerview = "1.4.0"
[libraries] [libraries]
@ -40,6 +42,8 @@ androidx-lifecycle-viewmodel-ktx = { group = "androidx.lifecycle", name = "lifec
androidx-fragment-ktx = { group = "androidx.fragment", name = "fragment-ktx", version.ref = "fragmentKtx" } androidx-fragment-ktx = { group = "androidx.fragment", name = "fragment-ktx", version.ref = "fragmentKtx" }
androidx-navigation-fragment-ktx = { group = "androidx.navigation", name = "navigation-fragment-ktx", version.ref = "navigationFragmentKtx" } androidx-navigation-fragment-ktx = { group = "androidx.navigation", name = "navigation-fragment-ktx", version.ref = "navigationFragmentKtx" }
androidx-navigation-ui-ktx = { group = "androidx.navigation", name = "navigation-ui-ktx", version.ref = "navigationUiKtx" } androidx-navigation-ui-ktx = { group = "androidx.navigation", name = "navigation-ui-ktx", version.ref = "navigationUiKtx" }
play-services-location = { module = "com.google.android.gms:play-services-location", version.ref = "playServicesLocation" }
play-services-maps = { module = "com.google.android.gms:play-services-maps", version.ref = "playServicesMaps" }
[plugins] [plugins]
android-application = { id = "com.android.application", version.ref = "agp" } android-application = { id = "com.android.application", version.ref = "agp" }