Cleaned up and prettified stuff. Things work as far as i can tell.

pull/14/head
Tim Su 14 years ago
parent d1dc887920
commit e775701320

@ -9,6 +9,7 @@ import android.content.Intent;
import com.timsu.astrid.R;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.astrid.adapter.TaskAdapter;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.api.DetailExposer;
import com.todoroo.astrid.api.TaskDetail;
@ -59,19 +60,19 @@ public class MilkDetailExposer extends BroadcastReceiver implements DetailExpose
long listId = metadata.getValue(MilkTask.LIST_ID);
if(listId > 0) {
builder.append(context.getString(R.string.rmilk_TLA_list,
MilkDataService.getInstance().getListName(listId))).append('\n');
MilkDataService.getInstance().getListName(listId))).append(TaskAdapter.DETAIL_SEPARATOR);
}
int repeat = metadata.getValue(MilkTask.REPEATING);
if(repeat != 0) {
builder.append(context.getString(R.string.rmilk_TLA_repeat)).append('\n');
builder.append(context.getString(R.string.rmilk_TLA_repeat)).append(TaskAdapter.DETAIL_SEPARATOR);
}
TodorooCursor<Metadata> notesCursor = MilkDataService.getInstance().getTaskNotesCursor(id);
try {
for(notesCursor.moveToFirst(); !notesCursor.isAfterLast(); notesCursor.moveToNext()) {
metadata.readFromCursor(notesCursor);
builder.append(MilkNote.toTaskDetail(metadata)).append('\n');
builder.append(MilkNote.toTaskDetail(metadata)).append(TaskAdapter.DETAIL_SEPARATOR);
}
} finally {
notesCursor.close();
@ -79,8 +80,8 @@ public class MilkDetailExposer extends BroadcastReceiver implements DetailExpose
if(builder.length() == 0)
return null;
else
return new TaskDetail(builder.toString().trim());
String result = builder.toString();
return new TaskDetail(result.substring(0, result.length() - 3));
}
}

@ -1,56 +1,66 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- See the file "LICENSE" for the full license governing this code. -->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@android:drawable/list_selector_background"
android:paddingTop="4dip"
android:paddingBottom="4dip"
android:paddingLeft="4dip"
android:paddingRight="6dip">
<RelativeLayout android:id="@+id/main"
android:paddingRight="6dip"
android:orientation="vertical">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:minHeight="48dip">
android:layout_weight="100"
android:orientation="horizontal">
<!-- completion check-box -->
<CheckBox android:id="@+id/completeBox"
android:layout_width="34dip"
android:layout_height="fill_parent"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:paddingLeft="5dip"
android:button="@drawable/btn_check"/>
<!-- task name -->
<TextView android:id="@+id/title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_toRightOf="@id/completeBox"
android:paddingLeft="10dip"
style="@style/TextAppearance.TAd_ItemTitle"
android:gravity="center_vertical"/>
<!-- due date -->
<TextView android:id="@+id/dueDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/title"
android:layout_toRightOf="@id/completeBox"
android:paddingLeft="10dip"
android:singleLine="true"/>
</RelativeLayout>
<!-- completion check-box -->
<CheckBox android:id="@+id/completeBox"
android:layout_width="34dip"
android:layout_height="fill_parent"
android:paddingLeft="5dip"
android:button="@drawable/btn_check"/>
<TextView android:id="@+id/details"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/main"
android:layout_alignParentLeft="true" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="100"
android:paddingLeft="8dip"
android:paddingRight="3dip"
android:orientation="vertical">
<!-- task name -->
<TextView android:id="@+id/title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_toRightOf="@id/completeBox"
style="@style/TextAppearance.TAd_ItemTitle"
android:gravity="center_vertical"/>
<!-- due date -->
<TextView android:id="@+id/dueDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/title"
android:layout_toRightOf="@id/completeBox"
android:singleLine="true"/>
<TextView android:id="@+id/details"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:visibility="gone" />
</LinearLayout>
<!-- importance -->
<View android:id="@+id/importance"
android:layout_width="2dip"
android:layout_height="fill_parent" />
</LinearLayout>
<LinearLayout android:id="@+id/actions"
android:layout_width="fill_parent"
@ -61,12 +71,5 @@
android:visibility="gone"
android:paddingTop="4dip"
android:orientation="horizontal" />
<!-- importance -->
<View android:id="@+id/importance"
android:layout_width="2dip"
android:layout_height="fill_parent"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true" />
</RelativeLayout>
</LinearLayout>

@ -12,7 +12,6 @@ import android.content.res.Resources;
import android.database.Cursor;
import android.graphics.Paint;
import android.text.Html;
import android.util.Log;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.LayoutInflater;
@ -36,6 +35,7 @@ import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.service.ExceptionService;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.andlib.utility.SoftHashMap;
import com.todoroo.astrid.activity.TaskEditActivity;
import com.todoroo.astrid.activity.TaskListActivity;
import com.todoroo.astrid.api.AstridApiConstants;
@ -61,6 +61,8 @@ public class TaskAdapter extends CursorAdapter {
public void onCompletedTask(Task item, boolean newState);
}
public static final String DETAIL_SEPARATOR = " | "; //$NON-NLS-1$
// --- other constants
/** Properties that need to be read from the action item */
@ -102,8 +104,8 @@ public class TaskAdapter extends CursorAdapter {
private final LayoutInflater inflater;
protected OnCompletedTaskListener onCompletedTaskListener = null;
private int fontSize;
private final HashMap<Long, LinkedHashSet<TaskDetail>> detailCache =
new HashMap<Long, LinkedHashSet<TaskDetail>>();
private static final SoftHashMap<Long, LinkedHashSet<TaskDetail>> detailCache =
new SoftHashMap<Long, LinkedHashSet<TaskDetail>>();
/**
* Constructor
@ -261,8 +263,6 @@ public class TaskAdapter extends CursorAdapter {
if(completedItems.containsKey(task.getId()))
task.setValue(Task.COMPLETION_DATE, DateUtilities.now());
completeBox.setChecked(task.isCompleted());
completeBox.getLayoutParams().height = dueDateView.getHeight() +
nameView.getHeight();
}
// task details - send out a request for it (only if not fling)
@ -274,14 +274,11 @@ public class TaskAdapter extends CursorAdapter {
final View importanceView = viewHolder.importance; {
int value = task.getValue(Task.IMPORTANCE);
importanceView.setBackgroundColor(IMPORTANCE_COLORS[value]);
importanceView.getLayoutParams().height =
((View)viewHolder.completeBox.getParent()).getHeight();
}
}
// --- task details
@SuppressWarnings("nls")
private void retrieveDetails(final ViewHolder viewHolder) {
final long taskId = viewHolder.task.getId();
@ -297,22 +294,10 @@ public class TaskAdapter extends CursorAdapter {
}
if(inCache) {
Log.e("detail-load-" + Thread.currentThread().getId(), "Already In Cache: " + taskId);
viewHolder.details.setVisibility(details.size() > 0 ? View.VISIBLE : View.GONE);
if(details.size() == 0)
return;
StringBuilder detailText = new StringBuilder();
for(Iterator<TaskDetail> iterator = details.iterator(); iterator.hasNext(); ) {
detailText.append(iterator.next().text);
if(iterator.hasNext())
detailText.append(" | ");
}
spanifyAndAdd(viewHolder.details, detailText.toString());
spanifyAndAdd(viewHolder.details, details);
return;
}
Log.e("detail-load-" + Thread.currentThread().getId(), "Loading details: " + taskId);
// request details
Intent broadcastIntent = new Intent(AstridApiConstants.BROADCAST_REQUEST_DETAILS);
broadcastIntent.putExtra(AstridApiConstants.EXTRAS_TASK_ID, taskId);
@ -330,24 +315,36 @@ public class TaskAdapter extends CursorAdapter {
if(detail == null || details.contains(detail))
continue;
CharSequence oldText = viewHolder.details.getText();
if(oldText.length() > 0)
spanifyAndAdd(viewHolder.details, oldText + " | " + detail.text);
else
spanifyAndAdd(viewHolder.details, detail.text);
details.add(detail);
if(taskId != viewHolder.task.getId())
continue;
activity.runOnUiThread(new Runnable() {
public void run() {
spanifyAndAdd(viewHolder.details, details);
}
});
}
Log.e("detail-load-" + Thread.currentThread().getId(), "Finished loading details: " + taskId);
};
}.start();
}
@SuppressWarnings("nls")
private void spanifyAndAdd(TextView details, String string) {
private void spanifyAndAdd(TextView view, LinkedHashSet<TaskDetail> details) {
view.setVisibility(details.size() > 0 ? View.VISIBLE : View.GONE);
if(details.size() == 0)
return;
StringBuilder detailText = new StringBuilder();
for(Iterator<TaskDetail> iterator = details.iterator(); iterator.hasNext(); ) {
detailText.append(iterator.next().text);
if(iterator.hasNext())
detailText.append(DETAIL_SEPARATOR);
}
String string = detailText.toString();
if(string.contains("<"))
details.setText(Html.fromHtml(string.trim().replace("\n", "<br>")));
view.setText(Html.fromHtml(string.trim().replace("\n", "<br>")));
else
details.setText(string.trim());
view.setText(string.trim());
}
/**
@ -368,14 +365,14 @@ public class TaskAdapter extends CursorAdapter {
*
* @param taskId
*/
@SuppressWarnings("unused")
public synchronized void addDetails(ListView list, long taskId, TaskDetail detail) {
/*if(detail == null)
if(detail == null)
return;
LinkedHashSet<TaskDetail> details = detailCache.get(taskId);
if(details.contains(detail))
return;
details.add(detail);
// update view if it is visible
int length = list.getChildCount();
@ -383,11 +380,9 @@ public class TaskAdapter extends CursorAdapter {
ViewHolder viewHolder = (ViewHolder) list.getChildAt(i).getTag();
if(viewHolder == null || viewHolder.task.getId() != taskId)
continue;
details.add(detail);
TextView newView = detailToView(detail);
viewHolder.details.addView(newView);
spanifyAndAdd(viewHolder.details, details);
break;
}*/
}
}
private final View.OnClickListener completeBoxListener = new View.OnClickListener() {

Loading…
Cancel
Save