Skip to content

Commit

Permalink
#7 "Widget header date format" replaces "Show date on widget header"
Browse files Browse the repository at this point in the history
  • Loading branch information
yvolk committed Feb 15, 2020
1 parent c755aa0 commit 8f10274
Show file tree
Hide file tree
Showing 8 changed files with 51 additions and 42 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,10 @@
import org.andstatus.todoagenda.prefs.TextShadingPref;
import org.andstatus.todoagenda.provider.EventProviderType;
import org.andstatus.todoagenda.util.CalendarIntentUtil;
import org.andstatus.todoagenda.util.DateUtil;
import org.andstatus.todoagenda.util.InstanceId;
import org.andstatus.todoagenda.util.MyClock;
import org.andstatus.todoagenda.util.PermissionsUtil;
import org.andstatus.todoagenda.util.StringUtil;
import org.andstatus.todoagenda.widget.DayHeader;
import org.andstatus.todoagenda.widget.DayHeaderVisualizer;
import org.andstatus.todoagenda.widget.LastEntry;
Expand Down Expand Up @@ -325,10 +325,10 @@ private static void configureWidgetHeader(InstanceSettings settings, Context con
private static void configureCurrentDate(InstanceSettings settings, RemoteViews rv) {
int viewId = R.id.calendar_current_date;
rv.setOnClickPendingIntent(viewId, createOpenCalendarPendingIntent(settings));
String formattedDate = settings.getShowDateOnWidgetHeader()
? DateUtil.createDateString(settings, settings.clock().now()).toUpperCase(Locale.getDefault())
: " ";
rv.setTextViewText(viewId, formattedDate);
String formattedDate = settings.widgetHeaderDateFormatter()
.formatDate(settings.clock().now()).toString()
.toUpperCase(Locale.getDefault());
rv.setTextViewText(viewId, StringUtil.isEmpty(formattedDate) ? " " : formattedDate);
setTextSize(settings, rv, viewId, R.dimen.widget_header_title);
setTextColorFromAttr(settings.getShadingContext(TextShadingPref.WIDGET_HEADER), rv, viewId, R.attr.header);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,15 +44,13 @@
import static org.andstatus.todoagenda.prefs.InstanceSettings.PREF_PAST_EVENTS_BACKGROUND_COLOR_DEFAULT;
import static org.andstatus.todoagenda.prefs.InstanceSettings.PREF_REFRESH_PERIOD_MINUTES;
import static org.andstatus.todoagenda.prefs.InstanceSettings.PREF_REFRESH_PERIOD_MINUTES_DEFAULT;
import static org.andstatus.todoagenda.prefs.InstanceSettings.PREF_SHOW_DATE_ON_WIDGET_HEADER;
import static org.andstatus.todoagenda.prefs.InstanceSettings.PREF_SHOW_DAYS_WITHOUT_EVENTS;
import static org.andstatus.todoagenda.prefs.InstanceSettings.PREF_SHOW_DAY_HEADERS;
import static org.andstatus.todoagenda.prefs.InstanceSettings.PREF_SHOW_END_TIME;
import static org.andstatus.todoagenda.prefs.InstanceSettings.PREF_SHOW_END_TIME_DEFAULT;
import static org.andstatus.todoagenda.prefs.InstanceSettings.PREF_SHOW_EVENT_ICON;
import static org.andstatus.todoagenda.prefs.InstanceSettings.PREF_SHOW_LOCATION;
import static org.andstatus.todoagenda.prefs.InstanceSettings.PREF_SHOW_LOCATION_DEFAULT;
import static org.andstatus.todoagenda.prefs.InstanceSettings.PREF_SHOW_NUMBER_OF_DAYS_TO_EVENT;
import static org.andstatus.todoagenda.prefs.InstanceSettings.PREF_SHOW_ONLY_CLOSEST_INSTANCE_OF_RECURRING_EVENT;
import static org.andstatus.todoagenda.prefs.InstanceSettings.PREF_SHOW_PAST_EVENTS_UNDER_ONE_HEADER;
import static org.andstatus.todoagenda.prefs.InstanceSettings.PREF_SHOW_PAST_EVENTS_WITH_DEFAULT_COLOR;
Expand All @@ -66,6 +64,8 @@
import static org.andstatus.todoagenda.prefs.InstanceSettings.PREF_TODAYS_EVENTS_BACKGROUND_COLOR_DEFAULT;
import static org.andstatus.todoagenda.prefs.InstanceSettings.PREF_WIDGET_HEADER_BACKGROUND_COLOR;
import static org.andstatus.todoagenda.prefs.InstanceSettings.PREF_WIDGET_HEADER_BACKGROUND_COLOR_DEFAULT;
import static org.andstatus.todoagenda.prefs.InstanceSettings.PREF_WIDGET_HEADER_DATE_FORMAT;
import static org.andstatus.todoagenda.prefs.InstanceSettings.PREF_WIDGET_HEADER_DATE_FORMAT_DEFAULT;
import static org.andstatus.todoagenda.prefs.InstanceSettings.PREF_WIDGET_HEADER_LAYOUT;
import static org.andstatus.todoagenda.prefs.InstanceSettings.PREF_WIDGET_ID;
import static org.andstatus.todoagenda.prefs.InstanceSettings.PREF_WIDGET_INSTANCE_NAME;
Expand All @@ -81,7 +81,7 @@ public static void fromInstanceSettings(Context context, Integer widgetId) {
synchronized (ApplicationPreferences.class) {
InstanceSettings settings = AllSettings.instanceFromId(context, widgetId);
setWidgetId(context, widgetId == 0 ? settings.getWidgetId() : widgetId);
setBoolean(context, PREF_SHOW_DATE_ON_WIDGET_HEADER, settings.getShowDateOnWidgetHeader());
setDateFormat(context, PREF_WIDGET_HEADER_DATE_FORMAT, settings.getWidgetHeaderDateFormat());
setString(context, PREF_WIDGET_INSTANCE_NAME, settings.getWidgetInstanceName());
setActiveEventSources(context, settings.getActiveEventSources());
setEventRange(context, settings.getEventRange());
Expand All @@ -98,7 +98,7 @@ public static void fromInstanceSettings(Context context, Integer widgetId) {
setShowPastEventsUnderOneHeader(context, settings.getShowPastEventsUnderOneHeader());
setShowPastEventsWithDefaultColor(context, settings.getShowPastEventsWithDefaultColor());
setShowEventIcon(context, settings.getShowEventIcon());
setEntryDateFormat(context, settings.getEntryDateFormat());
setDateFormat(context, PREF_ENTRY_DATE_FORMAT, settings.getEntryDateFormat());
setBoolean(context, PREF_SHOW_END_TIME, settings.getShowEndTime());
setBoolean(context, PREF_SHOW_LOCATION, settings.getShowLocation());
setString(context, PREF_TIME_FORMAT, settings.getTimeFormat());
Expand Down Expand Up @@ -266,12 +266,16 @@ public static boolean getShowLocation(Context context) {
return getBoolean(context, PREF_SHOW_LOCATION, PREF_SHOW_LOCATION_DEFAULT);
}

public static DateFormatValue getWidgetHeaderDateFormat(Context context) {
return getDateFormat(context, PREF_WIDGET_HEADER_DATE_FORMAT, PREF_WIDGET_HEADER_DATE_FORMAT_DEFAULT);
}

public static DateFormatValue getEntryDateFormat(Context context) {
return getDateFormat(context, PREF_ENTRY_DATE_FORMAT, PREF_ENTRY_DATE_FORMAT_DEFAULT);
}

public static void setEntryDateFormat(Context context, DateFormatValue value) {
setString(context, PREF_ENTRY_DATE_FORMAT, value.save());
public static void setDateFormat(Context context, String key, DateFormatValue value) {
setString(context, key, value.save());
}

public static DateFormatValue getDateFormat(Context context, String key, DateFormatValue defaultValue) {
Expand Down Expand Up @@ -412,10 +416,6 @@ public static WidgetHeaderLayout getWidgetHeaderLayout(Context context) {
return WidgetHeaderLayout.fromValue(getString(context, PREF_WIDGET_HEADER_LAYOUT, ""));
}

public static boolean getShowDateOnWidgetHeader(Context context) {
return getBoolean(context, PREF_SHOW_DATE_ON_WIDGET_HEADER, true);
}

public static boolean noPastEvents(Context context) {
return !getShowPastEventsWithDefaultColor(context) &&
getEventsEnded(context) == EndedSomeTimeAgo.NONE &&
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,10 @@ public class InstanceSettings {
// Layout
static final String PREF_WIDGET_HEADER_LAYOUT = "widgetHeaderLayout";
private WidgetHeaderLayout widgetHeaderLayout = WidgetHeaderLayout.defaultValue;
static final String PREF_SHOW_DATE_ON_WIDGET_HEADER = "showDateOnWidgetHeader";
private boolean showDateOnWidgetHeader = true;
private static final String PREF_SHOW_DATE_ON_WIDGET_HEADER = "showDateOnWidgetHeader"; // till v 4.0
static final String PREF_WIDGET_HEADER_DATE_FORMAT = "widgetHeaderDateFormat";
static final DateFormatValue PREF_WIDGET_HEADER_DATE_FORMAT_DEFAULT = DateFormatType.DEVICE_DEFAULT.defaultValue();
private DateFormatValue widgetHeaderDateFormat = PREF_WIDGET_HEADER_DATE_FORMAT_DEFAULT;
static final String PREF_SHOW_DAY_HEADERS = "showDayHeaders";
private boolean showDayHeaders = true;
static final String PREF_SHOW_PAST_EVENTS_UNDER_ONE_HEADER = "showPastEventsUnderOneHeader";
Expand All @@ -76,7 +78,7 @@ public class InstanceSettings {
static final String PREF_ENTRY_DATE_FORMAT = "entryDateFormat";
static final DateFormatValue PREF_ENTRY_DATE_FORMAT_DEFAULT = DateFormatType.NUMBER_OF_DAYS.defaultValue();
private DateFormatValue entryDateFormat = PREF_ENTRY_DATE_FORMAT_DEFAULT;
static final String PREF_SHOW_NUMBER_OF_DAYS_TO_EVENT = "showNumberOfDaysToEvent"; // till v 4.0
private static final String PREF_SHOW_NUMBER_OF_DAYS_TO_EVENT = "showNumberOfDaysToEvent"; // till v 4.0
static final String PREF_MULTILINE_TITLE = "multiline_title";
static final boolean PREF_MULTILINE_TITLE_DEFAULT = false;
private boolean multilineTitle = PREF_MULTILINE_TITLE_DEFAULT;
Expand Down Expand Up @@ -192,8 +194,13 @@ private InstanceSettings setFromJson(JSONObject json) {
return InstanceSettings.EMPTY;
}
try {
if (json.has(PREF_SHOW_DATE_ON_WIDGET_HEADER)) {
showDateOnWidgetHeader = json.getBoolean(PREF_SHOW_DATE_ON_WIDGET_HEADER);
if (json.has(PREF_WIDGET_HEADER_DATE_FORMAT)) {
widgetHeaderDateFormat = DateFormatValue.load(
json.getString(PREF_WIDGET_HEADER_DATE_FORMAT), PREF_WIDGET_HEADER_DATE_FORMAT_DEFAULT);
} else if (json.has(PREF_SHOW_DATE_ON_WIDGET_HEADER)) {
widgetHeaderDateFormat = json.getBoolean(PREF_SHOW_DATE_ON_WIDGET_HEADER)
? PREF_WIDGET_HEADER_DATE_FORMAT_DEFAULT
: DateFormatType.HIDDEN.defaultValue();
}
if (json.has(PREF_ACTIVE_SOURCES)) {
JSONArray jsonArray = json.getJSONArray(PREF_ACTIVE_SOURCES);
Expand Down Expand Up @@ -333,7 +340,7 @@ static InstanceSettings fromApplicationPreferences(Context context, int widgetId
InstanceSettings settings = new InstanceSettings(context, widgetId,
ApplicationPreferences.getString(context, PREF_WIDGET_INSTANCE_NAME,
ApplicationPreferences.getString(context, PREF_WIDGET_INSTANCE_NAME, "")));
settings.showDateOnWidgetHeader = ApplicationPreferences.getShowDateOnWidgetHeader(context);
settings.widgetHeaderDateFormat = ApplicationPreferences.getWidgetHeaderDateFormat(context);
settings.setActiveEventSources(ApplicationPreferences.getActiveEventSources(context));
settings.eventRange = ApplicationPreferences.getEventRange(context);
settings.eventsEnded = ApplicationPreferences.getEventsEnded(context);
Expand Down Expand Up @@ -422,7 +429,7 @@ public JSONObject toJson() {
JSONObject json = new JSONObject();
try {
json.put(PREF_WIDGET_ID, widgetId);
json.put(PREF_SHOW_DATE_ON_WIDGET_HEADER, showDateOnWidgetHeader);
json.put(PREF_WIDGET_HEADER_DATE_FORMAT, widgetHeaderDateFormat.save());
json.put(PREF_WIDGET_INSTANCE_NAME, widgetInstanceName);
json.put(PREF_ACTIVE_SOURCES, OrderedEventSource.toJsonArray(getActiveEventSources()));
json.put(PREF_EVENT_RANGE, eventRange);
Expand Down Expand Up @@ -561,6 +568,18 @@ public boolean getShowPastEventsWithDefaultColor() {
return showPastEventsWithDefaultColor;
}

public DateFormatter widgetHeaderDateFormatter() {
return new DateFormatter(context, getWidgetHeaderDateFormat(), clock().now());
}

public DateFormatValue getWidgetHeaderDateFormat() {
return widgetHeaderDateFormat;
}

public DateFormatter entryDateFormatter() {
return new DateFormatter(context, getEntryDateFormat(), clock().now());
}

public DateFormatValue getEntryDateFormat() {
return entryDateFormat;
}
Expand Down Expand Up @@ -711,10 +730,6 @@ public void logMe(String tag, String message, int widgetId) {
Log.v(tag, message + ", widgetId:" + widgetId + " instance:" + instanceId + "\n" + toJson());
}

public boolean getShowDateOnWidgetHeader() {
return showDateOnWidgetHeader;
}

public boolean noPastEvents() {
return filterMode != FilterMode.NO_FILTERING &&
!getShowPastEventsWithDefaultColor() &&
Expand Down Expand Up @@ -789,8 +804,4 @@ private int maxSourceId() {
.max(Comparator.comparingInt(id -> id)).orElse(1);
return Math.max(id1, id2);
}

public DateFormatter entryDateformatter() {
return new DateFormatter(context, getEntryDateFormat(), clock().now());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ public CharSequence getSummary() {

public void setValue(DateFormatValue value) {
this.value = value;
ApplicationPreferences.setEntryDateFormat(getContext(), value);
ApplicationPreferences.setDateFormat(getContext(), getKey(), value);
showValue();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public enum DateFormatType {
DEFAULT_WEEKDAY("defaultWeekday", R.string.date_format_default_weekday, ""),
DEFAULT_DAYS("defaultDays", R.string.date_format_default_days, ""),
ABBREVIATED("abbrev", R.string.appearance_abbreviate_dates_title, ""),
NUMBER_OF_DAYS("days", R.string.date_format_number_of_days_to_event, "bbbbb"),
NUMBER_OF_DAYS("days", R.string.date_format_number_of_days_to_event, "bbbb"),
DAY_IN_MONTH("dayInMonth", R.string.date_format_day_in_month, "dd"),
MONTH_DAY("monthDay", R.string.date_format_month_day, "MM-dd"),
WEEK_IN_YEAR("weekInYear", R.string.date_format_week_in_year, "ww"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ public boolean duplicates(WidgetEntry other) {
public CharSequence formatEntryDate() {
return settings.getEntryDateFormat().type == DateFormatType.HIDDEN
? ""
: settings.entryDateformatter().formatDate(entryDate);
: settings.entryDateFormatter().formatDate(entryDate);
}

@Override
Expand Down
4 changes: 2 additions & 2 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@
<string name="widget_header_layout">Widget header layout</string>
<string name="pref_event_entry_layout_title">Event entry layout</string>
<string name="default_multiline_layout">Time below title</string>
<string name="show_date_on_widget_header">Show date on widget header</string>
<string name="widget_header_date_format">Widget header date format</string>
<string name="default_value">Default</string>
<string name="single_line_layout">All in one row</string>
<string name="two_rows_layout">Two rows layout</string>
Expand All @@ -93,7 +93,7 @@
<string name="show_past_events_under_one_header_desc">Show all past/due events under one "Past and due" header</string>
<string name="show_event_icon_title">Show event icon</string>
<string name="show_event_icon_desc">Show Calendar color bar / Task icon for event</string>
<string name="entry_date_format_title">Entry date format</string>
<string name="entry_date_format">Entry date format</string>
<string name="multiline_details_title">Multiline details</string>
<string name="multiline_details_desc">Spread event time and location over multiple lines</string>

Expand Down
12 changes: 5 additions & 7 deletions app/src/main/res/xml/preferences_layout.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,10 @@
android:summary="@string/single_line_layout"
android:title="@string/widget_header_layout" />

<org.andstatus.todoagenda.prefs.MultilineCheckBoxPreference
android:key="showDateOnWidgetHeader"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:defaultValue="true"
android:title="@string/show_date_on_widget_header" />
<org.andstatus.todoagenda.prefs.dateformat.DateFormatPreference
android:key="widgetHeaderDateFormat"
android:defaultValue="deviceDefault:"
android:title="@string/widget_header_date_format" />
</PreferenceCategory>

<PreferenceCategory app:title="@string/day_header">
Expand Down Expand Up @@ -79,7 +77,7 @@
<org.andstatus.todoagenda.prefs.dateformat.DateFormatPreference
android:key="entryDateFormat"
android:defaultValue="days:"
android:title="@string/entry_date_format_title" />
android:title="@string/entry_date_format" />

<org.andstatus.todoagenda.prefs.MultilineCheckBoxPreference
android:key="multiline_title"
Expand Down

0 comments on commit 8f10274

Please sign in to comment.