From bea0803c3abf9af637e38e2ee417703dd2f5bf82 Mon Sep 17 00:00:00 2001 From: Tommaso Berlose Date: Mon, 4 May 2020 20:22:17 +0200 Subject: [PATCH] Update widget size --- app/src/main/AndroidManifest.xml | 16 +++---- .../anotherwidget/helpers/WidgetHelper.kt | 42 +++++++++++++++++++ .../anotherwidget/ui/widgets/MainWidget.kt | 24 ++++++----- .../compile-file-map.properties | 2 +- .../tmp/debug/dex-renamer-state.txt | 2 +- 5 files changed, 66 insertions(+), 20 deletions(-) create mode 100644 app/src/main/java/com/tommasoberlose/anotherwidget/helpers/WidgetHelper.kt diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6b31aea..6888140 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,5 +1,6 @@ @@ -16,19 +17,20 @@ android:name=".AWApplication" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" - android:theme="@style/AppTheme"> - + android:theme="@style/AppTheme" + tools:ignore="LockedOrientationActivity"> + - - - - - + + + + + diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/WidgetHelper.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/WidgetHelper.kt new file mode 100644 index 0000000..8a92d03 --- /dev/null +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/WidgetHelper.kt @@ -0,0 +1,42 @@ +package com.tommasoberlose.anotherwidget.helpers + +import android.appwidget.AppWidgetManager +import android.content.Context +import android.content.res.Configuration.ORIENTATION_PORTRAIT + +object WidgetHelper { + class WidgetSizeProvider( + private val context: Context, + private val appWidgetManager: AppWidgetManager + ) { + + fun getWidgetsSize(widgetId: Int): Pair { + val isPortrait = context.resources.configuration.orientation == ORIENTATION_PORTRAIT + val width = getWidgetWidth(isPortrait, widgetId) + val height = getWidgetHeight(isPortrait, widgetId) + val widthInPx = context.dip(width) + val heightInPx = context.dip(height) + return widthInPx to heightInPx + } + + private fun getWidgetWidth(isPortrait: Boolean, widgetId: Int): Int = + if (isPortrait) { + getWidgetSizeInDp(widgetId, AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH) + } else { + getWidgetSizeInDp(widgetId, AppWidgetManager.OPTION_APPWIDGET_MAX_WIDTH) + } + + private fun getWidgetHeight(isPortrait: Boolean, widgetId: Int): Int = + if (isPortrait) { + getWidgetSizeInDp(widgetId, AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHT) + } else { + getWidgetSizeInDp(widgetId, AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT) + } + + private fun getWidgetSizeInDp(widgetId: Int, key: String): Int = + appWidgetManager.getAppWidgetOptions(widgetId).getInt(key, 0) + + private fun Context.dip(value: Int): Int = (value * resources.displayMetrics.density).toInt() + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/widgets/MainWidget.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/widgets/MainWidget.kt index 92339c6..fff2340 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/widgets/MainWidget.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/widgets/MainWidget.kt @@ -65,8 +65,10 @@ class MainWidget : AppWidgetProvider() { } override fun onDisabled(context: Context) { - UpdatesReceiver.removeUpdates(context) - WeatherReceiver.removeUpdates(context) + if (getWidgetCount(context) == 0) { + UpdatesReceiver.removeUpdates(context) + WeatherReceiver.removeUpdates(context) + } } companion object { @@ -81,26 +83,26 @@ class MainWidget : AppWidgetProvider() { context.sendBroadcast(update) } + fun getWidgetCount(context: Context): Int { + val widgetManager = AppWidgetManager.getInstance(context) + val widgetComponent = ComponentName(context, MainWidget::class.java) + return widgetManager.getAppWidgetIds(widgetComponent).size + } + internal fun updateAppWidget(context: Context, appWidgetManager: AppWidgetManager, appWidgetId: Int) { val displayMetrics = Resources.getSystem().displayMetrics - var height = 110.toPixel(context) val width = displayMetrics.widthPixels - if (Preferences.showClock) { - height += Preferences.clockTextSize.convertSpToPixels(context).toInt() + 16.toPixel(context) - } - if (Preferences.textMainSize > 30 && Preferences.textSecondSize > 22) { - height += 24.toPixel(context) - } - generateWidgetView(context, appWidgetId, appWidgetManager, width - 16.toPixel(context)) + val dimensions = WidgetHelper.WidgetSizeProvider(context, appWidgetManager).getWidgetsSize(appWidgetId) + generateWidgetView(context, appWidgetId, appWidgetManager, dimensions.first - 8.toPixel(context) /*width - 16.toPixel(context)*/) } private fun generateWidgetView(context: Context, appWidgetId: Int, appWidgetManager: AppWidgetManager, w: Int) { var views = RemoteViews(context.packageName, R.layout.the_widget_sans) val generatedView = generateWidgetView(context) - views.setImageViewBitmap(R.id.bitmap_container, BitmapHelper.getBitmapFromView(generatedView, width = w - 32.toPixel(context))) + views.setImageViewBitmap(R.id.bitmap_container, BitmapHelper.getBitmapFromView(generatedView, width = w)) // Clock views = updateClockView(context, views, appWidgetId) diff --git a/tasksintegration/build/intermediates/incremental/mergeDebugResources/compile-file-map.properties b/tasksintegration/build/intermediates/incremental/mergeDebugResources/compile-file-map.properties index 625b5b2..1ea2c37 100644 --- a/tasksintegration/build/intermediates/incremental/mergeDebugResources/compile-file-map.properties +++ b/tasksintegration/build/intermediates/incremental/mergeDebugResources/compile-file-map.properties @@ -1 +1 @@ -#Mon May 04 17:41:28 CEST 2020 +#Mon May 04 20:02:45 CEST 2020 diff --git a/tasksintegration/build/intermediates/incremental/packageDebug/tmp/debug/dex-renamer-state.txt b/tasksintegration/build/intermediates/incremental/packageDebug/tmp/debug/dex-renamer-state.txt index cdc8377..6d62ea6 100644 --- a/tasksintegration/build/intermediates/incremental/packageDebug/tmp/debug/dex-renamer-state.txt +++ b/tasksintegration/build/intermediates/incremental/packageDebug/tmp/debug/dex-renamer-state.txt @@ -1,4 +1,4 @@ -#Mon May 04 18:47:09 CEST 2020 +#Mon May 04 20:03:44 CEST 2020 base.0=/Users/tommaso/Documents/MyCode/another-widget/tasksintegration/build/intermediates/dex/debug/mergeProjectDexDebug/out/classes.dex path.0=classes.dex renamed.0=classes.dex