diff --git a/app/src/debug/res/drawable/ic_launcher_background.xml b/app/src/debug/res/drawable/ic_launcher_background.xml
new file mode 100644
index 0000000..4cb08a7
--- /dev/null
+++ b/app/src/debug/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,10 @@
+
+
+
+
diff --git a/app/src/debug/res/values/strings.xml b/app/src/debug/res/values/strings.xml
new file mode 100644
index 0000000..e1ab9be
--- /dev/null
+++ b/app/src/debug/res/values/strings.xml
@@ -0,0 +1,4 @@
+
+
+ Thijooree Debug
+
diff --git a/app/src/main/java/sh/sar/basedbank/ui/home/DashboardFragment.kt b/app/src/main/java/sh/sar/basedbank/ui/home/DashboardFragment.kt
index c33bf9f..ba2d96d 100644
--- a/app/src/main/java/sh/sar/basedbank/ui/home/DashboardFragment.kt
+++ b/app/src/main/java/sh/sar/basedbank/ui/home/DashboardFragment.kt
@@ -126,6 +126,12 @@ class DashboardFragment : Fragment() {
private fun refreshQuickActions() {
val prefs = requireContext().getSharedPreferences("prefs", Context.MODE_PRIVATE)
+ val isBottom = prefs.getBoolean("bottom_nav", false)
+ if (isBottom) {
+ binding.buttonBar.visibility = View.GONE
+ return
+ }
+ binding.buttonBar.visibility = View.VISIBLE
val ids = NavCustomization.getQuickActions(prefs)
listOf(binding.btnQuickAction1, binding.btnQuickAction2).forEachIndexed { i, btn ->
val def = NavCustomization.ALL_SWAPPABLE.find { it.id == ids[i] }
diff --git a/app/src/main/java/sh/sar/basedbank/ui/home/SettingsAppearanceFragment.kt b/app/src/main/java/sh/sar/basedbank/ui/home/SettingsAppearanceFragment.kt
index 778f3d9..0579c26 100644
--- a/app/src/main/java/sh/sar/basedbank/ui/home/SettingsAppearanceFragment.kt
+++ b/app/src/main/java/sh/sar/basedbank/ui/home/SettingsAppearanceFragment.kt
@@ -54,19 +54,29 @@ class SettingsAppearanceFragment : Fragment() {
// Quick actions
quickActions.clear()
quickActions.addAll(NavCustomization.getQuickActions(prefs))
- quickActionAdapter = NavItemAdapter(quickActions) {
- NavCustomization.saveQuickActions(prefs, quickActions)
+ quickActionAdapter = NavItemAdapter(
+ items = quickActions,
+ onSave = { NavCustomization.saveQuickActions(prefs, quickActions) },
+ isEnabled = { !prefs.getBoolean("bottom_nav", false) }
+ )
+ setupNavItemRecyclerView(binding.rvQuickActions, quickActionAdapter, quickActions) {
+ !prefs.getBoolean("bottom_nav", false)
}
- setupNavItemRecyclerView(binding.rvQuickActions, quickActionAdapter, quickActions)
// Bottom bar shortcuts
slots.clear()
slots.addAll(NavCustomization.getSlots(prefs))
- slotAdapter = NavItemAdapter(slots) {
- NavCustomization.saveSlots(prefs, slots)
- (activity as? HomeActivity)?.rebuildBottomNav(prefs)
+ slotAdapter = NavItemAdapter(
+ items = slots,
+ onSave = {
+ NavCustomization.saveSlots(prefs, slots)
+ (activity as? HomeActivity)?.rebuildBottomNav(prefs)
+ },
+ isEnabled = { prefs.getBoolean("bottom_nav", false) }
+ )
+ setupNavItemRecyclerView(binding.rvNavSlots, slotAdapter, slots) {
+ prefs.getBoolean("bottom_nav", false)
}
- setupNavItemRecyclerView(binding.rvNavSlots, slotAdapter, slots)
// Show labels toggle
val showLabels = prefs.getBoolean("bottom_nav_show_labels", true)
binding.switchShowLabels.isChecked = showLabels
@@ -109,13 +119,18 @@ class SettingsAppearanceFragment : Fragment() {
private fun setupNavItemRecyclerView(
rv: RecyclerView,
adapter: NavItemAdapter,
- items: MutableList
+ items: MutableList,
+ isEnabled: () -> Boolean
) {
rv.layoutManager = LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)
rv.adapter = adapter
ItemTouchHelper(object : ItemTouchHelper.SimpleCallback(
ItemTouchHelper.START or ItemTouchHelper.END, 0
) {
+ override fun getMovementFlags(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder): Int {
+ if (!isEnabled()) return 0
+ return super.getMovementFlags(recyclerView, viewHolder)
+ }
override fun onMove(
rv: RecyclerView,
from: RecyclerView.ViewHolder,
@@ -134,11 +149,17 @@ class SettingsAppearanceFragment : Fragment() {
private fun updateShortcutsVisibility() {
val isBottom = prefs.getBoolean("bottom_nav", false)
+ binding.sectionQuickActions.alpha = if (isBottom) 0.38f else 1f
binding.sectionBottomBarShortcuts.alpha = if (isBottom) 1f else 0.38f
+ binding.switchShowLabels.isClickable = isBottom
+ quickActionAdapter.notifyDataSetChanged()
+ slotAdapter.notifyDataSetChanged()
}
private fun showItemPicker(items: MutableList, slotIndex: Int, adapter: NavItemAdapter) {
- if (items === slots && !prefs.getBoolean("bottom_nav", false)) return
+ val isBottom = prefs.getBoolean("bottom_nav", false)
+ if (items === slots && !isBottom) return
+ if (items === quickActions && isBottom) return
val ctx = requireContext()
val otherIds = items.filterIndexed { i, _ -> i != slotIndex }.toSet()
val available = NavCustomization.ALL_SWAPPABLE.filter { it.id !in otherIds }
@@ -169,7 +190,8 @@ class SettingsAppearanceFragment : Fragment() {
private inner class NavItemAdapter(
val items: MutableList,
- val onSave: () -> Unit
+ val onSave: () -> Unit,
+ val isEnabled: () -> Boolean = { true }
) : RecyclerView.Adapter() {
inner class VH(view: View) : RecyclerView.ViewHolder(view) {
@@ -191,7 +213,12 @@ class SettingsAppearanceFragment : Fragment() {
val def = NavCustomization.ALL_SWAPPABLE.find { it.id == items[position] } ?: return
holder.ivNavIcon.setImageResource(def.iconRes)
holder.tvNavLabel.setText(def.titleRes)
- holder.itemView.setOnClickListener { showItemPicker(items, holder.adapterPosition, this) }
+ val enabled = isEnabled()
+ holder.itemView.setOnClickListener(
+ if (enabled) View.OnClickListener { showItemPicker(items, holder.adapterPosition, this) }
+ else null
+ )
+ holder.itemView.isClickable = enabled
}
}
diff --git a/app/src/main/res/layout/fragment_settings_appearance.xml b/app/src/main/res/layout/fragment_settings_appearance.xml
index 6cddf24..12d6416 100644
--- a/app/src/main/res/layout/fragment_settings_appearance.xml
+++ b/app/src/main/res/layout/fragment_settings_appearance.xml
@@ -45,22 +45,30 @@
-
-
-
-
+
+ android:orientation="vertical"
+ android:layout_marginBottom="16dp">
+
+
+
+
+
+