Use FilterWithUpdate when necessary when creating shortcuts so that filter comparison doesn't break

pull/14/head
Sam Bosley 12 years ago
parent 96e4255e2d
commit 3393ebb766

@ -33,6 +33,7 @@ import com.todoroo.andlib.sql.QueryTemplate;
import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.api.FilterWithCustomIntent;
import com.todoroo.astrid.api.FilterWithUpdate;
import com.todoroo.astrid.data.Task;
/**
@ -65,6 +66,9 @@ public class ShortcutActivity extends Activity {
/** token for passing a ComponentNameto launch */
public static final String TOKEN_CUSTOM_CLASS = "class"; //$NON-NLS-1$
/** token for passing a image url*/
public static final String TOKEN_IMAGE_URL = "imageUrl"; //$NON-NLS-1$
// --- implementation
@Override
@ -126,7 +130,12 @@ public class ShortcutActivity extends Activity {
Filter filter;
if (extras.containsKey(TOKEN_CUSTOM_CLASS)) {
filter = new FilterWithCustomIntent(title, title, sql, values);
if (extras.containsKey(TOKEN_IMAGE_URL)) {
filter = new FilterWithUpdate(title, title, sql, values);
((FilterWithUpdate) filter).imageUrl = extras.getString(TOKEN_IMAGE_URL);
}
else
filter = new FilterWithCustomIntent(title, title, sql, values);
ComponentName customTaskList = ComponentName.unflattenFromString(extras.getString(TOKEN_CUSTOM_CLASS));
((FilterWithCustomIntent) filter).customTaskList = customTaskList;
} else {
@ -155,6 +164,11 @@ public class ShortcutActivity extends Activity {
if(customFilter.customExtras != null)
shortcutIntent.putExtras(customFilter.customExtras);
shortcutIntent.putExtra(TOKEN_CUSTOM_CLASS, customFilter.customTaskList.flattenToString());
if (filter instanceof FilterWithUpdate) {
FilterWithUpdate filterWithUpdate = (FilterWithUpdate) filter;
if (filterWithUpdate.imageUrl != null)
shortcutIntent.putExtra(TOKEN_IMAGE_URL, filterWithUpdate.imageUrl);
}
}
shortcutIntent.setAction(Intent.ACTION_VIEW);

@ -195,11 +195,24 @@ public class FilterAdapter extends ArrayAdapter<Filter> {
public int addOrLookup(Filter filter) {
int index = getPosition(filter);
if (index >= 0) return index;
if (index >= 0) {
Filter existing = getItem(index);
transferImageReferences(filter, existing);
return index;
}
add(filter);
return getCount() - 1;
}
// Helper function: if a filter was created from serialized extras, it may not
// have the same image data we can get from the in-app broadcast
private void transferImageReferences(Filter from, Filter to) {
if (from instanceof FilterWithUpdate && to instanceof FilterWithUpdate)
((FilterWithUpdate) to).imageUrl = ((FilterWithUpdate) from).imageUrl;
else
to.listingIcon = from.listingIcon;
}
public void setLastSelected(int lastSelected) {
mSelectedIndex = lastSelected;
}

Loading…
Cancel
Save