summaryrefslogtreecommitdiffstats
path: root/src/com/android/gallery3d/ui/DetailsHelper.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/gallery3d/ui/DetailsHelper.java')
-rw-r--r--src/com/android/gallery3d/ui/DetailsHelper.java148
1 files changed, 148 insertions, 0 deletions
diff --git a/src/com/android/gallery3d/ui/DetailsHelper.java b/src/com/android/gallery3d/ui/DetailsHelper.java
new file mode 100644
index 000000000..47296f655
--- /dev/null
+++ b/src/com/android/gallery3d/ui/DetailsHelper.java
@@ -0,0 +1,148 @@
+/*
+ * 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.
+ */
+package com.android.gallery3d.ui;
+
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.view.View.MeasureSpec;
+
+import com.android.gallery3d.R;
+import com.android.gallery3d.app.AbstractGalleryActivity;
+import com.android.gallery3d.data.MediaDetails;
+import com.android.gallery3d.ui.DetailsAddressResolver.AddressResolvingListener;
+
+public class DetailsHelper {
+ private static DetailsAddressResolver sAddressResolver;
+ private DetailsViewContainer mContainer;
+
+ public interface DetailsSource {
+ public int size();
+ public int setIndex();
+ public MediaDetails getDetails();
+ }
+
+ public interface CloseListener {
+ public void onClose();
+ }
+
+ public interface DetailsViewContainer {
+ public void reloadDetails();
+ public void setCloseListener(CloseListener listener);
+ public void show();
+ public void hide();
+ }
+
+ public interface ResolutionResolvingListener {
+ public void onResolutionAvailable(int width, int height);
+ }
+
+ public DetailsHelper(AbstractGalleryActivity activity, GLView rootPane, DetailsSource source) {
+ mContainer = new DialogDetailsView(activity, source);
+ }
+
+ public void layout(int left, int top, int right, int bottom) {
+ if (mContainer instanceof GLView) {
+ GLView view = (GLView) mContainer;
+ view.measure(MeasureSpec.UNSPECIFIED,
+ MeasureSpec.makeMeasureSpec(bottom - top, MeasureSpec.AT_MOST));
+ view.layout(0, top, view.getMeasuredWidth(), top + view.getMeasuredHeight());
+ }
+ }
+
+ public void reloadDetails() {
+ mContainer.reloadDetails();
+ }
+
+ public void setCloseListener(CloseListener listener) {
+ mContainer.setCloseListener(listener);
+ }
+
+ public static String resolveAddress(AbstractGalleryActivity activity, double[] latlng,
+ AddressResolvingListener listener) {
+ if (sAddressResolver == null) {
+ sAddressResolver = new DetailsAddressResolver(activity);
+ } else {
+ sAddressResolver.cancel();
+ }
+ return sAddressResolver.resolveAddress(latlng, listener);
+ }
+
+ public static void resolveResolution(String path, ResolutionResolvingListener listener) {
+ Bitmap bitmap = BitmapFactory.decodeFile(path);
+ if (bitmap == null) return;
+ listener.onResolutionAvailable(bitmap.getWidth(), bitmap.getHeight());
+ }
+
+ public static void pause() {
+ if (sAddressResolver != null) sAddressResolver.cancel();
+ }
+
+ public void show() {
+ mContainer.show();
+ }
+
+ public void hide() {
+ mContainer.hide();
+ }
+
+ public static String getDetailsName(Context context, int key) {
+ switch (key) {
+ case MediaDetails.INDEX_TITLE:
+ return context.getString(R.string.title);
+ case MediaDetails.INDEX_DESCRIPTION:
+ return context.getString(R.string.description);
+ case MediaDetails.INDEX_DATETIME:
+ return context.getString(R.string.time);
+ case MediaDetails.INDEX_LOCATION:
+ return context.getString(R.string.location);
+ case MediaDetails.INDEX_PATH:
+ return context.getString(R.string.path);
+ case MediaDetails.INDEX_WIDTH:
+ return context.getString(R.string.width);
+ case MediaDetails.INDEX_HEIGHT:
+ return context.getString(R.string.height);
+ case MediaDetails.INDEX_ORIENTATION:
+ return context.getString(R.string.orientation);
+ case MediaDetails.INDEX_DURATION:
+ return context.getString(R.string.duration);
+ case MediaDetails.INDEX_MIMETYPE:
+ return context.getString(R.string.mimetype);
+ case MediaDetails.INDEX_SIZE:
+ return context.getString(R.string.file_size);
+ case MediaDetails.INDEX_MAKE:
+ return context.getString(R.string.maker);
+ case MediaDetails.INDEX_MODEL:
+ return context.getString(R.string.model);
+ case MediaDetails.INDEX_FLASH:
+ return context.getString(R.string.flash);
+ case MediaDetails.INDEX_APERTURE:
+ return context.getString(R.string.aperture);
+ case MediaDetails.INDEX_FOCAL_LENGTH:
+ return context.getString(R.string.focal_length);
+ case MediaDetails.INDEX_WHITE_BALANCE:
+ return context.getString(R.string.white_balance);
+ case MediaDetails.INDEX_EXPOSURE_TIME:
+ return context.getString(R.string.exposure_time);
+ case MediaDetails.INDEX_ISO:
+ return context.getString(R.string.iso);
+ default:
+ return "Unknown key" + key;
+ }
+ }
+}
+
+