diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 08702c3d..b308e68c 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -23,17 +23,6 @@
android:supportsRtl="true"
android:theme="@style/AppTheme"
tools:targetApi="n">
-
-
-
-
-
@@ -94,6 +83,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
-
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/utils/CustomerWidget.kt b/app/src/main/java/org/apache/fineract/utils/CustomerWidget.kt
new file mode 100644
index 00000000..55ec5eac
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/utils/CustomerWidget.kt
@@ -0,0 +1,43 @@
+package org.apache.fineract.utils
+
+import android.app.PendingIntent
+import android.appwidget.AppWidgetManager
+import android.appwidget.AppWidgetProvider
+import android.content.Context
+import android.content.Intent
+import android.widget.RemoteViews
+import org.apache.fineract.R
+import org.apache.fineract.ui.online.customers.createcustomer.CustomerAction
+import org.apache.fineract.ui.online.customers.createcustomer.customeractivity.CreateCustomerActivity
+
+/**
+ * Implementation of App Widget functionality.
+ */
+class CustomerWidget : AppWidgetProvider() {
+ override fun onUpdate(context: Context, appWidgetManager: AppWidgetManager, appWidgetIds: IntArray) {
+ // There may be multiple widgets active, so update all of them
+ for (appWidgetId in appWidgetIds) {
+ updateAppWidget(context, appWidgetManager, appWidgetId)
+ }
+ }
+
+ override fun onEnabled(context: Context) {
+ // Enter relevant functionality for when the first widget is created
+ }
+
+ override fun onDisabled(context: Context) {
+ // Enter relevant functionality for when the last widget is disabled
+ }
+}
+
+internal fun updateAppWidget(context: Context, appWidgetManager: AppWidgetManager, appWidgetId: Int) {
+ val intent = Intent(context, CreateCustomerActivity::class.java)
+ intent.putExtra(ConstantKeys.CUSTOMER_ACTION, CustomerAction.CREATE)
+ val pendingIntent = PendingIntent.getActivity(context, 0, intent, 0)
+ val views = RemoteViews(context.packageName, R.layout.customer_widget)
+
+ views.setImageViewResource(R.id.appwidget_img, R.drawable.ic_widget_48dp)
+ views.setOnClickPendingIntent(R.id.appwidget_img, pendingIntent)
+
+ appWidgetManager.updateAppWidget(appWidgetId, views)
+}
diff --git a/app/src/main/res/drawable-nodpi/widget_preview.png b/app/src/main/res/drawable-nodpi/widget_preview.png
new file mode 100644
index 00000000..8e3e9844
Binary files /dev/null and b/app/src/main/res/drawable-nodpi/widget_preview.png differ
diff --git a/app/src/main/res/drawable/ic_add_black_24dp.xml b/app/src/main/res/drawable/ic_add_white_48dp.xml
similarity index 61%
rename from app/src/main/res/drawable/ic_add_black_24dp.xml
rename to app/src/main/res/drawable/ic_add_white_48dp.xml
index 76a9f8ab..76dde721 100644
--- a/app/src/main/res/drawable/ic_add_black_24dp.xml
+++ b/app/src/main/res/drawable/ic_add_white_48dp.xml
@@ -1,5 +1,5 @@
-
+ android:width="48dp" xmlns:android="http://schemas.android.com/apk/res/android">
diff --git a/app/src/main/res/drawable/ic_widget_48dp.xml b/app/src/main/res/drawable/ic_widget_48dp.xml
new file mode 100644
index 00000000..b5c6b7eb
--- /dev/null
+++ b/app/src/main/res/drawable/ic_widget_48dp.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/customer_widget.xml b/app/src/main/res/layout/customer_widget.xml
new file mode 100644
index 00000000..4a6c9ed1
--- /dev/null
+++ b/app/src/main/res/layout/customer_widget.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_customer_deposit.xml b/app/src/main/res/layout/fragment_customer_deposit.xml
index a4f4a8ea..ea5a8e0f 100644
--- a/app/src/main/res/layout/fragment_customer_deposit.xml
+++ b/app/src/main/res/layout/fragment_customer_deposit.xml
@@ -25,6 +25,6 @@
android:layout_margin="@dimen/layout_padding_16dp"
android:layout_width="wrap_content"
app:layout_behavior="org.apache.fineract.utils.ScrollFabBehavior"
- app:srcCompat="@drawable/ic_add_black_24dp"/>
+ app:srcCompat="@drawable/ic_add_white_48dp"/>
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_customer_list.xml b/app/src/main/res/layout/fragment_customer_list.xml
index 626c1fc3..cc3fd823 100644
--- a/app/src/main/res/layout/fragment_customer_list.xml
+++ b/app/src/main/res/layout/fragment_customer_list.xml
@@ -90,6 +90,6 @@
android:layout_margin="@dimen/layout_padding_16dp"
android:layout_width="wrap_content"
app:layout_behavior="org.apache.fineract.utils.ScrollFabBehavior"
- app:srcCompat="@drawable/ic_add_black_24dp"/>
+ app:srcCompat="@drawable/ic_add_white_48dp"/>
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_customer_loans.xml b/app/src/main/res/layout/fragment_customer_loans.xml
index 10d3dbe3..7ebe1ceb 100644
--- a/app/src/main/res/layout/fragment_customer_loans.xml
+++ b/app/src/main/res/layout/fragment_customer_loans.xml
@@ -34,6 +34,6 @@
android:layout_margin="@dimen/fab_margin"
android:layout_width="wrap_content"
app:layout_behavior="org.apache.fineract.utils.ScrollFabBehavior"
- app:srcCompat="@drawable/ic_add_black_24dp"/>
+ app:srcCompat="@drawable/ic_add_white_48dp"/>
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_edit_payroll_allocation.xml b/app/src/main/res/layout/fragment_edit_payroll_allocation.xml
index 66b55fa0..dc888b9c 100644
--- a/app/src/main/res/layout/fragment_edit_payroll_allocation.xml
+++ b/app/src/main/res/layout/fragment_edit_payroll_allocation.xml
@@ -20,6 +20,6 @@
android:clickable="true"
android:focusable="true"
android:tint="@color/white"
- app:srcCompat="@drawable/ic_add_black_24dp" />
+ app:srcCompat="@drawable/ic_add_white_48dp" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_group_list.xml b/app/src/main/res/layout/fragment_group_list.xml
index b4313606..9961f0cc 100644
--- a/app/src/main/res/layout/fragment_group_list.xml
+++ b/app/src/main/res/layout/fragment_group_list.xml
@@ -18,6 +18,6 @@
app:layout_anchor="@id/rvGroups"
app:layout_anchorGravity="bottom|right"
app:layout_behavior="org.apache.fineract.utils.ScrollFabBehavior"
- app:srcCompat="@drawable/ic_add_black_24dp" />
+ app:srcCompat="@drawable/ic_add_white_48dp" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_identification_list.xml b/app/src/main/res/layout/fragment_identification_list.xml
index b6a7df02..24a70618 100644
--- a/app/src/main/res/layout/fragment_identification_list.xml
+++ b/app/src/main/res/layout/fragment_identification_list.xml
@@ -34,6 +34,6 @@
android:layout_margin="@dimen/layout_padding_16dp"
android:layout_width="wrap_content"
app:layout_behavior="org.apache.fineract.utils.ScrollFabBehavior"
- app:srcCompat="@drawable/ic_add_black_24dp"/>
+ app:srcCompat="@drawable/ic_add_white_48dp"/>
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_roles_list.xml b/app/src/main/res/layout/fragment_roles_list.xml
index 395ab047..60ca4dd3 100644
--- a/app/src/main/res/layout/fragment_roles_list.xml
+++ b/app/src/main/res/layout/fragment_roles_list.xml
@@ -32,7 +32,7 @@
android:layout_margin="@dimen/layout_padding_16dp"
android:layout_width="wrap_content"
app:layout_behavior="org.apache.fineract.utils.ScrollFabBehavior"
- app:srcCompat="@drawable/ic_add_black_24dp"/>
+ app:srcCompat="@drawable/ic_add_white_48dp"/>
+ app:srcCompat="@drawable/ic_add_white_48dp" />
diff --git a/app/src/main/res/layout/fragment_step_add_group_member.xml b/app/src/main/res/layout/fragment_step_add_group_member.xml
index aac7ef54..bcc70e37 100644
--- a/app/src/main/res/layout/fragment_step_add_group_member.xml
+++ b/app/src/main/res/layout/fragment_step_add_group_member.xml
@@ -48,7 +48,7 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
- app:srcCompat="@drawable/ic_add_black_24dp" />
+ app:srcCompat="@drawable/ic_add_white_48dp" />
diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml
new file mode 100644
index 00000000..feeda07f
--- /dev/null
+++ b/app/src/main/res/values-night/themes.xml
@@ -0,0 +1,6 @@
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml
new file mode 100644
index 00000000..97531a25
--- /dev/null
+++ b/app/src/main/res/values/attrs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index e8a0cc4d..08d8ab8b 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -1,66 +1,70 @@
+
+ - @color/blue_light
+ - @color/green_light
+ - @color/red_light
+ - @color/orange_light
+
#009688
#00796B
#212121
#757575
- #FF4081
- #ffffff
+ #FF4081
- #ff33b5e5
+ #ffffff
- #33999999
+ #ff33b5e5
- #BB666666
+ #33999999
- #ff99cc00
+ #BB666666
- #ffff4444
+ #ff99cc00
- #ff0099cc
+ #ffff4444
- #ff669900
+ #ff0099cc
- #ffcc0000
+ #ff669900
- #ffaa66cc
+ #ffcc0000
- #ffffbb33
+ #ffaa66cc
- #ffff8800
+ #ffffbb33
- #ff00ddff
+ #ffff8800
+ #ff00ddff
+
#33CCCCCC
#0a46b1
-
- #c9d8e9
+ #c9d8e9
#000000
- #ffd1d1d1
+ #ffd1d1d1
#ff14c416
#ff8bf98a
#fff9ac06
#FF87DBF9
- #fff9393c
+ #fff9393c
#bbbbbb
#9e9e9e
#E9E2E2
#049314
#787171
#eaeaea
- #c1c1c1
-
- - @color/blue_light
- - @color/green_light
- - @color/red_light
- - @color/orange_light
-
+ #c1c1c1
+ #FFE1F5FE
+ #FF81D4FA
+ #FF039BE5
+ #FF01579B
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
new file mode 100644
index 00000000..9d9a3edf
--- /dev/null
+++ b/app/src/main/res/values/themes.xml
@@ -0,0 +1,6 @@
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/xml/customer_widget_info.xml b/app/src/main/res/xml/customer_widget_info.xml
new file mode 100644
index 00000000..229d7e9f
--- /dev/null
+++ b/app/src/main/res/xml/customer_widget_info.xml
@@ -0,0 +1,10 @@
+
+
\ No newline at end of file