adjusted distance time and markers to be horizontally consistent

formatter

initial date and time are always visible in the list while recording
This commit is contained in:
discollizard
2026-01-01 14:01:43 -03:00
parent 278f6323f1
commit 5f083de530
3 changed files with 72 additions and 57 deletions
@@ -31,7 +31,6 @@ import de.dennisguse.opentracks.util.IntentUtils;
public class TrackListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements ActionMode.Callback {
private static final String TAG = TrackListAdapter.class.getSimpleName();
private final AppCompatActivity context;
private final RecyclerView recyclerView;
@@ -193,19 +192,25 @@ public class TrackListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHold
viewBinding.trackListItemName.setText(tracksListItem.name());
String timeDistanceText = ListItemUtils.getTimeDistanceText(context, unitSystem, isRecordingThisTrackRecording, tracksListItem.totalTime(), tracksListItem.totalDistance(), tracksListItem.markerCount());
viewBinding.trackListItemTimeDistance.setText(timeDistanceText);
String timeText = ListItemUtils.getTimeText(context, isRecordingThisTrackRecording, tracksListItem.totalTime());
String distanceText = ListItemUtils.getDistanceText(context, unitSystem, isRecordingThisTrackRecording, tracksListItem.totalDistance());
viewBinding.trackListItemMarkerCountIcon.setVisibility(tracksListItem.markerCount() > 0 ? View.VISIBLE : View.GONE);
viewBinding.trackListItemMarkerCount.setText(tracksListItem.markerCount() > 0 ? Integer.toString(tracksListItem.markerCount()) : null);
viewBinding.trackListItemDistance.setText(distanceText);
viewBinding.trackListItemDuration.setText(timeText);
if (!recordingStatus.isRecording()) {
ListItemUtils.setDateAndTime(context, viewBinding.trackListItemDate, viewBinding.trackListItemTime, tracksListItem.startTime(), tracksListItem.zoneOffset());
if (tracksListItem.markerCount() > 0) {
viewBinding.trackListItemDistanceMarkerSeparator.setVisibility(View.VISIBLE);
viewBinding.trackListItemMarkerCountIcon.setVisibility(View.VISIBLE);
viewBinding.trackListItemMarkerCount.setText(Integer.toString(tracksListItem.markerCount()));
} else {
viewBinding.trackListItemDate.setText(null);
viewBinding.trackListItemTime.setText(null);
viewBinding.trackListItemDistanceMarkerSeparator.setVisibility(View.GONE);
viewBinding.trackListItemMarkerCountIcon.setVisibility(View.GONE);
viewBinding.trackListItemMarkerCount.setText(null);
}
ListItemUtils.setDateAndTime(context, viewBinding.trackListItemDate, viewBinding.trackListItemTime, tracksListItem.startTime(), tracksListItem.zoneOffset());
viewBinding.trackListItemActivityTypeLocalized.setText(tracksListItem.activityTypeLocalized());
viewBinding.trackListItemActivityTypeLocalized.setVisibility(TextUtils.isEmpty(tracksListItem.activityTypeLocalized()) ? View.GONE : View.VISIBLE);
@@ -17,7 +17,6 @@
package de.dennisguse.opentracks.ui.util;
import android.content.Context;
import android.text.TextUtils;
import android.widget.TextView;
import java.time.Duration;
@@ -42,50 +41,30 @@ public class ListItemUtils {
private ListItemUtils() {
}
/**
* Gets a string for share owner, total time, and total distance.
*
* @param totalTime the total time. Can be null
* @param totalDistance the total distance. Can be null
*/
private static String getTimeDistance(String totalTime, String totalDistance) {
StringBuilder builder = new StringBuilder();
if (!TextUtils.isEmpty(totalTime)) {
if (builder.length() != 0) {
builder.append(" ‧ ");
}
builder.append(totalTime);
public static String getTimeText(Context context, boolean isRecording, Duration totalTime) {
String timeText;
if (isRecording) {
timeText = context.getString(R.string.generic_recording);
} else {
timeText = StringUtils.formatElapsedTime(totalTime);
}
if (!TextUtils.isEmpty(totalDistance)) {
if (builder.length() != 0) {
builder.append(" ");
}
//TODO Use strings.xml
builder.append("(").append(totalDistance).append(")");
}
return builder.toString();
return timeText;
}
public static String getTimeDistanceText(Context context, UnitSystem unitSystem, boolean isRecording, Duration totalTime, Distance totalDistance, int markerCount) {
String timeDistanceText;
if (isRecording) {
timeDistanceText = context.getString(R.string.generic_recording);
} else {
// Match list_item_time_distance in list_item.xml
public static String getDistanceText(Context context, UnitSystem unitSystem, boolean isRecording, Distance totalDistance) {
String time = StringUtils.formatElapsedTime(totalTime);
String distance = DistanceFormatter.Builder()
StringBuilder builder = new StringBuilder();
if (!isRecording) {
String distanceText = DistanceFormatter.Builder()
.setUnit(unitSystem)
.build(context)
.formatDistance(totalDistance);
timeDistanceText = getTimeDistance(time, distance);
if (markerCount > 0) {
timeDistanceText += " ‧";
}
builder.append("(").append(distanceText).append(")");
}
return timeDistanceText;
return builder.toString();
}
public static void setDateAndTime(Context context, TextView dateView, TextView timeView, Instant time, ZoneOffset timeZone) {