diff --git a/app/src/main/java/org/tasks/preferences/fragments/ScrollableWidget.kt b/app/src/main/java/org/tasks/preferences/fragments/ScrollableWidget.kt
index e48a24d18..e66fe4e13 100644
--- a/app/src/main/java/org/tasks/preferences/fragments/ScrollableWidget.kt
+++ b/app/src/main/java/org/tasks/preferences/fragments/ScrollableWidget.kt
@@ -22,7 +22,6 @@ import org.tasks.injection.InjectingPreferenceFragment
import org.tasks.locale.Locale
import org.tasks.preferences.DefaultFilterProvider
import org.tasks.preferences.Preferences
-import org.tasks.widget.TasksWidget
import org.tasks.widget.WidgetPreferences
import javax.inject.Inject
@@ -60,7 +59,9 @@ class ScrollableWidget : InjectingPreferenceFragment() {
appWidgetId = arguments!!.getInt(EXTRA_WIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID)
widgetPreferences = WidgetPreferences(context, preferences, appWidgetId)
+ setupSlider(R.string.p_widget_header_opacity, 100)
setupSlider(R.string.p_widget_opacity, 100)
+ setupSlider(R.string.p_widget_empty_space_opacity, 100)
setupSlider(R.string.p_widget_font_size, 16)
val showDueDate = setupCheckbox(R.string.p_widget_show_due_date)
setupCheckbox(R.string.p_widget_due_date_underneath, false).dependency = showDueDate.key
diff --git a/app/src/main/java/org/tasks/widget/TasksWidget.java b/app/src/main/java/org/tasks/widget/TasksWidget.java
index 0249f2563..832c5b714 100644
--- a/app/src/main/java/org/tasks/widget/TasksWidget.java
+++ b/app/src/main/java/org/tasks/widget/TasksWidget.java
@@ -9,13 +9,12 @@ import android.appwidget.AppWidgetManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
-import android.graphics.Bitmap;
-import android.graphics.Canvas;
import android.net.Uri;
import android.view.View;
import android.widget.RemoteViews;
import androidx.annotation.ColorInt;
import androidx.core.content.ContextCompat;
+import androidx.core.graphics.ColorUtils;
import com.todoroo.astrid.activity.MainActivity;
import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.dao.TaskDao;
@@ -41,12 +40,6 @@ public class TasksWidget extends InjectingAppWidgetProvider {
@Inject TaskDao taskDao;
@Inject @ForApplication Context context;
- 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;
- }
-
@Override
protected void inject(BroadcastComponent component) {
component.inject(this);
@@ -94,20 +87,24 @@ public class TasksWidget extends InjectingAppWidgetProvider {
} else {
remoteViews.setViewVisibility(R.id.widget_header, View.GONE);
}
- int opacityPercentage = widgetPreferences.getOpacity();
- int opacity = (int) ((opacityPercentage / 100.0) * 255.0);
- remoteViews.setImageViewBitmap(
- R.id.widget_background,
- getSolidBackground(getBackgroundColor(widgetPreferences.getThemeIndex())));
- remoteViews.setImageViewBitmap(
- R.id.widget_header_background, getSolidBackground(color.getPrimaryColor()));
- remoteViews.setInt(R.id.widget_background, "setAlpha", opacity);
- remoteViews.setInt(R.id.widget_header_background, "setAlpha", opacity);
+
+ remoteViews.setInt(
+ R.id.widget_header,
+ "setBackgroundColor",
+ ColorUtils.setAlphaComponent(color.getPrimaryColor(), widgetPreferences.getHeaderOpacity()));
+ int bgColor = getBackgroundColor(widgetPreferences.getThemeIndex());
+ remoteViews.setInt(
+ R.id.list_view,
+ "setBackgroundColor",
+ ColorUtils.setAlphaComponent(bgColor, widgetPreferences.getRowOpacity()));
+ remoteViews.setInt(
+ R.id.empty_view,
+ "setBackgroundColor",
+ ColorUtils.setAlphaComponent(bgColor, widgetPreferences.getEmptySpaceOpacity()));
Filter filter = defaultFilterProvider.getFilterFromPreference(filterId);
remoteViews.setTextViewText(R.id.widget_title, filter.listingTitle);
remoteViews.setRemoteAdapter(R.id.list_view, rvIntent);
- remoteViews.setEmptyView(R.id.list_view, R.id.empty_view);
remoteViews.setOnClickPendingIntent(R.id.widget_title, getOpenListIntent(context, filter, id));
remoteViews.setOnClickPendingIntent(R.id.widget_button, getNewTaskIntent(context, filter, id));
remoteViews.setOnClickPendingIntent(R.id.widget_change_list, getChooseListIntent(context, filter, id));
diff --git a/app/src/main/java/org/tasks/widget/WidgetPreferences.java b/app/src/main/java/org/tasks/widget/WidgetPreferences.java
index cb9bc7c68..d080f8e50 100644
--- a/app/src/main/java/org/tasks/widget/WidgetPreferences.java
+++ b/app/src/main/java/org/tasks/widget/WidgetPreferences.java
@@ -86,8 +86,20 @@ public class WidgetPreferences {
return color;
}
- public int getOpacity() {
- return preferences.getInt(getKey(R.string.p_widget_opacity), 100);
+ int getHeaderOpacity() {
+ return getAlphaValue(R.string.p_widget_header_opacity);
+ }
+
+ int getRowOpacity() {
+ return getAlphaValue(R.string.p_widget_opacity);
+ }
+
+ int getEmptySpaceOpacity() {
+ return getAlphaValue(R.string.p_widget_empty_space_opacity);
+ }
+
+ private int getAlphaValue(int resId) {
+ return (int) ((preferences.getInt(getKey(resId), 100) / 100.0) * 255.0);
}
public void setColor(int color) {
diff --git a/app/src/main/res/layout/scrollable_widget.xml b/app/src/main/res/layout/scrollable_widget.xml
index 2846e120f..7cb831f9b 100644
--- a/app/src/main/res/layout/scrollable_widget.xml
+++ b/app/src/main/res/layout/scrollable_widget.xml
@@ -11,13 +11,6 @@
android:layout_height="48dp"
android:orientation="horizontal">
-
-
-
-
diff --git a/app/src/main/res/values/keys.xml b/app/src/main/res/values/keys.xml
index b581e208f..356795d37 100644
--- a/app/src/main/res/values/keys.xml
+++ b/app/src/main/res/values/keys.xml
@@ -277,6 +277,8 @@
widget-show-settings-
widget-show-menu-
widget-due-date-underneath-
+ widget-header-opacity-
+ widget-empty-space-opacity-
widget-spacing-
dashclock_filter
default_remote_list
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index ee6c222cd..6c6f155d8 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -305,6 +305,7 @@ File %1$s contained %2$s.\n\n
Show due dates
Show checkboxes
Due date below title
+ Hide background
Show header
Show settings
Show menu
@@ -411,6 +412,7 @@ File %1$s contained %2$s.\n\n
Widget settings
Header settings
Row settings
+ Empty space
Clear completed tasks?
%s copied
%s deleted
diff --git a/app/src/main/res/xml/preferences_widget.xml b/app/src/main/res/xml/preferences_widget.xml
index 8b892f514..c6ce44f06 100644
--- a/app/src/main/res/xml/preferences_widget.xml
+++ b/app/src/main/res/xml/preferences_widget.xml
@@ -10,15 +10,6 @@
android:key="@string/p_widget_theme"
android:title="@string/theme" />
-
-
+
+
@@ -41,6 +41,15 @@
+
+
+
+
+
+
+
+
\ No newline at end of file