Fix for filter shortcut not working

pull/14/head
Tim Su 16 years ago
parent 7841448da3
commit 187c878458

@ -209,7 +209,6 @@ abstract public class AbstractDatabase {
public DatabaseHelper(Context context, String name, public DatabaseHelper(Context context, String name,
CursorFactory factory, int version) { CursorFactory factory, int version) {
super(context, name, factory, version); super(context, name, factory, version);
Log.e("AYAAA", "NEW DATABASE HLEPER", new Throwable());
} }
/** /**

@ -5,6 +5,7 @@ import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.net.URL; import java.net.URL;
import java.net.URLConnection; import java.net.URLConnection;
import java.util.Map.Entry;
import android.app.Activity; import android.app.Activity;
import android.content.ContentValues; import android.content.ContentValues;
@ -127,6 +128,19 @@ public class AndroidUtilities {
value.getClass()); value.getClass());
} }
/**
* Rips apart a content value into two string arrays, keys and value
*/
public static String[][] contentValuesToStringArrays(ContentValues source) {
String[][] result = new String[2][source.size()];
int i = 0;
for(Entry<String, Object> entry : source.valueSet()) {
result[0][i] = entry.getKey();
result[1][i++] = entry.getValue().toString();
}
return result;
}
/** /**
* Return index of value in array * Return index of value in array
* @param array array to search * @param array array to search
@ -140,4 +154,20 @@ public class AndroidUtilities {
return -1; return -1;
} }
/**
* Turn ContentValues into a string
* @param string
* @return
*/
@SuppressWarnings("nls")
public static ContentValues contentValuesFromString(String string) {
String[] pairs = string.split(",");
ContentValues result = new ContentValues();
for(String item : pairs) {
String[] keyValue = item.split("=");
result.put(keyValue[0].trim(), keyValue[1].trim());
}
return result;
}
} }

@ -95,7 +95,7 @@ public class TagService {
*/ */
public Tag[] getGroupedTags(Order order) { public Tag[] getGroupedTags(Order order) {
TodorooCursor<Metadata> cursor = metadataService.fetchWithCount( TodorooCursor<Metadata> cursor = metadataService.fetchWithCount(
COUNT, MetadataCriteria.withKey(KEY), order); COUNT, Criterion.and(TaskCriteria.isActive(), MetadataCriteria.withKey(KEY)), order);
try { try {
Tag[] array = new Tag[cursor.getCount()]; Tag[] array = new Tag[cursor.getCount()];
for (int i = 0; i < array.length; i++) { for (int i = 0; i < array.length; i++) {

@ -109,7 +109,7 @@ public class FilterListActivity extends ExpandableListActivity {
final String intentAction = intent.getAction(); final String intentAction = intent.getAction();
if (Intent.ACTION_SEARCH.equals(intentAction)) { if (Intent.ACTION_SEARCH.equals(intentAction)) {
String query = intent.getStringExtra(SearchManager.QUERY); String query = intent.getStringExtra(SearchManager.QUERY).trim();
Filter filter = new Filter(null, null, Filter filter = new Filter(null, null,
getString(R.string.FLA_search_filter, query), getString(R.string.FLA_search_filter, query),
new QueryTemplate().where(Task.TITLE.like("%" + query + "%")), //$NON-NLS-1$ //$NON-NLS-2$ new QueryTemplate().where(Task.TITLE.like("%" + query + "%")), //$NON-NLS-1$ //$NON-NLS-2$
@ -287,7 +287,8 @@ public class FilterListActivity extends ExpandableListActivity {
shortcutIntent.setAction(Intent.ACTION_VIEW); shortcutIntent.setAction(Intent.ACTION_VIEW);
shortcutIntent.putExtra(TaskListActivity.TOKEN_FILTER_TITLE, filter.title); shortcutIntent.putExtra(TaskListActivity.TOKEN_FILTER_TITLE, filter.title);
shortcutIntent.putExtra(TaskListActivity.TOKEN_FILTER_SQL, filter.sqlQuery); shortcutIntent.putExtra(TaskListActivity.TOKEN_FILTER_SQL, filter.sqlQuery);
shortcutIntent.putExtra(TaskListActivity.TOKEN_FILTER_VALUES, filter.valuesForNewTasks); shortcutIntent.putExtra(TaskListActivity.TOKEN_FILTER_VALUES, filter.valuesForNewTasks.toString());
menuItem.setIntent(shortcutIntent); menuItem.setIntent(shortcutIntent);
} }

@ -881,8 +881,8 @@ public final class TaskEditActivity extends TabActivity {
values[4] = new HideUntilValue(labels[4], Task.HIDE_UNTIL_SPECIFIC_DAY, -1); values[4] = new HideUntilValue(labels[4], Task.HIDE_UNTIL_SPECIFIC_DAY, -1);
if(specificDate > 0) { if(specificDate > 0) {
HideUntilValue[] updated = new HideUntilValue[labels.length + 1]; HideUntilValue[] updated = new HideUntilValue[values.length + 1];
for(int i = 0; i < labels.length; i++) for(int i = 0; i < values.length; i++)
updated[i+1] = values[i]; updated[i+1] = values[i];
SimpleDateFormat format = DateUtilities.getDateFormat(TaskEditActivity.this); SimpleDateFormat format = DateUtilities.getDateFormat(TaskEditActivity.this);
updated[0] = new HideUntilValue(format.format(new Date(specificDate)), updated[0] = new HideUntilValue(format.format(new Date(specificDate)),
@ -943,7 +943,10 @@ public final class TaskEditActivity extends TabActivity {
long dueDate = model.getValue(Task.DUE_DATE); long dueDate = model.getValue(Task.DUE_DATE);
int selection = 0; int selection = 0;
if(Math.abs(date - dueDate) < DateUtilities.ONE_DAY) { if(date == 0) {
selection = 0;
date = 0;
} else if(Math.abs(date - dueDate) < DateUtilities.ONE_DAY) {
selection = 1; selection = 1;
date = 0; date = 0;
} else if(Math.abs(date - dueDate) < 2 * DateUtilities.ONE_DAY) { } else if(Math.abs(date - dueDate) < 2 * DateUtilities.ONE_DAY) {

@ -115,7 +115,13 @@ public class TaskListActivity extends ListActivity implements OnScrollListener {
public static final String TOKEN_FILTER_SQL = "sql"; //$NON-NLS-1$ public static final String TOKEN_FILTER_SQL = "sql"; //$NON-NLS-1$
/** token for passing a {@link Filter}'s values for new tasks through extras */ /** token for passing a {@link Filter}'s values for new tasks through extras */
public static final String TOKEN_FILTER_VALUES = "values"; //$NON-NLS-1$ public static final String TOKEN_FILTER_VALUES = "v4nt"; //$NON-NLS-1$
/** token for passing a {@link Filter}'s values for new tasks through extras (keys) */
public static final String TOKEN_FILTER_VALUES_KEYS = "v4ntk"; //$NON-NLS-1$
/** token for passing a {@link Filter}'s values for new tasks through extras (values) */
public static final String TOKEN_FILTER_VALUES_VALUES = "v4ntv"; //$NON-NLS-1$
// --- instance variables // --- instance variables
@ -165,7 +171,8 @@ public class TaskListActivity extends ListActivity implements OnScrollListener {
// launched from desktop shortcut, must create a fake filter // launched from desktop shortcut, must create a fake filter
String title = extras.getString(TOKEN_FILTER_TITLE); String title = extras.getString(TOKEN_FILTER_TITLE);
String sql = extras.getString(TOKEN_FILTER_SQL); String sql = extras.getString(TOKEN_FILTER_SQL);
ContentValues values = extras.getParcelable(TOKEN_FILTER_VALUES); ContentValues values = AndroidUtilities.contentValuesFromString(extras.getString(TOKEN_FILTER_VALUES));
filter = new Filter("", "", title, new QueryTemplate(), values); //$NON-NLS-1$ //$NON-NLS-2$ filter = new Filter("", "", title, new QueryTemplate(), values); //$NON-NLS-1$ //$NON-NLS-2$
filter.sqlQuery = sql; filter.sqlQuery = sql;
} else { } else {
@ -321,7 +328,7 @@ public class TaskListActivity extends ListActivity implements OnScrollListener {
protected Task quickAddTask(String title, boolean selectNewTask) { protected Task quickAddTask(String title, boolean selectNewTask) {
try { try {
Task task = new Task(); Task task = new Task();
task.setValue(Task.TITLE, title); task.setValue(Task.TITLE, title.trim());
ContentValues forMetadata = null; ContentValues forMetadata = null;
if(filter.valuesForNewTasks != null && filter.valuesForNewTasks.size() > 0) { if(filter.valuesForNewTasks != null && filter.valuesForNewTasks.size() > 0) {
ContentValues forTask = new ContentValues(); ContentValues forTask = new ContentValues();

@ -1,15 +1,19 @@
package com.todoroo.astrid.service; package com.todoroo.astrid.service;
import android.util.Log;
import com.todoroo.andlib.data.Property; import com.todoroo.andlib.data.Property;
import com.todoroo.andlib.data.TodorooCursor; import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.data.Property.CountProperty; import com.todoroo.andlib.data.Property.CountProperty;
import com.todoroo.andlib.service.Autowired; import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.DependencyInjectionService; import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.sql.Criterion; import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Join;
import com.todoroo.andlib.sql.Order; import com.todoroo.andlib.sql.Order;
import com.todoroo.andlib.sql.Query; import com.todoroo.andlib.sql.Query;
import com.todoroo.astrid.dao.MetadataDao; import com.todoroo.astrid.dao.MetadataDao;
import com.todoroo.astrid.model.Metadata; import com.todoroo.astrid.model.Metadata;
import com.todoroo.astrid.model.Task;
/** /**
* Service layer for {@link Metadata}-centered activities. * Service layer for {@link Metadata}-centered activities.
@ -70,7 +74,9 @@ public class MetadataService {
public TodorooCursor<Metadata> fetchWithCount(CountProperty count, public TodorooCursor<Metadata> fetchWithCount(CountProperty count,
Criterion where, Order order) { Criterion where, Order order) {
Query query = Query.select(Metadata.VALUE.as(Metadata.VALUE.name), count). Query query = Query.select(Metadata.VALUE.as(Metadata.VALUE.name), count).
join(Join.inner(Task.TABLE, Metadata.TASK.eq(Task.ID))).
where(where).orderBy(order).groupBy(Metadata.VALUE); where(where).orderBy(order).groupBy(Metadata.VALUE);
Log.e("ERW", query.toString());
TodorooCursor<Metadata> cursor = metadataDao.query(query); TodorooCursor<Metadata> cursor = metadataDao.query(query);
return cursor; return cursor;
} }

Loading…
Cancel
Save