+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2010 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.
--->
-
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/navigation_bar"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="horizontal">
- <Button android:id="@+id/menu_button"
- android:divider="?android:attr/listDividerAlertDialog"
- style="?android:attr/borderlessButtonStyle"
- android:singleLine="true"
- android:gravity="left|center_vertical"
- android:paddingRight="25dip"
- android:layout_width="wrap_content"
- android:layout_height="match_parent" />
-</LinearLayout>
import android.graphics.Rect;
import android.net.Uri;
import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
import android.os.Vibrator;
import android.provider.MediaStore;
import android.widget.Toast;
import com.android.gallery3d.ui.AlbumSlotRenderer;
import com.android.gallery3d.ui.DetailsHelper;
import com.android.gallery3d.ui.DetailsHelper.CloseListener;
-import com.android.gallery3d.ui.FadeTexture;
import com.android.gallery3d.ui.GLCanvas;
import com.android.gallery3d.ui.GLRoot;
import com.android.gallery3d.ui.GLView;
import com.android.gallery3d.ui.RelativePosition;
import com.android.gallery3d.ui.SelectionManager;
import com.android.gallery3d.ui.SlotView;
-import com.android.gallery3d.ui.SynchronizedHandler;
import com.android.gallery3d.util.Future;
import com.android.gallery3d.util.GalleryUtils;
import com.android.gallery3d.util.MediaSetUtils;
private MediaSet mMediaSet;
private boolean mShowDetails;
private float mUserDistance; // in pixel
- private Handler mHandler;
-
private Future<Integer> mSyncTask = null;
private int mLoadingBits = 0;
mSlotView.startScatteringAnimation(mOpenCenter);
}
}
-
- mHandler = new SynchronizedHandler(mActivity.getGLRoot()) {
- @Override
- public void handleMessage(Message message) {
- switch (message.what) {
- case MSG_PICK_PHOTO: {
- pickPhoto(message.arg1);
- break;
- }
- default: throw new AssertionError(message.what);
- }
- }
- };
}
@Override
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
-import android.content.Intent;
-import android.content.DialogInterface.OnCancelListener;
import android.content.DialogInterface.OnClickListener;
+import android.content.Intent;
import android.graphics.Rect;
import android.os.Bundle;
import android.os.Handler;
R.string.empty_album, Toast.LENGTH_LONG).show();
mActivity.getStateManager().finishState(this);
} else {
- emptyGalleryPrompt((Activity) mActivity);
+ emptyGalleryPrompt(mActivity);
}
} else if (mEmptyGalleryPrompt != null) {
mEmptyGalleryPrompt = null;
}
});
try {
- bitmap.compress(format, DEFAULT_COMPRESS_QUALITY, os);
+ bitmap.compress(format, DEFAULT_COMPRESS_QUALITY, ios);
return !jc.isCancelled();
} finally {
jc.setCancelListener(null);
- Utils.closeSilently(os);
+ Utils.closeSilently(ios);
}
}
private boolean saveBitmapToUri(JobContext jc, Bitmap bitmap, Uri uri) {
try {
- return saveBitmapToOutputStream(jc, bitmap,
- convertExtensionToCompressFormat(getFileExtension()),
- getContentResolver().openOutputStream(uri));
+ OutputStream out = getContentResolver().openOutputStream(uri);
+ try {
+ return saveBitmapToOutputStream(jc, bitmap,
+ convertExtensionToCompressFormat(getFileExtension()), out);
+ } finally {
+ Utils.closeSilently(out);
+ }
} catch (FileNotFoundException e) {
Log.w(TAG, "cannot write output", e);
}
mLayoutReady = false;
mEyePosition.resetPosition();
- Activity activity = (Activity) mActivity;
int slotViewTop = mActivity.getGalleryActionBar().getHeight();
int slotViewBottom = bottom - top;
- View footer = activity.findViewById(R.id.footer);
+ View footer = mActivity.findViewById(R.id.footer);
if (footer != null) {
int location[] = {0, 0};
footer.getLocationOnScreen(location);
}
private void initializeViews() {
- Activity activity = (Activity) mActivity;
+ Activity activity = mActivity;
mSelectionManager = new SelectionManager(mActivity, true);
mSelectionManager.setSelectionListener(this);
}
private void initializeFooterViews() {
- Activity activity = (Activity) mActivity;
+ Activity activity = mActivity;
LayoutInflater inflater = activity.getLayoutInflater();
mFooterContent = inflater.inflate(R.layout.manage_offline_bar, null);
private void showToast() {
if (mAlbumCountToMakeAvailableOffline > 0) {
- Activity activity = (Activity) mActivity;
+ Activity activity = mActivity;
Toast.makeText(activity, activity.getResources().getQuantityString(
R.plurals.make_albums_available_offline,
mAlbumCountToMakeAvailableOffline),
}
private void showToastForLocalAlbum() {
- Activity activity = (Activity) mActivity;
+ Activity activity = mActivity;
Toast.makeText(activity, activity.getResources().getString(
R.string.try_to_set_local_album_available_offline),
Toast.LENGTH_SHORT).show();
long expectedBytes = mCacheStorageInfo.getExpectedUsedBytes();
long freeBytes = mCacheStorageInfo.getFreeBytes();
- Activity activity = (Activity) mActivity;
+ Activity activity = mActivity;
if (totalBytes == 0) {
progressBar.setProgress(0);
progressBar.setSecondaryProgress(0);
});
}
+ @SuppressWarnings("deprecation")
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
private void showSystemUi(boolean visible) {
if (!ApiHelper.HAS_VIEW_SYSTEM_UI_FLAG_LAYOUT_STABLE) return;
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
if (!visible) {
+ // We used the deprecated "STATUS_BAR_HIDDEN" for unbundling
flag |= View.STATUS_BAR_HIDDEN | View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
}
private NfcAdapter mNfcAdapter;
- private Menu mActionBarMenu;
-
private final MyMenuVisibilityListener mMenuVisibilityListener =
new MyMenuVisibilityListener();
// The path should be "/local/image", "local/video" or "/local/all"
public class LocalAlbumSet extends MediaSet
implements FutureListener<ArrayList<MediaSet>> {
+ @SuppressWarnings("unused")
+ private static final String TAG = "LocalAlbumSet";
+
public static final Path PATH_ALL = Path.fromString("/local/all");
public static final Path PATH_IMAGE = Path.fromString("/local/image");
public static final Path PATH_VIDEO = Path.fromString("/local/video");
- private static final String TAG = "LocalAlbumSet";
-
private static final Uri[] mWatchUris =
{Images.Media.EXTERNAL_CONTENT_URI, Video.Media.EXTERNAL_CONTENT_URI};
private final GalleryApp mApplication;
private final int mDeviceId;
private final String mDeviceName;
- private final DataManager mDataManager;
private final MtpContext mMtpContext;
private final String mName;
private final ChangeNotifier mNotifier;
mApplication = application;
mDeviceId = deviceId;
mDeviceName = UsbDevice.getDeviceName(deviceId);
- mDataManager = application.getDataManager();
mMtpContext = mtpContext;
mName = name;
mNotifier = new ChangeNotifier(this, Uri.parse("mtp://"), application);
import com.android.gallery3d.app.GalleryApp;
import com.android.gallery3d.common.ApiHelper;
import com.android.gallery3d.provider.GalleryProvider;
-import com.android.gallery3d.util.ThreadPool;
import com.android.gallery3d.util.ThreadPool.Job;
import com.android.gallery3d.util.ThreadPool.JobContext;
private int mObjectSize;
private long mDateTaken;
private String mFileName;
- private final ThreadPool mThreadPool;
private final MtpContext mMtpContext;
private final MtpObjectInfo mObjInfo;
private final int mImageWidth;
mFileName = objInfo.getName();
mImageWidth = objInfo.getImagePixWidth();
mImageHeight = objInfo.getImagePixHeight();
- mThreadPool = application.getThreadPool();
mMtpContext = mtpContext;
}
import java.util.ArrayList;
public class SizeClustering extends Clustering {
+ @SuppressWarnings("unused")
private static final String TAG = "SizeClustering";
private Context mContext;
mContext = context;
}
+ @SuppressWarnings("unchecked")
@Override
public void run(MediaSet baseSet) {
- final ArrayList<Path>[] group =
- (ArrayList<Path>[]) new ArrayList[SIZE_LEVELS.length];
+ @SuppressWarnings("unchecked")
+ final ArrayList<Path>[] group = new ArrayList[SIZE_LEVELS.length];
baseSet.enumerateTotalMediaItems(new MediaSet.ItemConsumer() {
@Override
public void consume(int index, MediaItem item) {
}
}
- mClusters = (ArrayList<Path>[]) new ArrayList[count];
+ mClusters = new ArrayList[count];
mNames = new String[count];
mMinSizes = new long[count];
import com.android.gallery3d.app.GalleryApp;
+import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
private static final String TAG = "UriSource";
private static final String IMAGE_TYPE_PREFIX = "image/";
private static final String IMAGE_TYPE_ANY = "image/*";
+ private static final String CHARSET_UTF_8 = "utf-8";
private GalleryApp mApplication;
if (segment.length != 3) {
throw new RuntimeException("bad path: " + path);
}
- String uri = URLDecoder.decode(segment[1]);
- String type = URLDecoder.decode(segment[2]);
- return new UriImage(mApplication, path, Uri.parse(uri), type);
+ try {
+ String uri = URLDecoder.decode(segment[1], CHARSET_UTF_8);
+ String type = URLDecoder.decode(segment[2], CHARSET_UTF_8);
+ return new UriImage(mApplication, path, Uri.parse(uri), type);
+ } catch (UnsupportedEncodingException e) {
+ throw new AssertionError(e);
+ }
}
private String getMimeType(Uri uri) {
}
if (type.startsWith(IMAGE_TYPE_PREFIX)) {
- return Path.fromString("/uri/" + URLEncoder.encode(uri.toString())
- + "/" +URLEncoder.encode(type));
+ try {
+ return Path.fromString("/uri/"
+ + URLEncoder.encode(uri.toString(), CHARSET_UTF_8)
+ + "/" +URLEncoder.encode(type, CHARSET_UTF_8));
+ } catch (UnsupportedEncodingException e) {
+ throw new AssertionError(e);
+ }
}
// We have no clues that it is an image
return null;
private Future<?> mTask;
// wait the operation to finish when we want to stop it.
private boolean mWaitOnStop;
- private Intent mShareIntent;
private final AbstractGalleryActivity mActivity;
private final SelectionManager mSelectionManager;
Intent intent = getIntentBySingleSelectedPath(Intent.ACTION_ATTACH_DATA)
.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.putExtra("mimeType", intent.getType());
- Activity activity = (Activity) mActivity;
+ Activity activity = mActivity;
activity.startActivity(Intent.createChooser(
intent, activity.getString(R.string.set_as)));
return;
ArrayList<Path> ids = mSelectionManager.getSelected(false);
stopTaskAndDismissDialog();
- Activity activity = (Activity) mActivity;
+ Activity activity = mActivity;
mDialog = createProgressDialog(activity, title, ids.size());
if (showDialog) {
mDialog.show();
double latlng[] = new double[2];
item.getLatLong(latlng);
if (GalleryUtils.isValidLocation(latlng[0], latlng[1])) {
- GalleryUtils.showOnMap((Context) mActivity, latlng[0], latlng[1]);
+ GalleryUtils.showOnMap(mActivity, latlng[0], latlng[1]);
}
break;
}
private static final int ROTATE_FACTOR = 4;
private EdgeAnimation mAnimationLeft = new EdgeAnimation();
private EdgeAnimation mAnimationRight = new EdgeAnimation();
- private int mWidth, mHeight;
+ private int mWidth;
private float[] mMatrix = new float[16];
public void overScroll(float distance) {
public void setSize(int width, int height) {
mWidth = width;
- mHeight = height;
}
public float[] getTransform(Rect rect, float scrollX) {
import android.content.Context;
import android.graphics.Color;
import android.graphics.Matrix;
-import android.graphics.Point;
import android.graphics.Rect;
import android.os.Build;
import android.os.Message;
private Listener mListener;
private Model mModel;
- private StringTexture mLoadingText;
private StringTexture mNoThumbnailText;
private TileImageView mTileView;
private EdgeView mEdgeView;
private SynchronizedHandler mHandler;
- private Point mImageCenter = new Point();
private boolean mCancelExtraScalingPending;
private boolean mFilmMode = false;
private int mDisplayRotation = 0;
hideUndoBar();
}
});
- mLoadingText = StringTexture.newInstance(
- context.getString(R.string.loading),
- DEFAULT_TEXT_SIZE, Color.WHITE);
mNoThumbnailText = StringTexture.newInstance(
context.getString(R.string.no_thumbnail),
DEFAULT_TEXT_SIZE, Color.WHITE);
mPositionController = new PositionController(context,
new PositionController.Listener() {
- public void invalidate() {
- PhotoView.this.invalidate();
- }
- public boolean isHoldingDown() {
- return (mHolding & HOLD_TOUCH_DOWN) != 0;
- }
- public boolean isHoldingDelete() {
- return (mHolding & HOLD_DELETE) != 0;
- }
- public void onPull(int offset, int direction) {
- mEdgeView.onPull(offset, direction);
- }
- public void onRelease() {
- mEdgeView.onRelease();
- }
- public void onAbsorb(int velocity, int direction) {
- mEdgeView.onAbsorb(velocity, direction);
- }
- });
+
+ @Override
+ public void invalidate() {
+ PhotoView.this.invalidate();
+ }
+
+ @Override
+ public boolean isHoldingDown() {
+ return (mHolding & HOLD_TOUCH_DOWN) != 0;
+ }
+
+ @Override
+ public boolean isHoldingDelete() {
+ return (mHolding & HOLD_DELETE) != 0;
+ }
+
+ @Override
+ public void onPull(int offset, int direction) {
+ mEdgeView.onPull(offset, direction);
+ }
+
+ @Override
+ public void onRelease() {
+ mEdgeView.onRelease();
+ }
+
+ @Override
+ public void onAbsorb(int velocity, int direction) {
+ mEdgeView.onAbsorb(velocity, direction);
+ }
+ });
mVideoPlayIcon = new ResourceTexture(context, R.drawable.ic_control_play);
for (int i = -SCREEN_NAIL_MAX; i <= SCREEN_NAIL_MAX; i++) {
if (i == 0) {
default: throw new AssertionError(message.what);
}
}
- };
+ }
////////////////////////////////////////////////////////////////////////////
// Data/Image change notifications
private int mLoadingState = Model.LOADING_INIT;
private Size mSize = new Size();
private boolean mWasCameraCenter;
- public void FullPicture(TileImageView tileView) {
- mTileView = tileView;
- }
@Override
public void reload() {
import com.android.gallery3d.app.PhotoPage;
import com.android.gallery3d.common.OverScroller;
import com.android.gallery3d.common.Utils;
+import com.android.gallery3d.ui.PhotoView.Size;
import com.android.gallery3d.util.GalleryUtils;
import com.android.gallery3d.util.RangeArray;
import com.android.gallery3d.util.RangeIntArray;
-import com.android.gallery3d.ui.PhotoView.Size;
class PositionController {
private static final String TAG = "PositionController";
//dumpState();
}
+ @SuppressWarnings("unused")
private void dumpState() {
for (int i = -BOX_MAX; i < BOX_MAX; i++) {
Log.d(TAG, "Gap " + i + ": " + mGaps.get(i).mCurrentGap);
g.mAnimationStartTime = NO_ANIMATION;
}
+ @SuppressWarnings("unused")
private void debugMoveBox(int fromIndex[]) {
StringBuilder s = new StringBuilder("moveBox:");
for (int i = 0; i < fromIndex.length; i++) {
public static float[] intColorToFloatARGBArray(int from) {
return new float[] {
- (float) Color.alpha(from) / 255f,
- (float) Color.red(from) / 255f,
- (float) Color.green(from) / 255f,
- (float) Color.blue(from) / 255f
+ Color.alpha(from) / 255f,
+ Color.red(from) / 255f,
+ Color.green(from) / 255f,
+ Color.blue(from) / 255f
};
}