Merge pull request #6253 from osmandapp/app_customizations
App customizations
This commit is contained in:
commit
b5fe090a51
19 changed files with 414 additions and 88 deletions
|
@ -133,4 +133,11 @@ interface IOsmAndAidlInterface {
|
||||||
|
|
||||||
long registerForUpdates(in long updateTimeMS, IOsmAndAidlCallback callback);
|
long registerForUpdates(in long updateTimeMS, IOsmAndAidlCallback callback);
|
||||||
boolean unregisterFromUpdates(in long callbackId);
|
boolean unregisterFromUpdates(in long callbackId);
|
||||||
|
|
||||||
|
boolean setNavDrawerLogo(in String imageUri);
|
||||||
|
|
||||||
|
boolean setEnabledIds(in List<String> ids);
|
||||||
|
boolean setDisabledIds(in List<String> ids);
|
||||||
|
boolean setEnabledPatterns(in List<String> patterns);
|
||||||
|
boolean setDisabledPatterns(in List<String> patterns);
|
||||||
}
|
}
|
|
@ -82,6 +82,7 @@ import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.lang.ref.WeakReference;
|
import java.lang.ref.WeakReference;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
|
@ -1655,6 +1656,30 @@ public class OsmandAidlApi {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
boolean setNavDrawerLogo(@Nullable String uri) {
|
||||||
|
return app.getAppCustomization().setNavDrawerLogo(uri);
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean setEnabledIds(Collection<String> ids) {
|
||||||
|
app.getAppCustomization().setEnabledIds(ids);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean setDisabledIds(Collection<String> ids) {
|
||||||
|
app.getAppCustomization().setDisabledIds(ids);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean setEnabledPatterns(Collection<String> patterns) {
|
||||||
|
app.getAppCustomization().setEnabledPatterns(patterns);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean setDisabledPatterns(Collection<String> patterns) {
|
||||||
|
app.getAppCustomization().setDisabledPatterns(patterns);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
public static class ConnectedApp implements Comparable<ConnectedApp> {
|
public static class ConnectedApp implements Comparable<ConnectedApp> {
|
||||||
|
|
||||||
static final String PACK_KEY = "pack";
|
static final String PACK_KEY = "pack";
|
||||||
|
|
|
@ -671,6 +671,36 @@ public class OsmandAidlService extends Service {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean setNavDrawerLogo(String imageUri) throws RemoteException {
|
||||||
|
OsmandAidlApi api = getApi("setNavDrawerLogo");
|
||||||
|
return api != null && api.setNavDrawerLogo(imageUri);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean setEnabledIds(List<String> ids) throws RemoteException {
|
||||||
|
OsmandAidlApi api = getApi("setEnabledIds");
|
||||||
|
return api != null && api.setEnabledIds(ids);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean setDisabledIds(List<String> ids) throws RemoteException {
|
||||||
|
OsmandAidlApi api = getApi("setDisabledIds");
|
||||||
|
return api != null && api.setDisabledIds(ids);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean setEnabledPatterns(List<String> patterns) throws RemoteException {
|
||||||
|
OsmandAidlApi api = getApi("setEnabledPatterns");
|
||||||
|
return api != null && api.setEnabledPatterns(patterns);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean setDisabledPatterns(List<String> patterns) throws RemoteException {
|
||||||
|
OsmandAidlApi api = getApi("setDisabledPatterns");
|
||||||
|
return api != null && api.setDisabledPatterns(patterns);
|
||||||
|
}
|
||||||
|
|
||||||
void startRemoteUpdates(final long updateTimeMS, final long callbackId, final IOsmAndAidlCallback callback) {
|
void startRemoteUpdates(final long updateTimeMS, final long callbackId, final IOsmAndAidlCallback callback) {
|
||||||
mHandler.postDelayed(new Runnable() {
|
mHandler.postDelayed(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -10,6 +10,7 @@ import android.support.annotation.IdRes;
|
||||||
import android.support.annotation.LayoutRes;
|
import android.support.annotation.LayoutRes;
|
||||||
import android.support.v4.app.FragmentActivity;
|
import android.support.v4.app.FragmentActivity;
|
||||||
import android.support.v7.widget.AppCompatImageView;
|
import android.support.v7.widget.AppCompatImageView;
|
||||||
|
import android.text.TextUtils;
|
||||||
import android.view.ContextThemeWrapper;
|
import android.view.ContextThemeWrapper;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
@ -32,6 +33,7 @@ import org.apache.commons.logging.Log;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
|
import java.util.Iterator;
|
||||||
import java.util.LinkedHashSet;
|
import java.util.LinkedHashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
@ -100,6 +102,13 @@ public class ContextMenuAdapter {
|
||||||
public ArrayAdapter<ContextMenuItem> createListAdapter(final Activity activity, final boolean lightTheme) {
|
public ArrayAdapter<ContextMenuItem> createListAdapter(final Activity activity, final boolean lightTheme) {
|
||||||
final int layoutId = DEFAULT_LAYOUT_ID;
|
final int layoutId = DEFAULT_LAYOUT_ID;
|
||||||
final OsmandApplication app = ((OsmandApplication) activity.getApplication());
|
final OsmandApplication app = ((OsmandApplication) activity.getApplication());
|
||||||
|
final OsmAndAppCustomization customization = app.getAppCustomization();
|
||||||
|
for (Iterator<ContextMenuItem> iterator = items.iterator(); iterator.hasNext(); ) {
|
||||||
|
String id = iterator.next().getId();
|
||||||
|
if (!TextUtils.isEmpty(id) && !customization.isFeatureEnabled(id)) {
|
||||||
|
iterator.remove();
|
||||||
|
}
|
||||||
|
}
|
||||||
return new ContextMenuArrayAdapter(activity, layoutId, R.id.title,
|
return new ContextMenuArrayAdapter(activity, layoutId, R.id.title,
|
||||||
items.toArray(new ContextMenuItem[items.size()]), app, lightTheme, changeAppModeListener);
|
items.toArray(new ContextMenuItem[items.size()]), app, lightTheme, changeAppModeListener);
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,6 +38,7 @@ public class ContextMenuItem {
|
||||||
private final boolean hideDivider;
|
private final boolean hideDivider;
|
||||||
private final int minHeight;
|
private final int minHeight;
|
||||||
private final int tag;
|
private final int tag;
|
||||||
|
private final String id;
|
||||||
|
|
||||||
private ContextMenuItem(@StringRes int titleId,
|
private ContextMenuItem(@StringRes int titleId,
|
||||||
String title,
|
String title,
|
||||||
|
@ -59,7 +60,8 @@ public class ContextMenuItem {
|
||||||
ContextMenuAdapter.ProgressListener progressListener,
|
ContextMenuAdapter.ProgressListener progressListener,
|
||||||
boolean hideDivider,
|
boolean hideDivider,
|
||||||
int minHeight,
|
int minHeight,
|
||||||
int tag) {
|
int tag,
|
||||||
|
String id) {
|
||||||
this.titleId = titleId;
|
this.titleId = titleId;
|
||||||
this.title = title;
|
this.title = title;
|
||||||
this.mIcon = icon;
|
this.mIcon = icon;
|
||||||
|
@ -81,6 +83,7 @@ public class ContextMenuItem {
|
||||||
this.hideDivider = hideDivider;
|
this.hideDivider = hideDivider;
|
||||||
this.minHeight = minHeight;
|
this.minHeight = minHeight;
|
||||||
this.tag = tag;
|
this.tag = tag;
|
||||||
|
this.id = id;
|
||||||
}
|
}
|
||||||
|
|
||||||
@StringRes
|
@StringRes
|
||||||
|
@ -218,6 +221,10 @@ public class ContextMenuItem {
|
||||||
return tag;
|
return tag;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
public static ItemBuilder createBuilder(String title) {
|
public static ItemBuilder createBuilder(String title) {
|
||||||
return new ItemBuilder().setTitle(title);
|
return new ItemBuilder().setTitle(title);
|
||||||
}
|
}
|
||||||
|
@ -249,6 +256,7 @@ public class ContextMenuItem {
|
||||||
private boolean mHideDivider;
|
private boolean mHideDivider;
|
||||||
private int mMinHeight;
|
private int mMinHeight;
|
||||||
private int mTag;
|
private int mTag;
|
||||||
|
private String mId;
|
||||||
|
|
||||||
public ItemBuilder setTitleId(@StringRes int titleId, @Nullable Context context) {
|
public ItemBuilder setTitleId(@StringRes int titleId, @Nullable Context context) {
|
||||||
this.mTitleId = titleId;
|
this.mTitleId = titleId;
|
||||||
|
@ -363,11 +371,16 @@ public class ContextMenuItem {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ItemBuilder setId(String id) {
|
||||||
|
this.mId = id;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public ContextMenuItem createItem() {
|
public ContextMenuItem createItem() {
|
||||||
return new ContextMenuItem(mTitleId, mTitle, mIcon, mColorRes, mSecondaryIcon,
|
return new ContextMenuItem(mTitleId, mTitle, mIcon, mColorRes, mSecondaryIcon,
|
||||||
mSelected, mProgress, mLayout, mLoading, mIsCategory, mIsClickable, mSkipPaintingWithoutColor,
|
mSelected, mProgress, mLayout, mLoading, mIsCategory, mIsClickable, mSkipPaintingWithoutColor,
|
||||||
mPosition, mOrder, mDescription, mItemClickListener, mIntegerListener, mProgressListener,
|
mPosition, mOrder, mDescription, mItemClickListener, mIntegerListener, mProgressListener,
|
||||||
mHideDivider, mMinHeight, mTag);
|
mHideDivider, mMinHeight, mTag, mId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,12 @@
|
||||||
package net.osmand.plus;
|
package net.osmand.plus;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
|
import android.graphics.Bitmap;
|
||||||
|
import android.graphics.BitmapFactory;
|
||||||
|
import android.net.Uri;
|
||||||
|
import android.support.annotation.NonNull;
|
||||||
|
import android.support.annotation.Nullable;
|
||||||
|
import android.text.TextUtils;
|
||||||
|
|
||||||
import net.osmand.IProgress;
|
import net.osmand.IProgress;
|
||||||
import net.osmand.IndexConstants;
|
import net.osmand.IndexConstants;
|
||||||
|
@ -9,136 +15,187 @@ import net.osmand.plus.activities.MapActivity;
|
||||||
import net.osmand.plus.activities.PluginsActivity;
|
import net.osmand.plus.activities.PluginsActivity;
|
||||||
import net.osmand.plus.activities.SettingsActivity;
|
import net.osmand.plus.activities.SettingsActivity;
|
||||||
import net.osmand.plus.activities.TrackActivity;
|
import net.osmand.plus.activities.TrackActivity;
|
||||||
import net.osmand.plus.activities.search.SearchActivity;
|
|
||||||
import net.osmand.plus.download.DownloadActivity;
|
import net.osmand.plus.download.DownloadActivity;
|
||||||
import net.osmand.plus.download.DownloadActivityType;
|
|
||||||
import net.osmand.plus.helpers.WaypointHelper;
|
import net.osmand.plus.helpers.WaypointHelper;
|
||||||
import net.osmand.plus.myplaces.FavoritesActivity;
|
import net.osmand.plus.myplaces.FavoritesActivity;
|
||||||
import net.osmand.plus.routing.RouteCalculationResult;
|
import net.osmand.plus.routing.RouteCalculationResult;
|
||||||
import net.osmand.plus.views.OsmandMapTileView;
|
import net.osmand.plus.views.OsmandMapTileView;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
public class OsmAndAppCustomization {
|
public class OsmAndAppCustomization {
|
||||||
|
|
||||||
protected OsmandApplication app;
|
protected OsmandApplication app;
|
||||||
protected OsmandSettings osmandSettings;
|
protected OsmandSettings osmandSettings;
|
||||||
|
|
||||||
|
private Bitmap navDrawerLogo;
|
||||||
|
|
||||||
|
private Set<String> enabledIds = new HashSet<>();
|
||||||
|
private Set<String> disabledIds = new HashSet<>();
|
||||||
|
private Set<String> enabledPatterns = new HashSet<>();
|
||||||
|
private Set<String> disabledPatterns = new HashSet<>();
|
||||||
|
|
||||||
|
private boolean customizationEnabled;
|
||||||
|
|
||||||
public void setup(OsmandApplication app) {
|
public void setup(OsmandApplication app) {
|
||||||
this.app = app;
|
this.app = app;
|
||||||
this.osmandSettings = new OsmandSettings(app, new net.osmand.plus.api.SettingsAPIImpl(app));
|
this.osmandSettings = new OsmandSettings(app, new net.osmand.plus.api.SettingsAPIImpl(app));
|
||||||
}
|
}
|
||||||
|
|
||||||
public OsmandSettings getOsmandSettings(){ return osmandSettings;}
|
public OsmandSettings getOsmandSettings() {
|
||||||
// Main menu
|
return osmandSettings;
|
||||||
public boolean checkExceptionsOnStart() {
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean showFirstTimeRunAndTips(boolean firstTime, boolean appVersionChanged) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean checkBasemapDownloadedOnStart() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Activities
|
// Activities
|
||||||
public Class<? extends Activity> getSettingsActivity(){
|
public Class<? extends Activity> getSettingsActivity() {
|
||||||
return SettingsActivity.class;
|
return SettingsActivity.class;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Class<MapActivity> getMapActivity(){
|
public Class<MapActivity> getMapActivity() {
|
||||||
return MapActivity.class;
|
return MapActivity.class;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Class<TrackActivity> getTrackActivity(){
|
public Class<TrackActivity> getTrackActivity() {
|
||||||
return TrackActivity.class;
|
return TrackActivity.class;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Class<FavoritesActivity> getFavoritesActivity(){
|
public Class<FavoritesActivity> getFavoritesActivity() {
|
||||||
return FavoritesActivity.class;
|
return FavoritesActivity.class;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Class<? extends Activity> getDownloadIndexActivity() {
|
public Class<? extends Activity> getDownloadIndexActivity() {
|
||||||
return DownloadActivity.class;
|
return DownloadActivity.class;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Class<? extends Activity> getPluginsActivity() {
|
public Class<? extends Activity> getPluginsActivity() {
|
||||||
return PluginsActivity.class;
|
return PluginsActivity.class;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Class<? extends Activity> getDownloadActivity() {
|
public Class<? extends Activity> getDownloadActivity() {
|
||||||
return DownloadActivity.class;
|
return DownloadActivity.class;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Download screen
|
|
||||||
public void getDownloadTypes(List<DownloadActivityType> items) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public List<String> onIndexingFiles(IProgress progress, Map<String, String> indexFileNames) {
|
public List<String> onIndexingFiles(IProgress progress, Map<String, String> indexFileNames) {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void prepareLayerContextMenu(MapActivity activity, ContextMenuAdapter adapter) {
|
|
||||||
}
|
|
||||||
|
|
||||||
public void prepareOptionsMenu(MapActivity mapActivity, ContextMenuAdapter optionsMenuHelper) {
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public String getIndexesUrl() {
|
public String getIndexesUrl() {
|
||||||
return "http://"+IndexConstants.INDEX_DOWNLOAD_DOMAIN+"/get_indexes?gzip&" + Version.getVersionAsURLParam(app); //$NON-NLS-1$;
|
return "http://" + IndexConstants.INDEX_DOWNLOAD_DOMAIN + "/get_indexes?gzip&" + Version.getVersionAsURLParam(app);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean showDownloadExtraActions() {
|
public boolean showDownloadExtraActions() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public File getTracksDir() {
|
public File getTracksDir() {
|
||||||
return app.getAppPath(IndexConstants.GPX_RECORDED_INDEX_DIR);
|
return app.getAppPath(IndexConstants.GPX_RECORDED_INDEX_DIR);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void createLayers(OsmandMapTileView mapView, MapActivity activity) {
|
public void createLayers(OsmandMapTileView mapView, MapActivity activity) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<? extends LocationPoint> getWaypoints() {
|
public List<? extends LocationPoint> getWaypoints() {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isWaypointGroupVisible(int waypointType, RouteCalculationResult route) {
|
public boolean isWaypointGroupVisible(int waypointType, RouteCalculationResult route) {
|
||||||
if(waypointType == WaypointHelper.ALARMS) {
|
if (waypointType == WaypointHelper.ALARMS) {
|
||||||
return route != null && !route.getAlarmInfo().isEmpty();
|
return route != null && !route.getAlarmInfo().isEmpty();
|
||||||
} else if(waypointType == WaypointHelper.WAYPOINTS) {
|
} else if (waypointType == WaypointHelper.WAYPOINTS) {
|
||||||
return route != null && !route.getLocationPoints().isEmpty();
|
return route != null && !route.getLocationPoints().isEmpty();
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void showLocationPoint(MapActivity ctx, LocationPoint locationPoint) {
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean onDestinationReached() {
|
public boolean onDestinationReached() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public Bitmap getNavDrawerLogo() {
|
||||||
|
return navDrawerLogo;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean onlyTourDownload() {
|
public boolean setNavDrawerLogo(@Nullable String uri) {
|
||||||
|
if (TextUtils.isEmpty(uri)) {
|
||||||
|
navDrawerLogo = null;
|
||||||
|
} else {
|
||||||
|
try {
|
||||||
|
InputStream is = app.getContentResolver().openInputStream(Uri.parse(uri));
|
||||||
|
if (is != null) {
|
||||||
|
navDrawerLogo = BitmapFactory.decodeStream(is);
|
||||||
|
is.close();
|
||||||
|
}
|
||||||
|
} catch (FileNotFoundException e) {
|
||||||
|
return false;
|
||||||
|
} catch (IOException e) {
|
||||||
|
// ignore
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEnabledIds(@NonNull Collection<String> ids) {
|
||||||
|
enabledIds.clear();
|
||||||
|
enabledIds.addAll(ids);
|
||||||
|
updateCustomizationEnabled();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDisabledIds(@NonNull Collection<String> ids) {
|
||||||
|
disabledIds.clear();
|
||||||
|
disabledIds.addAll(ids);
|
||||||
|
updateCustomizationEnabled();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEnabledPatterns(@NonNull Collection<String> patterns) {
|
||||||
|
enabledPatterns.clear();
|
||||||
|
enabledPatterns.addAll(patterns);
|
||||||
|
updateCustomizationEnabled();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDisabledPatterns(@NonNull Collection<String> patterns) {
|
||||||
|
disabledPatterns.clear();
|
||||||
|
disabledPatterns.addAll(patterns);
|
||||||
|
updateCustomizationEnabled();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isFeatureEnabled(@NonNull String id) {
|
||||||
|
if (!customizationEnabled) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (enabledIds.contains(id)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (disabledIds.contains(id)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (isMatchesPattern(id, enabledPatterns)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return !isMatchesPattern(id, disabledPatterns);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateCustomizationEnabled() {
|
||||||
|
customizationEnabled = !enabledIds.isEmpty() || !disabledIds.isEmpty()
|
||||||
|
|| !enabledPatterns.isEmpty() || !disabledPatterns.isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isMatchesPattern(@NonNull String id, @NonNull Set<String> patterns) {
|
||||||
|
for (String pattern : patterns) {
|
||||||
|
if (id.startsWith(pattern)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public <T> void resumeActivity(Class<T> class1, T d) {
|
|
||||||
}
|
|
||||||
|
|
||||||
public <T> void pauseActivity(Class<T> class1) {
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
73
OsmAnd/src/net/osmand/plus/OsmAndCustomizationConstants.java
Normal file
73
OsmAnd/src/net/osmand/plus/OsmAndCustomizationConstants.java
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
package net.osmand.plus;
|
||||||
|
|
||||||
|
public interface OsmAndCustomizationConstants {
|
||||||
|
|
||||||
|
// Navigation Drawer:
|
||||||
|
|
||||||
|
String DRAWER_ITEM_ID_SCHEME = "drawer.action.";
|
||||||
|
String DRAWER_DASHBOARD_ID = DRAWER_ITEM_ID_SCHEME + "dashboard";
|
||||||
|
String DRAWER_MAP_MARKERS_ID = DRAWER_ITEM_ID_SCHEME + "map_markers";
|
||||||
|
String DRAWER_MY_PLACES_ID = DRAWER_ITEM_ID_SCHEME + "my_places";
|
||||||
|
String DRAWER_SEARCH_ID = DRAWER_ITEM_ID_SCHEME + "search";
|
||||||
|
String DRAWER_DIRECTIONS_ID = DRAWER_ITEM_ID_SCHEME + "directions";
|
||||||
|
String DRAWER_CONFIGURE_MAP_ID = DRAWER_ITEM_ID_SCHEME + "configure_map";
|
||||||
|
String DRAWER_DOWNLOAD_MAPS_ID = DRAWER_ITEM_ID_SCHEME + "download_maps";
|
||||||
|
String DRAWER_OSMAND_LIVE_ID = DRAWER_ITEM_ID_SCHEME + "osmand_live";
|
||||||
|
String DRAWER_TRAVEL_GUIDES_ID = DRAWER_ITEM_ID_SCHEME + "travel_guides";
|
||||||
|
String DRAWER_MEASURE_DISTANCE_ID = DRAWER_ITEM_ID_SCHEME + "measure_distance";
|
||||||
|
String DRAWER_CONFIGURE_SCREEN_ID = DRAWER_ITEM_ID_SCHEME + "configure_screen";
|
||||||
|
String DRAWER_PLUGINS_ID = DRAWER_ITEM_ID_SCHEME + "plugins";
|
||||||
|
String DRAWER_SETTINGS_ID = DRAWER_ITEM_ID_SCHEME + "settings";
|
||||||
|
String DRAWER_HELP_ID = DRAWER_ITEM_ID_SCHEME + "help";
|
||||||
|
String DRAWER_BUILDS_ID = DRAWER_ITEM_ID_SCHEME + "builds";
|
||||||
|
String DRAWER_DIVIDER_ID = DRAWER_ITEM_ID_SCHEME + "divider";
|
||||||
|
|
||||||
|
// Configure Map:
|
||||||
|
|
||||||
|
String ITEM_ID_SCHEME = "map.configure.";
|
||||||
|
String SHOW_ITEMS_ID_SCHEME = ITEM_ID_SCHEME + "show.";
|
||||||
|
String RENDERING_ITEMS_ID_SCHEME = ITEM_ID_SCHEME + "rendering.";
|
||||||
|
String CUSTOM_RENDERING_ITEMS_ID_SCHEME = RENDERING_ITEMS_ID_SCHEME + "custom.";
|
||||||
|
|
||||||
|
String APP_PROFILES_ID = ITEM_ID_SCHEME + "app_profiles";
|
||||||
|
|
||||||
|
String SHOW_CATEGORY_ID = SHOW_ITEMS_ID_SCHEME + "category";
|
||||||
|
String FAVORITES_ID = SHOW_ITEMS_ID_SCHEME + "favorites";
|
||||||
|
String POI_OVERLAY_ID = SHOW_ITEMS_ID_SCHEME + "poi_overlay";
|
||||||
|
String POI_OVERLAY_LABELS_ID = SHOW_ITEMS_ID_SCHEME + "poi_overlay_labels";
|
||||||
|
String TRANSPORT_ID = SHOW_ITEMS_ID_SCHEME + "transport";
|
||||||
|
String GPX_FILES_ID = SHOW_ITEMS_ID_SCHEME + "gpx_files";
|
||||||
|
String MAP_MARKERS_ID = SHOW_ITEMS_ID_SCHEME + "map_markers";
|
||||||
|
String MAP_SOURCE_ID = SHOW_ITEMS_ID_SCHEME + "map_source";
|
||||||
|
String RECORDING_LAYER = SHOW_ITEMS_ID_SCHEME + "recording_layer";
|
||||||
|
String MAPILLARY = SHOW_ITEMS_ID_SCHEME + "mapillary";
|
||||||
|
String OSM_NOTES = SHOW_ITEMS_ID_SCHEME + "osm_notes";
|
||||||
|
String OVERLAY_MAP = SHOW_ITEMS_ID_SCHEME + "overlay_map";
|
||||||
|
String UNDERLAY_MAP = SHOW_ITEMS_ID_SCHEME + "underlay_map";
|
||||||
|
String CONTOUR_LINES = SHOW_ITEMS_ID_SCHEME + "contour_lines";
|
||||||
|
String HILLSHADE_LAYER = SHOW_ITEMS_ID_SCHEME + "hillshade_layer";
|
||||||
|
|
||||||
|
String MAP_RENDERING_CATEGORY_ID = RENDERING_ITEMS_ID_SCHEME + "category";
|
||||||
|
String MAP_STYLE_ID = RENDERING_ITEMS_ID_SCHEME + "map_style";
|
||||||
|
String MAP_MODE_ID = RENDERING_ITEMS_ID_SCHEME + "map_mode";
|
||||||
|
String MAP_MAGNIFIER_ID = RENDERING_ITEMS_ID_SCHEME + "map_marnifier";
|
||||||
|
String ROAD_STYLE_ID = RENDERING_ITEMS_ID_SCHEME + "road_style";
|
||||||
|
String TEXT_SIZE_ID = RENDERING_ITEMS_ID_SCHEME + "text_size";
|
||||||
|
String MAP_LANGUAGE_ID = RENDERING_ITEMS_ID_SCHEME + "map_language";
|
||||||
|
String TRANSPORT_RENDERING_ID = RENDERING_ITEMS_ID_SCHEME + "transport";
|
||||||
|
String DETAILS_ID = RENDERING_ITEMS_ID_SCHEME + "details";
|
||||||
|
String HIDE_ID = RENDERING_ITEMS_ID_SCHEME + "hide";
|
||||||
|
String ROUTES_ID = RENDERING_ITEMS_ID_SCHEME + "routes";
|
||||||
|
|
||||||
|
// Map Controls:
|
||||||
|
|
||||||
|
String HUD_BTN_ID_SCHEME = "map.view.";
|
||||||
|
String LAYERS_HUD_ID = HUD_BTN_ID_SCHEME + "layers";
|
||||||
|
String COMPASS_HUD_ID = HUD_BTN_ID_SCHEME + "compass";
|
||||||
|
String QUICK_SEARCH_HUD_ID = HUD_BTN_ID_SCHEME + "quick_search";
|
||||||
|
String BACK_TO_LOC_HUD_ID = HUD_BTN_ID_SCHEME + "back_to_loc";
|
||||||
|
String MENU_HUD_ID = HUD_BTN_ID_SCHEME + "menu";
|
||||||
|
String ROUTE_PLANNING_HUD_ID = HUD_BTN_ID_SCHEME + "route_planning";
|
||||||
|
String ZOOM_IN_HUD_ID = HUD_BTN_ID_SCHEME + "zoom_id";
|
||||||
|
String ZOOM_OUT_HUD_ID = HUD_BTN_ID_SCHEME + "zoom_out";
|
||||||
|
}
|
|
@ -90,7 +90,6 @@ import net.osmand.plus.firstusage.FirstUsageWelcomeFragment;
|
||||||
import net.osmand.plus.firstusage.FirstUsageWizardFragment;
|
import net.osmand.plus.firstusage.FirstUsageWizardFragment;
|
||||||
import net.osmand.plus.helpers.AndroidUiHelper;
|
import net.osmand.plus.helpers.AndroidUiHelper;
|
||||||
import net.osmand.plus.helpers.DiscountHelper;
|
import net.osmand.plus.helpers.DiscountHelper;
|
||||||
import net.osmand.plus.helpers.DiscountHelper.DiscountBarController;
|
|
||||||
import net.osmand.plus.helpers.ExternalApiHelper;
|
import net.osmand.plus.helpers.ExternalApiHelper;
|
||||||
import net.osmand.plus.helpers.ImportHelper;
|
import net.osmand.plus.helpers.ImportHelper;
|
||||||
import net.osmand.plus.helpers.ImportHelper.ImportGpxBottomSheetDialogFragment;
|
import net.osmand.plus.helpers.ImportHelper.ImportGpxBottomSheetDialogFragment;
|
||||||
|
@ -770,7 +769,6 @@ public class MapActivity extends OsmandActionBarActivity implements DownloadEven
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
getMyApplication().getAppCustomization().resumeActivity(MapActivity.class, this);
|
|
||||||
if (System.currentTimeMillis() - tm > 50) {
|
if (System.currentTimeMillis() - tm > 50) {
|
||||||
System.err.println("OnCreate for MapActivity took " + (System.currentTimeMillis() - tm) + " ms");
|
System.err.println("OnCreate for MapActivity took " + (System.currentTimeMillis() - tm) + " ms");
|
||||||
}
|
}
|
||||||
|
@ -1306,7 +1304,6 @@ public class MapActivity extends OsmandActionBarActivity implements DownloadEven
|
||||||
|
|
||||||
settings.setLastKnownMapZoom(mapView.getZoom());
|
settings.setLastKnownMapZoom(mapView.getZoom());
|
||||||
settings.MAP_ACTIVITY_ENABLED.set(false);
|
settings.MAP_ACTIVITY_ENABLED.set(false);
|
||||||
getMyApplication().getAppCustomization().pauseActivity(MapActivity.class);
|
|
||||||
app.getResourceManager().interruptRendering();
|
app.getResourceManager().interruptRendering();
|
||||||
OsmandPlugin.onMapActivityPause(this);
|
OsmandPlugin.onMapActivityPause(this);
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,8 +5,10 @@ import android.app.Activity;
|
||||||
import android.app.Dialog;
|
import android.app.Dialog;
|
||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.graphics.Bitmap;
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.support.annotation.NonNull;
|
||||||
import android.support.annotation.Nullable;
|
import android.support.annotation.Nullable;
|
||||||
import android.support.v4.app.ActivityCompat;
|
import android.support.v4.app.ActivityCompat;
|
||||||
import android.support.v4.content.ContextCompat;
|
import android.support.v4.content.ContextCompat;
|
||||||
|
@ -17,9 +19,11 @@ import android.view.WindowManager;
|
||||||
import android.widget.AdapterView;
|
import android.widget.AdapterView;
|
||||||
import android.widget.ArrayAdapter;
|
import android.widget.ArrayAdapter;
|
||||||
import android.widget.EditText;
|
import android.widget.EditText;
|
||||||
|
import android.widget.ImageView;
|
||||||
import android.widget.ListView;
|
import android.widget.ListView;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import net.osmand.AndroidUtils;
|
import net.osmand.AndroidUtils;
|
||||||
import net.osmand.IndexConstants;
|
import net.osmand.IndexConstants;
|
||||||
import net.osmand.Location;
|
import net.osmand.Location;
|
||||||
|
@ -47,7 +51,6 @@ import net.osmand.plus.R;
|
||||||
import net.osmand.plus.TargetPointsHelper;
|
import net.osmand.plus.TargetPointsHelper;
|
||||||
import net.osmand.plus.Version;
|
import net.osmand.plus.Version;
|
||||||
import net.osmand.plus.activities.actions.OsmAndDialogs;
|
import net.osmand.plus.activities.actions.OsmAndDialogs;
|
||||||
import net.osmand.plus.activities.search.SearchActivity;
|
|
||||||
import net.osmand.plus.dashboard.DashboardOnMap.DashboardType;
|
import net.osmand.plus.dashboard.DashboardOnMap.DashboardType;
|
||||||
import net.osmand.plus.dialogs.FavoriteDialogs;
|
import net.osmand.plus.dialogs.FavoriteDialogs;
|
||||||
import net.osmand.plus.download.IndexItem;
|
import net.osmand.plus.download.IndexItem;
|
||||||
|
@ -76,6 +79,21 @@ import java.util.ArrayList;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.DRAWER_CONFIGURE_MAP_ID;
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.DRAWER_CONFIGURE_SCREEN_ID;
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.DRAWER_DASHBOARD_ID;
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.DRAWER_DIRECTIONS_ID;
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.DRAWER_DIVIDER_ID;
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.DRAWER_DOWNLOAD_MAPS_ID;
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.DRAWER_HELP_ID;
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.DRAWER_MAP_MARKERS_ID;
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.DRAWER_MEASURE_DISTANCE_ID;
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.DRAWER_MY_PLACES_ID;
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.DRAWER_OSMAND_LIVE_ID;
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.DRAWER_PLUGINS_ID;
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.DRAWER_SEARCH_ID;
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.DRAWER_SETTINGS_ID;
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.DRAWER_TRAVEL_GUIDES_ID;
|
||||||
import static net.osmand.plus.helpers.ImportHelper.GPX_SUFFIX;
|
import static net.osmand.plus.helpers.ImportHelper.GPX_SUFFIX;
|
||||||
|
|
||||||
public class MapActivityActions implements DialogProvider {
|
public class MapActivityActions implements DialogProvider {
|
||||||
|
@ -102,6 +120,7 @@ public class MapActivityActions implements DialogProvider {
|
||||||
private static final int DIALOG_RELOAD_TITLE = 103;
|
private static final int DIALOG_RELOAD_TITLE = 103;
|
||||||
|
|
||||||
private static final int DIALOG_SAVE_DIRECTIONS = 106;
|
private static final int DIALOG_SAVE_DIRECTIONS = 106;
|
||||||
|
|
||||||
// make static
|
// make static
|
||||||
private static Bundle dialogBundle = new Bundle();
|
private static Bundle dialogBundle = new Bundle();
|
||||||
|
|
||||||
|
@ -109,10 +128,14 @@ public class MapActivityActions implements DialogProvider {
|
||||||
private OsmandSettings settings;
|
private OsmandSettings settings;
|
||||||
private RoutingHelper routingHelper;
|
private RoutingHelper routingHelper;
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
private ImageView navDrawerLogoHeader;
|
||||||
|
|
||||||
public MapActivityActions(MapActivity mapActivity) {
|
public MapActivityActions(MapActivity mapActivity) {
|
||||||
this.mapActivity = mapActivity;
|
this.mapActivity = mapActivity;
|
||||||
settings = mapActivity.getMyApplication().getSettings();
|
settings = mapActivity.getMyApplication().getSettings();
|
||||||
routingHelper = mapActivity.getMyApplication().getRoutingHelper();
|
routingHelper = mapActivity.getMyApplication().getRoutingHelper();
|
||||||
|
navDrawerLogoHeader = new ImageView(mapActivity);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addAsTarget(double latitude, double longitude, PointDescription pd) {
|
public void addAsTarget(double latitude, double longitude, PointDescription pd) {
|
||||||
|
@ -647,6 +670,7 @@ public class MapActivityActions implements DialogProvider {
|
||||||
ContextMenuAdapter optionsMenuHelper = new ContextMenuAdapter();
|
ContextMenuAdapter optionsMenuHelper = new ContextMenuAdapter();
|
||||||
|
|
||||||
optionsMenuHelper.addItem(new ItemBuilder().setTitleId(R.string.home, mapActivity)
|
optionsMenuHelper.addItem(new ItemBuilder().setTitleId(R.string.home, mapActivity)
|
||||||
|
.setId(DRAWER_DASHBOARD_ID)
|
||||||
.setIcon(R.drawable.map_dashboard)
|
.setIcon(R.drawable.map_dashboard)
|
||||||
.setListener(new ContextMenuAdapter.ItemClickListener() {
|
.setListener(new ContextMenuAdapter.ItemClickListener() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -660,6 +684,7 @@ public class MapActivityActions implements DialogProvider {
|
||||||
}).createItem());
|
}).createItem());
|
||||||
|
|
||||||
optionsMenuHelper.addItem(new ItemBuilder().setTitleId(R.string.map_markers, mapActivity)
|
optionsMenuHelper.addItem(new ItemBuilder().setTitleId(R.string.map_markers, mapActivity)
|
||||||
|
.setId(DRAWER_MAP_MARKERS_ID)
|
||||||
.setIcon(R.drawable.ic_action_flag_dark)
|
.setIcon(R.drawable.ic_action_flag_dark)
|
||||||
.setListener(new ContextMenuAdapter.ItemClickListener() {
|
.setListener(new ContextMenuAdapter.ItemClickListener() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -672,6 +697,7 @@ public class MapActivityActions implements DialogProvider {
|
||||||
}).createItem());
|
}).createItem());
|
||||||
|
|
||||||
optionsMenuHelper.addItem(new ItemBuilder().setTitleId(R.string.shared_string_my_places, mapActivity)
|
optionsMenuHelper.addItem(new ItemBuilder().setTitleId(R.string.shared_string_my_places, mapActivity)
|
||||||
|
.setId(DRAWER_MY_PLACES_ID)
|
||||||
.setIcon(R.drawable.ic_action_fav_dark)
|
.setIcon(R.drawable.ic_action_fav_dark)
|
||||||
.setListener(new ContextMenuAdapter.ItemClickListener() {
|
.setListener(new ContextMenuAdapter.ItemClickListener() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -686,6 +712,7 @@ public class MapActivityActions implements DialogProvider {
|
||||||
}).createItem());
|
}).createItem());
|
||||||
|
|
||||||
optionsMenuHelper.addItem(new ItemBuilder().setTitleId(R.string.search_button, mapActivity)
|
optionsMenuHelper.addItem(new ItemBuilder().setTitleId(R.string.search_button, mapActivity)
|
||||||
|
.setId(DRAWER_SEARCH_ID)
|
||||||
.setIcon(R.drawable.ic_action_search_dark)
|
.setIcon(R.drawable.ic_action_search_dark)
|
||||||
.setListener(new ContextMenuAdapter.ItemClickListener() {
|
.setListener(new ContextMenuAdapter.ItemClickListener() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -698,6 +725,7 @@ public class MapActivityActions implements DialogProvider {
|
||||||
|
|
||||||
|
|
||||||
optionsMenuHelper.addItem(new ItemBuilder().setTitleId(R.string.get_directions, mapActivity)
|
optionsMenuHelper.addItem(new ItemBuilder().setTitleId(R.string.get_directions, mapActivity)
|
||||||
|
.setId(DRAWER_DIRECTIONS_ID)
|
||||||
.setIcon(R.drawable.ic_action_gdirections_dark)
|
.setIcon(R.drawable.ic_action_gdirections_dark)
|
||||||
.setListener(new ContextMenuAdapter.ItemClickListener() {
|
.setListener(new ContextMenuAdapter.ItemClickListener() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -725,6 +753,7 @@ public class MapActivityActions implements DialogProvider {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
optionsMenuHelper.addItem(new ContextMenuItem.ItemBuilder().setTitleId(R.string.configure_map, mapActivity)
|
optionsMenuHelper.addItem(new ContextMenuItem.ItemBuilder().setTitleId(R.string.configure_map, mapActivity)
|
||||||
|
.setId(DRAWER_CONFIGURE_MAP_ID)
|
||||||
.setIcon(R.drawable.ic_action_layers_dark)
|
.setIcon(R.drawable.ic_action_layers_dark)
|
||||||
.setListener(new ContextMenuAdapter.ItemClickListener() {
|
.setListener(new ContextMenuAdapter.ItemClickListener() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -744,6 +773,7 @@ public class MapActivityActions implements DialogProvider {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
optionsMenuHelper.addItem(new ItemBuilder().setTitleId(R.string.welmode_download_maps, null)
|
optionsMenuHelper.addItem(new ItemBuilder().setTitleId(R.string.welmode_download_maps, null)
|
||||||
|
.setId(DRAWER_DOWNLOAD_MAPS_ID)
|
||||||
.setTitle(d).setIcon(R.drawable.ic_type_archive)
|
.setTitle(d).setIcon(R.drawable.ic_type_archive)
|
||||||
.setListener(new ContextMenuAdapter.ItemClickListener() {
|
.setListener(new ContextMenuAdapter.ItemClickListener() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -759,6 +789,7 @@ public class MapActivityActions implements DialogProvider {
|
||||||
|
|
||||||
if (Version.isGooglePlayEnabled(app) || Version.isDeveloperVersion(app)) {
|
if (Version.isGooglePlayEnabled(app) || Version.isDeveloperVersion(app)) {
|
||||||
optionsMenuHelper.addItem(new ItemBuilder().setTitleId(R.string.osm_live, mapActivity)
|
optionsMenuHelper.addItem(new ItemBuilder().setTitleId(R.string.osm_live, mapActivity)
|
||||||
|
.setId(DRAWER_OSMAND_LIVE_ID)
|
||||||
.setIcon(R.drawable.ic_action_osm_live)
|
.setIcon(R.drawable.ic_action_osm_live)
|
||||||
.setListener(new ContextMenuAdapter.ItemClickListener() {
|
.setListener(new ContextMenuAdapter.ItemClickListener() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -773,6 +804,7 @@ public class MapActivityActions implements DialogProvider {
|
||||||
}
|
}
|
||||||
|
|
||||||
optionsMenuHelper.addItem(new ItemBuilder().setTitle(getString(R.string.shared_string_travel_guides) + " (Beta)")
|
optionsMenuHelper.addItem(new ItemBuilder().setTitle(getString(R.string.shared_string_travel_guides) + " (Beta)")
|
||||||
|
.setId(DRAWER_TRAVEL_GUIDES_ID)
|
||||||
.setIcon(R.drawable.ic_action_travel)
|
.setIcon(R.drawable.ic_action_travel)
|
||||||
.setListener(new ItemClickListener() {
|
.setListener(new ItemClickListener() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -792,6 +824,7 @@ public class MapActivityActions implements DialogProvider {
|
||||||
}).createItem());
|
}).createItem());
|
||||||
|
|
||||||
optionsMenuHelper.addItem(new ContextMenuItem.ItemBuilder().setTitleId(R.string.measurement_tool, mapActivity)
|
optionsMenuHelper.addItem(new ContextMenuItem.ItemBuilder().setTitleId(R.string.measurement_tool, mapActivity)
|
||||||
|
.setId(DRAWER_MEASURE_DISTANCE_ID)
|
||||||
.setIcon(R.drawable.ic_action_ruler)
|
.setIcon(R.drawable.ic_action_ruler)
|
||||||
.setListener(new ContextMenuAdapter.ItemClickListener() {
|
.setListener(new ContextMenuAdapter.ItemClickListener() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -804,6 +837,7 @@ public class MapActivityActions implements DialogProvider {
|
||||||
app.getAidlApi().registerNavDrawerItems(mapActivity, optionsMenuHelper);
|
app.getAidlApi().registerNavDrawerItems(mapActivity, optionsMenuHelper);
|
||||||
|
|
||||||
optionsMenuHelper.addItem(new ItemBuilder().setTitleId(R.string.layer_map_appearance, mapActivity)
|
optionsMenuHelper.addItem(new ItemBuilder().setTitleId(R.string.layer_map_appearance, mapActivity)
|
||||||
|
.setId(DRAWER_CONFIGURE_SCREEN_ID)
|
||||||
.setIcon(R.drawable.ic_configure_screen_dark)
|
.setIcon(R.drawable.ic_configure_screen_dark)
|
||||||
.setListener(new ContextMenuAdapter.ItemClickListener() {
|
.setListener(new ContextMenuAdapter.ItemClickListener() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -816,6 +850,7 @@ public class MapActivityActions implements DialogProvider {
|
||||||
}).createItem());
|
}).createItem());
|
||||||
|
|
||||||
optionsMenuHelper.addItem(new ItemBuilder().setTitleId(R.string.prefs_plugins, mapActivity)
|
optionsMenuHelper.addItem(new ItemBuilder().setTitleId(R.string.prefs_plugins, mapActivity)
|
||||||
|
.setId(DRAWER_PLUGINS_ID)
|
||||||
.setIcon(R.drawable.ic_extension_dark)
|
.setIcon(R.drawable.ic_extension_dark)
|
||||||
.setListener(new ItemClickListener() {
|
.setListener(new ItemClickListener() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -830,6 +865,7 @@ public class MapActivityActions implements DialogProvider {
|
||||||
}).createItem());
|
}).createItem());
|
||||||
|
|
||||||
optionsMenuHelper.addItem(new ItemBuilder().setTitleId(R.string.shared_string_settings, mapActivity)
|
optionsMenuHelper.addItem(new ItemBuilder().setTitleId(R.string.shared_string_settings, mapActivity)
|
||||||
|
.setId(DRAWER_SETTINGS_ID)
|
||||||
.setIcon(R.drawable.ic_action_settings)
|
.setIcon(R.drawable.ic_action_settings)
|
||||||
.setListener(new ContextMenuAdapter.ItemClickListener() {
|
.setListener(new ContextMenuAdapter.ItemClickListener() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -857,6 +893,7 @@ public class MapActivityActions implements DialogProvider {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
optionsMenuHelper.addItem(new ItemBuilder().setTitleId(R.string.shared_string_help, mapActivity)
|
optionsMenuHelper.addItem(new ItemBuilder().setTitleId(R.string.shared_string_help, mapActivity)
|
||||||
|
.setId(DRAWER_HELP_ID)
|
||||||
.setIcon(R.drawable.ic_action_help)
|
.setIcon(R.drawable.ic_action_help)
|
||||||
.setListener(new ContextMenuAdapter.ItemClickListener() {
|
.setListener(new ContextMenuAdapter.ItemClickListener() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -882,10 +919,10 @@ public class MapActivityActions implements DialogProvider {
|
||||||
}
|
}
|
||||||
|
|
||||||
ItemBuilder divider = new ItemBuilder().setLayout(R.layout.drawer_divider);
|
ItemBuilder divider = new ItemBuilder().setLayout(R.layout.drawer_divider);
|
||||||
|
divider.setId(DRAWER_DIVIDER_ID);
|
||||||
divider.setPosition(dividerItemIndex >= 0 ? dividerItemIndex : 8);
|
divider.setPosition(dividerItemIndex >= 0 ? dividerItemIndex : 8);
|
||||||
optionsMenuHelper.addItem(divider.createItem());
|
optionsMenuHelper.addItem(divider.createItem());
|
||||||
|
|
||||||
getMyApplication().getAppCustomization().prepareOptionsMenu(mapActivity, optionsMenuHelper);
|
|
||||||
return optionsMenuHelper;
|
return optionsMenuHelper;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -958,6 +995,12 @@ public class MapActivityActions implements DialogProvider {
|
||||||
} else {
|
} else {
|
||||||
menuItemsListView.setBackgroundColor(ContextCompat.getColor(mapActivity, R.color.bg_color_light));
|
menuItemsListView.setBackgroundColor(ContextCompat.getColor(mapActivity, R.color.bg_color_light));
|
||||||
}
|
}
|
||||||
|
menuItemsListView.removeHeaderView(navDrawerLogoHeader);
|
||||||
|
Bitmap navDrawerLogo = getMyApplication().getAppCustomization().getNavDrawerLogo();
|
||||||
|
if (navDrawerLogo != null) {
|
||||||
|
navDrawerLogoHeader.setImageBitmap(navDrawerLogo);
|
||||||
|
menuItemsListView.addHeaderView(navDrawerLogoHeader);
|
||||||
|
}
|
||||||
menuItemsListView.setDivider(null);
|
menuItemsListView.setDivider(null);
|
||||||
final ContextMenuAdapter contextMenuAdapter = createMainOptionsMenu();
|
final ContextMenuAdapter contextMenuAdapter = createMainOptionsMenu();
|
||||||
contextMenuAdapter.setDefaultLayoutId(R.layout.simple_list_menu_item);
|
contextMenuAdapter.setDefaultLayoutId(R.layout.simple_list_menu_item);
|
||||||
|
|
|
@ -91,6 +91,8 @@ import java.util.Map;
|
||||||
import java.util.Timer;
|
import java.util.Timer;
|
||||||
import java.util.TimerTask;
|
import java.util.TimerTask;
|
||||||
|
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.RECORDING_LAYER;
|
||||||
|
|
||||||
|
|
||||||
public class AudioVideoNotesPlugin extends OsmandPlugin {
|
public class AudioVideoNotesPlugin extends OsmandPlugin {
|
||||||
|
|
||||||
|
@ -640,6 +642,7 @@ public class AudioVideoNotesPlugin extends OsmandPlugin {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
adapter.addItem(new ContextMenuItem.ItemBuilder().setTitleId(R.string.layer_recordings, app)
|
adapter.addItem(new ContextMenuItem.ItemBuilder().setTitleId(R.string.layer_recordings, app)
|
||||||
|
.setId(RECORDING_LAYER)
|
||||||
.setSelected(SHOW_RECORDINGS.get())
|
.setSelected(SHOW_RECORDINGS.get())
|
||||||
.setIcon(R.drawable.ic_action_micro_dark)
|
.setIcon(R.drawable.ic_action_micro_dark)
|
||||||
.setColor(SHOW_RECORDINGS.get() ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
.setColor(SHOW_RECORDINGS.get() ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
||||||
|
|
|
@ -18,6 +18,8 @@ import net.osmand.plus.views.OsmandMapLayer.DrawSettings;
|
||||||
import net.osmand.plus.views.OsmandMapTileView;
|
import net.osmand.plus.views.OsmandMapTileView;
|
||||||
import net.osmand.plus.views.mapwidgets.TextInfoWidget;
|
import net.osmand.plus.views.mapwidgets.TextInfoWidget;
|
||||||
|
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.DRAWER_BUILDS_ID;
|
||||||
|
|
||||||
public class OsmandDevelopmentPlugin extends OsmandPlugin {
|
public class OsmandDevelopmentPlugin extends OsmandPlugin {
|
||||||
private static final String ID = "osmand.development";
|
private static final String ID = "osmand.development";
|
||||||
private OsmandApplication app;
|
private OsmandApplication app;
|
||||||
|
@ -57,6 +59,7 @@ public class OsmandDevelopmentPlugin extends OsmandPlugin {
|
||||||
public void registerOptionsMenuItems(final MapActivity mapActivity, ContextMenuAdapter helper) {
|
public void registerOptionsMenuItems(final MapActivity mapActivity, ContextMenuAdapter helper) {
|
||||||
if (Version.isDeveloperVersion(mapActivity.getMyApplication())) {
|
if (Version.isDeveloperVersion(mapActivity.getMyApplication())) {
|
||||||
helper.addItem(new ContextMenuItem.ItemBuilder()
|
helper.addItem(new ContextMenuItem.ItemBuilder()
|
||||||
|
.setId(DRAWER_BUILDS_ID)
|
||||||
.setTitleId(R.string.version_settings, mapActivity)
|
.setTitleId(R.string.version_settings, mapActivity)
|
||||||
.setIcon(R.drawable.ic_action_gabout_dark)
|
.setIcon(R.drawable.ic_action_gabout_dark)
|
||||||
.setListener(new ContextMenuAdapter.ItemClickListener() {
|
.setListener(new ContextMenuAdapter.ItemClickListener() {
|
||||||
|
|
|
@ -68,6 +68,27 @@ import java.util.Map;
|
||||||
|
|
||||||
import gnu.trove.list.array.TIntArrayList;
|
import gnu.trove.list.array.TIntArrayList;
|
||||||
|
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.APP_PROFILES_ID;
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.CUSTOM_RENDERING_ITEMS_ID_SCHEME;
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.DETAILS_ID;
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.FAVORITES_ID;
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.GPX_FILES_ID;
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.HIDE_ID;
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.MAP_LANGUAGE_ID;
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.MAP_MAGNIFIER_ID;
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.MAP_MARKERS_ID;
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.MAP_MODE_ID;
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.MAP_RENDERING_CATEGORY_ID;
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.MAP_SOURCE_ID;
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.MAP_STYLE_ID;
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.POI_OVERLAY_ID;
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.POI_OVERLAY_LABELS_ID;
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.ROAD_STYLE_ID;
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.ROUTES_ID;
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.SHOW_CATEGORY_ID;
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.TEXT_SIZE_ID;
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.TRANSPORT_ID;
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.TRANSPORT_RENDERING_ID;
|
||||||
import static net.osmand.plus.srtmplugin.SRTMPlugin.CONTOUR_DENSITY_ATTR;
|
import static net.osmand.plus.srtmplugin.SRTMPlugin.CONTOUR_DENSITY_ATTR;
|
||||||
import static net.osmand.plus.srtmplugin.SRTMPlugin.CONTOUR_LINES_ATTR;
|
import static net.osmand.plus.srtmplugin.SRTMPlugin.CONTOUR_LINES_ATTR;
|
||||||
import static net.osmand.plus.srtmplugin.SRTMPlugin.CONTOUR_LINES_SCHEME_ATTR;
|
import static net.osmand.plus.srtmplugin.SRTMPlugin.CONTOUR_LINES_SCHEME_ATTR;
|
||||||
|
@ -80,6 +101,7 @@ public class ConfigureMapMenu {
|
||||||
public static final String CURRENT_TRACK_WIDTH_ATTR = "currentTrackWidth";
|
public static final String CURRENT_TRACK_WIDTH_ATTR = "currentTrackWidth";
|
||||||
public static final String COLOR_ATTR = "color";
|
public static final String COLOR_ATTR = "color";
|
||||||
public static final String ROAD_STYLE_ATTR = "roadStyle";
|
public static final String ROAD_STYLE_ATTR = "roadStyle";
|
||||||
|
|
||||||
private int hikingRouteOSMCValue;
|
private int hikingRouteOSMCValue;
|
||||||
private int selectedLanguageIndex;
|
private int selectedLanguageIndex;
|
||||||
private boolean transliterateNames;
|
private boolean transliterateNames;
|
||||||
|
@ -93,6 +115,7 @@ public class ConfigureMapMenu {
|
||||||
ContextMenuAdapter adapter = new ContextMenuAdapter();
|
ContextMenuAdapter adapter = new ContextMenuAdapter();
|
||||||
adapter.setDefaultLayoutId(R.layout.list_item_icon_and_menu);
|
adapter.setDefaultLayoutId(R.layout.list_item_icon_and_menu);
|
||||||
adapter.addItem(new ContextMenuItem.ItemBuilder()
|
adapter.addItem(new ContextMenuItem.ItemBuilder()
|
||||||
|
.setId(APP_PROFILES_ID)
|
||||||
.setTitleId(R.string.app_modes_choose, ma)
|
.setTitleId(R.string.app_modes_choose, ma)
|
||||||
.setLayout(R.layout.mode_toggles).createItem());
|
.setLayout(R.layout.mode_toggles).createItem());
|
||||||
adapter.setChangeAppModeListener(new OnClickListener() {
|
adapter.setChangeAppModeListener(new OnClickListener() {
|
||||||
|
@ -251,11 +274,13 @@ public class ConfigureMapMenu {
|
||||||
final OsmandSettings settings = app.getSettings();
|
final OsmandSettings settings = app.getSettings();
|
||||||
LayerMenuListener l = new LayerMenuListener(activity, adapter);
|
LayerMenuListener l = new LayerMenuListener(activity, adapter);
|
||||||
adapter.addItem(new ContextMenuItem.ItemBuilder()
|
adapter.addItem(new ContextMenuItem.ItemBuilder()
|
||||||
|
.setId(SHOW_CATEGORY_ID)
|
||||||
.setTitleId(R.string.shared_string_show, activity)
|
.setTitleId(R.string.shared_string_show, activity)
|
||||||
.setCategory(true).setLayout(R.layout.list_group_title_with_switch).createItem());
|
.setCategory(true).setLayout(R.layout.list_group_title_with_switch).createItem());
|
||||||
// String appMode = " [" + settings.getApplicationMode().toHumanString(view.getApplication()) +"] ";
|
// String appMode = " [" + settings.getApplicationMode().toHumanString(view.getApplication()) +"] ";
|
||||||
boolean selected = settings.SHOW_FAVORITES.get();
|
boolean selected = settings.SHOW_FAVORITES.get();
|
||||||
adapter.addItem(new ContextMenuItem.ItemBuilder()
|
adapter.addItem(new ContextMenuItem.ItemBuilder()
|
||||||
|
.setId(FAVORITES_ID)
|
||||||
.setTitleId(R.string.shared_string_favorites, activity)
|
.setTitleId(R.string.shared_string_favorites, activity)
|
||||||
.setSelected(settings.SHOW_FAVORITES.get())
|
.setSelected(settings.SHOW_FAVORITES.get())
|
||||||
.setColor(selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
.setColor(selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
||||||
|
@ -263,6 +288,7 @@ public class ConfigureMapMenu {
|
||||||
.setListener(l).createItem());
|
.setListener(l).createItem());
|
||||||
selected = app.getPoiFilters().isShowingAnyPoi();
|
selected = app.getPoiFilters().isShowingAnyPoi();
|
||||||
adapter.addItem(new ContextMenuItem.ItemBuilder()
|
adapter.addItem(new ContextMenuItem.ItemBuilder()
|
||||||
|
.setId(POI_OVERLAY_ID)
|
||||||
.setTitleId(R.string.layer_poi, activity)
|
.setTitleId(R.string.layer_poi, activity)
|
||||||
.setSelected(selected)
|
.setSelected(selected)
|
||||||
.setDescription(app.getPoiFilters().getSelectedPoiFiltersName())
|
.setDescription(app.getPoiFilters().getSelectedPoiFiltersName())
|
||||||
|
@ -272,6 +298,7 @@ public class ConfigureMapMenu {
|
||||||
.setListener(l).createItem());
|
.setListener(l).createItem());
|
||||||
selected = settings.SHOW_POI_LABEL.get();
|
selected = settings.SHOW_POI_LABEL.get();
|
||||||
adapter.addItem(new ContextMenuItem.ItemBuilder()
|
adapter.addItem(new ContextMenuItem.ItemBuilder()
|
||||||
|
.setId(POI_OVERLAY_LABELS_ID)
|
||||||
.setTitleId(R.string.layer_amenity_label, activity)
|
.setTitleId(R.string.layer_amenity_label, activity)
|
||||||
.setSelected(settings.SHOW_POI_LABEL.get())
|
.setSelected(settings.SHOW_POI_LABEL.get())
|
||||||
.setColor(selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
.setColor(selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
||||||
|
@ -308,6 +335,7 @@ public class ConfigureMapMenu {
|
||||||
}
|
}
|
||||||
final boolean transportSelected = selected;
|
final boolean transportSelected = selected;
|
||||||
adapter.addItem(new ContextMenuItem.ItemBuilder()
|
adapter.addItem(new ContextMenuItem.ItemBuilder()
|
||||||
|
.setId(TRANSPORT_ID)
|
||||||
.setTitleId(R.string.rendering_category_transport, activity)
|
.setTitleId(R.string.rendering_category_transport, activity)
|
||||||
.setIcon(R.drawable.ic_action_bus_dark)
|
.setIcon(R.drawable.ic_action_bus_dark)
|
||||||
.setSecondaryIcon(R.drawable.ic_action_additional_option)
|
.setSecondaryIcon(R.drawable.ic_action_additional_option)
|
||||||
|
@ -459,6 +487,7 @@ public class ConfigureMapMenu {
|
||||||
}).createItem());
|
}).createItem());
|
||||||
selected = app.getSelectedGpxHelper().isShowingAnyGpxFiles();
|
selected = app.getSelectedGpxHelper().isShowingAnyGpxFiles();
|
||||||
adapter.addItem(new ContextMenuItem.ItemBuilder()
|
adapter.addItem(new ContextMenuItem.ItemBuilder()
|
||||||
|
.setId(GPX_FILES_ID)
|
||||||
.setTitleId(R.string.layer_gpx_layer, activity)
|
.setTitleId(R.string.layer_gpx_layer, activity)
|
||||||
.setSelected(app.getSelectedGpxHelper().isShowingAnyGpxFiles())
|
.setSelected(app.getSelectedGpxHelper().isShowingAnyGpxFiles())
|
||||||
.setDescription(app.getSelectedGpxHelper().getGpxDescription())
|
.setDescription(app.getSelectedGpxHelper().getGpxDescription())
|
||||||
|
@ -469,6 +498,7 @@ public class ConfigureMapMenu {
|
||||||
|
|
||||||
selected = settings.SHOW_MAP_MARKERS.get();
|
selected = settings.SHOW_MAP_MARKERS.get();
|
||||||
adapter.addItem(new ContextMenuItem.ItemBuilder()
|
adapter.addItem(new ContextMenuItem.ItemBuilder()
|
||||||
|
.setId(MAP_MARKERS_ID)
|
||||||
.setTitleId(R.string.map_markers, activity)
|
.setTitleId(R.string.map_markers, activity)
|
||||||
.setSelected(selected)
|
.setSelected(selected)
|
||||||
.setColor(selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
.setColor(selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
||||||
|
@ -476,13 +506,13 @@ public class ConfigureMapMenu {
|
||||||
.setListener(l).createItem());
|
.setListener(l).createItem());
|
||||||
|
|
||||||
adapter.addItem(new ContextMenuItem.ItemBuilder()
|
adapter.addItem(new ContextMenuItem.ItemBuilder()
|
||||||
|
.setId(MAP_SOURCE_ID)
|
||||||
.setTitleId(R.string.layer_map, activity)
|
.setTitleId(R.string.layer_map, activity)
|
||||||
.setIcon(R.drawable.ic_world_globe_dark)
|
.setIcon(R.drawable.ic_world_globe_dark)
|
||||||
.setDescription(settings.MAP_ONLINE_DATA.get() ? settings.MAP_TILE_SOURCES.get() : null)
|
.setDescription(settings.MAP_ONLINE_DATA.get() ? settings.MAP_TILE_SOURCES.get() : null)
|
||||||
.setListener(l).createItem());
|
.setListener(l).createItem());
|
||||||
|
|
||||||
OsmandPlugin.registerLayerContextMenu(activity.getMapView(), adapter, activity);
|
OsmandPlugin.registerLayerContextMenu(activity.getMapView(), adapter, activity);
|
||||||
app.getAppCustomization().prepareLayerContextMenu(activity, adapter);
|
|
||||||
boolean srtmDisabled = OsmandPlugin.getEnabledPlugin(SRTMPlugin.class) == null
|
boolean srtmDisabled = OsmandPlugin.getEnabledPlugin(SRTMPlugin.class) == null
|
||||||
&& !InAppPurchaseHelper.isSubscribedToLiveUpdates(app);
|
&& !InAppPurchaseHelper.isSubscribedToLiveUpdates(app);
|
||||||
if (srtmDisabled) {
|
if (srtmDisabled) {
|
||||||
|
@ -502,8 +532,10 @@ public class ConfigureMapMenu {
|
||||||
private void createRenderingAttributeItems(List<RenderingRuleProperty> customRules,
|
private void createRenderingAttributeItems(List<RenderingRuleProperty> customRules,
|
||||||
final ContextMenuAdapter adapter, final MapActivity activity) {
|
final ContextMenuAdapter adapter, final MapActivity activity) {
|
||||||
adapter.addItem(new ContextMenuItem.ItemBuilder().setTitleId(R.string.map_widget_map_rendering, activity)
|
adapter.addItem(new ContextMenuItem.ItemBuilder().setTitleId(R.string.map_widget_map_rendering, activity)
|
||||||
|
.setId(MAP_RENDERING_CATEGORY_ID)
|
||||||
.setCategory(true).setLayout(R.layout.list_group_title_with_switch).createItem());
|
.setCategory(true).setLayout(R.layout.list_group_title_with_switch).createItem());
|
||||||
adapter.addItem(new ContextMenuItem.ItemBuilder().setTitleId(R.string.map_widget_renderer, activity)
|
adapter.addItem(new ContextMenuItem.ItemBuilder().setTitleId(R.string.map_widget_renderer, activity)
|
||||||
|
.setId(MAP_STYLE_ID)
|
||||||
.setDescription(getRenderDescr(activity)).setLayout(R.layout.list_item_single_line_descrition_narrow)
|
.setDescription(getRenderDescr(activity)).setLayout(R.layout.list_item_single_line_descrition_narrow)
|
||||||
.setIcon(R.drawable.ic_map).setListener(new ContextMenuAdapter.ItemClickListener() {
|
.setIcon(R.drawable.ic_map).setListener(new ContextMenuAdapter.ItemClickListener() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -516,6 +548,7 @@ public class ConfigureMapMenu {
|
||||||
}).createItem());
|
}).createItem());
|
||||||
|
|
||||||
adapter.addItem(new ContextMenuItem.ItemBuilder().setTitleId(R.string.map_mode, activity)
|
adapter.addItem(new ContextMenuItem.ItemBuilder().setTitleId(R.string.map_mode, activity)
|
||||||
|
.setId(MAP_MODE_ID)
|
||||||
.setDescription(getDayNightDescr(activity)).setLayout(R.layout.list_item_single_line_descrition_narrow)
|
.setDescription(getDayNightDescr(activity)).setLayout(R.layout.list_item_single_line_descrition_narrow)
|
||||||
.setIcon(getDayNightIcon(activity)).setListener(new ItemClickListener() {
|
.setIcon(getDayNightIcon(activity)).setListener(new ItemClickListener() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -548,6 +581,7 @@ public class ConfigureMapMenu {
|
||||||
}).createItem());
|
}).createItem());
|
||||||
|
|
||||||
adapter.addItem(new ContextMenuItem.ItemBuilder()
|
adapter.addItem(new ContextMenuItem.ItemBuilder()
|
||||||
|
.setId(MAP_MAGNIFIER_ID)
|
||||||
.setTitleId(R.string.map_magnifier, activity)
|
.setTitleId(R.string.map_magnifier, activity)
|
||||||
.setDescription(
|
.setDescription(
|
||||||
String.format(Locale.UK, "%.0f",
|
String.format(Locale.UK, "%.0f",
|
||||||
|
@ -609,12 +643,13 @@ public class ConfigureMapMenu {
|
||||||
}).createItem());
|
}).createItem());
|
||||||
|
|
||||||
ContextMenuItem props;
|
ContextMenuItem props;
|
||||||
props = createRenderingProperty(customRules, adapter, activity, R.drawable.ic_action_intersection, ROAD_STYLE_ATTR);
|
props = createRenderingProperty(customRules, adapter, activity, R.drawable.ic_action_intersection, ROAD_STYLE_ATTR, ROAD_STYLE_ID);
|
||||||
if (props != null) {
|
if (props != null) {
|
||||||
adapter.addItem(props);
|
adapter.addItem(props);
|
||||||
}
|
}
|
||||||
|
|
||||||
adapter.addItem(new ContextMenuItem.ItemBuilder().setTitleId(R.string.text_size, activity)
|
adapter.addItem(new ContextMenuItem.ItemBuilder().setTitleId(R.string.text_size, activity)
|
||||||
|
.setId(TEXT_SIZE_ID)
|
||||||
.setDescription(getScale(activity)).setLayout(R.layout.list_item_single_line_descrition_narrow)
|
.setDescription(getScale(activity)).setLayout(R.layout.list_item_single_line_descrition_narrow)
|
||||||
.setIcon(R.drawable.ic_action_map_text_size).setListener(new ContextMenuAdapter.ItemClickListener() {
|
.setIcon(R.drawable.ic_action_map_text_size).setListener(new ContextMenuAdapter.ItemClickListener() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -653,6 +688,7 @@ public class ConfigureMapMenu {
|
||||||
localeDescr = localeDescr == null || localeDescr.equals("") ? activity.getString(R.string.local_map_names)
|
localeDescr = localeDescr == null || localeDescr.equals("") ? activity.getString(R.string.local_map_names)
|
||||||
: localeDescr;
|
: localeDescr;
|
||||||
adapter.addItem(new ContextMenuItem.ItemBuilder().setTitleId(R.string.map_locale, activity)
|
adapter.addItem(new ContextMenuItem.ItemBuilder().setTitleId(R.string.map_locale, activity)
|
||||||
|
.setId(MAP_LANGUAGE_ID)
|
||||||
.setDescription(localeDescr).setLayout(R.layout.list_item_single_line_descrition_narrow)
|
.setDescription(localeDescr).setLayout(R.layout.list_item_single_line_descrition_narrow)
|
||||||
.setIcon(R.drawable.ic_action_map_language)
|
.setIcon(R.drawable.ic_action_map_language)
|
||||||
.setListener(new ContextMenuAdapter.ItemClickListener() {
|
.setListener(new ContextMenuAdapter.ItemClickListener() {
|
||||||
|
@ -743,17 +779,17 @@ public class ConfigureMapMenu {
|
||||||
}).createItem());
|
}).createItem());
|
||||||
|
|
||||||
props = createProperties(customRules, null, R.string.rendering_category_transport, R.drawable.ic_action_bus_dark,
|
props = createProperties(customRules, null, R.string.rendering_category_transport, R.drawable.ic_action_bus_dark,
|
||||||
"transport", null, adapter, activity, true);
|
"transport", null, adapter, activity, true, TRANSPORT_RENDERING_ID);
|
||||||
if (props != null) {
|
if (props != null) {
|
||||||
adapter.addItem(props);
|
adapter.addItem(props);
|
||||||
}
|
}
|
||||||
props = createProperties(customRules, null, R.string.rendering_category_details, R.drawable.ic_action_layers_dark,
|
props = createProperties(customRules, null, R.string.rendering_category_details, R.drawable.ic_action_layers_dark,
|
||||||
"details", null, adapter, activity, true);
|
"details", null, adapter, activity, true, DETAILS_ID);
|
||||||
if (props != null) {
|
if (props != null) {
|
||||||
adapter.addItem(props);
|
adapter.addItem(props);
|
||||||
}
|
}
|
||||||
props = createProperties(customRules, null, R.string.rendering_category_hide, R.drawable.ic_action_hide,
|
props = createProperties(customRules, null, R.string.rendering_category_hide, R.drawable.ic_action_hide,
|
||||||
"hide", null, adapter, activity, true);
|
"hide", null, adapter, activity, true, HIDE_ID);
|
||||||
if (props != null) {
|
if (props != null) {
|
||||||
adapter.addItem(props);
|
adapter.addItem(props);
|
||||||
}
|
}
|
||||||
|
@ -765,7 +801,7 @@ public class ConfigureMapMenu {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
props = createProperties(customRules, customRulesIncluded, R.string.rendering_category_routes, R.drawable.ic_action_map_routes,
|
props = createProperties(customRules, customRulesIncluded, R.string.rendering_category_routes, R.drawable.ic_action_map_routes,
|
||||||
"routes", null, adapter, activity, true);
|
"routes", null, adapter, activity, true, ROUTES_ID);
|
||||||
if (props != null) {
|
if (props != null) {
|
||||||
adapter.addItem(props);
|
adapter.addItem(props);
|
||||||
}
|
}
|
||||||
|
@ -827,7 +863,8 @@ public class ConfigureMapMenu {
|
||||||
final ListStringPreference defaultSettings,
|
final ListStringPreference defaultSettings,
|
||||||
final ContextMenuAdapter adapter,
|
final ContextMenuAdapter adapter,
|
||||||
final MapActivity activity,
|
final MapActivity activity,
|
||||||
final boolean useDescription) {
|
final boolean useDescription,
|
||||||
|
final String id) {
|
||||||
|
|
||||||
final List<RenderingRuleProperty> ps = new ArrayList<>();
|
final List<RenderingRuleProperty> ps = new ArrayList<>();
|
||||||
final List<OsmandSettings.CommonPreference<Boolean>> prefs = new ArrayList<>();
|
final List<OsmandSettings.CommonPreference<Boolean>> prefs = new ArrayList<>();
|
||||||
|
@ -883,6 +920,7 @@ public class ConfigureMapMenu {
|
||||||
|
|
||||||
};
|
};
|
||||||
ContextMenuItem.ItemBuilder builder = new ContextMenuItem.ItemBuilder().setTitleId(strId, activity)
|
ContextMenuItem.ItemBuilder builder = new ContextMenuItem.ItemBuilder().setTitleId(strId, activity)
|
||||||
|
.setId(id)
|
||||||
.setIcon(icon).setListener(clickListener);
|
.setIcon(icon).setListener(clickListener);
|
||||||
boolean selected = false;
|
boolean selected = false;
|
||||||
for (OsmandSettings.CommonPreference<Boolean> p : prefs) {
|
for (OsmandSettings.CommonPreference<Boolean> p : prefs) {
|
||||||
|
@ -1138,7 +1176,7 @@ public class ConfigureMapMenu {
|
||||||
List<RenderingRuleProperty> customRules) {
|
List<RenderingRuleProperty> customRules) {
|
||||||
for (final RenderingRuleProperty p : customRules) {
|
for (final RenderingRuleProperty p : customRules) {
|
||||||
if (isPropertyAccepted(p)) {
|
if (isPropertyAccepted(p)) {
|
||||||
adapter.addItem(createRenderingProperty(adapter, activity, 0, p));
|
adapter.addItem(createRenderingProperty(adapter, activity, 0, p, CUSTOM_RENDERING_ITEMS_ID_SCHEME + p.getName()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1155,17 +1193,17 @@ public class ConfigureMapMenu {
|
||||||
|
|
||||||
private ContextMenuItem createRenderingProperty(final List<RenderingRuleProperty> customRules,
|
private ContextMenuItem createRenderingProperty(final List<RenderingRuleProperty> customRules,
|
||||||
final ContextMenuAdapter adapter, final MapActivity activity,
|
final ContextMenuAdapter adapter, final MapActivity activity,
|
||||||
@DrawableRes final int icon, final String attrName) {
|
@DrawableRes final int icon, final String attrName, String id) {
|
||||||
for (final RenderingRuleProperty p : customRules) {
|
for (final RenderingRuleProperty p : customRules) {
|
||||||
if (p.getAttrName().equals(attrName)) {
|
if (p.getAttrName().equals(attrName)) {
|
||||||
return createRenderingProperty(adapter, activity, icon, p);
|
return createRenderingProperty(adapter, activity, icon, p, id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private ContextMenuItem createRenderingProperty(final ContextMenuAdapter adapter, final MapActivity activity,
|
private ContextMenuItem createRenderingProperty(final ContextMenuAdapter adapter, final MapActivity activity,
|
||||||
@DrawableRes final int icon, final RenderingRuleProperty p) {
|
@DrawableRes final int icon, final RenderingRuleProperty p, final String id) {
|
||||||
final OsmandMapTileView view = activity.getMapView();
|
final OsmandMapTileView view = activity.getMapView();
|
||||||
String propertyName = SettingsActivity.getStringPropertyName(view.getContext(), p.getAttrName(),
|
String propertyName = SettingsActivity.getStringPropertyName(view.getContext(), p.getAttrName(),
|
||||||
p.getName());
|
p.getName());
|
||||||
|
@ -1176,6 +1214,7 @@ public class ConfigureMapMenu {
|
||||||
final OsmandSettings.CommonPreference<Boolean> pref = view.getApplication().getSettings()
|
final OsmandSettings.CommonPreference<Boolean> pref = view.getApplication().getSettings()
|
||||||
.getCustomRenderBooleanProperty(p.getAttrName());
|
.getCustomRenderBooleanProperty(p.getAttrName());
|
||||||
return ContextMenuItem.createBuilder(propertyName)
|
return ContextMenuItem.createBuilder(propertyName)
|
||||||
|
.setId(id)
|
||||||
.setListener(new ContextMenuAdapter.ItemClickListener() {
|
.setListener(new ContextMenuAdapter.ItemClickListener() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1198,6 +1237,7 @@ public class ConfigureMapMenu {
|
||||||
p.getDefaultValueDescription());
|
p.getDefaultValueDescription());
|
||||||
}
|
}
|
||||||
ContextMenuItem.ItemBuilder builder = ContextMenuItem.createBuilder(propertyName)
|
ContextMenuItem.ItemBuilder builder = ContextMenuItem.createBuilder(propertyName)
|
||||||
|
.setId(id)
|
||||||
.setListener(new ContextMenuAdapter.ItemClickListener() {
|
.setListener(new ContextMenuAdapter.ItemClickListener() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -254,7 +254,6 @@ public class DownloadActivity extends AbstractDownloadActivity implements Downlo
|
||||||
protected void onResume() {
|
protected void onResume() {
|
||||||
super.onResume();
|
super.onResume();
|
||||||
initAppStatusVariables();
|
initAppStatusVariables();
|
||||||
getMyApplication().getAppCustomization().resumeActivity(DownloadActivity.class, this);
|
|
||||||
downloadThread.setUiActivity(this);
|
downloadThread.setUiActivity(this);
|
||||||
downloadInProgress();
|
downloadInProgress();
|
||||||
}
|
}
|
||||||
|
@ -283,7 +282,6 @@ public class DownloadActivity extends AbstractDownloadActivity implements Downlo
|
||||||
@Override
|
@Override
|
||||||
public void onPause() {
|
public void onPause() {
|
||||||
super.onPause();
|
super.onPause();
|
||||||
getMyApplication().getAppCustomization().pauseActivity(DownloadActivity.class);
|
|
||||||
downloadThread.resetUiActivity(this);
|
downloadThread.resetUiActivity(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -39,6 +39,7 @@ import java.text.MessageFormat;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static android.content.Intent.ACTION_VIEW;
|
import static android.content.Intent.ACTION_VIEW;
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.MAPILLARY;
|
||||||
|
|
||||||
public class MapillaryPlugin extends OsmandPlugin {
|
public class MapillaryPlugin extends OsmandPlugin {
|
||||||
public static final String ID = "osmand.mapillary";
|
public static final String ID = "osmand.mapillary";
|
||||||
|
@ -179,6 +180,7 @@ public class MapillaryPlugin extends OsmandPlugin {
|
||||||
settings.SHOW_MAPILLARY.set(false);
|
settings.SHOW_MAPILLARY.set(false);
|
||||||
}
|
}
|
||||||
adapter.addItem(new ContextMenuItem.ItemBuilder()
|
adapter.addItem(new ContextMenuItem.ItemBuilder()
|
||||||
|
.setId(MAPILLARY)
|
||||||
.setTitleId(R.string.mapillary, mapActivity)
|
.setTitleId(R.string.mapillary, mapActivity)
|
||||||
.setSelected(settings.SHOW_MAPILLARY.get())
|
.setSelected(settings.SHOW_MAPILLARY.get())
|
||||||
.setColor(settings.SHOW_MAPILLARY.get() ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
.setColor(settings.SHOW_MAPILLARY.get() ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
||||||
|
|
|
@ -47,6 +47,8 @@ import org.apache.commons.logging.Log;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.OSM_NOTES;
|
||||||
|
|
||||||
|
|
||||||
public class OsmEditingPlugin extends OsmandPlugin {
|
public class OsmEditingPlugin extends OsmandPlugin {
|
||||||
private static final Log LOG = PlatformUtil.getLog(OsmEditingPlugin.class);
|
private static final Log LOG = PlatformUtil.getLog(OsmEditingPlugin.class);
|
||||||
|
@ -292,6 +294,7 @@ public class OsmEditingPlugin extends OsmandPlugin {
|
||||||
@Override
|
@Override
|
||||||
public void registerLayerContextMenuActions(OsmandMapTileView mapView, ContextMenuAdapter adapter, final MapActivity mapActivity) {
|
public void registerLayerContextMenuActions(OsmandMapTileView mapView, ContextMenuAdapter adapter, final MapActivity mapActivity) {
|
||||||
adapter.addItem(new ContextMenuItem.ItemBuilder()
|
adapter.addItem(new ContextMenuItem.ItemBuilder()
|
||||||
|
.setId(OSM_NOTES)
|
||||||
.setTitleId(R.string.layer_osm_bugs, mapActivity)
|
.setTitleId(R.string.layer_osm_bugs, mapActivity)
|
||||||
.setSelected(settings.SHOW_OSM_BUGS.get())
|
.setSelected(settings.SHOW_OSM_BUGS.get())
|
||||||
.setIcon(R.drawable.ic_action_bug_dark)
|
.setIcon(R.drawable.ic_action_bug_dark)
|
||||||
|
|
|
@ -420,10 +420,6 @@ public class ParkingPositionPlugin extends OsmandPlugin {
|
||||||
}
|
}
|
||||||
clearParkingPosition();
|
clearParkingPosition();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void registerOptionsMenuItems(final MapActivity mapActivity, ContextMenuAdapter helper) {
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the control to be added on a MapInfoLayer
|
* @return the control to be added on a MapInfoLayer
|
||||||
|
|
|
@ -46,6 +46,9 @@ import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.OVERLAY_MAP;
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.UNDERLAY_MAP;
|
||||||
|
|
||||||
public class OsmandRasterMapsPlugin extends OsmandPlugin {
|
public class OsmandRasterMapsPlugin extends OsmandPlugin {
|
||||||
public static final String ID = "osmand.rastermaps";
|
public static final String ID = "osmand.rastermaps";
|
||||||
|
|
||||||
|
@ -323,6 +326,7 @@ public class OsmandRasterMapsPlugin extends OsmandPlugin {
|
||||||
boolean hasOverlayDescription = overlayMapDescr != null;
|
boolean hasOverlayDescription = overlayMapDescr != null;
|
||||||
overlayMapDescr = hasOverlayDescription ? overlayMapDescr : mapActivity.getString(R.string.shared_string_none);
|
overlayMapDescr = hasOverlayDescription ? overlayMapDescr : mapActivity.getString(R.string.shared_string_none);
|
||||||
adapter.addItem(new ContextMenuItem.ItemBuilder().setTitleId(R.string.layer_overlay, mapActivity)
|
adapter.addItem(new ContextMenuItem.ItemBuilder().setTitleId(R.string.layer_overlay, mapActivity)
|
||||||
|
.setId(OVERLAY_MAP)
|
||||||
.setDescription(overlayMapDescr)
|
.setDescription(overlayMapDescr)
|
||||||
.setSelected(hasOverlayDescription)
|
.setSelected(hasOverlayDescription)
|
||||||
.setColor(hasOverlayDescription ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
.setColor(hasOverlayDescription ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
||||||
|
@ -335,6 +339,7 @@ public class OsmandRasterMapsPlugin extends OsmandPlugin {
|
||||||
boolean hasUnderlayDescription = underlayMapDescr != null;
|
boolean hasUnderlayDescription = underlayMapDescr != null;
|
||||||
underlayMapDescr = hasUnderlayDescription ? underlayMapDescr : mapActivity.getString(R.string.shared_string_none);
|
underlayMapDescr = hasUnderlayDescription ? underlayMapDescr : mapActivity.getString(R.string.shared_string_none);
|
||||||
adapter.addItem(new ContextMenuItem.ItemBuilder().setTitleId(R.string.layer_underlay, mapActivity)
|
adapter.addItem(new ContextMenuItem.ItemBuilder().setTitleId(R.string.layer_underlay, mapActivity)
|
||||||
|
.setId(UNDERLAY_MAP)
|
||||||
.setDescription(underlayMapDescr)
|
.setDescription(underlayMapDescr)
|
||||||
.setSelected(hasUnderlayDescription)
|
.setSelected(hasUnderlayDescription)
|
||||||
.setColor(hasUnderlayDescription ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
.setColor(hasUnderlayDescription ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
||||||
|
|
|
@ -29,6 +29,9 @@ import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.CONTOUR_LINES;
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.HILLSHADE_LAYER;
|
||||||
|
|
||||||
public class SRTMPlugin extends OsmandPlugin {
|
public class SRTMPlugin extends OsmandPlugin {
|
||||||
|
|
||||||
public static final String ID = "osmand.srtm";
|
public static final String ID = "osmand.srtm";
|
||||||
|
@ -217,6 +220,7 @@ public class SRTMPlugin extends OsmandPlugin {
|
||||||
}
|
}
|
||||||
String descr = getPrefDescription(app, contourLinesProp, pref);
|
String descr = getPrefDescription(app, contourLinesProp, pref);
|
||||||
adapter.addItem(new ContextMenuItem.ItemBuilder()
|
adapter.addItem(new ContextMenuItem.ItemBuilder()
|
||||||
|
.setId(CONTOUR_LINES)
|
||||||
.setTitleId(R.string.srtm_plugin_name, mapActivity)
|
.setTitleId(R.string.srtm_plugin_name, mapActivity)
|
||||||
.setSelected(contourLinesSelected)
|
.setSelected(contourLinesSelected)
|
||||||
.setIcon(R.drawable.ic_plugin_srtm)
|
.setIcon(R.drawable.ic_plugin_srtm)
|
||||||
|
@ -227,6 +231,7 @@ public class SRTMPlugin extends OsmandPlugin {
|
||||||
.setListener(listener).createItem());
|
.setListener(listener).createItem());
|
||||||
}
|
}
|
||||||
adapter.addItem(new ContextMenuItem.ItemBuilder()
|
adapter.addItem(new ContextMenuItem.ItemBuilder()
|
||||||
|
.setId(HILLSHADE_LAYER)
|
||||||
.setTitleId(R.string.layer_hillshade, mapActivity)
|
.setTitleId(R.string.layer_hillshade, mapActivity)
|
||||||
.setSelected(HILLSHADE.get())
|
.setSelected(HILLSHADE.get())
|
||||||
.setColor(HILLSHADE.get() ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
.setColor(HILLSHADE.get() ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
||||||
|
|
|
@ -36,6 +36,7 @@ import net.osmand.core.android.MapRendererContext;
|
||||||
import net.osmand.data.LatLon;
|
import net.osmand.data.LatLon;
|
||||||
import net.osmand.data.PointDescription;
|
import net.osmand.data.PointDescription;
|
||||||
import net.osmand.data.RotatedTileBox;
|
import net.osmand.data.RotatedTileBox;
|
||||||
|
import net.osmand.plus.OsmAndAppCustomization;
|
||||||
import net.osmand.plus.OsmAndLocationProvider;
|
import net.osmand.plus.OsmAndLocationProvider;
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.OsmandPlugin;
|
import net.osmand.plus.OsmandPlugin;
|
||||||
|
@ -61,6 +62,15 @@ import java.util.List;
|
||||||
|
|
||||||
import gnu.trove.list.array.TIntArrayList;
|
import gnu.trove.list.array.TIntArrayList;
|
||||||
|
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.BACK_TO_LOC_HUD_ID;
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.COMPASS_HUD_ID;
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.LAYERS_HUD_ID;
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.MENU_HUD_ID;
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.QUICK_SEARCH_HUD_ID;
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.ROUTE_PLANNING_HUD_ID;
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.ZOOM_IN_HUD_ID;
|
||||||
|
import static net.osmand.plus.OsmAndCustomizationConstants.ZOOM_OUT_HUD_ID;
|
||||||
|
|
||||||
public class MapControlsLayer extends OsmandMapLayer {
|
public class MapControlsLayer extends OsmandMapLayer {
|
||||||
|
|
||||||
private static final int TIMEOUT_TO_SHOW_BUTTONS = 7000;
|
private static final int TIMEOUT_TO_SHOW_BUTTONS = 7000;
|
||||||
|
@ -68,10 +78,11 @@ public class MapControlsLayer extends OsmandMapLayer {
|
||||||
private static final int REQUEST_LOCATION_FOR_NAVIGATION_FAB_PERMISSION = 201;
|
private static final int REQUEST_LOCATION_FOR_NAVIGATION_FAB_PERMISSION = 201;
|
||||||
private static final int REQUEST_LOCATION_FOR_ADD_DESTINATION_PERMISSION = 202;
|
private static final int REQUEST_LOCATION_FOR_ADD_DESTINATION_PERMISSION = 202;
|
||||||
|
|
||||||
public MapHudButton createHudButton(View iv, int resId) {
|
public MapHudButton createHudButton(View iv, int resId, String id) {
|
||||||
MapHudButton mc = new MapHudButton();
|
MapHudButton mc = new MapHudButton();
|
||||||
mc.iv = iv;
|
mc.iv = iv;
|
||||||
mc.resId = resId;
|
mc.resId = resId;
|
||||||
|
mc.id = id;
|
||||||
return mc;
|
return mc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -97,6 +108,7 @@ public class MapControlsLayer extends OsmandMapLayer {
|
||||||
private TextView zoomText;
|
private TextView zoomText;
|
||||||
private OsmandMapTileView mapView;
|
private OsmandMapTileView mapView;
|
||||||
private OsmandApplication app;
|
private OsmandApplication app;
|
||||||
|
private OsmAndAppCustomization appCustomization;
|
||||||
private MapHudButton routePlanningBtn;
|
private MapHudButton routePlanningBtn;
|
||||||
private long touchEvent;
|
private long touchEvent;
|
||||||
private MapHudButton mapZoomOut;
|
private MapHudButton mapZoomOut;
|
||||||
|
@ -112,6 +124,7 @@ public class MapControlsLayer extends OsmandMapLayer {
|
||||||
public MapControlsLayer(MapActivity activity) {
|
public MapControlsLayer(MapActivity activity) {
|
||||||
this.mapActivity = activity;
|
this.mapActivity = activity;
|
||||||
app = activity.getMyApplication();
|
app = activity.getMyApplication();
|
||||||
|
appCustomization = app.getAppCustomization();
|
||||||
settings = activity.getMyApplication().getSettings();
|
settings = activity.getMyApplication().getSettings();
|
||||||
mapView = mapActivity.getMapView();
|
mapView = mapActivity.getMapView();
|
||||||
contextMenuLayer = mapActivity.getMapLayers().getContextMenuLayer();
|
contextMenuLayer = mapActivity.getMapLayers().getContextMenuLayer();
|
||||||
|
@ -246,7 +259,7 @@ public class MapControlsLayer extends OsmandMapLayer {
|
||||||
|
|
||||||
private void initTopControls() {
|
private void initTopControls() {
|
||||||
View configureMap = mapActivity.findViewById(R.id.map_layers_button);
|
View configureMap = mapActivity.findViewById(R.id.map_layers_button);
|
||||||
layersHud = createHudButton(configureMap, R.drawable.map_world_globe_dark)
|
layersHud = createHudButton(configureMap, R.drawable.map_world_globe_dark, LAYERS_HUD_ID)
|
||||||
.setIconColorId(R.color.on_map_icon_color, 0)
|
.setIconColorId(R.color.on_map_icon_color, 0)
|
||||||
.setBg(R.drawable.btn_inset_circle_trans, R.drawable.btn_inset_circle_night);
|
.setBg(R.drawable.btn_inset_circle_trans, R.drawable.btn_inset_circle_night);
|
||||||
controls.add(layersHud);
|
controls.add(layersHud);
|
||||||
|
@ -259,7 +272,7 @@ public class MapControlsLayer extends OsmandMapLayer {
|
||||||
});
|
});
|
||||||
|
|
||||||
View compass = mapActivity.findViewById(R.id.map_compass_button);
|
View compass = mapActivity.findViewById(R.id.map_compass_button);
|
||||||
compassHud = createHudButton(compass, R.drawable.map_compass).setIconColorId(0).
|
compassHud = createHudButton(compass, R.drawable.map_compass, COMPASS_HUD_ID).setIconColorId(0).
|
||||||
setBg(R.drawable.btn_inset_circle_trans, R.drawable.btn_inset_circle_night);
|
setBg(R.drawable.btn_inset_circle_trans, R.drawable.btn_inset_circle_night);
|
||||||
compassHud.compass = true;
|
compassHud.compass = true;
|
||||||
controls.add(compassHud);
|
controls.add(compassHud);
|
||||||
|
@ -271,7 +284,7 @@ public class MapControlsLayer extends OsmandMapLayer {
|
||||||
});
|
});
|
||||||
|
|
||||||
View search = mapActivity.findViewById(R.id.map_search_button);
|
View search = mapActivity.findViewById(R.id.map_search_button);
|
||||||
quickSearchHud = createHudButton(search, R.drawable.map_search_dark)
|
quickSearchHud = createHudButton(search, R.drawable.map_search_dark, QUICK_SEARCH_HUD_ID)
|
||||||
.setIconsId(R.drawable.map_search_dark, R.drawable.map_search_night)
|
.setIconsId(R.drawable.map_search_dark, R.drawable.map_search_night)
|
||||||
.setIconColorId(0)
|
.setIconColorId(0)
|
||||||
.setBg(R.drawable.btn_inset_circle_trans, R.drawable.btn_inset_circle_night);
|
.setBg(R.drawable.btn_inset_circle_trans, R.drawable.btn_inset_circle_night);
|
||||||
|
@ -389,7 +402,7 @@ public class MapControlsLayer extends OsmandMapLayer {
|
||||||
|
|
||||||
private void initControls() {
|
private void initControls() {
|
||||||
View backToLocation = mapActivity.findViewById(R.id.map_my_location_button);
|
View backToLocation = mapActivity.findViewById(R.id.map_my_location_button);
|
||||||
backToLocationControl = createHudButton(backToLocation, R.drawable.map_my_location)
|
backToLocationControl = createHudButton(backToLocation, R.drawable.map_my_location, BACK_TO_LOC_HUD_ID)
|
||||||
.setBg(R.drawable.btn_circle_blue);
|
.setBg(R.drawable.btn_circle_blue);
|
||||||
controls.add(backToLocationControl);
|
controls.add(backToLocationControl);
|
||||||
|
|
||||||
|
@ -409,7 +422,7 @@ public class MapControlsLayer extends OsmandMapLayer {
|
||||||
|
|
||||||
final boolean dash = settings.SHOW_DASHBOARD_ON_MAP_SCREEN.get();
|
final boolean dash = settings.SHOW_DASHBOARD_ON_MAP_SCREEN.get();
|
||||||
menuControl = createHudButton(backToMenuButton,
|
menuControl = createHudButton(backToMenuButton,
|
||||||
!dash ? R.drawable.map_drawer : R.drawable.map_dashboard).setBg(
|
!dash ? R.drawable.map_drawer : R.drawable.map_dashboard, MENU_HUD_ID).setBg(
|
||||||
R.drawable.btn_round, R.drawable.btn_round_night);
|
R.drawable.btn_round, R.drawable.btn_round_night);
|
||||||
controls.add(menuControl);
|
controls.add(menuControl);
|
||||||
backToMenuButton.setOnClickListener(new View.OnClickListener() {
|
backToMenuButton.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@ -426,7 +439,7 @@ public class MapControlsLayer extends OsmandMapLayer {
|
||||||
zoomText = (TextView) mapActivity.findViewById(R.id.map_app_mode_text);
|
zoomText = (TextView) mapActivity.findViewById(R.id.map_app_mode_text);
|
||||||
|
|
||||||
View routePlanButton = mapActivity.findViewById(R.id.map_route_info_button);
|
View routePlanButton = mapActivity.findViewById(R.id.map_route_info_button);
|
||||||
routePlanningBtn = createHudButton(routePlanButton, R.drawable.map_directions).setBg(
|
routePlanningBtn = createHudButton(routePlanButton, R.drawable.map_directions, ROUTE_PLANNING_HUD_ID).setBg(
|
||||||
R.drawable.btn_round, R.drawable.btn_round_night);
|
R.drawable.btn_round, R.drawable.btn_round_night);
|
||||||
controls.add(routePlanningBtn);
|
controls.add(routePlanningBtn);
|
||||||
routePlanButton.setOnClickListener(new View.OnClickListener() {
|
routePlanButton.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@ -634,7 +647,7 @@ public class MapControlsLayer extends OsmandMapLayer {
|
||||||
private void initZooms() {
|
private void initZooms() {
|
||||||
final OsmandMapTileView view = mapActivity.getMapView();
|
final OsmandMapTileView view = mapActivity.getMapView();
|
||||||
View zoomInButton = mapActivity.findViewById(R.id.map_zoom_in_button);
|
View zoomInButton = mapActivity.findViewById(R.id.map_zoom_in_button);
|
||||||
mapZoomIn = createHudButton(zoomInButton, R.drawable.map_zoom_in).
|
mapZoomIn = createHudButton(zoomInButton, R.drawable.map_zoom_in, ZOOM_IN_HUD_ID).
|
||||||
setIconsId(R.drawable.map_zoom_in, R.drawable.map_zoom_in_night).setRoundTransparent();
|
setIconsId(R.drawable.map_zoom_in, R.drawable.map_zoom_in_night).setRoundTransparent();
|
||||||
controls.add(mapZoomIn);
|
controls.add(mapZoomIn);
|
||||||
zoomInButton.setOnClickListener(new View.OnClickListener() {
|
zoomInButton.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@ -653,7 +666,7 @@ public class MapControlsLayer extends OsmandMapLayer {
|
||||||
final View.OnLongClickListener listener = MapControlsLayer.getOnClickMagnifierListener(view);
|
final View.OnLongClickListener listener = MapControlsLayer.getOnClickMagnifierListener(view);
|
||||||
zoomInButton.setOnLongClickListener(listener);
|
zoomInButton.setOnLongClickListener(listener);
|
||||||
View zoomOutButton = mapActivity.findViewById(R.id.map_zoom_out_button);
|
View zoomOutButton = mapActivity.findViewById(R.id.map_zoom_out_button);
|
||||||
mapZoomOut = createHudButton(zoomOutButton, R.drawable.map_zoom_out).
|
mapZoomOut = createHudButton(zoomOutButton, R.drawable.map_zoom_out, ZOOM_OUT_HUD_ID).
|
||||||
setIconsId(R.drawable.map_zoom_out, R.drawable.map_zoom_out_night).setRoundTransparent();
|
setIconsId(R.drawable.map_zoom_out, R.drawable.map_zoom_out_night).setRoundTransparent();
|
||||||
controls.add(mapZoomOut);
|
controls.add(mapZoomOut);
|
||||||
zoomOutButton.setOnClickListener(new View.OnClickListener() {
|
zoomOutButton.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@ -1035,6 +1048,7 @@ public class MapControlsLayer extends OsmandMapLayer {
|
||||||
int resDarkId;
|
int resDarkId;
|
||||||
int resClrLight = R.color.icon_color;
|
int resClrLight = R.color.icon_color;
|
||||||
int resClrDark = 0;
|
int resClrDark = 0;
|
||||||
|
String id;
|
||||||
|
|
||||||
boolean nightMode = false;
|
boolean nightMode = false;
|
||||||
boolean f = true;
|
boolean f = true;
|
||||||
|
@ -1094,6 +1108,9 @@ public class MapControlsLayer extends OsmandMapLayer {
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean updateVisibility(boolean visible) {
|
public boolean updateVisibility(boolean visible) {
|
||||||
|
if (visible) {
|
||||||
|
visible = appCustomization.isFeatureEnabled(id);
|
||||||
|
}
|
||||||
if (!compassOutside && visible != (iv.getVisibility() == View.VISIBLE)) {
|
if (!compassOutside && visible != (iv.getVisibility() == View.VISIBLE)) {
|
||||||
if (visible) {
|
if (visible) {
|
||||||
if (hideAnimator != null) {
|
if (hideAnimator != null) {
|
||||||
|
|
Loading…
Reference in a new issue