summaryrefslogtreecommitdiffstats
path: root/src/com/android/messaging/ui/attachmentchooser/AttachmentGridItemView.java
diff options
context:
space:
mode:
authorMike Dodd <mdodd@google.com>2015-08-11 11:16:59 -0700
committerMike Dodd <mdodd@google.com>2015-08-12 08:58:28 -0700
commit461a34b466cb4b13dbbc2ec6330b31e217b2ac4e (patch)
treebc4b489af52d0e2521e21167d2ad76a47256f348 /src/com/android/messaging/ui/attachmentchooser/AttachmentGridItemView.java
parent8b3e2b9c1b0a09423a7ba5d1091b9192106502f8 (diff)
downloadandroid_packages_apps_Messaging-461a34b466cb4b13dbbc2ec6330b31e217b2ac4e.tar.gz
android_packages_apps_Messaging-461a34b466cb4b13dbbc2ec6330b31e217b2ac4e.tar.bz2
android_packages_apps_Messaging-461a34b466cb4b13dbbc2ec6330b31e217b2ac4e.zip
Initial checkin of AOSP Messaging app.
b/23110861 Change-Id: I9aa980d7569247d6b2ca78f5dcb4502e1eaadb8a
Diffstat (limited to 'src/com/android/messaging/ui/attachmentchooser/AttachmentGridItemView.java')
-rw-r--r--src/com/android/messaging/ui/attachmentchooser/AttachmentGridItemView.java119
1 files changed, 119 insertions, 0 deletions
diff --git a/src/com/android/messaging/ui/attachmentchooser/AttachmentGridItemView.java b/src/com/android/messaging/ui/attachmentchooser/AttachmentGridItemView.java
new file mode 100644
index 0000000..8bb7356
--- /dev/null
+++ b/src/com/android/messaging/ui/attachmentchooser/AttachmentGridItemView.java
@@ -0,0 +1,119 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.messaging.ui.attachmentchooser;
+
+import android.content.Context;
+import android.graphics.Rect;
+import android.util.AttributeSet;
+import android.view.LayoutInflater;
+import android.view.TouchDelegate;
+import android.view.View;
+import android.widget.CheckBox;
+import android.widget.FrameLayout;
+
+import com.android.messaging.R;
+import com.android.messaging.datamodel.data.MessagePartData;
+import com.android.messaging.ui.AttachmentPreviewFactory;
+import com.android.messaging.util.Assert;
+import com.google.common.annotations.VisibleForTesting;
+
+/**
+ * Shows an item in the attachment picker grid.
+ */
+public class AttachmentGridItemView extends FrameLayout {
+ public interface HostInterface {
+ boolean isItemSelected(MessagePartData attachment);
+ void onItemCheckedChanged(AttachmentGridItemView view, MessagePartData attachment);
+ void onItemClicked(AttachmentGridItemView view, MessagePartData attachment);
+ }
+
+ @VisibleForTesting
+ MessagePartData mAttachmentData;
+ private FrameLayout mAttachmentViewContainer;
+ private CheckBox mCheckBox;
+ private HostInterface mHostInterface;
+
+ public AttachmentGridItemView(final Context context, final AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ @Override
+ protected void onFinishInflate() {
+ super.onFinishInflate();
+ mAttachmentViewContainer = (FrameLayout) findViewById(R.id.attachment_container);
+ mCheckBox = (CheckBox) findViewById(R.id.checkbox);
+ mCheckBox.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(final View v) {
+ mHostInterface.onItemCheckedChanged(AttachmentGridItemView.this, mAttachmentData);
+ }
+ });
+ setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(final View v) {
+ mHostInterface.onItemClicked(AttachmentGridItemView.this, mAttachmentData);
+ }
+ });
+ addOnLayoutChangeListener(new OnLayoutChangeListener() {
+ @Override
+ public void onLayoutChange(View v, int left, int top, int right, int bottom,
+ int oldLeft, int oldTop, int oldRight, int oldBottom) {
+ // Enlarge the clickable region for the checkbox.
+ final int touchAreaIncrease = getResources().getDimensionPixelOffset(
+ R.dimen.attachment_grid_checkbox_area_increase);
+ final Rect region = new Rect();
+ mCheckBox.getHitRect(region);
+ region.inset(-touchAreaIncrease, -touchAreaIncrease);
+ setTouchDelegate(new TouchDelegate(region, mCheckBox));
+ }
+ });
+ }
+
+ @Override
+ protected void onMeasure(final int widthMeasureSpec, final int heightMeasureSpec) {
+ // The grid view auto-fits the columns, so we want to let the height match the width
+ // to make the attachment preview square.
+ super.onMeasure(widthMeasureSpec, widthMeasureSpec);
+ }
+
+ public void bind(final MessagePartData attachment, final HostInterface hostInterface) {
+ Assert.isTrue(attachment.isAttachment());
+ mHostInterface = hostInterface;
+ updateSelectedState();
+ if (mAttachmentData == null || !mAttachmentData.equals(attachment)) {
+ mAttachmentData = attachment;
+ updateAttachmentView();
+ }
+ }
+
+ @VisibleForTesting
+ HostInterface testGetHostInterface() {
+ return mHostInterface;
+ }
+
+ public void updateSelectedState() {
+ mCheckBox.setChecked(mHostInterface.isItemSelected(mAttachmentData));
+ }
+
+ private void updateAttachmentView() {
+ mAttachmentViewContainer.removeAllViews();
+ final LayoutInflater inflater = LayoutInflater.from(getContext());
+ final View attachmentView = AttachmentPreviewFactory.createAttachmentPreview(inflater,
+ mAttachmentData, mAttachmentViewContainer,
+ AttachmentPreviewFactory.TYPE_CHOOSER_GRID, true /* startImageRequest */, null);
+ mAttachmentViewContainer.addView(attachmentView);
+ }
+}