From 616b7e40720a6b565390f7a66ed83d6409281f5e Mon Sep 17 00:00:00 2001 From: Tim Su Date: Fri, 13 Aug 2010 02:38:01 -0700 Subject: [PATCH] Working on fix for AST-227 - launching app goes straight to filters. Also adjusting appearance of filters button, and lastly, got deleting custom filters up --- astrid/AndroidManifest.xml | 18 +++-- .../astrid/core/CustomFilterExposer.java | 74 ++++++++++++++++-- .../{tango_windows.xml => tango_filters.xml} | 6 +- astrid/res/drawable/tango_filters_normal.png | Bin 0 -> 512 bytes astrid/res/drawable/tango_filters_pressed.png | Bin 0 -> 352 bytes astrid/res/drawable/tango_windows_normal.png | Bin 552 -> 0 bytes astrid/res/drawable/tango_windows_pressed.png | Bin 432 -> 0 bytes astrid/res/layout/task_list_activity.xml | 5 +- astrid/res/layout/task_list_activity_api3.xml | 8 +- astrid/res/values/strings-core.xml | 3 + astrid/res/values/strings-filters.xml | 3 + .../astrid/activity/FilterListActivity.java | 8 ++ .../todoroo/astrid/adapter/FilterAdapter.java | 3 +- 13 files changed, 102 insertions(+), 26 deletions(-) rename astrid/res/drawable/{tango_windows.xml => tango_filters.xml} (89%) create mode 100644 astrid/res/drawable/tango_filters_normal.png create mode 100644 astrid/res/drawable/tango_filters_pressed.png delete mode 100644 astrid/res/drawable/tango_windows_normal.png delete mode 100644 astrid/res/drawable/tango_windows_pressed.png diff --git a/astrid/AndroidManifest.xml b/astrid/AndroidManifest.xml index af76c67fa..e7e8e8d97 100644 --- a/astrid/AndroidManifest.xml +++ b/astrid/AndroidManifest.xml @@ -60,7 +60,6 @@ @@ -88,7 +87,7 @@ @@ -157,12 +156,6 @@ - - - - - - @@ -170,7 +163,16 @@ + + + + + + + + + diff --git a/astrid/plugin-src/com/todoroo/astrid/core/CustomFilterExposer.java b/astrid/plugin-src/com/todoroo/astrid/core/CustomFilterExposer.java index 5bfa0a987..0fceca416 100644 --- a/astrid/plugin-src/com/todoroo/astrid/core/CustomFilterExposer.java +++ b/astrid/plugin-src/com/todoroo/astrid/core/CustomFilterExposer.java @@ -3,21 +3,27 @@ */ package com.todoroo.astrid.core; +import android.app.Activity; import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.Context; +import android.content.DialogInterface; import android.content.Intent; import android.content.res.Resources; import android.graphics.drawable.BitmapDrawable; +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.DependencyInjectionService; import com.todoroo.andlib.sql.Order; import com.todoroo.andlib.sql.Query; +import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.astrid.activity.FilterListActivity; import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.api.Filter; -import com.todoroo.astrid.api.FilterListHeader; +import com.todoroo.astrid.api.FilterCategory; import com.todoroo.astrid.api.FilterListItem; import com.todoroo.astrid.dao.StoreObjectDao; import com.todoroo.astrid.model.StoreObject; @@ -30,6 +36,9 @@ import com.todoroo.astrid.model.StoreObject; */ public final class CustomFilterExposer extends BroadcastReceiver { + private static final String TOKEN_FILTER_ID = "id"; //$NON-NLS-1$ + private static final String TOKEN_FILTER_NAME = "name"; //$NON-NLS-1$ + @Override public void onReceive(Context context, Intent intent) { Resources r = context.getResources(); @@ -40,16 +49,14 @@ public final class CustomFilterExposer extends BroadcastReceiver { customFilterIntent); customFilter.listingIcon = ((BitmapDrawable)r.getDrawable(R.drawable.gnome_filter)).getBitmap(); - Filter[] customFilters = buildSavedFilters(); + Filter[] savedFilters = buildSavedFilters(context); FilterListItem[] list; - if(customFilters.length == 0) { + if(savedFilters.length == 0) { list = new FilterListItem[1]; } else { - list = new FilterListItem[customFilters.length + 2]; - list[1] = new FilterListHeader(r.getString(R.string.BFE_Saved)); - for(int i = 0; i < customFilters.length; i++) - list[i + 2] = customFilters[i]; + list = new FilterListItem[2]; + list[1] = new FilterCategory(r.getString(R.string.BFE_Saved), savedFilters); } list[0] = customFilter; @@ -60,7 +67,7 @@ public final class CustomFilterExposer extends BroadcastReceiver { context.sendBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ); } - private Filter[] buildSavedFilters() { + private Filter[] buildSavedFilters(Context context) { StoreObjectDao dao = PluginServices.getStoreObjectDao(); TodorooCursor cursor = dao.query(Query.select(StoreObject.PROPERTIES).where( StoreObject.TYPE.eq(SavedFilter.TYPE)).orderBy(Order.asc(SavedFilter.NAME))); @@ -72,6 +79,12 @@ public final class CustomFilterExposer extends BroadcastReceiver { cursor.moveToNext(); savedFilter.readFromCursor(cursor); list[i] = SavedFilter.load(savedFilter); + + Intent deleteIntent = new Intent(context, DeleteActivity.class); + deleteIntent.putExtra(TOKEN_FILTER_ID, savedFilter.getId()); + deleteIntent.putExtra(TOKEN_FILTER_NAME, list[i].title); + list[i].contextMenuLabels = new String[] { context.getString(R.string.BFE_Saved_delete) }; + list[i].contextMenuIntents = new Intent[] { deleteIntent }; } return list; @@ -80,4 +93,49 @@ public final class CustomFilterExposer extends BroadcastReceiver { } } + /** + * Simple activity for deleting stuff + * + * @author Tim Su + * + */ + public static class DeleteActivity extends Activity { + + @Autowired + DialogUtilities dialogUtilities; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setTheme(android.R.style.Theme_Dialog); + + final long id = getIntent().getLongExtra(TOKEN_FILTER_ID, -1); + if(id == -1) { + finish(); + return; + } + final String name = getIntent().getStringExtra(TOKEN_FILTER_NAME); + + DependencyInjectionService.getInstance().inject(this); + dialogUtilities.okCancelDialog(this, + getString(R.string.DLG_delete_this_item_question, name), + new DialogInterface.OnClickListener() { + + @Override + public void onClick(DialogInterface dialog, int which) { + PluginServices.getStoreObjectDao().delete(id); + setResult(RESULT_OK); + finish(); + } + }, + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + setResult(RESULT_CANCELED); + finish(); + } + }); + } + } + } diff --git a/astrid/res/drawable/tango_windows.xml b/astrid/res/drawable/tango_filters.xml similarity index 89% rename from astrid/res/drawable/tango_windows.xml rename to astrid/res/drawable/tango_filters.xml index 633427407..6e27a51c2 100644 --- a/astrid/res/drawable/tango_windows.xml +++ b/astrid/res/drawable/tango_filters.xml @@ -17,10 +17,10 @@ + android:state_focused="false" android:drawable="@drawable/tango_filters_normal" /> + android:drawable="@drawable/tango_filters_pressed" /> + android:state_focused="true" android:drawable="@drawable/tango_filters_pressed" /> diff --git a/astrid/res/drawable/tango_filters_normal.png b/astrid/res/drawable/tango_filters_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..c359063ced7d7ff5994cf93b3d229b96b7b937fa GIT binary patch literal 512 zcmV+b0{{JqP)b zl)rAmFc8MSGv<#PwIC$ec!LgofIb9>y+Q@lwOfZ)>WtLAR7oH+10&DF1E7i#74UT^ z=O%HY4h<)rY~{QA`FycW%#3rGIt%rjU>!x#^l&(g3tYr#t$p~uf8>JA_x+=mO4sW( zh{!H0^YoaW%g>jw)9CQL70(Y)*K0-AbW|YuPgg44qi@9hUAJiW1!FjPZ!4!i_=%9 zI{FsTbN}n>+rOXu`R-+* z-A9XqcUrHTZ=Y@$*LAk6`kK4o!+A^JMjmsXUtDx^o>839lxZhIdztO*_NzJae=o0p z&DBs9`#j&gVRhEl6tS4FJw47HEG~`h;+~f_zun-gwt0#8*Q%|#t0zAb-N5v!ajkzf rQ{Mr`A96PqZeNyZ#W3}kPd!5^?`WFU8GbZ8({Xk{QrNlj4iWF>9@00E3iL_t(I%hi%SPQ!2v zN1u~0w5)81g`qem-5sFQ@a*pT>gHu_N3Y-Yrq%0ry)H9KZ`_^btTU zQx+DN{uFFx4T9adJKN4)IG)~2l$tgOR>RD2Ks?s^@%hfn>!8+6mDB=bQ!Nbm@;YE` zWuwum+}vJwfXgV)P1SG#@eIVwQj5W+Fbc3l5s7h_XIl|QfC68@FbS08 zS}QgF0Y}nQ1k)_Ioia|Jq@#r?|0=0v<-ZfRqG?NCCRIGQ&y;_!D%htQL70(Y)*K0-AbW|YuPgg44qgsRqf+hea-fiGiEBiObAE1a zYF-J0b5UwyNotBhd1gt5LP$ocg1e`0!21-{JfL;#o-U3d7N@UH@%3wQ5O9lkzI|oF zj-sdM-rn&%pJ>y_e$o0RuT4W?23K3zWr-P*PuwFSI5R!M>qYKsbN!2!V0i!6_Jh&q zH_aV;`Z(KlPN%J$mfG1dV`1&>do2PLzkke8*|mSK+}VwH+vo0%I{SFuhr7Kw$~98H zmjkYUeX#Gl9gpMR#^-aaPX~lfbK08R>AmolCi^sptq!-=z6;W6oW<}{Y<~&Un{5K` zDsy@ww?105>Xdru(=WeXmv}EeU%5rKSKnvP_xI;^I<81hI<{a{N5|F!f @@ -32,8 +31,8 @@ android:layout_height="fill_parent" android:layout_weight="100" android:singleLine="true" - android:paddingTop="6dip" android:paddingRight="50dip" + android:ellipsize="middle" style="@style/TextAppearance.TLA_Header"/> diff --git a/astrid/res/layout/task_list_activity_api3.xml b/astrid/res/layout/task_list_activity_api3.xml index ce3d2afaa..f952be010 100644 --- a/astrid/res/layout/task_list_activity_api3.xml +++ b/astrid/res/layout/task_list_activity_api3.xml @@ -15,12 +15,13 @@ android:orientation="horizontal" android:background="@drawable/edit_header"> - + @@ -28,11 +29,12 @@ diff --git a/astrid/res/values/strings-core.xml b/astrid/res/values/strings-core.xml index 7ac606884..7951b1540 100644 --- a/astrid/res/values/strings-core.xml +++ b/astrid/res/values/strings-core.xml @@ -113,6 +113,9 @@ Delete this task? + + + Delete this item: %s? Done diff --git a/astrid/res/values/strings-filters.xml b/astrid/res/values/strings-filters.xml index 05237a8f8..570aa1d5b 100644 --- a/astrid/res/values/strings-filters.xml +++ b/astrid/res/values/strings-filters.xml @@ -17,6 +17,9 @@ Saved Filters + + + Delete Filter diff --git a/astrid/src/com/todoroo/astrid/activity/FilterListActivity.java b/astrid/src/com/todoroo/astrid/activity/FilterListActivity.java index ef0237be6..70440825d 100644 --- a/astrid/src/com/todoroo/astrid/activity/FilterListActivity.java +++ b/astrid/src/com/todoroo/astrid/activity/FilterListActivity.java @@ -399,4 +399,12 @@ public class FilterListActivity extends ExpandableListActivity { .show(); } + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + if(resultCode != RESULT_CANCELED) + adapter.getLists(); + + super.onActivityResult(requestCode, resultCode, data); + } + } diff --git a/astrid/src/com/todoroo/astrid/adapter/FilterAdapter.java b/astrid/src/com/todoroo/astrid/adapter/FilterAdapter.java index f0a81a33f..abe291c6e 100644 --- a/astrid/src/com/todoroo/astrid/adapter/FilterAdapter.java +++ b/astrid/src/com/todoroo/astrid/adapter/FilterAdapter.java @@ -271,7 +271,8 @@ public class FilterAdapter extends BaseExpandableListAdapter { * application registered to listen for this broadcast. Each application * can then add lists to this activity */ - protected void getLists() { + public void getLists() { + clear(); Intent broadcastIntent = new Intent(AstridApiConstants.BROADCAST_REQUEST_FILTERS); activity.sendOrderedBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ); }