forked from upstream-mirrors/OpenTracks
Marker is now a record.
This commit is contained in:
@@ -67,14 +67,14 @@ public class MarkerDetailActivity extends AbstractActivity implements DeleteMark
|
||||
ContentProviderUtils contentProviderUtils = new ContentProviderUtils(this);
|
||||
Marker marker = contentProviderUtils.getMarker(markerId);
|
||||
|
||||
markerAutoCloseableIterator = contentProviderUtils.getMarkerIterator(marker.getTrackId());
|
||||
markerAutoCloseableIterator = contentProviderUtils.getMarkerIterator(marker.trackId());
|
||||
if (markerAutoCloseableIterator == null) {
|
||||
finish();
|
||||
}
|
||||
|
||||
int markerIndex = -1;
|
||||
while (markerAutoCloseableIterator.hasNext()) {
|
||||
if (markerId.equals(markerAutoCloseableIterator.next().getId())) {
|
||||
if (markerId.equals(markerAutoCloseableIterator.next().id())) {
|
||||
markerIndex = markerAutoCloseableIterator.getPosition();
|
||||
break;
|
||||
}
|
||||
@@ -124,7 +124,7 @@ public class MarkerDetailActivity extends AbstractActivity implements DeleteMark
|
||||
@NonNull
|
||||
public Fragment createFragment(int position) {
|
||||
markerAutoCloseableIterator.moveToPosition(position);
|
||||
return MarkerDetailFragment.newInstance(markerAutoCloseableIterator.next().getId());
|
||||
return MarkerDetailFragment.newInstance(markerAutoCloseableIterator.next().id());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -135,7 +135,7 @@ public class MarkerDetailActivity extends AbstractActivity implements DeleteMark
|
||||
@Nullable
|
||||
public CharSequence getPageTitle(int position) {
|
||||
markerAutoCloseableIterator.moveToPosition(position);
|
||||
return getString(R.string.marker_detail_title, position + 1, getItemCount(), markerAutoCloseableIterator.next().getName());
|
||||
return getString(R.string.marker_detail_title, position + 1, getItemCount(), markerAutoCloseableIterator.next().name());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -111,8 +111,8 @@ public class MarkerDetailFragment extends Fragment {
|
||||
}
|
||||
|
||||
if (item.getItemId() == R.id.marker_detail_share) {
|
||||
if (marker.hasPhoto()) {
|
||||
Intent intent = ShareUtils.newShareFileIntent(getContext(), marker.getId());
|
||||
if (marker.photoUrl() != null) {
|
||||
Intent intent = ShareUtils.newShareFileIntent(getContext(), marker.id());
|
||||
intent = Intent.createChooser(intent, null);
|
||||
startActivity(intent);
|
||||
}
|
||||
@@ -180,15 +180,15 @@ public class MarkerDetailFragment extends Fragment {
|
||||
}
|
||||
|
||||
private void updateUi() {
|
||||
if (marker.hasPhoto()) {
|
||||
viewBinding.markerDetailMarkerPhoto.setImageURI(marker.getPhotoUrl());
|
||||
if (marker.photoUrl() != null) {
|
||||
viewBinding.markerDetailMarkerPhoto.setImageURI(marker.photoUrl());
|
||||
} else {
|
||||
viewBinding.markerDetailMarkerPhoto.setImageDrawable(MarkerUtils.getDefaultPhoto(getContext()));
|
||||
}
|
||||
|
||||
viewBinding.markerDetailMarkerCategory.setText(StringUtils.getCategory(marker.getCategory()));
|
||||
viewBinding.markerDetailMarkerDescription.setText(marker.getDescription());
|
||||
viewBinding.markerDetailMarkerCategory.setText(StringUtils.getCategory(marker.category()));
|
||||
viewBinding.markerDetailMarkerDescription.setText(marker.description());
|
||||
|
||||
viewBinding.markerDetailMarkerLocation.setText(StringUtils.formatCoordinate(getContext(), marker.getPosition()));
|
||||
viewBinding.markerDetailMarkerLocation.setText(StringUtils.formatCoordinate(getContext(), marker.position()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,6 +47,7 @@ import java.time.Instant;
|
||||
import de.dennisguse.opentracks.AbstractActivity;
|
||||
import de.dennisguse.opentracks.R;
|
||||
import de.dennisguse.opentracks.data.models.Marker;
|
||||
import de.dennisguse.opentracks.data.models.MarkerBuilder;
|
||||
import de.dennisguse.opentracks.data.models.Position;
|
||||
import de.dennisguse.opentracks.data.models.Track;
|
||||
import de.dennisguse.opentracks.data.models.TrackPoint;
|
||||
@@ -181,11 +182,11 @@ public class MarkerEditActivity extends AbstractActivity {
|
||||
|
||||
private void loadMarkerData(Marker data) {
|
||||
marker = data;
|
||||
viewBinding.markerEditName.setText(marker.getName());
|
||||
viewBinding.markerEditMarkerType.setText(marker.getCategory());
|
||||
viewBinding.markerEditDescription.setText(marker.getDescription());
|
||||
if (marker.hasPhoto()) {
|
||||
setMarkerImageView(marker.getPhotoUrl());
|
||||
viewBinding.markerEditName.setText(marker.name());
|
||||
viewBinding.markerEditMarkerType.setText(marker.category());
|
||||
viewBinding.markerEditDescription.setText(marker.description());
|
||||
if (marker.photoUrl() != null) {
|
||||
setMarkerImageView(marker.photoUrl());
|
||||
} else {
|
||||
viewBinding.markerEditPhoto.setImageDrawable(null);
|
||||
}
|
||||
@@ -247,7 +248,7 @@ public class MarkerEditActivity extends AbstractActivity {
|
||||
* If a photo is set then one's options are shown, otherwise another ones are shown.
|
||||
*/
|
||||
private void hideAndShowOptions() {
|
||||
boolean isPhotoSet = (marker != null && marker.hasPhoto());
|
||||
boolean isPhotoSet = (marker != null && marker.photoUrl() != null);
|
||||
if (insertPhotoMenuItem != null && insertGalleryImgMenuItem != null) {
|
||||
insertPhotoMenuItem.setVisible(!isPhotoSet);
|
||||
insertGalleryImgMenuItem.setVisible(!isPhotoSet);
|
||||
@@ -259,7 +260,7 @@ public class MarkerEditActivity extends AbstractActivity {
|
||||
* Returns the trackId; either from track or marker.
|
||||
*/
|
||||
private Track.Id getTrackId() {
|
||||
return trackId == null ? marker.getTrackId() : trackId;
|
||||
return trackId == null ? marker.trackId() : trackId;
|
||||
}
|
||||
|
||||
private void setMarkerImageView(@NonNull Uri uri) {
|
||||
|
||||
@@ -20,6 +20,7 @@ import java.util.NoSuchElementException;
|
||||
import de.dennisguse.opentracks.R;
|
||||
import de.dennisguse.opentracks.data.ContentProviderUtils;
|
||||
import de.dennisguse.opentracks.data.models.Marker;
|
||||
import de.dennisguse.opentracks.data.models.MarkerBuilder;
|
||||
import de.dennisguse.opentracks.data.models.Track;
|
||||
import de.dennisguse.opentracks.data.models.TrackPoint;
|
||||
import de.dennisguse.opentracks.util.FileUtils;
|
||||
@@ -40,8 +41,8 @@ public class MarkerEditViewModel extends AndroidViewModel {
|
||||
markerData = new MutableLiveData<>();
|
||||
|
||||
Marker marker = new ContentProviderUtils(getApplication()).getMarker(markerId);
|
||||
if (marker.hasPhoto()) {
|
||||
photoOriginalUri = marker.getPhotoUrl();
|
||||
if (marker.photoUrl() != null) {
|
||||
photoOriginalUri = marker.photoUrl();
|
||||
}
|
||||
|
||||
markerData.postValue(marker);
|
||||
@@ -63,20 +64,20 @@ public class MarkerEditViewModel extends AndroidViewModel {
|
||||
return;
|
||||
}
|
||||
|
||||
File photoFile = MarkerUtils.getPhotoFileIfExists(getApplication(), markerData.getValue().getTrackId(), photoUri);
|
||||
File photoFile = MarkerUtils.getPhotoFileIfExists(getApplication(), markerData.getValue().trackId(), photoUri);
|
||||
if (photoFile != null) {
|
||||
FileUtils.deleteDirectoryRecurse(photoFile);
|
||||
}
|
||||
}
|
||||
|
||||
private void deletePhoto(Marker marker) {
|
||||
if (marker.hasPhoto()) {
|
||||
deletePhoto(marker.getPhotoUrl());
|
||||
if (marker.photoUrl() != null) {
|
||||
deletePhoto(marker.photoUrl());
|
||||
}
|
||||
}
|
||||
|
||||
public void onPhotoDelete(String name, String category, String description) {
|
||||
Marker marker = getMarker();
|
||||
MarkerBuilder marker = new MarkerBuilder(getMarker());
|
||||
if (marker.hasPhoto()) {
|
||||
if (!marker.getPhotoUrl().equals(photoOriginalUri)) {
|
||||
deletePhoto(marker.getPhotoUrl());
|
||||
@@ -85,21 +86,21 @@ public class MarkerEditViewModel extends AndroidViewModel {
|
||||
marker.setName(name);
|
||||
marker.setCategory(category);
|
||||
marker.setDescription(description);
|
||||
markerData.postValue(marker);
|
||||
markerData.postValue(marker.getMarker());
|
||||
}
|
||||
}
|
||||
|
||||
public void onNewCameraPhoto(@NonNull Uri photoUri, String name, String category, String description) {
|
||||
Marker marker = getMarker();
|
||||
MarkerBuilder marker = new MarkerBuilder(getMarker());
|
||||
marker.setPhotoUrl(photoUri);
|
||||
marker.setName(name);
|
||||
marker.setCategory(category);
|
||||
marker.setDescription(description);
|
||||
markerData.postValue(marker);
|
||||
markerData.postValue(marker.getMarker());
|
||||
}
|
||||
|
||||
public void onNewGalleryPhoto(@NonNull Uri srcUri, String name, String category, String description) {
|
||||
Marker marker = getMarker();
|
||||
MarkerBuilder marker = new MarkerBuilder(getMarker());
|
||||
|
||||
try (ParcelFileDescriptor parcelFd = getApplication().getContentResolver().openFileDescriptor(srcUri, "r")) {
|
||||
FileDescriptor srcFd = parcelFd.getFileDescriptor();
|
||||
@@ -111,7 +112,8 @@ public class MarkerEditViewModel extends AndroidViewModel {
|
||||
marker.setName(name);
|
||||
marker.setCategory(category);
|
||||
marker.setDescription(description);
|
||||
markerData.postValue(marker);
|
||||
|
||||
markerData.postValue(marker.getMarker());
|
||||
} catch (IOException e) {
|
||||
Log.e(TAG, e.getMessage());
|
||||
Toast.makeText(getApplication(), R.string.marker_add_canceled, Toast.LENGTH_LONG).show();
|
||||
@@ -119,15 +121,15 @@ public class MarkerEditViewModel extends AndroidViewModel {
|
||||
}
|
||||
|
||||
public void onDone(String name, String category, String description) {
|
||||
Marker marker = getMarker();
|
||||
MarkerBuilder marker = new MarkerBuilder(getMarker());
|
||||
|
||||
marker.setName(name);
|
||||
marker.setCategory(category);
|
||||
marker.setDescription(description);
|
||||
if (marker.getId() == null) {
|
||||
new ContentProviderUtils(getApplication()).insertMarker(marker);
|
||||
new ContentProviderUtils(getApplication()).insertMarker(marker.getMarker());
|
||||
} else {
|
||||
new ContentProviderUtils(getApplication()).updateMarker(getApplication(), marker);
|
||||
new ContentProviderUtils(getApplication()).updateMarker(getApplication(), marker.getMarker());
|
||||
}
|
||||
|
||||
if (photoOriginalUri != null && (!marker.hasPhoto() || !photoOriginalUri.equals(marker.getPhotoUrl()))) {
|
||||
@@ -143,7 +145,15 @@ public class MarkerEditViewModel extends AndroidViewModel {
|
||||
String name = getApplication().getString(R.string.marker_name_format, nextMarkerNumber + 1);
|
||||
String icon = getApplication().getString(R.string.marker_icon_url);
|
||||
|
||||
Marker marker = new Marker(trackId, trackPoint, name, "", "", icon, null);
|
||||
Marker marker = new Marker(
|
||||
null,
|
||||
trackId,
|
||||
name,
|
||||
"",
|
||||
icon,
|
||||
"",
|
||||
trackPoint.getPosition(),
|
||||
null);
|
||||
|
||||
if (markerData == null) {
|
||||
markerData = new MutableLiveData<>();
|
||||
@@ -158,7 +168,7 @@ public class MarkerEditViewModel extends AndroidViewModel {
|
||||
// it's new marker -> clean all photos.
|
||||
deletePhoto(marker);
|
||||
deletePhoto(photoOriginalUri);
|
||||
} else if (photoOriginalUri == null || (marker.hasPhoto() && !marker.getPhotoUrl().equals(photoOriginalUri))) {
|
||||
} else if (photoOriginalUri == null || (marker.photoUrl() != null && !marker.photoUrl().equals(photoOriginalUri))) {
|
||||
// it's an edit marker -> delete photo if it was empty or it was changed (leaving the original in that case).
|
||||
deletePhoto(marker);
|
||||
}
|
||||
|
||||
@@ -137,7 +137,7 @@ public class MarkerListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
|
||||
public void setAllSelected(boolean isSelected) {
|
||||
if (isSelected) {
|
||||
for (Marker marker : markers) {
|
||||
selection.put((int) marker.getId().id(), true);
|
||||
selection.put((int) marker.id().id(), true);
|
||||
}
|
||||
} else {
|
||||
selection.clear();
|
||||
@@ -179,24 +179,24 @@ public class MarkerListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
|
||||
public void bind(Marker marker) {
|
||||
this.marker = marker;
|
||||
|
||||
viewBinding.markerListItemPhoto.setVisibility(marker.hasPhoto() ? View.VISIBLE : View.GONE);
|
||||
if (marker.hasPhoto()) {
|
||||
viewBinding.markerListItemPhoto.setVisibility(marker.photoUrl() != null ? View.VISIBLE : View.GONE);
|
||||
if (marker.photoUrl() != null) {
|
||||
int height = ThemeUtils.getPhotoHeight(context);
|
||||
ViewGroup.LayoutParams params = viewBinding.markerListItemPhoto.getLayoutParams();
|
||||
params.height = height;
|
||||
viewBinding.markerListItemPhoto.setLayoutParams(params);
|
||||
|
||||
asyncLoadPhoto(viewBinding.markerListItemPhoto, marker.getPhotoUrl(), marker.getId());
|
||||
asyncLoadPhoto(viewBinding.markerListItemPhoto, marker.photoUrl(), marker.id());
|
||||
}
|
||||
|
||||
viewBinding.markerListItemName.setText(marker.getName());
|
||||
viewBinding.markerListItemName.setText(marker.name());
|
||||
|
||||
{
|
||||
ZoneOffset timeZone = new ContentProviderUtils(context).getTrack(marker.getTrackId()).zoneOffset();
|
||||
ListItemUtils.setDateAndTime(context, viewBinding.markerListItemDate, viewBinding.markerListItemTime, marker.getTime(), timeZone);
|
||||
ZoneOffset timeZone = new ContentProviderUtils(context).getTrack(marker.trackId()).zoneOffset();
|
||||
ListItemUtils.setDateAndTime(context, viewBinding.markerListItemDate, viewBinding.markerListItemTime, marker.position().time(), timeZone);
|
||||
}
|
||||
|
||||
String categoryDescription = StringUtils.getCategoryDescription(marker.getCategory(), marker.getDescription());
|
||||
String categoryDescription = StringUtils.getCategoryDescription(marker.category(), marker.description());
|
||||
viewBinding.markerListItemTimeDistance.setText(categoryDescription);
|
||||
|
||||
setSelected(selection.get((int) getId()));
|
||||
@@ -208,7 +208,7 @@ public class MarkerListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
|
||||
}
|
||||
|
||||
public long getId() {
|
||||
return marker.getId().id();
|
||||
return marker.id().id();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -218,7 +218,7 @@ public class MarkerListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
|
||||
actionMode.invalidate();
|
||||
} else {
|
||||
Intent intent = IntentUtils.newIntent(context, MarkerDetailActivity.class)
|
||||
.putExtra(MarkerDetailActivity.EXTRA_MARKER_ID, marker.getId());
|
||||
.putExtra(MarkerDetailActivity.EXTRA_MARKER_ID, marker.id());
|
||||
context.startActivity(intent);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user