blob: 4f610407f60d4c377017bdc0ee6c971fba963965 [file] [log] [blame]
/*
* 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);
case MediaDetails.INDEX_DATETIME_ORIGINAL:
return context.getString(R.string.record_time);
default:
return "Unknown key" + key;
}
}
}