Search in sources :

Example 1 with TrackPointsCard

use of net.osmand.plus.track.cards.TrackPointsCard in project Osmand by osmandapp.

the class TrackMenuFragment method onCardButtonPressed.

@Override
public void onCardButtonPressed(@NonNull BaseCard card, int buttonIndex) {
    MapActivity mapActivity = getMapActivity();
    if (mapActivity == null) {
        return;
    }
    FragmentManager fragmentManager = mapActivity.getSupportFragmentManager();
    GPXFile gpxFile = getGpx();
    if (card instanceof OptionsCard || card instanceof OverviewCard || card instanceof SegmentsCard) {
        if (buttonIndex == SHOW_ON_MAP_BUTTON_INDEX) {
            if (FileUtils.isTempFile(app, getGpx().path)) {
                File srcFile = displayHelper.getFile();
                File destFIle = new File(app.getAppPath(IndexConstants.GPX_TRAVEL_DIR), srcFile.getName());
                onFileMove(srcFile, destFIle);
                gpxFile = getGpx();
            } else {
                boolean gpxFileSelected = !isGpxFileSelected(app, gpxFile);
                app.getSelectedGpxHelper().selectGpxFile(gpxFile, gpxFileSelected, false);
            }
            updateContent();
            mapActivity.refreshMap();
        } else if (buttonIndex == APPEARANCE_BUTTON_INDEX) {
            TrackAppearanceFragment.showInstance(mapActivity, selectedGpxFile, this);
        } else if (buttonIndex == DIRECTIONS_BUTTON_INDEX) {
            GPXFile gpxFileToDisplay = displayHelper.getGpxFileToDisplay();
            if (gpxFileToDisplay != null) {
                if (gpxFileToDisplay.getNonEmptySegmentsCount() > 1) {
                    TrackSelectSegmentBottomSheet.showInstance(fragmentManager, gpxFileToDisplay, this);
                } else {
                    GpxNavigationHelper.startNavigationForGpx(gpxFileToDisplay, mapActivity);
                    dismiss();
                }
            }
        }
        if (buttonIndex == JOIN_GAPS_BUTTON_INDEX) {
            displayHelper.setJoinSegments(!displayHelper.isJoinSegments());
            mapActivity.refreshMap();
            if (segmentsCard != null) {
                segmentsCard.updateContent();
            }
        } else if (buttonIndex == ANALYZE_ON_MAP_BUTTON_INDEX) {
            new OpenGpxDetailsTask(selectedGpxFile, null, mapActivity).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
            dismiss();
        } else if (buttonIndex == ANALYZE_BY_INTERVALS_BUTTON_INDEX) {
            TrkSegment segment = gpxFile.getGeneralSegment();
            if (segment == null) {
                List<TrkSegment> segments = gpxFile.getNonEmptyTrkSegments(false);
                if (!Algorithms.isEmpty(segments)) {
                    segment = segments.get(0);
                }
            }
            GpxDisplayItemType[] filterTypes = new GpxDisplayItemType[] { GpxDisplayItemType.TRACK_SEGMENT };
            List<GpxDisplayItem> items = TrackDisplayHelper.flatten(displayHelper.getOriginalGroups(filterTypes));
            if (segment != null && !Algorithms.isEmpty(items)) {
                SplitSegmentDialogFragment.showInstance(fragmentManager, displayHelper, items.get(0), segment);
            }
        } else if (buttonIndex == SHARE_BUTTON_INDEX) {
            OsmandApplication app = mapActivity.getMyApplication();
            if (gpxFile.showCurrentTrack) {
                GpxUiHelper.saveAndShareCurrentGpx(app, gpxFile);
            } else if (!Algorithms.isEmpty(gpxFile.path)) {
                GpxUiHelper.saveAndShareGpxWithAppearance(app, gpxFile);
            }
        } else if (buttonIndex == UPLOAD_OSM_BUTTON_INDEX) {
            OsmEditingPlugin osmEditingPlugin = OsmandPlugin.getActivePlugin(OsmEditingPlugin.class);
            if (osmEditingPlugin != null) {
                GpxInfo gpxInfo = new GpxInfo();
                gpxInfo.gpx = gpxFile;
                gpxInfo.file = new File(gpxFile.path);
                osmEditingPlugin.sendGPXFiles(mapActivity, this, gpxInfo);
            }
        } else if (buttonIndex == EDIT_BUTTON_INDEX) {
            app.getSelectedGpxHelper().selectGpxFile(gpxFile, true, false);
            dismiss();
            String fileName = Algorithms.getFileWithoutDirs(gpxFile.path);
            MeasurementToolFragment.showInstance(fragmentManager, fileName, false);
        } else if (buttonIndex == RENAME_BUTTON_INDEX) {
            FileUtils.renameFile(mapActivity, new File(gpxFile.path), this, true);
        } else if (buttonIndex == CHANGE_FOLDER_BUTTON_INDEX) {
            MoveGpxFileBottomSheet.showInstance(fragmentManager, this, gpxFile.path, true, false);
        } else if (buttonIndex == GPS_FILTER_BUTTON_INDEX) {
            GpsFilterFragment.showInstance(fragmentManager, selectedGpxFile, this);
        } else if (buttonIndex == DELETE_BUTTON_INDEX) {
            String fileName = Algorithms.getFileWithoutDirs(gpxFile.path);
            AlertDialog.Builder builder = new AlertDialog.Builder(UiUtilities.getThemedContext(mapActivity, isNightMode()));
            builder.setTitle(getString(R.string.delete_confirmation_msg, fileName));
            builder.setMessage(R.string.are_you_sure);
            final String gpxFilePath = gpxFile.path;
            builder.setNegativeButton(R.string.shared_string_cancel, null).setPositiveButton(R.string.shared_string_ok, new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    if (FileUtils.removeGpxFile(app, new File(gpxFilePath))) {
                        dismiss();
                    }
                }
            });
            builder.show();
        }
    } else if (card instanceof TrackPointsCard) {
        if (buttonIndex == ADD_WAYPOINT_INDEX) {
            PointDescription pointDescription = new PointDescription(PointDescription.POINT_TYPE_WPT, app.getString(R.string.add_waypoint));
            QuadRect rect = displayHelper.getRect();
            NewGpxPoint newGpxPoint = new NewGpxPoint(gpxFile, pointDescription, rect);
            mapActivity.getMapView().fitRectToMap(rect.left, rect.right, rect.top, rect.bottom, (int) rect.width(), (int) rect.height(), 0);
            mapActivity.getMapLayers().getContextMenuLayer().enterAddGpxPointMode(newGpxPoint);
            hide();
        } else if (buttonIndex == DELETE_WAYPOINTS_INDEX) {
            TrackPointsCard pointsCard = (TrackPointsCard) card;
            if (pointsCard.isSelectionMode()) {
                pointsCard.deleteItemsAction();
            } else {
                pointsCard.setSelectionMode(true);
            }
        } else if (buttonIndex == OPEN_WAYPOINT_INDEX) {
            dismiss();
        }
    } else if (card instanceof PointsGroupsCard) {
        PointsGroupsCard groupsCard = (PointsGroupsCard) card;
        GpxDisplayGroup group = groupsCard.getSelectedGroup();
        if (pointsCard != null) {
            pointsCard.setSelectedGroup(group);
            if (group != null) {
                fitSelectedPointsGroupOnMap(group);
            } else {
                fitTrackOnMap();
            }
        }
    }
}
Also used : AlertDialog(androidx.appcompat.app.AlertDialog) GpxDisplayGroup(net.osmand.plus.track.helpers.GpxSelectionHelper.GpxDisplayGroup) OsmandApplication(net.osmand.plus.OsmandApplication) NewGpxPoint(net.osmand.plus.views.AddGpxPointBottomSheetHelper.NewGpxPoint) DialogInterface(android.content.DialogInterface) GpxDisplayItem(net.osmand.plus.track.helpers.GpxSelectionHelper.GpxDisplayItem) OpenGpxDetailsTask(net.osmand.plus.mapcontextmenu.controllers.SelectedGpxMenuController.OpenGpxDetailsTask) QuadRect(net.osmand.data.QuadRect) PointsGroupsCard(net.osmand.plus.track.cards.PointsGroupsCard) SegmentsCard(net.osmand.plus.track.cards.SegmentsCard) TrackPointsCard(net.osmand.plus.track.cards.TrackPointsCard) MapActivity(net.osmand.plus.activities.MapActivity) OptionsCard(net.osmand.plus.track.cards.OptionsCard) OverviewCard(net.osmand.plus.track.cards.OverviewCard) GpxInfo(net.osmand.plus.myplaces.ui.AvailableGPXFragment.GpxInfo) TrkSegment(net.osmand.GPXUtilities.TrkSegment) GpxDisplayItemType(net.osmand.plus.track.helpers.GpxSelectionHelper.GpxDisplayItemType) OsmEditingPlugin(net.osmand.plus.plugins.osmedit.OsmEditingPlugin) FragmentManager(androidx.fragment.app.FragmentManager) PointDescription(net.osmand.data.PointDescription) OnClickListener(android.view.View.OnClickListener) GPXFile(net.osmand.GPXUtilities.GPXFile) GPXFile(net.osmand.GPXUtilities.GPXFile) SelectedGpxFile(net.osmand.plus.track.helpers.GpxSelectionHelper.SelectedGpxFile) File(java.io.File)

Example 2 with TrackPointsCard

use of net.osmand.plus.track.cards.TrackPointsCard in project Osmand by osmandapp.

the class TrackMenuFragment method setupCards.

private void setupCards() {
    MapActivity mapActivity = getMapActivity();
    if (mapActivity != null) {
        ViewGroup cardsContainer = getCardsContainer();
        cardsContainer.removeAllViews();
        if (menuType == TrackMenuType.TRACK) {
            if (segmentsCard != null && segmentsCard.getView() != null) {
                reattachCard(cardsContainer, segmentsCard);
            } else {
                segmentsCard = new SegmentsCard(mapActivity, displayHelper, gpxPoint, selectedGpxFile, this);
                segmentsCard.setListener(this);
                cardsContainer.addView(segmentsCard.build(mapActivity));
            }
        } else if (menuType == TrackMenuType.OPTIONS) {
            if (optionsCard != null && optionsCard.getView() != null) {
                reattachCard(cardsContainer, optionsCard);
            } else {
                optionsCard = new OptionsCard(mapActivity, displayHelper, selectedGpxFile);
                optionsCard.setListener(this);
                cardsContainer.addView(optionsCard.build(mapActivity));
            }
        } else if (menuType == TrackMenuType.OVERVIEW) {
            if (overviewCard != null && overviewCard.getView() != null) {
                reattachCard(cardsContainer, overviewCard);
            } else {
                overviewCard = new OverviewCard(mapActivity, this, selectedGpxFile, analyses, this);
                overviewCard.setListener(this);
                cardsContainer.addView(overviewCard.build(mapActivity));
                if (isCurrentRecordingTrack()) {
                    overviewCard.getBlockStatisticsBuilder().runUpdatingStatBlocksIfNeeded();
                }
            }
            if (descriptionCard != null && descriptionCard.getView() != null) {
                reattachCard(cardsContainer, descriptionCard);
            } else {
                descriptionCard = new DescriptionCard(getMapActivity(), this, displayHelper.getGpx());
                cardsContainer.addView(descriptionCard.build(mapActivity));
            }
            if (gpxInfoCard != null && gpxInfoCard.getView() != null) {
                reattachCard(cardsContainer, gpxInfoCard);
            } else {
                gpxInfoCard = new GpxInfoCard(getMapActivity(), displayHelper.getGpx());
                cardsContainer.addView(gpxInfoCard.build(mapActivity));
            }
        } else if (menuType == TrackMenuType.POINTS) {
            if (pointsCard != null && pointsCard.getView() != null) {
                reattachCard(cardsContainer, pointsCard);
            } else {
                pointsCard = new TrackPointsCard(mapActivity, displayHelper, selectedGpxFile);
                pointsCard.setListener(this);
                cardsContainer.addView(pointsCard.build(mapActivity));
            }
        }
    }
}
Also used : OptionsCard(net.osmand.plus.track.cards.OptionsCard) DescriptionCard(net.osmand.plus.track.cards.DescriptionCard) ViewGroup(android.view.ViewGroup) OverviewCard(net.osmand.plus.track.cards.OverviewCard) SegmentsCard(net.osmand.plus.track.cards.SegmentsCard) GpxInfoCard(net.osmand.plus.track.cards.GpxInfoCard) TrackPointsCard(net.osmand.plus.track.cards.TrackPointsCard) MapActivity(net.osmand.plus.activities.MapActivity)

Aggregations

MapActivity (net.osmand.plus.activities.MapActivity)2 OptionsCard (net.osmand.plus.track.cards.OptionsCard)2 OverviewCard (net.osmand.plus.track.cards.OverviewCard)2 SegmentsCard (net.osmand.plus.track.cards.SegmentsCard)2 TrackPointsCard (net.osmand.plus.track.cards.TrackPointsCard)2 DialogInterface (android.content.DialogInterface)1 OnClickListener (android.view.View.OnClickListener)1 ViewGroup (android.view.ViewGroup)1 AlertDialog (androidx.appcompat.app.AlertDialog)1 FragmentManager (androidx.fragment.app.FragmentManager)1 File (java.io.File)1 GPXFile (net.osmand.GPXUtilities.GPXFile)1 TrkSegment (net.osmand.GPXUtilities.TrkSegment)1 PointDescription (net.osmand.data.PointDescription)1 QuadRect (net.osmand.data.QuadRect)1 OsmandApplication (net.osmand.plus.OsmandApplication)1 OpenGpxDetailsTask (net.osmand.plus.mapcontextmenu.controllers.SelectedGpxMenuController.OpenGpxDetailsTask)1 GpxInfo (net.osmand.plus.myplaces.ui.AvailableGPXFragment.GpxInfo)1 OsmEditingPlugin (net.osmand.plus.plugins.osmedit.OsmEditingPlugin)1 DescriptionCard (net.osmand.plus.track.cards.DescriptionCard)1