SHARE
TWEET

Untitled

Chumva Dec 3rd, 2019 84 in 2 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. public class ConnectedApp implements Comparable<ConnectedApp> {
  2.  
  3.         static final String PACK_KEY = "pack";
  4.         static final String ENABLED_KEY = "enabled";
  5.  
  6.         private OsmandApplication app;
  7.  
  8.         private Map<String, AidlMapWidgetWrapper> widgets = new ConcurrentHashMap<>();
  9.         private Map<String, TextInfoWidget> widgetControls = new ConcurrentHashMap<>();
  10.  
  11.         private Map<String, AidlMapLayerWrapper> layers = new ConcurrentHashMap<>();
  12.         private Map<String, OsmandMapLayer> mapLayers = new ConcurrentHashMap<>();
  13.  
  14.         private String pack;
  15.         private String name;
  16.  
  17.         private Drawable icon;
  18.  
  19.         private boolean enabled;
  20.  
  21.         ConnectedApp(OsmandApplication app, String pack, boolean enabled) {
  22.             this.app = app;
  23.             this.pack = pack;
  24.             this.enabled = enabled;
  25.         }
  26.  
  27.         public boolean isEnabled() {
  28.             return enabled;
  29.         }
  30.  
  31.         public String getName() {
  32.             return name;
  33.         }
  34.  
  35.         public String getPack() {
  36.             return pack;
  37.         }
  38.  
  39.         public Drawable getIcon() {
  40.             return icon;
  41.         }
  42.  
  43.         public void registerMapLayers(MapActivity mapActivity) {
  44.             for (AidlMapLayerWrapper layer : layers.values()) {
  45.                 OsmandMapLayer mapLayer = mapLayers.get(layer.getId());
  46.                 if (mapLayer != null) {
  47.                     mapActivity.getMapView().removeLayer(mapLayer);
  48.                 }
  49.                 mapLayer = new AidlMapLayer(mapActivity, layer, pack);
  50.                 mapActivity.getMapView().addLayer(mapLayer, layer.getZOrder());
  51.                 mapLayers.put(layer.getId(), mapLayer);
  52.             }
  53.         }
  54.  
  55.         public void registerLayerContextMenu(OsmandMapTileView mapView, ContextMenuAdapter adapter, MapActivity mapActivity) {
  56.             final CommonPreference<Boolean> layersPref = app.getSettings().registerBooleanPreference("layers_" + pack, true);
  57.  
  58.             ContextMenuAdapter.ItemClickListener listener = new ContextMenuAdapter.OnRowItemClick() {
  59.  
  60.                 @Override
  61.                 public boolean onRowItemClick(ArrayAdapter<ContextMenuItem> adapter, View view, int itemId, int position) {
  62.                     return true;
  63.                 }
  64.  
  65.                 @Override
  66.                 public boolean onContextMenuClick(ArrayAdapter<ContextMenuItem> adapter, int itemId,
  67.                                                   int position, boolean isChecked, int[] viewCoordinates) {
  68.                     layersPref.set(isChecked);
  69.                     return false;
  70.                 }
  71.             };
  72.             boolean layersEnabled = layersPref.get();
  73.             adapter.addItem(new ContextMenuItem.ItemBuilder()
  74.                     .setId(pack)
  75.                     .setTitle(pack)
  76.                     .setDescription(name)
  77.                     .setSelected(layersEnabled)
  78.                     .setColor(layersEnabled ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
  79.                     .setListener(listener)
  80.                     .createItem());
  81.         }
  82.  
  83.         @Override
  84.         public int compareTo(@NonNull ConnectedApp app) {
  85.             if (name != null && app.name != null) {
  86.                 return name.compareTo(app.name);
  87.             }
  88.             return 0;
  89.         }
  90.  
  91.         public void registerWidgetControls(MapActivity mapActivity) {
  92.             for (AidlMapWidgetWrapper widget : widgets.values()) {
  93.                 MapInfoLayer layer = mapActivity.getMapLayers().getMapInfoLayer();
  94.                 if (layer != null) {
  95.                     TextInfoWidget control = createWidgetControl(mapActivity, widget.getId());
  96.                     widgetControls.put(widget.getId(), control);
  97.                     int menuIconId = getDrawableId(mapActivity.getMyApplication(), widget.getMenuIconName());
  98.                     MapWidgetRegInfo widgetInfo = layer.registerSideWidget(control, menuIconId,
  99.                             widget.getMenuTitle(), "aidl_widget_" + widget.getId(), false, widget.getOrder());
  100.                     if (!mapActivity.getMapLayers().getMapWidgetRegistry().isVisible(widgetInfo.key)) {
  101.                         mapActivity.getMapLayers().getMapWidgetRegistry().setVisibility(widgetInfo, true, false);
  102.                     }
  103.                 }
  104.             }
  105.         }
  106.  
  107.         private TextInfoWidget createWidgetControl(final MapActivity mapActivity, final String widgetId) {
  108.             final TextInfoWidget control = new TextInfoWidget(mapActivity) {
  109.                 @Override
  110.                 public boolean updateInfo(DrawSettings drawSettings) {
  111.                     AidlMapWidgetWrapper widget = widgets.get(widgetId);
  112.                     if (widget != null) {
  113.                         String txt = widget.getText();
  114.                         String subtxt = widget.getDescription();
  115.                         boolean night = drawSettings != null && drawSettings.isNightMode();
  116.                         int icon = night ? getDrawableId(mapActivity.getMyApplication(), widget.getDarkIconName()) : getDrawableId(mapActivity.getMyApplication(), widget.getLightIconName());
  117.                         setText(txt, subtxt);
  118.                         if (icon != 0) {
  119.                             setImageDrawable(icon);
  120.                         } else {
  121.                             setImageDrawable(null);
  122.                         }
  123.                         return true;
  124.                     }
  125.                     return false;
  126.                 }
  127.             };
  128.             control.updateInfo(null);
  129.  
  130.             control.setOnClickListener(new View.OnClickListener() {
  131.                 @Override
  132.                 public void onClick(View v) {
  133.                     AidlMapWidgetWrapper widget = widgets.get(widgetId);
  134.                     if (widget != null && widget.getIntentOnClick() != null) {
  135.                         app.startActivity(widget.getIntentOnClick());
  136.                     }
  137.                 }
  138.             });
  139.             return control;
  140.         }
  141.  
  142.         public boolean addMapWidget(AidlMapWidgetWrapper widget) {
  143.             if (widget != null) {
  144.                 if (widgets.containsKey(widget.getId())) {
  145.                     updateMapWidget(widget);
  146.                 } else {
  147.                     widgets.put(widget.getId(), widget);
  148.                     Intent intent = new Intent();
  149.                     intent.setAction(AIDL_ADD_MAP_WIDGET);
  150.                     intent.putExtra(AIDL_OBJECT_ID, widget.getId());
  151.                     app.sendBroadcast(intent);
  152.                 }
  153.                 refreshMap();
  154.                 return true;
  155.             }
  156.             return false;
  157.         }
  158.  
  159.         public boolean removeMapWidget(String widgetId) {
  160.             if (!Algorithms.isEmpty(widgetId) && widgets.containsKey(widgetId)) {
  161.                 widgets.remove(widgetId);
  162.                 Intent intent = new Intent();
  163.                 intent.setAction(AIDL_REMOVE_MAP_WIDGET);
  164.                 intent.putExtra(AIDL_OBJECT_ID, widgetId);
  165.                 app.sendBroadcast(intent);
  166.                 return true;
  167.             }
  168.             return false;
  169.         }
  170.  
  171.         public boolean updateMapWidget(AidlMapWidgetWrapper widget) {
  172.             if (widget != null && widgets.containsKey(widget.getId())) {
  173.                 widgets.put(widget.getId(), widget);
  174.                 refreshMap();
  175.                 return true;
  176.             }
  177.             return false;
  178.         }
  179.  
  180.         public boolean addMapLayer(AidlMapLayerWrapper layer) {
  181.             if (layer != null) {
  182.                 if (layers.containsKey(layer.getId())) {
  183.                     updateMapLayer(layer);
  184.                 } else {
  185.                     layers.put(layer.getId(), layer);
  186.                     Intent intent = new Intent();
  187.                     intent.setAction(AIDL_ADD_MAP_LAYER);
  188.                     intent.putExtra(AIDL_OBJECT_ID, layer.getId());
  189.                     intent.putExtra(AIDL_PACKAGE_NAME, pack);
  190.                     app.sendBroadcast(intent);
  191.                 }
  192.                 refreshMap();
  193.                 return true;
  194.             }
  195.             return false;
  196.         }
  197.  
  198.         public boolean removeMapLayer(String layerId) {
  199.             if (!Algorithms.isEmpty(layerId) && layers.containsKey(layerId)) {
  200.                 layers.remove(layerId);
  201.                 Intent intent = new Intent();
  202.                 intent.setAction(AIDL_REMOVE_MAP_LAYER);
  203.                 intent.putExtra(AIDL_OBJECT_ID, layerId);
  204.                 app.sendBroadcast(intent);
  205.                 return true;
  206.             }
  207.             return false;
  208.         }
  209.  
  210.         public boolean updateMapLayer(AidlMapLayerWrapper layer) {
  211.             if (layer != null) {
  212.                 AidlMapLayerWrapper existingLayer = layers.get(layer.getId());
  213.                 if (existingLayer != null) {
  214.                     for (AidlMapPointWrapper point : layer.getPoints()) {
  215.                         existingLayer.putPoint(point);
  216.                     }
  217.                     existingLayer.copyZoomBounds(layer);
  218.                     refreshMap();
  219.                     return true;
  220.                 }
  221.             }
  222.             return false;
  223.         }
  224.     }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top