Fix for filter shortcut not working

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

@ -209,7 +209,6 @@ abstract public class AbstractDatabase {
public DatabaseHelper(Context context, String name,
CursorFactory factory, int 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.net.URL;
import java.net.URLConnection;
import java.util.Map.Entry;
import android.app.Activity;
import android.content.ContentValues;
@ -127,6 +128,19 @@ public class AndroidUtilities {
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
* @param array array to search
@ -140,4 +154,20 @@ public class AndroidUtilities {
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) {
TodorooCursor<Metadata> cursor = metadataService.fetchWithCount(
COUNT, MetadataCriteria.withKey(KEY), order);
COUNT, Criterion.and(TaskCriteria.isActive(), MetadataCriteria.withKey(KEY)), order);
try {
Tag[] array = new Tag[cursor.getCount()];
for (int i = 0; i < array.length; i++) {

@ -109,7 +109,7 @@ public class FilterListActivity extends ExpandableListActivity {
final String intentAction = intent.getAction();
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,
getString(R.string.FLA_search_filter, query),
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.putExtra(TaskListActivity.TOKEN_FILTER_TITLE, filter.title);
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);
}

@ -881,8 +881,8 @@ public final class TaskEditActivity extends TabActivity {
values[4] = new HideUntilValue(labels[4], Task.HIDE_UNTIL_SPECIFIC_DAY, -1);
if(specificDate > 0) {
HideUntilValue[] updated = new HideUntilValue[labels.length + 1];
for(int i = 0; i < labels.length; i++)
HideUntilValue[] updated = new HideUntilValue[values.length + 1];
for(int i = 0; i < values.length; i++)
updated[i+1] = values[i];
SimpleDateFormat format = DateUtilities.getDateFormat(TaskEditActivity.this);
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);
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;
date = 0;
} 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$
/** 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
@ -165,7 +171,8 @@ public class TaskListActivity extends ListActivity implements OnScrollListener {
// launched from desktop shortcut, must create a fake filter
String title = extras.getString(TOKEN_FILTER_TITLE);
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.sqlQuery = sql;
} else {
@ -321,7 +328,7 @@ public class TaskListActivity extends ListActivity implements OnScrollListener {
protected Task quickAddTask(String title, boolean selectNewTask) {
try {
Task task = new Task();
task.setValue(Task.TITLE, title);
task.setValue(Task.TITLE, title.trim());
ContentValues forMetadata = null;
if(filter.valuesForNewTasks != null && filter.valuesForNewTasks.size() > 0) {
ContentValues forTask = new ContentValues();

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

Loading…
Cancel
Save