14105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen/* 24105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen * Copyright (C) 2011 The Android Open Source Project 34105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen * 44105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen * Licensed under the Apache License, Version 2.0 (the "License"); 54105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen * you may not use this file except in compliance with the License. 64105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen * You may obtain a copy of the License at 74105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen * 84105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen * http://www.apache.org/licenses/LICENSE-2.0 94105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen * 104105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen * Unless required by applicable law or agreed to in writing, software 114105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen * distributed under the License is distributed on an "AS IS" BASIS, 124105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 134105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen * See the License for the specific language governing permissions and 144105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen * limitations under the License. 154105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen */ 164105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen 174105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chenpackage com.android.gallery3d.ui; 184105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen 194105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chenimport android.app.AlertDialog; 204105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chenimport android.app.Dialog; 214105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chenimport android.content.Context; 224105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chenimport android.content.DialogInterface; 23a4f0526dc8d993fb914d0e6505e22a1f30ad0e14Ray Chenimport android.content.DialogInterface.OnDismissListener; 244105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chenimport android.text.format.Formatter; 254105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chenimport android.view.LayoutInflater; 264105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chenimport android.view.View; 274105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chenimport android.view.ViewGroup; 284105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chenimport android.widget.BaseAdapter; 29a29127be09f74782dee7d6c18cf6dd50728652aaEvan Millarimport android.widget.ListView; 304105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chenimport android.widget.TextView; 314105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen 32b5bc8833b142985652a0438ae7d64ff5477b590eRay Chenimport com.android.gallery3d.R; 33b21b8e58a604f6c701245d84b141b5b87663192bOwen Linimport com.android.gallery3d.app.AbstractGalleryActivity; 34b5bc8833b142985652a0438ae7d64ff5477b590eRay Chenimport com.android.gallery3d.common.Utils; 35b5bc8833b142985652a0438ae7d64ff5477b590eRay Chenimport com.android.gallery3d.data.MediaDetails; 36b5bc8833b142985652a0438ae7d64ff5477b590eRay Chenimport com.android.gallery3d.ui.DetailsAddressResolver.AddressResolvingListener; 37b5bc8833b142985652a0438ae7d64ff5477b590eRay Chenimport com.android.gallery3d.ui.DetailsHelper.CloseListener; 38b5bc8833b142985652a0438ae7d64ff5477b590eRay Chenimport com.android.gallery3d.ui.DetailsHelper.DetailsSource; 39b5bc8833b142985652a0438ae7d64ff5477b590eRay Chenimport com.android.gallery3d.ui.DetailsHelper.DetailsViewContainer; 40e879326d76734277469ca2f387f436fd0e922c87Doris Liuimport com.android.gallery3d.ui.DetailsHelper.ResolutionResolvingListener; 41b5bc8833b142985652a0438ae7d64ff5477b590eRay Chen 424105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chenimport java.util.ArrayList; 434105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chenimport java.util.Map.Entry; 444105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen 454105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chenpublic class DialogDetailsView implements DetailsViewContainer { 464105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen @SuppressWarnings("unused") 474105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen private static final String TAG = "DialogDetailsView"; 484105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen 49b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin private final AbstractGalleryActivity mActivity; 504105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen private DetailsAdapter mAdapter; 514105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen private MediaDetails mDetails; 52b5bc8833b142985652a0438ae7d64ff5477b590eRay Chen private final DetailsSource mSource; 534105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen private int mIndex; 544105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen private Dialog mDialog; 55a4f0526dc8d993fb914d0e6505e22a1f30ad0e14Ray Chen private CloseListener mListener; 564105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen 57b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin public DialogDetailsView(AbstractGalleryActivity activity, DetailsSource source) { 58b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin mActivity = activity; 594105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen mSource = source; 604105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen } 614105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen 627817979db0c52ffeacb951625b1e821eba303285Ahbong Chang @Override 634105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen public void show() { 64995c4566bed7df1aa48ba7e1351f964efa73880bMichael Kolb reloadDetails(); 654105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen mDialog.show(); 664105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen } 674105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen 687817979db0c52ffeacb951625b1e821eba303285Ahbong Chang @Override 694105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen public void hide() { 704105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen mDialog.hide(); 714105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen } 724105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen 737817979db0c52ffeacb951625b1e821eba303285Ahbong Chang @Override 74995c4566bed7df1aa48ba7e1351f964efa73880bMichael Kolb public void reloadDetails() { 75995c4566bed7df1aa48ba7e1351f964efa73880bMichael Kolb int index = mSource.setIndex(); 764105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen if (index == -1) return; 774105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen MediaDetails details = mSource.getDetails(); 784105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen if (details != null) { 794105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen if (mIndex == index && mDetails == details) return; 804105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen mIndex = index; 814105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen mDetails = details; 824105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen setDetails(details); 834105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen } 844105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen } 854105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen 864105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen private void setDetails(MediaDetails details) { 874105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen mAdapter = new DetailsAdapter(details); 884105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen String title = String.format( 89b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin mActivity.getAndroidContext().getString(R.string.details_title), 904105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen mIndex + 1, mSource.size()); 91b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin ListView detailsList = (ListView) LayoutInflater.from(mActivity.getAndroidContext()).inflate( 92a29127be09f74782dee7d6c18cf6dd50728652aaEvan Millar R.layout.details_list, null, false); 93a29127be09f74782dee7d6c18cf6dd50728652aaEvan Millar detailsList.setAdapter(mAdapter); 94b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin mDialog = new AlertDialog.Builder(mActivity) 95a29127be09f74782dee7d6c18cf6dd50728652aaEvan Millar .setView(detailsList) 964105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen .setTitle(title) 974105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen .setPositiveButton(R.string.close, new DialogInterface.OnClickListener() { 987817979db0c52ffeacb951625b1e821eba303285Ahbong Chang @Override 994105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen public void onClick(DialogInterface dialog, int whichButton) { 1004105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen mDialog.dismiss(); 1014105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen } 1024105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen }) 1034105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen .create(); 104a4f0526dc8d993fb914d0e6505e22a1f30ad0e14Ray Chen 105a4f0526dc8d993fb914d0e6505e22a1f30ad0e14Ray Chen mDialog.setOnDismissListener(new OnDismissListener() { 1067817979db0c52ffeacb951625b1e821eba303285Ahbong Chang @Override 107a4f0526dc8d993fb914d0e6505e22a1f30ad0e14Ray Chen public void onDismiss(DialogInterface dialog) { 108a4f0526dc8d993fb914d0e6505e22a1f30ad0e14Ray Chen if (mListener != null) { 109a4f0526dc8d993fb914d0e6505e22a1f30ad0e14Ray Chen mListener.onClose(); 110a4f0526dc8d993fb914d0e6505e22a1f30ad0e14Ray Chen } 111a4f0526dc8d993fb914d0e6505e22a1f30ad0e14Ray Chen } 112a4f0526dc8d993fb914d0e6505e22a1f30ad0e14Ray Chen }); 1134105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen } 1144105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen 115e879326d76734277469ca2f387f436fd0e922c87Doris Liu 116e879326d76734277469ca2f387f436fd0e922c87Doris Liu private class DetailsAdapter extends BaseAdapter 117e879326d76734277469ca2f387f436fd0e922c87Doris Liu implements AddressResolvingListener, ResolutionResolvingListener { 118b5bc8833b142985652a0438ae7d64ff5477b590eRay Chen private final ArrayList<String> mItems; 119b5bc8833b142985652a0438ae7d64ff5477b590eRay Chen private int mLocationIndex; 120e879326d76734277469ca2f387f436fd0e922c87Doris Liu private int mWidthIndex = -1; 121e879326d76734277469ca2f387f436fd0e922c87Doris Liu private int mHeightIndex = -1; 1224105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen 1234105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen public DetailsAdapter(MediaDetails details) { 124b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin Context context = mActivity.getAndroidContext(); 1254105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen mItems = new ArrayList<String>(details.size()); 1264105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen mLocationIndex = -1; 1274105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen setDetails(context, details); 1284105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen } 1294105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen 1304105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen private void setDetails(Context context, MediaDetails details) { 131e879326d76734277469ca2f387f436fd0e922c87Doris Liu boolean resolutionIsValid = true; 132e879326d76734277469ca2f387f436fd0e922c87Doris Liu String path = null; 1334105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen for (Entry<Integer, Object> detail : details) { 1344105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen String value; 1354105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen switch (detail.getKey()) { 1364105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen case MediaDetails.INDEX_LOCATION: { 1374105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen double[] latlng = (double[]) detail.getValue(); 1384105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen mLocationIndex = mItems.size(); 139b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin value = DetailsHelper.resolveAddress(mActivity, latlng, this); 1404105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen break; 1414105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen } 1424105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen case MediaDetails.INDEX_SIZE: { 1434105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen value = Formatter.formatFileSize( 1444105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen context, (Long) detail.getValue()); 1454105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen break; 1464105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen } 1474105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen case MediaDetails.INDEX_WHITE_BALANCE: { 1484105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen value = "1".equals(detail.getValue()) 1494105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen ? context.getString(R.string.manual) 1504105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen : context.getString(R.string.auto); 1514105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen break; 1524105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen } 1534105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen case MediaDetails.INDEX_FLASH: { 1544105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen MediaDetails.FlashState flash = 1554105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen (MediaDetails.FlashState) detail.getValue(); 1564105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen // TODO: camera doesn't fill in the complete values, show more information 1574105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen // when it is fixed. 1584105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen if (flash.isFlashFired()) { 1594105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen value = context.getString(R.string.flash_on); 1604105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen } else { 1614105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen value = context.getString(R.string.flash_off); 1624105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen } 1634105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen break; 1644105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen } 1654105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen case MediaDetails.INDEX_EXPOSURE_TIME: { 1664105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen value = (String) detail.getValue(); 1674105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen double time = Double.valueOf(value); 1684105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen if (time < 1.0f) { 1694105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen value = String.format("1/%d", (int) (0.5f + 1 / time)); 1704105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen } else { 1714105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen int integer = (int) time; 1724105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen time -= integer; 1734105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen value = String.valueOf(integer) + "''"; 1744105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen if (time > 0.0001) { 1754105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen value += String.format(" 1/%d", (int) (0.5f + 1 / time)); 1764105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen } 1774105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen } 1784105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen break; 1794105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen } 180e879326d76734277469ca2f387f436fd0e922c87Doris Liu case MediaDetails.INDEX_WIDTH: 181e879326d76734277469ca2f387f436fd0e922c87Doris Liu mWidthIndex = mItems.size(); 182e879326d76734277469ca2f387f436fd0e922c87Doris Liu value = detail.getValue().toString(); 183e879326d76734277469ca2f387f436fd0e922c87Doris Liu if (value.equalsIgnoreCase("0")) { 184e879326d76734277469ca2f387f436fd0e922c87Doris Liu value = context.getString(R.string.unknown); 185e879326d76734277469ca2f387f436fd0e922c87Doris Liu resolutionIsValid = false; 186e879326d76734277469ca2f387f436fd0e922c87Doris Liu } 187e879326d76734277469ca2f387f436fd0e922c87Doris Liu break; 188e879326d76734277469ca2f387f436fd0e922c87Doris Liu case MediaDetails.INDEX_HEIGHT: { 189e879326d76734277469ca2f387f436fd0e922c87Doris Liu mHeightIndex = mItems.size(); 190e879326d76734277469ca2f387f436fd0e922c87Doris Liu value = detail.getValue().toString(); 191e879326d76734277469ca2f387f436fd0e922c87Doris Liu if (value.equalsIgnoreCase("0")) { 192e879326d76734277469ca2f387f436fd0e922c87Doris Liu value = context.getString(R.string.unknown); 193e879326d76734277469ca2f387f436fd0e922c87Doris Liu resolutionIsValid = false; 194e879326d76734277469ca2f387f436fd0e922c87Doris Liu } 195e879326d76734277469ca2f387f436fd0e922c87Doris Liu break; 196e879326d76734277469ca2f387f436fd0e922c87Doris Liu } 197e879326d76734277469ca2f387f436fd0e922c87Doris Liu case MediaDetails.INDEX_PATH: 198e879326d76734277469ca2f387f436fd0e922c87Doris Liu // Get the path and then fall through to the default case 199e879326d76734277469ca2f387f436fd0e922c87Doris Liu path = detail.getValue().toString(); 2004105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen default: { 2014105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen Object valueObj = detail.getValue(); 2024105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen // This shouldn't happen, log its key to help us diagnose the problem. 203cfa105d3934c4dfa14f02b693bfa97c8d17d56a9Chih-Chung Chang if (valueObj == null) { 204cfa105d3934c4dfa14f02b693bfa97c8d17d56a9Chih-Chung Chang Utils.fail("%s's value is Null", 205cfa105d3934c4dfa14f02b693bfa97c8d17d56a9Chih-Chung Chang DetailsHelper.getDetailsName(context, detail.getKey())); 206cfa105d3934c4dfa14f02b693bfa97c8d17d56a9Chih-Chung Chang } 2074105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen value = valueObj.toString(); 2084105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen } 2094105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen } 2104105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen int key = detail.getKey(); 2114105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen if (details.hasUnit(key)) { 21202ec00b91039736d478c6e59ba90d5bbcd1a8044Owen Lin value = String.format("%s: %s %s", DetailsHelper.getDetailsName( 2134105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen context, key), value, context.getString(details.getUnit(key))); 2144105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen } else { 21502ec00b91039736d478c6e59ba90d5bbcd1a8044Owen Lin value = String.format("%s: %s", DetailsHelper.getDetailsName( 2164105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen context, key), value); 2174105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen } 2184105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen mItems.add(value); 219e879326d76734277469ca2f387f436fd0e922c87Doris Liu if (!resolutionIsValid) { 220e879326d76734277469ca2f387f436fd0e922c87Doris Liu DetailsHelper.resolveResolution(path, this); 221e879326d76734277469ca2f387f436fd0e922c87Doris Liu } 2224105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen } 2234105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen } 2244105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen 225b5bc8833b142985652a0438ae7d64ff5477b590eRay Chen @Override 2264105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen public boolean areAllItemsEnabled() { 2274105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen return false; 2284105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen } 2294105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen 230b5bc8833b142985652a0438ae7d64ff5477b590eRay Chen @Override 2314105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen public boolean isEnabled(int position) { 2324105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen return false; 2334105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen } 2344105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen 2357817979db0c52ffeacb951625b1e821eba303285Ahbong Chang @Override 2364105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen public int getCount() { 2374105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen return mItems.size(); 2384105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen } 2394105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen 2407817979db0c52ffeacb951625b1e821eba303285Ahbong Chang @Override 2414105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen public Object getItem(int position) { 2424105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen return mDetails.getDetail(position); 2434105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen } 2444105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen 2457817979db0c52ffeacb951625b1e821eba303285Ahbong Chang @Override 2464105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen public long getItemId(int position) { 2474105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen return position; 2484105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen } 2494105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen 2507817979db0c52ffeacb951625b1e821eba303285Ahbong Chang @Override 2514105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen public View getView(int position, View convertView, ViewGroup parent) { 2524105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen TextView tv; 2534105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen if (convertView == null) { 254b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin tv = (TextView) LayoutInflater.from(mActivity.getAndroidContext()).inflate( 2554105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen R.layout.details, parent, false); 2564105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen } else { 2574105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen tv = (TextView) convertView; 2584105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen } 2594105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen tv.setText(mItems.get(position)); 2604105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen return tv; 2614105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen } 2624105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen 2637817979db0c52ffeacb951625b1e821eba303285Ahbong Chang @Override 2644105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen public void onAddressAvailable(String address) { 2654105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen mItems.set(mLocationIndex, address); 266b5bc8833b142985652a0438ae7d64ff5477b590eRay Chen notifyDataSetChanged(); 2674105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen } 268e879326d76734277469ca2f387f436fd0e922c87Doris Liu 269e879326d76734277469ca2f387f436fd0e922c87Doris Liu @Override 270e879326d76734277469ca2f387f436fd0e922c87Doris Liu public void onResolutionAvailable(int width, int height) { 271e879326d76734277469ca2f387f436fd0e922c87Doris Liu if (width == 0 || height == 0) return; 272e879326d76734277469ca2f387f436fd0e922c87Doris Liu // Update the resolution with the new width and height 273e879326d76734277469ca2f387f436fd0e922c87Doris Liu Context context = mActivity.getAndroidContext(); 274e879326d76734277469ca2f387f436fd0e922c87Doris Liu String widthString = String.format("%s: %d", DetailsHelper.getDetailsName( 275e879326d76734277469ca2f387f436fd0e922c87Doris Liu context, MediaDetails.INDEX_WIDTH), width); 276e879326d76734277469ca2f387f436fd0e922c87Doris Liu String heightString = String.format("%s: %d", DetailsHelper.getDetailsName( 277e879326d76734277469ca2f387f436fd0e922c87Doris Liu context, MediaDetails.INDEX_HEIGHT), height); 278e879326d76734277469ca2f387f436fd0e922c87Doris Liu mItems.set(mWidthIndex, String.valueOf(widthString)); 279e879326d76734277469ca2f387f436fd0e922c87Doris Liu mItems.set(mHeightIndex, String.valueOf(heightString)); 280e879326d76734277469ca2f387f436fd0e922c87Doris Liu notifyDataSetChanged(); 281e879326d76734277469ca2f387f436fd0e922c87Doris Liu } 2824105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen } 2834105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen 2847817979db0c52ffeacb951625b1e821eba303285Ahbong Chang @Override 2854105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen public void setCloseListener(CloseListener listener) { 286a4f0526dc8d993fb914d0e6505e22a1f30ad0e14Ray Chen mListener = listener; 2874105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen } 2884105e22d72d7a44e67cba4a58ad88018ed664d10Ray Chen} 289