Keeping a static instance of filter objects was a bad idea. Causes conflicts in subtasks mode

pull/14/head
Sam Bosley 13 years ago
parent dff4275e06
commit 479f389768

@ -61,24 +61,18 @@ public final class CoreFilterExposer extends BroadcastReceiver implements Astrid
* Build inbox filter * Build inbox filter
* @return * @return
*/ */
private static Filter inboxInstance = null;
public static Filter buildInboxFilter(Resources r) { public static Filter buildInboxFilter(Resources r) {
synchronized(CoreFilterExposer.class) { Filter inbox = new Filter(r.getString(R.string.BFE_Active), r.getString(R.string.BFE_Active),
if (inboxInstance == null) {
inboxInstance = new Filter(r.getString(R.string.BFE_Active), r.getString(R.string.BFE_Active),
new QueryTemplate().where( new QueryTemplate().where(
Criterion.and(TaskCriteria.activeVisibleMine(), Criterion.and(TaskCriteria.activeVisibleMine(),
Criterion.not(Task.ID.in(Query.select(Metadata.TASK).from(Metadata.TABLE).where( Criterion.not(Task.ID.in(Query.select(Metadata.TASK).from(Metadata.TABLE).where(
Criterion.and(MetadataCriteria.withKey(TagService.KEY), Criterion.and(MetadataCriteria.withKey(TagService.KEY),
TagService.TAG.like("x_%", "x"))))))), //$NON-NLS-1$ //$NON-NLS-2$ TagService.TAG.like("x_%", "x"))))))), //$NON-NLS-1$ //$NON-NLS-2$
null); null);
}
}
int themeFlags = ThemeService.getFilterThemeFlags(); int themeFlags = ThemeService.getFilterThemeFlags();
inboxInstance.listingIcon = ((BitmapDrawable)r.getDrawable( inbox.listingIcon = ((BitmapDrawable)r.getDrawable(
ThemeService.getDrawable(R.drawable.filter_inbox, themeFlags))).getBitmap(); ThemeService.getDrawable(R.drawable.filter_inbox, themeFlags))).getBitmap();
return inboxInstance; return inbox;
} }
/** /**

@ -76,23 +76,18 @@ public final class CustomFilterExposer extends BroadcastReceiver implements Astr
return savedFilters; return savedFilters;
} }
private static Filter todayFilter = null;
public static Filter getTodayFilter(Resources r) { public static Filter getTodayFilter(Resources r) {
int themeFlags = ThemeService.getFilterThemeFlags(); int themeFlags = ThemeService.getFilterThemeFlags();
synchronized(CustomFilterExposer.class) { String todayTitle = AndroidUtilities.capitalize(r.getString(R.string.today));
if (todayFilter == null) { ContentValues todayValues = new ContentValues();
String todayTitle = AndroidUtilities.capitalize(r.getString(R.string.today)); todayValues.put(Task.DUE_DATE.name, PermaSql.VALUE_NOON);
ContentValues todayValues = new ContentValues(); Filter todayFilter = new Filter(todayTitle,
todayValues.put(Task.DUE_DATE.name, PermaSql.VALUE_NOON); todayTitle,
todayFilter = new Filter(todayTitle, new QueryTemplate().where(
todayTitle, Criterion.and(TaskCriteria.activeVisibleMine(),
new QueryTemplate().where( Task.DUE_DATE.gt(0),
Criterion.and(TaskCriteria.activeVisibleMine(), Task.DUE_DATE.lte(PermaSql.VALUE_EOD))),
Task.DUE_DATE.gt(0), todayValues);
Task.DUE_DATE.lte(PermaSql.VALUE_EOD))),
todayValues);
}
}
todayFilter.listingIcon = ((BitmapDrawable)r.getDrawable( todayFilter.listingIcon = ((BitmapDrawable)r.getDrawable(
ThemeService.getDrawable(R.drawable.filter_calendar, themeFlags))).getBitmap(); ThemeService.getDrawable(R.drawable.filter_calendar, themeFlags))).getBitmap();
return todayFilter; return todayFilter;

Loading…
Cancel
Save