aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSammysHP <sven@sammyshp.de>2012-01-03 21:27:39 +0100
committerSammysHP <sven@sammyshp.de>2012-01-03 21:27:39 +0100
commitad412746a52da89321e366a14c78b73b861d2f8c (patch)
tree740be4363dee6e0aa8ef94eebb2a1fb7beeedb04
parente45bb9072d49a615a4945680cef22dc348a69d8d (diff)
downloadcgeo-ad412746a52da89321e366a14c78b73b861d2f8c.zip
cgeo-ad412746a52da89321e366a14c78b73b861d2f8c.tar.gz
cgeo-ad412746a52da89321e366a14c78b73b861d2f8c.tar.bz2
fix: preview map is missing
-rw-r--r--main/res/layout/cacheview_details.xml73
-rw-r--r--main/src/cgeo/geocaching/CacheDetailActivity.java49
2 files changed, 93 insertions, 29 deletions
diff --git a/main/res/layout/cacheview_details.xml b/main/res/layout/cacheview_details.xml
index 59a04a4..990b197 100644
--- a/main/res/layout/cacheview_details.xml
+++ b/main/res/layout/cacheview_details.xml
@@ -10,18 +10,7 @@
android:orientation="vertical"
android:padding="4dip" >
- <!-- Map preview -->
-
- <ImageView
- android:id="@+id/map_preview"
- android:layout_width="fill_parent"
- android:layout_height="80dip"
- android:layout_gravity="center"
- android:layout_marginBottom="5dip"
- android:gravity="center"
- android:scaleType="centerCrop"
- android:src="@null"
- android:visibility="gone" />
+ <!-- Details list -->
<LinearLayout
android:id="@+id/details_list"
@@ -109,7 +98,8 @@
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
- <View
+
+ <View
style="@style/separator_horizontal"
android:layout_marginBottom="9dp"
android:layout_marginTop="9dp" />
@@ -145,9 +135,10 @@
android:visibility="gone" />
</RelativeLayout>
</LinearLayout>
-
- <!-- Debug info Box -->
- <LinearLayout
+
+ <!-- Debug info Box -->
+
+ <LinearLayout
android:id="@+id/debug_box"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
@@ -161,19 +152,19 @@
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
-
- <TextView
- android:id="@+id/debug_text"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_alignParentLeft="true"
- android:layout_gravity="left"
- android:layout_marginLeft="6dip"
- android:layout_marginRight="130dip"
- android:paddingRight="3dip"
- android:textColor="?text_color"
- android:textSize="14dip" />
- </RelativeLayout>
+
+ <TextView
+ android:id="@+id/debug_text"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:layout_alignParentLeft="true"
+ android:layout_gravity="left"
+ android:layout_marginLeft="6dip"
+ android:layout_marginRight="130dip"
+ android:paddingRight="3dip"
+ android:textColor="?text_color"
+ android:textSize="14dip" />
+ </RelativeLayout>
</LinearLayout>
<!-- License Box -->
@@ -205,6 +196,30 @@
android:textColorLink="?text_color_link"
android:textSize="14dip" />
</LinearLayout>
+
+ <!-- Map Preview Box -->
+
+ <LinearLayout
+ android:id="@+id/map_preview_box"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:visibility="gone" >
+
+ <View
+ style="@style/separator_horizontal"
+ android:layout_marginBottom="9dp"
+ android:layout_marginTop="9dp" />
+
+ <ImageView
+ android:id="@+id/map_preview"
+ android:layout_width="fill_parent"
+ android:layout_height="80dip"
+ android:layout_gravity="center"
+ android:gravity="center"
+ android:scaleType="centerCrop"
+ android:src="@null" />
+ </LinearLayout>
</LinearLayout>
</ScrollView> \ No newline at end of file
diff --git a/main/src/cgeo/geocaching/CacheDetailActivity.java b/main/src/cgeo/geocaching/CacheDetailActivity.java
index 30bfcf5..5a6c82b 100644
--- a/main/src/cgeo/geocaching/CacheDetailActivity.java
+++ b/main/src/cgeo/geocaching/CacheDetailActivity.java
@@ -32,6 +32,8 @@ import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.Configuration;
import android.database.Cursor;
+import android.graphics.Bitmap;
+import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.AsyncTask;
@@ -48,6 +50,7 @@ import android.text.Spanned;
import android.text.method.LinkMovementMethod;
import android.text.style.ImageSpan;
import android.text.style.StrikethroughSpan;
+import android.util.DisplayMetrics;
import android.util.Log;
import android.view.ContextMenu;
import android.view.Menu;
@@ -1334,6 +1337,11 @@ public class CacheDetailActivity extends AbstractActivity {
view = (ScrollView) getLayoutInflater().inflate(R.layout.cacheview_details, null);
+ // Start loading preview map
+ if (Settings.isStoreOfflineMaps()) {
+ new PreviewMapTask().execute((Void) null);
+ }
+
detailsList = (LinearLayout) view.findViewById(R.id.details_list);
// cache name (full name)
@@ -1854,6 +1862,47 @@ public class CacheDetailActivity extends AbstractActivity {
}
}
+ private class PreviewMapTask extends AsyncTask<Void, Void, BitmapDrawable> {
+ @Override
+ protected BitmapDrawable doInBackground(Void... params) {
+ BitmapDrawable image = null;
+
+ try {
+ final String latlonMap = cache.getCoords().format(GeopointFormatter.Format.LAT_LON_DECDEGREE_COMMA);
+
+ DisplayMetrics metrics = new DisplayMetrics();
+ getWindowManager().getDefaultDisplay().getMetrics(metrics);
+
+ final int width = metrics.widthPixels;
+ final int height = (int) (110 * metrics.density);
+
+ final String markerUrl = cgBase.urlencode_rfc3986("http://cgeo.carnero.cc/_markers/my_location_mdpi.png");
+
+ final HtmlImage mapGetter = new HtmlImage(CacheDetailActivity.this, cache.getGeocode(), false, 0, false);
+ image = mapGetter.getDrawable("http://maps.google.com/maps/api/staticmap?zoom=15&size=" + width + "x" + height + "&maptype=roadmap&markers=icon%3A" + markerUrl + "%7Cshadow:false%7C" + latlonMap + "&sensor=false");
+ } catch (Exception e) {
+ Log.w(Settings.tag, "CacheDetailActivity.PreviewMapTask", e);
+ }
+
+ return image;
+ }
+
+ @Override
+ protected void onPostExecute(BitmapDrawable image) {
+ if (image == null) {
+ return;
+ }
+
+ final Bitmap bitmap = image.getBitmap();
+ if (bitmap == null || bitmap.getWidth() <= 10) {
+ return;
+ }
+
+ ((ImageView) view.findViewById(R.id.map_preview)).setImageDrawable(image);
+ view.findViewById(R.id.map_preview_box).setVisibility(View.VISIBLE);
+ }
+ }
+
}
private class DescriptionViewCreator implements PageViewCreator {