Cosmetic fixes to checkbox size, made quick add add to the list itself, note detail exposer fixes

pull/14/head
Tim Su 16 years ago
parent 9253b4e911
commit fd26639d33

@ -192,7 +192,7 @@
</receiver> </receiver>
<!-- notes --> <!-- notes -->
<receiver android:name="com.todoroo.astrid.notes.NotesDetailExposer"> <receiver android:name="com.todoroo.astrid.notes.NoteDetailExposer">
<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" />

@ -4,7 +4,9 @@
<booleanAttribute key="ch.zork.quicklaunch" value="true"/> <booleanAttribute key="ch.zork.quicklaunch" value="true"/>
<stringAttribute key="ch.zork.quicklaunch.icon" value="14.gif"/> <stringAttribute key="ch.zork.quicklaunch.icon" value="14.gif"/>
<intAttribute key="ch.zork.quicklaunch.index" value="0"/> <intAttribute key="ch.zork.quicklaunch.index" value="0"/>
<stringAttribute key="ch.zork.quicklaunch.mode" value="debug"/>
<intAttribute key="com.android.ide.eclipse.adt.action" value="0"/> <intAttribute key="com.android.ide.eclipse.adt.action" value="0"/>
<stringAttribute key="com.android.ide.eclipse.adt.avd" value="android-22"/>
<stringAttribute key="com.android.ide.eclipse.adt.commandline" value="-scale 0.7"/> <stringAttribute key="com.android.ide.eclipse.adt.commandline" value="-scale 0.7"/>
<intAttribute key="com.android.ide.eclipse.adt.delay" value="0"/> <intAttribute key="com.android.ide.eclipse.adt.delay" value="0"/>
<booleanAttribute key="com.android.ide.eclipse.adt.nobootanim" value="true"/> <booleanAttribute key="com.android.ide.eclipse.adt.nobootanim" value="true"/>

@ -37,6 +37,8 @@ public class NoteDetailExposer extends BroadcastReceiver {
if(staticTaskService == null) { if(staticTaskService == null) {
DependencyInjectionService.getInstance().inject(this); DependencyInjectionService.getInstance().inject(this);
staticTaskService = taskService; staticTaskService = taskService;
} else {
taskService = staticTaskService;
} }
Task task = taskService.fetchById(taskId, Task.NOTES); Task task = taskService.fetchById(taskId, Task.NOTES);
@ -46,8 +48,7 @@ public class NoteDetailExposer extends BroadcastReceiver {
if(notes.length() == 0) if(notes.length() == 0)
return; return;
TaskDetail taskDetail = new TaskDetail(NotesPlugin.IDENTIFIER, TaskDetail taskDetail = new TaskDetail(NotesPlugin.IDENTIFIER, notes);
"Notes: " + notes);
// transmit // transmit
TaskDetail[] details = new TaskDetail[1]; TaskDetail[] details = new TaskDetail[1];

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

@ -3,31 +3,28 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:orientation="horizontal"
android:background="@android:drawable/list_selector_background" android:background="@android:drawable/list_selector_background"
android:focusable="true"
android:paddingLeft="4dip" android:paddingLeft="4dip"
android:paddingRight="6dip" android:paddingRight="4dip"
android:paddingTop="4dip" android:paddingTop="4dip"
android:paddingBottom="4dip" android:paddingBottom="4dip"
android:minHeight="58dip" android:minHeight="48dip"
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content">
<!-- completion check-box --> <!-- completion check-box -->
<CheckBox android:id="@+id/completeBox" <CheckBox android:id="@+id/completeBox"
android:layout_width="52dip" android:layout_width="34dip"
android:layout_height="fill_parent" android:layout_height="fill_parent"
android:layout_weight="1" android:layout_weight="1"
android:paddingLeft="5dip" android:paddingLeft="5dip"
android:focusable="false"
android:button="@drawable/btn_check"/> android:button="@drawable/btn_check"/>
<LinearLayout android:id="@+id/details" <LinearLayout android:id="@+id/details"
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="12dip" android:paddingLeft="6dip"
android:paddingRight="2dip" android:paddingRight="2dip"
android:orientation="vertical"> android:orientation="vertical">
<!-- task name --> <!-- task name -->

@ -70,6 +70,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:visibility="gone"
android:src="@drawable/tango_add" android:src="@drawable/tango_add"
android:scaleType="fitCenter"/> android:scaleType="fitCenter"/>

@ -146,6 +146,9 @@
<!-- Search Hint--> <!-- Search Hint-->
<string name="TLA_search_hint">Search Within This Filter</string> <string name="TLA_search_hint">Search Within This Filter</string>
<!-- Custom Filter title -->
<string name="TLA_custom">Custom</string>
<!-- Quick Add Hint--> <!-- Quick Add Hint-->
<string name="TLA_quick_add_hint">Add to this list...</string> <string name="TLA_quick_add_hint">Add to this list...</string>

@ -10,13 +10,13 @@
<string name="TEA_reminder_label">Remind me...</string> <string name="TEA_reminder_label">Remind me...</string>
<!-- Reminder @ deadline --> <!-- Reminder @ deadline -->
<string name="TEA_reminder_due">when it\'s time to start the task</string> <string name="TEA_reminder_due">... when it\'s time to start the task</string>
<!-- Reminder after deadline --> <!-- Reminder after deadline -->
<string name="TEA_reminder_overdue">when task is overdue</string> <string name="TEA_reminder_overdue">... when task is overdue</string>
<!-- Reminder at random times (%s => time plural)--> <!-- Reminder at random times (%s => time plural)-->
<string name="TEA_reminder_random">randomly every</string> <string name="TEA_reminder_random">... randomly once</string>
<!-- Reminder alarm clock label --> <!-- Reminder alarm clock label -->
<string name="TEA_reminder_alarm_label">Ring/Vibrate Type:</string> <string name="TEA_reminder_alarm_label">Ring/Vibrate Type:</string>
@ -29,12 +29,12 @@
<string-array name="TEA_reminder_random"> <string-array name="TEA_reminder_random">
<!-- random reminder labels for edit page. --> <!-- random reminder labels for edit page. -->
<item>hour</item> <item>an hour</item>
<item>day</item> <item>a day</item>
<item>week</item> <item>a week</item>
<item>two weeks</item> <item>in two weeks</item>
<item>month</item> <item>a month</item>
<item>two months</item> <item>in two months</item>
</string-array> </string-array>
<string-array name="TEA_reminder_random_hours"> <string-array name="TEA_reminder_random_hours">

@ -18,20 +18,25 @@ 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.KeyEvent;
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.View.OnClickListener;
import android.view.Window; import android.view.Window;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.View.OnClickListener;
import android.view.View.OnKeyListener;
import android.view.inputmethod.EditorInfo;
import android.widget.AbsListView; import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener; import android.widget.EditText;
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.Toast; import android.widget.Toast;
import android.widget.AbsListView.OnScrollListener;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.TextView.OnEditorActionListener;
import com.flurry.android.FlurryAgent; import com.flurry.android.FlurryAgent;
import com.timsu.astrid.R; import com.timsu.astrid.R;
@ -52,6 +57,7 @@ import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.api.TaskDetail; import com.todoroo.astrid.api.TaskDetail;
import com.todoroo.astrid.dao.Database; import com.todoroo.astrid.dao.Database;
import com.todoroo.astrid.dao.TaskDao.TaskCriteria;
import com.todoroo.astrid.filters.CoreFilterExposer; import com.todoroo.astrid.filters.CoreFilterExposer;
import com.todoroo.astrid.model.Metadata; import com.todoroo.astrid.model.Metadata;
import com.todoroo.astrid.model.Task; import com.todoroo.astrid.model.Task;
@ -126,6 +132,7 @@ public class TaskListActivity extends ListActivity implements OnScrollListener {
protected TaskAdapter taskAdapter = null; protected TaskAdapter taskAdapter = null;
protected DetailReceiver detailReceiver = new DetailReceiver(); protected DetailReceiver detailReceiver = new DetailReceiver();
EditText quickAddBox;
Filter filter; Filter filter;
/* ====================================================================== /* ======================================================================
@ -232,20 +239,61 @@ public class TaskListActivity extends ListActivity implements OnScrollListener {
((TextView)findViewById(R.id.listLabel)).setText(filter.title); ((TextView)findViewById(R.id.listLabel)).setText(filter.title);
((ImageButton)findViewById(R.id.quickAddButton)).setOnClickListener(new OnClickListener() { getListView().setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View view, int keyCode, KeyEvent event) {
if(event.getAction() != KeyEvent.ACTION_UP)
return false;
// hot-key to set task priority - 1-4 or ALT + Q-R
if(event.getNumber() >= '1' && event.getNumber() <= '4') {
view = getListView().getSelectedView();
int importance = event.getNumber() - '1';
Task task = ((ViewHolder)view.getTag()).task;
task.setValue(Task.IMPORTANCE, importance);
taskService.save(task, false);
taskAdapter.setFieldContentsAndVisibility(view, task);
}
return false;
}
});
quickAddBox = (EditText) findViewById(R.id.quickAddText);
quickAddBox.setOnEditorActionListener(new OnEditorActionListener() {
/**
* When user presses enter, quick-add the task
*/
@Override
public boolean onEditorAction(TextView view, int actionId, KeyEvent event) {
if(actionId == EditorInfo.IME_NULL && quickAddBox.getText().length() > 0) {
quickAddTask(quickAddBox.getText().toString(), true);
return true;
}
return false;
}
});
final ImageButton quickAddButton = ((ImageButton)findViewById(R.id.quickAddButton));
quickAddBox.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
quickAddButton.setVisibility(View.VISIBLE);
return false;
}
});
quickAddButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) { public void onClick(View v) {
TextView quickAdd = (TextView)findViewById(R.id.quickAddText); if(quickAddBox.getText().length() > 0) {
if(quickAdd.getText().length() > 0) { quickAddTask(quickAddBox.getText().toString(), true);
quickAddTask(quickAdd.getText().toString());
loadTaskListContent(true);
} }
} }
}); });
((ImageButton)findViewById(R.id.extendedAddButton)).setOnClickListener(new OnClickListener() { ((ImageButton)findViewById(R.id.extendedAddButton)).setOnClickListener(new OnClickListener() {
public void onClick(View v) { public void onClick(View v) {
TextView quickAdd = (TextView)findViewById(R.id.quickAddText); Task task = quickAddTask(quickAddBox.getText().toString(), false);
Task task = quickAddTask(quickAdd.getText().toString());
Intent intent = new Intent(TaskListActivity.this, TaskEditActivity.class); Intent intent = new Intent(TaskListActivity.this, TaskEditActivity.class);
intent.putExtra(TaskEditActivity.ID_TOKEN, task.getId()); intent.putExtra(TaskEditActivity.ID_TOKEN, task.getId());
startActivityForResult(intent, ACTIVITY_EDIT_TASK); startActivityForResult(intent, ACTIVITY_EDIT_TASK);
@ -259,7 +307,7 @@ public class TaskListActivity extends ListActivity implements OnScrollListener {
* @return * @return
*/ */
@SuppressWarnings("nls") @SuppressWarnings("nls")
protected Task quickAddTask(String title) { protected Task quickAddTask(String title, boolean selectNewTask) {
try { try {
Task task = new Task(); Task task = new Task();
task.setValue(Task.TITLE, title); task.setValue(Task.TITLE, title);
@ -289,6 +337,12 @@ public class TaskListActivity extends ListActivity implements OnScrollListener {
TextView quickAdd = (TextView)findViewById(R.id.quickAddText); TextView quickAdd = (TextView)findViewById(R.id.quickAddText);
quickAdd.setText(""); //$NON-NLS-1$ quickAdd.setText(""); //$NON-NLS-1$
if(selectNewTask) {
loadTaskListContent(true);
selectCustomId(task.getId());
}
return task; return task;
} catch (Exception e) { } catch (Exception e) {
exceptionService.displayAndReportError(this, "quick-add-task", e); exceptionService.displayAndReportError(this, "quick-add-task", e);
@ -408,10 +462,14 @@ public class TaskListActivity extends ListActivity implements OnScrollListener {
getListView().setSelection(oldListItemSelected); getListView().setSelection(oldListItemSelected);
} }
/** Fill in the Action Item List with current items */ /**
* Fill in the Task List with current items
* @param withCustomId force task with given custom id to be part of list
*/
@SuppressWarnings("nls")
protected void setUpTaskList() { protected void setUpTaskList() {
// use default ordering if none specified
if(!filter.sqlQuery.toUpperCase().contains("ORDER BY")) { if(!filter.sqlQuery.toUpperCase().contains("ORDER BY")) {
// use default ordering if none specified
filter.sqlQuery += " ORDER BY " + Order.asc(Functions.caseStatement(Task.DUE_DATE.eq(0), filter.sqlQuery += " ORDER BY " + Order.asc(Functions.caseStatement(Task.DUE_DATE.eq(0),
DateUtilities.now() + DateUtilities.ONE_WEEK, DateUtilities.now() + DateUtilities.ONE_WEEK,
Task.DUE_DATE) + " + 200000000 * " + Task.DUE_DATE) + " + 200000000 * " +
@ -433,6 +491,49 @@ public class TaskListActivity extends ListActivity implements OnScrollListener {
loadTaskListContent(false); loadTaskListContent(false);
} }
/**
* Select a custom task id in the list. If it doesn't exist, create
* a new custom filter
* @param withCustomId
*/
@SuppressWarnings("nls")
private void selectCustomId(long withCustomId) {
// if already in the list, select it
TodorooCursor<Task> currentCursor = (TodorooCursor<Task>)taskAdapter.getCursor();
for(int i = 0; i < currentCursor.getCount(); i++) {
currentCursor.moveToPosition(i);
if(currentCursor.get(Task.ID) == withCustomId) {
getListView().setSelection(i);
return;
}
}
// create a custom cursor
if(!filter.sqlQuery.contains("WHERE"))
filter.sqlQuery += " WHERE " + TaskCriteria.byId(withCustomId);
else
filter.sqlQuery = filter.sqlQuery.replace("WHERE ", "WHERE " +
TaskCriteria.byId(withCustomId) + " OR ");
currentCursor = taskService.fetchFiltered(
TaskAdapter.PROPERTIES, filter);
startManagingCursor(currentCursor);
taskAdapter.changeCursor(currentCursor);
// update title
filter.title = getString(R.string.TLA_custom);
((TextView)findViewById(R.id.listLabel)).setText(filter.title);
// try selecting again
for(int i = 0; i < currentCursor.getCount(); i++) {
currentCursor.moveToPosition(i);
if(currentCursor.get(Task.ID) == withCustomId) {
getListView().setSelection(i);
break;
}
}
}
/* ====================================================================== /* ======================================================================
* ============================================================== actions * ============================================================== actions
* ====================================================================== */ * ====================================================================== */

@ -11,13 +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.KeyEvent;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.View.OnCreateContextMenuListener;
import android.view.View.OnKeyListener;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.View.OnCreateContextMenuListener;
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,7 +183,7 @@ public class TaskAdapter extends CursorAdapter {
} }
/** Helper method to set the contents and visibility of each field */ /** Helper method to set the contents and visibility of each field */
private void setFieldContentsAndVisibility(View view, Task task) { public void setFieldContentsAndVisibility(View view, Task task) {
Resources r = activity.getResources(); Resources r = activity.getResources();
ViewHolder viewHolder = (ViewHolder)view.getTag(); ViewHolder viewHolder = (ViewHolder)view.getTag();
@ -338,25 +336,6 @@ public class TaskAdapter extends CursorAdapter {
// context menu listener // context menu listener
container.setOnCreateContextMenuListener(listener); container.setOnCreateContextMenuListener(listener);
// key press listener
container.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if(event.getAction() != KeyEvent.ACTION_UP)
return false;
// hot-key to set task priority - 1-4 or ALT + Q-R
if(event.getNumber() >= '1' && event.getNumber() <= '4') {
int importance = event.getNumber() - '1';
Task task = ((ViewHolder)container.getTag()).task;
task.setValue(Task.IMPORTANCE, importance);
taskService.save(task, false);
setFieldContentsAndVisibility(container, task);
}
return false;
}
});
} }
class ContextMenuListener implements OnCreateContextMenuListener { class ContextMenuListener implements OnCreateContextMenuListener {

Loading…
Cancel
Save