From d50cc5642c77ec3050d917622de86cdbbc9a4bf9 Mon Sep 17 00:00:00 2001 From: jameskokoska <50821962+jameskokoska@users.noreply.github.com> Date: Tue, 19 Dec 2023 23:52:45 -0500 Subject: [PATCH] Android widgets, transfer balance shortcut Transfer balance app quick shortcut Ability to select certain accounts for income/expense total on homepage Fixed budget history limit when watching selected categories New all spending summary no longer shows on wallet details page Most common transactions amount properly converted to main currency Renamed and refactored homepage section settings Home screen widgets and shortcuts (A) --- .../android/app/src/main/AndroidManifest.xml | 24 + .../budget/NetWorthPlusWidgetProvider.kt | 59 +++ .../example/budget/NetWorthWidgetProvider.kt | 49 +- .../com/example/budget/PlusWidgetProvider.kt | 44 ++ .../example/budget/TransferWidgetProvider.kt | 44 ++ .../res/drawable/net_worth_plus_widget.png | Bin 0 -> 22550 bytes .../main/res/drawable/net_worth_widget.png | Bin 0 -> 19965 bytes .../app/src/main/res/drawable/plus_widget.png | Bin 0 -> 3362 bytes .../src/main/res/drawable/rounded_button.xml | 5 + .../app/src/main/res/drawable/transfer.png | Bin 0 -> 769 bytes .../src/main/res/drawable/transfer_widget.png | Bin 0 -> 5364 bytes .../main/res/drawable/transfertransaction.png | Bin 0 -> 13530 bytes .../main/res/drawable/widget_background.xml | 5 + .../layout/net_worth_plus_widget_layout.xml | 70 +++ .../res/layout/net_worth_widget_layout.xml | 97 ++-- .../main/res/layout/plus_widget_layout.xml | 36 ++ .../res/layout/transfer_widget_layout.xml | 30 ++ .../main/res/xml/net_worth_plus_widget.xml | 12 + .../app/src/main/res/xml/net_worth_widget.xml | 9 +- .../app/src/main/res/xml/plus_widget.xml | 12 + .../app/src/main/res/xml/transfer_widget.xml | 12 + budget/assets/translations/generated/ar.json | 3 +- budget/assets/translations/generated/bg.json | 3 +- budget/assets/translations/generated/bn.json | 3 +- budget/assets/translations/generated/cs.json | 3 +- budget/assets/translations/generated/da.json | 3 +- budget/assets/translations/generated/de.json | 3 +- budget/assets/translations/generated/el.json | 3 +- budget/assets/translations/generated/en.json | 3 +- budget/assets/translations/generated/es.json | 3 +- budget/assets/translations/generated/fa.json | 3 +- budget/assets/translations/generated/fi.json | 3 +- budget/assets/translations/generated/fil.json | 3 +- budget/assets/translations/generated/fr.json | 7 +- budget/assets/translations/generated/gu.json | 3 +- budget/assets/translations/generated/he.json | 3 +- budget/assets/translations/generated/hi.json | 3 +- budget/assets/translations/generated/hu.json | 3 +- budget/assets/translations/generated/id.json | 3 +- budget/assets/translations/generated/it.json | 3 +- budget/assets/translations/generated/ja.json | 3 +- budget/assets/translations/generated/ko.json | 3 +- budget/assets/translations/generated/ml.json | 3 +- budget/assets/translations/generated/mr.json | 3 +- budget/assets/translations/generated/ms.json | 3 +- budget/assets/translations/generated/nl.json | 3 +- budget/assets/translations/generated/no.json | 3 +- budget/assets/translations/generated/pl.json | 3 +- budget/assets/translations/generated/pt.json | 3 +- budget/assets/translations/generated/ro.json | 3 +- budget/assets/translations/generated/ru.json | 3 +- budget/assets/translations/generated/sr.json | 3 +- budget/assets/translations/generated/sv.json | 3 +- budget/assets/translations/generated/sw.json | 3 +- budget/assets/translations/generated/ta.json | 3 +- budget/assets/translations/generated/te.json | 3 +- budget/assets/translations/generated/th.json | 3 +- budget/assets/translations/generated/tr.json | 3 +- budget/assets/translations/generated/uk.json | 5 +- budget/assets/translations/generated/ur.json | 3 +- budget/assets/translations/generated/vi.json | 41 +- .../translations/generated/zh-Hant.json | 3 +- budget/assets/translations/generated/zh.json | 3 +- budget/assets/translations/translations.csv | 47 +- budget/lib/colors.dart | 7 + budget/lib/database/tables.dart | 2 +- budget/lib/pages/editHomePage.dart | 45 +- budget/lib/pages/homePage/homePage.dart | 134 +---- .../homePage/homePageAllSpendingSummary.dart | 141 +++--- .../pages/homePage/homePageCreditDebts.dart | 31 +- .../lib/pages/homePage/homePageNetWorth.dart | 28 +- .../homePageUpcomingTransactions.dart | 31 +- budget/lib/pages/pastBudgetsPage.dart | 1 + budget/lib/pages/settingsPage.dart | 11 +- budget/lib/pages/walletDetailsPage.dart | 478 +++++++++--------- budget/lib/struct/defaultPreferences.dart | 1 + budget/lib/struct/quickActions.dart | 22 + budget/lib/struct/settings.dart | 1 + .../lib/widgets/budgetHistoryLineGraph.dart | 4 +- budget/lib/widgets/navigationFramework.dart | 15 +- budget/lib/widgets/selectColor.dart | 2 + budget/lib/widgets/showChangelog.dart | 8 + .../lib/widgets/util/checkWidgetLaunch.dart | 224 ++++++++ budget/pubspec.yaml | 2 +- 84 files changed, 1238 insertions(+), 675 deletions(-) create mode 100644 budget/android/app/src/main/kotlin/com/example/budget/NetWorthPlusWidgetProvider.kt create mode 100644 budget/android/app/src/main/kotlin/com/example/budget/PlusWidgetProvider.kt create mode 100644 budget/android/app/src/main/kotlin/com/example/budget/TransferWidgetProvider.kt create mode 100644 budget/android/app/src/main/res/drawable/net_worth_plus_widget.png create mode 100644 budget/android/app/src/main/res/drawable/net_worth_widget.png create mode 100644 budget/android/app/src/main/res/drawable/plus_widget.png create mode 100644 budget/android/app/src/main/res/drawable/rounded_button.xml create mode 100644 budget/android/app/src/main/res/drawable/transfer.png create mode 100644 budget/android/app/src/main/res/drawable/transfer_widget.png create mode 100644 budget/android/app/src/main/res/drawable/transfertransaction.png create mode 100644 budget/android/app/src/main/res/drawable/widget_background.xml create mode 100644 budget/android/app/src/main/res/layout/net_worth_plus_widget_layout.xml create mode 100644 budget/android/app/src/main/res/layout/plus_widget_layout.xml create mode 100644 budget/android/app/src/main/res/layout/transfer_widget_layout.xml create mode 100644 budget/android/app/src/main/res/xml/net_worth_plus_widget.xml create mode 100644 budget/android/app/src/main/res/xml/plus_widget.xml create mode 100644 budget/android/app/src/main/res/xml/transfer_widget.xml create mode 100644 budget/lib/widgets/util/checkWidgetLaunch.dart diff --git a/budget/android/app/src/main/AndroidManifest.xml b/budget/android/app/src/main/AndroidManifest.xml index ea96bff6..480d62b2 100644 --- a/budget/android/app/src/main/AndroidManifest.xml +++ b/budget/android/app/src/main/AndroidManifest.xml @@ -76,6 +76,30 @@ + + + + + + + + + + + + + + + + + + diff --git a/budget/android/app/src/main/kotlin/com/example/budget/NetWorthPlusWidgetProvider.kt b/budget/android/app/src/main/kotlin/com/example/budget/NetWorthPlusWidgetProvider.kt new file mode 100644 index 00000000..3f942b1b --- /dev/null +++ b/budget/android/app/src/main/kotlin/com/example/budget/NetWorthPlusWidgetProvider.kt @@ -0,0 +1,59 @@ +package com.budget.tracker_app + +import android.appwidget.AppWidgetManager +import android.content.Context +import android.content.SharedPreferences +import android.graphics.BitmapFactory +import android.net.Uri +import android.view.View +import android.widget.RemoteViews +import es.antonborri.home_widget.HomeWidgetBackgroundIntent +import es.antonborri.home_widget.HomeWidgetLaunchIntent +import es.antonborri.home_widget.HomeWidgetProvider + +class NetWorthPlusWidgetProvider : HomeWidgetProvider() { + + override fun onUpdate(context: Context, appWidgetManager: AppWidgetManager, appWidgetIds: IntArray, widgetData: SharedPreferences) { + appWidgetIds.forEach { widgetId -> + + val views = RemoteViews(context.packageName, R.layout.net_worth_plus_widget_layout).apply { + try { + setTextViewText(R.id.net_worth_amount, widgetData.getString("netWorthAmount", null) + ?: "0.00") + + setTextViewText(R.id.net_worth_transactions_number, widgetData.getString("netWorthTransactionsNumber", null) + ?: "0 transactions") + }catch (e: Exception){} + + try { + setInt(R.id.widget_background, "setColorFilter", android.graphics.Color.parseColor(widgetData.getString("widgetColorBackground", null) + ?: "#FFFFFF")); + }catch (e: Exception){} + + try { + setInt(R.id.net_worth_amount, "setTextColor", android.graphics.Color.parseColor(widgetData.getString("widgetColorText", null) + ?: "#FFFFFF")) + setInt(R.id.net_worth_transactions_number, "setTextColor", android.graphics.Color.parseColor(widgetData.getString("widgetColorText", null) + ?: "#FFFFFF")) + }catch (e: Exception){} + + try { + val plusButtonIntent = HomeWidgetLaunchIntent.getActivity( + context, + MainActivity::class.java, + Uri.parse("addTransaction")) + setOnClickPendingIntent(R.id.plus_button, plusButtonIntent) + + val pendingIntentWithData = HomeWidgetLaunchIntent.getActivity( + context, + MainActivity::class.java, + Uri.parse("netWorthLaunch")) + setOnClickPendingIntent(R.id.widget_container, pendingIntentWithData) + }catch (e: Exception){} + + } + + appWidgetManager.updateAppWidget(widgetId, views) + } + } +} \ No newline at end of file diff --git a/budget/android/app/src/main/kotlin/com/example/budget/NetWorthWidgetProvider.kt b/budget/android/app/src/main/kotlin/com/example/budget/NetWorthWidgetProvider.kt index ab8b8b41..f0a9acce 100644 --- a/budget/android/app/src/main/kotlin/com/example/budget/NetWorthWidgetProvider.kt +++ b/budget/android/app/src/main/kotlin/com/example/budget/NetWorthWidgetProvider.kt @@ -17,24 +17,41 @@ class NetWorthWidgetProvider : HomeWidgetProvider() { appWidgetIds.forEach { widgetId -> val views = RemoteViews(context.packageName, R.layout.net_worth_widget_layout).apply { - - setTextViewText(R.id.net_worth_title, widgetData.getString("netWorthTitle", null) - ?: "Net Worth") - - setTextViewText(R.id.net_worth_amount, widgetData.getString("netWorthAmount", null) - ?: "0.00") - - setTextViewText(R.id.net_worth_transactions_number, widgetData.getString("netWorthTransactionsNumber", null) - ?: "0 transactions") - - // Detect App opened via Click inside Flutter - val pendingIntentWithData = HomeWidgetLaunchIntent.getActivity( - context, - MainActivity::class.java, - Uri.parse("launch,${widgetId}")) - setOnClickPendingIntent(R.id.widget_container, pendingIntentWithData) + try { + setTextViewText(R.id.net_worth_title, widgetData.getString("netWorthTitle", null) + ?: "Net Worth") + + setTextViewText(R.id.net_worth_amount, widgetData.getString("netWorthAmount", null) + ?: "0.00") + + setTextViewText(R.id.net_worth_transactions_number, widgetData.getString("netWorthTransactionsNumber", null) + ?: "0 transactions") + }catch (e: Exception){} + + try { + setInt(R.id.widget_background, "setColorFilter", android.graphics.Color.parseColor(widgetData.getString("widgetColorBackground", null) + ?: "#FFFFFF")); + }catch (e: Exception){} + + try { + setInt(R.id.net_worth_title, "setTextColor", android.graphics.Color.parseColor(widgetData.getString("widgetColorText", null) + ?: "#FFFFFF")) + setInt(R.id.net_worth_amount, "setTextColor", android.graphics.Color.parseColor(widgetData.getString("widgetColorText", null) + ?: "#FFFFFF")) + setInt(R.id.net_worth_transactions_number, "setTextColor", android.graphics.Color.parseColor(widgetData.getString("widgetColorText", null) + ?: "#FFFFFF")) + }catch (e: Exception){} + + try { + val pendingIntentWithData = HomeWidgetLaunchIntent.getActivity( + context, + MainActivity::class.java, + Uri.parse("addTransaction")) + setOnClickPendingIntent(R.id.widget_container, pendingIntentWithData) + }catch (e: Exception){} } + appWidgetManager.updateAppWidget(widgetId, views) } } diff --git a/budget/android/app/src/main/kotlin/com/example/budget/PlusWidgetProvider.kt b/budget/android/app/src/main/kotlin/com/example/budget/PlusWidgetProvider.kt new file mode 100644 index 00000000..d41fc4b2 --- /dev/null +++ b/budget/android/app/src/main/kotlin/com/example/budget/PlusWidgetProvider.kt @@ -0,0 +1,44 @@ +package com.budget.tracker_app + +import android.appwidget.AppWidgetManager +import android.content.Context +import android.content.SharedPreferences +import android.graphics.BitmapFactory +import android.net.Uri +import android.view.View +import android.widget.RemoteViews +import es.antonborri.home_widget.HomeWidgetBackgroundIntent +import es.antonborri.home_widget.HomeWidgetLaunchIntent +import es.antonborri.home_widget.HomeWidgetProvider + +class PlusWidgetProvider : HomeWidgetProvider() { + + override fun onUpdate(context: Context, appWidgetManager: AppWidgetManager, appWidgetIds: IntArray, widgetData: SharedPreferences) { + appWidgetIds.forEach { widgetId -> + + val views = RemoteViews(context.packageName, R.layout.plus_widget_layout).apply { + + try { + setInt(R.id.widget_background, "setColorFilter", android.graphics.Color.parseColor(widgetData.getString("widgetColorBackground", null) + ?: "#FFFFFF")); + }catch (e: Exception){} + + try { + setInt(R.id.plus_title, "setTextColor", android.graphics.Color.parseColor(widgetData.getString("widgetColorText", null) + ?: "#FFFFFF")) + }catch (e: Exception){} + + try { + val pendingIntentWithData = HomeWidgetLaunchIntent.getActivity( + context, + MainActivity::class.java, + Uri.parse("addTransaction")) + setOnClickPendingIntent(R.id.widget_container, pendingIntentWithData) + }catch (e: Exception){} + + } + + appWidgetManager.updateAppWidget(widgetId, views) + } + } +} \ No newline at end of file diff --git a/budget/android/app/src/main/kotlin/com/example/budget/TransferWidgetProvider.kt b/budget/android/app/src/main/kotlin/com/example/budget/TransferWidgetProvider.kt new file mode 100644 index 00000000..d70a8a2e --- /dev/null +++ b/budget/android/app/src/main/kotlin/com/example/budget/TransferWidgetProvider.kt @@ -0,0 +1,44 @@ +package com.budget.tracker_app + +import android.appwidget.AppWidgetManager +import android.content.Context +import android.content.SharedPreferences +import android.graphics.BitmapFactory +import android.net.Uri +import android.view.View +import android.widget.RemoteViews +import es.antonborri.home_widget.HomeWidgetBackgroundIntent +import es.antonborri.home_widget.HomeWidgetLaunchIntent +import es.antonborri.home_widget.HomeWidgetProvider + +class TransferWidgetProvider : HomeWidgetProvider() { + + override fun onUpdate(context: Context, appWidgetManager: AppWidgetManager, appWidgetIds: IntArray, widgetData: SharedPreferences) { + appWidgetIds.forEach { widgetId -> + + val views = RemoteViews(context.packageName, R.layout.transfer_widget_layout).apply { + + try { + setInt(R.id.widget_background, "setColorFilter", android.graphics.Color.parseColor(widgetData.getString("widgetColorBackground", null) + ?: "#FFFFFF")); + }catch (e: Exception){} + + try { + setInt(R.id.transfer_image, "setColorFilter", android.graphics.Color.parseColor(widgetData.getString("widgetColorText", null) + ?: "#FFFFFF")); + }catch (e: Exception){} + + try { + val pendingIntentWithData = HomeWidgetLaunchIntent.getActivity( + context, + MainActivity::class.java, + Uri.parse("transferTransaction")) + setOnClickPendingIntent(R.id.widget_container, pendingIntentWithData) + }catch (e: Exception){} + + } + + appWidgetManager.updateAppWidget(widgetId, views) + } + } +} \ No newline at end of file diff --git a/budget/android/app/src/main/res/drawable/net_worth_plus_widget.png b/budget/android/app/src/main/res/drawable/net_worth_plus_widget.png new file mode 100644 index 0000000000000000000000000000000000000000..5211c6685d999095e7d03b09d1aa6ebfe04381f4 GIT binary patch literal 22550 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 literal 0 HcmV?d00001 diff --git a/budget/android/app/src/main/res/drawable/plus_widget.png b/budget/android/app/src/main/res/drawable/plus_widget.png new file mode 100644 index 0000000000000000000000000000000000000000..65934f899120535c2ab87aacca6a92c02da40086 GIT binary patch literal 3362 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 literal 0 HcmV?d00001 diff --git a/budget/android/app/src/main/res/drawable/rounded_button.xml b/budget/android/app/src/main/res/drawable/rounded_button.xml new file mode 100644 index 00000000..e5350982 --- /dev/null +++ b/budget/android/app/src/main/res/drawable/rounded_button.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/budget/android/app/src/main/res/drawable/transfer.png b/budget/android/app/src/main/res/drawable/transfer.png new file mode 100644 index 0000000000000000000000000000000000000000..190cadc6ad6e645f4ac765a676c443cf39866fe5 GIT binary patch literal 769 zcmeAS@N?(olHy`uVBq!ia0vp^DIm2NwMq|C+Z-J@ZmW4P!7rhxO2h-atQW!~V9 zz4L0r=@<8Or=OPp`71u|>FK;uvBwM6HTQ@eE|E?-BC+iG{0ZK&&tJZ>*u}eu{n-0m zKNdVb|E$fi3PIUi`#b!X0-m9vo5T3 z`R6}V*B?)Ie)VJRTg7rTQ1@RzJ3@ z6`8g7W%B-(Z;#A(D!urpdq?+M_QLJ|e^0)2%fr#J)**~1m{+HVLi-Trd%D!W%RKDWp3>KB~0k8@q=nS=3fG>;zhmEJA5 zSVY=9_l;XmP|lq#8>J1sHWpq!mUl#hu;kp39bP0l+XkK DMto(1 literal 0 HcmV?d00001 diff --git a/budget/android/app/src/main/res/drawable/transfer_widget.png b/budget/android/app/src/main/res/drawable/transfer_widget.png new file mode 100644 index 0000000000000000000000000000000000000000..f20107c575ab7a3c3d8785b1bf5828c731c276bc GIT binary patch literal 5364 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 literal 0 HcmV?d00001 diff --git a/budget/android/app/src/main/res/drawable/transfertransaction.png b/budget/android/app/src/main/res/drawable/transfertransaction.png new file mode 100644 index 0000000000000000000000000000000000000000..7d8bdf3ba504d2c75a5d5cf864d15eb66aef8e42 GIT binary patch literal 13530 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 L4fz6Di{SqSJAsmQ literal 0 HcmV?d00001 diff --git a/budget/android/app/src/main/res/drawable/widget_background.xml b/budget/android/app/src/main/res/drawable/widget_background.xml new file mode 100644 index 00000000..99f09f73 --- /dev/null +++ b/budget/android/app/src/main/res/drawable/widget_background.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/budget/android/app/src/main/res/layout/net_worth_plus_widget_layout.xml b/budget/android/app/src/main/res/layout/net_worth_plus_widget_layout.xml new file mode 100644 index 00000000..a41fd635 --- /dev/null +++ b/budget/android/app/src/main/res/layout/net_worth_plus_widget_layout.xml @@ -0,0 +1,70 @@ + + + + + + + + +