forked from organicmaps/organicmaps
PP fixes.
This commit is contained in:
parent
688d87cc3f
commit
c679e28130
6 changed files with 194 additions and 8 deletions
|
@ -98,6 +98,10 @@ public class MWMActivity extends MWMFragmentActivity
|
|||
private final static String EXTRA_COUNTRY_INDEX = "country_index";
|
||||
// Need it for search
|
||||
private static final String EXTRA_SEARCH_RES_SINGLE = "search_res_index";
|
||||
// Instance state
|
||||
private static final String STATE_ROUTE_FOLLOWED = "RouteFollowed";
|
||||
private static final String STATE_PP_OPENED = "PpOpened";
|
||||
private static final String STATE_MAP_OBJECT = "MapObject";
|
||||
// Map tasks that we run AFTER rendering initialized
|
||||
private final Stack<MapTask> mTasks = new Stack<>();
|
||||
private BroadcastReceiver mExternalStorageReceiver;
|
||||
|
@ -606,6 +610,7 @@ public class MWMActivity extends MWMFragmentActivity
|
|||
getSupportFragmentManager().beginTransaction().
|
||||
replace(R.id.map_fragment_container, mMapFragment, MapFragment.FRAGMENT_TAG).commit();
|
||||
}
|
||||
findViewById(R.id.map_fragment_container).setOnTouchListener(this);
|
||||
}
|
||||
|
||||
private void setupToolbars()
|
||||
|
@ -708,6 +713,40 @@ public class MWMActivity extends MWMFragmentActivity
|
|||
super.onDestroy();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onSaveInstanceState(Bundle outState)
|
||||
{
|
||||
if (mRlTurnByTurnBox.getVisibility() == View.VISIBLE)
|
||||
outState.putBoolean(STATE_ROUTE_FOLLOWED, true);
|
||||
else if (mPlacePage.getState() != State.HIDDEN)
|
||||
{
|
||||
outState.putBoolean(STATE_PP_OPENED, true);
|
||||
outState.putParcelable(STATE_MAP_OBJECT, mPlacePage.getMapObject());
|
||||
}
|
||||
|
||||
super.onSaveInstanceState(outState);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onRestoreInstanceState(@NonNull Bundle savedInstanceState)
|
||||
{
|
||||
if (savedInstanceState.getBoolean(STATE_ROUTE_FOLLOWED))
|
||||
{
|
||||
if (Framework.nativeIsRoutingActive())
|
||||
{
|
||||
mRlTurnByTurnBox.setVisibility(View.VISIBLE);
|
||||
mRlRoutingBox.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
else if (savedInstanceState.getBoolean(STATE_PP_OPENED))
|
||||
{
|
||||
mPlacePage.setState(State.PREVIEW);
|
||||
mPlacePage.setMapObject((MapObject) savedInstanceState.getParcelable(STATE_MAP_OBJECT));
|
||||
}
|
||||
|
||||
super.onRestoreInstanceState(savedInstanceState);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNewIntent(Intent intent)
|
||||
{
|
||||
|
@ -1448,13 +1487,12 @@ public class MWMActivity extends MWMFragmentActivity
|
|||
setVerticalToolbarVisible(false);
|
||||
result = true;
|
||||
}
|
||||
if (mPlacePage.getState() == State.BOOKMARK)
|
||||
if (mPlacePage.getState() == State.DETAILS || mPlacePage.getState() == State.BOOKMARK)
|
||||
{
|
||||
Framework.deactivatePopup();
|
||||
hideInfoView();
|
||||
result = true;
|
||||
}
|
||||
// TODO pass fragment touch
|
||||
result |= mMapFragment.onTouch(view, event);
|
||||
return result;
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package com.mapswithme.maps.bookmarks.data;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Parcel;
|
||||
|
||||
import com.mapswithme.maps.Framework;
|
||||
import com.mapswithme.maps.R;
|
||||
|
@ -25,6 +26,19 @@ public class Bookmark extends MapObject
|
|||
getXY();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToParcel(Parcel dest, int flags)
|
||||
{
|
||||
dest.writeInt(mCategoryId);
|
||||
dest.writeInt(mBookmark);
|
||||
dest.writeString(mName);
|
||||
}
|
||||
|
||||
protected Bookmark(Parcel source)
|
||||
{
|
||||
this(source.readInt(), source.readInt(), source.readString());
|
||||
}
|
||||
|
||||
private native ParcelablePointD getXY(int c, long b);
|
||||
|
||||
private native String getIcon(int c, long b);
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
package com.mapswithme.maps.bookmarks.data;
|
||||
|
||||
import android.content.res.Resources;
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import com.mapswithme.maps.Framework;
|
||||
import com.mapswithme.maps.R;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public abstract class MapObject
|
||||
public abstract class MapObject implements Parcelable
|
||||
{
|
||||
protected String mName;
|
||||
protected double mLat;
|
||||
|
@ -97,7 +97,67 @@ public abstract class MapObject
|
|||
|
||||
public abstract MapObjectType getType();
|
||||
|
||||
public static enum MapObjectType implements Serializable
|
||||
@Override
|
||||
public int describeContents()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToParcel(Parcel dest, int flags)
|
||||
{
|
||||
dest.writeString(getType().toString());
|
||||
dest.writeString(mName);
|
||||
dest.writeDouble(mLat);
|
||||
dest.writeDouble(mLon);
|
||||
dest.writeString(mTypeName);
|
||||
dest.writeParcelable(mMetadata, 0);
|
||||
}
|
||||
|
||||
public static final Creator<MapObject> CREATOR = new Creator<MapObject>()
|
||||
{
|
||||
@Override
|
||||
public MapObject createFromParcel(Parcel source)
|
||||
{
|
||||
return readFromParcel(source);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MapObject[] newArray(int size)
|
||||
{
|
||||
return new MapObject[size];
|
||||
}
|
||||
};
|
||||
|
||||
protected static MapObject readFromParcel(Parcel source)
|
||||
{
|
||||
final MapObjectType type = MapObjectType.valueOf(source.readString());
|
||||
switch (type)
|
||||
{
|
||||
case POI:
|
||||
return new Poi(source);
|
||||
case ADDITIONAL_LAYER:
|
||||
return new SearchResult(source);
|
||||
case MY_POSITION:
|
||||
return new MyPosition(source);
|
||||
case API_POINT:
|
||||
return new ApiPoint(source);
|
||||
case BOOKMARK:
|
||||
return new Bookmark(source);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
protected MapObject(Parcel source)
|
||||
{
|
||||
mName = source.readString();
|
||||
mLat = source.readDouble();
|
||||
mLon = source.readDouble();
|
||||
mTypeName = source.readString();
|
||||
mMetadata = source.readParcelable(Metadata.class.getClassLoader());
|
||||
}
|
||||
|
||||
public static enum MapObjectType
|
||||
{
|
||||
POI,
|
||||
API_POINT,
|
||||
|
@ -113,6 +173,11 @@ public abstract class MapObject
|
|||
super(name, lat, lon, typeName);
|
||||
}
|
||||
|
||||
protected Poi(Parcel source)
|
||||
{
|
||||
super(source);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MapObjectType getType()
|
||||
{
|
||||
|
@ -133,6 +198,11 @@ public abstract class MapObject
|
|||
super(name, lat, lon, type);
|
||||
}
|
||||
|
||||
protected SearchResult(Parcel source)
|
||||
{
|
||||
super(source);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MapObjectType getType()
|
||||
{
|
||||
|
@ -150,6 +220,19 @@ public abstract class MapObject
|
|||
mId = id;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToParcel(Parcel dest, int flags)
|
||||
{
|
||||
super.writeToParcel(dest, flags);
|
||||
dest.writeString(mId);
|
||||
}
|
||||
|
||||
protected ApiPoint(Parcel source)
|
||||
{
|
||||
super(source);
|
||||
mId = source.readString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public MapObjectType getType()
|
||||
{
|
||||
|
@ -169,6 +252,11 @@ public abstract class MapObject
|
|||
super(name, lat, lon, "");
|
||||
}
|
||||
|
||||
protected MyPosition(Parcel source)
|
||||
{
|
||||
super(source);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MapObjectType getType()
|
||||
{
|
||||
|
|
|
@ -1,9 +1,12 @@
|
|||
package com.mapswithme.maps.bookmarks.data;
|
||||
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class Metadata
|
||||
public class Metadata implements Parcelable
|
||||
{
|
||||
// values MUST correspond to definitions from feature_meta.hpp
|
||||
public enum MetadataType
|
||||
|
@ -79,4 +82,46 @@ public class Metadata
|
|||
{
|
||||
return mMetadataMap.get(type);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int describeContents()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToParcel(Parcel dest, int flags)
|
||||
{
|
||||
dest.writeInt(mMetadataMap.size());
|
||||
for (Map.Entry<MetadataType, String> metaEntry : mMetadataMap.entrySet())
|
||||
{
|
||||
dest.writeInt(metaEntry.getKey().mMetaType);
|
||||
dest.writeString(metaEntry.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
public static Metadata readFromParcel(Parcel source)
|
||||
{
|
||||
final Metadata metadata = new Metadata();
|
||||
final int size = source.readInt();
|
||||
for (int i = 0; i < size; i++)
|
||||
metadata.addMetadata(source.readInt(), source.readString());
|
||||
return metadata;
|
||||
}
|
||||
|
||||
public static final Creator<Metadata> CREATOR = new Creator<Metadata>()
|
||||
{
|
||||
@Override
|
||||
public Metadata createFromParcel(Parcel source)
|
||||
{
|
||||
return readFromParcel(source);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Metadata[] newArray(int size)
|
||||
{
|
||||
return new Metadata[size];
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
|
@ -13,6 +13,7 @@ import android.support.v4.app.Fragment;
|
|||
import android.support.v4.app.FragmentActivity;
|
||||
import android.text.TextUtils;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.Log;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.Menu;
|
||||
|
@ -230,6 +231,7 @@ public class PlacePageView extends RelativeLayout implements View.OnClickListene
|
|||
{
|
||||
if (!hasMapObject(mo))
|
||||
{
|
||||
Log.d("TEST", "Set map object : " + mo);
|
||||
mMapObject = mo;
|
||||
refreshViews();
|
||||
}
|
||||
|
|
|
@ -94,7 +94,6 @@ public abstract class NvEventQueueFragment extends MWMFragment implements View.O
|
|||
super.onViewCreated(view, savedInstanceState);
|
||||
final SurfaceView surfaceView = (SurfaceView) view.findViewById(R.id.map_surfaceview);
|
||||
surfaceView.setOnFocusChangeListener(this);
|
||||
surfaceView.setOnTouchListener(this);
|
||||
|
||||
final SurfaceHolder holder = surfaceView.getHolder();
|
||||
holder.addCallback(new Callback()
|
||||
|
|
Loading…
Add table
Reference in a new issue