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) {
if (todayFilter == null) {
String todayTitle = AndroidUtilities.capitalize(r.getString(R.string.today)); String todayTitle = AndroidUtilities.capitalize(r.getString(R.string.today));
ContentValues todayValues = new ContentValues(); ContentValues todayValues = new ContentValues();
todayValues.put(Task.DUE_DATE.name, PermaSql.VALUE_NOON); todayValues.put(Task.DUE_DATE.name, PermaSql.VALUE_NOON);
todayFilter = new Filter(todayTitle, Filter todayFilter = new Filter(todayTitle,
todayTitle, todayTitle,
new QueryTemplate().where( new QueryTemplate().where(
Criterion.and(TaskCriteria.activeVisibleMine(), Criterion.and(TaskCriteria.activeVisibleMine(),
Task.DUE_DATE.gt(0), Task.DUE_DATE.gt(0),
Task.DUE_DATE.lte(PermaSql.VALUE_EOD))), Task.DUE_DATE.lte(PermaSql.VALUE_EOD))),
todayValues); 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