diff --git a/app/build.gradle b/app/build.gradle index c0e9253..39d1ac7 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -22,7 +22,7 @@ android { applicationId "com.tommasoberlose.anotherwidget" minSdkVersion 23 targetSdkVersion 30 - versionCode 132 + versionCode 134 versionName "2.3.1" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/MainFragment.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/MainFragment.kt index 67f4243..234df57 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/MainFragment.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/MainFragment.kt @@ -16,6 +16,7 @@ import android.view.ViewGroup import android.widget.LinearLayout import android.widget.RelativeLayout import androidx.core.content.ContextCompat +import androidx.core.view.children import androidx.core.view.isVisible import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider @@ -183,8 +184,6 @@ class MainFragment : Fragment() { private var uiJob: Job? = null private fun updateUI() { - uiJob?.cancel() - if (Preferences.showPreview) { lifecycleScope.launch(Dispatchers.IO) { val bgColor: Int = ContextCompat.getColor( @@ -207,24 +206,19 @@ class MainFragment : Fragment() { } WidgetHelper.runWithCustomTypeface(requireContext()) { typeface -> + uiJob?.cancel() uiJob = lifecycleScope.launch(Dispatchers.IO) { val generatedView = MainWidget.getWidgetView(requireContext(), typeface).root withContext(Dispatchers.Main) { - generatedView.measure(0, 0) - binding.preview.measure(0, 0) - } - val bitmap = BitmapHelper.getBitmapFromView( - generatedView, - if (binding.preview.width > 0) binding.preview.width else generatedView.measuredWidth, - generatedView.measuredHeight - ) - - withContext(Dispatchers.Main) { - binding.widgetDetail.bitmapContainer.apply { - setImageBitmap(bitmap) + binding.widgetDetail.content.removeAllViews() + val container = LinearLayout(requireContext()).apply { + layoutParams = LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT) } + container.gravity = if (Preferences.widgetAlign == Constants.WidgetAlign.CENTER.rawValue) Gravity.CENTER else Gravity.NO_GRAVITY + container.addView(generatedView) + binding.widgetDetail.content.addView(container) binding.widgetLoader.animate().scaleX(0f).scaleY(0f).alpha(0f) .setDuration(200L).start() @@ -310,7 +304,7 @@ class MainFragment : Fragment() { if (showClock) 0f else 1f, if (showClock) 1f else 0f ).apply { - duration = 300L + duration = 500L addUpdateListener { val animatedValue = animatedValue as Float binding.widgetDetail.timeContainer.layoutParams = @@ -318,6 +312,10 @@ class MainFragment : Fragment() { height = (initialHeight * animatedValue).toInt() } binding.widgetDetail.time.alpha = animatedValue + binding.widgetDetail.timeAmPm.alpha = animatedValue + binding.widgetDetail.altTimezoneTime.alpha = animatedValue + binding.widgetDetail.altTimezoneTimeAmPm.alpha = animatedValue + binding.widgetDetail.altTimezoneLabel.alpha = animatedValue } }.start() } @@ -334,7 +332,7 @@ class MainFragment : Fragment() { requireContext() ) else 0) ).apply { - duration = 300L + duration = 500L addUpdateListener { val animatedValue = animatedValue as Int val layoutParams = binding.preview.layoutParams diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/widgets/LeftAlignedWidget.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/widgets/LeftAlignedWidget.kt index 6d89ea0..7ecf1e3 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/widgets/LeftAlignedWidget.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/widgets/LeftAlignedWidget.kt @@ -88,6 +88,10 @@ class LeftAlignedWidget(val context: Context) { private fun updateGridView(bindingView: LeftAlignedWidgetBinding, views: RemoteViews, widgetID: Int): RemoteViews { val eventRepository = EventRepository(context) + val nextEvent = eventRepository.getNextEvent() + val eventsCount = eventRepository.getEventsCount() + eventRepository.close() + try { // Weather if (Preferences.showWeather && Preferences.weatherIcon != "") { @@ -131,7 +135,6 @@ class LeftAlignedWidget(val context: Context) { views.setOnClickPendingIntent(R.id.date_rect, calPIntent) views.setViewVisibility(R.id.first_line_rect, View.VISIBLE) - val nextEvent = eventRepository.getNextEvent() val nextAlarm = AlarmHelper.getNextAlarm(context) // Spacing @@ -149,7 +152,7 @@ class LeftAlignedWidget(val context: Context) { ) if (Preferences.showEvents && context.checkGrantedPermission(Manifest.permission.READ_CALENDAR) && nextEvent != null && !Preferences.showEventsAsGlanceProvider) { - if (Preferences.showNextEvent && eventRepository.getEventsCount() > 1) { + if (Preferences.showNextEvent && eventsCount > 1) { // Action next event views.setImageViewBitmap( @@ -381,8 +384,6 @@ class LeftAlignedWidget(val context: Context) { } catch (ex: Exception) { ex.printStackTrace() CrashlyticsReceiver.sendCrash(context, ex) - } finally { - eventRepository.close() } return views @@ -392,6 +393,10 @@ class LeftAlignedWidget(val context: Context) { // Generates the widget bitmap from the view fun generateWidgetView(typeface: Typeface? = null): LeftAlignedWidgetBinding { val eventRepository = EventRepository(context) + val nextEvent = eventRepository.getNextEvent() + val eventsCount = eventRepository.getEventsCount() + eventRepository.close() + val bindingView = LeftAlignedWidgetBinding.inflate(LayoutInflater.from(context)) bindingView.loader.isVisible = false @@ -440,13 +445,12 @@ class LeftAlignedWidget(val context: Context) { bindingView.date.text = DateHelper.getDateText(context, now) - val nextEvent = eventRepository.getNextEvent() val nextAlarm = AlarmHelper.getNextAlarm(context) if (Preferences.showEvents && context.checkGrantedPermission(Manifest.permission.READ_CALENDAR) && nextEvent != null && !Preferences.showEventsAsGlanceProvider) { // Multiple counter bindingView.actionNext.isVisible = - Preferences.showNextEvent && eventRepository.getEventsCount() > 1 + Preferences.showNextEvent && eventsCount > 1 bindingView.nextEvent.text = nextEvent.title @@ -883,8 +887,6 @@ class LeftAlignedWidget(val context: Context) { } } - eventRepository.close() - return bindingView } } \ No newline at end of file diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/widgets/StandardWidget.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/widgets/StandardWidget.kt index f4b2b79..19fa1f8 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/widgets/StandardWidget.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/widgets/StandardWidget.kt @@ -89,6 +89,10 @@ class StandardWidget(val context: Context) { private fun updateGridView(bindingView: TheWidgetBinding, views: RemoteViews, widgetID: Int): RemoteViews { val eventRepository = EventRepository(context) + val nextEvent = eventRepository.getNextEvent() + val eventsCount = eventRepository.getEventsCount() + eventRepository.close() + try { // Weather if (Preferences.showWeather && Preferences.weatherIcon != "") { @@ -138,7 +142,6 @@ class StandardWidget(val context: Context) { BitmapHelper.getBitmapFromView(bindingView.subLine, draw = false) ) - val nextEvent = eventRepository.getNextEvent() val nextAlarm = AlarmHelper.getNextAlarm(context) // Spacing @@ -156,7 +159,7 @@ class StandardWidget(val context: Context) { ) if (Preferences.showEvents && context.checkGrantedPermission(Manifest.permission.READ_CALENDAR) && nextEvent != null && !Preferences.showEventsAsGlanceProvider) { - if (Preferences.showNextEvent && eventRepository.getEventsCount() > 1) { + if (Preferences.showNextEvent && eventsCount > 1) { // Action next event views.setImageViewBitmap( @@ -402,8 +405,6 @@ class StandardWidget(val context: Context) { } catch (ex: Exception) { ex.printStackTrace() CrashlyticsReceiver.sendCrash(context, ex) - } finally { - eventRepository.close() } return views @@ -413,6 +414,10 @@ class StandardWidget(val context: Context) { // Generates the widget bitmap from the view fun generateWidgetView(typeface: Typeface? = null): TheWidgetBinding { val eventRepository = EventRepository(context) + val nextEvent = eventRepository.getNextEvent() + val eventsCount = eventRepository.getEventsCount() + eventRepository.close() + val bindingView = TheWidgetBinding.inflate(LayoutInflater.from(context)) bindingView.loader.isVisible = false @@ -462,15 +467,14 @@ class StandardWidget(val context: Context) { bindingView.date.text = DateHelper.getDateText(context, now) - val nextEvent = eventRepository.getNextEvent() val nextAlarm = AlarmHelper.getNextAlarm(context) if (Preferences.showEvents && context.checkGrantedPermission(Manifest.permission.READ_CALENDAR) && nextEvent != null && !Preferences.showEventsAsGlanceProvider) { // Multiple counter bindingView.actionNext.isVisible = - Preferences.showNextEvent && eventRepository.getEventsCount() > 1 + Preferences.showNextEvent && eventsCount > 1 bindingView.actionPrevious.isVisible = - Preferences.showNextEvent && eventRepository.getEventsCount() > 1 + Preferences.showNextEvent && eventsCount > 1 bindingView.nextEvent.text = nextEvent.title @@ -923,7 +927,6 @@ class StandardWidget(val context: Context) { } } - eventRepository.close() return bindingView } diff --git a/app/src/main/res/drawable-hdpi/round_more_time_white_18.png b/app/src/main/res/drawable-hdpi/round_more_time_white_18.png new file mode 100644 index 0000000..c03205e Binary files /dev/null and b/app/src/main/res/drawable-hdpi/round_more_time_white_18.png differ diff --git a/app/src/main/res/drawable-hdpi/round_more_time_white_20.png b/app/src/main/res/drawable-hdpi/round_more_time_white_20.png new file mode 100644 index 0000000..f4bc6aa Binary files /dev/null and b/app/src/main/res/drawable-hdpi/round_more_time_white_20.png differ diff --git a/app/src/main/res/drawable-hdpi/round_more_time_white_24.png b/app/src/main/res/drawable-hdpi/round_more_time_white_24.png new file mode 100644 index 0000000..8799b18 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/round_more_time_white_24.png differ diff --git a/app/src/main/res/drawable-hdpi/round_more_time_white_36.png b/app/src/main/res/drawable-hdpi/round_more_time_white_36.png new file mode 100644 index 0000000..b215ca3 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/round_more_time_white_36.png differ diff --git a/app/src/main/res/drawable-hdpi/round_more_time_white_48.png b/app/src/main/res/drawable-hdpi/round_more_time_white_48.png new file mode 100644 index 0000000..a66b5af Binary files /dev/null and b/app/src/main/res/drawable-hdpi/round_more_time_white_48.png differ diff --git a/app/src/main/res/drawable-mdpi/round_more_time_white_18.png b/app/src/main/res/drawable-mdpi/round_more_time_white_18.png new file mode 100644 index 0000000..0c4df40 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/round_more_time_white_18.png differ diff --git a/app/src/main/res/drawable-mdpi/round_more_time_white_20.png b/app/src/main/res/drawable-mdpi/round_more_time_white_20.png new file mode 100644 index 0000000..74d329e Binary files /dev/null and b/app/src/main/res/drawable-mdpi/round_more_time_white_20.png differ diff --git a/app/src/main/res/drawable-mdpi/round_more_time_white_24.png b/app/src/main/res/drawable-mdpi/round_more_time_white_24.png new file mode 100644 index 0000000..cc152e2 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/round_more_time_white_24.png differ diff --git a/app/src/main/res/drawable-mdpi/round_more_time_white_36.png b/app/src/main/res/drawable-mdpi/round_more_time_white_36.png new file mode 100644 index 0000000..8799b18 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/round_more_time_white_36.png differ diff --git a/app/src/main/res/drawable-mdpi/round_more_time_white_48.png b/app/src/main/res/drawable-mdpi/round_more_time_white_48.png new file mode 100644 index 0000000..374dda4 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/round_more_time_white_48.png differ diff --git a/app/src/main/res/drawable-night-hdpi/round_more_time_24.png b/app/src/main/res/drawable-night-hdpi/round_more_time_24.png new file mode 100644 index 0000000..43ad1d3 Binary files /dev/null and b/app/src/main/res/drawable-night-hdpi/round_more_time_24.png differ diff --git a/app/src/main/res/drawable-night-mdpi/round_more_time_24.png b/app/src/main/res/drawable-night-mdpi/round_more_time_24.png new file mode 100644 index 0000000..85b6c53 Binary files /dev/null and b/app/src/main/res/drawable-night-mdpi/round_more_time_24.png differ diff --git a/app/src/main/res/drawable-night-xhdpi/round_more_time_24.png b/app/src/main/res/drawable-night-xhdpi/round_more_time_24.png new file mode 100644 index 0000000..e98fae7 Binary files /dev/null and b/app/src/main/res/drawable-night-xhdpi/round_more_time_24.png differ diff --git a/app/src/main/res/drawable-night-xxhdpi/round_more_time_24.png b/app/src/main/res/drawable-night-xxhdpi/round_more_time_24.png new file mode 100644 index 0000000..b49401a Binary files /dev/null and b/app/src/main/res/drawable-night-xxhdpi/round_more_time_24.png differ diff --git a/app/src/main/res/drawable-night-xxxhdpi/round_more_time_24.png b/app/src/main/res/drawable-night-xxxhdpi/round_more_time_24.png new file mode 100644 index 0000000..d182e18 Binary files /dev/null and b/app/src/main/res/drawable-night-xxxhdpi/round_more_time_24.png differ diff --git a/app/src/main/res/drawable-xhdpi/round_more_time_white_18.png b/app/src/main/res/drawable-xhdpi/round_more_time_white_18.png new file mode 100644 index 0000000..8799b18 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/round_more_time_white_18.png differ diff --git a/app/src/main/res/drawable-xhdpi/round_more_time_white_20.png b/app/src/main/res/drawable-xhdpi/round_more_time_white_20.png new file mode 100644 index 0000000..5200969 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/round_more_time_white_20.png differ diff --git a/app/src/main/res/drawable-xhdpi/round_more_time_white_24.png b/app/src/main/res/drawable-xhdpi/round_more_time_white_24.png new file mode 100644 index 0000000..374dda4 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/round_more_time_white_24.png differ diff --git a/app/src/main/res/drawable-xhdpi/round_more_time_white_36.png b/app/src/main/res/drawable-xhdpi/round_more_time_white_36.png new file mode 100644 index 0000000..a66b5af Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/round_more_time_white_36.png differ diff --git a/app/src/main/res/drawable-xhdpi/round_more_time_white_48.png b/app/src/main/res/drawable-xhdpi/round_more_time_white_48.png new file mode 100644 index 0000000..b1bc990 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/round_more_time_white_48.png differ diff --git a/app/src/main/res/drawable-xxhdpi/round_more_time_white_18.png b/app/src/main/res/drawable-xxhdpi/round_more_time_white_18.png new file mode 100644 index 0000000..b215ca3 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/round_more_time_white_18.png differ diff --git a/app/src/main/res/drawable-xxhdpi/round_more_time_white_20.png b/app/src/main/res/drawable-xxhdpi/round_more_time_white_20.png new file mode 100644 index 0000000..552c9c5 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/round_more_time_white_20.png differ diff --git a/app/src/main/res/drawable-xxhdpi/round_more_time_white_24.png b/app/src/main/res/drawable-xxhdpi/round_more_time_white_24.png new file mode 100644 index 0000000..a66b5af Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/round_more_time_white_24.png differ diff --git a/app/src/main/res/drawable-xxhdpi/round_more_time_white_36.png b/app/src/main/res/drawable-xxhdpi/round_more_time_white_36.png new file mode 100644 index 0000000..f74d78a Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/round_more_time_white_36.png differ diff --git a/app/src/main/res/drawable-xxhdpi/round_more_time_white_48.png b/app/src/main/res/drawable-xxhdpi/round_more_time_white_48.png new file mode 100644 index 0000000..e20c973 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/round_more_time_white_48.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/round_more_time_white_18.png b/app/src/main/res/drawable-xxxhdpi/round_more_time_white_18.png new file mode 100644 index 0000000..a66b5af Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/round_more_time_white_18.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/round_more_time_white_20.png b/app/src/main/res/drawable-xxxhdpi/round_more_time_white_20.png new file mode 100644 index 0000000..7059750 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/round_more_time_white_20.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/round_more_time_white_24.png b/app/src/main/res/drawable-xxxhdpi/round_more_time_white_24.png new file mode 100644 index 0000000..b1bc990 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/round_more_time_white_24.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/round_more_time_white_36.png b/app/src/main/res/drawable-xxxhdpi/round_more_time_white_36.png new file mode 100644 index 0000000..e20c973 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/round_more_time_white_36.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/round_more_time_white_48.png b/app/src/main/res/drawable-xxxhdpi/round_more_time_white_48.png new file mode 100644 index 0000000..a9f4535 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/round_more_time_white_48.png differ diff --git a/app/src/main/res/drawable/round_more_time_20.xml b/app/src/main/res/drawable/round_more_time_20.xml new file mode 100644 index 0000000..b6aa086 --- /dev/null +++ b/app/src/main/res/drawable/round_more_time_20.xml @@ -0,0 +1,16 @@ + + + + + diff --git a/app/src/main/res/drawable/round_more_time_24.xml b/app/src/main/res/drawable/round_more_time_24.xml new file mode 100644 index 0000000..4250cae --- /dev/null +++ b/app/src/main/res/drawable/round_more_time_24.xml @@ -0,0 +1,16 @@ + + + + + diff --git a/app/src/main/res/layout/fragment_tab_clock.xml b/app/src/main/res/layout/fragment_tab_clock.xml index e29d2f0..4a7a1b8 100644 --- a/app/src/main/res/layout/fragment_tab_clock.xml +++ b/app/src/main/res/layout/fragment_tab_clock.xml @@ -163,7 +163,7 @@ android:layout_width="48dp" android:layout_height="48dp" android:padding="12dp" - android:src="@drawable/round_text_fields_24" + android:src="@drawable/round_more_time_24" app:tint="@color/colorPrimaryText"/> + android:layout_height="wrap_content" + android:id="@+id/content"> diff --git a/app/src/main/res/layout/the_widget_sans.xml b/app/src/main/res/layout/the_widget_sans.xml index 367dfd3..896c1c6 100644 --- a/app/src/main/res/layout/the_widget_sans.xml +++ b/app/src/main/res/layout/the_widget_sans.xml @@ -30,6 +30,7 @@ android:layout_height="wrap_content" android:gravity="center" android:format12Hour="h:mm" + android:includeFontPadding="false" android:padding="0dp" android:lines="1" android:maxLines="1" @@ -41,6 +42,7 @@ android:gravity="center" android:format12Hour="a" android:format24Hour="" + android:includeFontPadding="false" android:padding="0dp" android:lines="1" android:maxLines="1" @@ -66,6 +68,7 @@ android:padding="0dp" android:lines="1" android:maxLines="1" + android:includeFontPadding="false" style="@style/AnotherWidget.Widget.Title" android:gravity="center_vertical"/> + android:layout_height="wrap_content" + android:id="@+id/content">