Search in sources :

Example 11 with SelectedGpxFile

use of net.osmand.plus.GpxSelectionHelper.SelectedGpxFile in project Osmand by osmandapp.

the class DashTrackFragment method setupGpxFiles.

private void setupGpxFiles() {
    View mainView = getView();
    final File dir = getMyApplication().getAppPath(IndexConstants.GPX_INDEX_DIR);
    final OsmandApplication app = getMyApplication();
    if (app == null) {
        return;
    }
    final List<String> list = new ArrayList<String>();
    for (SelectedGpxFile sg : app.getSelectedGpxHelper().getSelectedGPXFiles()) {
        if (!sg.isShowCurrentTrack()) {
            GPXFile gpxFile = sg.getGpxFile();
            if (gpxFile != null) {
                list.add(gpxFile.path);
            }
        }
    }
    int totalCount = 3 + list.size() / 2;
    if (app.getSettings().SAVE_GLOBAL_TRACK_TO_GPX.get()) {
        totalCount--;
    }
    if (list.size() < totalCount) {
        final List<GPXInfo> res = GpxUiHelper.getSortedGPXFilesInfoByDate(dir, true);
        for (GPXInfo r : res) {
            String name = r.getFileName();
            if (!list.contains(name)) {
                list.add(name);
                if (list.size() >= totalCount) {
                    break;
                }
            }
        }
    }
    if (list.size() == 0 && OsmandPlugin.getEnabledPlugin(OsmandMonitoringPlugin.class) == null) {
        (mainView.findViewById(R.id.main_fav)).setVisibility(View.GONE);
        return;
    } else {
        (mainView.findViewById(R.id.main_fav)).setVisibility(View.VISIBLE);
        DashboardOnMap.handleNumberOfRows(list, getMyApplication().getSettings(), ROW_NUMBER_TAG);
    }
    LinearLayout tracks = (LinearLayout) mainView.findViewById(R.id.items);
    tracks.removeAllViews();
    LayoutInflater inflater = getActivity().getLayoutInflater();
    if (OsmandPlugin.getEnabledPlugin(OsmandMonitoringPlugin.class) != null) {
        View view = inflater.inflate(R.layout.dash_gpx_track_item, null, false);
        createCurrentTrackView(view, app);
        ((TextView) view.findViewById(R.id.name)).setText(R.string.shared_string_currently_recording_track);
        updateCurrentTrack(view, getActivity(), app);
        view.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                AvailableGPXFragment.openTrack(getActivity(), null);
            }
        });
        view.findViewById(R.id.divider_dash).setVisibility(View.VISIBLE);
        tracks.addView(view);
        startHandler(view);
    }
    for (String filename : list) {
        final File f = new File(filename);
        AvailableGPXFragment.GpxInfo info = new AvailableGPXFragment.GpxInfo();
        info.subfolder = "";
        info.file = f;
        View v = inflater.inflate(R.layout.dash_gpx_track_item, null, false);
        AvailableGPXFragment.updateGpxInfoView(v, info, app, true);
        v.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                AvailableGPXFragment.openTrack(getActivity(), f);
            }
        });
        ImageButton showOnMap = ((ImageButton) v.findViewById(R.id.show_on_map));
        showOnMap.setVisibility(View.VISIBLE);
        showOnMap.setContentDescription(getString(R.string.shared_string_show_on_map));
        updateShowOnMap(app, f, v, showOnMap);
        tracks.addView(v);
    }
}
Also used : OsmandApplication(net.osmand.plus.OsmandApplication) GPXInfo(net.osmand.plus.helpers.GpxUiHelper.GPXInfo) ArrayList(java.util.ArrayList) ImageView(android.widget.ImageView) View(android.view.View) TextView(android.widget.TextView) ImageButton(android.widget.ImageButton) SelectedGpxFile(net.osmand.plus.GpxSelectionHelper.SelectedGpxFile) LayoutInflater(android.view.LayoutInflater) TextView(android.widget.TextView) GPXFile(net.osmand.plus.GPXUtilities.GPXFile) SelectedGpxFile(net.osmand.plus.GpxSelectionHelper.SelectedGpxFile) GPXFile(net.osmand.plus.GPXUtilities.GPXFile) File(java.io.File) LinearLayout(android.widget.LinearLayout) AvailableGPXFragment(net.osmand.plus.myplaces.AvailableGPXFragment)

Example 12 with SelectedGpxFile

use of net.osmand.plus.GpxSelectionHelper.SelectedGpxFile in project Osmand by osmandapp.

the class TrackSegmentFragment method updateHeader.

private void updateHeader() {
    imageView = (ImageView) headerView.findViewById(R.id.imageView);
    imageView.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            GpxDataItem gpxDataItem = getGpxDataItem();
            GPXFile gpx = getGpx();
            WptPt pointToShow = gpx != null ? gpx.findPointToShow() : null;
            if (pointToShow != null) {
                LatLon location = new LatLon(pointToShow.getLatitude(), pointToShow.getLongitude());
                final OsmandSettings settings = app.getSettings();
                String trackName = "";
                if (gpx.showCurrentTrack) {
                    trackName = getString(R.string.shared_string_currently_recording_track);
                } else if (gpxDataItem != null) {
                    trackName = gpxDataItem.getFile().getName();
                } else {
                    trackName = gpx.path;
                }
                settings.setMapLocationToShow(location.getLatitude(), location.getLongitude(), settings.getLastKnownMapZoom(), new PointDescription(PointDescription.POINT_TYPE_WPT, trackName), false, getRect());
                MapActivity.launchMapActivityMoveToTop(getActivity());
            }
        }
    });
    final View splitColorView = headerView.findViewById(R.id.split_color_view);
    final View divider = headerView.findViewById(R.id.divider);
    final View splitIntervalView = headerView.findViewById(R.id.split_interval_view);
    final View colorView = headerView.findViewById(R.id.color_view);
    vis = (SwitchCompat) headerView.findViewById(R.id.showOnMapToggle);
    final ProgressBar progressBar = (ProgressBar) headerView.findViewById(R.id.mapLoadProgress);
    final boolean selected = getGpx() != null && ((getGpx().showCurrentTrack && app.getSelectedGpxHelper().getSelectedCurrentRecordingTrack() != null) || (getGpx().path != null && app.getSelectedGpxHelper().getSelectedFileByPath(getGpx().path) != null));
    vis.setChecked(selected);
    vis.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if (!isChecked) {
                selectedSplitInterval = 0;
            }
            SelectedGpxFile sf = app.getSelectedGpxHelper().selectGpxFile(getGpx(), vis.isChecked(), false);
            final List<GpxDisplayGroup> groups = getDisplayGroups();
            if (groups.size() > 0) {
                updateSplit(groups, vis.isChecked() ? sf : null);
                if (getGpxDataItem() != null) {
                    updateSplitInDatabase();
                }
            }
            updateSplitIntervalView(splitIntervalView);
            updateColorView(colorView);
        }
    });
    updateColorView(colorView);
    colorView.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            colorListPopupWindow = new ListPopupWindow(getActivity());
            colorListPopupWindow.setAnchorView(colorView);
            colorListPopupWindow.setContentWidth(AndroidUtils.dpToPx(app, 200f));
            colorListPopupWindow.setModal(true);
            colorListPopupWindow.setDropDownGravity(Gravity.RIGHT | Gravity.TOP);
            colorListPopupWindow.setVerticalOffset(AndroidUtils.dpToPx(app, -48f));
            colorListPopupWindow.setHorizontalOffset(AndroidUtils.dpToPx(app, -6f));
            final GpxAppearanceAdapter gpxApprAdapter = new GpxAppearanceAdapter(getActivity(), getGpx().getColor(0), GpxAppearanceAdapterType.TRACK_COLOR);
            colorListPopupWindow.setAdapter(gpxApprAdapter);
            colorListPopupWindow.setOnItemClickListener(new AdapterView.OnItemClickListener() {

                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    AppearanceListItem item = gpxApprAdapter.getItem(position);
                    if (item != null) {
                        if (item.getAttrName() == CURRENT_TRACK_COLOR_ATTR) {
                            int clr = item.getColor();
                            if (vis.isChecked()) {
                                SelectedGpxFile sf = app.getSelectedGpxHelper().selectGpxFile(getGpx(), vis.isChecked(), false);
                                if (clr != 0 && sf.getModifiableGpxFile() != null) {
                                    sf.getModifiableGpxFile().setColor(clr);
                                    if (getGpxDataItem() != null) {
                                        app.getGpxDatabase().updateColor(getGpxDataItem(), clr);
                                    }
                                }
                            } else if (getGpxDataItem() != null) {
                                app.getGpxDatabase().updateColor(getGpxDataItem(), clr);
                            }
                            if (getGpx().showCurrentTrack) {
                                app.getSettings().CURRENT_TRACK_COLOR.set(clr);
                            }
                            refreshTrackBitmap();
                        }
                    }
                    colorListPopupWindow.dismiss();
                    updateColorView(colorView);
                }
            });
            colorListPopupWindow.show();
        }
    });
    boolean hasPath = getGpx() != null && (getGpx().tracks.size() > 0 || getGpx().routes.size() > 0);
    if (rotatedTileBox == null || mapBitmap == null || mapTrackBitmap == null) {
        QuadRect rect = getRect();
        if (rect.left != 0 && rect.top != 0) {
            progressBar.setVisibility(View.VISIBLE);
            double clat = rect.bottom / 2 + rect.top / 2;
            double clon = rect.left / 2 + rect.right / 2;
            WindowManager mgr = (WindowManager) getActivity().getSystemService(Context.WINDOW_SERVICE);
            DisplayMetrics dm = new DisplayMetrics();
            mgr.getDefaultDisplay().getMetrics(dm);
            RotatedTileBoxBuilder boxBuilder = new RotatedTileBoxBuilder().setLocation(clat, clon).setZoom(15).density(dm.density).setPixelDimensions(dm.widthPixels, AndroidUtils.dpToPx(app, 152f), 0.5f, 0.5f);
            rotatedTileBox = boxBuilder.build();
            while (rotatedTileBox.getZoom() < 17 && rotatedTileBox.containsLatLon(rect.top, rect.left) && rotatedTileBox.containsLatLon(rect.bottom, rect.right)) {
                rotatedTileBox.setZoom(rotatedTileBox.getZoom() + 1);
            }
            while (rotatedTileBox.getZoom() >= 7 && (!rotatedTileBox.containsLatLon(rect.top, rect.left) || !rotatedTileBox.containsLatLon(rect.bottom, rect.right))) {
                rotatedTileBox.setZoom(rotatedTileBox.getZoom() - 1);
            }
            final DrawSettings drawSettings = new DrawSettings(!app.getSettings().isLightContent(), true);
            final ResourceManager resourceManager = app.getResourceManager();
            final MapRenderRepositories renderer = resourceManager.getRenderer();
            if (resourceManager.updateRenderedMapNeeded(rotatedTileBox, drawSettings)) {
                resourceManager.updateRendererMap(rotatedTileBox, new AsyncLoadingThread.OnMapLoadedListener() {

                    @Override
                    public void onMapLoaded(boolean interrupted) {
                        app.runInUIThread(new Runnable() {

                            @Override
                            public void run() {
                                if (updateEnable) {
                                    mapBitmap = renderer.getBitmap();
                                    if (mapBitmap != null) {
                                        progressBar.setVisibility(View.GONE);
                                        refreshTrackBitmap();
                                    }
                                }
                            }
                        });
                    }
                });
            }
            imageView.setVisibility(View.VISIBLE);
        } else {
            imageView.setVisibility(View.GONE);
        }
    } else {
        refreshTrackBitmap();
    }
    if (hasPath) {
        if (getGpx() != null && !getGpx().showCurrentTrack && adapter.getCount() > 0) {
            prepareSplitIntervalAdapterData();
            setupSplitIntervalView(splitIntervalView);
            updateSplitIntervalView(splitIntervalView);
            splitIntervalView.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    splitListPopupWindow = new ListPopupWindow(getActivity());
                    splitListPopupWindow.setAnchorView(splitIntervalView);
                    splitListPopupWindow.setContentWidth(AndroidUtils.dpToPx(app, 200f));
                    splitListPopupWindow.setModal(true);
                    splitListPopupWindow.setDropDownGravity(Gravity.RIGHT | Gravity.TOP);
                    splitListPopupWindow.setVerticalOffset(AndroidUtils.dpToPx(app, -48f));
                    splitListPopupWindow.setHorizontalOffset(AndroidUtils.dpToPx(app, -6f));
                    splitListPopupWindow.setAdapter(new ArrayAdapter<>(getTrackActivity(), R.layout.popup_list_text_item, options));
                    splitListPopupWindow.setOnItemClickListener(new AdapterView.OnItemClickListener() {

                        @Override
                        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                            selectedSplitInterval = position;
                            SelectedGpxFile sf = app.getSelectedGpxHelper().selectGpxFile(getGpx(), vis.isChecked(), false);
                            final List<GpxDisplayGroup> groups = getDisplayGroups();
                            if (groups.size() > 0) {
                                updateSplit(groups, vis.isChecked() ? sf : null);
                                if (getGpxDataItem() != null) {
                                    updateSplitInDatabase();
                                }
                            }
                            splitListPopupWindow.dismiss();
                            updateSplitIntervalView(splitIntervalView);
                        }
                    });
                    splitListPopupWindow.show();
                }
            });
            splitIntervalView.setVisibility(View.VISIBLE);
        } else {
            splitIntervalView.setVisibility(View.GONE);
        }
        splitColorView.setVisibility(View.VISIBLE);
        divider.setVisibility(View.VISIBLE);
    } else {
        splitColorView.setVisibility(View.GONE);
        divider.setVisibility(View.GONE);
    }
}
Also used : WptPt(net.osmand.plus.GPXUtilities.WptPt) GpxDisplayGroup(net.osmand.plus.GpxSelectionHelper.GpxDisplayGroup) QuadRect(net.osmand.data.QuadRect) DisplayMetrics(android.util.DisplayMetrics) WindowManager(android.view.WindowManager) AppearanceListItem(net.osmand.plus.dialogs.ConfigureMapMenu.AppearanceListItem) ListPopupWindow(android.support.v7.widget.ListPopupWindow) GpxAppearanceAdapter(net.osmand.plus.dialogs.ConfigureMapMenu.GpxAppearanceAdapter) GpxDataItem(net.osmand.plus.GPXDatabase.GpxDataItem) MapRenderRepositories(net.osmand.plus.render.MapRenderRepositories) ArrayList(java.util.ArrayList) TIntArrayList(gnu.trove.list.array.TIntArrayList) List(java.util.List) ProgressBar(android.widget.ProgressBar) ResourceManager(net.osmand.plus.resources.ResourceManager) ImageView(android.widget.ImageView) View(android.view.View) AdapterView(android.widget.AdapterView) TextView(android.widget.TextView) ListView(android.widget.ListView) AbsListView(android.widget.AbsListView) OsmandSettings(net.osmand.plus.OsmandSettings) Paint(android.graphics.Paint) DrawSettings(net.osmand.plus.views.OsmandMapLayer.DrawSettings) LatLon(net.osmand.data.LatLon) RotatedTileBoxBuilder(net.osmand.data.RotatedTileBox.RotatedTileBoxBuilder) SelectedGpxFile(net.osmand.plus.GpxSelectionHelper.SelectedGpxFile) PointDescription(net.osmand.data.PointDescription) AdapterView(android.widget.AdapterView) GPXFile(net.osmand.plus.GPXUtilities.GPXFile) AsyncLoadingThread(net.osmand.plus.resources.AsyncLoadingThread) CompoundButton(android.widget.CompoundButton) ArrayAdapter(android.widget.ArrayAdapter)

Example 13 with SelectedGpxFile

use of net.osmand.plus.GpxSelectionHelper.SelectedGpxFile in project Osmand by osmandapp.

the class MeasurementToolFragment method showAddToTrackDialog.

private AlertDialog showAddToTrackDialog(final MapActivity mapActivity) {
    CallbackWithObject<GPXFile[]> callbackWithObject = new CallbackWithObject<GPXFile[]>() {

        @Override
        public boolean processResult(GPXFile[] result) {
            GPXFile gpxFile;
            if (result != null && result.length > 0) {
                gpxFile = result[0];
                SelectedGpxFile selectedGpxFile = mapActivity.getMyApplication().getSelectedGpxHelper().getSelectedFileByPath(gpxFile.path);
                boolean showOnMap = selectedGpxFile != null;
                saveExistingGpx(gpxFile, showOnMap, ActionType.ADD_SEGMENT, false);
            }
            return true;
        }
    };
    return GpxUiHelper.selectGPXFile(mapActivity, false, false, callbackWithObject);
}
Also used : CallbackWithObject(net.osmand.CallbackWithObject) SelectedGpxFile(net.osmand.plus.GpxSelectionHelper.SelectedGpxFile) GPXFile(net.osmand.plus.GPXUtilities.GPXFile)

Example 14 with SelectedGpxFile

use of net.osmand.plus.GpxSelectionHelper.SelectedGpxFile in project Osmand by osmandapp.

the class MeasurementToolFragment method saveGpx.

private void saveGpx(final File dir, final String fileName, final boolean showOnMap, final GPXFile gpx, final boolean openTrackActivity, final NewGpxData.ActionType actionType, final SaveType saveType, final boolean close) {
    new AsyncTask<Void, Void, String>() {

        private ProgressDialog progressDialog;

        private File toSave;

        @Override
        protected void onPreExecute() {
            cancelModes();
            MapActivity activity = getMapActivity();
            if (activity != null) {
                progressDialog = new ProgressDialog(activity);
                progressDialog.setMessage(getString(R.string.saving_gpx_tracks));
                progressDialog.show();
            }
        }

        @Override
        protected String doInBackground(Void... voids) {
            MeasurementToolLayer measurementLayer = getMeasurementLayer();
            MapActivity activity = getMapActivity();
            List<WptPt> points = editingCtx.getPoints();
            TrkSegment before = editingCtx.getBeforeTrkSegmentLine();
            TrkSegment after = editingCtx.getAfterTrkSegmentLine();
            if (gpx == null) {
                toSave = new File(dir, fileName);
                GPXFile gpx = new GPXFile();
                if (measurementLayer != null) {
                    if (saveType == SaveType.LINE) {
                        TrkSegment segment = new TrkSegment();
                        if (editingCtx.isInSnapToRoadMode()) {
                            segment.points.addAll(before.points);
                            segment.points.addAll(after.points);
                        } else {
                            segment.points.addAll(points);
                        }
                        Track track = new Track();
                        track.segments.add(segment);
                        gpx.tracks.add(track);
                    } else if (saveType == SaveType.ROUTE_POINT) {
                        if (editingCtx.isInSnapToRoadMode()) {
                            TrkSegment segment = new TrkSegment();
                            segment.points.addAll(before.points);
                            segment.points.addAll(after.points);
                            Track track = new Track();
                            track.segments.add(segment);
                            gpx.tracks.add(track);
                        }
                        Route rt = new Route();
                        gpx.routes.add(rt);
                        rt.points.addAll(points);
                    }
                }
                if (activity != null) {
                    String res = GPXUtilities.writeGpxFile(toSave, gpx, activity.getMyApplication());
                    gpx.path = toSave.getAbsolutePath();
                    if (showOnMap) {
                        activity.getMyApplication().getSelectedGpxHelper().selectGpxFile(gpx, true, false);
                    }
                    return res;
                }
            } else {
                toSave = new File(gpx.path);
                if (measurementLayer != null) {
                    if (actionType != null) {
                        switch(actionType) {
                            case ADD_SEGMENT:
                                if (editingCtx.isInSnapToRoadMode()) {
                                    List<WptPt> snappedPoints = new ArrayList<>();
                                    snappedPoints.addAll(before.points);
                                    snappedPoints.addAll(after.points);
                                    gpx.addTrkSegment(snappedPoints);
                                } else {
                                    gpx.addTrkSegment(points);
                                }
                                break;
                            case ADD_ROUTE_POINTS:
                                gpx.replaceRoutePoints(points);
                                break;
                            case EDIT_SEGMENT:
                                TrkSegment segment = new TrkSegment();
                                segment.points.addAll(points);
                                gpx.replaceSegment(editingCtx.getNewGpxData().getTrkSegment(), segment);
                                break;
                        }
                    } else {
                        gpx.addRoutePoints(points);
                    }
                }
                if (activity != null) {
                    String res = GPXUtilities.writeGpxFile(toSave, gpx, activity.getMyApplication());
                    if (showOnMap) {
                        SelectedGpxFile sf = activity.getMyApplication().getSelectedGpxHelper().selectGpxFile(gpx, true, false);
                        if (sf != null) {
                            if (actionType == NewGpxData.ActionType.ADD_SEGMENT || actionType == NewGpxData.ActionType.EDIT_SEGMENT) {
                                sf.processPoints();
                            }
                        }
                    }
                    return res;
                }
            }
            return null;
        }

        @Override
        protected void onPostExecute(String warning) {
            MapActivity activity = getMapActivity();
            if (progressDialog != null && progressDialog.isShowing()) {
                progressDialog.dismiss();
            }
            if (activity != null) {
                activity.refreshMap();
                if (warning == null) {
                    saved = true;
                    if (openTrackActivity) {
                        dismiss(activity);
                    } else {
                        Toast.makeText(activity, MessageFormat.format(getString(R.string.gpx_saved_sucessfully), toSave.getAbsolutePath()), Toast.LENGTH_LONG).show();
                        if (close) {
                            dismiss(activity);
                        }
                    }
                } else {
                    Toast.makeText(activity, warning, Toast.LENGTH_LONG).show();
                }
            }
        }
    }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
Also used : TrkSegment(net.osmand.plus.GPXUtilities.TrkSegment) ProgressDialog(android.app.ProgressDialog) SelectedGpxFile(net.osmand.plus.GpxSelectionHelper.SelectedGpxFile) List(java.util.List) ArrayList(java.util.ArrayList) GPXFile(net.osmand.plus.GPXUtilities.GPXFile) SelectedGpxFile(net.osmand.plus.GpxSelectionHelper.SelectedGpxFile) GPXFile(net.osmand.plus.GPXUtilities.GPXFile) File(java.io.File) Track(net.osmand.plus.GPXUtilities.Track) Route(net.osmand.plus.GPXUtilities.Route) MapActivity(net.osmand.plus.activities.MapActivity)

Example 15 with SelectedGpxFile

use of net.osmand.plus.GpxSelectionHelper.SelectedGpxFile in project Osmand by osmandapp.

the class MeasurementToolFragment method addToGpx.

private void addToGpx(MapActivity mapActivity) {
    GPXFile gpx = editingCtx.getNewGpxData().getGpxFile();
    SelectedGpxFile selectedGpxFile = mapActivity.getMyApplication().getSelectedGpxHelper().getSelectedFileByPath(gpx.path);
    boolean showOnMap = selectedGpxFile != null;
    ActionType actionType = editingCtx.getNewGpxData().getActionType();
    saveExistingGpx(gpx, showOnMap, actionType, true);
}
Also used : ActionType(net.osmand.plus.measurementtool.NewGpxData.ActionType) SelectedGpxFile(net.osmand.plus.GpxSelectionHelper.SelectedGpxFile) GPXFile(net.osmand.plus.GPXUtilities.GPXFile)

Aggregations

SelectedGpxFile (net.osmand.plus.GpxSelectionHelper.SelectedGpxFile)35 GPXFile (net.osmand.plus.GPXUtilities.GPXFile)18 File (java.io.File)13 ArrayList (java.util.ArrayList)9 View (android.view.View)7 GpxSelectionHelper (net.osmand.plus.GpxSelectionHelper)7 OsmandApplication (net.osmand.plus.OsmandApplication)7 ImageView (android.widget.ImageView)6 TextView (android.widget.TextView)6 GpxDataItem (net.osmand.plus.GPXDatabase.GpxDataItem)6 WptPt (net.osmand.plus.GPXUtilities.WptPt)6 Paint (android.graphics.Paint)5 AdapterView (android.widget.AdapterView)4 ArrayAdapter (android.widget.ArrayAdapter)4 GpxDisplayGroup (net.osmand.plus.GpxSelectionHelper.GpxDisplayGroup)4 SuppressLint (android.annotation.SuppressLint)3 DialogInterface (android.content.DialogInterface)3 AlertDialog (android.support.v7.app.AlertDialog)3 ViewGroup (android.view.ViewGroup)3 CompoundButton (android.widget.CompoundButton)3