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

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

@ -192,7 +192,7 @@
</receiver>
<!-- notes -->
<receiver android:name="com.todoroo.astrid.notes.NotesDetailExposer">
<receiver android:name="com.todoroo.astrid.notes.NoteDetailExposer">
<intent-filter>
<action android:name="com.todoroo.astrid.REQUEST_DETAILS" />
<category android:name="android.intent.category.DEFAULT" />

@ -4,7 +4,9 @@
<booleanAttribute key="ch.zork.quicklaunch" value="true"/>
<stringAttribute key="ch.zork.quicklaunch.icon" value="14.gif"/>
<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"/>
<stringAttribute key="com.android.ide.eclipse.adt.avd" value="android-22"/>
<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"/>

@ -37,6 +37,8 @@ public class NoteDetailExposer extends BroadcastReceiver {
if(staticTaskService == null) {
DependencyInjectionService.getInstance().inject(this);
staticTaskService = taskService;
} else {
taskService = staticTaskService;
}
Task task = taskService.fetchById(taskId, Task.NOTES);
@ -46,8 +48,7 @@ public class NoteDetailExposer extends BroadcastReceiver {
if(notes.length() == 0)
return;
TaskDetail taskDetail = new TaskDetail(NotesPlugin.IDENTIFIER,
"Notes: " + notes);
TaskDetail taskDetail = new TaskDetail(NotesPlugin.IDENTIFIER, notes);
// transmit
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"
android:orientation="horizontal"
android:background="@android:drawable/list_selector_background"
android:focusable="true"
android:paddingLeft="4dip"
android:paddingRight="6dip"
android:paddingRight="4dip"
android:paddingTop="4dip"
android:paddingBottom="4dip"
android:minHeight="58dip"
android:minHeight="48dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<!-- completion check-box -->
<CheckBox android:id="@+id/completeBox"
android:layout_width="52dip"
android:layout_width="34dip"
android:layout_height="fill_parent"
android:layout_weight="1"
android:paddingLeft="5dip"
android:focusable="false"
android:button="@drawable/btn_check"/>
<LinearLayout android:id="@+id/details"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="100"
android:paddingLeft="12dip"
android:paddingLeft="6dip"
android:paddingRight="2dip"
android:orientation="vertical">
<!-- task name -->

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

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

@ -10,13 +10,13 @@
<string name="TEA_reminder_label">Remind me...</string>
<!-- 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 -->
<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)-->
<string name="TEA_reminder_random">randomly every</string>
<string name="TEA_reminder_random">... randomly once</string>
<!-- Reminder alarm clock label -->
<string name="TEA_reminder_alarm_label">Ring/Vibrate Type:</string>
@ -29,12 +29,12 @@
<string-array name="TEA_reminder_random">
<!-- random reminder labels for edit page. -->
<item>hour</item>
<item>day</item>
<item>week</item>
<item>two weeks</item>
<item>month</item>
<item>two months</item>
<item>an hour</item>
<item>a day</item>
<item>a week</item>
<item>in two weeks</item>
<item>a month</item>
<item>in two months</item>
</string-array>
<string-array name="TEA_reminder_random_hours">

@ -18,20 +18,25 @@ import android.database.Cursor;
import android.os.Bundle;
import android.os.Parcelable;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
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.OnScrollListener;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
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.timsu.astrid.R;
@ -52,6 +57,7 @@ import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.api.TaskDetail;
import com.todoroo.astrid.dao.Database;
import com.todoroo.astrid.dao.TaskDao.TaskCriteria;
import com.todoroo.astrid.filters.CoreFilterExposer;
import com.todoroo.astrid.model.Metadata;
import com.todoroo.astrid.model.Task;
@ -126,6 +132,7 @@ public class TaskListActivity extends ListActivity implements OnScrollListener {
protected TaskAdapter taskAdapter = null;
protected DetailReceiver detailReceiver = new DetailReceiver();
EditText quickAddBox;
Filter filter;
/* ======================================================================
@ -232,20 +239,61 @@ public class TaskListActivity extends ListActivity implements OnScrollListener {
((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) {
TextView quickAdd = (TextView)findViewById(R.id.quickAddText);
if(quickAdd.getText().length() > 0) {
quickAddTask(quickAdd.getText().toString());
loadTaskListContent(true);
if(quickAddBox.getText().length() > 0) {
quickAddTask(quickAddBox.getText().toString(), true);
}
}
});
((ImageButton)findViewById(R.id.extendedAddButton)).setOnClickListener(new OnClickListener() {
public void onClick(View v) {
TextView quickAdd = (TextView)findViewById(R.id.quickAddText);
Task task = quickAddTask(quickAdd.getText().toString());
Task task = quickAddTask(quickAddBox.getText().toString(), false);
Intent intent = new Intent(TaskListActivity.this, TaskEditActivity.class);
intent.putExtra(TaskEditActivity.ID_TOKEN, task.getId());
startActivityForResult(intent, ACTIVITY_EDIT_TASK);
@ -259,7 +307,7 @@ public class TaskListActivity extends ListActivity implements OnScrollListener {
* @return
*/
@SuppressWarnings("nls")
protected Task quickAddTask(String title) {
protected Task quickAddTask(String title, boolean selectNewTask) {
try {
Task task = new Task();
task.setValue(Task.TITLE, title);
@ -289,6 +337,12 @@ public class TaskListActivity extends ListActivity implements OnScrollListener {
TextView quickAdd = (TextView)findViewById(R.id.quickAddText);
quickAdd.setText(""); //$NON-NLS-1$
if(selectNewTask) {
loadTaskListContent(true);
selectCustomId(task.getId());
}
return task;
} catch (Exception e) {
exceptionService.displayAndReportError(this, "quick-add-task", e);
@ -408,10 +462,14 @@ public class TaskListActivity extends ListActivity implements OnScrollListener {
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() {
// use default ordering if none specified
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),
DateUtilities.now() + DateUtilities.ONE_WEEK,
Task.DUE_DATE) + " + 200000000 * " +
@ -433,6 +491,49 @@ public class TaskListActivity extends ListActivity implements OnScrollListener {
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
* ====================================================================== */

@ -11,13 +11,11 @@ import android.content.res.Resources;
import android.database.Cursor;
import android.graphics.Paint;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnCreateContextMenuListener;
import android.view.View.OnKeyListener;
import android.view.ViewGroup;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.View.OnCreateContextMenuListener;
import android.widget.CheckBox;
import android.widget.CursorAdapter;
import android.widget.LinearLayout;
@ -185,7 +183,7 @@ public class TaskAdapter extends CursorAdapter {
}
/** 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();
ViewHolder viewHolder = (ViewHolder)view.getTag();
@ -338,25 +336,6 @@ public class TaskAdapter extends CursorAdapter {
// context menu 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 {

Loading…
Cancel
Save