Merge branch 'master' of https://github.com/osmandapp/Osmand
This commit is contained in:
commit
c66a9da5be
14 changed files with 204 additions and 181 deletions
|
@ -1720,4 +1720,17 @@
|
||||||
<string name="poi_diet_gluten_free_only">Només dieta per celíacs</string>
|
<string name="poi_diet_gluten_free_only">Només dieta per celíacs</string>
|
||||||
<string name="poi_diet_gluten_free_yes">Dieta per celíacs</string>
|
<string name="poi_diet_gluten_free_yes">Dieta per celíacs</string>
|
||||||
<string name="poi_diet_gluten_free_no">Dieta per celíacs:no</string>
|
<string name="poi_diet_gluten_free_no">Dieta per celíacs:no</string>
|
||||||
|
<string name="poi_payment_icsf_yes">S\'accepten targes IC Stored Fare</string>
|
||||||
|
<string name="poi_payment_icsf_no">No s\'accepten targes IC Stored Fare</string>
|
||||||
|
<string name="poi_diet_kosher_only">Només dieta kosher</string>
|
||||||
|
<string name="poi_diet_kosher_yes">Dieta kosher</string>
|
||||||
|
<string name="poi_diet_kosher_no">Dieta kosher: no</string>
|
||||||
|
<string name="poi_diet_halal_only">Només dieta halal</string>
|
||||||
|
<string name="poi_diet_halal_yes">Dieta halal</string>
|
||||||
|
<string name="poi_diet_halal_no">Dieta halal: no</string>
|
||||||
|
<string name="poi_diet_lactose_free_only">Només dieta sense lactosa</string>
|
||||||
|
<string name="poi_diet_lactose_free_yes">Dieta sense lactosa</string>
|
||||||
|
<string name="poi_diet_lactose_free_no">Dieta sense lactosa: no</string>
|
||||||
|
<string name="poi_drive_in_yes"/>
|
||||||
|
<string name="poi_drive_in_no"></string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -559,7 +559,7 @@
|
||||||
<string name="reload_tile">Обновить часть карты</string>
|
<string name="reload_tile">Обновить часть карты</string>
|
||||||
<string name="user_name_descr">Укажите имя пользователя (требуется для работы с OSM)</string>
|
<string name="user_name_descr">Укажите имя пользователя (требуется для работы с OSM)</string>
|
||||||
<string name="user_name">Имя пользователя</string>
|
<string name="user_name">Имя пользователя</string>
|
||||||
<string name="mark_point">Точка</string>
|
<string name="mark_point">Цель</string>
|
||||||
<string name="use_english_names_descr">Использовать английские названия вместо местных</string>
|
<string name="use_english_names_descr">Использовать английские названия вместо местных</string>
|
||||||
<string name="use_english_names">Использовать английские названия</string>
|
<string name="use_english_names">Использовать английские названия</string>
|
||||||
<string name="app_settings">Настройки приложения</string>
|
<string name="app_settings">Настройки приложения</string>
|
||||||
|
|
|
@ -88,6 +88,7 @@ import net.osmand.util.Algorithms;
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.lang.ref.WeakReference;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -1043,9 +1044,9 @@ public class MapActivity extends AccessibleActivity implements DownloadEvents {
|
||||||
// DownloadEvents
|
// DownloadEvents
|
||||||
@Override
|
@Override
|
||||||
public void newDownloadIndexes() {
|
public void newDownloadIndexes() {
|
||||||
MapContextMenuFragment contextMenuFragment = getContextMenu().findMenuFragment();
|
WeakReference<MapContextMenuFragment> fragmentRef = getContextMenu().findMenuFragment();
|
||||||
if (contextMenuFragment != null) {
|
if (fragmentRef != null) {
|
||||||
contextMenuFragment.newDownloadIndexes();
|
fragmentRef.get().newDownloadIndexes();
|
||||||
}
|
}
|
||||||
if (getMapLayers().getDownloadedRegionsLayer().updateObjects()) {
|
if (getMapLayers().getDownloadedRegionsLayer().updateObjects()) {
|
||||||
refreshMap();
|
refreshMap();
|
||||||
|
@ -1054,9 +1055,9 @@ public class MapActivity extends AccessibleActivity implements DownloadEvents {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void downloadInProgress() {
|
public void downloadInProgress() {
|
||||||
MapContextMenuFragment contextMenuFragment = getContextMenu().findMenuFragment();
|
WeakReference<MapContextMenuFragment> fragmentRef = getContextMenu().findMenuFragment();
|
||||||
if (contextMenuFragment != null) {
|
if (fragmentRef != null) {
|
||||||
contextMenuFragment.downloadInProgress();
|
fragmentRef.get().downloadInProgress();
|
||||||
}
|
}
|
||||||
if (getMapLayers().getDownloadedRegionsLayer().updateObjects()) {
|
if (getMapLayers().getDownloadedRegionsLayer().updateObjects()) {
|
||||||
refreshMap();
|
refreshMap();
|
||||||
|
@ -1065,9 +1066,9 @@ public class MapActivity extends AccessibleActivity implements DownloadEvents {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void downloadHasFinished() {
|
public void downloadHasFinished() {
|
||||||
MapContextMenuFragment contextMenuFragment = getContextMenu().findMenuFragment();
|
WeakReference<MapContextMenuFragment> fragmentRef = getContextMenu().findMenuFragment();
|
||||||
if (contextMenuFragment != null) {
|
if (fragmentRef != null) {
|
||||||
contextMenuFragment.downloadHasFinished();
|
fragmentRef.get().downloadHasFinished();
|
||||||
}
|
}
|
||||||
if (getMapLayers().getDownloadedRegionsLayer().updateObjects()) {
|
if (getMapLayers().getDownloadedRegionsLayer().updateObjects()) {
|
||||||
refreshMap();
|
refreshMap();
|
||||||
|
|
|
@ -17,6 +17,8 @@ import net.osmand.plus.views.ContextMenuLayer;
|
||||||
import net.osmand.plus.views.OsmandMapLayer;
|
import net.osmand.plus.views.OsmandMapLayer;
|
||||||
import net.osmand.util.MapUtils;
|
import net.osmand.util.MapUtils;
|
||||||
|
|
||||||
|
import java.lang.ref.WeakReference;
|
||||||
|
|
||||||
public class MapContextMenu extends MenuTitleController {
|
public class MapContextMenu extends MenuTitleController {
|
||||||
|
|
||||||
private MapActivity mapActivity;
|
private MapActivity mapActivity;
|
||||||
|
@ -74,6 +76,13 @@ public class MapContextMenu extends MenuTitleController {
|
||||||
this.mapCenter = mapCenter;
|
this.mapCenter = mapCenter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void updateMapCenter(LatLon mapCenter) {
|
||||||
|
WeakReference<MapContextMenuFragment> fragmentRef = findMenuFragment();
|
||||||
|
if (fragmentRef != null) {
|
||||||
|
fragmentRef.get().updateMapCenter(mapCenter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void setMapPosition(int mapPosition) {
|
public void setMapPosition(int mapPosition) {
|
||||||
this.mapPosition = mapPosition;
|
this.mapPosition = mapPosition;
|
||||||
}
|
}
|
||||||
|
@ -131,10 +140,13 @@ public class MapContextMenu extends MenuTitleController {
|
||||||
|
|
||||||
active = true;
|
active = true;
|
||||||
|
|
||||||
|
if (menuController == null || !update) {
|
||||||
acquireMenuController();
|
acquireMenuController();
|
||||||
|
}
|
||||||
initTitle();
|
initTitle();
|
||||||
|
|
||||||
if (menuController != null) {
|
if (menuController != null) {
|
||||||
|
menuController.clearPlainMenuItems();
|
||||||
menuController.addPlainMenuItems(typeStr, this.pointDescription, this.latLon);
|
menuController.addPlainMenuItems(typeStr, this.pointDescription, this.latLon);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -160,10 +172,10 @@ public class MapContextMenu extends MenuTitleController {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void update(LatLon latLon, PointDescription pointDescription, Object object) {
|
public void update(LatLon latLon, PointDescription pointDescription, Object object) {
|
||||||
MapContextMenuFragment fragment = findMenuFragment();
|
WeakReference<MapContextMenuFragment> fragmentRef = findMenuFragment();
|
||||||
if (fragment != null) {
|
|
||||||
init(latLon, pointDescription, object, true);
|
init(latLon, pointDescription, object, true);
|
||||||
fragment.rebuildMenu();
|
if (fragmentRef != null) {
|
||||||
|
fragmentRef.get().rebuildMenu();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -189,9 +201,16 @@ public class MapContextMenu extends MenuTitleController {
|
||||||
mapActivity.getMapView().setMapPosition(mapPosition);
|
mapActivity.getMapView().setMapPosition(mapPosition);
|
||||||
mapPosition = 0;
|
mapPosition = 0;
|
||||||
}
|
}
|
||||||
MapContextMenuFragment fragment = findMenuFragment();
|
WeakReference<MapContextMenuFragment> fragmentRef = findMenuFragment();
|
||||||
if (fragment != null) {
|
if (fragmentRef != null) {
|
||||||
fragment.dismissMenu();
|
fragmentRef.get().dismissMenu();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updateMenuUI() {
|
||||||
|
WeakReference<MapContextMenuFragment> fragmentRef = findMenuFragment();
|
||||||
|
if (fragmentRef != null) {
|
||||||
|
fragmentRef.get().updateMenu();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -237,15 +256,15 @@ public class MapContextMenu extends MenuTitleController {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void refreshMenuTitle() {
|
public void refreshMenuTitle() {
|
||||||
MapContextMenuFragment fragment = findMenuFragment();
|
WeakReference<MapContextMenuFragment> fragmentRef = findMenuFragment();
|
||||||
if (fragment != null)
|
if (fragmentRef != null)
|
||||||
fragment.refreshTitle();
|
fragmentRef.get().refreshTitle();
|
||||||
}
|
}
|
||||||
|
|
||||||
public MapContextMenuFragment findMenuFragment() {
|
public WeakReference<MapContextMenuFragment> findMenuFragment() {
|
||||||
Fragment fragment = mapActivity.getSupportFragmentManager().findFragmentByTag(MapContextMenuFragment.TAG);
|
Fragment fragment = mapActivity.getSupportFragmentManager().findFragmentByTag(MapContextMenuFragment.TAG);
|
||||||
if (fragment != null) {
|
if (fragment != null && !fragment.isDetached()) {
|
||||||
return (MapContextMenuFragment) fragment;
|
return new WeakReference<>((MapContextMenuFragment) fragment);
|
||||||
} else {
|
} else {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -308,9 +327,9 @@ public class MapContextMenu extends MenuTitleController {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setBaseFragmentVisibility(boolean visible) {
|
public void setBaseFragmentVisibility(boolean visible) {
|
||||||
MapContextMenuFragment menuFragment = findMenuFragment();
|
WeakReference<MapContextMenuFragment> fragmentRef = findMenuFragment();
|
||||||
if (menuFragment != null) {
|
if (fragmentRef != null) {
|
||||||
menuFragment.setFragmentVisibility(visible);
|
fragmentRef.get().setFragmentVisibility(visible);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -459,9 +478,9 @@ public class MapContextMenu extends MenuTitleController {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
inLocationUpdate = false;
|
inLocationUpdate = false;
|
||||||
MapContextMenuFragment menuFragment = findMenuFragment();
|
WeakReference<MapContextMenuFragment> fragmentRef = findMenuFragment();
|
||||||
if (menuFragment != null) {
|
if (fragmentRef != null) {
|
||||||
menuFragment.updateLocation(centerChanged, locationChanged, compassChanged);
|
fragmentRef.get().updateLocation(centerChanged, locationChanged, compassChanged);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -204,6 +204,7 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
menu.updateData();
|
||||||
updateButtonsAndProgress();
|
updateButtonsAndProgress();
|
||||||
|
|
||||||
if (menu.isLandscapeLayout()) {
|
if (menu.isLandscapeLayout()) {
|
||||||
|
@ -440,6 +441,15 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents {
|
||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void updateMapCenter(LatLon mapCenter) {
|
||||||
|
customMapCenter = true;
|
||||||
|
menu.setMapCenter(mapCenter);
|
||||||
|
this.mapCenter = mapCenter;
|
||||||
|
RotatedTileBox box = map.getCurrentRotatedTileBox().copy();
|
||||||
|
origMarkerX = box.getCenterPixelX();
|
||||||
|
origMarkerY = box.getCenterPixelY();
|
||||||
|
}
|
||||||
|
|
||||||
private void updateButtonsAndProgress() {
|
private void updateButtonsAndProgress() {
|
||||||
// Title buttons
|
// Title buttons
|
||||||
boolean showButtonsContainer = (leftTitleButtonController != null || rightTitleButtonController != null)
|
boolean showButtonsContainer = (leftTitleButtonController != null || rightTitleButtonController != null)
|
||||||
|
@ -592,6 +602,17 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents {
|
||||||
@Override
|
@Override
|
||||||
public void onGlobalLayout() {
|
public void onGlobalLayout() {
|
||||||
|
|
||||||
|
ViewTreeObserver obs = view.getViewTreeObserver();
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
|
||||||
|
obs.removeOnGlobalLayoutListener(this);
|
||||||
|
} else {
|
||||||
|
obs.removeGlobalOnLayoutListener(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (getActivity() == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
int newMenuTopViewHeight = view.findViewById(R.id.context_menu_top_view).getHeight();
|
int newMenuTopViewHeight = view.findViewById(R.id.context_menu_top_view).getHeight();
|
||||||
menuTopShadowHeight = view.findViewById(R.id.context_menu_top_shadow).getHeight();
|
menuTopShadowHeight = view.findViewById(R.id.context_menu_top_shadow).getHeight();
|
||||||
menuTopShadowAllHeight = view.findViewById(R.id.context_menu_top_shadow_all).getHeight();
|
menuTopShadowAllHeight = view.findViewById(R.id.context_menu_top_shadow_all).getHeight();
|
||||||
|
@ -607,14 +628,6 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents {
|
||||||
|
|
||||||
menuFullHeightMax = menuTitleHeight + (menuBottomViewHeight > 0 ? menuBottomViewHeight : -dpToPx(SHADOW_HEIGHT_BOTTOM_DP));
|
menuFullHeightMax = menuTitleHeight + (menuBottomViewHeight > 0 ? menuBottomViewHeight : -dpToPx(SHADOW_HEIGHT_BOTTOM_DP));
|
||||||
|
|
||||||
ViewTreeObserver obs = view.getViewTreeObserver();
|
|
||||||
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
|
|
||||||
obs.removeOnGlobalLayoutListener(this);
|
|
||||||
} else {
|
|
||||||
obs.removeGlobalOnLayoutListener(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (origMarkerX == 0 && origMarkerY == 0) {
|
if (origMarkerX == 0 && origMarkerY == 0) {
|
||||||
origMarkerX = view.getWidth() / 2;
|
origMarkerX = view.getWidth() / 2;
|
||||||
origMarkerY = view.getHeight() / 2;
|
origMarkerY = view.getHeight() / 2;
|
||||||
|
@ -887,6 +900,12 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void updateMenu() {
|
||||||
|
menu.updateData();
|
||||||
|
updateButtonsAndProgress();
|
||||||
|
runLayoutListener();
|
||||||
|
}
|
||||||
|
|
||||||
private MapActivity getMapActivity() {
|
private MapActivity getMapActivity() {
|
||||||
return (MapActivity)getActivity();
|
return (MapActivity)getActivity();
|
||||||
}
|
}
|
||||||
|
|
|
@ -203,6 +203,10 @@ public class MenuBuilder {
|
||||||
plainMenuItems.add(new PlainMenuItem(iconId, text, needLinks));
|
plainMenuItems.add(new PlainMenuItem(iconId, text, needLinks));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void clearPlainMenuItems() {
|
||||||
|
plainMenuItems.clear();
|
||||||
|
}
|
||||||
|
|
||||||
public Drawable getRowIcon(int iconId) {
|
public Drawable getRowIcon(int iconId) {
|
||||||
IconsCache iconsCache = app.getIconsCache();
|
IconsCache iconsCache = app.getIconsCache();
|
||||||
boolean light = app.getSettings().isLightContent();
|
boolean light = app.getSettings().isLightContent();
|
||||||
|
|
|
@ -113,6 +113,10 @@ public abstract class MenuController extends BaseMenuController {
|
||||||
builder.addPlainMenuItem(iconId, text, needLinks);
|
builder.addPlainMenuItem(iconId, text, needLinks);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void clearPlainMenuItems() {
|
||||||
|
builder.clearPlainMenuItems();
|
||||||
|
}
|
||||||
|
|
||||||
public void addPlainMenuItems(String typeStr, PointDescription pointDescription, LatLon latLon) {
|
public void addPlainMenuItems(String typeStr, PointDescription pointDescription, LatLon latLon) {
|
||||||
addMyLocationToPlainItems(pointDescription, latLon);
|
addMyLocationToPlainItems(pointDescription, latLon);
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,9 +14,12 @@ import net.osmand.plus.R;
|
||||||
import net.osmand.plus.activities.MapActivity;
|
import net.osmand.plus.activities.MapActivity;
|
||||||
import net.osmand.plus.audionotes.AudioVideoNotesPlugin;
|
import net.osmand.plus.audionotes.AudioVideoNotesPlugin;
|
||||||
import net.osmand.plus.audionotes.AudioVideoNotesPlugin.Recording;
|
import net.osmand.plus.audionotes.AudioVideoNotesPlugin.Recording;
|
||||||
|
import net.osmand.plus.mapcontextmenu.MapContextMenuFragment;
|
||||||
import net.osmand.plus.mapcontextmenu.MenuController;
|
import net.osmand.plus.mapcontextmenu.MenuController;
|
||||||
import net.osmand.plus.mapcontextmenu.builders.AudioVideoNoteMenuBuilder;
|
import net.osmand.plus.mapcontextmenu.builders.AudioVideoNoteMenuBuilder;
|
||||||
|
|
||||||
|
import java.lang.ref.WeakReference;
|
||||||
|
|
||||||
public class AudioVideoNoteMenuController extends MenuController {
|
public class AudioVideoNoteMenuController extends MenuController {
|
||||||
private Recording recording;
|
private Recording recording;
|
||||||
|
|
||||||
|
@ -111,7 +114,9 @@ public class AudioVideoNoteMenuController extends MenuController {
|
||||||
sharingIntent.setType("video/*");
|
sharingIntent.setType("video/*");
|
||||||
sharingIntent.putExtra(Intent.EXTRA_STREAM, videoUri);
|
sharingIntent.putExtra(Intent.EXTRA_STREAM, videoUri);
|
||||||
}
|
}
|
||||||
getMapActivity().getContextMenu().findMenuFragment()
|
WeakReference<MapContextMenuFragment> fragmentRef = getMapActivity().getContextMenu().findMenuFragment();
|
||||||
.startActivity(Intent.createChooser(sharingIntent, getMapActivity().getString(R.string.share_note)));
|
if (fragmentRef != null) {
|
||||||
|
fragmentRef.get().startActivity(Intent.createChooser(sharingIntent, getMapActivity().getString(R.string.share_note)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,7 +45,6 @@ public class MapDataMenuController extends MenuController {
|
||||||
this.region = osmandRegions.getRegionData(fullName);
|
this.region = osmandRegions.getRegionData(fullName);
|
||||||
downloadThread = app.getDownloadThread();
|
downloadThread = app.getDownloadThread();
|
||||||
|
|
||||||
mapActivity.getSupportFragmentManager();
|
|
||||||
leftTitleButtonController = new TitleButtonController() {
|
leftTitleButtonController = new TitleButtonController() {
|
||||||
@Override
|
@Override
|
||||||
public void buttonPressed() {
|
public void buttonPressed() {
|
||||||
|
|
|
@ -3,14 +3,20 @@ package net.osmand.plus.mapcontextmenu.controllers;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
|
|
||||||
import net.osmand.Location;
|
import net.osmand.Location;
|
||||||
|
import net.osmand.data.LatLon;
|
||||||
import net.osmand.data.PointDescription;
|
import net.osmand.data.PointDescription;
|
||||||
import net.osmand.plus.OsmAndFormatter;
|
import net.osmand.plus.OsmAndFormatter;
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
|
import net.osmand.plus.OsmandPlugin;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
|
import net.osmand.plus.TargetPointsHelper;
|
||||||
import net.osmand.plus.activities.MapActivity;
|
import net.osmand.plus.activities.MapActivity;
|
||||||
import net.osmand.plus.mapcontextmenu.MenuBuilder;
|
import net.osmand.plus.mapcontextmenu.MenuBuilder;
|
||||||
import net.osmand.plus.mapcontextmenu.MenuController;
|
import net.osmand.plus.mapcontextmenu.MenuController;
|
||||||
|
import net.osmand.plus.osmo.OsMoGroupsActivity;
|
||||||
import net.osmand.plus.osmo.OsMoGroupsStorage.OsMoDevice;
|
import net.osmand.plus.osmo.OsMoGroupsStorage.OsMoDevice;
|
||||||
|
import net.osmand.plus.osmo.OsMoPlugin;
|
||||||
|
import net.osmand.plus.osmo.OsMoPositionLayer;
|
||||||
|
|
||||||
public class OsMoMenuController extends MenuController {
|
public class OsMoMenuController extends MenuController {
|
||||||
|
|
||||||
|
@ -19,6 +25,47 @@ public class OsMoMenuController extends MenuController {
|
||||||
public OsMoMenuController(OsmandApplication app, MapActivity mapActivity, PointDescription pointDescription, final OsMoDevice device) {
|
public OsMoMenuController(OsmandApplication app, MapActivity mapActivity, PointDescription pointDescription, final OsMoDevice device) {
|
||||||
super(new MenuBuilder(app), pointDescription, mapActivity);
|
super(new MenuBuilder(app), pointDescription, mapActivity);
|
||||||
this.device = device;
|
this.device = device;
|
||||||
|
|
||||||
|
leftTitleButtonController = new TitleButtonController() {
|
||||||
|
@Override
|
||||||
|
public void buttonPressed() {
|
||||||
|
if (OsMoPositionLayer.getFollowDestinationId() != null) {
|
||||||
|
OsMoPositionLayer.setFollowDestination(null);
|
||||||
|
} else {
|
||||||
|
if(device.getLastLocation() != null) {
|
||||||
|
TargetPointsHelper targets = getMapActivity().getMyApplication().getTargetPointsHelper();
|
||||||
|
targets.navigateToPoint(new LatLon(device.getLastLocation().getLatitude(), device.getLastLocation().getLongitude()), true, -1);
|
||||||
|
}
|
||||||
|
OsMoPositionLayer.setFollowDestination(device);
|
||||||
|
}
|
||||||
|
getMapActivity().getContextMenu().updateMenuUI();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
rightTitleButtonController = new TitleButtonController() {
|
||||||
|
@Override
|
||||||
|
public void buttonPressed() {
|
||||||
|
OsMoPlugin osMoPlugin = OsmandPlugin.getEnabledPlugin(OsMoPlugin.class);
|
||||||
|
if (osMoPlugin != null) {
|
||||||
|
OsMoGroupsActivity.showSettingsDialog(getMapActivity(), osMoPlugin, device);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
rightTitleButtonController.caption = getMapActivity().getString(R.string.shared_string_settings);
|
||||||
|
rightTitleButtonController.leftIconId = R.drawable.ic_action_settings;
|
||||||
|
|
||||||
|
updateData();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateData() {
|
||||||
|
if (OsMoPositionLayer.getFollowDestinationId() != null) {
|
||||||
|
leftTitleButtonController.caption = getMapActivity().getString(R.string.shared_string_cancel);
|
||||||
|
leftTitleButtonController.leftIconId = R.drawable.ic_action_remove_dark;
|
||||||
|
} else {
|
||||||
|
leftTitleButtonController.caption = getMapActivity().getString(R.string.mark_point);
|
||||||
|
leftTitleButtonController.leftIconId = R.drawable.ic_action_flag_dark;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
package net.osmand.plus.osmo;
|
package net.osmand.plus.osmo;
|
||||||
|
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.graphics.drawable.Drawable;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
|
@ -12,7 +11,6 @@ import android.widget.ImageButton;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
|
||||||
|
|
||||||
import net.osmand.Location;
|
import net.osmand.Location;
|
||||||
import net.osmand.data.LatLon;
|
import net.osmand.data.LatLon;
|
||||||
|
@ -274,32 +272,15 @@ public class DashOsMoFragment extends DashLocationFragment implements OsMoGroups
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setupDeviceViews(LinearLayout contentList, List<OsMoGroupsStorage.OsMoDevice> devices) {
|
private void setupDeviceViews(LinearLayout contentList, List<OsMoGroupsStorage.OsMoDevice> devices) {
|
||||||
Drawable markerIcon = getMyApplication().getIconsCache().getContentIcon(R.drawable.ic_action_marker_dark);
|
|
||||||
LayoutInflater inflater = getActivity().getLayoutInflater();
|
LayoutInflater inflater = getActivity().getLayoutInflater();
|
||||||
List<DashLocationFragment.DashLocationView> distances = new ArrayList<DashLocationFragment.DashLocationView>();
|
List<DashLocationFragment.DashLocationView> distances = new ArrayList<DashLocationFragment.DashLocationView>();
|
||||||
for (final OsMoGroupsStorage.OsMoDevice device : devices) {
|
for (final OsMoGroupsStorage.OsMoDevice device : devices) {
|
||||||
View v = inflater.inflate(R.layout.dash_osmo_item, null, false);
|
View v = inflater.inflate(R.layout.dash_osmo_item, null, false);
|
||||||
v.findViewById(R.id.people_icon).setVisibility(View.GONE);
|
v.findViewById(R.id.people_icon).setVisibility(View.GONE);
|
||||||
v.findViewById(R.id.people_count).setVisibility(View.GONE);
|
v.findViewById(R.id.people_count).setVisibility(View.GONE);
|
||||||
final ImageButton showOnMap = (ImageButton) v.findViewById(R.id.show_on_map);
|
v.findViewById(R.id.show_on_map).setVisibility(View.GONE);
|
||||||
showOnMap.setImageDrawable(markerIcon);
|
|
||||||
final String name = device.getVisibleName();
|
final String name = device.getVisibleName();
|
||||||
final Location loc = device.getLastLocation();
|
final Location loc = device.getLastLocation();
|
||||||
showOnMap.setOnClickListener(new View.OnClickListener() {
|
|
||||||
@Override
|
|
||||||
public void onClick(View v) {
|
|
||||||
|
|
||||||
if (loc == null) {
|
|
||||||
Toast.makeText(getActivity(), R.string.osmo_device_not_found, Toast.LENGTH_SHORT).show();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
getMyApplication().getSettings().setMapLocationToShow(loc.getLatitude(),
|
|
||||||
loc.getLongitude(), 15,
|
|
||||||
new PointDescription(PointDescription.POINT_TYPE_MARKER, name),
|
|
||||||
false, device); //$NON-NLS-1$
|
|
||||||
MapActivity.launchMapActivityMoveToTop(getActivity());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
ImageView direction = (ImageView) v.findViewById(R.id.direction_icon);
|
ImageView direction = (ImageView) v.findViewById(R.id.direction_icon);
|
||||||
direction.setVisibility(View.VISIBLE);
|
direction.setVisibility(View.VISIBLE);
|
||||||
|
@ -315,7 +296,6 @@ public class DashOsMoFragment extends DashLocationFragment implements OsMoGroups
|
||||||
icon.setImageDrawable(getMyApplication().getIconsCache().
|
icon.setImageDrawable(getMyApplication().getIconsCache().
|
||||||
getPaintedContentIcon(R.drawable.ic_person, device.getColor()));
|
getPaintedContentIcon(R.drawable.ic_person, device.getColor()));
|
||||||
} else {
|
} else {
|
||||||
showOnMap.setVisibility(View.GONE);
|
|
||||||
icon.setImageDrawable(getMyApplication().getIconsCache().
|
icon.setImageDrawable(getMyApplication().getIconsCache().
|
||||||
getContentIcon(R.drawable.ic_person));
|
getContentIcon(R.drawable.ic_person));
|
||||||
}
|
}
|
||||||
|
@ -324,7 +304,16 @@ public class DashOsMoFragment extends DashLocationFragment implements OsMoGroups
|
||||||
v.setOnClickListener(new View.OnClickListener() {
|
v.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
|
if (loc == null || !device.isEnabled()) {
|
||||||
launchOsMoGroupsActivity();
|
launchOsMoGroupsActivity();
|
||||||
|
} else {
|
||||||
|
MapActivity.getSingleMapViewTrackingUtilities().setMapLinkedToLocation(false);
|
||||||
|
getMyApplication().getSettings().setMapLocationToShow(loc.getLatitude(), loc.getLongitude(), getMyApplication().getSettings().getLastKnownMapZoom(),
|
||||||
|
new PointDescription(PointDescription.POINT_TYPE_MARKER, device.getVisibleName()), false,
|
||||||
|
device);
|
||||||
|
OsMoPositionLayer.setFollowTrackerId(device, loc);
|
||||||
|
MapActivity.launchMapActivityMoveToTop(getActivity());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
contentList.addView(v);
|
contentList.addView(v);
|
||||||
|
|
|
@ -111,12 +111,9 @@ public class OsMoGroupsActivity extends OsmandExpandableListActivity implements
|
||||||
public static final int CREATE_GROUP = 3;
|
public static final int CREATE_GROUP = 3;
|
||||||
protected static final int ON_OFF_ACTION_ID = 4;
|
protected static final int ON_OFF_ACTION_ID = 4;
|
||||||
protected static final int SHARE_ID = 5;
|
protected static final int SHARE_ID = 5;
|
||||||
protected static final int SHOW_ON_MAP_ID = 6;
|
|
||||||
public static final int SHARE_SESSION = 7;
|
public static final int SHARE_SESSION = 7;
|
||||||
public static final int GROUP_INFO = 8;
|
public static final int GROUP_INFO = 8;
|
||||||
protected static final int SETTINGS_ID = 9;
|
protected static final int SETTINGS_ID = 9;
|
||||||
protected static final int SETTINGS_DEV_ID = 10;
|
|
||||||
protected static final int TRACK_DEV_ID = 11;
|
|
||||||
protected static final int LOGIN_ID = 12;
|
protected static final int LOGIN_ID = 12;
|
||||||
public static final int LIST_REFRESH_MSG_ID = OsmAndConstants.UI_HANDLER_SEARCH + 30;
|
public static final int LIST_REFRESH_MSG_ID = OsmAndConstants.UI_HANDLER_SEARCH + 30;
|
||||||
public static final long RECENT_THRESHOLD = 60000;
|
public static final long RECENT_THRESHOLD = 60000;
|
||||||
|
@ -184,11 +181,14 @@ public class OsMoGroupsActivity extends OsmandExpandableListActivity implements
|
||||||
setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
|
setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
|
public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
|
||||||
OsMoDevice model = adapter.getChild(groupPosition, childPosition);
|
OsMoDevice device = adapter.getChild(groupPosition, childPosition);
|
||||||
if (model != selectedObject) {
|
if (device != null) {
|
||||||
enterSelectionMode(model);
|
Location location = device.getLastLocation();
|
||||||
|
if (location != null) {
|
||||||
|
showDeviceOnMap(device);
|
||||||
} else {
|
} else {
|
||||||
quitSelectionMode();
|
showSettingsDialog(OsMoGroupsActivity.this, osMoPlugin, device);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -432,12 +432,29 @@ public class OsMoGroupsActivity extends OsmandExpandableListActivity implements
|
||||||
osMoPlugin.setGroupsActivity(null);
|
osMoPlugin.setGroupsActivity(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void showDeviceOnMap(final Object o) {
|
||||||
|
if(!checkOperationIsNotRunning()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
OsMoDevice device = (OsMoDevice) (o instanceof OsMoDevice ? o : null);
|
||||||
|
if (device != null) {
|
||||||
|
Location location = device.getLastLocation();
|
||||||
|
MapActivity.getSingleMapViewTrackingUtilities().setMapLinkedToLocation(false);
|
||||||
|
if (location != null) {
|
||||||
|
app.getSettings().setMapLocationToShow(location.getLatitude(), location.getLongitude(), app.getSettings().getLastKnownMapZoom(),
|
||||||
|
new PointDescription(PointDescription.POINT_TYPE_MARKER, device.getVisibleName()), false,
|
||||||
|
device);
|
||||||
|
}
|
||||||
|
OsMoPositionLayer.setFollowTrackerId(device, location);
|
||||||
|
MapActivity.launchMapActivityMoveToTop(OsMoGroupsActivity.this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void enterSelectionMode(final Object o) {
|
private void enterSelectionMode(final Object o) {
|
||||||
if(!checkOperationIsNotRunning()) {
|
if(!checkOperationIsNotRunning()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
actionMode = startSupportActionMode(new ActionMode.Callback() {
|
actionMode = startSupportActionMode(new ActionMode.Callback() {
|
||||||
private OsMoDevice device;
|
|
||||||
private OsMoGroup group;
|
private OsMoGroup group;
|
||||||
private Menu menu;
|
private Menu menu;
|
||||||
|
|
||||||
|
@ -464,30 +481,8 @@ public class OsMoGroupsActivity extends OsmandExpandableListActivity implements
|
||||||
getClearToolbar(false);
|
getClearToolbar(false);
|
||||||
}
|
}
|
||||||
this.menu = menu;
|
this.menu = menu;
|
||||||
device = (OsMoDevice) (o instanceof OsMoDevice ? o : null);
|
|
||||||
group = (OsMoGroup) (o instanceof OsMoGroup ? o : null);
|
group = (OsMoGroup) (o instanceof OsMoGroup ? o : null);
|
||||||
MenuItem mi = null;
|
MenuItem mi = null;
|
||||||
if (device != null) {
|
|
||||||
// mi = createActionModeMenuItem(actionMode, menu, ON_OFF_ACTION_ID, R.string.shared_string_ok, 0,
|
|
||||||
// MenuItemCompat.SHOW_AS_ACTION_ALWAYS);
|
|
||||||
mode.setTitle(device.getVisibleName());
|
|
||||||
if (device.getLastLocation() != null) {
|
|
||||||
createActionModeMenuItem(actionMode, menu, SHOW_ON_MAP_ID, R.string.shared_string_show_on_map,
|
|
||||||
R.drawable.ic_action_marker_dark, MenuItemCompat.SHOW_AS_ACTION_ALWAYS);
|
|
||||||
MenuItem menuItem = createActionModeMenuItem(actionMode, menu, TRACK_DEV_ID,
|
|
||||||
R.string.osmo_set_moving_target, R.drawable.ic_action_flage_dark,
|
|
||||||
// // there is a bug in Android 4.2 layout
|
|
||||||
// device.getLastLocation() != null ? MenuItemCompat.SHOW_AS_ACTION_NEVER :
|
|
||||||
MenuItemCompat.SHOW_AS_ACTION_ALWAYS);
|
|
||||||
menuItem.setTitleCondensed(getString(R.string.osmo_follow));
|
|
||||||
}
|
|
||||||
createActionModeMenuItem(actionMode, menu, SETTINGS_DEV_ID, R.string.shared_string_settings,
|
|
||||||
R.drawable.ic_action_settings,
|
|
||||||
// // there is a bug in Android 4.2 layout
|
|
||||||
// device.getLastLocation() != null ? MenuItemCompat.SHOW_AS_ACTION_NEVER :
|
|
||||||
MenuItemCompat.SHOW_AS_ACTION_ALWAYS);
|
|
||||||
|
|
||||||
}
|
|
||||||
if (group != null) {
|
if (group != null) {
|
||||||
createActionModeMenuItem(actionMode, menu, SHARE_ID, R.string.shared_string_share, R.drawable.ic_action_gshare_dark,
|
createActionModeMenuItem(actionMode, menu, SHARE_ID, R.string.shared_string_share, R.drawable.ic_action_gshare_dark,
|
||||||
MenuItemCompat.SHOW_AS_ACTION_ALWAYS);
|
MenuItemCompat.SHOW_AS_ACTION_ALWAYS);
|
||||||
|
@ -505,7 +500,7 @@ public class OsMoGroupsActivity extends OsmandExpandableListActivity implements
|
||||||
FrameLayout l = new FrameLayout(OsMoGroupsActivity.this);
|
FrameLayout l = new FrameLayout(OsMoGroupsActivity.this);
|
||||||
View view = inflater.inflate(R.layout.check_item_rel, l);
|
View view = inflater.inflate(R.layout.check_item_rel, l);
|
||||||
final CompoundButton check = (CompoundButton) view.findViewById(R.id.check_item);
|
final CompoundButton check = (CompoundButton) view.findViewById(R.id.check_item);
|
||||||
check.setChecked((device != null && device.isActive() && device.isEnabled()) || (group != null && group.isActive() && group.isEnabled()));
|
check.setChecked(group != null && group.isActive() && group.isEnabled());
|
||||||
check.setOnCheckedChangeListener(new OnCheckedChangeListener() {
|
check.setOnCheckedChangeListener(new OnCheckedChangeListener() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -534,17 +529,7 @@ public class OsMoGroupsActivity extends OsmandExpandableListActivity implements
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
|
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
|
||||||
if (item.getItemId() == TRACK_DEV_ID) {
|
if (item.getItemId() == DELETE_ACTION_ID) {
|
||||||
if (device != null && device.getLastLocation() != null) {
|
|
||||||
TargetPointsHelper targets = getMyApplication().getTargetPointsHelper();
|
|
||||||
targets.navigateToPoint(new LatLon(device.getLastLocation().getLatitude(), device
|
|
||||||
.getLastLocation().getLongitude()), true, -1);
|
|
||||||
OsMoPositionLayer.setFollowDestination(device);
|
|
||||||
MapActivity.launchMapActivityMoveToTop(OsMoGroupsActivity.this);
|
|
||||||
}
|
|
||||||
} else if (item.getItemId() == SETTINGS_DEV_ID) {
|
|
||||||
showSettingsDialog(device);
|
|
||||||
} else if (item.getItemId() == DELETE_ACTION_ID) {
|
|
||||||
Builder bld = new AlertDialog.Builder(OsMoGroupsActivity.this);
|
Builder bld = new AlertDialog.Builder(OsMoGroupsActivity.this);
|
||||||
String name = ((OsMoGroup) selectedObject).getVisibleName(OsMoGroupsActivity.this);
|
String name = ((OsMoGroup) selectedObject).getVisibleName(OsMoGroupsActivity.this);
|
||||||
bld.setTitle(getString(R.string.osmo_leave_confirmation_msg, name));
|
bld.setTitle(getString(R.string.osmo_leave_confirmation_msg, name));
|
||||||
|
@ -563,18 +548,6 @@ public class OsMoGroupsActivity extends OsmandExpandableListActivity implements
|
||||||
showGroupInfo(group);
|
showGroupInfo(group);
|
||||||
} else if (item.getItemId() == SHARE_ID) {
|
} else if (item.getItemId() == SHARE_ID) {
|
||||||
shareOsMoGroup(group.getVisibleName(app), group.getGroupId());
|
shareOsMoGroup(group.getVisibleName(app), group.getGroupId());
|
||||||
} else if (item.getItemId() == SHOW_ON_MAP_ID) {
|
|
||||||
if (device != null) {
|
|
||||||
Location location = device.getLastLocation();
|
|
||||||
MapActivity.getSingleMapViewTrackingUtilities().setMapLinkedToLocation(false);
|
|
||||||
if (location != null) {
|
|
||||||
app.getSettings().setMapLocationToShow(location.getLatitude(), location.getLongitude(), app.getSettings().getLastKnownMapZoom(),
|
|
||||||
new PointDescription(PointDescription.POINT_TYPE_MARKER, device.getVisibleName()), false,
|
|
||||||
device);
|
|
||||||
}
|
|
||||||
OsMoPositionLayer.setFollowTrackerId(device, location);
|
|
||||||
MapActivity.launchMapActivityMoveToTop(OsMoGroupsActivity.this);
|
|
||||||
}
|
|
||||||
} else if (item.getItemId() == ON_OFF_ACTION_ID) {
|
} else if (item.getItemId() == ON_OFF_ACTION_ID) {
|
||||||
CompoundButton bt = ((CompoundButton) MenuItemCompat.getActionView(item).findViewById(R.id.check_item));
|
CompoundButton bt = ((CompoundButton) MenuItemCompat.getActionView(item).findViewById(R.id.check_item));
|
||||||
onOffAction(bt);
|
onOffAction(bt);
|
||||||
|
@ -1294,15 +1267,11 @@ public class OsMoGroupsActivity extends OsmandExpandableListActivity implements
|
||||||
}
|
}
|
||||||
final OsMoDevice model = getChild(groupPosition, childPosition);
|
final OsMoDevice model = getChild(groupPosition, childPosition);
|
||||||
row.setTag(model);
|
row.setTag(model);
|
||||||
if(selectedObject == model) {
|
|
||||||
row.setBackgroundColor(getResources().getColor(R.color.row_selection_color));
|
|
||||||
} else {
|
|
||||||
if (app.getSettings().isLightContent()) {
|
if (app.getSettings().isLightContent()) {
|
||||||
row.setBackgroundResource(R.drawable.expandable_list_item_background_light);
|
row.setBackgroundResource(R.drawable.expandable_list_item_background_light);
|
||||||
} else {
|
} else {
|
||||||
row.setBackgroundResource(R.drawable.expandable_list_item_background_dark);
|
row.setBackgroundResource(R.drawable.expandable_list_item_background_dark);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
TextView label = (TextView) row.findViewById(R.id.osmo_label);
|
TextView label = (TextView) row.findViewById(R.id.osmo_label);
|
||||||
TextView labelTime = (TextView) row.findViewById(R.id.osmo_label_time);
|
TextView labelTime = (TextView) row.findViewById(R.id.osmo_label_time);
|
||||||
ImageView icon = (ImageView) row.findViewById(R.id.osmo_user_icon);
|
ImageView icon = (ImageView) row.findViewById(R.id.osmo_user_icon);
|
||||||
|
@ -1432,14 +1401,14 @@ public class OsMoGroupsActivity extends OsmandExpandableListActivity implements
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void showSettingsDialog(final OsMoDevice device) {
|
public static void showSettingsDialog(Context ctx, final OsMoPlugin plugin, final OsMoDevice device) {
|
||||||
Builder bld = new AlertDialog.Builder(OsMoGroupsActivity.this);
|
Builder bld = new AlertDialog.Builder(ctx);
|
||||||
bld.setTitle(R.string.osmo_edit_device);
|
bld.setTitle(R.string.osmo_edit_device);
|
||||||
final LayoutInflater inflater = LayoutInflater.from(this);
|
final LayoutInflater inflater = LayoutInflater.from(ctx);
|
||||||
View view = inflater.inflate(R.layout.osmo_edit_device, null);
|
View view = inflater.inflate(R.layout.osmo_edit_device, null);
|
||||||
final EditText name = (EditText) view.findViewById(R.id.Name);
|
final EditText name = (EditText) view.findViewById(R.id.Name);
|
||||||
if(device.getColor() == 0) {
|
if(device.getColor() == 0) {
|
||||||
osMoPlugin.getGroups().setDeviceProperties(device, device.getVisibleName(),
|
plugin.getGroups().setDeviceProperties(device, device.getVisibleName(),
|
||||||
ColorDialogs.getRandomColor());
|
ColorDialogs.getRandomColor());
|
||||||
}
|
}
|
||||||
int devColor = device.getColor();
|
int devColor = device.getColor();
|
||||||
|
@ -1448,13 +1417,13 @@ public class OsMoGroupsActivity extends OsmandExpandableListActivity implements
|
||||||
|
|
||||||
final Spinner colorSpinner = (Spinner) view.findViewById(R.id.ColorSpinner);
|
final Spinner colorSpinner = (Spinner) view.findViewById(R.id.ColorSpinner);
|
||||||
final TIntArrayList list = new TIntArrayList();
|
final TIntArrayList list = new TIntArrayList();
|
||||||
ColorDialogs.setupColorSpinner(this, devColor, colorSpinner, list);
|
ColorDialogs.setupColorSpinner(ctx, devColor, colorSpinner, list);
|
||||||
|
|
||||||
bld.setPositiveButton(R.string .shared_string_yes, new DialogInterface.OnClickListener() {
|
bld.setPositiveButton(R.string .shared_string_yes, new DialogInterface.OnClickListener() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
osMoPlugin.getGroups().setDeviceProperties(device,
|
plugin.getGroups().setDeviceProperties(device,
|
||||||
name.getText().toString(), list.get(colorSpinner.getSelectedItemPosition()));
|
name.getText().toString(), list.get(colorSpinner.getSelectedItemPosition()));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -128,52 +128,6 @@ public class OsMoPlugin extends OsmandPlugin implements OsMoReactor {
|
||||||
return "feature_articles/osmo-plugin.html";
|
return "feature_articles/osmo-plugin.html";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void registerMapContextMenuActions(final MapActivity mapActivity, final double latitude, final double longitude,
|
|
||||||
ContextMenuAdapter adapter, final Object selectedObj) {
|
|
||||||
if(selectedObj instanceof OsMoDevice) {
|
|
||||||
adapter.item(R.string.osmo_center_location).iconColor(R.drawable.ic_action_gloc_dark).listen(new OnContextMenuClick() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onContextMenuClick(ArrayAdapter<?> adapter, int itemId, int pos, boolean isChecked) {
|
|
||||||
OsMoDevice o = (OsMoDevice) selectedObj;
|
|
||||||
Location loc = o.getLastLocation();
|
|
||||||
double lat = loc == null ? latitude : loc.getLatitude();
|
|
||||||
double lon = loc == null ? longitude : loc.getLongitude();
|
|
||||||
mapActivity.getMapView().setLatLon(lat, lon);
|
|
||||||
MapActivity.getSingleMapViewTrackingUtilities().setMapLinkedToLocation(false);
|
|
||||||
OsMoPositionLayer.setFollowTrackerId(o, loc);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}).position(0).reg();
|
|
||||||
if(OsMoPositionLayer.getFollowDestinationId() != null) {
|
|
||||||
adapter.item(R.string.osmo_cancel_moving_target).iconColor(R.drawable.ic_action_remove_dark).listen(new OnContextMenuClick() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onContextMenuClick(ArrayAdapter<?> adapter, int itemId, int pos, boolean isChecked) {
|
|
||||||
OsMoPositionLayer.setFollowDestination(null);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
}).position(0).reg();
|
|
||||||
}
|
|
||||||
adapter.item(R.string.osmo_set_moving_target).iconColor(R.drawable.ic_action_flag_dark).listen(new OnContextMenuClick() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onContextMenuClick(ArrayAdapter<?> adapter, int itemId, int pos, boolean isChecked) {
|
|
||||||
OsMoDevice o = (OsMoDevice) selectedObj;
|
|
||||||
if(o.getLastLocation() != null) {
|
|
||||||
TargetPointsHelper targets = mapActivity.getMyApplication().getTargetPointsHelper();
|
|
||||||
targets.navigateToPoint(new LatLon(o.getLastLocation().getLatitude(), o.getLastLocation().getLongitude()), true, -1);
|
|
||||||
}
|
|
||||||
OsMoPositionLayer.setFollowDestination(o);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}).position(1).reg();
|
|
||||||
}
|
|
||||||
super.registerMapContextMenuActions(mapActivity, latitude, longitude, adapter, selectedObj);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateLayers(OsmandMapTileView mapView, MapActivity activity) {
|
public void updateLayers(OsmandMapTileView mapView, MapActivity activity) {
|
||||||
if(isActive()) {
|
if(isActive()) {
|
||||||
|
|
|
@ -376,9 +376,9 @@ public class OsMoPositionLayer extends OsmandMapLayer implements ContextMenuLaye
|
||||||
if (sameObject) {
|
if (sameObject) {
|
||||||
Location l = device.getLastLocation();
|
Location l = device.getLastLocation();
|
||||||
if (centered) {
|
if (centered) {
|
||||||
map.getContextMenu().setMapCenter(loc);
|
map.getContextMenu().updateMapCenter(loc);
|
||||||
}
|
}
|
||||||
map.getContextMenu().showOrUpdate(new LatLon(l.getLatitude(), l.getLongitude()),
|
map.getContextMenu().update(new LatLon(l.getLatitude(), l.getLongitude()),
|
||||||
getObjectName(device), device);
|
getObjectName(device), device);
|
||||||
}
|
}
|
||||||
if (centered) {
|
if (centered) {
|
||||||
|
|
Loading…
Reference in a new issue