From 373c46dd3b2f123ea724ba2b8a5d96f03ca7be85 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Mon, 13 Apr 2020 16:01:55 -0500 Subject: [PATCH] Add widget row spacing preference --- .../java/org/tasks/preferences/Preferences.java | 7 +++++-- .../preferences/fragments/ScrollableWidget.kt | 10 ++++++++++ .../org/tasks/widget/ScrollableViewsFactory.java | 14 ++++++++------ .../main/java/org/tasks/widget/TasksWidget.java | 1 + .../java/org/tasks/widget/WidgetPreferences.java | 9 +++++++++ app/src/main/res/values/dimens.xml | 1 + app/src/main/res/values/keys.xml | 13 +++++++++++++ app/src/main/res/values/strings.xml | 2 ++ app/src/main/res/xml/preferences_widget.xml | 8 ++++++++ 9 files changed, 57 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/org/tasks/preferences/Preferences.java b/app/src/main/java/org/tasks/preferences/Preferences.java index 218e19bcc..ac6bd7975 100644 --- a/app/src/main/java/org/tasks/preferences/Preferences.java +++ b/app/src/main/java/org/tasks/preferences/Preferences.java @@ -247,8 +247,11 @@ public class Preferences { } public int getIntegerFromString(int keyResource, int defaultValue) { - Resources r = context.getResources(); - String value = prefs.getString(r.getString(keyResource), null); + return getIntegerFromString(context.getString(keyResource), defaultValue); + } + + public int getIntegerFromString(String keyResource, int defaultValue) { + String value = prefs.getString(keyResource, null); if (value == null) { return defaultValue; } 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 36fafc8d2..b3ea7ee84 100644 --- a/app/src/main/java/org/tasks/preferences/fragments/ScrollableWidget.kt +++ b/app/src/main/java/org/tasks/preferences/fragments/ScrollableWidget.kt @@ -4,6 +4,7 @@ import android.app.Activity import android.appwidget.AppWidgetManager import android.content.Intent import android.os.Bundle +import androidx.preference.ListPreference import androidx.preference.Preference import androidx.preference.SeekBarPreference import androidx.preference.SwitchPreferenceCompat @@ -63,6 +64,7 @@ class ScrollableWidget : InjectingPreferenceFragment() { setupSlider(R.string.p_widget_font_size, 16) setupCheckbox(R.string.p_widget_show_due_date) setupCheckbox(R.string.p_widget_show_checkboxes) + setupList(R.string.p_widget_spacing) val showHeader = setupCheckbox(R.string.p_widget_show_header) val showSettings = setupCheckbox(R.string.p_widget_show_settings) showSettings.dependency = showHeader.key @@ -167,5 +169,13 @@ class ScrollableWidget : InjectingPreferenceFragment() { return preference } + private fun setupList(resId: Int): ListPreference { + val preference = findPreference(resId) as ListPreference + val key = getString(resId) + appWidgetId + preference.key = key + preference.value = preferences.getStringValue(key) ?: "0" + return preference + } + override fun inject(component: FragmentComponent) = component.inject(this) } \ No newline at end of file diff --git a/app/src/main/java/org/tasks/widget/ScrollableViewsFactory.java b/app/src/main/java/org/tasks/widget/ScrollableViewsFactory.java index cab339308..4ea6f2543 100644 --- a/app/src/main/java/org/tasks/widget/ScrollableViewsFactory.java +++ b/app/src/main/java/org/tasks/widget/ScrollableViewsFactory.java @@ -169,19 +169,21 @@ class ScrollableViewsFactory implements RemoteViewsService.RemoteViewsFactory { editIntent.putExtra(WidgetClickActivity.EXTRA_TASK, task); row.setOnClickFillInIntent(R.id.widget_row, editIntent); - int widgetPadding = (int) context.getResources().getDimension(R.dimen.widget_padding); - int textBottomPadding = showDueDates && task.hasDueDate() ? 0 : widgetPadding; + int horizontalPadding = (int) context.getResources().getDimension(R.dimen.widget_padding); + int verticalPadding = widgetPreferences.getWidgetSpacing(); + int textBottomPadding = showDueDates && task.hasDueDate() ? 0 : verticalPadding; + row.setViewPadding(R.id.widget_complete_box, horizontalPadding, verticalPadding, horizontalPadding, verticalPadding); 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, textBottomPadding); - row.setViewPadding(R.id.widget_due_date, 0, 0, widgetPadding, widgetPadding); + row.setViewPadding(R.id.widget_text, 0, verticalPadding, horizontalPadding, textBottomPadding); + row.setViewPadding(R.id.widget_due_date, 0, 0, horizontalPadding, verticalPadding); } else { row.setViewVisibility(R.id.widget_complete_box, View.GONE); - row.setViewPadding(R.id.widget_text, widgetPadding, widgetPadding, widgetPadding, textBottomPadding); - row.setViewPadding(R.id.widget_due_date, widgetPadding, 0, widgetPadding, widgetPadding); + row.setViewPadding(R.id.widget_text, horizontalPadding, verticalPadding, horizontalPadding, textBottomPadding); + row.setViewPadding(R.id.widget_due_date, horizontalPadding, 0, horizontalPadding, verticalPadding); } int dividerColor = ContextCompat.getColor(context, widgetPreferences.getThemeIndex() == 0 ? R.color.black_12 : R.color.white_12); diff --git a/app/src/main/java/org/tasks/widget/TasksWidget.java b/app/src/main/java/org/tasks/widget/TasksWidget.java index 0249f2563..c93c63d1c 100644 --- a/app/src/main/java/org/tasks/widget/TasksWidget.java +++ b/app/src/main/java/org/tasks/widget/TasksWidget.java @@ -76,6 +76,7 @@ public class TasksWidget extends InjectingAppWidgetProvider { ThemeColor color = new ThemeColor(context, widgetPreferences.getColor()); RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.scrollable_widget); remoteViews.setInt(R.id.widget, "setLayoutDirection", locale.getDirectionality()); + int rowSpacing = widgetPreferences.getWidgetSpacing(); if (widgetPreferences.showHeader()) { remoteViews.setViewVisibility(R.id.widget_header, View.VISIBLE); remoteViews.setViewVisibility( diff --git a/app/src/main/java/org/tasks/widget/WidgetPreferences.java b/app/src/main/java/org/tasks/widget/WidgetPreferences.java index 1cb9ed22f..3d7e1a4e3 100644 --- a/app/src/main/java/org/tasks/widget/WidgetPreferences.java +++ b/app/src/main/java/org/tasks/widget/WidgetPreferences.java @@ -38,6 +38,15 @@ public class WidgetPreferences { return preferences.getBoolean(getKey(R.string.p_widget_show_menu), true); } + int getWidgetSpacing() { + int spacing = preferences.getIntegerFromString(getKey(R.string.p_widget_spacing), 0); + if (spacing == 2) { + return 0; + } + int dimen = spacing == 1 ? R.dimen.widget_padding_compact : R.dimen.widget_padding; + return (int) context.getResources().getDimension(dimen); + } + int getFontSize() { return preferences.getInt(getKey(R.string.p_widget_font_size), 16); } diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 0f6056b98..a42ceba9b 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -22,6 +22,7 @@ 3dp 0dp + 6dp 12dp 6dp 48dp diff --git a/app/src/main/res/values/keys.xml b/app/src/main/res/values/keys.xml index 66c9c9fea..174b3b701 100644 --- a/app/src/main/res/values/keys.xml +++ b/app/src/main/res/values/keys.xml @@ -110,6 +110,18 @@ 3 + + @string/settings_default + @string/compact + @string/none + + + + 0 + 1 + 2 + + 0 @@ -261,6 +273,7 @@ widget-show-header- widget-show-settings- widget-show-menu- + 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 a8d278d1d..081884c4f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -583,4 +583,6 @@ File %1$s contained %2$s.\n\n Share Hide check button Widget ID: %s + Default + Compact diff --git a/app/src/main/res/xml/preferences_widget.xml b/app/src/main/res/xml/preferences_widget.xml index ab0dfae1d..137a208ec 100644 --- a/app/src/main/res/xml/preferences_widget.xml +++ b/app/src/main/res/xml/preferences_widget.xml @@ -57,6 +57,14 @@ android:key="@string/p_widget_show_checkboxes" android:title="@string/widget_show_checkboxes" /> + + \ No newline at end of file