Search in sources :

Example 86 with OsmandSettings

use of net.osmand.plus.OsmandSettings in project Osmand by osmandapp.

the class ContourLinesMenu method createLayersItems.

private static void createLayersItems(final ContextMenuAdapter contextMenuAdapter, final MapActivity mapActivity) {
    final OsmandApplication app = mapActivity.getMyApplication();
    final OsmandSettings settings = app.getSettings();
    final SRTMPlugin plugin = OsmandPlugin.getPlugin(SRTMPlugin.class);
    final boolean srtmEnabled = OsmandPlugin.getEnabledPlugin(SRTMPlugin.class) != null;
    final RenderingRuleProperty contourLinesProp = app.getRendererRegistry().getCustomRenderingRuleProperty(CONTOUR_LINES_ATTR);
    final RenderingRuleProperty colorSchemeProp = app.getRendererRegistry().getCustomRenderingRuleProperty(CONTOUR_LINES_SCHEME_ATTR);
    if (plugin == null || contourLinesProp == null || colorSchemeProp == null) {
        return;
    }
    final String contourWidthName;
    final String contourDensityName;
    final OsmandSettings.CommonPreference<String> widthPref;
    final OsmandSettings.CommonPreference<String> densityPref;
    final RenderingRuleProperty contourWidthProp = app.getRendererRegistry().getCustomRenderingRuleProperty(CONTOUR_WIDTH_ATTR);
    if (contourWidthProp != null) {
        contourWidthName = SettingsActivity.getStringPropertyName(app, contourWidthProp.getAttrName(), contourWidthProp.getName());
        widthPref = settings.getCustomRenderProperty(contourWidthProp.getAttrName());
    } else {
        contourWidthName = null;
        widthPref = null;
    }
    final RenderingRuleProperty contourDensityProp = app.getRendererRegistry().getCustomRenderingRuleProperty(CONTOUR_DENSITY_ATTR);
    if (contourDensityProp != null) {
        contourDensityName = SettingsActivity.getStringPropertyName(app, contourDensityProp.getAttrName(), contourDensityProp.getName());
        densityPref = settings.getCustomRenderProperty(contourDensityProp.getAttrName());
    } else {
        contourDensityName = null;
        densityPref = null;
    }
    final OsmandSettings.CommonPreference<String> pref = settings.getCustomRenderProperty(contourLinesProp.getAttrName());
    final OsmandSettings.CommonPreference<String> colorPref = settings.getCustomRenderProperty(colorSchemeProp.getAttrName());
    final boolean selected = !pref.get().equals(CONTOUR_LINES_DISABLED_VALUE);
    final int toggleActionStringId = selected ? R.string.shared_string_enabled : R.string.shared_string_disabled;
    final int showZoomLevelStringId = R.string.show_from_zoom_level;
    final int colorSchemeStringId = R.string.srtm_color_scheme;
    ContextMenuAdapter.OnRowItemClick l = new ContextMenuAdapter.OnRowItemClick() {

        @Override
        public boolean onRowItemClick(ArrayAdapter<ContextMenuItem> adapter, View view, int itemId, int pos) {
            return super.onRowItemClick(adapter, view, itemId, pos);
        }

        @Override
        public boolean onContextMenuClick(final ArrayAdapter<ContextMenuItem> adapter, final int itemId, final int pos, final boolean isChecked, int[] viewCoordinates) {
            if (itemId == toggleActionStringId) {
                app.runInUIThread(new Runnable() {

                    @Override
                    public void run() {
                        plugin.toggleContourLines(mapActivity, isChecked, new Runnable() {

                            @Override
                            public void run() {
                                mapActivity.getDashboard().refreshContent(true);
                                SRTMPlugin.refreshMapComplete(mapActivity);
                            }
                        });
                    }
                });
            } else if (itemId == showZoomLevelStringId) {
                plugin.selectPropertyValue(mapActivity, contourLinesProp, pref, new Runnable() {

                    @Override
                    public void run() {
                        ContextMenuItem item = adapter.getItem(pos);
                        if (item != null) {
                            item.setDescription(plugin.getPrefDescription(app, contourLinesProp, pref));
                            adapter.notifyDataSetChanged();
                        }
                        SRTMPlugin.refreshMapComplete(mapActivity);
                    }
                });
            } else if (itemId == colorSchemeStringId) {
                plugin.selectPropertyValue(mapActivity, colorSchemeProp, colorPref, new Runnable() {

                    @Override
                    public void run() {
                        ContextMenuItem item = adapter.getItem(pos);
                        if (item != null) {
                            item.setDescription(plugin.getPrefDescription(app, colorSchemeProp, colorPref));
                            adapter.notifyDataSetChanged();
                        }
                        SRTMPlugin.refreshMapComplete(mapActivity);
                    }
                });
            } else if (itemId == R.string.srtm_plugin_name) {
                Intent intent = new Intent(mapActivity, PluginActivity.class);
                intent.putExtra(PluginActivity.EXTRA_PLUGIN_ID, plugin.getId());
                mapActivity.startActivity(intent);
                closeDashboard(mapActivity);
            } else if (contourWidthProp != null && itemId == contourWidthName.hashCode()) {
                plugin.selectPropertyValue(mapActivity, contourWidthProp, widthPref, new Runnable() {

                    @Override
                    public void run() {
                        ContextMenuItem item = adapter.getItem(pos);
                        if (item != null) {
                            item.setDescription(plugin.getPrefDescription(app, contourWidthProp, widthPref));
                            adapter.notifyDataSetChanged();
                        }
                        SRTMPlugin.refreshMapComplete(mapActivity);
                    }
                });
            } else if (contourDensityProp != null && itemId == contourDensityName.hashCode()) {
                plugin.selectPropertyValue(mapActivity, contourDensityProp, densityPref, new Runnable() {

                    @Override
                    public void run() {
                        ContextMenuItem item = adapter.getItem(pos);
                        if (item != null) {
                            item.setDescription(plugin.getPrefDescription(app, contourDensityProp, densityPref));
                            adapter.notifyDataSetChanged();
                        }
                        SRTMPlugin.refreshMapComplete(mapActivity);
                    }
                });
            }
            return false;
        }
    };
    boolean nightMode = mapActivity.getMyApplication().getDaynightHelper().isNightModeForMapControls();
    int toggleIconColorId;
    int toggleIconId;
    if (selected) {
        toggleIconId = R.drawable.ic_action_view;
        toggleIconColorId = nightMode ? R.color.color_dialog_buttons_dark : R.color.color_dialog_buttons_light;
    } else {
        toggleIconId = R.drawable.ic_action_hide;
        toggleIconColorId = nightMode ? 0 : R.color.icon_color;
    }
    contextMenuAdapter.addItem(new ContextMenuItem.ItemBuilder().setTitleId(toggleActionStringId, mapActivity).setIcon(toggleIconId).setColor(toggleIconColorId).setListener(l).setSelected(selected).createItem());
    if (selected) {
        contextMenuAdapter.addItem(new ContextMenuItem.ItemBuilder().setTitleId(showZoomLevelStringId, mapActivity).setLayout(R.layout.list_item_single_line_descrition_narrow).setIcon(R.drawable.ic_action_map_magnifier).setDescription(plugin.getPrefDescription(app, contourLinesProp, pref)).setListener(l).createItem());
        contextMenuAdapter.addItem(new ContextMenuItem.ItemBuilder().setTitleId(colorSchemeStringId, mapActivity).setLayout(R.layout.list_item_single_line_descrition_narrow).setIcon(R.drawable.ic_action_appearance).setDescription(plugin.getPrefDescription(app, colorSchemeProp, colorPref)).setListener(l).createItem());
        if (contourWidthProp != null) {
            contextMenuAdapter.addItem(new ContextMenuItem.ItemBuilder().setTitle(contourWidthName).setLayout(R.layout.list_item_single_line_descrition_narrow).setIcon(R.drawable.ic_action_gpx_width_thin).setDescription(plugin.getPrefDescription(app, contourWidthProp, widthPref)).setListener(l).createItem());
        }
        if (contourDensityProp != null) {
            contextMenuAdapter.addItem(new ContextMenuItem.ItemBuilder().setTitle(contourDensityName).setLayout(R.layout.list_item_single_line_descrition_narrow).setIcon(R.drawable.ic_plugin_srtm).setDescription(plugin.getPrefDescription(app, contourDensityProp, densityPref)).setListener(l).createItem());
        }
    }
    if (!srtmEnabled) {
        contextMenuAdapter.addItem(new ContextMenuItem.ItemBuilder().setTitleId(R.string.srtm_purchase_header, mapActivity).setCategory(true).setLayout(R.layout.list_group_title_with_switch_light).createItem());
        contextMenuAdapter.addItem(new ContextMenuItem.ItemBuilder().setTitleId(R.string.srtm_plugin_name, mapActivity).setLayout(R.layout.list_item_icon_and_right_btn).setIcon(R.drawable.ic_plugin_srtm).setColor(R.color.osmand_orange).setDescription(app.getString(R.string.shared_string_plugin)).setListener(l).createItem());
    } else {
        final DownloadIndexesThread downloadThread = app.getDownloadThread();
        if (!downloadThread.getIndexes().isDownloadedFromInternet) {
            if (settings.isInternetConnectionAvailable()) {
                downloadThread.runReloadIndexFiles();
            }
        }
        final boolean downloadIndexes = settings.isInternetConnectionAvailable() && !downloadThread.getIndexes().isDownloadedFromInternet && !downloadThread.getIndexes().downloadFromInternetFailed;
        if (downloadIndexes) {
            contextMenuAdapter.addItem(new ContextMenuItem.ItemBuilder().setTitleId(R.string.shared_string_download_map, mapActivity).setDescription(app.getString(R.string.srtm_menu_download_descr)).setCategory(true).setLayout(R.layout.list_group_title_with_descr).createItem());
            contextMenuAdapter.addItem(new ContextMenuItem.ItemBuilder().setLayout(R.layout.list_item_icon_and_download).setTitleId(R.string.downloading_list_indexes, mapActivity).setLoading(true).setListener(l).createItem());
        } else {
            try {
                IndexItem currentDownloadingItem = downloadThread.getCurrentDownloadingItem();
                int currentDownloadingProgress = downloadThread.getCurrentDownloadingItemProgress();
                List<IndexItem> srtms = DownloadResources.findIndexItemsAt(app, mapActivity.getMapLocation(), DownloadActivityType.SRTM_COUNTRY_FILE);
                if (srtms.size() > 0) {
                    contextMenuAdapter.addItem(new ContextMenuItem.ItemBuilder().setTitleId(R.string.shared_string_download_map, mapActivity).setDescription(app.getString(R.string.srtm_menu_download_descr)).setCategory(true).setLayout(R.layout.list_group_title_with_descr).createItem());
                    for (final IndexItem indexItem : srtms) {
                        ContextMenuItem.ItemBuilder itemBuilder = new ContextMenuItem.ItemBuilder().setLayout(R.layout.list_item_icon_and_download).setTitle(indexItem.getVisibleName(app, app.getRegions(), false)).setDescription(DownloadActivityType.SRTM_COUNTRY_FILE.getString(app) + " • " + indexItem.getSizeDescription(app)).setIcon(DownloadActivityType.SRTM_COUNTRY_FILE.getIconResource()).setListener(new ContextMenuAdapter.ItemClickListener() {

                            @Override
                            public boolean onContextMenuClick(ArrayAdapter<ContextMenuItem> adapter, int itemId, int position, boolean isChecked, int[] viewCoordinates) {
                                ContextMenuItem item = adapter.getItem(position);
                                if (downloadThread.isDownloading(indexItem)) {
                                    downloadThread.cancelDownload(indexItem);
                                    if (item != null) {
                                        item.setProgress(ContextMenuItem.INVALID_ID);
                                        item.setLoading(false);
                                        item.setSecondaryIcon(R.drawable.ic_action_import);
                                        adapter.notifyDataSetChanged();
                                    }
                                } else {
                                    new DownloadValidationManager(app).startDownload(mapActivity, indexItem);
                                    if (item != null) {
                                        item.setProgress(ContextMenuItem.INVALID_ID);
                                        item.setLoading(true);
                                        item.setSecondaryIcon(R.drawable.ic_action_remove_dark);
                                        adapter.notifyDataSetChanged();
                                    }
                                }
                                return false;
                            }
                        }).setProgressListener(new ContextMenuAdapter.ProgressListener() {

                            @Override
                            public boolean onProgressChanged(Object progressObject, int progress, ArrayAdapter<ContextMenuItem> adapter, int itemId, int position) {
                                if (progressObject != null && progressObject instanceof IndexItem) {
                                    IndexItem progressItem = (IndexItem) progressObject;
                                    if (indexItem.compareTo(progressItem) == 0) {
                                        ContextMenuItem item = adapter.getItem(position);
                                        if (item != null) {
                                            item.setProgress(progress);
                                            item.setLoading(true);
                                            item.setSecondaryIcon(R.drawable.ic_action_remove_dark);
                                            adapter.notifyDataSetChanged();
                                        }
                                        return true;
                                    }
                                }
                                return false;
                            }
                        });
                        if (indexItem == currentDownloadingItem) {
                            itemBuilder.setLoading(true).setProgress(currentDownloadingProgress).setSecondaryIcon(R.drawable.ic_action_remove_dark);
                        } else {
                            itemBuilder.setSecondaryIcon(R.drawable.ic_action_import);
                        }
                        contextMenuAdapter.addItem(itemBuilder.createItem());
                    }
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
Also used : OsmandApplication(net.osmand.plus.OsmandApplication) DownloadIndexesThread(net.osmand.plus.download.DownloadIndexesThread) ContextMenuItem(net.osmand.plus.ContextMenuItem) RenderingRuleProperty(net.osmand.render.RenderingRuleProperty) Intent(android.content.Intent) IOException(java.io.IOException) View(android.view.View) OsmandSettings(net.osmand.plus.OsmandSettings) IndexItem(net.osmand.plus.download.IndexItem) ContextMenuAdapter(net.osmand.plus.ContextMenuAdapter) PluginActivity(net.osmand.plus.activities.PluginActivity) DownloadValidationManager(net.osmand.plus.download.DownloadValidationManager) ArrayAdapter(android.widget.ArrayAdapter)

Example 87 with OsmandSettings

use of net.osmand.plus.OsmandSettings in project Osmand by osmandapp.

the class HillshadeMenu method createLayersItems.

private static void createLayersItems(final ContextMenuAdapter contextMenuAdapter, final MapActivity mapActivity) {
    final OsmandApplication app = mapActivity.getMyApplication();
    final OsmandSettings settings = app.getSettings();
    final SRTMPlugin plugin = OsmandPlugin.getPlugin(SRTMPlugin.class);
    final boolean srtmEnabled = OsmandPlugin.getEnabledPlugin(SRTMPlugin.class) != null;
    if (plugin == null) {
        return;
    }
    final boolean selected = plugin.isHillShadeLayerEnabled();
    final int toggleActionStringId = selected ? R.string.shared_string_enabled : R.string.shared_string_disabled;
    ContextMenuAdapter.OnRowItemClick l = new ContextMenuAdapter.OnRowItemClick() {

        @Override
        public boolean onRowItemClick(ArrayAdapter<ContextMenuItem> adapter, View view, int itemId, int pos) {
            return super.onRowItemClick(adapter, view, itemId, pos);
        }

        @Override
        public boolean onContextMenuClick(final ArrayAdapter<ContextMenuItem> adapter, final int itemId, final int pos, final boolean isChecked, int[] viewCoordinates) {
            if (itemId == toggleActionStringId) {
                app.runInUIThread(new Runnable() {

                    @Override
                    public void run() {
                        plugin.toggleHillshade(mapActivity, isChecked, new Runnable() {

                            @Override
                            public void run() {
                                mapActivity.getDashboard().refreshContent(true);
                                plugin.updateLayers(mapActivity.getMapView(), mapActivity);
                                SRTMPlugin.refreshMapComplete(mapActivity);
                            }
                        });
                    }
                });
            }
            return false;
        }
    };
    boolean nightMode = mapActivity.getMyApplication().getDaynightHelper().isNightModeForMapControls();
    int toggleIconColorId;
    int toggleIconId;
    if (selected) {
        toggleIconId = R.drawable.ic_action_view;
        toggleIconColorId = nightMode ? R.color.color_dialog_buttons_dark : R.color.color_dialog_buttons_light;
    } else {
        toggleIconId = R.drawable.ic_action_hide;
        toggleIconColorId = nightMode ? 0 : R.color.icon_color;
    }
    contextMenuAdapter.addItem(new ContextMenuItem.ItemBuilder().setTitleId(toggleActionStringId, mapActivity).setIcon(toggleIconId).setColor(toggleIconColorId).setListener(l).setSelected(selected).createItem());
    if (!srtmEnabled) {
        contextMenuAdapter.addItem(new ContextMenuItem.ItemBuilder().setTitleId(R.string.hillshade_purchase_header, mapActivity).setCategory(true).setLayout(R.layout.list_group_title_with_switch_light).createItem());
        contextMenuAdapter.addItem(new ContextMenuItem.ItemBuilder().setTitleId(R.string.srtm_plugin_name, mapActivity).setLayout(R.layout.list_item_icon_and_right_btn).setIcon(R.drawable.ic_plugin_srtm).setColor(R.color.osmand_orange).setDescription(app.getString(R.string.shared_string_plugin)).setListener(l).createItem());
    } else {
        final DownloadIndexesThread downloadThread = app.getDownloadThread();
        if (!downloadThread.getIndexes().isDownloadedFromInternet) {
            if (settings.isInternetConnectionAvailable()) {
                downloadThread.runReloadIndexFiles();
            }
        }
        final boolean downloadIndexes = settings.isInternetConnectionAvailable() && !downloadThread.getIndexes().isDownloadedFromInternet && !downloadThread.getIndexes().downloadFromInternetFailed;
        if (downloadIndexes) {
            contextMenuAdapter.addItem(new ContextMenuItem.ItemBuilder().setTitleId(R.string.shared_string_download_map, mapActivity).setDescription(app.getString(R.string.hillshade_menu_download_descr)).setCategory(true).setLayout(R.layout.list_group_title_with_descr).createItem());
            contextMenuAdapter.addItem(new ContextMenuItem.ItemBuilder().setLayout(R.layout.list_item_icon_and_download).setTitleId(R.string.downloading_list_indexes, mapActivity).setLoading(true).setListener(l).createItem());
        } else {
            try {
                IndexItem currentDownloadingItem = downloadThread.getCurrentDownloadingItem();
                int currentDownloadingProgress = downloadThread.getCurrentDownloadingItemProgress();
                List<IndexItem> hillshadeItems = DownloadResources.findIndexItemsAt(app, mapActivity.getMapLocation(), DownloadActivityType.HILLSHADE_FILE);
                if (hillshadeItems.size() > 0) {
                    contextMenuAdapter.addItem(new ContextMenuItem.ItemBuilder().setTitleId(R.string.shared_string_download_map, mapActivity).setDescription(app.getString(R.string.hillshade_menu_download_descr)).setCategory(true).setLayout(R.layout.list_group_title_with_descr).createItem());
                    for (final IndexItem indexItem : hillshadeItems) {
                        ContextMenuItem.ItemBuilder itemBuilder = new ContextMenuItem.ItemBuilder().setLayout(R.layout.list_item_icon_and_download).setTitle(indexItem.getVisibleName(app, app.getRegions(), false)).setDescription(DownloadActivityType.HILLSHADE_FILE.getString(app) + " • " + indexItem.getSizeDescription(app)).setIcon(DownloadActivityType.HILLSHADE_FILE.getIconResource()).setListener(new ContextMenuAdapter.ItemClickListener() {

                            @Override
                            public boolean onContextMenuClick(ArrayAdapter<ContextMenuItem> adapter, int itemId, int position, boolean isChecked, int[] viewCoordinates) {
                                ContextMenuItem item = adapter.getItem(position);
                                if (downloadThread.isDownloading(indexItem)) {
                                    downloadThread.cancelDownload(indexItem);
                                    if (item != null) {
                                        item.setProgress(ContextMenuItem.INVALID_ID);
                                        item.setLoading(false);
                                        item.setSecondaryIcon(R.drawable.ic_action_import);
                                        adapter.notifyDataSetChanged();
                                    }
                                } else {
                                    new DownloadValidationManager(app).startDownload(mapActivity, indexItem);
                                    if (item != null) {
                                        item.setProgress(ContextMenuItem.INVALID_ID);
                                        item.setLoading(true);
                                        item.setSecondaryIcon(R.drawable.ic_action_remove_dark);
                                        adapter.notifyDataSetChanged();
                                    }
                                }
                                return false;
                            }
                        }).setProgressListener(new ContextMenuAdapter.ProgressListener() {

                            @Override
                            public boolean onProgressChanged(Object progressObject, int progress, ArrayAdapter<ContextMenuItem> adapter, int itemId, int position) {
                                if (progressObject != null && progressObject instanceof IndexItem) {
                                    IndexItem progressItem = (IndexItem) progressObject;
                                    if (indexItem.compareTo(progressItem) == 0) {
                                        ContextMenuItem item = adapter.getItem(position);
                                        if (item != null) {
                                            item.setProgress(progress);
                                            item.setLoading(true);
                                            item.setSecondaryIcon(R.drawable.ic_action_remove_dark);
                                            adapter.notifyDataSetChanged();
                                        }
                                        return true;
                                    }
                                }
                                return false;
                            }
                        });
                        if (indexItem == currentDownloadingItem) {
                            itemBuilder.setLoading(true).setProgress(currentDownloadingProgress).setSecondaryIcon(R.drawable.ic_action_remove_dark);
                        } else {
                            itemBuilder.setSecondaryIcon(R.drawable.ic_action_import);
                        }
                        contextMenuAdapter.addItem(itemBuilder.createItem());
                    }
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
Also used : OsmandApplication(net.osmand.plus.OsmandApplication) ContextMenuItem(net.osmand.plus.ContextMenuItem) IOException(java.io.IOException) View(android.view.View) OsmandSettings(net.osmand.plus.OsmandSettings) IndexItem(net.osmand.plus.download.IndexItem) ContextMenuAdapter(net.osmand.plus.ContextMenuAdapter) DownloadValidationManager(net.osmand.plus.download.DownloadValidationManager) ArrayAdapter(android.widget.ArrayAdapter) DownloadIndexesThread(net.osmand.plus.download.DownloadIndexesThread)

Example 88 with OsmandSettings

use of net.osmand.plus.OsmandSettings in project Osmand by osmandapp.

the class OsmandRasterMapsPlugin method installMapLayers.

public static void installMapLayers(final Activity activity, final ResultMatcher<TileSourceTemplate> result) {
    final OsmandApplication app = (OsmandApplication) activity.getApplication();
    final OsmandSettings settings = app.getSettings();
    final Map<String, String> entriesMap = settings.getTileSourceEntries();
    if (!settings.isInternetConnectionAvailable(true)) {
        Toast.makeText(activity, R.string.internet_not_available, Toast.LENGTH_LONG).show();
        return;
    }
    AsyncTask<Void, Void, List<TileSourceTemplate>> t = new AsyncTask<Void, Void, List<TileSourceTemplate>>() {

        @Override
        protected List<TileSourceTemplate> doInBackground(Void... params) {
            return TileSourceManager.downloadTileSourceTemplates(Version.getVersionAsURLParam(app));
        }

        protected void onPostExecute(final java.util.List<TileSourceTemplate> downloaded) {
            if (downloaded == null || downloaded.isEmpty()) {
                Toast.makeText(activity, R.string.shared_string_io_error, Toast.LENGTH_SHORT).show();
                return;
            }
            AlertDialog.Builder builder = new AlertDialog.Builder(activity);
            String[] names = new String[downloaded.size()];
            for (int i = 0; i < names.length; i++) {
                names[i] = downloaded.get(i).getName();
            }
            final boolean[] selected = new boolean[downloaded.size()];
            builder.setMultiChoiceItems(names, selected, new DialogInterface.OnMultiChoiceClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                    selected[which] = isChecked;
                    if (entriesMap.containsKey(downloaded.get(which).getName()) && isChecked) {
                        Toast.makeText(activity, R.string.tile_source_already_installed, Toast.LENGTH_SHORT).show();
                    }
                }
            });
            builder.setNegativeButton(R.string.shared_string_cancel, null);
            builder.setTitle(R.string.select_tile_source_to_install);
            builder.setPositiveButton(R.string.shared_string_apply, new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    List<TileSourceTemplate> toInstall = new ArrayList<>();
                    for (int i = 0; i < selected.length; i++) {
                        if (selected[i]) {
                            toInstall.add(downloaded.get(i));
                        }
                    }
                    for (TileSourceTemplate ts : toInstall) {
                        if (settings.installTileSource(ts)) {
                            if (result != null) {
                                result.publish(ts);
                            }
                        }
                    }
                    // at the end publish null to show end of process
                    if (!toInstall.isEmpty() && result != null) {
                        result.publish(null);
                    }
                }
            });
            builder.show();
        }
    };
    t.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
Also used : AlertDialog(android.support.v7.app.AlertDialog) TileSourceTemplate(net.osmand.map.TileSourceManager.TileSourceTemplate) OsmandApplication(net.osmand.plus.OsmandApplication) DialogInterface(android.content.DialogInterface) AsyncTask(android.os.AsyncTask) OsmandSettings(net.osmand.plus.OsmandSettings) ArrayList(java.util.ArrayList) List(java.util.List)

Example 89 with OsmandSettings

use of net.osmand.plus.OsmandSettings in project Osmand by osmandapp.

the class SRTMPlugin method toggleContourLines.

public void toggleContourLines(final MapActivity activity, final boolean isChecked, final Runnable callback) {
    RenderingRuleProperty contourLinesProp = app.getRendererRegistry().getCustomRenderingRuleProperty(CONTOUR_LINES_ATTR);
    if (contourLinesProp != null) {
        OsmandSettings settings = app.getSettings();
        final OsmandSettings.CommonPreference<String> pref = settings.getCustomRenderProperty(contourLinesProp.getAttrName());
        CommonPreference<String> zoomSetting = settings.CONTOUR_LINES_ZOOM;
        if (!isChecked) {
            zoomSetting.set(pref.get());
            pref.set(CONTOUR_LINES_DISABLED_VALUE);
            if (callback != null) {
                callback.run();
            }
        } else if (zoomSetting.get() != null && !zoomSetting.get().equals(CONTOUR_LINES_DISABLED_VALUE)) {
            pref.set(zoomSetting.get());
            if (callback != null) {
                callback.run();
            }
        } else {
            selectPropertyValue(activity, contourLinesProp, pref, callback);
        }
    }
}
Also used : RenderingRuleProperty(net.osmand.render.RenderingRuleProperty) OsmandSettings(net.osmand.plus.OsmandSettings)

Example 90 with OsmandSettings

use of net.osmand.plus.OsmandSettings in project Osmand by osmandapp.

the class SRTMPlugin method registerLayerContextMenuActions.

@Override
public void registerLayerContextMenuActions(final OsmandMapTileView mapView, ContextMenuAdapter adapter, final MapActivity mapActivity) {
    ContextMenuAdapter.ItemClickListener listener = new ContextMenuAdapter.OnRowItemClick() {

        @Override
        public boolean onRowItemClick(ArrayAdapter<ContextMenuItem> adapter, View view, int itemId, int position) {
            int[] viewCoordinates = AndroidUtils.getCenterViewCoordinates(view);
            if (itemId == R.string.srtm_plugin_name) {
                mapActivity.getDashboard().setDashboardVisibility(true, DashboardOnMap.DashboardType.CONTOUR_LINES, viewCoordinates);
                return false;
            } else if (itemId == R.string.layer_hillshade) {
                mapActivity.getDashboard().setDashboardVisibility(true, DashboardOnMap.DashboardType.HILLSHADE, viewCoordinates);
                return false;
            }
            return true;
        }

        @Override
        public boolean onContextMenuClick(final ArrayAdapter<ContextMenuItem> adapter, final int itemId, final int position, final boolean isChecked, final int[] viewCoordinates) {
            if (itemId == R.string.srtm_plugin_name) {
                toggleContourLines(mapActivity, isChecked, new Runnable() {

                    @Override
                    public void run() {
                        RenderingRuleProperty contourLinesProp = app.getRendererRegistry().getCustomRenderingRuleProperty(CONTOUR_LINES_ATTR);
                        if (contourLinesProp != null) {
                            OsmandSettings settings = app.getSettings();
                            final OsmandSettings.CommonPreference<String> pref = settings.getCustomRenderProperty(contourLinesProp.getAttrName());
                            boolean selected = !pref.get().equals(CONTOUR_LINES_DISABLED_VALUE);
                            SRTMPlugin plugin = OsmandPlugin.getPlugin(SRTMPlugin.class);
                            if (selected && plugin != null && !plugin.isActive() && !plugin.needsInstallation()) {
                                OsmandPlugin.enablePlugin(mapActivity, mapActivity.getMyApplication(), plugin, true);
                            }
                            ContextMenuItem item = adapter.getItem(position);
                            if (item != null) {
                                item.setDescription(app.getString(R.string.display_zoom_level, getPrefDescription(app, contourLinesProp, pref)));
                                item.setColorRes(selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID);
                                item.setSelected(selected);
                                adapter.notifyDataSetChanged();
                            }
                            refreshMapComplete(mapActivity);
                        }
                    }
                });
            } else if (itemId == R.string.layer_hillshade) {
                toggleHillshade(mapActivity, isChecked, new Runnable() {

                    @Override
                    public void run() {
                        boolean selected = HILLSHADE.get();
                        SRTMPlugin plugin = OsmandPlugin.getPlugin(SRTMPlugin.class);
                        if (selected && plugin != null && !plugin.isActive() && !plugin.needsInstallation()) {
                            OsmandPlugin.enablePlugin(mapActivity, mapActivity.getMyApplication(), plugin, true);
                        }
                        ContextMenuItem item = adapter.getItem(position);
                        if (item != null) {
                            item.setColorRes(selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID);
                            item.setSelected(selected);
                            adapter.notifyDataSetChanged();
                        }
                        updateLayers(mapView, mapActivity);
                        refreshMapComplete(mapActivity);
                    }
                });
            }
            return true;
        }
    };
    RenderingRuleProperty contourLinesProp = app.getRendererRegistry().getCustomRenderingRuleProperty(CONTOUR_LINES_ATTR);
    if (contourLinesProp != null) {
        final OsmandSettings.CommonPreference<String> pref = app.getSettings().getCustomRenderProperty(contourLinesProp.getAttrName());
        boolean contourLinesSelected;
        if (!Algorithms.isEmpty(pref.get())) {
            contourLinesSelected = !pref.get().equals(CONTOUR_LINES_DISABLED_VALUE);
        } else {
            contourLinesSelected = !contourLinesProp.getDefaultValueDescription().equals(CONTOUR_LINES_DISABLED_VALUE);
        }
        String descr = getPrefDescription(app, contourLinesProp, pref);
        adapter.addItem(new ContextMenuItem.ItemBuilder().setTitleId(R.string.srtm_plugin_name, mapActivity).setSelected(contourLinesSelected).setIcon(R.drawable.ic_plugin_srtm).setDescription(app.getString(R.string.display_zoom_level, descr)).setColor(contourLinesSelected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID).setSecondaryIcon(R.drawable.ic_action_additional_option).setPosition(12).setListener(listener).createItem());
    }
    adapter.addItem(new ContextMenuItem.ItemBuilder().setTitleId(R.string.layer_hillshade, mapActivity).setSelected(HILLSHADE.get()).setColor(HILLSHADE.get() ? R.color.osmand_orange : ContextMenuItem.INVALID_ID).setIcon(R.drawable.ic_action_hillshade_dark).setSecondaryIcon(R.drawable.ic_action_additional_option).setListener(listener).setPosition(13).createItem());
}
Also used : CommonPreference(net.osmand.plus.OsmandSettings.CommonPreference) ContextMenuItem(net.osmand.plus.ContextMenuItem) RenderingRuleProperty(net.osmand.render.RenderingRuleProperty) OsmandMapTileView(net.osmand.plus.views.OsmandMapTileView) View(android.view.View) OsmandSettings(net.osmand.plus.OsmandSettings) ContextMenuAdapter(net.osmand.plus.ContextMenuAdapter) ArrayAdapter(android.widget.ArrayAdapter)

Aggregations

OsmandSettings (net.osmand.plus.OsmandSettings)91 View (android.view.View)27 OsmandApplication (net.osmand.plus.OsmandApplication)25 ArrayList (java.util.ArrayList)20 LatLon (net.osmand.data.LatLon)17 DialogInterface (android.content.DialogInterface)14 ArrayAdapter (android.widget.ArrayAdapter)14 TextView (android.widget.TextView)14 AlertDialog (android.support.v7.app.AlertDialog)11 ImageView (android.widget.ImageView)11 PointDescription (net.osmand.data.PointDescription)10 AdapterView (android.widget.AdapterView)9 ContextMenuAdapter (net.osmand.plus.ContextMenuAdapter)8 ContextMenuItem (net.osmand.plus.ContextMenuItem)8 ApplicationMode (net.osmand.plus.ApplicationMode)7 Paint (android.graphics.Paint)6 Pair (android.support.v4.util.Pair)6 ListView (android.widget.ListView)6 SpannableString (android.text.SpannableString)5 CompoundButton (android.widget.CompoundButton)5