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" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +