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

@ -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<StoreObject> 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 <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">
<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"
android:drawable="@drawable/tango_windows_pressed" />
android:drawable="@drawable/tango_filters_pressed" />
<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>

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_height="fill_parent"
android:layout_weight="1"
android:src="@drawable/tango_windows"
android:src="@drawable/tango_filters"
android:scaleType="center"
android:paddingTop="8dip"
android:paddingLeft="5dip"
android:paddingRight="5dip"/>
@ -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"/>
</LinearLayout>

@ -15,12 +15,13 @@
android:orientation="horizontal"
android:background="@drawable/edit_header">
<!-- Back Button -->
<!-- Filters Button -->
<ImageView android:id="@+id/back"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@drawable/tango_windows"
android:src="@drawable/tango_filters"
android:scaleType="center"
android:paddingTop="8dip"
android:paddingLeft="5dip"
android:paddingRight="5dip"/>
@ -28,11 +29,12 @@
<!-- List Label -->
<TextView android:id="@+id/listLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
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"/>
</LinearLayout>

@ -113,6 +113,9 @@
<!-- question for deleting tasks -->
<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 -->
<string name="DLG_done">Done</string>

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

@ -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);
}
}

@ -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);
}

Loading…
Cancel
Save