fix #1957 open MarkerEditActivity to receive external marker (#1960)

* fix #1957 add CreateMarkerActivity to receive external marker
This commit is contained in:
Peter Storch
2024-07-30 15:24:18 +02:00
committed by GitHub
parent d8acf7df22
commit 389c4bed96
20 changed files with 226 additions and 415 deletions
@@ -0,0 +1,39 @@
package de.dennisguse.opentracks.publicapi;
import android.content.Intent;
import android.location.Location;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.services.TrackRecordingServiceConnection;
import de.dennisguse.opentracks.ui.markers.MarkerEditActivity;
import de.dennisguse.opentracks.util.IntentUtils;
/**
* Public API to creates a Marker for a given track with a given location
*/
public class CreateMarkerActivity extends AppCompatActivity {
public static final String EXTRA_TRACK_ID = "track_id";
public static final String EXTRA_LOCATION = "location";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Track.Id trackId = new Track.Id(getIntent().getLongExtra(EXTRA_TRACK_ID, 0L));
Location location = getIntent().getParcelableExtra(EXTRA_LOCATION);
TrackRecordingServiceConnection.execute(this, (service, self) -> {
Intent intent = IntentUtils
.newIntent(this, MarkerEditActivity.class)
.putExtra(MarkerEditActivity.EXTRA_TRACK_ID, trackId)
.putExtra(MarkerEditActivity.EXTRA_LOCATION, location);
startActivity(intent);
finish();
});
}
}
@@ -0,0 +1,57 @@
package de.dennisguse.opentracks.publicapi;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentStatePagerAdapter;
import androidx.viewpager.widget.ViewPager;
import java.util.ArrayList;
import java.util.List;
import de.dennisguse.opentracks.AbstractActivity;
import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.data.ContentProviderUtils;
import de.dennisguse.opentracks.data.models.Marker;
import de.dennisguse.opentracks.databinding.MarkerDetailActivityBinding;
import de.dennisguse.opentracks.ui.markers.DeleteMarkerDialogFragment.DeleteMarkerCaller;
import de.dennisguse.opentracks.ui.markers.MarkerDetailActivity;
import de.dennisguse.opentracks.ui.markers.MarkerDetailFragment;
import de.dennisguse.opentracks.util.IntentUtils;
/**
* Public api to show an existing marker
*/
public class ShowMarkerActivity extends AppCompatActivity {
public static final String EXTRA_MARKER_ID = "marker_id";
private static final String TAG = ShowMarkerActivity.class.getSimpleName();
private MarkerDetailActivityBinding viewBinding;
private List<Marker.Id> markerIds;
@Override
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
Marker.Id markerId = new Marker.Id(getIntent().getLongExtra(EXTRA_MARKER_ID, 0));
if (markerId.id() == 0) {
throw new IllegalStateException("No valid markerId provided");
}
Intent intent = IntentUtils.newIntent(this, MarkerDetailActivity.class)
.putExtra(MarkerDetailActivity.EXTRA_MARKER_ID, markerId);
startActivity(intent);
finish();
}
}