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

pull/14/head
Tim Su 14 years ago
parent 7cbc7478c0
commit 616b7e4072

@ -60,7 +60,6 @@
<!-- Activity that displays task list --> <!-- Activity that displays task list -->
<activity android:name="com.todoroo.astrid.activity.TaskListActivity" <activity android:name="com.todoroo.astrid.activity.TaskListActivity"
android:windowSoftInputMode="stateHidden" android:windowSoftInputMode="stateHidden"
android:clearTaskOnLaunch="true"
android:theme="@style/Theme"> android:theme="@style/Theme">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />
@ -88,7 +87,7 @@
<!-- Activity that displays filter list --> <!-- Activity that displays filter list -->
<activity android:name="com.todoroo.astrid.activity.FilterListActivity" <activity android:name="com.todoroo.astrid.activity.FilterListActivity"
android:launchMode="singleTask" android:launchMode="singleTop"
android:theme="@style/Theme"> android:theme="@style/Theme">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.SEARCH" /> <action android:name="android.intent.action.SEARCH" />
@ -157,12 +156,6 @@
<category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.DEFAULT" />
</intent-filter> </intent-filter>
</receiver> </receiver>
<receiver android:name="com.todoroo.astrid.core.CustomFilterExposer">
<intent-filter android:priority="9000">
<action android:name="com.todoroo.astrid.REQUEST_FILTERS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<activity android:name="com.todoroo.astrid.core.DefaultsPreferences" <activity android:name="com.todoroo.astrid.core.DefaultsPreferences"
android:label="@string/EPr_defaults_header"> android:label="@string/EPr_defaults_header">
<intent-filter> <intent-filter>
@ -170,7 +163,16 @@
<category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.DEFAULT" />
</intent-filter> </intent-filter>
</activity> </activity>
<!-- custom filters -->
<receiver android:name="com.todoroo.astrid.core.CustomFilterExposer">
<intent-filter android:priority="9000">
<action android:name="com.todoroo.astrid.REQUEST_FILTERS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<activity android:name="com.todoroo.astrid.core.CustomFilterActivity" /> <activity android:name="com.todoroo.astrid.core.CustomFilterActivity" />
<activity android:name="com.todoroo.astrid.core.CustomFilterExposer$DeleteActivity" />
<!-- alarms --> <!-- alarms -->
<receiver android:name="com.todoroo.astrid.alarms.AlarmTaskRepeatListener"> <receiver android:name="com.todoroo.astrid.alarms.AlarmTaskRepeatListener">

@ -3,21 +3,27 @@
*/ */
package com.todoroo.astrid.core; package com.todoroo.astrid.core;
import android.app.Activity;
import android.app.PendingIntent; import android.app.PendingIntent;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.content.res.Resources; import android.content.res.Resources;
import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import com.timsu.astrid.R; import com.timsu.astrid.R;
import com.todoroo.andlib.data.TodorooCursor; 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.Order;
import com.todoroo.andlib.sql.Query; import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.astrid.activity.FilterListActivity; import com.todoroo.astrid.activity.FilterListActivity;
import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.api.Filter; 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.api.FilterListItem;
import com.todoroo.astrid.dao.StoreObjectDao; import com.todoroo.astrid.dao.StoreObjectDao;
import com.todoroo.astrid.model.StoreObject; import com.todoroo.astrid.model.StoreObject;
@ -30,6 +36,9 @@ import com.todoroo.astrid.model.StoreObject;
*/ */
public final class CustomFilterExposer extends BroadcastReceiver { 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 @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
Resources r = context.getResources(); Resources r = context.getResources();
@ -40,16 +49,14 @@ public final class CustomFilterExposer extends BroadcastReceiver {
customFilterIntent); customFilterIntent);
customFilter.listingIcon = ((BitmapDrawable)r.getDrawable(R.drawable.gnome_filter)).getBitmap(); customFilter.listingIcon = ((BitmapDrawable)r.getDrawable(R.drawable.gnome_filter)).getBitmap();
Filter[] customFilters = buildSavedFilters(); Filter[] savedFilters = buildSavedFilters(context);
FilterListItem[] list; FilterListItem[] list;
if(customFilters.length == 0) { if(savedFilters.length == 0) {
list = new FilterListItem[1]; list = new FilterListItem[1];
} else { } else {
list = new FilterListItem[customFilters.length + 2]; list = new FilterListItem[2];
list[1] = new FilterListHeader(r.getString(R.string.BFE_Saved)); list[1] = new FilterCategory(r.getString(R.string.BFE_Saved), savedFilters);
for(int i = 0; i < customFilters.length; i++)
list[i + 2] = customFilters[i];
} }
list[0] = customFilter; list[0] = customFilter;
@ -60,7 +67,7 @@ public final class CustomFilterExposer extends BroadcastReceiver {
context.sendBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ); context.sendBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ);
} }
private Filter[] buildSavedFilters() { private Filter[] buildSavedFilters(Context context) {
StoreObjectDao dao = PluginServices.getStoreObjectDao(); StoreObjectDao dao = PluginServices.getStoreObjectDao();
TodorooCursor<StoreObject> cursor = dao.query(Query.select(StoreObject.PROPERTIES).where( TodorooCursor<StoreObject> cursor = dao.query(Query.select(StoreObject.PROPERTIES).where(
StoreObject.TYPE.eq(SavedFilter.TYPE)).orderBy(Order.asc(SavedFilter.NAME))); StoreObject.TYPE.eq(SavedFilter.TYPE)).orderBy(Order.asc(SavedFilter.NAME)));
@ -72,6 +79,12 @@ public final class CustomFilterExposer extends BroadcastReceiver {
cursor.moveToNext(); cursor.moveToNext();
savedFilter.readFromCursor(cursor); savedFilter.readFromCursor(cursor);
list[i] = SavedFilter.load(savedFilter); 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; return list;
@ -80,4 +93,49 @@ public final class CustomFilterExposer extends BroadcastReceiver {
} }
} }
/**
* Simple activity for deleting stuff
*
* @author Tim Su <tim@todoroo.com>
*
*/
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();
}
});
}
}
} }

@ -17,10 +17,10 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="false" android:state_enabled="true" <item android:state_pressed="false" android:state_enabled="true"
android:state_focused="false" android:drawable="@drawable/tango_windows_normal" /> android:state_focused="false" android:drawable="@drawable/tango_filters_normal" />
<item android:state_pressed="true" android:state_enabled="true" <item android:state_pressed="true" android:state_enabled="true"
android:drawable="@drawable/tango_windows_pressed" /> android:drawable="@drawable/tango_filters_pressed" />
<item android:state_pressed="false" android:state_enabled="true" <item android:state_pressed="false" android:state_enabled="true"
android:state_focused="true" android:drawable="@drawable/tango_windows_pressed" /> android:state_focused="true" android:drawable="@drawable/tango_filters_pressed" />
</selector> </selector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 512 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 352 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 552 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 432 B

@ -20,9 +20,8 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="fill_parent" android:layout_height="fill_parent"
android:layout_weight="1" android:layout_weight="1"
android:src="@drawable/tango_windows" android:src="@drawable/tango_filters"
android:scaleType="center" android:scaleType="center"
android:paddingTop="8dip"
android:paddingLeft="5dip" android:paddingLeft="5dip"
android:paddingRight="5dip"/> android:paddingRight="5dip"/>
@ -32,8 +31,8 @@
android:layout_height="fill_parent" android:layout_height="fill_parent"
android:layout_weight="100" android:layout_weight="100"
android:singleLine="true" android:singleLine="true"
android:paddingTop="6dip"
android:paddingRight="50dip" android:paddingRight="50dip"
android:ellipsize="middle"
style="@style/TextAppearance.TLA_Header"/> style="@style/TextAppearance.TLA_Header"/>
</LinearLayout> </LinearLayout>

@ -15,12 +15,13 @@
android:orientation="horizontal" android:orientation="horizontal"
android:background="@drawable/edit_header"> android:background="@drawable/edit_header">
<!-- Back Button --> <!-- Filters Button -->
<ImageView android:id="@+id/back" <ImageView android:id="@+id/back"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="fill_parent" android:layout_height="fill_parent"
android:layout_weight="1" android:layout_weight="1"
android:src="@drawable/tango_windows" android:src="@drawable/tango_filters"
android:scaleType="center"
android:paddingTop="8dip" android:paddingTop="8dip"
android:paddingLeft="5dip" android:paddingLeft="5dip"
android:paddingRight="5dip"/> android:paddingRight="5dip"/>
@ -28,11 +29,12 @@
<!-- List Label --> <!-- List Label -->
<TextView android:id="@+id/listLabel" <TextView android:id="@+id/listLabel"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="fill_parent"
android:layout_weight="100" android:layout_weight="100"
android:singleLine="true" android:singleLine="true"
android:paddingTop="6dip" android:paddingTop="6dip"
android:paddingRight="50dip" android:paddingRight="50dip"
android:ellipsize="middle"
style="@style/TextAppearance.TLA_Header"/> style="@style/TextAppearance.TLA_Header"/>
</LinearLayout> </LinearLayout>

@ -113,6 +113,9 @@
<!-- question for deleting tasks --> <!-- question for deleting tasks -->
<string name="DLG_delete_this_task_question">Delete this task?</string> <string name="DLG_delete_this_task_question">Delete this task?</string>
<!-- question for deleting items (%s => item name) -->
<string name="DLG_delete_this_item_question">Delete this item: %s?</string>
<!-- Button for being done --> <!-- Button for being done -->
<string name="DLG_done">Done</string> <string name="DLG_done">Done</string>

@ -17,6 +17,9 @@
<!-- Saved Filters Header --> <!-- Saved Filters Header -->
<string name="BFE_Saved">Saved Filters</string> <string name="BFE_Saved">Saved Filters</string>
<!-- Saved Filters Context Menu: delete -->
<string name="BFE_Saved_delete">Delete Filter</string>
<!-- =========================================== CustomFilterActivity == --> <!-- =========================================== CustomFilterActivity == -->

@ -399,4 +399,12 @@ public class FilterListActivity extends ExpandableListActivity {
.show(); .show();
} }
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(resultCode != RESULT_CANCELED)
adapter.getLists();
super.onActivityResult(requestCode, resultCode, data);
}
} }

@ -271,7 +271,8 @@ public class FilterAdapter extends BaseExpandableListAdapter {
* application registered to listen for this broadcast. Each application * application registered to listen for this broadcast. Each application
* can then add lists to this activity * can then add lists to this activity
*/ */
protected void getLists() { public void getLists() {
clear();
Intent broadcastIntent = new Intent(AstridApiConstants.BROADCAST_REQUEST_FILTERS); Intent broadcastIntent = new Intent(AstridApiConstants.BROADCAST_REQUEST_FILTERS);
activity.sendOrderedBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ); activity.sendOrderedBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ);
} }

Loading…
Cancel
Save