diff --git a/app/src/main/java/sh/sar/gridflow/AddSubscriptionActivity.kt b/app/src/main/java/sh/sar/gridflow/AddSubscriptionActivity.kt
deleted file mode 100644
index 5f6de84..0000000
--- a/app/src/main/java/sh/sar/gridflow/AddSubscriptionActivity.kt
+++ /dev/null
@@ -1,130 +0,0 @@
-package sh.sar.gridflow
-
-import android.content.Intent
-import android.os.Bundle
-import android.view.MenuItem
-import android.widget.Toast
-import androidx.appcompat.app.ActionBarDrawerToggle
-import androidx.appcompat.app.AppCompatActivity
-import androidx.core.view.GravityCompat
-import androidx.drawerlayout.widget.DrawerLayout
-import com.google.android.material.navigation.NavigationView
-import sh.sar.gridflow.R
-import sh.sar.gridflow.databinding.ActivityAddSubscriptionBinding
-
-class AddSubscriptionActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener {
-
- private lateinit var binding: ActivityAddSubscriptionBinding
- private lateinit var drawerToggle: ActionBarDrawerToggle
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- binding = ActivityAddSubscriptionBinding.inflate(layoutInflater)
- setContentView(binding.root)
-
- setupViews()
- }
-
- private fun setupViews() {
- // Setup toolbar with hamburger menu
- setSupportActionBar(binding.toolbar)
- supportActionBar?.apply {
- title = "Add Subscription"
- }
-
- // Setup drawer toggle
- drawerToggle = ActionBarDrawerToggle(
- this, binding.drawerLayout, binding.toolbar,
- R.string.navigation_drawer_open, R.string.navigation_drawer_close
- )
- binding.drawerLayout.addDrawerListener(drawerToggle)
- drawerToggle.syncState()
-
- // Setup navigation
- binding.navView.setNavigationItemSelectedListener(this)
-
- // Handle continue button click
- binding.btnContinue.setOnClickListener {
- val subscriptionNumber = binding.editSubscriptionNumber.text.toString().trim()
- val billNumber = binding.editBillNumber.text.toString().trim()
- val alias = binding.editAlias.text.toString().trim()
-
- if (validateInputs(subscriptionNumber, billNumber, alias)) {
- Toast.makeText(this, "Continue action not implemented yet", Toast.LENGTH_SHORT).show()
- }
- }
- }
-
- private fun validateInputs(subscriptionNumber: String, billNumber: String, alias: String): Boolean {
- var isValid = true
-
- if (subscriptionNumber.isEmpty()) {
- binding.editSubscriptionNumber.error = "Subscription number is required"
- isValid = false
- }
-
- if (billNumber.isEmpty()) {
- binding.editBillNumber.error = "Bill number is required"
- isValid = false
- }
-
- if (alias.isEmpty()) {
- binding.editAlias.error = "Alias/Description is required"
- isValid = false
- }
-
- return isValid
- }
-
- override fun onNavigationItemSelected(item: MenuItem): Boolean {
- when (item.itemId) {
- R.id.nav_dashboard -> {
- val intent = Intent(this, MainActivity::class.java)
- intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP
- intent.putExtra("navigate_to", "dashboard")
- startActivity(intent)
- finish()
- }
- R.id.nav_bill_history -> {
- val intent = Intent(this, MainActivity::class.java)
- intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP
- intent.putExtra("navigate_to", "bill_history")
- startActivity(intent)
- finish()
- }
- R.id.nav_subscriptions -> {
- val intent = Intent(this, MainActivity::class.java)
- intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP
- intent.putExtra("navigate_to", "subscriptions")
- startActivity(intent)
- finish()
- }
- R.id.nav_band_rates -> {
- val intent = Intent(this, MainActivity::class.java)
- intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP
- intent.putExtra("navigate_to", "band_rates")
- startActivity(intent)
- finish()
- }
- R.id.nav_pay_any_bill -> {
- val intent = Intent(this, MainActivity::class.java)
- intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP
- intent.putExtra("navigate_to", "pay_any_bill")
- startActivity(intent)
- finish()
- }
- }
- binding.drawerLayout.closeDrawer(GravityCompat.START)
- return true
- }
-
- @Deprecated("Deprecated in Java")
- override fun onBackPressed() {
- if (binding.drawerLayout.isDrawerOpen(GravityCompat.START)) {
- binding.drawerLayout.closeDrawer(GravityCompat.START)
- } else {
- super.onBackPressed()
- }
- }
-
-}
\ No newline at end of file
diff --git a/app/src/main/java/sh/sar/gridflow/ui/subscriptions/SubscriptionsFragment.kt b/app/src/main/java/sh/sar/gridflow/ui/subscriptions/SubscriptionsFragment.kt
index 44e95a0..5b52f81 100644
--- a/app/src/main/java/sh/sar/gridflow/ui/subscriptions/SubscriptionsFragment.kt
+++ b/app/src/main/java/sh/sar/gridflow/ui/subscriptions/SubscriptionsFragment.kt
@@ -1,7 +1,6 @@
package sh.sar.gridflow.ui.subscriptions
import android.app.AlertDialog
-import android.content.Intent
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
@@ -10,7 +9,6 @@ import android.widget.Toast
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
-import sh.sar.gridflow.AddSubscriptionActivity
import sh.sar.gridflow.data.CustomerSubscription
import sh.sar.gridflow.databinding.DialogDeleteSubscriptionBinding
import sh.sar.gridflow.databinding.DialogEditSubscriptionBinding
@@ -55,8 +53,24 @@ class SubscriptionsFragment : Fragment() {
// Handle FAB click
binding.fabAddSubscription.setOnClickListener {
- val intent = Intent(requireContext(), AddSubscriptionActivity::class.java)
- startActivity(intent)
+ showAddSubscriptionForm()
+ }
+
+ // Handle cancel button click
+ binding.btnCancelAdd.setOnClickListener {
+ hideAddSubscriptionForm()
+ }
+
+ // Handle continue button click
+ binding.btnContinue.setOnClickListener {
+ val subscriptionNumber = binding.editSubscriptionNumber.text.toString().trim()
+ val billNumber = binding.editBillNumber.text.toString().trim()
+ val alias = binding.editAlias.text.toString().trim()
+
+ if (validateInputs(subscriptionNumber, billNumber, alias)) {
+ Toast.makeText(requireContext(), "Continue action not implemented yet", Toast.LENGTH_SHORT).show()
+ hideAddSubscriptionForm()
+ }
}
// Handle retry button
@@ -165,6 +179,55 @@ class SubscriptionsFragment : Fragment() {
dialog.show()
}
+
+ private fun showAddSubscriptionForm() {
+ binding.scrollAddForm.visibility = View.VISIBLE
+ binding.recyclerSubscriptions.visibility = View.GONE
+ binding.layoutError.visibility = View.GONE
+ binding.layoutEmpty.visibility = View.GONE
+ binding.progressLoading.visibility = View.GONE
+ binding.fabAddSubscription.visibility = View.GONE
+
+ // Clear form fields
+ binding.editSubscriptionNumber.text?.clear()
+ binding.editBillNumber.text?.clear()
+ binding.editAlias.text?.clear()
+ }
+
+ private fun hideAddSubscriptionForm() {
+ binding.scrollAddForm.visibility = View.GONE
+ binding.fabAddSubscription.visibility = View.VISIBLE
+
+ // Show appropriate state based on subscriptions
+ subscriptionsViewModel.subscriptions.value?.let { subscriptions ->
+ if (subscriptions.isEmpty()) {
+ showEmptyState()
+ } else {
+ showSubscriptionsList()
+ }
+ } ?: showEmptyState()
+ }
+
+ private fun validateInputs(subscriptionNumber: String, billNumber: String, alias: String): Boolean {
+ var isValid = true
+
+ if (subscriptionNumber.isEmpty()) {
+ binding.editSubscriptionNumber.error = "Subscription number is required"
+ isValid = false
+ }
+
+ if (billNumber.isEmpty()) {
+ binding.editBillNumber.error = "Bill number is required"
+ isValid = false
+ }
+
+ if (alias.isEmpty()) {
+ binding.editAlias.error = "Alias/Description is required"
+ isValid = false
+ }
+
+ return isValid
+ }
override fun onDestroyView() {
super.onDestroyView()
diff --git a/app/src/main/res/layout/activity_add_subscription.xml b/app/src/main/res/layout/activity_add_subscription.xml
deleted file mode 100644
index 10d40c4..0000000
--- a/app/src/main/res/layout/activity_add_subscription.xml
+++ /dev/null
@@ -1,178 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_subscriptions.xml b/app/src/main/res/layout/fragment_subscriptions.xml
index c56f885..2904e0f 100644
--- a/app/src/main/res/layout/fragment_subscriptions.xml
+++ b/app/src/main/res/layout/fragment_subscriptions.xml
@@ -82,6 +82,140 @@
android:paddingBottom="80dp"
tools:listitem="@layout/item_subscription_detailed" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+