mirror of
https://codeberg.org/OpenTracksApp/OpenTracks.git
synced 2026-09-30 16:52:21 +02:00
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:
@@ -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) {
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/activated_background"
|
||||
android:paddingTop="8dp"
|
||||
android:paddingHorizontal="8dp">
|
||||
android:paddingHorizontal="8dp"
|
||||
android:paddingTop="8dp">
|
||||
|
||||
<!-- Icon -->
|
||||
<ImageView
|
||||
@@ -27,8 +27,8 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:singleLine="true"
|
||||
app:layout_constraintStart_toEndOf="@id/track_list_item_icon"
|
||||
app:layout_constraintEnd_toStartOf="@id/track_list_item_date"
|
||||
app:layout_constraintStart_toEndOf="@id/track_list_item_icon"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:text="Main Text" />
|
||||
|
||||
@@ -44,14 +44,41 @@
|
||||
tools:text="2022-02-17" />
|
||||
|
||||
<!-- Total time and distance -->
|
||||
<TextView
|
||||
android:id="@+id/track_list_item_time_distance"
|
||||
style="?attr/textAppearanceBodySmall"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
<LinearLayout
|
||||
android:id="@+id/track_list_item_duration_distance_wrapper"
|
||||
android:layout_width="150dp"
|
||||
android:layout_height="18dp"
|
||||
android:orientation="horizontal"
|
||||
app:layout_constraintStart_toStartOf="@id/track_list_item_name"
|
||||
app:layout_constraintTop_toBottomOf="@id/track_list_item_name"
|
||||
tools:text="50:43 (50.00km)" />
|
||||
app:layout_constraintTop_toBottomOf="@id/track_list_item_name">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/track_list_item_duration"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:text="012:50:43" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/track_list_item_distance"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:text="(50.00km)"
|
||||
android:textAlignment="textEnd" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/track_list_item_distance_marker_separator"
|
||||
android:layout_width="10dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:text=" ‧"
|
||||
android:textAlignment="center"
|
||||
app:layout_constraintBottom_toBottomOf="@id/track_list_item_duration_distance_wrapper"
|
||||
app:layout_constraintStart_toEndOf="@id/track_list_item_duration_distance_wrapper"
|
||||
app:layout_constraintTop_toBottomOf="@id/track_list_item_name" />
|
||||
|
||||
<!-- Marker Count Icon -->
|
||||
<ImageView
|
||||
@@ -61,8 +88,8 @@
|
||||
android:contentDescription="@string/image_marker_count"
|
||||
android:scaleType="centerInside"
|
||||
android:src="@drawable/ic_marker_show_24dp"
|
||||
app:layout_constraintBottom_toBottomOf="@id/track_list_item_time_distance"
|
||||
app:layout_constraintStart_toEndOf="@id/track_list_item_time_distance"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/track_list_item_distance_marker_separator"
|
||||
app:layout_constraintStart_toEndOf="@+id/track_list_item_distance_marker_separator"
|
||||
app:layout_constraintTop_toBottomOf="@id/track_list_item_name" />
|
||||
|
||||
<!-- Marker count -->
|
||||
@@ -93,7 +120,7 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:barrierDirection="bottom"
|
||||
app:constraint_referenced_ids="track_list_item_time_distance,track_list_item_marker_count_icon,track_list_item_marker_count,track_list_item_time" />
|
||||
app:constraint_referenced_ids="track_list_item_duration_distance_wrapper,track_list_item_marker_count_icon,track_list_item_marker_count,track_list_item_time" />
|
||||
|
||||
<!-- Category and description -->
|
||||
<TextView
|
||||
@@ -129,4 +156,8 @@
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/track_list_item_description" />
|
||||
|
||||
<androidx.constraintlayout.widget.Guideline
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
Reference in New Issue
Block a user