Skip to content

Commit 354ab34

Browse files
committed
make single activity widget resizable
1 parent 4911890 commit 354ab34

File tree

3 files changed

+32
-9
lines changed

3 files changed

+32
-9
lines changed

features/feature_widget/src/main/java/com/example/util/simpletimetracker/feature_widget/single/WidgetSingleProvider.kt

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import android.appwidget.AppWidgetManager
55
import android.appwidget.AppWidgetProvider
66
import android.content.Context
77
import android.content.Intent
8+
import android.os.Bundle
89
import android.os.SystemClock
910
import android.view.LayoutInflater
1011
import android.view.View
@@ -36,8 +37,10 @@ import com.example.util.simpletimetracker.domain.record.model.RecordDataSelectio
3637
import com.example.util.simpletimetracker.feature_views.ColorUtils
3738
import com.example.util.simpletimetracker.feature_views.GoalCheckmarkView
3839
import com.example.util.simpletimetracker.feature_views.RecordTypeView
40+
import com.example.util.simpletimetracker.feature_views.extension.dpToPx
3941
import com.example.util.simpletimetracker.feature_views.extension.getBitmapFromView
4042
import com.example.util.simpletimetracker.feature_views.extension.measureExactly
43+
import com.example.util.simpletimetracker.feature_views.extension.pxToDp
4144
import com.example.util.simpletimetracker.feature_views.extension.setAllMargins
4245
import com.example.util.simpletimetracker.feature_views.viewData.RecordTypeIcon
4346
import com.example.util.simpletimetracker.feature_widget.R
@@ -131,6 +134,16 @@ class WidgetSingleProvider : AppWidgetProvider() {
131134
}
132135
}
133136

137+
override fun onAppWidgetOptionsChanged(
138+
context: Context?,
139+
appWidgetManager: AppWidgetManager?,
140+
appWidgetId: Int,
141+
newOptions: Bundle?,
142+
) {
143+
super.onAppWidgetOptionsChanged(context, appWidgetManager, appWidgetId, newOptions)
144+
updateAppWidget(context, appWidgetManager, appWidgetId)
145+
}
146+
134147
private fun updateAppWidget(
135148
context: Context?,
136149
appWidgetManager: AppWidgetManager?,
@@ -213,7 +226,8 @@ class WidgetSingleProvider : AppWidgetProvider() {
213226
)
214227
}
215228

216-
measureView(context, view)
229+
val options = appWidgetManager.getAppWidgetOptions(appWidgetId)
230+
measureView(context, options, view)
217231
val bitmap = view.getBitmapFromView()
218232

219233
val views = RemoteViews(context.packageName, R.layout.widget_layout)
@@ -315,9 +329,18 @@ class WidgetSingleProvider : AppWidgetProvider() {
315329
views.setViewVisibility(chronometerId, View.VISIBLE)
316330
}
317331

318-
private fun measureView(context: Context, view: View) {
319-
var width = context.resources.getDimensionPixelSize(R.dimen.record_type_card_width)
320-
var height = context.resources.getDimensionPixelSize(R.dimen.record_type_card_height)
332+
private fun measureView(
333+
context: Context,
334+
options: Bundle,
335+
view: View,
336+
) {
337+
val defaultWidth = context.resources.getDimensionPixelSize(R.dimen.record_type_card_width)
338+
val defaultHeight = context.resources.getDimensionPixelSize(R.dimen.record_type_card_height)
339+
340+
var width = options.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH, defaultWidth.pxToDp())
341+
.dpToPx().takeUnless { it == 0 } ?: defaultWidth
342+
var height = options.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHT, defaultHeight.pxToDp())
343+
.dpToPx().takeUnless { it == 0 } ?: defaultHeight
321344

322345
fun inflate(): View {
323346
val inflater = LayoutInflater.from(context)

features/feature_widget/src/main/java/com/example/util/simpletimetracker/feature_widget/statistics/WidgetStatisticsChartProvider.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -209,12 +209,12 @@ class WidgetStatisticsChartProvider : AppWidgetProvider() {
209209
options: Bundle,
210210
view: View,
211211
) {
212-
val defaultWidth = context.resources.getDimensionPixelSize(R.dimen.record_type_card_width).pxToDp()
213-
val defaultHeight = context.resources.getDimensionPixelSize(R.dimen.record_type_card_height).pxToDp()
212+
val defaultWidth = context.resources.getDimensionPixelSize(R.dimen.record_type_card_width)
213+
val defaultHeight = context.resources.getDimensionPixelSize(R.dimen.record_type_card_height)
214214

215-
var width = options.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH, defaultWidth)
215+
var width = options.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH, defaultWidth.pxToDp())
216216
.dpToPx().takeUnless { it == 0 } ?: defaultWidth
217-
var height = options.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHT, defaultHeight)
217+
var height = options.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHT, defaultHeight.pxToDp())
218218
.dpToPx().takeUnless { it == 0 } ?: defaultHeight
219219
val inflater = LayoutInflater.from(context)
220220

features/feature_widget/src/main/res/xml/widget_single_info.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
android:minWidth="20dp"
77
android:minHeight="20dp"
88
android:previewImage="@drawable/preview_widget_single"
9-
android:resizeMode="none"
9+
android:resizeMode="vertical|horizontal"
1010
android:updatePeriodMillis="1800000"
1111
android:widgetCategory="home_screen"
1212
android:widgetFeatures="reconfigurable"

0 commit comments

Comments
 (0)