Add plugin dependent items to custom plugins

This commit is contained in:
Vitaliy 2020-03-17 12:53:17 +02:00
parent dc5d22228b
commit 30a34b12a9
9 changed files with 108 additions and 62 deletions

View file

@ -1,14 +1,30 @@
package net.osmand.plus; package net.osmand.plus;
import net.osmand.map.ITileSource;
import net.osmand.plus.helpers.AvoidSpecificRoads;
import net.osmand.plus.poi.PoiUIFilter;
import net.osmand.plus.quickaction.QuickAction;
import org.json.JSONException; import org.json.JSONException;
import org.json.JSONObject; import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
public class CustomOsmandPlugin extends OsmandPlugin { public class CustomOsmandPlugin extends OsmandPlugin {
public String pluginId; public String pluginId;
public String name; public String name;
public String description; public String description;
public List<String> rendererNames = new ArrayList<>();
public List<String> routerNames = new ArrayList<>();
public List<ApplicationMode> appModes = new ArrayList<>();
public List<QuickAction> quickActions = new ArrayList<>();
public List<PoiUIFilter> poiUIFilters = new ArrayList<>();
public List<ITileSource> mapSources = new ArrayList<>();
public List<AvoidSpecificRoads.AvoidRoadInfo> avoidRoadInfos = new ArrayList<>();
public CustomOsmandPlugin(OsmandApplication app) { public CustomOsmandPlugin(OsmandApplication app) {
super(app); super(app);
} }
@ -62,4 +78,39 @@ public class CustomOsmandPlugin extends OsmandPlugin {
return json.toString(); return json.toString();
} }
@Override
public List<String> getRendererNames() {
return rendererNames;
}
@Override
public List<String> getRouterNames() {
return routerNames;
}
@Override
public List<ApplicationMode> getAddedAppModes() {
return appModes;
}
@Override
public List<QuickAction> getQuickActions() {
return quickActions;
}
@Override
public List<PoiUIFilter> getPoiUIFilters() {
return poiUIFilters;
}
@Override
public List<ITileSource> getMapSources() {
return mapSources;
}
@Override
public List<AvoidSpecificRoads.AvoidRoadInfo> getAvoidRoadInfos() {
return avoidRoadInfos;
}
} }

View file

@ -20,6 +20,7 @@ import net.osmand.IProgress;
import net.osmand.Location; import net.osmand.Location;
import net.osmand.PlatformUtil; import net.osmand.PlatformUtil;
import net.osmand.access.AccessibilityPlugin; import net.osmand.access.AccessibilityPlugin;
import net.osmand.map.ITileSource;
import net.osmand.plus.activities.MapActivity; import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.activities.TabActivity.TabItem; import net.osmand.plus.activities.TabActivity.TabItem;
import net.osmand.plus.api.SettingsAPI; import net.osmand.plus.api.SettingsAPI;
@ -29,6 +30,7 @@ import net.osmand.plus.development.OsmandDevelopmentPlugin;
import net.osmand.plus.dialogs.PluginDisabledBottomSheet; import net.osmand.plus.dialogs.PluginDisabledBottomSheet;
import net.osmand.plus.dialogs.PluginInstalledBottomSheetDialog; import net.osmand.plus.dialogs.PluginInstalledBottomSheetDialog;
import net.osmand.plus.download.IndexItem; import net.osmand.plus.download.IndexItem;
import net.osmand.plus.helpers.AvoidSpecificRoads;
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.mapillary.MapillaryPlugin; import net.osmand.plus.mapillary.MapillaryPlugin;
@ -37,6 +39,8 @@ import net.osmand.plus.myplaces.FavoritesActivity;
import net.osmand.plus.openseamapsplugin.NauticalMapsPlugin; import net.osmand.plus.openseamapsplugin.NauticalMapsPlugin;
import net.osmand.plus.osmedit.OsmEditingPlugin; import net.osmand.plus.osmedit.OsmEditingPlugin;
import net.osmand.plus.parkingpoint.ParkingPositionPlugin; import net.osmand.plus.parkingpoint.ParkingPositionPlugin;
import net.osmand.plus.poi.PoiUIFilter;
import net.osmand.plus.quickaction.QuickAction;
import net.osmand.plus.rastermaps.OsmandRasterMapsPlugin; import net.osmand.plus.rastermaps.OsmandRasterMapsPlugin;
import net.osmand.plus.settings.BaseSettingsFragment; import net.osmand.plus.settings.BaseSettingsFragment;
import net.osmand.plus.skimapsplugin.SkiMapsPlugin; import net.osmand.plus.skimapsplugin.SkiMapsPlugin;
@ -115,6 +119,12 @@ public abstract class OsmandPlugin {
* Initialize plugin runs just after creation * Initialize plugin runs just after creation
*/ */
public boolean init(@NonNull OsmandApplication app, @Nullable Activity activity) { public boolean init(@NonNull OsmandApplication app, @Nullable Activity activity) {
if (activity != null) {
// called from UI
for (ApplicationMode appMode: getAddedAppModes()) {
ApplicationMode.changeProfileAvailability(appMode, true, app);
}
}
return true; return true;
} }
@ -174,10 +184,29 @@ public abstract class OsmandPlugin {
return Collections.emptyList(); return Collections.emptyList();
} }
public List<QuickAction> getQuickActions() {
return Collections.emptyList();
}
public List<PoiUIFilter> getPoiUIFilters() {
return Collections.emptyList();
}
public List<ITileSource> getMapSources() {
return Collections.emptyList();
}
public List<AvoidSpecificRoads.AvoidRoadInfo> getAvoidRoadInfos() {
return Collections.emptyList();
}
/** /**
* Plugin was installed * Plugin was installed
*/ */
public void onInstall(@NonNull OsmandApplication app, @Nullable Activity activity) { public void onInstall(@NonNull OsmandApplication app, @Nullable Activity activity) {
for (ApplicationMode appMode: getAddedAppModes()) {
ApplicationMode.changeProfileAvailability(appMode, true, app);
}
showInstallDialog(activity); showInstallDialog(activity);
} }
@ -200,6 +229,9 @@ public abstract class OsmandPlugin {
} }
public void disable(OsmandApplication app) { public void disable(OsmandApplication app) {
for (ApplicationMode appMode: getAddedAppModes()) {
ApplicationMode.changeProfileAvailability(appMode, false, app);
}
} }
public String getHelpFileName() { public String getHelpFileName() {

View file

@ -809,6 +809,21 @@ public class ImportHelper {
if (!Algorithms.isEmpty(pluginItems)) { if (!Algorithms.isEmpty(pluginItems)) {
for (SettingsHelper.SettingsItem item : pluginItems) { for (SettingsHelper.SettingsItem item : pluginItems) {
item.setShouldReplace(true); item.setShouldReplace(true);
if (item instanceof SettingsHelper.QuickActionSettingsItem) {
plugin.quickActions = ((SettingsHelper.QuickActionSettingsItem) item).getItems();
}
if (item instanceof SettingsHelper.PoiUiFilterSettingsItem) {
plugin.poiUIFilters = ((SettingsHelper.PoiUiFilterSettingsItem) item).getItems();
}
if (item instanceof SettingsHelper.MapSourcesSettingsItem) {
plugin.mapSources = ((SettingsHelper.MapSourcesSettingsItem) item).getItems();
}
if (item instanceof SettingsHelper.AvoidRoadsSettingsItem) {
plugin.avoidRoadInfos = ((SettingsHelper.AvoidRoadsSettingsItem) item).getItems();
}
if (item instanceof SettingsHelper.ProfileSettingsItem) {
plugin.appModes.add(((SettingsHelper.ProfileSettingsItem) item).getAppMode());
}
} }
app.getSettingsHelper().importSettings(file, pluginItems, "", 1, new SettingsHelper.SettingsImportListener() { app.getSettingsHelper().importSettings(file, pluginItems, "", 1, new SettingsHelper.SettingsImportListener() {
@Override @Override

View file

@ -1,10 +1,5 @@
package net.osmand.plus.openseamapsplugin; package net.osmand.plus.openseamapsplugin;
import android.app.Activity;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import net.osmand.plus.ApplicationMode; import net.osmand.plus.ApplicationMode;
import net.osmand.plus.OsmandApplication; import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandPlugin; import net.osmand.plus.OsmandPlugin;
@ -23,12 +18,12 @@ public class NauticalMapsPlugin extends OsmandPlugin {
public NauticalMapsPlugin(OsmandApplication app) { public NauticalMapsPlugin(OsmandApplication app) {
super(app); super(app);
} }
@Override @Override
public int getLogoResourceId() { public int getLogoResourceId() {
return R.drawable.ic_plugin_nautical_map; return R.drawable.ic_plugin_nautical_map;
} }
@Override @Override
public int getAssetResourceName() { public int getAssetResourceName() {
return R.drawable.nautical_map; return R.drawable.nautical_map;
@ -59,21 +54,6 @@ public class NauticalMapsPlugin extends OsmandPlugin {
return "feature_articles/nautical-charts.html"; return "feature_articles/nautical-charts.html";
} }
@Override
public boolean init(@NonNull final OsmandApplication app, final Activity activity) {
if (activity != null) {
// called from UI
ApplicationMode.changeProfileAvailability(ApplicationMode.BOAT, true, app);
}
return true;
}
@Override
public void onInstall(@NonNull OsmandApplication app, @Nullable Activity activity) {
ApplicationMode.changeProfileAvailability(ApplicationMode.BOAT, true, app);
super.onInstall(app, activity);
}
@Override @Override
public List<ApplicationMode> getAddedAppModes() { public List<ApplicationMode> getAddedAppModes() {
return Collections.singletonList(ApplicationMode.BOAT); return Collections.singletonList(ApplicationMode.BOAT);
@ -89,12 +69,6 @@ public class NauticalMapsPlugin extends OsmandPlugin {
return Collections.singletonList("boat"); return Collections.singletonList("boat");
} }
@Override
public void disable(OsmandApplication app) {
super.disable(app);
ApplicationMode.changeProfileAvailability(ApplicationMode.BOAT, false, app);
}
@Override @Override
public String getId() { public String getId() {
return ID; return ID;

View file

@ -1,10 +1,5 @@
package net.osmand.plus.skimapsplugin; package net.osmand.plus.skimapsplugin;
import android.app.Activity;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import net.osmand.plus.ApplicationMode; import net.osmand.plus.ApplicationMode;
import net.osmand.plus.OsmandApplication; import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandPlugin; import net.osmand.plus.OsmandPlugin;
@ -58,21 +53,6 @@ public class SkiMapsPlugin extends OsmandPlugin {
return "feature_articles/ski-plugin.html"; return "feature_articles/ski-plugin.html";
} }
@Override
public boolean init(@NonNull final OsmandApplication app, final Activity activity) {
if (activity != null) {
// called from UI
ApplicationMode.changeProfileAvailability(ApplicationMode.SKI, true, app);
}
return true;
}
@Override
public void onInstall(@NonNull OsmandApplication app, @Nullable Activity activity) {
ApplicationMode.changeProfileAvailability(ApplicationMode.SKI, true, app);
super.onInstall(app, activity);
}
@Override @Override
public List<ApplicationMode> getAddedAppModes() { public List<ApplicationMode> getAddedAppModes() {
return Collections.singletonList(ApplicationMode.SKI); return Collections.singletonList(ApplicationMode.SKI);
@ -88,12 +68,6 @@ public class SkiMapsPlugin extends OsmandPlugin {
return Collections.singletonList("ski"); return Collections.singletonList("ski");
} }
@Override
public void disable(OsmandApplication app) {
super.disable(app);
ApplicationMode.changeProfileAvailability(ApplicationMode.SKI, false, app);
}
@Override @Override
public String getId() { public String getId() {
return ID; return ID;

View file

@ -1,8 +1,8 @@
apply plugin: 'com.android.application' apply plugin: 'com.android.application'
android { android {
compileSdkVersion 27 compileSdkVersion 28
buildToolsVersion "27.0.3" buildToolsVersion "28.0.3"
signingConfigs { signingConfigs {
development { development {

View file

@ -1,8 +1,8 @@
apply plugin: 'com.android.application' apply plugin: 'com.android.application'
android { android {
compileSdkVersion 27 compileSdkVersion 28
buildToolsVersion "27.0.3" buildToolsVersion "28.0.3"
signingConfigs { signingConfigs {
development { development {

View file

@ -1,8 +1,8 @@
apply plugin: 'com.android.application' apply plugin: 'com.android.application'
android { android {
compileSdkVersion 27 compileSdkVersion 28
buildToolsVersion "27.0.3" buildToolsVersion "28.0.3"
signingConfigs { signingConfigs {
development { development {

View file

@ -1,8 +1,8 @@
apply plugin: 'com.android.application' apply plugin: 'com.android.application'
android { android {
compileSdkVersion 27 compileSdkVersion 28
buildToolsVersion "27.0.3" buildToolsVersion "28.0.3"
signingConfigs { signingConfigs {
development { development {