From 8be498f8d4a7cb8dcda3c474dfb817068c50c591 Mon Sep 17 00:00:00 2001 From: Dmitry Kunin Date: Sun, 2 Mar 2014 16:55:07 +0300 Subject: [PATCH] codereview --- android/jni/com/mapswithme/maps/Framework.cpp | 8 +- .../src/com/mapswithme/maps/MWMActivity.java | 8 +- .../com/mapswithme/maps/SearchActivity.java | 6 +- .../maps/bookmarks/data/Bookmark.java | 10 +- .../maps/bookmarks/data/MapObject.java | 190 ++++++------------ .../mapswithme/maps/widget/MapInfoView.java | 15 +- 6 files changed, 89 insertions(+), 148 deletions(-) diff --git a/android/jni/com/mapswithme/maps/Framework.cpp b/android/jni/com/mapswithme/maps/Framework.cpp index c35f324bce..a429ab66ac 100644 --- a/android/jni/com/mapswithme/maps/Framework.cpp +++ b/android/jni/com/mapswithme/maps/Framework.cpp @@ -916,15 +916,15 @@ extern "C" Bookmark * b = g_framework->NativeFramework()-> GetBookmarkManager().AdditionalPoiLayerGetBookmark(nIndex); - static jclass javaClazz = env->GetObjectClass(jsearchResult); + const jclass javaClazz = env->GetObjectClass(jsearchResult); - static jfieldID nameId = env->GetFieldID(javaClazz, "mName", "Ljava/lang/String;"); + const jfieldID nameId = env->GetFieldID(javaClazz, "mName", "Ljava/lang/String;"); env->SetObjectField(jsearchResult, nameId, jni::ToJavaString(env, b->GetName())); - static jfieldID latId = env->GetFieldID(javaClazz, "mLat", "D"); + const jfieldID latId = env->GetFieldID(javaClazz, "mLat", "D"); env->SetDoubleField(jsearchResult, latId, static_cast(MercatorBounds::YToLat(b->GetOrg().y))); - static jfieldID lonId = env->GetFieldID(javaClazz, "mLon", "D"); + const jfieldID lonId = env->GetFieldID(javaClazz, "mLon", "D"); env->SetDoubleField(jsearchResult, lonId, static_cast(MercatorBounds::XToLon(b->GetOrg().x))); } diff --git a/android/src/com/mapswithme/maps/MWMActivity.java b/android/src/com/mapswithme/maps/MWMActivity.java index a90da551ce..e0f9a263cf 100644 --- a/android/src/com/mapswithme/maps/MWMActivity.java +++ b/android/src/com/mapswithme/maps/MWMActivity.java @@ -832,12 +832,12 @@ public class MWMActivity extends NvEventQueueActivity // Calculate padding as one quarter of height int drawerItemsPadding = 0; - final DisplayMetrics dm = getResources().getDisplayMetrics(); - if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) + { + final DisplayMetrics dm = getResources().getDisplayMetrics(); drawerItemsPadding = Math.max(dm.heightPixels, dm.widthPixels)/5; + } - Log.d("DrawerPadding", "x=" + drawerItemsPadding); findViewById(R.id.scroll_up).setPadding(0,drawerItemsPadding, 0, 0); } @@ -1266,7 +1266,7 @@ public class MWMActivity extends NvEventQueueActivity @Override public void onPoiActivated(final String name, final String type, final String address, final double lat, final double lon) { - final MapObject.Poi poi = new MapObject.Poi(name, lat, lon, type); + final MapObject poi = new MapObject.Poi(name, lat, lon, type); runOnUiThread(new Runnable() { diff --git a/android/src/com/mapswithme/maps/SearchActivity.java b/android/src/com/mapswithme/maps/SearchActivity.java index 16cbabc6ce..143851b344 100644 --- a/android/src/com/mapswithme/maps/SearchActivity.java +++ b/android/src/com/mapswithme/maps/SearchActivity.java @@ -553,7 +553,7 @@ public class SearchActivity extends MapsWithMeBaseListActivity implements Locati public void onClick(View v) { final Intent vrIntent = InputUtils.createIntentForVoiceRecognition(getResources().getString(R.string.search_map)); - startActivityForResult(vrIntent, RC_VOICE_RECOGNITIN); + startActivityForResult(vrIntent, RC_VOICE_RECOGNITION); } }); @@ -886,14 +886,14 @@ public class SearchActivity extends MapsWithMeBaseListActivity implements Locati // Handle voice recognition here - private final static int RC_VOICE_RECOGNITIN = 0xCA11; + private final static int RC_VOICE_RECOGNITION = 0xCA11; @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); - if ((requestCode == RC_VOICE_RECOGNITIN) && (resultCode == Activity.RESULT_OK)) + if ((requestCode == RC_VOICE_RECOGNITION) && (resultCode == Activity.RESULT_OK)) { final String result = InputUtils.getMostConfidentResult(data); if (result != null) diff --git a/android/src/com/mapswithme/maps/bookmarks/data/Bookmark.java b/android/src/com/mapswithme/maps/bookmarks/data/Bookmark.java index 9d36c71837..660947d2d6 100644 --- a/android/src/com/mapswithme/maps/bookmarks/data/Bookmark.java +++ b/android/src/com/mapswithme/maps/bookmarks/data/Bookmark.java @@ -12,16 +12,10 @@ public class Bookmark extends MapObject private int mBookmark; private double mMerX; private double mMerY; - private double mLon; - private double mLat; - - //{@ Populate on creation or lazily? - private String mName; - //{@ - - /* package */ Bookmark(int categoryId, int bookmarkId, String name) { + super(name, 0, 0, ""); + mCategoryId = categoryId; mBookmark = bookmarkId; mName = name; diff --git a/android/src/com/mapswithme/maps/bookmarks/data/MapObject.java b/android/src/com/mapswithme/maps/bookmarks/data/MapObject.java index 163e64d2ea..871f5c6f41 100644 --- a/android/src/com/mapswithme/maps/bookmarks/data/MapObject.java +++ b/android/src/com/mapswithme/maps/bookmarks/data/MapObject.java @@ -3,41 +3,75 @@ package com.mapswithme.maps.bookmarks.data; import java.io.Serializable; import com.mapswithme.maps.Framework; -import com.mapswithme.util.log.Logger; -import com.mapswithme.util.log.SimpleLogger; public abstract class MapObject { - private static final Logger mLog = SimpleLogger.get("MwmMapObject"); + protected String mName; + protected double mLat; + protected double mLon; + protected String mTypeName; + + public MapObject(String name, double lat, double lon, String typeName) + { + mName = name; + mLat = lat; + mLon = lon; + mTypeName = typeName; + } + + @Override + public int hashCode() + { + final int prime = 31; + int result = 1; + long temp; + temp = Double.doubleToLongBits(mLat); + result = prime * result + (int) (temp ^ (temp >>> 32)); + temp = Double.doubleToLongBits(mLon); + result = prime * result + (int) (temp ^ (temp >>> 32)); + result = prime * result + ((mName == null) ? 0 : mName.hashCode()); + result = prime * result + ((mTypeName == null) ? 0 : mTypeName.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) + { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + final MapObject other = (MapObject) obj; + if (Double.doubleToLongBits(mLat) != Double.doubleToLongBits(other.mLat)) + return false; + if (Double.doubleToLongBits(mLon) != Double.doubleToLongBits(other.mLon)) + return false; + if (mName == null) + { + if (other.mName != null) + return false; + } + else if (!mName.equals(other.mName)) + return false; + if (mTypeName == null) + { + if (other.mTypeName != null) + return false; + } + else if (!mTypeName.equals(other.mTypeName)) + return false; + return true; + } public double getScale() { return 0; }; - // Interface - public abstract String getName(); - public abstract double getLat(); - public abstract double getLon(); - public abstract String getPoiTypeName(); + public String getName() { return mName; } + public double getLat() { return mLat; } + public double getLon() { return mLon; } + public String getPoiTypeName() { return mTypeName; } public abstract MapObjectType getType(); - // interface - - public static Integer checkSum(MapObject mo) - { - if (mo == null) return 0; - - final int[] primes = {2, 3, 5, 7, 11, 13, 17, 19, 23}; - - final int base = primes[mo.getType().ordinal()]; - final int component1 = Double.valueOf(mo.getLat()).hashCode(); - final int component2 = Double.valueOf(mo.getLon()).hashCode(); - final int component3 = mo.getName() == null ? base : mo.getName().hashCode(); - - final int sum = (component1 << base) - + (component2 >> base) - + component3; - - mLog.d(String.format("c1=%d c2=%d c3=%d sum=%d", component1, component2, component3, sum)); - return sum; - } public static enum MapObjectType implements Serializable { @@ -50,35 +84,9 @@ public abstract class MapObject public static class Poi extends MapObject { - private final String mName; - private final double mLat; - private final double mLon; - private final String mTypeName; - public Poi(String name, double lat, double lon, String typeName) { - mName = name; - mLat = lat; - mLon = lon; - mTypeName = typeName; - } - - @Override - public String getName() - { - return mName; - } - - @Override - public double getLat() - { - return mLat; - } - - @Override - public double getLon() - { - return mLon; + super(name, lat, lon, typeName); } @Override @@ -86,97 +94,31 @@ public abstract class MapObject { return MapObjectType.POI; } - - @Override - public String getPoiTypeName() - { - return mTypeName; - } } public static class SearchResult extends MapObject { - private String mName; - private double mLat; - private double mLon; - private String mTypeName; - public SearchResult(long index) { + super("", 0, 0, ""); Framework.injectData(this, index); } - @Override - public String getName() - { - return mName; - } - - @Override - public double getLat() - { - return mLat; - } - - @Override - public double getLon() - { - return mLon; - } - @Override public MapObjectType getType() { return MapObjectType.ADDITIONAL_LAYER; } - - @Override - public String getPoiTypeName() - { - return mTypeName; - } } public static class ApiPoint extends MapObject { - private final String mName; private final String mId; - private final String mPoiType; - private final double mLat; - private final double mLon; - public ApiPoint(String name, String id, String poiType, double lat, double lon) { - this.mName = name; - this.mId = id; - this.mPoiType = poiType; - this.mLat = lat; - this.mLon = lon; - } - - @Override - public String getName() - { - return mName; - } - - @Override - public double getLat() - { - return mLat; - } - - @Override - public double getLon() - { - return mLon; - } - - @Override - public String getPoiTypeName() - { - return mPoiType; + super(name, lat, lon, poiType); + mId = id; } @Override diff --git a/android/src/com/mapswithme/maps/widget/MapInfoView.java b/android/src/com/mapswithme/maps/widget/MapInfoView.java index d9be2435d0..d43ce1679b 100644 --- a/android/src/com/mapswithme/maps/widget/MapInfoView.java +++ b/android/src/com/mapswithme/maps/widget/MapInfoView.java @@ -141,7 +141,7 @@ public class MapInfoView extends LinearLayout if (mMapObject.getType() == MapObjectType.BOOKMARK) { - final Poi p = new Poi(mMapObject.getName(), mMapObject.getLat(), mMapObject.getLon(), null); + final MapObject p = new Poi(mMapObject.getName(), mMapObject.getLat(), mMapObject.getLon(), null); bm.deleteBookmark((Bookmark) mMapObject); setMapObject(p); } @@ -329,7 +329,12 @@ public class MapInfoView extends LinearLayout public boolean hasThatObject(MapObject mo) { - return MapObject.checkSum(mo).equals(MapObject.checkSum(mMapObject)); + if (mo == null && mMapObject == null) + return true; + else if (mMapObject != null) + return mMapObject.equals(mo); + + return false; } public void setMapObject(MapObject mo) @@ -349,7 +354,7 @@ public class MapInfoView extends LinearLayout { case POI: mIsBookmarked.setChecked(false); - setBodyForPOI((Poi) mo); + setBodyForPOI(mo); break; case BOOKMARK: mIsBookmarked.setChecked(true); @@ -479,7 +484,7 @@ public class MapInfoView extends LinearLayout } } - private void setBodyForPOI(Poi poi) + private void setBodyForPOI(MapObject poi) { mBodyContainer.removeAllViews(); final View poiView = mInflater.inflate(R.layout.info_box_poi, null); @@ -598,7 +603,7 @@ public class MapInfoView extends LinearLayout if (deleted) { // Make Poi from bookmark - final Poi p = new Poi(mMapObject.getName(), mMapObject.getLat(), mMapObject.getLon(), null); + final MapObject p = new Poi(mMapObject.getName(), mMapObject.getLat(), mMapObject.getLon(), null); setMapObject(p); // TODO how to handle the case, when bookmark was moved to another group? }