forked from upstream-mirrors/OpenTracks
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 {
|
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 AppCompatActivity context;
|
||||||
private final RecyclerView recyclerView;
|
private final RecyclerView recyclerView;
|
||||||
@@ -193,19 +192,25 @@ public class TrackListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHold
|
|||||||
|
|
||||||
viewBinding.trackListItemName.setText(tracksListItem.name());
|
viewBinding.trackListItemName.setText(tracksListItem.name());
|
||||||
|
|
||||||
String timeDistanceText = ListItemUtils.getTimeDistanceText(context, unitSystem, isRecordingThisTrackRecording, tracksListItem.totalTime(), tracksListItem.totalDistance(), tracksListItem.markerCount());
|
String timeText = ListItemUtils.getTimeText(context, isRecordingThisTrackRecording, tracksListItem.totalTime());
|
||||||
viewBinding.trackListItemTimeDistance.setText(timeDistanceText);
|
String distanceText = ListItemUtils.getDistanceText(context, unitSystem, isRecordingThisTrackRecording, tracksListItem.totalDistance());
|
||||||
|
|
||||||
viewBinding.trackListItemMarkerCountIcon.setVisibility(tracksListItem.markerCount() > 0 ? View.VISIBLE : View.GONE);
|
viewBinding.trackListItemDistance.setText(distanceText);
|
||||||
viewBinding.trackListItemMarkerCount.setText(tracksListItem.markerCount() > 0 ? Integer.toString(tracksListItem.markerCount()) : null);
|
viewBinding.trackListItemDuration.setText(timeText);
|
||||||
|
|
||||||
if (!recordingStatus.isRecording()) {
|
if (tracksListItem.markerCount() > 0) {
|
||||||
ListItemUtils.setDateAndTime(context, viewBinding.trackListItemDate, viewBinding.trackListItemTime, tracksListItem.startTime(), tracksListItem.zoneOffset());
|
viewBinding.trackListItemDistanceMarkerSeparator.setVisibility(View.VISIBLE);
|
||||||
|
viewBinding.trackListItemMarkerCountIcon.setVisibility(View.VISIBLE);
|
||||||
|
viewBinding.trackListItemMarkerCount.setText(Integer.toString(tracksListItem.markerCount()));
|
||||||
} else {
|
} else {
|
||||||
viewBinding.trackListItemDate.setText(null);
|
viewBinding.trackListItemDistanceMarkerSeparator.setVisibility(View.GONE);
|
||||||
viewBinding.trackListItemTime.setText(null);
|
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.setText(tracksListItem.activityTypeLocalized());
|
||||||
viewBinding.trackListItemActivityTypeLocalized.setVisibility(TextUtils.isEmpty(tracksListItem.activityTypeLocalized()) ? View.GONE : View.VISIBLE);
|
viewBinding.trackListItemActivityTypeLocalized.setVisibility(TextUtils.isEmpty(tracksListItem.activityTypeLocalized()) ? View.GONE : View.VISIBLE);
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,6 @@
|
|||||||
package de.dennisguse.opentracks.ui.util;
|
package de.dennisguse.opentracks.ui.util;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.text.TextUtils;
|
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
@@ -42,50 +41,30 @@ public class ListItemUtils {
|
|||||||
private ListItemUtils() {
|
private ListItemUtils() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public static String getTimeText(Context context, boolean isRecording, Duration totalTime) {
|
||||||
* Gets a string for share owner, total time, and total distance.
|
String timeText;
|
||||||
*
|
if (isRecording) {
|
||||||
* @param totalTime the total time. Can be null
|
timeText = context.getString(R.string.generic_recording);
|
||||||
* @param totalDistance the total distance. Can be null
|
} else {
|
||||||
*/
|
timeText = StringUtils.formatElapsedTime(totalTime);
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
if (!TextUtils.isEmpty(totalDistance)) {
|
return timeText;
|
||||||
if (builder.length() != 0) {
|
|
||||||
builder.append(" ");
|
|
||||||
}
|
|
||||||
//TODO Use strings.xml
|
|
||||||
builder.append("(").append(totalDistance).append(")");
|
|
||||||
}
|
|
||||||
return builder.toString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getTimeDistanceText(Context context, UnitSystem unitSystem, boolean isRecording, Duration totalTime, Distance totalDistance, int markerCount) {
|
public static String getDistanceText(Context context, UnitSystem unitSystem, boolean isRecording, Distance totalDistance) {
|
||||||
String timeDistanceText;
|
|
||||||
if (isRecording) {
|
|
||||||
timeDistanceText = context.getString(R.string.generic_recording);
|
|
||||||
} else {
|
|
||||||
// Match list_item_time_distance in list_item.xml
|
|
||||||
|
|
||||||
String time = StringUtils.formatElapsedTime(totalTime);
|
StringBuilder builder = new StringBuilder();
|
||||||
String distance = DistanceFormatter.Builder()
|
|
||||||
|
if (!isRecording) {
|
||||||
|
String distanceText = DistanceFormatter.Builder()
|
||||||
.setUnit(unitSystem)
|
.setUnit(unitSystem)
|
||||||
.build(context)
|
.build(context)
|
||||||
.formatDistance(totalDistance);
|
.formatDistance(totalDistance);
|
||||||
|
|
||||||
timeDistanceText = getTimeDistance(time, distance);
|
builder.append("(").append(distanceText).append(")");
|
||||||
if (markerCount > 0) {
|
|
||||||
timeDistanceText += " ‧";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return timeDistanceText;
|
return builder.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void setDateAndTime(Context context, TextView dateView, TextView timeView, Instant time, ZoneOffset timeZone) {
|
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_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@drawable/activated_background"
|
android:background="@drawable/activated_background"
|
||||||
android:paddingTop="8dp"
|
android:paddingHorizontal="8dp"
|
||||||
android:paddingHorizontal="8dp">
|
android:paddingTop="8dp">
|
||||||
|
|
||||||
<!-- Icon -->
|
<!-- Icon -->
|
||||||
<ImageView
|
<ImageView
|
||||||
@@ -27,8 +27,8 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="8dp"
|
android:layout_marginStart="8dp"
|
||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
app:layout_constraintStart_toEndOf="@id/track_list_item_icon"
|
|
||||||
app:layout_constraintEnd_toStartOf="@id/track_list_item_date"
|
app:layout_constraintEnd_toStartOf="@id/track_list_item_date"
|
||||||
|
app:layout_constraintStart_toEndOf="@id/track_list_item_icon"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
tools:text="Main Text" />
|
tools:text="Main Text" />
|
||||||
|
|
||||||
@@ -44,14 +44,41 @@
|
|||||||
tools:text="2022-02-17" />
|
tools:text="2022-02-17" />
|
||||||
|
|
||||||
<!-- Total time and distance -->
|
<!-- Total time and distance -->
|
||||||
<TextView
|
<LinearLayout
|
||||||
android:id="@+id/track_list_item_time_distance"
|
android:id="@+id/track_list_item_duration_distance_wrapper"
|
||||||
style="?attr/textAppearanceBodySmall"
|
android:layout_width="150dp"
|
||||||
android:layout_width="0dp"
|
android:layout_height="18dp"
|
||||||
android:layout_height="wrap_content"
|
android:orientation="horizontal"
|
||||||
app:layout_constraintStart_toStartOf="@id/track_list_item_name"
|
app:layout_constraintStart_toStartOf="@id/track_list_item_name"
|
||||||
app:layout_constraintTop_toBottomOf="@id/track_list_item_name"
|
app:layout_constraintTop_toBottomOf="@id/track_list_item_name">
|
||||||
tools:text="50:43 (50.00km)" />
|
|
||||||
|
<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 -->
|
<!-- Marker Count Icon -->
|
||||||
<ImageView
|
<ImageView
|
||||||
@@ -61,8 +88,8 @@
|
|||||||
android:contentDescription="@string/image_marker_count"
|
android:contentDescription="@string/image_marker_count"
|
||||||
android:scaleType="centerInside"
|
android:scaleType="centerInside"
|
||||||
android:src="@drawable/ic_marker_show_24dp"
|
android:src="@drawable/ic_marker_show_24dp"
|
||||||
app:layout_constraintBottom_toBottomOf="@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_time_distance"
|
app:layout_constraintStart_toEndOf="@+id/track_list_item_distance_marker_separator"
|
||||||
app:layout_constraintTop_toBottomOf="@id/track_list_item_name" />
|
app:layout_constraintTop_toBottomOf="@id/track_list_item_name" />
|
||||||
|
|
||||||
<!-- Marker count -->
|
<!-- Marker count -->
|
||||||
@@ -93,7 +120,7 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
app:barrierDirection="bottom"
|
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 -->
|
<!-- Category and description -->
|
||||||
<TextView
|
<TextView
|
||||||
@@ -129,4 +156,8 @@
|
|||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/track_list_item_description" />
|
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>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
Reference in New Issue
Block a user