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 b3ea7ee84..e9ea4df21 100644 --- a/app/src/main/java/org/tasks/preferences/fragments/ScrollableWidget.kt +++ b/app/src/main/java/org/tasks/preferences/fragments/ScrollableWidget.kt @@ -64,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) + setupCheckbox(R.string.p_widget_due_date_underneath) setupList(R.string.p_widget_spacing) val showHeader = setupCheckbox(R.string.p_widget_show_header) val showSettings = setupCheckbox(R.string.p_widget_show_settings) diff --git a/app/src/main/java/org/tasks/widget/ScrollableViewsFactory.java b/app/src/main/java/org/tasks/widget/ScrollableViewsFactory.java index 4ea6f2543..f7d01c0ba 100644 --- a/app/src/main/java/org/tasks/widget/ScrollableViewsFactory.java +++ b/app/src/main/java/org/tasks/widget/ScrollableViewsFactory.java @@ -154,7 +154,7 @@ class ScrollableViewsFactory implements RemoteViewsService.RemoteViewsFactory { if (showDueDates) { formatDueDate(row, task); } else { - row.setViewVisibility(R.id.widget_due_date, View.GONE); + row.setViewVisibility(R.id.widget_due_bottom, View.GONE); if (task.hasDueDate() && task.isOverdue()) { textColorTitle = getColor(context, R.color.overdue); } @@ -179,11 +179,11 @@ class ScrollableViewsFactory implements RemoteViewsService.RemoteViewsFactory { completeIntent.putExtra(WidgetClickActivity.EXTRA_TASK, task); row.setOnClickFillInIntent(R.id.widget_complete_box, completeIntent); row.setViewPadding(R.id.widget_text, 0, verticalPadding, horizontalPadding, textBottomPadding); - row.setViewPadding(R.id.widget_due_date, 0, 0, horizontalPadding, verticalPadding); + row.setViewPadding(R.id.widget_due_bottom, 0, 0, horizontalPadding, verticalPadding); } else { row.setViewVisibility(R.id.widget_complete_box, View.GONE); row.setViewPadding(R.id.widget_text, horizontalPadding, verticalPadding, horizontalPadding, textBottomPadding); - row.setViewPadding(R.id.widget_due_date, horizontalPadding, 0, horizontalPadding, verticalPadding); + row.setViewPadding(R.id.widget_due_bottom, horizontalPadding, 0, horizontalPadding, verticalPadding); } int dividerColor = ContextCompat.getColor(context, widgetPreferences.getThemeIndex() == 0 ? R.color.black_12 : R.color.white_12); @@ -233,19 +233,21 @@ class ScrollableViewsFactory implements RemoteViewsService.RemoteViewsFactory { } private void formatDueDate(RemoteViews row, Task task) { + boolean bottomDueDate = widgetPreferences.dueDateBelowTitle(); + int dueDateRes = bottomDueDate ? R.id.widget_due_bottom : R.id.widget_due_end; + row.setViewVisibility(bottomDueDate ? R.id.widget_due_end : R.id.widget_due_bottom, View.GONE); if (task.hasDueDate()) { - row.setViewVisibility(R.id.widget_due_date, View.VISIBLE); + row.setViewVisibility(dueDateRes, View.VISIBLE); row.setTextViewText( - R.id.widget_due_date, + dueDateRes, DateUtilities.getRelativeDateTime( context, task.getDueDate(), locale.getLocale(), FormatStyle.MEDIUM)); - //noinspection ResourceAsColor row.setTextColor( - R.id.widget_due_date, + dueDateRes, task.isOverdue() ? getColor(context, R.color.overdue) : textColorSecondary); - row.setFloat(R.id.widget_due_date, "setTextSize", dueDateTextSize); + row.setFloat(dueDateRes, "setTextSize", dueDateTextSize); } else { - row.setViewVisibility(R.id.widget_due_date, View.GONE); + row.setViewVisibility(dueDateRes, View.GONE); } } diff --git a/app/src/main/java/org/tasks/widget/WidgetPreferences.java b/app/src/main/java/org/tasks/widget/WidgetPreferences.java index 3d7e1a4e3..f2fe878af 100644 --- a/app/src/main/java/org/tasks/widget/WidgetPreferences.java +++ b/app/src/main/java/org/tasks/widget/WidgetPreferences.java @@ -38,6 +38,10 @@ public class WidgetPreferences { return preferences.getBoolean(getKey(R.string.p_widget_show_menu), true); } + boolean dueDateBelowTitle() { + return preferences.getBoolean(getKey(R.string.p_widget_due_date_underneath), false); + } + int getWidgetSpacing() { int spacing = preferences.getIntegerFromString(getKey(R.string.p_widget_spacing), 0); if (spacing == 2) { diff --git a/app/src/main/res/layout/widget_row.xml b/app/src/main/res/layout/widget_row.xml index a9aa8d95a..da3f08ae8 100644 --- a/app/src/main/res/layout/widget_row.xml +++ b/app/src/main/res/layout/widget_row.xml @@ -18,10 +18,26 @@ android:padding="@dimen/widget_padding" tools:src="@drawable/ic_outline_check_box_outline_blank_24px"/> + + widget-show-header- widget-show-settings- widget-show-menu- + widget-due-date-underneath- 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 081884c4f..15dc9ef95 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -304,6 +304,7 @@ File %1$s contained %2$s.\n\n Background sync Show due dates Show checkboxes + Due date below title Show header Show settings Show menu diff --git a/app/src/main/res/xml/preferences_widget.xml b/app/src/main/res/xml/preferences_widget.xml index 137a208ec..dcb3887e0 100644 --- a/app/src/main/res/xml/preferences_widget.xml +++ b/app/src/main/res/xml/preferences_widget.xml @@ -65,6 +65,11 @@ android:title="@string/row_spacing" android:summary="%s" /> + + \ No newline at end of file