Fixed various minor usability issues. A lot more smooth now.

pull/14/head
Tim Su 14 years ago
parent acccf78cd0
commit 4f61c9b5a4

@ -182,13 +182,13 @@
<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.tags.FilterExposer"> <receiver android:name="com.todoroo.astrid.tags.TagFilterExposer">
<intent-filter> <intent-filter>
<action android:name="com.todoroo.astrid.REQUEST_FILTERS" /> <action android:name="com.todoroo.astrid.REQUEST_FILTERS" />
<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.tags.DetailExposer"> <receiver android:name="com.todoroo.astrid.tags.TagDetailExposer">
<intent-filter> <intent-filter>
<action android:name="com.todoroo.astrid.REQUEST_DETAILS" /> <action android:name="com.todoroo.astrid.REQUEST_DETAILS" />
<category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.DEFAULT" />

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="com.android.ide.eclipse.adt.debug.LaunchConfigType">
<stringAttribute key="bad_container_name" value="/astrid.launch"/>
<intAttribute key="com.android.ide.eclipse.adt.action" value="0"/>
<stringAttribute key="com.android.ide.eclipse.adt.commandline" value="-scale 0.7"/>
<intAttribute key="com.android.ide.eclipse.adt.delay" value="0"/>
<booleanAttribute key="com.android.ide.eclipse.adt.nobootanim" value="true"/>
<intAttribute key="com.android.ide.eclipse.adt.speed" value="0"/>
<booleanAttribute key="com.android.ide.eclipse.adt.target" value="true"/>
<booleanAttribute key="com.android.ide.eclipse.adt.wipedata" value="false"/>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/astrid"/>
<listEntry value="/astrid/AndroidManifest.xml"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="4"/>
<listEntry value="1"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
</listAttribute>
<booleanAttribute key="org.eclipse.jdt.launching.ALLOW_TERMINATE" value="true"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="astrid"/>
</launchConfiguration>

@ -15,6 +15,9 @@ public class DialogUtilities {
@Autowired @Autowired
public Integer informationDialogTitleResource; public Integer informationDialogTitleResource;
@Autowired
public Integer confirmDialogTitleResource;
public DialogUtilities() { public DialogUtilities() {
DependencyInjectionService.getInstance().inject(this); DependencyInjectionService.getInstance().inject(this);
} }
@ -32,7 +35,7 @@ public class DialogUtilities {
activity.runOnUiThread(new Runnable() { activity.runOnUiThread(new Runnable() {
public void run() { public void run() {
new AlertDialog.Builder(activity) new AlertDialog.Builder(activity)
.setTitle(informationDialogTitleResource) .setTitle(confirmDialogTitleResource)
.setMessage(text) .setMessage(text)
.setView(view) .setView(view)
.setIcon(android.R.drawable.ic_dialog_alert) .setIcon(android.R.drawable.ic_dialog_alert)

@ -10,5 +10,5 @@
# Indicates whether an apk should be generated for each density. # Indicates whether an apk should be generated for each density.
split.density=false split.density=false
# Project target. # Project target.
target=android-7 target=android-8
apk-configurations= apk-configurations=

@ -39,7 +39,8 @@ public final class CoreFilterExposer extends BroadcastReceiver {
Filter all = new Filter(CorePlugin.pluginIdentifier, r.getString(R.string.BFE_All), Filter all = new Filter(CorePlugin.pluginIdentifier, r.getString(R.string.BFE_All),
r.getString(R.string.BFE_All), r.getString(R.string.BFE_All),
new QueryTemplate().orderBy(Order.desc(Task.MODIFICATION_DATE)), new QueryTemplate().where(Criterion.not(TaskCriteria.isDeleted())).
orderBy(Order.desc(Task.MODIFICATION_DATE)),
null); null);
all.listingIcon = ((BitmapDrawable)r.getDrawable(R.drawable.filter_all)).getBitmap(); all.listingIcon = ((BitmapDrawable)r.getDrawable(R.drawable.filter_all)).getBitmap();
@ -59,7 +60,7 @@ public final class CoreFilterExposer extends BroadcastReceiver {
@SuppressWarnings("nls") @SuppressWarnings("nls")
public static Filter buildInboxFilter(Resources r) { public static Filter buildInboxFilter(Resources r) {
Filter inbox = new Filter(CorePlugin.pluginIdentifier, r.getString(R.string.BFE_Inbox), Filter inbox = new Filter(CorePlugin.pluginIdentifier, r.getString(R.string.BFE_Inbox),
r.getString(R.string.BFE_Inbox), r.getString(R.string.BFE_Inbox_title),
new QueryTemplate().where(Criterion.and(TaskCriteria.isActive(), new QueryTemplate().where(Criterion.and(TaskCriteria.isActive(),
TaskCriteria.isVisible(DateUtilities.now()))).orderBy( TaskCriteria.isVisible(DateUtilities.now()))).orderBy(
Order.asc(Functions.caseStatement(Task.DUE_DATE.eq(0), Order.asc(Functions.caseStatement(Task.DUE_DATE.eq(0),

@ -17,7 +17,7 @@ import com.todoroo.astrid.api.TaskDetail;
* @author Tim Su <tim@todoroo.com> * @author Tim Su <tim@todoroo.com>
* *
*/ */
public class DetailExposer extends BroadcastReceiver { public class TagDetailExposer extends BroadcastReceiver {
private static TagService tagService = null; private static TagService tagService = null;

@ -25,7 +25,7 @@ import com.todoroo.astrid.tags.TagService.Tag;
* @author Tim Su <tim@todoroo.com> * @author Tim Su <tim@todoroo.com>
* *
*/ */
public class FilterExposer extends BroadcastReceiver { public class TagFilterExposer extends BroadcastReceiver {
private TagService tagService; private TagService tagService;

@ -2,8 +2,8 @@ package com.todoroo.astrid.tags;
import java.util.ArrayList; import java.util.ArrayList;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.data.Property.CountProperty; import com.todoroo.andlib.data.Property.CountProperty;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.service.Autowired; import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.DependencyInjectionService; import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.sql.Criterion; import com.todoroo.andlib.sql.Criterion;
@ -112,7 +112,7 @@ public class TagService {
* Return tags on the given task * Return tags on the given task
* *
* @param taskId * @param taskId
* @return empty array if no tags, otherwise array * @return cursor. PLEASE CLOSE THE CURSOR!
*/ */
public TodorooCursor<Metadata> getTags(long taskId) { public TodorooCursor<Metadata> getTags(long taskId) {
Query query = Query.select(Metadata.VALUE).where(Criterion.and(MetadataCriteria.withKey(KEY), Query query = Query.select(Metadata.VALUE).where(Criterion.and(MetadataCriteria.withKey(KEY),
@ -129,14 +129,18 @@ public class TagService {
public String getTagsAsString(long taskId) { public String getTagsAsString(long taskId) {
StringBuilder tagBuilder = new StringBuilder(); StringBuilder tagBuilder = new StringBuilder();
TodorooCursor<Metadata> tags = getTags(taskId); TodorooCursor<Metadata> tags = getTags(taskId);
int length = tags.getCount(); try {
Metadata metadata = new Metadata(); int length = tags.getCount();
for (int i = 0; i < length; i++) { Metadata metadata = new Metadata();
tags.moveToNext(); for (int i = 0; i < length; i++) {
metadata.readFromCursor(tags); tags.moveToNext();
tagBuilder.append(metadata.getValue(Metadata.VALUE)); metadata.readFromCursor(tags);
if (i < length - 1) tagBuilder.append(metadata.getValue(Metadata.VALUE));
tagBuilder.append(", "); if (i < length - 1)
tagBuilder.append(", ");
}
} finally {
tags.close();
} }
return tagBuilder.toString(); return tagBuilder.toString();
} }

@ -15,7 +15,7 @@
<!-- completion check-box --> <!-- completion check-box -->
<CheckBox android:id="@+id/completeBox" <CheckBox android:id="@+id/completeBox"
android:layout_width="52px" android:layout_width="52px"
android:layout_height="52px" android:layout_height="fill_parent"
android:layout_weight="1" android:layout_weight="1"
android:paddingLeft="10px" android:paddingLeft="10px"
android:button="@drawable/btn_check" android:button="@drawable/btn_check"
@ -25,7 +25,8 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="100" android:layout_weight="100"
android:paddingLeft="10px" android:paddingLeft="14px"
android:paddingRight="2px"
android:orientation="vertical"> android:orientation="vertical">
<!-- task name --> <!-- task name -->

@ -201,8 +201,11 @@ button: add task & go to the edit page.
<!-- Menu: Help --> <!-- Menu: Help -->
<string name="FLA_menu_help">Help</string> <string name="FLA_menu_help">Help</string>
<!-- Create Shortcut Dialog --> <!-- Create Shortcut Dialog Title -->
<string name="FLA_shortcut_dialog">Create Shortcut:</string> <string name="FLA_shortcut_dialog_title">Create Shortcut</string>
<!-- Create Shortcut Dialog (asks to name shortcut) -->
<string name="FLA_shortcut_dialog">Name of shortcut:</string>
<!-- Search Label--> <!-- Search Label-->
<string name="FLA_search_label">Search For Tasks</string> <string name="FLA_search_label">Search For Tasks</string>

@ -6,6 +6,9 @@
<!-- Inbox Filter --> <!-- Inbox Filter -->
<string name="BFE_Inbox">Inbox</string> <string name="BFE_Inbox">Inbox</string>
<!-- Inbox Filter -->
<string name="BFE_Inbox_title">Astrid: Inbox</string>
<!-- Completed Filter --> <!-- Completed Filter -->
<string name="BFE_Completed">Completed</string> <string name="BFE_Completed">Completed</string>

@ -32,12 +32,17 @@
<style name="TextAppearance.TAd_ItemTitle"> <style name="TextAppearance.TAd_ItemTitle">
<item name="android:textSize">22sp</item> <item name="android:textSize">22sp</item>
<item name="android:textStyle">bold</item>
</style> </style>
<style name="TextAppearance.TAd_ItemTitle_Completed" parent="TextAppearance.TAd_ItemTitle"> <style name="TextAppearance.TAd_ItemTitle_Completed" parent="TextAppearance.TAd_ItemTitle">
<item name="android:textColor">#ff555555</item> <item name="android:textColor">#ff555555</item>
</style> </style>
<style name="TextAppearance.TAd_ItemTitle_Deleted" parent="TextAppearance.TAd_ItemTitle" />
<style name="TextAppearance.TAd_ItemTitle_Overdue" parent="TextAppearance.TAd_ItemTitle">
<item name="android:textStyle">bold</item>
</style>
<style name="TextAppearance.TAd_ItemDetails"> <style name="TextAppearance.TAd_ItemDetails">
<item name="android:textSize">14sp</item> <item name="android:textSize">14sp</item>

@ -3,6 +3,7 @@
*/ */
package com.todoroo.astrid.activity; package com.todoroo.astrid.activity;
import android.app.AlertDialog;
import android.app.ExpandableListActivity; import android.app.ExpandableListActivity;
import android.app.SearchManager; import android.app.SearchManager;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
@ -10,18 +11,20 @@ import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle; import android.os.Bundle;
import android.os.Parcelable; import android.os.Parcelable;
import android.view.ContextMenu; import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu; import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.ContextMenu.ContextMenuInfo;
import android.widget.EditText; import android.widget.EditText;
import android.widget.ExpandableListView; import android.widget.ExpandableListView;
import android.widget.Toast;
import android.widget.ExpandableListView.ExpandableListContextMenuInfo; import android.widget.ExpandableListView.ExpandableListContextMenuInfo;
import android.widget.Toast;
import com.flurry.android.FlurryAgent; import com.flurry.android.FlurryAgent;
import com.timsu.astrid.R; import com.timsu.astrid.R;
@ -272,7 +275,9 @@ public class FilterListActivity extends ExpandableListActivity {
menuItem = menu.add(0, CONTEXT_MENU_SHORTCUT, 0, R.string.FLA_context_shortcut); menuItem = menu.add(0, CONTEXT_MENU_SHORTCUT, 0, R.string.FLA_context_shortcut);
Intent shortcutIntent = new Intent(this, TaskListActivity.class); Intent shortcutIntent = new Intent(this, TaskListActivity.class);
shortcutIntent.setAction(Intent.ACTION_VIEW); shortcutIntent.setAction(Intent.ACTION_VIEW);
shortcutIntent.putExtra(TaskListActivity.TOKEN_FILTER, filter); shortcutIntent.putExtra(TaskListActivity.TOKEN_FILTER_TITLE, filter.title);
shortcutIntent.putExtra(TaskListActivity.TOKEN_FILTER_SQL, filter.sqlQuery);
shortcutIntent.putExtra(TaskListActivity.TOKEN_FILTER_VALUES, filter.valuesForNewTasks);
menuItem.setIntent(shortcutIntent); menuItem.setIntent(shortcutIntent);
} }
@ -287,6 +292,46 @@ public class FilterListActivity extends ExpandableListActivity {
menu.setHeaderTitle(item.listingTitle); menu.setHeaderTitle(item.listingTitle);
} }
/**
* Creates a shortcut on the user's home screen
*
* @param shortcutIntent
* @param label
*/
private void createShortcut(Filter filter, Intent shortcutIntent, String label) {
Bitmap bitmap;
if(filter.listingIcon == null)
bitmap = ((BitmapDrawable) getResources().getDrawable(
R.drawable.icon_tag)).getBitmap();
else {
// create icon by superimposing astrid w/ icon
bitmap = ((BitmapDrawable) getResources().getDrawable(
R.drawable.icon)).getBitmap();
bitmap = bitmap.copy(bitmap.getConfig(), true);
Canvas canvas = new Canvas(bitmap);
/*canvas.drawBitmap(filter.listingIcon, bitmap.getWidth() -
filter.listingIcon.getWidth(), bitmap.getHeight() -
filter.listingIcon.getHeight(), null);*/
canvas.save();
}
Intent createShortcutIntent = new Intent();
createShortcutIntent.putExtra(
Intent.EXTRA_SHORTCUT_INTENT,
shortcutIntent);
createShortcutIntent.putExtra(
Intent.EXTRA_SHORTCUT_NAME, label);
createShortcutIntent.putExtra(
Intent.EXTRA_SHORTCUT_ICON, bitmap);
createShortcutIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT"); //$NON-NLS-1$
sendBroadcast(createShortcutIntent);
Toast.makeText(
FilterListActivity.this,
getString(
R.string.FLA_toast_onCreateShortcut,
label), Toast.LENGTH_LONG).show();
}
@Override @Override
public boolean onMenuItemSelected(int featureId, final MenuItem item) { public boolean onMenuItemSelected(int featureId, final MenuItem item) {
@ -306,37 +351,24 @@ public class FilterListActivity extends ExpandableListActivity {
ExpandableListContextMenuInfo info = (ExpandableListContextMenuInfo)item.getMenuInfo(); ExpandableListContextMenuInfo info = (ExpandableListContextMenuInfo)item.getMenuInfo();
final Intent shortcutIntent = item.getIntent(); final Intent shortcutIntent = item.getIntent();
Filter filter = (Filter)info.targetView.getTag(); final Filter filter = (Filter)info.targetView.getTag();
String dialogText = getString(R.string.FLA_shortcut_dialog);
final EditText editText = new EditText(this); final EditText editText = new EditText(this);
editText.setText(filter.listingTitle); editText.setText(filter.listingTitle);
dialogUtilities.viewDialog(this, dialogText, editText, new AlertDialog.Builder(this)
new DialogInterface.OnClickListener() { .setTitle(R.string.FLA_shortcut_dialog_title)
public void onClick(DialogInterface dialog, int which) { .setMessage(R.string.FLA_shortcut_dialog)
String label = editText.getText().toString(); .setView(editText)
.setIcon(android.R.drawable.ic_dialog_info)
Intent createShortcutIntent = new Intent(); .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
createShortcutIntent.putExtra( public void onClick(DialogInterface dialog, int which) {
Intent.EXTRA_SHORTCUT_INTENT, String label = editText.getText().toString();
shortcutIntent); createShortcut(filter, shortcutIntent, label);
createShortcutIntent.putExtra( }
Intent.EXTRA_SHORTCUT_NAME, label); })
createShortcutIntent.putExtra( .setNegativeButton(android.R.string.cancel, null)
Intent.EXTRA_SHORTCUT_ICON, .show();
((BitmapDrawable) getResources().getDrawable(
R.drawable.icon_tag)).getBitmap());
createShortcutIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT"); //$NON-NLS-1$
sendBroadcast(createShortcutIntent);
Toast.makeText(
FilterListActivity.this,
getString(
R.string.FLA_toast_onCreateShortcut,
label), Toast.LENGTH_LONG).show();
}
}, null);
return true; return true;
} }

@ -27,9 +27,9 @@ import java.util.List;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.app.DatePickerDialog; import android.app.DatePickerDialog;
import android.app.DatePickerDialog.OnDateSetListener;
import android.app.TabActivity; import android.app.TabActivity;
import android.app.TimePickerDialog; import android.app.TimePickerDialog;
import android.app.DatePickerDialog.OnDateSetListener;
import android.app.TimePickerDialog.OnTimeSetListener; import android.app.TimePickerDialog.OnTimeSetListener;
import android.content.ContentValues; import android.content.ContentValues;
import android.content.DialogInterface; import android.content.DialogInterface;
@ -45,6 +45,7 @@ import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.ViewGroup.LayoutParams; import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterView; import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView; import android.widget.AutoCompleteTextView;
import android.widget.Button; import android.widget.Button;
@ -60,22 +61,21 @@ import android.widget.TextView;
import android.widget.TimePicker; import android.widget.TimePicker;
import android.widget.Toast; import android.widget.Toast;
import android.widget.ToggleButton; import android.widget.ToggleButton;
import android.widget.AdapterView.OnItemSelectedListener;
import com.flurry.android.FlurryAgent; import com.flurry.android.FlurryAgent;
import com.timsu.astrid.R; import com.timsu.astrid.R;
import com.timsu.astrid.data.enums.RepeatInterval; import com.timsu.astrid.data.enums.RepeatInterval;
import com.timsu.astrid.data.task.TaskModelForEdit;
import com.timsu.astrid.data.task.AbstractTaskModel.RepeatInfo; import com.timsu.astrid.data.task.AbstractTaskModel.RepeatInfo;
import com.timsu.astrid.data.task.TaskModelForEdit;
import com.timsu.astrid.utilities.AstridUtilities; import com.timsu.astrid.utilities.AstridUtilities;
import com.timsu.astrid.widget.NumberPicker; import com.timsu.astrid.widget.NumberPicker;
import com.timsu.astrid.widget.NumberPickerDialog; import com.timsu.astrid.widget.NumberPickerDialog;
import com.timsu.astrid.widget.TimeDurationControlSet;
import com.timsu.astrid.widget.NumberPickerDialog.OnNumberPickedListener; import com.timsu.astrid.widget.NumberPickerDialog.OnNumberPickedListener;
import com.timsu.astrid.widget.TimeDurationControlSet;
import com.timsu.astrid.widget.TimeDurationControlSet.TimeDurationType; import com.timsu.astrid.widget.TimeDurationControlSet.TimeDurationType;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.data.Property.IntegerProperty; import com.todoroo.andlib.data.Property.IntegerProperty;
import com.todoroo.andlib.data.Property.StringProperty; import com.todoroo.andlib.data.Property.StringProperty;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.service.Autowired; import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.DependencyInjectionService; import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.service.ExceptionService; import com.todoroo.andlib.service.ExceptionService;
@ -804,7 +804,7 @@ public final class TaskEditActivity extends TabActivity {
@Override @Override
public void writeToModel() { public void writeToModel() {
UrgencyValue item = urgencyAdapter.getItem(urgency.getSelectedItemPosition()); UrgencyValue item = urgencyAdapter.getItem(urgency.getSelectedItemPosition());
model.setValue(Task.DUE_DATE, item.dueDate); model.setDueDateAndTime(new Date(item.dueDate), item.hasDueTime);
} }
} }
@ -826,6 +826,7 @@ public final class TaskEditActivity extends TabActivity {
public HideUntilControlSet(int hideUntil) { public HideUntilControlSet(int hideUntil) {
this.hideUntil = (Spinner) findViewById(hideUntil); this.hideUntil = (Spinner) findViewById(hideUntil);
this.hideUntil.setOnItemSelectedListener(this);
} }
private ArrayAdapter<HideUntilValue> adapter; private ArrayAdapter<HideUntilValue> adapter;

@ -17,19 +17,19 @@ import android.database.Cursor;
import android.os.Bundle; import android.os.Bundle;
import android.os.Parcelable; import android.os.Parcelable;
import android.view.ContextMenu; import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu; import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.Window;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.View.OnClickListener; import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.AbsListView; import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.ImageButton; import android.widget.ImageButton;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.ListView; import android.widget.ListView;
import android.widget.TextView; import android.widget.TextView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.AdapterView.AdapterContextMenuInfo;
import com.flurry.android.FlurryAgent; import com.flurry.android.FlurryAgent;
import com.timsu.astrid.R; import com.timsu.astrid.R;
@ -38,6 +38,7 @@ import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.service.Autowired; import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.DependencyInjectionService; import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.service.ExceptionService; import com.todoroo.andlib.service.ExceptionService;
import com.todoroo.andlib.sql.QueryTemplate;
import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.andlib.utility.Pair; import com.todoroo.andlib.utility.Pair;
@ -83,8 +84,18 @@ public class TaskListActivity extends ListActivity implements OnScrollListener {
// --- constants // --- constants
/** token for passing a {@link Filter} object through extras */
public static final String TOKEN_FILTER = "filter"; //$NON-NLS-1$ public static final String TOKEN_FILTER = "filter"; //$NON-NLS-1$
/** token for passing a {@link Filter}'s title through extras */
public static final String TOKEN_FILTER_TITLE = "title"; //$NON-NLS-1$
/** token for passing a {@link Filter}'s sql through extras */
public static final String TOKEN_FILTER_SQL = "sql"; //$NON-NLS-1$
/** token for passing a {@link Filter}'s values for new tasks through extras */
public static final String TOKEN_FILTER_VALUES = "values"; //$NON-NLS-1$
// --- instance variables // --- instance variables
@Autowired @Autowired
@ -126,7 +137,15 @@ public class TaskListActivity extends ListActivity implements OnScrollListener {
Bundle extras = getIntent().getExtras(); Bundle extras = getIntent().getExtras();
if(extras != null && extras.containsKey(TOKEN_FILTER)) { if(extras != null && extras.containsKey(TOKEN_FILTER)) {
// probably launched from filter list activity
filter = extras.getParcelable(TOKEN_FILTER); filter = extras.getParcelable(TOKEN_FILTER);
} else if(extras != null && extras.containsKey(TOKEN_FILTER_SQL)) {
// launched from desktop shortcut, must create a fake filter
String title = extras.getString(TOKEN_FILTER_TITLE);
String sql = extras.getString(TOKEN_FILTER_SQL);
ContentValues values = extras.getParcelable(TOKEN_FILTER_VALUES);
filter = new Filter("", "", title, new QueryTemplate(), values);
filter.sqlQuery = sql;
} else { } else {
filter = CoreFilterExposer.buildInboxFilter(getResources()); filter = CoreFilterExposer.buildInboxFilter(getResources());
} }

@ -11,11 +11,11 @@ import android.content.res.Resources;
import android.database.Cursor; import android.database.Cursor;
import android.graphics.Paint; import android.graphics.Paint;
import android.view.ContextMenu; import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.View.OnCreateContextMenuListener; import android.view.View.OnCreateContextMenuListener;
import android.view.ViewGroup;
import android.widget.CheckBox; import android.widget.CheckBox;
import android.widget.CursorAdapter; import android.widget.CursorAdapter;
import android.widget.LinearLayout; import android.widget.LinearLayout;
@ -185,14 +185,14 @@ public class TaskAdapter extends CursorAdapter {
ViewHolder viewHolder = (ViewHolder)view.getTag(); ViewHolder viewHolder = (ViewHolder)view.getTag();
// don't bother instantiating views if we're busy // don't bother instantiating views if we're busy
if(isFling) { /*if(isFling) {
viewHolder.details.removeViews(2, viewHolder.details.getChildCount() - 2); viewHolder.details.removeViews(2, viewHolder.details.getChildCount() - 2);
viewHolder.dueDate.setVisibility(View.INVISIBLE); viewHolder.dueDate.setVisibility(View.INVISIBLE);
viewHolder.nameView.setText(R.string.TAd_flingText); viewHolder.nameView.setText(R.string.TAd_flingText);
viewHolder.importance.setVisibility(View.INVISIBLE); viewHolder.importance.setVisibility(View.INVISIBLE);
viewHolder.completeBox.setVisibility(View.INVISIBLE); viewHolder.completeBox.setVisibility(View.INVISIBLE);
return; return;
} }*/
// name // name
final TextView nameView = viewHolder.nameView; { final TextView nameView = viewHolder.nameView; {
@ -239,8 +239,9 @@ public class TaskAdapter extends CursorAdapter {
} }
} }
// other information - send out a request for it // other information - send out a request for it (only if not fling)
final LinearLayout detailsView = viewHolder.details; { final LinearLayout detailsView = viewHolder.details;
if(!isFling) {
detailsView.removeViews(2, detailsView.getChildCount() - 2); detailsView.removeViews(2, detailsView.getChildCount() - 2);
if(detailCache.containsKey(task.getId())) { if(detailCache.containsKey(task.getId())) {
ArrayList<TaskDetail> details = detailCache.get(task.getId()); ArrayList<TaskDetail> details = detailCache.get(task.getId());

@ -267,7 +267,7 @@ public final class Task extends AbstractModel {
* @param date * @param date
* @param hasDueTime * @param hasDueTime
*/ */
public void setDueDate(Date dueDate, boolean hasDueTime) { public void setDueDateAndTime(Date dueDate, boolean hasDueTime) {
if(!hasDueTime) { if(!hasDueTime) {
dueDate.setHours(23); dueDate.setHours(23);
dueDate.setMinutes(59); dueDate.setMinutes(59);

@ -70,6 +70,7 @@ public class AstridDependencyInjector implements AbstractDependencyInjector {
// com.todoroo.android.utility // com.todoroo.android.utility
injectables.put("dialogUtilities", DialogUtilities.class); injectables.put("dialogUtilities", DialogUtilities.class);
injectables.put("informationDialogTitleResource", R.string.DLG_information_title); injectables.put("informationDialogTitleResource", R.string.DLG_information_title);
injectables.put("confirmDialogTitleResource", R.string.DLG_confirm_title);
injectables.put("dateUtilities", DateUtilities.class); injectables.put("dateUtilities", DateUtilities.class);
injectables.put("yearsResource", R.plurals.DUt_years); injectables.put("yearsResource", R.plurals.DUt_years);
injectables.put("monthsResource", R.plurals.DUt_months); injectables.put("monthsResource", R.plurals.DUt_months);

Loading…
Cancel
Save