fix dashboard bills display and add payment support

This commit is contained in:
2025-07-26 14:27:49 +05:00
parent f62f867d56
commit d39bd62c6d
19 changed files with 1121 additions and 22 deletions

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@android:color/transparent" />
<corners android:radius="8dp" />
<stroke
android:width="1dp"
android:color="?android:attr/textColorSecondary" />
</shape>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#2196F3" />
<corners android:radius="8dp" />
</shape>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="?android:attr/colorBackground" />
<corners android:radius="12dp" />
</shape>

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#F5F5F5" />
<corners android:radius="8dp" />
<stroke
android:width="1dp"
android:color="#E0E0E0" />
</shape>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#D32F2F" />
<corners android:radius="8dp" />
</shape>

View File

@@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<ScrollView 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:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
android:background="?android:attr/colorBackground">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp">
<!-- Header -->
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Review your payment"
android:textSize="24sp"
android:textStyle="bold"
android:textColor="?android:attr/textColorPrimary"
android:gravity="center"
android:layout_marginBottom="32dp" />
<!-- Bills List -->
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_bills"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="24dp"
tools:listitem="@layout/item_bill_summary" />
<!-- Bill Count Summary -->
<TextView
android:id="@+id/text_bill_count"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
android:textColor="?android:attr/textColorPrimary"
android:layout_marginBottom="16dp"
tools:text="You are paying a total of 2 bills" />
<!-- Total Amount Card -->
<com.google.android.material.card.MaterialCardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="32dp"
app:cardCornerRadius="8dp"
app:cardElevation="2dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Total"
android:textSize="18sp"
android:textStyle="bold"
android:textColor="?android:attr/textColorPrimary"
android:layout_marginBottom="8dp" />
<TextView
android:id="@+id/text_total_amount"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="24sp"
android:textStyle="bold"
android:textColor="?android:attr/textColorPrimary"
tools:text="MVR 3,578.30" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
<!-- Payment Methods Section -->
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Select a payment method"
android:textSize="18sp"
android:textStyle="bold"
android:textColor="?android:attr/textColorPrimary"
android:layout_marginBottom="16dp" />
<!-- Payment Methods RecyclerView -->
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_payment_methods"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:listitem="@layout/item_payment_method" />
<!-- Loading State -->
<LinearLayout
android:id="@+id/layout_loading"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center"
android:padding="32dp"
android:visibility="gone">
<ProgressBar
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_marginBottom="8dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Loading payment methods..."
android:textColor="?android:attr/textColorSecondary" />
</LinearLayout>
</LinearLayout>
</ScrollView>

View File

@@ -0,0 +1,126 @@
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fillViewport="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="24dp"
android:minWidth="300dp">
<!-- Header -->
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Proceed to Payment Gateway"
android:textSize="18sp"
android:textStyle="bold"
android:textColor="?android:attr/textColorPrimary"
android:gravity="center"
android:layout_marginBottom="20dp" />
<!-- Gateway Logo and Name -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical"
android:layout_marginBottom="20dp">
<ImageView
android:id="@+id/image_gateway_logo"
android:layout_width="56dp"
android:layout_height="56dp"
android:layout_marginEnd="16dp"
android:scaleType="fitCenter"
android:background="@drawable/payment_logo_background"
tools:src="@drawable/ic_placeholder" />
<TextView
android:id="@+id/text_gateway_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textSize="16sp"
android:textStyle="bold"
android:textColor="?android:attr/textColorPrimary"
tools:text="Bank of Maldives" />
</LinearLayout>
<!-- Instructions -->
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Your browser will open to complete the payment. Please finish the payment process and return to this app."
android:textSize="14sp"
android:textColor="?android:attr/textColorSecondary"
android:layout_marginBottom="24dp"
android:lineSpacingExtra="2dp" />
<!-- Loading State -->
<LinearLayout
android:id="@+id/layout_loading"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
android:visibility="gone"
android:layout_marginBottom="16dp">
<ProgressBar
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginEnd="12dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Loading payment gateway..."
android:textSize="14sp"
android:textColor="?android:attr/textColorSecondary" />
</LinearLayout>
<!-- Buttons -->
<LinearLayout
android:id="@+id/layout_buttons"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="end">
<Button
android:id="@+id/btn_cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Cancel"
android:textColor="?android:attr/textColorSecondary"
android:textSize="14sp"
android:background="@drawable/cancel_button_background"
android:layout_marginEnd="12dp"
android:paddingHorizontal="20dp"
android:paddingVertical="10dp"
android:minWidth="80dp" />
<Button
android:id="@+id/btn_continue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Continue"
android:textColor="@android:color/white"
android:textSize="14sp"
android:background="@drawable/continue_button_background"
android:paddingHorizontal="20dp"
android:paddingVertical="10dp"
android:minWidth="80dp" />
</LinearLayout>
</LinearLayout>
</ScrollView>

View File

@@ -36,29 +36,68 @@
app:cardElevation="2dp">
<LinearLayout
android:id="@+id/layout_bills_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:orientation="vertical"
android:padding="16dp"
android:background="#E8F5E8"
android:gravity="center_vertical">
android:background="#E8F5E8">
<TextView
android:id="@+id/text_bills_status"
android:layout_width="0dp"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textSize="16sp"
android:textColor="#2E7D32"
android:textStyle="bold"
tools:text="You don't have any pending bills left" />
android:orientation="horizontal"
android:gravity="center_vertical">
<ProgressBar
android:id="@+id/progress_bills"
android:layout_width="24dp"
android:layout_height="24dp"
android:visibility="gone"
android:indeterminateTint="#2E7D32" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@+id/text_bills_status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16sp"
android:textColor="#2E7D32"
android:textStyle="bold"
tools:text="You don't have any pending bills left" />
<TextView
android:id="@+id/text_outstanding_amount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:textSize="14sp"
android:textColor="#2E7D32"
android:visibility="gone"
tools:text="Outstanding MVR 3578.30" />
</LinearLayout>
<ProgressBar
android:id="@+id/progress_bills"
android:layout_width="24dp"
android:layout_height="24dp"
android:visibility="gone"
android:indeterminateTint="#2E7D32" />
<Button
android:id="@+id/btn_pay_now"
android:layout_width="wrap_content"
android:layout_height="36dp"
android:layout_marginStart="12dp"
android:text="Pay now"
android:textColor="@android:color/white"
android:textSize="14sp"
android:textStyle="bold"
android:background="@drawable/red_button_background"
android:paddingHorizontal="16dp"
android:visibility="gone"
android:minWidth="80dp" />
</LinearLayout>
</LinearLayout>

View File

@@ -0,0 +1,58 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="12dp"
android:gravity="center_vertical">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Subscription no:"
android:textSize="14sp"
android:textColor="?android:attr/textColorSecondary" />
<TextView
android:id="@+id/text_subscription_number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16sp"
android:textStyle="bold"
android:textColor="?android:attr/textColorPrimary"
tools:text="4995" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="end">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Due amount:"
android:textSize="14sp"
android:textColor="?android:attr/textColorSecondary" />
<TextView
android:id="@+id/text_due_amount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16sp"
android:textStyle="bold"
android:textColor="?android:attr/textColorPrimary"
tools:text="MVR 1,945.36" />
</LinearLayout>
</LinearLayout>

View File

@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.card.MaterialCardView 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:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="12dp"
app:cardCornerRadius="8dp"
app:cardElevation="2dp"
android:clickable="true"
android:focusable="true"
android:foreground="?android:attr/selectableItemBackground">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="16dp"
android:gravity="center_vertical">
<ImageView
android:id="@+id/image_payment_logo"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_marginEnd="16dp"
android:scaleType="fitCenter"
android:background="@drawable/payment_logo_background"
tools:src="@drawable/ic_placeholder" />
<TextView
android:id="@+id/text_payment_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textSize="16sp"
android:textColor="?android:attr/textColorPrimary"
tools:text="Bank of Maldives" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>