diff options
Diffstat (limited to 'ui/src/com/android/providers/downloads/ui/DownloadItem.java')
-rw-r--r-- | ui/src/com/android/providers/downloads/ui/DownloadItem.java | 38 |
1 files changed, 24 insertions, 14 deletions
diff --git a/ui/src/com/android/providers/downloads/ui/DownloadItem.java b/ui/src/com/android/providers/downloads/ui/DownloadItem.java index c462d596..86eb7f4c 100644 --- a/ui/src/com/android/providers/downloads/ui/DownloadItem.java +++ b/ui/src/com/android/providers/downloads/ui/DownloadItem.java @@ -20,6 +20,7 @@ import android.content.Context; import android.util.AttributeSet; import android.view.MotionEvent; import android.widget.CheckBox; +import android.widget.Checkable; import android.widget.RelativeLayout; /** @@ -28,18 +29,14 @@ import android.widget.RelativeLayout; * also keeps an ID associated with the currently displayed download and notifies a listener upon * selection changes with that ID. */ -public class DownloadItem extends RelativeLayout { +public class DownloadItem extends RelativeLayout implements Checkable { private static float CHECKMARK_AREA = -1; private boolean mIsInDownEvent = false; private CheckBox mCheckBox; private long mDownloadId; - private DownloadSelectListener mListener; - - static interface DownloadSelectListener { - public void onDownloadSelectionChanged(long downloadId, boolean isSelected); - public boolean isDownloadSelected(long id); - } + private DownloadList mDownloadList; + private int mPosition; public DownloadItem(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); @@ -68,12 +65,13 @@ public class DownloadItem extends RelativeLayout { mCheckBox = (CheckBox) findViewById(R.id.download_checkbox); } - public void setDownloadId(long downloadId) { + public void setData(long downloadId, int position) { mDownloadId = downloadId; + mPosition = position; } - public void setSelectListener(DownloadSelectListener listener) { - mListener = listener; + public void setDownloadListObj(DownloadList downloadList) { + mDownloadList = downloadList; } @Override @@ -93,7 +91,7 @@ public class DownloadItem extends RelativeLayout { case MotionEvent.ACTION_UP: if (mIsInDownEvent && event.getX() < CHECKMARK_AREA) { - toggleCheckMark(); + toggle(); handled = true; } mIsInDownEvent = false; @@ -109,8 +107,20 @@ public class DownloadItem extends RelativeLayout { return handled; } - private void toggleCheckMark() { - mCheckBox.toggle(); - mListener.onDownloadSelectionChanged(mDownloadId, mCheckBox.isChecked()); + @Override + public boolean isChecked() { + return mCheckBox.isChecked(); + } + + @Override + public void setChecked(boolean checked) { + mCheckBox.setChecked(checked); + mDownloadList.onDownloadSelectionChanged(mDownloadId, mCheckBox.isChecked()); + mDownloadList.getCurrentView().setItemChecked(mPosition, mCheckBox.isChecked()); + } + + @Override + public void toggle() { + setChecked(!isChecked()); } } |