Remove filter selection, leftover filter api

pull/253/head
Alex Baker 10 years ago
parent 3d3d32e28e
commit 831bcdd9be

@ -68,20 +68,6 @@ public class AstridApiConstants {
*/
public static final String EXTRAS_NEW_DUE_DATE = "newDueDate";
// --- Filters API
/**
* Action name for broadcast intent requesting filters
*/
public static final String BROADCAST_REQUEST_FILTERS = API_PACKAGE + ".REQUEST_FILTERS";
/**
* Action name for broadcast intent sending filters back to Astrid
* <li> EXTRAS_ADDON your add-on identifier </li>
* <li> EXTRAS_RESPONSE an array of {@link FilterListItem}s </li>
*/
public static final String BROADCAST_SEND_FILTERS = API_PACKAGE + ".SEND_FILTERS";
// -- Custom criteria API
/**

@ -244,14 +244,6 @@
<!-- ========================================================= Plugins = -->
<!-- core -->
<receiver android:name="com.todoroo.astrid.core.CoreFilterExposer">
<intent-filter android:priority="9000">
<action android:name="org.tasks.REQUEST_FILTERS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<activity
android:name="com.todoroo.astrid.core.DefaultsPreferences"
android:theme="@android:style/Theme"
@ -274,13 +266,6 @@
android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
<!-- tags -->
<receiver android:name="com.todoroo.astrid.tags.TagFilterExposer">
<intent-filter>
<action android:name="org.tasks.REQUEST_FILTERS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<receiver android:name="com.todoroo.astrid.tags.TagCustomFilterCriteriaExposer">
<intent-filter>
<action android:name="org.tasks.REQUEST_CUSTOM_FILTER_CRITERIA" />
@ -289,13 +274,6 @@
</receiver>
<!-- custom filters -->
<receiver android:name="com.todoroo.astrid.core.CustomFilterExposer">
<intent-filter android:priority="9000">
<action android:name="org.tasks.REQUEST_FILTERS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<activity
android:name="com.todoroo.astrid.core.CustomFilterActivity"
android:theme="@style/Tasks.Dialog" />
@ -348,13 +326,6 @@
</intent-filter>
</receiver>
<receiver android:name="com.todoroo.astrid.gtasks.GtasksFilterExposer">
<intent-filter>
<action android:name="org.tasks.REQUEST_FILTERS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<activity
android:name="com.todoroo.astrid.gtasks.GtasksPreferences"
android:theme="@android:style/Theme"
@ -471,13 +442,6 @@
<activity android:name="com.todoroo.astrid.files.FileExplore" />
<receiver android:name="com.todoroo.astrid.timers.TimerFilterExposer">
<intent-filter android:priority="10000">
<action android:name="org.tasks.REQUEST_FILTERS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<receiver android:name="com.todoroo.astrid.timers.TimerTaskCompleteListener">
<intent-filter>
<action android:name="org.tasks.TASK_COMPLETED" />

@ -48,8 +48,6 @@ public class TagViewFragment extends TaskListFragment {
@Inject TagDataDao tagDataDao;
protected View taskListView;
private boolean dataLoaded = false;
// --- UI initialization

@ -46,7 +46,7 @@ public class FilterShortcutActivity extends InjectingListActivity {
// set up ui
adapter = new FilterAdapter(injector, filterCounter, this, getListView(),
R.layout.filter_adapter_row, true, true);
R.layout.filter_adapter_row, true);
adapter.filterStyle = R.style.TextAppearance_FLA_Filter_Widget;
setListAdapter(adapter);

@ -10,8 +10,6 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.graphics.Color;
import android.os.Parcelable;
import android.text.TextUtils;
@ -20,11 +18,9 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import com.todoroo.andlib.service.ContextManager;
import com.todoroo.astrid.activity.AstridActivity;
import com.todoroo.astrid.activity.TaskListFragment;
import com.todoroo.astrid.api.AstridApiConstants;
@ -33,21 +29,21 @@ import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.api.FilterListItem;
import com.todoroo.astrid.api.FilterWithCustomIntent;
import com.todoroo.astrid.api.FilterWithUpdate;
import com.todoroo.astrid.core.CoreFilterExposer;
import com.todoroo.astrid.core.CustomFilterExposer;
import com.todoroo.astrid.gtasks.GtasksFilterExposer;
import com.todoroo.astrid.tags.TagFilterExposer;
import com.todoroo.astrid.timers.TimerFilterExposer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.tasks.R;
import org.tasks.filters.FilterCounter;
import org.tasks.injection.Injector;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class FilterAdapter extends ArrayAdapter<Filter> {
private static final Logger log = LoggerFactory.getLogger(FilterAdapter.class);
// --- style constants
public int filterStyle = R.style.TextAppearance_FLA_Filter;
@ -66,9 +62,6 @@ public class FilterAdapter extends ArrayAdapter<Filter> {
/** display metrics for scaling icons */
protected final DisplayMetrics metrics = new DisplayMetrics();
/** receiver for new filters */
protected final FilterReceiver filterReceiver = new FilterReceiver();
private final FilterListUpdateReceiver filterListUpdateReceiver = new FilterListUpdateReceiver();
/** row layout to inflate */
@ -80,11 +73,8 @@ public class FilterAdapter extends ArrayAdapter<Filter> {
/** whether to skip Filters that launch intents instead of being real filters */
private final boolean skipIntentFilters;
/** whether rows are selectable */
private final boolean selectable;
public FilterAdapter(Injector injector, FilterCounter filterCounter, Activity activity, ListView listView,
int rowLayout, boolean skipIntentFilters, boolean selectable) {
int rowLayout, boolean skipIntentFilters) {
super(activity, 0);
this.injector = injector;
this.filterCounter = filterCounter;
@ -92,7 +82,6 @@ public class FilterAdapter extends ArrayAdapter<Filter> {
this.listView = listView;
this.layout = rowLayout;
this.skipIntentFilters = skipIntentFilters;
this.selectable = selectable;
inflater = (LayoutInflater) activity.getSystemService(
Context.LAYOUT_INFLATER_SERVICE);
@ -100,12 +89,6 @@ public class FilterAdapter extends ArrayAdapter<Filter> {
activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
}
private void offerFilter(final Filter filter) {
if(selectable && selection == null) {
setSelection(filter);
}
}
@Override
public boolean hasStableIds() {
return true;
@ -116,7 +99,6 @@ public class FilterAdapter extends ArrayAdapter<Filter> {
super.add(item);
// load sizes
filterCounter.registerFilter(item);
offerFilter(item);
notifyDataSetChanged();
}
@ -170,7 +152,6 @@ public class FilterAdapter extends ArrayAdapter<Filter> {
ViewHolder viewHolder = new ViewHolder();
viewHolder.view = convertView;
viewHolder.name = (TextView)convertView.findViewById(R.id.name);
viewHolder.selected = (ImageView)convertView.findViewById(R.id.selected);
viewHolder.size = (TextView)convertView.findViewById(R.id.size);
viewHolder.decoration = null;
convertView.setTag(viewHolder);
@ -182,7 +163,6 @@ public class FilterAdapter extends ArrayAdapter<Filter> {
public FilterListItem item;
public TextView name;
public TextView size;
public ImageView selected;
public View view;
public View decoration;
}
@ -247,81 +227,43 @@ public class FilterAdapter extends ArrayAdapter<Filter> {
}
}
/**
* Receiver which receives intents to add items to the filter list
*
* @author Tim Su <tim@todoroo.com>
*
*/
public class FilterReceiver extends BroadcastReceiver {
private final List<ResolveInfo> filterExposerList;
public FilterReceiver() {
// query astrids AndroidManifest.xml for all registered default-receivers to expose filters
PackageManager pm = ContextManager.getContext().getPackageManager();
filterExposerList = pm.queryBroadcastReceivers(
new Intent(AstridApiConstants.BROADCAST_REQUEST_FILTERS),
PackageManager.MATCH_DEFAULT_ONLY);
protected void populateFiltersToAdapter(AstridFilterExposer astridFilterExposer) {
Parcelable[] filters = astridFilterExposer.getFilters(injector);
if (filters == null) {
return;
}
@Override
public void onReceive(Context context, Intent intent) {
try {
for (ResolveInfo filterExposerInfo : filterExposerList) {
String className = filterExposerInfo.activityInfo.name;
AstridFilterExposer filterExposer;
filterExposer = (AstridFilterExposer) Class.forName(className, true, FilterAdapter.class.getClassLoader()).newInstance();
if (filterExposer != null) {
populateFiltersToAdapter(filterExposer.getFilters(injector));
}
}
} catch (Exception e) {
log.error(e.getMessage(), e);
for (Parcelable item : filters) {
FilterListItem filter = (FilterListItem) item;
if(skipIntentFilters && !(filter instanceof Filter)) {
continue;
}
}
protected void populateFiltersToAdapter(final Parcelable[] filters) {
if (filters == null) {
return;
if (filter instanceof Filter){
addOrLookup((Filter) filter);
}
}
for (Parcelable item : filters) {
FilterListItem filter = (FilterListItem) item;
if(skipIntentFilters && !(filter instanceof Filter)) {
continue;
}
if (filter instanceof Filter){
addOrLookup((Filter) filter);
}
filterCounter.refreshFilterCounts(new Runnable() {
@Override
public void run() {
notifyDataSetChanged();
}
filterCounter.refreshFilterCounts(new Runnable() {
@Override
public void run() {
notifyDataSetChanged();
}
});
}
});
}
/**
* Broadcast a request for lists. The request is sent to every
* application registered to listen for this broadcast. Each application
* can then add lists to this activity
*/
public void getLists() {
filterReceiver.onReceive(activity, null);
populateFiltersToAdapter(new CoreFilterExposer());
populateFiltersToAdapter(new TimerFilterExposer());
populateFiltersToAdapter(new CustomFilterExposer());
populateFiltersToAdapter(new TagFilterExposer());
populateFiltersToAdapter(new GtasksFilterExposer());
}
/**
* Call this method from your activity's onResume() method
*/
public void registerRecevier() {
IntentFilter regularFilter = new IntentFilter(AstridApiConstants.BROADCAST_SEND_FILTERS);
regularFilter.setPriority(2);
activity.registerReceiver(filterReceiver, regularFilter);
activity.registerReceiver(filterListUpdateReceiver, new IntentFilter(AstridApiConstants.BROADCAST_EVENT_FILTER_LIST_UPDATED));
getLists();
@ -332,7 +274,6 @@ public class FilterAdapter extends ArrayAdapter<Filter> {
* Call this method from your activity's onResume() method
*/
public void unregisterRecevier() {
activity.unregisterReceiver(filterReceiver);
activity.unregisterReceiver(filterListUpdateReceiver);
}
@ -398,10 +339,8 @@ public class FilterAdapter extends ArrayAdapter<Filter> {
// selection
if(selection == viewHolder.item) {
viewHolder.selected.setVisibility(View.VISIBLE);
// TODO: convert to color
viewHolder.view.setBackgroundColor(Color.rgb(128, 230, 0));
} else {
viewHolder.selected.setVisibility(View.GONE);
}
}
}

@ -7,7 +7,6 @@ package com.todoroo.astrid.core;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import com.todoroo.andlib.service.ContextManager;
@ -15,7 +14,6 @@ import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.sql.QueryTemplate;
import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.api.AstridFilterExposer;
import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.api.FilterListItem;
@ -48,18 +46,6 @@ public final class CoreFilterExposer extends InjectingBroadcastReceiver implemen
@Inject Preferences preferences;
@Inject @ForApplication Context context;
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
ContextManager.setContext(context);
FilterListItem[] list = prepareFilters();
Intent broadcastIntent = new Intent(AstridApiConstants.BROADCAST_SEND_FILTERS);
broadcastIntent.putExtra(AstridApiConstants.EXTRAS_RESPONSE, list);
context.sendBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ);
}
private FilterListItem[] prepareFilters() {
Resources r = context.getResources();
// core filters

@ -16,7 +16,6 @@ import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Order;
import com.todoroo.andlib.sql.QueryTemplate;
import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.api.AstridFilterExposer;
import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.api.FilterListItem;
@ -51,18 +50,6 @@ public final class CustomFilterExposer extends InjectingBroadcastReceiver implem
@Inject Preferences preferences;
@Inject @ForApplication Context context;
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
FilterListItem[] list = prepareFilters();
// transmit filter list
Intent broadcastIntent = new Intent(AstridApiConstants.BROADCAST_SEND_FILTERS);
broadcastIntent.putExtra(AstridApiConstants.EXTRAS_RESPONSE, list);
context.sendBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ);
}
private FilterListItem[] prepareFilters() {
Resources r = context.getResources();

@ -8,17 +8,14 @@ package com.todoroo.astrid.gtasks;
import android.content.ComponentName;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import com.todoroo.andlib.data.AbstractModel;
import com.todoroo.andlib.service.ContextManager;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Functions;
import com.todoroo.andlib.sql.Join;
import com.todoroo.andlib.sql.Order;
import com.todoroo.andlib.sql.QueryTemplate;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.api.AstridFilterExposer;
import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.api.FilterListItem;
@ -77,17 +74,6 @@ public class GtasksFilterExposer extends InjectingBroadcastReceiver implements A
return filter;
}
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
ContextManager.setContext(context);
FilterListItem[] list = prepareFilters();
Intent broadcastIntent = new Intent(AstridApiConstants.BROADCAST_SEND_FILTERS);
broadcastIntent.putExtra(AstridApiConstants.EXTRAS_RESPONSE, list);
context.sendBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ);
}
private FilterListItem[] prepareFilters() {
// if we aren't logged in (or we are logged in to astrid.com), don't expose features
if(!gtasksPreferenceService.isLoggedIn()) {

@ -47,8 +47,8 @@ public class SubtasksTagListFragment extends TagViewFragment {
@Override
protected View getListBody(ViewGroup root) {
taskListView = getActivity().getLayoutInflater().inflate(R.layout.task_list_body_subtasks, root, false);
return taskListView;
return getActivity().getLayoutInflater().inflate(
R.layout.task_list_body_subtasks, root, false);
}
@Override

@ -21,7 +21,6 @@ import com.todoroo.andlib.sql.Join;
import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.sql.QueryTemplate;
import com.todoroo.astrid.actfm.TagViewFragment;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.api.AstridFilterExposer;
import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.api.FilterListItem;
@ -104,17 +103,6 @@ public class TagFilterExposer extends InjectingBroadcastReceiver implements Astr
return ret;
}
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
FilterListItem[] listAsArray = prepareFilters();
Intent broadcastIntent = new Intent(AstridApiConstants.BROADCAST_SEND_FILTERS);
broadcastIntent.putExtra(AstridApiConstants.EXTRAS_RESPONSE, listAsArray);
context.sendBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ);
}
private FilterListItem[] prepareFilters() {
ContextManager.setContext(context);

@ -7,13 +7,10 @@ package com.todoroo.astrid.timers;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import com.todoroo.andlib.service.ContextManager;
import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.sql.QueryTemplate;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.api.AstridFilterExposer;
import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.api.FilterListItem;
@ -38,18 +35,6 @@ public final class TimerFilterExposer extends InjectingBroadcastReceiver impleme
@Inject TaskService taskService;
@Inject @ForApplication Context context;
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
ContextManager.setContext(context);
FilterListItem[] list = prepareFilters();
Intent broadcastIntent = new Intent(AstridApiConstants.BROADCAST_SEND_FILTERS);
broadcastIntent.putExtra(AstridApiConstants.EXTRAS_RESPONSE, list);
context.sendBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ);
}
private FilterListItem[] prepareFilters() {
if(taskService.count(Query.select(Task.ID).
where(Task.TIMER_START.gt(0))) == 0) {

@ -89,7 +89,7 @@ public class WidgetConfigActivity extends InjectingListActivity {
// set up ui
adapter = new FilterAdapter(injector, filterCounter, this, getListView(),
R.layout.filter_adapter_row, true, true);
R.layout.filter_adapter_row, true);
adapter.filterStyle = R.style.TextAppearance_FLA_Filter_Widget;
setListAdapter(adapter);

@ -241,7 +241,7 @@ public class NavigationDrawerFragment extends InjectingFragment {
public void onAttach(Activity activity) {
super.onAttach(activity);
mCallbacks = (OnFilterItemClickedListener) activity;
adapter = new FilterAdapter(injector, filterCounter, getActivity(), null, R.layout.filter_adapter_row, false, false);
adapter = new FilterAdapter(injector, filterCounter, getActivity(), null, R.layout.filter_adapter_row, false);
}
@Override

@ -34,16 +34,5 @@
android:paddingRight="7dip"
android:textColor="?attr/drawer_text"
android:gravity="center" />
<!-- selected -->
<ImageView android:id="@+id/selected"
android:layout_width="24dip"
android:layout_height="fill_parent"
android:layout_toLeftOf="@id/size"
android:paddingLeft="5dip"
android:paddingRight="5dip"
android:src="?attr/asFilterSelectedIcon"
android:scaleType="fitCenter"
android:visibility="gone"/>
</RelativeLayout>

Loading…
Cancel
Save