From 7c56dc26503e304905971830da9527968b64e6ab Mon Sep 17 00:00:00 2001 From: Ray Chen Date: Wed, 24 Aug 2011 11:40:04 +0800 Subject: Fix 5133608 [UI] Details should be displayed as a system dialog in phone UI Fix 5132798 [UI] Details popup on tablet is incorrectly placed and should not have x icon to close Fix 5199822 Long press and select "detail" shows details of another item Change-Id: I0e992ded8a154edb1c7a81b75d0461d5bf309f31 --- res/drawable-hdpi/ic_lockscreen_chevron_up.png | Bin 0 -> 698 bytes res/drawable-mdpi/ic_lockscreen_chevron_up.png | Bin 0 -> 536 bytes res/layout/details.xml | 23 ++++ res/values-xlarge/bool.xml | 4 + res/values/bool.xml | 4 + res/values/strings.xml | 2 + .../gallery3d/ui/DetailsAddressResolver.java | 116 +++++++++++++++++++++ 7 files changed, 149 insertions(+) create mode 100644 res/drawable-hdpi/ic_lockscreen_chevron_up.png create mode 100644 res/drawable-mdpi/ic_lockscreen_chevron_up.png create mode 100644 res/layout/details.xml create mode 100644 res/values-xlarge/bool.xml create mode 100644 res/values/bool.xml create mode 100644 src/com/android/gallery3d/ui/DetailsAddressResolver.java diff --git a/res/drawable-hdpi/ic_lockscreen_chevron_up.png b/res/drawable-hdpi/ic_lockscreen_chevron_up.png new file mode 100644 index 000000000..4ffa833b9 Binary files /dev/null and b/res/drawable-hdpi/ic_lockscreen_chevron_up.png differ diff --git a/res/drawable-mdpi/ic_lockscreen_chevron_up.png b/res/drawable-mdpi/ic_lockscreen_chevron_up.png new file mode 100644 index 000000000..35aca4e82 Binary files /dev/null and b/res/drawable-mdpi/ic_lockscreen_chevron_up.png differ diff --git a/res/layout/details.xml b/res/layout/details.xml new file mode 100644 index 000000000..dfda0ee22 --- /dev/null +++ b/res/layout/details.xml @@ -0,0 +1,23 @@ + + + + diff --git a/res/values-xlarge/bool.xml b/res/values-xlarge/bool.xml new file mode 100644 index 000000000..cffa691fc --- /dev/null +++ b/res/values-xlarge/bool.xml @@ -0,0 +1,4 @@ + + + false + \ No newline at end of file diff --git a/res/values/bool.xml b/res/values/bool.xml new file mode 100644 index 000000000..cef32a297 --- /dev/null +++ b/res/values/bool.xml @@ -0,0 +1,4 @@ + + + true + \ No newline at end of file diff --git a/res/values/strings.xml b/res/values/strings.xml index cb8ce6d63..9f6cce8f0 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -97,6 +97,8 @@ Slideshow Details + %1$d of %2$d items: + Close Switch to Camera diff --git a/src/com/android/gallery3d/ui/DetailsAddressResolver.java b/src/com/android/gallery3d/ui/DetailsAddressResolver.java new file mode 100644 index 000000000..fdf94ba09 --- /dev/null +++ b/src/com/android/gallery3d/ui/DetailsAddressResolver.java @@ -0,0 +1,116 @@ +/* + * Copyright (C) 2011 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 com.android.gallery3d.app.GalleryActivity; +import com.android.gallery3d.data.MediaDetails; +import com.android.gallery3d.util.Future; +import com.android.gallery3d.util.FutureListener; +import com.android.gallery3d.util.GalleryUtils; +import com.android.gallery3d.util.ReverseGeocoder; +import com.android.gallery3d.util.ThreadPool.Job; +import com.android.gallery3d.util.ThreadPool.JobContext; + +import android.content.Context; +import android.location.Address; +import android.os.Handler; +import android.os.Looper; + +public class DetailsAddressResolver { + private AddressResolvingListener mListener; + private double[] mLatlng; + private GalleryActivity mContext; + private Future
mAddressLookupJob; + private Handler mHandler; + + private class AddressLookupJob implements Job
{ + + protected AddressLookupJob(double[] latlng) { + mLatlng = latlng; + } + + public Address run(JobContext jc) { + ReverseGeocoder geocoder = new ReverseGeocoder(mContext.getAndroidContext()); + return geocoder.lookupAddress(mLatlng[0], mLatlng[1], true); + } + } + + public interface AddressResolvingListener { + public void onAddressAvailable(String address); + } + + public DetailsAddressResolver(GalleryActivity context) { + mContext = context; + mHandler = new Handler(Looper.getMainLooper()); + } + + public String resolveAddress(double[] latlng, AddressResolvingListener listener) { + mLatlng = latlng; + mListener = listener; + mAddressLookupJob = mContext.getThreadPool().submit( + new AddressLookupJob(latlng), + new FutureListener
() { + public void onFutureDone(final Future
future) { + mAddressLookupJob = null; + if (!future.isCancelled()) { + mHandler.post(new Runnable() { + public void run() { + updateLocation(future.get()); + } + }); + } + } + }); + return GalleryUtils.formatLatitudeLongitude("(%f,%f)", mLatlng[0], mLatlng[1]); + } + + private void updateLocation(Address address) { + if (address != null) { + Context context = mContext.getAndroidContext(); + String parts[] = { + address.getAdminArea(), + address.getSubAdminArea(), + address.getLocality(), + address.getSubLocality(), + address.getThoroughfare(), + address.getSubThoroughfare(), + address.getPremises(), + address.getPostalCode(), + address.getCountryName() + }; + + String addressText = ""; + for (int i = 0; i < parts.length; i++) { + if (parts[i] == null || parts[i].isEmpty()) continue; + if (!addressText.isEmpty()) { + addressText += ", "; + } + addressText += parts[i]; + } + String text = String.format("%s : %s", DetailsHelper.getDetailsName( + context, MediaDetails.INDEX_LOCATION), addressText); + mListener.onAddressAvailable(text); + } + } + + public void cancel() { + if (mAddressLookupJob != null) { + mAddressLookupJob.cancel(); + mAddressLookupJob = null; + } + } +} -- cgit v1.2.3