From 605e43bede9be0fe02334f47fe242dac805e24cf Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Mon, 13 Apr 2020 16:01:11 -0500 Subject: [PATCH] Add widget row dividers --- .../tasks/widget/ScrollableViewsFactory.java | 20 +++++++++++++++---- app/src/main/res/layout/widget_row.xml | 7 +++++++ 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/tasks/widget/ScrollableViewsFactory.java b/app/src/main/java/org/tasks/widget/ScrollableViewsFactory.java index b35662726..cab339308 100644 --- a/app/src/main/java/org/tasks/widget/ScrollableViewsFactory.java +++ b/app/src/main/java/org/tasks/widget/ScrollableViewsFactory.java @@ -6,11 +6,13 @@ import android.appwidget.AppWidgetManager; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; +import android.graphics.Canvas; import android.graphics.Paint; import android.util.DisplayMetrics; import android.view.View; import android.widget.RemoteViews; import android.widget.RemoteViewsService; +import androidx.annotation.ColorInt; import androidx.core.content.ContextCompat; import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.astrid.api.Filter; @@ -168,19 +170,23 @@ class ScrollableViewsFactory implements RemoteViewsService.RemoteViewsFactory { row.setOnClickFillInIntent(R.id.widget_row, editIntent); int widgetPadding = (int) context.getResources().getDimension(R.dimen.widget_padding); + int textBottomPadding = showDueDates && task.hasDueDate() ? 0 : widgetPadding; if (showCheckboxes) { row.setViewVisibility(R.id.widget_complete_box, View.VISIBLE); Intent completeIntent = new Intent(WidgetClickActivity.COMPLETE_TASK); completeIntent.putExtra(WidgetClickActivity.EXTRA_TASK, task); row.setOnClickFillInIntent(R.id.widget_complete_box, completeIntent); - row.setViewPadding(R.id.widget_text, 0, widgetPadding, widgetPadding, 0); - row.setViewPadding(R.id.widget_due_date, 0, 0, 0, 0); + row.setViewPadding(R.id.widget_text, 0, widgetPadding, widgetPadding, textBottomPadding); + row.setViewPadding(R.id.widget_due_date, 0, 0, widgetPadding, widgetPadding); } else { row.setViewVisibility(R.id.widget_complete_box, View.GONE); - row.setViewPadding(R.id.widget_text, widgetPadding, widgetPadding, widgetPadding, 0); - row.setViewPadding(R.id.widget_due_date, widgetPadding, 0, widgetPadding, 0); + row.setViewPadding(R.id.widget_text, widgetPadding, widgetPadding, widgetPadding, textBottomPadding); + row.setViewPadding(R.id.widget_due_date, widgetPadding, 0, widgetPadding, widgetPadding); } + int dividerColor = ContextCompat.getColor(context, widgetPreferences.getThemeIndex() == 0 ? R.color.black_12 : R.color.white_12); + row.setImageViewBitmap(R.id.divider, getSolidBackground(dividerColor)); + row.setInt( R.id.widget_row, "setLayoutDirection", Locale.getInstance(context).getDirectionality()); @@ -199,6 +205,12 @@ class ScrollableViewsFactory implements RemoteViewsService.RemoteViewsFactory { return null; } + private static Bitmap getSolidBackground(@ColorInt int bgColor) { + Bitmap bitmap = Bitmap.createBitmap(2, 2, Bitmap.Config.ARGB_8888); // Create a Bitmap + new Canvas(bitmap).drawColor(bgColor); // Set the color + return bitmap; + } + private TaskContainer getTask(int position) { return position < tasks.size() ? tasks.get(position) : null; } diff --git a/app/src/main/res/layout/widget_row.xml b/app/src/main/res/layout/widget_row.xml index 7baefc8b4..a9aa8d95a 100644 --- a/app/src/main/res/layout/widget_row.xml +++ b/app/src/main/res/layout/widget_row.xml @@ -46,4 +46,11 @@ android:textSize="14sp" tools:text="Tomorrow"/> + + \ No newline at end of file