summaryrefslogtreecommitdiffstats
path: root/src/com/android/gallery3d/ingest/ui
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/gallery3d/ingest/ui')
-rw-r--r--src/com/android/gallery3d/ingest/ui/DateTileView.java107
-rw-r--r--src/com/android/gallery3d/ingest/ui/IngestGridView.java58
-rw-r--r--src/com/android/gallery3d/ingest/ui/MtpFullscreenView.java115
-rw-r--r--src/com/android/gallery3d/ingest/ui/MtpImageView.java280
-rw-r--r--src/com/android/gallery3d/ingest/ui/MtpThumbnailTileView.java106
5 files changed, 0 insertions, 666 deletions
diff --git a/src/com/android/gallery3d/ingest/ui/DateTileView.java b/src/com/android/gallery3d/ingest/ui/DateTileView.java
deleted file mode 100644
index 52fe9b85b..000000000
--- a/src/com/android/gallery3d/ingest/ui/DateTileView.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Copyright (C) 2013 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.gallery3d.ingest.ui;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.widget.FrameLayout;
-import android.widget.TextView;
-
-import com.android.gallery3d.R;
-import com.android.gallery3d.ingest.SimpleDate;
-
-import java.text.DateFormatSymbols;
-import java.util.Locale;
-
-public class DateTileView extends FrameLayout {
- private static String[] sMonthNames = DateFormatSymbols.getInstance().getShortMonths();
- private static Locale sLocale;
-
- static {
- refreshLocale();
- }
-
- public static boolean refreshLocale() {
- Locale currentLocale = Locale.getDefault();
- if (!currentLocale.equals(sLocale)) {
- sLocale = currentLocale;
- sMonthNames = DateFormatSymbols.getInstance(sLocale).getShortMonths();
- return true;
- } else {
- return false;
- }
- }
-
- private TextView mDateTextView;
- private TextView mMonthTextView;
- private TextView mYearTextView;
- private int mMonth = -1;
- private int mYear = -1;
- private int mDate = -1;
- private String[] mMonthNames = sMonthNames;
-
- public DateTileView(Context context) {
- super(context);
- }
-
- public DateTileView(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- public DateTileView(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- }
-
- @Override
- public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- // Force this to be square
- super.onMeasure(widthMeasureSpec, widthMeasureSpec);
- }
-
- @Override
- protected void onFinishInflate() {
- super.onFinishInflate();
- mDateTextView = (TextView) findViewById(R.id.date_tile_day);
- mMonthTextView = (TextView) findViewById(R.id.date_tile_month);
- mYearTextView = (TextView) findViewById(R.id.date_tile_year);
- }
-
- public void setDate(SimpleDate date) {
- setDate(date.getDay(), date.getMonth(), date.getYear());
- }
-
- public void setDate(int date, int month, int year) {
- if (date != mDate) {
- mDate = date;
- mDateTextView.setText(mDate > 9 ? Integer.toString(mDate) : "0" + mDate);
- }
- if (mMonthNames != sMonthNames) {
- mMonthNames = sMonthNames;
- if (month == mMonth) {
- mMonthTextView.setText(mMonthNames[mMonth]);
- }
- }
- if (month != mMonth) {
- mMonth = month;
- mMonthTextView.setText(mMonthNames[mMonth]);
- }
- if (year != mYear) {
- mYear = year;
- mYearTextView.setText(Integer.toString(mYear));
- }
- }
-}
diff --git a/src/com/android/gallery3d/ingest/ui/IngestGridView.java b/src/com/android/gallery3d/ingest/ui/IngestGridView.java
deleted file mode 100644
index c821259fe..000000000
--- a/src/com/android/gallery3d/ingest/ui/IngestGridView.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (C) 2013 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.gallery3d.ingest.ui;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.widget.GridView;
-
-/**
- * This just extends GridView with the ability to listen for calls
- * to clearChoices()
- */
-public class IngestGridView extends GridView {
-
- public interface OnClearChoicesListener {
- public void onClearChoices();
- }
-
- private OnClearChoicesListener mOnClearChoicesListener = null;
-
- public IngestGridView(Context context) {
- super(context);
- }
-
- public IngestGridView(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- public IngestGridView(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- }
-
- public void setOnClearChoicesListener(OnClearChoicesListener l) {
- mOnClearChoicesListener = l;
- }
-
- @Override
- public void clearChoices() {
- super.clearChoices();
- if (mOnClearChoicesListener != null) {
- mOnClearChoicesListener.onClearChoices();
- }
- }
-}
diff --git a/src/com/android/gallery3d/ingest/ui/MtpFullscreenView.java b/src/com/android/gallery3d/ingest/ui/MtpFullscreenView.java
deleted file mode 100644
index 8d3884dc6..000000000
--- a/src/com/android/gallery3d/ingest/ui/MtpFullscreenView.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * Copyright (C) 2013 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.gallery3d.ingest.ui;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.widget.CheckBox;
-import android.widget.Checkable;
-import android.widget.CompoundButton;
-import android.widget.CompoundButton.OnCheckedChangeListener;
-import android.widget.RelativeLayout;
-
-import com.android.gallery3d.R;
-import com.android.gallery3d.ingest.adapter.CheckBroker;
-
-public class MtpFullscreenView extends RelativeLayout implements Checkable,
- CompoundButton.OnCheckedChangeListener, CheckBroker.OnCheckedChangedListener {
-
- private MtpImageView mImageView;
- private CheckBox mCheckbox;
- private int mPosition = -1;
- private CheckBroker mBroker;
-
- public MtpFullscreenView(Context context) {
- super(context);
- }
-
- public MtpFullscreenView(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- public MtpFullscreenView(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- }
-
- @Override
- protected void onFinishInflate() {
- super.onFinishInflate();
- mImageView = (MtpImageView) findViewById(R.id.ingest_fullsize_image);
- mCheckbox = (CheckBox) findViewById(R.id.ingest_fullsize_image_checkbox);
- mCheckbox.setOnCheckedChangeListener(this);
- }
-
- @Override
- public boolean isChecked() {
- return mCheckbox.isChecked();
- }
-
- @Override
- public void setChecked(boolean checked) {
- mCheckbox.setChecked(checked);
- }
-
- @Override
- public void toggle() {
- mCheckbox.toggle();
- }
-
- @Override
- public void onDetachedFromWindow() {
- setPositionAndBroker(-1, null);
- super.onDetachedFromWindow();
- }
-
- public MtpImageView getImageView() {
- return mImageView;
- }
-
- public int getPosition() {
- return mPosition;
- }
-
- public void setPositionAndBroker(int position, CheckBroker b) {
- if (mBroker != null) {
- mBroker.unregisterOnCheckedChangeListener(this);
- }
- mPosition = position;
- mBroker = b;
- if (mBroker != null) {
- setChecked(mBroker.isItemChecked(position));
- mBroker.registerOnCheckedChangeListener(this);
- }
- }
-
- @Override
- public void onCheckedChanged(CompoundButton arg0, boolean isChecked) {
- if (mBroker != null) mBroker.setItemChecked(mPosition, isChecked);
- }
-
- @Override
- public void onCheckedChanged(int position, boolean isChecked) {
- if (position == mPosition) {
- setChecked(isChecked);
- }
- }
-
- @Override
- public void onBulkCheckedChanged() {
- if(mBroker != null) setChecked(mBroker.isItemChecked(mPosition));
- }
-}
diff --git a/src/com/android/gallery3d/ingest/ui/MtpImageView.java b/src/com/android/gallery3d/ingest/ui/MtpImageView.java
deleted file mode 100644
index 80c105126..000000000
--- a/src/com/android/gallery3d/ingest/ui/MtpImageView.java
+++ /dev/null
@@ -1,280 +0,0 @@
-/*
- * Copyright (C) 2013 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.gallery3d.ingest.ui;
-
-import android.content.Context;
-import android.graphics.Canvas;
-import android.graphics.Matrix;
-import android.graphics.drawable.Drawable;
-import android.mtp.MtpDevice;
-import android.mtp.MtpObjectInfo;
-import android.os.Handler;
-import android.os.HandlerThread;
-import android.os.Looper;
-import android.os.Message;
-import android.util.AttributeSet;
-import android.widget.ImageView;
-
-import com.android.gallery3d.R;
-import com.android.gallery3d.ingest.MtpDeviceIndex;
-import com.android.gallery3d.ingest.data.BitmapWithMetadata;
-import com.android.gallery3d.ingest.data.MtpBitmapFetch;
-
-import java.lang.ref.WeakReference;
-
-public class MtpImageView extends ImageView {
- // We will use the thumbnail for images larger than this threshold
- private static final int MAX_FULLSIZE_PREVIEW_SIZE = 8388608; // 8 megabytes
-
- private int mObjectHandle;
- private int mGeneration;
-
- private WeakReference<MtpImageView> mWeakReference = new WeakReference<MtpImageView>(this);
- private Object mFetchLock = new Object();
- private boolean mFetchPending = false;
- private MtpObjectInfo mFetchObjectInfo;
- private MtpDevice mFetchDevice;
- private Object mFetchResult;
- private Drawable mOverlayIcon;
- private boolean mShowOverlayIcon;
-
- private static final FetchImageHandler sFetchHandler = FetchImageHandler.createOnNewThread();
- private static final ShowImageHandler sFetchCompleteHandler = new ShowImageHandler();
-
- private void init() {
- showPlaceholder();
- }
-
- public MtpImageView(Context context) {
- super(context);
- init();
- }
-
- public MtpImageView(Context context, AttributeSet attrs) {
- super(context, attrs);
- init();
- }
-
- public MtpImageView(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- init();
- }
-
- private void showPlaceholder() {
- setImageResource(android.R.color.transparent);
- }
-
- public void setMtpDeviceAndObjectInfo(MtpDevice device, MtpObjectInfo object, int gen) {
- int handle = object.getObjectHandle();
- if (handle == mObjectHandle && gen == mGeneration) {
- return;
- }
- cancelLoadingAndClear();
- showPlaceholder();
- mGeneration = gen;
- mObjectHandle = handle;
- mShowOverlayIcon = MtpDeviceIndex.SUPPORTED_VIDEO_FORMATS.contains(object.getFormat());
- if (mShowOverlayIcon && mOverlayIcon == null) {
- mOverlayIcon = getResources().getDrawable(R.drawable.ic_control_play);
- updateOverlayIconBounds();
- }
- synchronized (mFetchLock) {
- mFetchObjectInfo = object;
- mFetchDevice = device;
- if (mFetchPending) return;
- mFetchPending = true;
- sFetchHandler.sendMessage(
- sFetchHandler.obtainMessage(0, mWeakReference));
- }
- }
-
- protected Object fetchMtpImageDataFromDevice(MtpDevice device, MtpObjectInfo info) {
- if (info.getCompressedSize() <= MAX_FULLSIZE_PREVIEW_SIZE
- && MtpDeviceIndex.SUPPORTED_IMAGE_FORMATS.contains(info.getFormat())) {
- return MtpBitmapFetch.getFullsize(device, info);
- } else {
- return new BitmapWithMetadata(MtpBitmapFetch.getThumbnail(device, info), 0);
- }
- }
-
- private float mLastBitmapWidth;
- private float mLastBitmapHeight;
- private int mLastRotationDegrees;
- private Matrix mDrawMatrix = new Matrix();
-
- private void updateDrawMatrix() {
- mDrawMatrix.reset();
- float dwidth;
- float dheight;
- float vheight = getHeight();
- float vwidth = getWidth();
- float scale;
- boolean rotated90 = (mLastRotationDegrees % 180 != 0);
- if (rotated90) {
- dwidth = mLastBitmapHeight;
- dheight = mLastBitmapWidth;
- } else {
- dwidth = mLastBitmapWidth;
- dheight = mLastBitmapHeight;
- }
- if (dwidth <= vwidth && dheight <= vheight) {
- scale = 1.0f;
- } else {
- scale = Math.min(vwidth / dwidth, vheight / dheight);
- }
- mDrawMatrix.setScale(scale, scale);
- if (rotated90) {
- mDrawMatrix.postTranslate(-dheight * scale * 0.5f,
- -dwidth * scale * 0.5f);
- mDrawMatrix.postRotate(mLastRotationDegrees);
- mDrawMatrix.postTranslate(dwidth * scale * 0.5f,
- dheight * scale * 0.5f);
- }
- mDrawMatrix.postTranslate((vwidth - dwidth * scale) * 0.5f,
- (vheight - dheight * scale) * 0.5f);
- if (!rotated90 && mLastRotationDegrees > 0) {
- // rotated by a multiple of 180
- mDrawMatrix.postRotate(mLastRotationDegrees, vwidth / 2, vheight / 2);
- }
- setImageMatrix(mDrawMatrix);
- }
-
- private static final int OVERLAY_ICON_SIZE_DENOMINATOR = 4;
-
- private void updateOverlayIconBounds() {
- int iheight = mOverlayIcon.getIntrinsicHeight();
- int iwidth = mOverlayIcon.getIntrinsicWidth();
- int vheight = getHeight();
- int vwidth = getWidth();
- float scale_height = ((float) vheight) / (iheight * OVERLAY_ICON_SIZE_DENOMINATOR);
- float scale_width = ((float) vwidth) / (iwidth * OVERLAY_ICON_SIZE_DENOMINATOR);
- if (scale_height >= 1f && scale_width >= 1f) {
- mOverlayIcon.setBounds((vwidth - iwidth) / 2,
- (vheight - iheight) / 2,
- (vwidth + iwidth) / 2,
- (vheight + iheight) / 2);
- } else {
- float scale = Math.min(scale_height, scale_width);
- mOverlayIcon.setBounds((int) (vwidth - scale * iwidth) / 2,
- (int) (vheight - scale * iheight) / 2,
- (int) (vwidth + scale * iwidth) / 2,
- (int) (vheight + scale * iheight) / 2);
- }
- }
-
- @Override
- protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
- super.onLayout(changed, left, top, right, bottom);
- if (changed && getScaleType() == ScaleType.MATRIX) {
- updateDrawMatrix();
- }
- if (mShowOverlayIcon && changed && mOverlayIcon != null) {
- updateOverlayIconBounds();
- }
- }
-
- @Override
- protected void onDraw(Canvas canvas) {
- super.onDraw(canvas);
- if (mShowOverlayIcon && mOverlayIcon != null) {
- mOverlayIcon.draw(canvas);
- }
- }
-
- protected void onMtpImageDataFetchedFromDevice(Object result) {
- BitmapWithMetadata bitmapWithMetadata = (BitmapWithMetadata)result;
- if (getScaleType() == ScaleType.MATRIX) {
- mLastBitmapHeight = bitmapWithMetadata.bitmap.getHeight();
- mLastBitmapWidth = bitmapWithMetadata.bitmap.getWidth();
- mLastRotationDegrees = bitmapWithMetadata.rotationDegrees;
- updateDrawMatrix();
- } else {
- setRotation(bitmapWithMetadata.rotationDegrees);
- }
- setAlpha(0f);
- setImageBitmap(bitmapWithMetadata.bitmap);
- animate().alpha(1f);
- }
-
- protected void cancelLoadingAndClear() {
- synchronized (mFetchLock) {
- mFetchDevice = null;
- mFetchObjectInfo = null;
- mFetchResult = null;
- }
- animate().cancel();
- setImageResource(android.R.color.transparent);
- }
-
- @Override
- public void onDetachedFromWindow() {
- cancelLoadingAndClear();
- super.onDetachedFromWindow();
- }
-
- private static class FetchImageHandler extends Handler {
- public FetchImageHandler(Looper l) {
- super(l);
- }
-
- public static FetchImageHandler createOnNewThread() {
- HandlerThread t = new HandlerThread("MtpImageView Fetch");
- t.start();
- return new FetchImageHandler(t.getLooper());
- }
-
- @Override
- public void handleMessage(Message msg) {
- @SuppressWarnings("unchecked")
- MtpImageView parent = ((WeakReference<MtpImageView>) msg.obj).get();
- if (parent == null) return;
- MtpObjectInfo objectInfo;
- MtpDevice device;
- synchronized (parent.mFetchLock) {
- parent.mFetchPending = false;
- device = parent.mFetchDevice;
- objectInfo = parent.mFetchObjectInfo;
- }
- if (device == null) return;
- Object result = parent.fetchMtpImageDataFromDevice(device, objectInfo);
- if (result == null) return;
- synchronized (parent.mFetchLock) {
- if (parent.mFetchObjectInfo != objectInfo) return;
- parent.mFetchResult = result;
- parent.mFetchDevice = null;
- parent.mFetchObjectInfo = null;
- sFetchCompleteHandler.sendMessage(
- sFetchCompleteHandler.obtainMessage(0, parent.mWeakReference));
- }
- }
- }
-
- private static class ShowImageHandler extends Handler {
- @Override
- public void handleMessage(Message msg) {
- @SuppressWarnings("unchecked")
- MtpImageView parent = ((WeakReference<MtpImageView>) msg.obj).get();
- if (parent == null) return;
- Object result;
- synchronized (parent.mFetchLock) {
- result = parent.mFetchResult;
- }
- if (result == null) return;
- parent.onMtpImageDataFetchedFromDevice(result);
- }
- }
-}
diff --git a/src/com/android/gallery3d/ingest/ui/MtpThumbnailTileView.java b/src/com/android/gallery3d/ingest/ui/MtpThumbnailTileView.java
deleted file mode 100644
index 3307e78aa..000000000
--- a/src/com/android/gallery3d/ingest/ui/MtpThumbnailTileView.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright (C) 2013 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.gallery3d.ingest.ui;
-
-import android.content.Context;
-import android.graphics.Bitmap;
-import android.graphics.Canvas;
-import android.graphics.Paint;
-import android.mtp.MtpDevice;
-import android.mtp.MtpObjectInfo;
-import android.util.AttributeSet;
-import android.widget.Checkable;
-
-import com.android.gallery3d.R;
-import com.android.gallery3d.ingest.data.MtpBitmapFetch;
-
-
-public class MtpThumbnailTileView extends MtpImageView implements Checkable {
-
- private Paint mForegroundPaint;
- private boolean mIsChecked;
- private Bitmap mBitmap;
-
- private void init() {
- mForegroundPaint = new Paint();
- mForegroundPaint.setColor(getResources().getColor(R.color.ingest_highlight_semitransparent));
- }
-
- public MtpThumbnailTileView(Context context) {
- super(context);
- init();
- }
-
- public MtpThumbnailTileView(Context context, AttributeSet attrs) {
- super(context, attrs);
- init();
- }
-
- public MtpThumbnailTileView(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- init();
- }
-
- @Override
- public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- // Force this to be square
- super.onMeasure(widthMeasureSpec, widthMeasureSpec);
- }
-
- @Override
- protected Object fetchMtpImageDataFromDevice(MtpDevice device, MtpObjectInfo info) {
- return MtpBitmapFetch.getThumbnail(device, info);
- }
-
- @Override
- protected void onMtpImageDataFetchedFromDevice(Object result) {
- mBitmap = (Bitmap)result;
- setImageBitmap(mBitmap);
- }
-
- @Override
- public void draw(Canvas canvas) {
- super.draw(canvas);
- if (isChecked()) {
- canvas.drawRect(canvas.getClipBounds(), mForegroundPaint);
- }
- }
-
- @Override
- public boolean isChecked() {
- return mIsChecked;
- }
-
- @Override
- public void setChecked(boolean checked) {
- mIsChecked = checked;
- }
-
- @Override
- public void toggle() {
- setChecked(!mIsChecked);
- }
-
- @Override
- protected void cancelLoadingAndClear() {
- super.cancelLoadingAndClear();
- if (mBitmap != null) {
- MtpBitmapFetch.recycleThumbnail(mBitmap);
- mBitmap = null;
- }
- }
-}