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