From 39c6c1ffa86b6b5ea25663ad856d600b4f456818 Mon Sep 17 00:00:00 2001 From: Denis_Bars Date: Sat, 2 Aug 2014 11:50:54 +0300 Subject: [PATCH] Fixed bug with maprouteinfocontrol dialog showing every time when control created. Fixed layout positioning bug with this dialog --- .../plus/views/controls/MapControls.java | 46 ++++++++++--------- .../views/controls/MapRouteInfoControl.java | 12 ++--- 2 files changed, 29 insertions(+), 29 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/views/controls/MapControls.java b/OsmAnd/src/net/osmand/plus/views/controls/MapControls.java index 8608a77c34..71f0ba45e1 100644 --- a/OsmAnd/src/net/osmand/plus/views/controls/MapControls.java +++ b/OsmAnd/src/net/osmand/plus/views/controls/MapControls.java @@ -26,7 +26,7 @@ public abstract class MapControls { protected int shadowColor; private boolean visible; private long delayTime; - + protected int gravity = Gravity.BOTTOM | Gravity.RIGHT; protected int margin; protected int vmargin; @@ -40,19 +40,19 @@ public abstract class MapControls { this.showUIHandler = showUIHandler; this.scaleCoefficient = scaleCoefficient; } - - + + public void setGravity(int gravity) { this.gravity = gravity; } - + public void setMargin(int margin) { this.margin = margin; } public void setVerticalMargin(int vmargin) { this.vmargin = vmargin; } - + protected ImageButton addImageButton(FrameLayout parent, int stringId, int resourceId) { Context ctx = mapActivity; ImageButton button = new ImageButton(ctx); @@ -73,17 +73,17 @@ public abstract class MapControls { applyAttributes(ctx, parent, button, stringId, resourceId, extraMargin); return button; } - + public void setNotifyClick(Runnable notifyClick) { this.notifyClick = notifyClick; } - + protected void notifyClicked() { if(notifyClick != null) { notifyClick.run(); } } - + private void applyAttributes(Context ctx, FrameLayout parent, View button, int stringId, int resourceId, int extraMargin) { @@ -124,12 +124,12 @@ public abstract class MapControls { public final void init(FrameLayout layout) { initControls(layout); } - + public final void show(FrameLayout layout) { visible = true; showControls(layout); } - + public final void showWithDelay(final FrameLayout layout, final long delay) { this.delayTime = System.currentTimeMillis() + delay; if(!visible) { @@ -158,25 +158,25 @@ public abstract class MapControls { } }, delay); } - + public final void hide(FrameLayout layout) { if(this.delayTime == 0) { visible = false; hideControls(layout); } } - + public final void forceHide(FrameLayout layout) { delayTime = 0; visible = false; hideControls(layout); mapActivity.getMapView().refreshMap(); } - + public boolean isVisible() { return visible; } - + protected boolean isLeft() { return (Gravity.LEFT & gravity) == Gravity.LEFT; } @@ -184,23 +184,23 @@ public abstract class MapControls { public boolean isBottom() { return (Gravity.BOTTOM & gravity) == Gravity.BOTTOM; } - - + + protected void initControls(FrameLayout layout) { } protected abstract void hideControls(FrameLayout layout); - + protected abstract void showControls(FrameLayout layout); - + public abstract void onDraw(Canvas canvas, RotatedTileBox tileBox, DrawSettings nightMode); - - + + public boolean onTouchEvent(MotionEvent event, RotatedTileBox tileBox) { return false; } - + public boolean onSingleTap(PointF point, RotatedTileBox tileBox) { return false; } @@ -208,4 +208,8 @@ public abstract class MapControls { public void setExtraVerticalMargin(int extraVerticalMargin) { this.extraVerticalMargin = extraVerticalMargin; } + + public int getExtraVerticalMargin() { + return this.extraVerticalMargin; + } } \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/plus/views/controls/MapRouteInfoControl.java b/OsmAnd/src/net/osmand/plus/views/controls/MapRouteInfoControl.java index 7b99e389a4..3322515757 100644 --- a/OsmAnd/src/net/osmand/plus/views/controls/MapRouteInfoControl.java +++ b/OsmAnd/src/net/osmand/plus/views/controls/MapRouteInfoControl.java @@ -3,6 +3,9 @@ package net.osmand.plus.views.controls; import java.util.ArrayList; import java.util.List; +import android.graphics.Point; +import android.os.SystemClock; +import android.view.*; import net.osmand.data.FavouritePoint; import net.osmand.data.LatLon; import net.osmand.data.RotatedTileBox; @@ -31,10 +34,6 @@ import android.graphics.Canvas; import android.graphics.PointF; import android.graphics.drawable.Drawable; import android.os.Handler; -import android.view.Gravity; -import android.view.View; -import android.view.Window; -import android.view.WindowManager; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; @@ -98,9 +97,6 @@ public class MapRouteInfoControl extends MapControls implements IRouteInformatio } } }); - if(getTargets().getPointToNavigate() == null) { - showDialog(); - } } private Dialog createDialog() { @@ -131,7 +127,7 @@ public class MapRouteInfoControl extends MapControls implements IRouteInformatio lp.width = WindowManager.LayoutParams.WRAP_CONTENT; lp.height = WindowManager.LayoutParams.WRAP_CONTENT; lp.gravity = Gravity.BOTTOM; - lp.y = (int) (infoButton.getBottom() - infoButton.getTop() + scaleCoefficient * 5); + lp.y = (int) (infoButton.getBottom() - infoButton.getTop() + scaleCoefficient * 5 + getExtraVerticalMargin()); dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE); dialog.getWindow().setAttributes(lp);