diff --git a/features/feature_views/src/main/res/drawable/refresh.xml b/features/feature_views/src/main/res/drawable/refresh.xml
new file mode 100644
index 00000000..aaefaea8
--- /dev/null
+++ b/features/feature_views/src/main/res/drawable/refresh.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/features/feature_views/src/main/res/values/dimens.xml b/features/feature_views/src/main/res/values/dimens.xml
index 141fc487..0b1016af 100644
--- a/features/feature_views/src/main/res/values/dimens.xml
+++ b/features/feature_views/src/main/res/values/dimens.xml
@@ -22,4 +22,6 @@
8dp
16dp
+
+ 20dp
\ No newline at end of file
diff --git a/features/feature_widget/src/main/java/com/example/util/simpletimetracker/feature_widget/statistics/WidgetStatisticsChartProvider.kt b/features/feature_widget/src/main/java/com/example/util/simpletimetracker/feature_widget/statistics/WidgetStatisticsChartProvider.kt
index f34c0ed9..0ba4c358 100644
--- a/features/feature_widget/src/main/java/com/example/util/simpletimetracker/feature_widget/statistics/WidgetStatisticsChartProvider.kt
+++ b/features/feature_widget/src/main/java/com/example/util/simpletimetracker/feature_widget/statistics/WidgetStatisticsChartProvider.kt
@@ -3,7 +3,9 @@ package com.example.util.simpletimetracker.feature_widget.statistics
import android.app.PendingIntent
import android.appwidget.AppWidgetManager
import android.appwidget.AppWidgetProvider
+import android.content.ComponentName
import android.content.Context
+import android.content.Intent
import android.os.Bundle
import android.view.ContextThemeWrapper
import android.view.LayoutInflater
@@ -19,10 +21,12 @@ import com.example.util.simpletimetracker.domain.interactor.PrefsInteractor
import com.example.util.simpletimetracker.domain.interactor.RecordTypeInteractor
import com.example.util.simpletimetracker.domain.model.ChartFilterType
import com.example.util.simpletimetracker.domain.model.RecordType
+import com.example.util.simpletimetracker.feature_views.IconView
import com.example.util.simpletimetracker.feature_views.extension.dpToPx
import com.example.util.simpletimetracker.feature_views.extension.getBitmapFromView
import com.example.util.simpletimetracker.feature_views.extension.measureExactly
import com.example.util.simpletimetracker.feature_views.extension.pxToDp
+import com.example.util.simpletimetracker.feature_views.viewData.RecordTypeIcon
import com.example.util.simpletimetracker.feature_widget.R
import com.example.util.simpletimetracker.feature_widget.statistics.customView.WidgetStatisticsChartView
import com.example.util.simpletimetracker.navigation.Router
@@ -91,11 +95,17 @@ class WidgetStatisticsChartProvider : AppWidgetProvider() {
val options = appWidgetManager.getAppWidgetOptions(appWidgetId)
measureView(context, options, view)
val bitmap = view.getBitmapFromView()
+ val refreshButtonBitmap = prepareRefreshButtonView(context).getBitmapFromView()
val views = RemoteViews(context.packageName, R.layout.widget_layout)
views.setImageViewBitmap(R.id.ivWidgetBackground, bitmap)
views.setOnClickPendingIntent(R.id.btnWidget, getPendingSelfIntent(context))
+ views.setImageViewBitmap(R.id.ivRefresh, refreshButtonBitmap)
+ views.setOnClickPendingIntent(R.id.btnRefresh, getRefreshIntent(context, appWidgetId))
+ views.setViewVisibility(R.id.ivRefresh, View.VISIBLE)
+ views.setViewVisibility(R.id.btnRefresh, View.VISIBLE)
+
appWidgetManager.updateAppWidget(appWidgetId, views)
}
@@ -150,6 +160,16 @@ class WidgetStatisticsChartProvider : AppWidgetProvider() {
}
}
+ private fun prepareRefreshButtonView(
+ context: Context,
+ ): View {
+ return IconView(ContextThemeWrapper(context, R.style.AppTheme)).apply {
+ itemIcon = RecordTypeIcon.Image(R.drawable.refresh)
+ itemIconColor = resourceRepo.getColor(R.color.white)
+ measureExactly(resourceRepo.getDimenInDp(R.dimen.widget_statistics_refresh_button_size))
+ }
+ }
+
private fun measureView(
context: Context,
options: Bundle,
@@ -181,4 +201,17 @@ class WidgetStatisticsChartProvider : AppWidgetProvider() {
}
return PendingIntent.getActivity(context, 0, intent, PendingIntents.getFlags())
}
+
+ private fun getRefreshIntent(
+ context: Context,
+ widgetId: Int,
+ ): PendingIntent {
+ val intent = Intent(context, javaClass)
+ intent.action = AppWidgetManager.ACTION_APPWIDGET_UPDATE
+ val ids = AppWidgetManager.getInstance(context)
+ ?.getAppWidgetIds(ComponentName(context, javaClass))
+ ?: intArrayOf()
+ intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, ids)
+ return PendingIntent.getBroadcast(context, widgetId, intent, PendingIntents.getFlags())
+ }
}
\ No newline at end of file
diff --git a/features/feature_widget/src/main/res/layout/widget_layout.xml b/features/feature_widget/src/main/res/layout/widget_layout.xml
index e7c3fb9b..0a5324d3 100644
--- a/features/feature_widget/src/main/res/layout/widget_layout.xml
+++ b/features/feature_widget/src/main/res/layout/widget_layout.xml
@@ -46,4 +46,27 @@
android:layout_height="match_parent"
android:background="@drawable/bg_widget_button" />
+
+
+
+
\ No newline at end of file