Display widget due date next to or below title

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

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

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

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

@ -18,10 +18,26 @@
android:padding="@dimen/widget_padding"
tools:src="@drawable/ic_outline_check_box_outline_blank_24px"/>
<TextView
android:id="@+id/widget_due_end"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@id/widget_text"
android:layout_alignParentEnd="true"
android:paddingStart="0dp"
android:paddingEnd="@dimen/widget_padding"
android:ellipsize="end"
android:gravity="start|center_vertical"
android:singleLine="true"
android:textAlignment="viewStart"
android:textSize="14sp"
tools:text="Tomorrow"/>
<TextView
android:layout_toEndOf="@id/widget_complete_box"
android:layout_toStartOf="@id/widget_due_end"
android:id="@+id/widget_text"
android:layout_width="wrap_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignBaseline="@id/widget_complete_box"
android:paddingTop="@dimen/widget_padding"
@ -34,7 +50,7 @@
tools:text="Task title"/>
<TextView
android:id="@+id/widget_due_date"
android:id="@+id/widget_due_bottom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/widget_text"

@ -273,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_due_date_underneath">widget-due-date-underneath-</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>

@ -304,6 +304,7 @@ File %1$s contained %2$s.\n\n
<string name="sync_SPr_interval_title">Background sync</string>
<string name="widget_show_due_date">Show due dates</string>
<string name="widget_show_checkboxes">Show checkboxes</string>
<string name="widget_due_date_underneath">Due date below title</string>
<string name="widget_show_header">Show header</string>
<string name="widget_show_settings">Show settings</string>
<string name="widget_show_menu">Show menu</string>

@ -65,6 +65,11 @@
android:title="@string/row_spacing"
android:summary="%s" />
<SwitchPreferenceCompat
android:defaultValue="false"
android:key="@string/p_widget_due_date_underneath"
android:title="@string/widget_due_date_underneath" />
</PreferenceCategory>
</PreferenceScreen>
Loading…
Cancel
Save