Make google tasks draggable list work with new style updates

pull/14/head
Tim Su 13 years ago
parent 105c251deb
commit e81b34b145

@ -1,93 +1,107 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- See the file "LICENSE" for the full license governing this code. -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:astrid="http://schemas.android.com/apk/res/com.timsu.astrid"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@android:drawable/list_selector_background"
android:layout_height="52dip"
android:paddingTop="2dip"
android:paddingBottom="2dip"
android:paddingLeft="4dip"
android:paddingRight="4dip"
android:orientation="vertical">
<LinearLayout android:id="@+id/task_row"
android:layout_width="fill_parent"
android:layout_height="48dip"
android:layout_weight="100"
android:orientation="horizontal">
android:orientation="horizontal">
<!-- importance -->
<View android:id="@+id/importance"
android:layout_width="3dip"
android:layout_height="fill_parent"
android:layout_marginRight="5dip" />
<!-- indent -->
<View android:id="@+id/indent"
android:layout_width="0dip"
android:layout_height="fill_parent"/>
<!-- grabber -->
<ImageView android:id="@+id/grabber"
<!-- importance -->
<View android:id="@+id/importance"
android:layout_width="4dip"
android:layout_height="fill_parent"
android:layout_marginRight="5dip" />
<!-- indent -->
<View android:id="@+id/indent"
android:layout_width="0dip"
android:layout_height="fill_parent"/>
<!-- grabber -->
<ImageView android:id="@+id/grabber"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:scaleType="center"
android:src="@drawable/grabber"/>
<RelativeLayout android:id="@+id/rowBody"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@android:drawable/list_selector_background"
android:paddingTop="1dip"
android:paddingLeft="5dip"
android:paddingBottom="1dip">
<!-- completion check-box -->
<CheckBox android:id="@+id/completeBox"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:scaleType="center"
android:src="@drawable/grabber"/>
android:layout_height="22dip"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_marginTop="3dip"
android:layout_gravity="top"
android:paddingBottom="2dip"
android:button="@drawable/btn_check"/>
<LinearLayout android:id="@+id/taskText"
<LinearLayout android:id="@+id/task_row"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="100"
android:gravity="center_vertical"
android:background="@android:drawable/list_selector_background"
android:paddingLeft="5dip"
android:orientation="vertical">
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:paddingLeft="5dip"
android:paddingRight="32dip"
android:orientation="horizontal">
<!-- task name -->
<TextView android:id="@+id/title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="100"
style="@style/TextAppearance.TAd_ItemTitle"/>
<!-- assignee photo -->
<greendroid.widget.AsyncImageView android:id="@+id/picture"
android:layout_width="35dip"
android:layout_height="fill_parent"
android:layout_weight="3"
style="@style/TextAppearance.TAd_ItemTitle"
android:gravity="center_vertical"/>
<!-- due date -->
<TextView android:id="@+id/dueDate"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="4"
android:singleLine="true"/>
android:padding="5dip"
android:scaleType="fitCenter"
astrid:defaultSrc="@drawable/ic_contact_picture_2"
android:visibility="gone"/>
</LinearLayout>
<!-- completion check-box -->
<CheckBox android:id="@+id/completeBox"
<!-- due date -->
<TextView android:id="@+id/dueDate"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:paddingLeft="5dip"
android:button="@drawable/btn_check"/>
</LinearLayout>
<LinearLayout android:id="@+id/actions"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#4499bbcc"
android:visibility="gone"
android:paddingTop="4dip"
android:paddingLeft="4dip"
android:orientation="horizontal">
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1" />
android:layout_height="wrap_content"
android:layout_below="@id/task_row"
android:layout_alignParentRight="true"
android:paddingRight="5dip"
android:singleLine="true"/>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1" />
<!-- details line 1 -->
<TextView android:id="@+id/details1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/task_row"
android:layout_alignParentLeft="true"
android:layout_marginTop="-1dip"
style="@style/TextAppearance.TAd_ItemDetails"
android:visibility="gone" />
</LinearLayout>
<!-- details line 2 -->
<TextView android:id="@+id/details2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/details1"
android:layout_alignParentLeft="true"
style="@style/TextAppearance.TAd_ItemDetails"
android:visibility="gone" />
</RelativeLayout>
</LinearLayout>

@ -29,7 +29,6 @@
android:layout_alignParentLeft="true"
android:layout_marginTop="3dip"
android:layout_gravity="top"
android:paddingRight="5dip"
android:paddingBottom="2dip"
android:button="@drawable/btn_check"/>
@ -38,6 +37,7 @@
android:layout_height="wrap_content"
android:layout_toRightOf="@id/completeBox"
android:layout_alignParentTop="true"
android:paddingLeft="5dip"
android:orientation="horizontal">
<!-- task name -->

@ -24,7 +24,7 @@
android:layout_height="fill_parent"
android:drawSelectorOnTop="false"
tlv:normal_height="48dip"
tlv:normal_height="52dip"
tlv:grabber="@+id/grabber"
/>

@ -74,8 +74,8 @@ public class DraggableTaskListActivity extends TaskListActivity {
startManagingCursor(currentCursor);
// set up list adapters
taskAdapter = new DraggableTaskAdapter(this, R.layout.task_adapter_draggable_row, currentCursor, sqlQueryTemplate,
false, null);
taskAdapter = new DraggableTaskAdapter(this, R.layout.task_adapter_draggable_row,
currentCursor, sqlQueryTemplate, false, null);
setListAdapter(taskAdapter);
getListView().setOnScrollListener(this);
@ -105,6 +105,8 @@ public class DraggableTaskListActivity extends TaskListActivity {
OnCompletedTaskListener onCompletedTaskListener) {
super(activity, resource, c, query, autoRequery,
onCompletedTaskListener);
applyListenersToRowBody = true;
}
@Override
@ -114,24 +116,10 @@ public class DraggableTaskListActivity extends TaskListActivity {
ViewHolder viewHolder = (ViewHolder) view.getTag();
if(getIndentProperty() != null) {
int indent = viewHolder.task.getValue(getIndentProperty());
view.findViewById(R.id.indent).getLayoutParams().width = indent * 20;
view.findViewById(R.id.indent).getLayoutParams().width =
(int) (displayMetrics.density * (indent * 20));
}
}
@Override
protected void addListeners(final View container) {
// super.addListeners(container);
ViewHolder viewHolder = (ViewHolder)container.getTag();
viewHolder.completeBox.setOnClickListener(completeBoxListener);
// context menu listener
View taskText = container.findViewById(R.id.taskText);
taskText.setTag(viewHolder);
taskText.setOnCreateContextMenuListener(listener);
// tap listener
taskText.setOnClickListener(listener);
}
}
}

@ -130,12 +130,13 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
protected final ListActivity activity;
protected final HashMap<Long, Boolean> completedItems = new HashMap<Long, Boolean>(0);
private OnCompletedTaskListener onCompletedTaskListener = null;
protected OnCompletedTaskListener onCompletedTaskListener = null;
public boolean isFling = false;
private final int resource;
private final LayoutInflater inflater;
private int fontSize;
private DetailLoaderThread detailLoader;
private int fontSize;
protected boolean applyListenersToRowBody = false;
private final AtomicReference<String> query;
@ -144,8 +145,8 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
private final QuickActionListener mBarListener = new QuickActionListener();
// measure utilities
private final Paint paint;
private final DisplayMetrics dm;
protected final Paint paint;
protected final DisplayMetrics displayMetrics;
// --- task detail and decoration soft caches
@ -181,8 +182,8 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
fontSize = Preferences.getIntegerFromString(R.string.p_fontSize, 20);
paint = new Paint();
dm = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(dm);
displayMetrics = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
detailLoader = new DetailLoaderThread();
detailLoader.start();
@ -400,9 +401,10 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
details = details.trim().replace("\n", "<br>");
String[] splitDetails = details.split("\\|");
viewHolder.completeBox.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
rightWidth = rightWidth + viewHolder.dueDate.getPaddingRight();
float left = viewHolder.completeBox.getMeasuredWidth() +
((MarginLayoutParams)viewHolder.completeBox.getLayoutParams()).leftMargin;
int availableWidth = (int) (dm.widthPixels - left - (rightWidth + 16) * dm.density);
int availableWidth = (int) (displayMetrics.widthPixels - left - (rightWidth + 16) * displayMetrics.density);
int i = 0;
for(; i < splitDetails.length; i++) {
@ -432,6 +434,7 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
}
protected TaskRowListener listener = new TaskRowListener();
/**
* Set listeners for this view. This is called once per view when it is
* created.
@ -442,11 +445,13 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
// check box listener
viewHolder.completeBox.setOnClickListener(completeBoxListener);
// context menu listener
container.setOnCreateContextMenuListener(listener);
// tap listener
container.setOnClickListener(listener);
if(applyListenersToRowBody) {
viewHolder.rowBody.setOnCreateContextMenuListener(listener);
viewHolder.rowBody.setOnClickListener(listener);
} else {
container.setOnCreateContextMenuListener(listener);
container.setOnClickListener(listener);
}
}
/* ======================================================================

Loading…
Cancel
Save