diff --git a/astrid/plugin-src/com/todoroo/astrid/core/LinkActionExposer.java b/astrid/plugin-src/com/todoroo/astrid/core/LinkActionExposer.java index 908ca7462..3a2740402 100644 --- a/astrid/plugin-src/com/todoroo/astrid/core/LinkActionExposer.java +++ b/astrid/plugin-src/com/todoroo/astrid/core/LinkActionExposer.java @@ -17,13 +17,16 @@ import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.net.Uri; import android.text.Spannable; +import android.text.TextUtils; import android.text.style.URLSpan; import android.text.util.Linkify; import com.timsu.astrid.R; +import com.todoroo.andlib.utility.Preferences; import com.todoroo.astrid.api.TaskAction; import com.todoroo.astrid.api.TaskDecoration; import com.todoroo.astrid.data.Task; +import com.todoroo.astrid.notes.NotesAction; /** * Exposes {@link TaskDecoration} for phone numbers, emails, urls, etc @@ -40,14 +43,15 @@ public class LinkActionExposer { if(taskId == -1) return result; - Task task = PluginServices.getTaskService().fetchById(taskId, Task.ID, Task.TITLE); + Task task = PluginServices.getTaskService().fetchById(taskId, Task.ID, Task.TITLE, Task.NOTES); if (task == null) return result; + String notes = task.getValue(Task.NOTES); Spannable titleSpan = Spannable.Factory.getInstance().newSpannable(task.getValue(Task.TITLE)); Linkify.addLinks(titleSpan, Linkify.ALL); URLSpan[] urlSpans = titleSpan.getSpans(0, titleSpan.length(), URLSpan.class); - if(urlSpans.length == 0) + if(urlSpans.length == 0 && TextUtils.isEmpty(notes)) return result; pm = context.getPackageManager(); @@ -61,6 +65,14 @@ public class LinkActionExposer { if (taskAction != null) result.add(taskAction); } + + if (!TextUtils.isEmpty(notes) && !Preferences.getBoolean(R.string.p_showNotes, false)) { + Resources r = context.getResources(); + Bitmap icon = ((BitmapDrawable) r.getDrawable(R.drawable.action_notes)).getBitmap(); + NotesAction notesAction = new NotesAction("", null, icon); //$NON-NLS-1$ + result.add(notesAction); + } + return result; } diff --git a/astrid/plugin-src/com/todoroo/astrid/notes/NotesAction.java b/astrid/plugin-src/com/todoroo/astrid/notes/NotesAction.java new file mode 100644 index 000000000..948a95e6d --- /dev/null +++ b/astrid/plugin-src/com/todoroo/astrid/notes/NotesAction.java @@ -0,0 +1,39 @@ +package com.todoroo.astrid.notes; + +import android.app.PendingIntent; +import android.graphics.Bitmap; +import android.os.Parcel; +import android.os.Parcelable; + +import com.todoroo.astrid.api.TaskAction; + +public class NotesAction extends TaskAction { + + public NotesAction(String text, PendingIntent intent, Bitmap icon) { + super(text, intent, icon); + } + + /** + * Parcelable creator + */ + public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { + /** + * {@inheritDoc} + */ + public NotesAction createFromParcel(Parcel source) { + NotesAction action = new NotesAction(source.readString(), + (PendingIntent)source.readParcelable(PendingIntent.class.getClassLoader()), + (Bitmap)source.readParcelable(Bitmap.class.getClassLoader())); + action.drawable = source.readInt(); + return action; + } + + /** + * {@inheritDoc} + */ + public NotesAction[] newArray(int size) { + return new NotesAction[size]; + }; + }; + +} diff --git a/astrid/res/drawable/action_notes.png b/astrid/res/drawable/action_notes.png new file mode 100644 index 000000000..77da7f2f2 Binary files /dev/null and b/astrid/res/drawable/action_notes.png differ diff --git a/astrid/res/layout/notes_view_dialog.xml b/astrid/res/layout/notes_view_dialog.xml new file mode 100644 index 000000000..67edc3c77 --- /dev/null +++ b/astrid/res/layout/notes_view_dialog.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + diff --git a/astrid/res/layout/task_adapter_row.xml b/astrid/res/layout/task_adapter_row.xml index d111e862f..6aed88a9a 100644 --- a/astrid/res/layout/task_adapter_row.xml +++ b/astrid/res/layout/task_adapter_row.xml @@ -80,7 +80,7 @@ android:id="@+id/taskActionContainer" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginRight="4dip" + android:layout_marginRight="10dip" android:orientation="vertical" android:gravity="right|center_vertical"> = 9 && size == Configuration.SCREENLAYOUT_SIZE_XLARGE) { + DisplayMetrics metrics = fragment.getResources().getDisplayMetrics(); + params.width = metrics.widthPixels / 2; + } + dialog.getWindow().setAttributes((android.view.WindowManager.LayoutParams) params); + + dialog.show(); + } + /* ====================================================================== * ============================================================== details * ====================================================================== */