Keep cache of Active Tasks and Today filter objects

pull/14/head
Sam Bosley 13 years ago
parent 0aca3bcb91
commit 408dc262cf

@ -61,18 +61,24 @@ 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) {
Filter inbox = new Filter(r.getString(R.string.BFE_Active), r.getString(R.string.BFE_Active), synchronized(CoreFilterExposer.class) {
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();
inbox.listingIcon = ((BitmapDrawable)r.getDrawable( inboxInstance.listingIcon = ((BitmapDrawable)r.getDrawable(
ThemeService.getDrawable(R.drawable.filter_inbox, themeFlags))).getBitmap(); ThemeService.getDrawable(R.drawable.filter_inbox, themeFlags))).getBitmap();
return inbox; return inboxInstance;
} }
/** /**

@ -76,28 +76,43 @@ public final class CustomFilterExposer extends BroadcastReceiver implements Astr
return savedFilters; return savedFilters;
} }
private Filter[] buildSavedFilters(Context context, Resources r) { private static Filter todayFilter = null;
public static Filter getTodayFilter(Resources r) {
int themeFlags = ThemeService.getFilterThemeFlags(); int themeFlags = ThemeService.getFilterThemeFlags();
synchronized(CustomFilterExposer.class) {
StoreObjectDao dao = PluginServices.getStoreObjectDao(); if (todayFilter == null) {
TodorooCursor<StoreObject> cursor = dao.query(Query.select(StoreObject.PROPERTIES).where(
StoreObject.TYPE.eq(SavedFilter.TYPE)).orderBy(Order.asc(SavedFilter.NAME)));
try {
Filter[] list = new Filter[cursor.getCount() + 3];
// stock filters
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);
list[0] = new Filter(todayTitle, 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);
list[0].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;
}
public static boolean isTodayFilter(Filter filter) {
return (filter != null && filter.equals(getTodayFilter(ContextManager.getContext().getResources())));
}
private Filter[] buildSavedFilters(Context context, Resources r) {
int themeFlags = ThemeService.getFilterThemeFlags();
StoreObjectDao dao = PluginServices.getStoreObjectDao();
TodorooCursor<StoreObject> cursor = dao.query(Query.select(StoreObject.PROPERTIES).where(
StoreObject.TYPE.eq(SavedFilter.TYPE)).orderBy(Order.asc(SavedFilter.NAME)));
try {
Filter[] list = new Filter[cursor.getCount() + 3];
// stock filters
list[0] = getTodayFilter(r);
list[1] = new Filter(r.getString(R.string.BFE_Recent), list[1] = new Filter(r.getString(R.string.BFE_Recent),
r.getString(R.string.BFE_Recent), r.getString(R.string.BFE_Recent),

Loading…
Cancel
Save