Introduced quick action for viewing notes

pull/14/head
Sam Bosley 12 years ago
parent 0da65a08f7
commit 539822e3e4

@ -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;
}

@ -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<NotesAction> CREATOR = new Parcelable.Creator<NotesAction>() {
/**
* {@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];
};
};
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 239 B

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!-- notes -->
<ScrollView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="100">
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/notes"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="9dip"
android:layout_marginRight="9dip"
android:layout_weight="100"
android:scrollbars="vertical"
android:gravity="top"
android:capitalize="sentences"
android:textSize="18sp"
android:singleLine="false" />
</LinearLayout>
</ScrollView>
<include layout="@layout/control_dialog_ok"/>
</LinearLayout>

@ -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">
<TextView

@ -13,9 +13,11 @@ import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.app.Dialog;
import android.app.PendingIntent.CanceledException;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.database.Cursor;
import android.graphics.Color;
@ -67,10 +69,12 @@ import com.todoroo.astrid.core.LinkActionExposer;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.helper.AsyncImageView;
import com.todoroo.astrid.helper.TaskAdapterAddOnManager;
import com.todoroo.astrid.notes.NotesAction;
import com.todoroo.astrid.notes.NotesDecorationExposer;
import com.todoroo.astrid.service.StatisticsConstants;
import com.todoroo.astrid.service.StatisticsService;
import com.todoroo.astrid.service.TaskService;
import com.todoroo.astrid.service.ThemeService;
import com.todoroo.astrid.taskrabbit.TaskRabbitDataService;
import com.todoroo.astrid.taskrabbit.TaskRabbitTaskContainer;
import com.todoroo.astrid.timers.TimerDecorationExposer;
@ -586,7 +590,9 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
@Override
public void onClick(View v) {
TaskAction action = (TaskAction) viewHolder.taskActionIcon.getTag();
if (action != null) {
if (action instanceof NotesAction) {
showEditNotesDialog(viewHolder.task);
} else if (action != null) {
try {
action.intent.send();
} catch (CanceledException e) {
@ -597,6 +603,37 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
});
}
private void showEditNotesDialog(final Task task) {
int theme = ThemeService.getEditDialogTheme();
final Dialog dialog = new Dialog(fragment.getActivity(), theme);
dialog.setTitle(R.string.TEA_note_label);
View notesView = LayoutInflater.from(fragment.getActivity()).inflate(R.layout.notes_view_dialog, null);
dialog.setContentView(notesView, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
notesView.findViewById(R.id.edit_dlg_ok).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
final TextView notesField = (TextView) notesView.findViewById(R.id.notes);
notesField.setText(task.getValue(Task.NOTES));
LayoutParams params = dialog.getWindow().getAttributes();
params.width = LayoutParams.FILL_PARENT;
params.height = LayoutParams.WRAP_CONTENT;
Configuration config = fragment.getResources().getConfiguration();
int size = config.screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK;
if (AndroidUtilities.getSdkVersion() >= 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
* ====================================================================== */

Loading…
Cancel
Save