From fd26639d33a0c1e0be5fc2334cf74c755b623dbd Mon Sep 17 00:00:00 2001 From: Tim Su Date: Wed, 7 Jul 2010 15:39:11 -0700 Subject: [PATCH] Cosmetic fixes to checkbox size, made quick add add to the list itself, note detail exposer fixes --- astrid/AndroidManifest.xml | 2 +- astrid/astrid.launch | 2 + .../astrid/notes/NoteDetailExposer.java | 5 +- astrid/res/drawable/btn_check_off.png | Bin 1172 -> 1267 bytes astrid/res/drawable/btn_check_off_pressed.png | Bin 1513 -> 1420 bytes astrid/res/drawable/btn_check_on.png | Bin 1486 -> 1416 bytes astrid/res/drawable/btn_check_on_pressed.png | Bin 1575 -> 1483 bytes astrid/res/layout/task_adapter_row.xml | 11 +- astrid/res/layout/task_list_activity.xml | 1 + astrid/res/values/strings-3.0.xml | 3 + astrid/res/values/strings-reminders.xml | 18 +-- .../astrid/activity/TaskListActivity.java | 129 ++++++++++++++++-- .../todoroo/astrid/adapter/TaskAdapter.java | 27 +--- 13 files changed, 141 insertions(+), 57 deletions(-) diff --git a/astrid/AndroidManifest.xml b/astrid/AndroidManifest.xml index 8b9693611..99881ae55 100644 --- a/astrid/AndroidManifest.xml +++ b/astrid/AndroidManifest.xml @@ -192,7 +192,7 @@ - + diff --git a/astrid/astrid.launch b/astrid/astrid.launch index e11e53fbf..e1e654a56 100644 --- a/astrid/astrid.launch +++ b/astrid/astrid.launch @@ -4,7 +4,9 @@ + + diff --git a/astrid/plugin-src/com/todoroo/astrid/notes/NoteDetailExposer.java b/astrid/plugin-src/com/todoroo/astrid/notes/NoteDetailExposer.java index 5d7e42e0f..5a8a3ceea 100644 --- a/astrid/plugin-src/com/todoroo/astrid/notes/NoteDetailExposer.java +++ b/astrid/plugin-src/com/todoroo/astrid/notes/NoteDetailExposer.java @@ -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]; diff --git a/astrid/res/drawable/btn_check_off.png b/astrid/res/drawable/btn_check_off.png index 56d3861542ea408e871b7003c38e36dd3b7fae61..df7f9d1ddc4a8b7a7bb4102596864bb73bd7009d 100644 GIT binary patch literal 1267 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 literal 1575 zcmV+?2H5$DP)(RCwC#m|JWVRT#(rXJ&VC>1BJN z&;r|L%cYWn)F25#B0OMB!03}VLZZ^zb*+=0 zVH8EC4+Ep3uX)=~Z_%&c5z9~^i>*8M$%-e!wWASC&jOslxX`OD@vy=C2-gK7Qs=!- zo|RAq!CKo}600yX1Efi;bm^_-wwgie`2w`JERf;TS}^!&G&I%lCd`nf($ZS#`LUKF zBQRkXhNc?7OtJX14~cM&l9v;>4DZz>(f#8u$H3E(^(w^A{B zbAw$U$fFVrMZtW6Rv;76zPLnS;{>z)ci@i(RTaBqzyq-stgpQYK{>$e1j}a01vBmH zU?BtNRhH%$N(W98RG7Z6(Y@w2f;E;A)FkPcb_`&8f^nXK64p(^xW+SNsn6@_OGG>C z3Rx@Ohfiw?z^2NL_#iHKU|HET03A}9fn9o!2$~$ z&lItk1C`EWu^X`3vnPSB#Tu%PWQ^Db{Ww^AC#uXOtZ0wzW@afVZZWRPm&kGDL=rgK zPpzSbWU)8YUW%zhOEi?U*aS%&IOy-d+C@R6qd!BWQedVDM!F1taWJ2>7|(I#DeC>Z zX%Em}MJIzm=Ts1nwIuUG?Wg_1p+*fQ7ciy3UX8Y4=juj+IsrZ%ck;sSOxl&cImH-v zf$gSr@86)C#t5+QEI|#_;gO}WtecN{)mA>jVXRLlCJE3U;}- za}((d7nxm^&$}fRC=KsdP2$v05T}i#%CriSu-<%|u9>Ek3-^w+V#i7f_E8G<*|=h1 z`Ad$-!;%|gCY%)r*Iin^vXTf5`|N-QB?JP}wPdc!keVr}is+W1dc3ou9aj7tI2BTs zXRbWw-oc->43WL85EbdKDfL4a{mL>jzy-M|HK9NWxcSmTbTw{-n2y34I|HxzaxCX< zF_s$#?sJm%nl#=X^Vu;ZL(YbqQ7)9h-WA-4>OczVD<`hIH}9O8!yGNznkK;r2&ikyg59 zsX2*;A{|nf)Tz2~VT<+t(ray6xh=3zPy>@(vXKd=6_o0E63R-GgU= zu#*nYAOCR4<~y2s1y9ZDZH7RpUWwY_Bwc5iv=0m5WWSNPdk^(2-~-Zev=A8806b3e zVCT#A9h=vh6>ZDu(Sh@u-}L80qfOW>H$~U6+1S4KyippZi115*GoZN-g=yp9{V^BRe*?j~B!OE{X%V1@&GFTa`bmM;k Z1^{MNY!bw$v*7>$002ovPDHLkV1m94^?(2X diff --git a/astrid/res/layout/task_adapter_row.xml b/astrid/res/layout/task_adapter_row.xml index 71ddee4a7..d22544fad 100644 --- a/astrid/res/layout/task_adapter_row.xml +++ b/astrid/res/layout/task_adapter_row.xml @@ -3,31 +3,28 @@ diff --git a/astrid/res/layout/task_list_activity.xml b/astrid/res/layout/task_list_activity.xml index 77190497c..9218958bf 100644 --- a/astrid/res/layout/task_list_activity.xml +++ b/astrid/res/layout/task_list_activity.xml @@ -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"/> diff --git a/astrid/res/values/strings-3.0.xml b/astrid/res/values/strings-3.0.xml index 3fd9ad16e..6c5839756 100644 --- a/astrid/res/values/strings-3.0.xml +++ b/astrid/res/values/strings-3.0.xml @@ -146,6 +146,9 @@ Search Within This Filter + + Custom + Add to this list... diff --git a/astrid/res/values/strings-reminders.xml b/astrid/res/values/strings-reminders.xml index 29d7b5302..fba6b5678 100644 --- a/astrid/res/values/strings-reminders.xml +++ b/astrid/res/values/strings-reminders.xml @@ -10,13 +10,13 @@ Remind me... - when it\'s time to start the task + ... when it\'s time to start the task - when task is overdue + ... when task is overdue - randomly every + ... randomly once Ring/Vibrate Type: @@ -29,12 +29,12 @@ - hour - day - week - two weeks - month - two months + an hour + a day + a week + in two weeks + a month + in two months diff --git a/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java b/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java index fb887c391..b31ac1769 100644 --- a/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java +++ b/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java @@ -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 currentCursor = (TodorooCursor)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 * ====================================================================== */ diff --git a/astrid/src/com/todoroo/astrid/adapter/TaskAdapter.java b/astrid/src/com/todoroo/astrid/adapter/TaskAdapter.java index 33ea1191f..bdce7fa4f 100644 --- a/astrid/src/com/todoroo/astrid/adapter/TaskAdapter.java +++ b/astrid/src/com/todoroo/astrid/adapter/TaskAdapter.java @@ -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 {