New list button now in lists footer, not in any list is now under filters section

pull/14/head
Sam Bosley 14 years ago
parent b265036260
commit fe8556ce44

@ -15,6 +15,7 @@ import android.os.Bundle;
import com.timsu.astrid.R;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.ContextManager;
import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.sql.Criterion;
@ -33,6 +34,9 @@ import com.todoroo.astrid.dao.StoreObjectDao;
import com.todoroo.astrid.dao.TaskDao.TaskCriteria;
import com.todoroo.astrid.data.StoreObject;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.gtasks.GtasksPreferenceService;
import com.todoroo.astrid.service.TagDataService;
import com.todoroo.astrid.tags.TagService;
/**
* Exposes Astrid's built in filters to the {@link FilterListActivity}
@ -45,6 +49,9 @@ public final class CustomFilterExposer extends BroadcastReceiver implements Astr
private static final String TOKEN_FILTER_ID = "id"; //$NON-NLS-1$
private static final String TOKEN_FILTER_NAME = "name"; //$NON-NLS-1$
@Autowired TagDataService tagDataService;
@Autowired GtasksPreferenceService gtasksPreferenceService;
@Override
public void onReceive(Context context, Intent intent) {
FilterListItem[] list = prepareFilters(context);
@ -56,6 +63,7 @@ public final class CustomFilterExposer extends BroadcastReceiver implements Astr
}
private FilterListItem[] prepareFilters(Context context) {
DependencyInjectionService.getInstance().inject(this);
Resources r = context.getResources();
//PendingIntent customFilterIntent = PendingIntent.getActivity(context, 0,
@ -78,7 +86,7 @@ public final class CustomFilterExposer extends BroadcastReceiver implements Astr
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() + 2];
Filter[] list = new Filter[cursor.getCount() + 3];
// stock filters
String todayTitle = AndroidUtilities.capitalize(r.getString(R.string.today));
@ -101,8 +109,16 @@ public final class CustomFilterExposer extends BroadcastReceiver implements Astr
null);
list[1].listingIcon = ((BitmapDrawable)r.getDrawable(R.drawable.filter_pencil)).getBitmap();
int untaggedLabel = gtasksPreferenceService.isLoggedIn() ?
R.string.tag_FEx_untagged_w_astrid : R.string.tag_FEx_untagged;
list[2] = new Filter(r.getString(untaggedLabel),
r.getString(R.string.tag_FEx_untagged),
TagService.untaggedTemplate(),
null);;
list[2].listingIcon = ((BitmapDrawable)r.getDrawable(R.drawable.gl_lists)).getBitmap();
StoreObject savedFilter = new StoreObject();
for(int i = 2; i < list.length; i++) {
for(int i = 3; i < list.length; i++) {
cursor.moveToNext();
savedFilter.readFromCursor(cursor);
list[i] = SavedFilter.load(savedFilter);

@ -6,7 +6,6 @@ package com.todoroo.astrid.tags;
import java.util.ArrayList;
import android.app.Activity;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.ContentValues;
@ -15,7 +14,6 @@ import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.Resources;
import android.graphics.Color;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.widget.EditText;
import android.widget.Toast;
@ -34,7 +32,6 @@ import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.api.AstridFilterExposer;
import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.api.FilterCategory;
import com.todoroo.astrid.api.FilterCategoryWithNewButton;
import com.todoroo.astrid.api.FilterListItem;
import com.todoroo.astrid.api.FilterWithCustomIntent;
import com.todoroo.astrid.api.FilterWithUpdate;
@ -60,8 +57,6 @@ public class TagFilterExposer extends BroadcastReceiver implements AstridFilterE
@Autowired TagDataService tagDataService;
@Autowired GtasksPreferenceService gtasksPreferenceService;
private TagService tagService;
/** Create filter from new tag object */
@SuppressWarnings("nls")
public static FilterWithCustomIntent filterFromTag(Context context, Tag tag, Criterion criterion) {
@ -129,7 +124,6 @@ public class TagFilterExposer extends BroadcastReceiver implements AstridFilterE
private FilterListItem[] prepareFilters(Context context) {
DependencyInjectionService.getInstance().inject(this);
ContextManager.setContext(context);
tagService = TagService.getInstance();
ArrayList<FilterListItem> list = new ArrayList<FilterListItem>();
@ -148,25 +142,13 @@ public class TagFilterExposer extends BroadcastReceiver implements AstridFilterE
}
private FilterCategory filterFromTags(Tag[] tags, int name) {
Filter[] filters = new Filter[tags.length + 1];
Filter[] filters = new Filter[tags.length];
Resources r = ContextManager.getContext().getResources();
int untaggedLabel = gtasksPreferenceService.isLoggedIn() ?
R.string.tag_FEx_untagged_w_astrid : R.string.tag_FEx_untagged;
Filter untagged = new Filter(r.getString(untaggedLabel),
r.getString(R.string.tag_FEx_untagged),
tagService.untaggedTemplate(),
null);
untagged.listingIcon = ((BitmapDrawable)r.getDrawable(R.drawable.gl_lists)).getBitmap();
filters[0] = untagged;
Context context = ContextManager.getContext();
for(int i = 0; i < tags.length; i++)
filters[i + 1] = filterFromTag(context, tags[i], TaskCriteria.activeAndVisible());
FilterCategoryWithNewButton filter = new FilterCategoryWithNewButton(context.getString(name), filters);
filter.label = r.getString(R.string.tag_FEx_add_new);
filter.intent = PendingIntent.getActivity(context, 0,
TagsPlugin.newTagDialog(context), 0);
filters[i] = filterFromTag(context, tags[i], TaskCriteria.activeAndVisible());
FilterCategory filter = new FilterCategory(context.getString(name), filters);
return filter;
}

@ -141,7 +141,7 @@ public final class TagService {
additionalCriterion);
}
public QueryTemplate untaggedTemplate() {
public static QueryTemplate untaggedTemplate() {
return new QueryTemplate().where(Criterion.and(
Criterion.not(Task.ID.in(Query.select(Metadata.TASK).from(Metadata.TABLE).where(MetadataCriteria.withKey(KEY)))),
TaskCriteria.isActive(),

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- See the file "LICENSE" for the full license governing this code. -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
style="@style/Content"
@ -8,10 +8,12 @@
<!-- Header -->
<LinearLayout
android:id="@+id/lists_header"
android:layout_width="fill_parent"
android:layout_height="43dip"
android:layout_weight="1"
android:orientation="horizontal"
android:layout_alignParentTop="true"
style="@style/Header">
@ -52,15 +54,39 @@
android:scaleType="fitCenter" />
</LinearLayout>
<!-- Footer -->
<LinearLayout
android:id="@+id/lists_footer"
android:layout_width="fill_parent"
android:layout_height="50dip"
android:layout_weight="1"
android:orientation="horizontal"
android:layout_alignParentBottom="true">
<Button
android:id="@+id/new_list_button"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingLeft="10dip"
android:paddingRight="10dip"
android:paddingTop="5dip"
android:paddingBottom="5dip"
android:text="New list"
android:textColor="@android:color/white"/>
</LinearLayout>
<!-- List -->
<ExpandableListView android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="100"
android:layout_below="@id/lists_header"
android:layout_above="@id/lists_footer"
android:scrollbars="vertical"
android:cacheColorHint="#00000000"/>
</LinearLayout>
</RelativeLayout>

@ -42,6 +42,7 @@ import android.view.View.OnClickListener;
import android.view.Window;
import android.view.inputmethod.EditorInfo;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ExpandableListView;
import android.widget.ExpandableListView.ExpandableListContextMenuInfo;
@ -82,6 +83,7 @@ import com.todoroo.astrid.service.StartupService;
import com.todoroo.astrid.service.StatisticsConstants;
import com.todoroo.astrid.service.StatisticsService;
import com.todoroo.astrid.service.ThemeService;
import com.todoroo.astrid.tags.TagsPlugin;
import com.todoroo.astrid.utility.Constants;
/**
@ -140,6 +142,7 @@ public class FilterListActivity extends ExpandableListActivity {
setContentView(R.layout.filter_list_activity);
ImageView backButton = (ImageView) findViewById(R.id.back);
Button newListButton = (Button) findViewById(R.id.new_list_button);
setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL);
backButton.setOnClickListener(new OnClickListener() {
@ -149,6 +152,17 @@ public class FilterListActivity extends ExpandableListActivity {
}
});
newListButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = TagsPlugin.newTagDialog(FilterListActivity.this);
startActivity(intent);
AndroidUtilities.callApiMethod(5, FilterListActivity.this, "overridePendingTransition",
new Class<?>[] { Integer.TYPE, Integer.TYPE },
R.anim.slide_left_in, R.anim.slide_left_out);
}
});
onNewIntent(getIntent());
}

Loading…
Cancel
Save