Merge remote-tracking branch 'origin/master'

This commit is contained in:
Weblate 2015-12-21 16:38:50 +01:00
commit bfb4989217
3 changed files with 53 additions and 13 deletions

View file

@ -20,6 +20,7 @@ import android.support.v4.app.ActivityCompat;
import android.support.v4.app.NotificationCompat.Builder;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.NotificationCompat;
import android.util.DisplayMetrics;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.MotionEvent;
@ -176,8 +177,17 @@ public class MapActivity extends AccessibleActivity implements DownloadEvents,
// getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.main);
mapView = new OsmandMapTileView(this, getWindow().getDecorView().getWidth(),
getWindow().getDecorView().getHeight());
int statusBarHeight = 0;
int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
if (resourceId > 0) {
statusBarHeight = getResources().getDimensionPixelSize(resourceId);
}
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int w = dm.widthPixels;
int h = dm.heightPixels - statusBarHeight;
mapView = new OsmandMapTileView(this, w, h);
if (app.getAppInitializer().checkAppVersionChanged(this)) {
new WhatsNewDialogFragment().show(getSupportFragmentManager(), null);
}
@ -552,22 +562,24 @@ public class MapActivity extends AccessibleActivity implements DownloadEvents,
if (dashboardOnMap.isVisible()) {
dashboardOnMap.hideDashboard();
}
// remember if map should come back to isMapLinkedToLocation=true
mapViewTrackingUtilities.setMapLinkedToLocation(false);
if (mapLabelToShow != null && !mapLabelToShow.contextMenuDisabled()) {
mapContextMenu.setMapCenter(latLonToShow);
mapContextMenu.setMapPosition(mapView.getMapPosition());
mapContextMenu.setCenterMarker(true);
mapContextMenu.setMapZoom(settings.getMapZoomToShow());
if (mapLayers.getMapControlsLayer().getMapRouteInfoMenu().isVisible()) {
mapContextMenu.showMinimized(latLonToShow, mapLabelToShow, toShow);
mapLayers.getMapControlsLayer().getMapRouteInfoMenu().updateMenu();
} else {
mapContextMenu.show(latLonToShow, mapLabelToShow, toShow);
}
}
if (!latLonToShow.equals(cur)) {
} else if (!latLonToShow.equals(cur)) {
mapView.getAnimatedDraggingThread().startMoving(latLonToShow.getLatitude(),
latLonToShow.getLongitude(), settings.getMapZoomToShow(), true);
}
// remember if map should come back to isMapLinkedToLocation=true
mapViewTrackingUtilities.setMapLinkedToLocation(false);
}
}

View file

@ -55,6 +55,8 @@ public class MapContextMenu extends MenuTitleController implements StateChangedL
private LatLon mapCenter;
private int mapPosition = 0;
private boolean centerMarker;
private int mapZoom;
private LatLon myLocation;
private Float heading;
@ -149,6 +151,18 @@ public class MapContextMenu extends MenuTitleController implements StateChangedL
this.mapCenter = mapCenter;
}
public void setCenterMarker(boolean centerMarker) {
this.centerMarker = centerMarker;
}
public int getMapZoom() {
return mapZoom;
}
public void setMapZoom(int mapZoom) {
this.mapZoom = mapZoom;
}
public void updateMapCenter(LatLon mapCenter) {
WeakReference<MapContextMenuFragment> fragmentRef = findMenuFragment();
if (fragmentRef != null) {
@ -261,9 +275,10 @@ public class MapContextMenu extends MenuTitleController implements StateChangedL
public void show(LatLon latLon, PointDescription pointDescription, Object object) {
if (init(latLon, pointDescription, object)) {
if (!MapContextMenuFragment.showInstance(this, mapActivity, false)) {
if (!MapContextMenuFragment.showInstance(this, mapActivity, centerMarker)) {
active = false;
}
centerMarker = false;
}
}

View file

@ -93,6 +93,7 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents {
private boolean moving;
private boolean nightMode;
private boolean centered;
private boolean initLayout = true;
private float skipHalfScreenStateLimit;
@ -705,6 +706,7 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents {
map.setLatLon(mapCenter.getLatitude(), mapCenter.getLongitude());
}
menu.setMapCenter(null);
menu.setMapZoom(0);
getMapActivity().getMapLayers().getMapControlsLayer().setControlsClickable(true);
}
@ -766,6 +768,7 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents {
if (!moving) {
doLayoutMenu();
}
initLayout = false;
}
});
@ -776,15 +779,24 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents {
showOnMap(menu.getLatLon(), true, true, false);
}
private int getZoom() {
int zoom = menu.getMapZoom();
if (zoom == 0) {
zoom = map.getZoom();
}
return zoom;
}
private void showOnMap(LatLon latLon, boolean updateCoords, boolean needMove, boolean alreadyAdjusted) {
AnimateDraggingMapThread thread = map.getAnimatedDraggingThread();
int fZoom = map.getZoom();
int fZoom = getZoom();
double flat = latLon.getLatitude();
double flon = latLon.getLongitude();
RotatedTileBox cp = map.getCurrentRotatedTileBox().copy();
cp.setCenterLocation(0.5f, map.getMapPosition() == OsmandSettings.BOTTOM_CONSTANT ? 0.15f : 0.5f);
cp.setLatLonCenter(flat, flon);
cp.setZoom(fZoom);
flat = cp.getLatFromPixel(cp.getPixWidth() / 2, cp.getPixHeight() / 2);
flon = cp.getLonFromPixel(cp.getPixWidth() / 2, cp.getPixHeight() / 2);
@ -796,7 +808,7 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents {
}
if (!alreadyAdjusted) {
LatLon adjustedLatLon = getAdjustedMarkerLocation(getPosY(), new LatLon(flat, flon), true);
LatLon adjustedLatLon = getAdjustedMarkerLocation(getPosY(), new LatLon(flat, flon), true, fZoom);
flat = adjustedLatLon.getLatitude();
flon = adjustedLatLon.getLongitude();
}
@ -937,7 +949,8 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents {
}
private void adjustMapPosition(int y, boolean animated, boolean center) {
LatLon latlon = getAdjustedMarkerLocation(y, menu.getLatLon(), center);
map.getAnimatedDraggingThread().stopAnimatingSync();
LatLon latlon = getAdjustedMarkerLocation(y, menu.getLatLon(), center, getZoom());
if (map.getLatitude() == latlon.getLatitude() && map.getLongitude() == latlon.getLongitude()) {
return;
@ -950,11 +963,12 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents {
}
}
private LatLon getAdjustedMarkerLocation(int y, LatLon reqMarkerLocation, boolean center) {
private LatLon getAdjustedMarkerLocation(int y, LatLon reqMarkerLocation, boolean center, int zoom) {
double markerLat = reqMarkerLocation.getLatitude();
double markerLon = reqMarkerLocation.getLongitude();
RotatedTileBox box = map.getCurrentRotatedTileBox().copy();
box.setCenterLocation(0.5f, map.getMapPosition() == OsmandSettings.BOTTOM_CONSTANT ? 0.15f : 0.5f);
box.setZoom(zoom);
int markerMapCenterX = (int)box.getPixXFromLatLon(mapCenter.getLatitude(), mapCenter.getLongitude());
int markerMapCenterY = (int)box.getPixYFromLatLon(mapCenter.getLatitude(), mapCenter.getLongitude());
float cpyOrig = box.getCenterPixelPoint().y;
@ -1021,9 +1035,8 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents {
private void doLayoutMenu() {
final int posY = getPosY();
setViewY(posY, true, true);
setViewY(posY, true, !initLayout || !centered);
updateMainViewLayout(posY);
// centering = false;
}
public void dismissMenu() {