Add widget row spacing preference

pull/996/head
Alex Baker 6 years ago
parent 605e43bede
commit 373c46dd3b

@ -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;
}

@ -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)
}

@ -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);

@ -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(

@ -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);
}

@ -22,6 +22,7 @@
<dimen name="elevation_refresh_indicator">3dp</dimen>
<dimen name="elevation_padding">0dp</dimen>
<dimen name="widget_padding_compact">6dp</dimen>
<dimen name="widget_padding">12dp</dimen>
<dimen name="week_button_inset">6dp</dimen>
<dimen name="week_button_state_on_circle_size">48dp</dimen>

@ -110,6 +110,18 @@
<item>3</item>
</string-array>
<string-array name="widget_spacing_titles">
<item>@string/settings_default</item>
<item>@string/compact</item>
<item>@string/none</item>
</string-array>
<string-array name="widget_spacing_values">
<item>0</item>
<item>1</item>
<item>2</item>
</string-array>
<string-array name="EPr_default_urgency_values">
<!-- urgency: labels that map EPr_default_urgency items to index in TEA_urgency. -->
<item>0</item>
@ -261,6 +273,7 @@
<string name="p_widget_show_header">widget-show-header-</string>
<string name="p_widget_show_settings">widget-show-settings-</string>
<string name="p_widget_show_menu">widget-show-menu-</string>
<string name="p_widget_spacing">widget-spacing-</string>
<string name="p_dashclock_filter">dashclock_filter</string>
<string name="p_default_remote_list">default_remote_list</string>

@ -583,4 +583,6 @@ File %1$s contained %2$s.\n\n
<string name="share">Share</string>
<string name="hide_check_button">Hide check button</string>
<string name="widget_id">Widget ID: %s</string>
<string name="settings_default">Default</string>
<string name="compact">Compact</string>
</resources>

@ -57,6 +57,14 @@
android:key="@string/p_widget_show_checkboxes"
android:title="@string/widget_show_checkboxes" />
<ListPreference
android:defaultValue="0"
android:key="@string/p_widget_spacing"
android:entries="@array/widget_spacing_titles"
android:entryValues="@array/widget_spacing_values"
android:title="@string/row_spacing"
android:summary="%s" />
</PreferenceCategory>
</PreferenceScreen>
Loading…
Cancel
Save