Cleanup: ActivityType lookup.

Part of #1608.
This commit is contained in:
Dennis Guse
2023-06-23 07:35:39 +02:00
parent 55cf60ef2f
commit d316a63fca
14 changed files with 79 additions and 92 deletions
@@ -100,7 +100,7 @@ public class ContentProviderUtils {
int uuidIndex = cursor.getColumnIndexOrThrow(TracksColumns.UUID);
int nameIndex = cursor.getColumnIndexOrThrow(TracksColumns.NAME);
int descriptionIndex = cursor.getColumnIndexOrThrow(TracksColumns.DESCRIPTION);
int categoryIndex = cursor.getColumnIndexOrThrow(TracksColumns.ACTIVITY_TYPE);
int activityTypeIndex = cursor.getColumnIndexOrThrow(TracksColumns.ACTIVITY_TYPE);
int startTimeIndex = cursor.getColumnIndexOrThrow(TracksColumns.STARTTIME);
int startTimeOffsetIndex = cursor.getColumnIndexOrThrow(TracksColumns.STARTTIME_OFFSET);
int stopTimeIndex = cursor.getColumnIndexOrThrow(TracksColumns.STOPTIME);
@@ -128,8 +128,8 @@ public class ContentProviderUtils {
if (!cursor.isNull(descriptionIndex)) {
track.setDescription(cursor.getString(descriptionIndex));
}
if (!cursor.isNull(categoryIndex)) {
track.setActivityType(cursor.getString(categoryIndex));
if (!cursor.isNull(activityTypeIndex)) {
track.setActivityType(cursor.getString(activityTypeIndex));
}
if (!cursor.isNull(startTimeIndex)) {
@@ -1,6 +1,9 @@
package de.dennisguse.opentracks.data.models;
import android.content.Context;
import android.content.res.Resources;
import androidx.annotation.NonNull;
import java.util.ArrayList;
import java.util.Arrays;
@@ -32,15 +35,15 @@ public enum ActivityType {
WORKOUT("WORKOUT", R.drawable.ic_activity_workout_24dp, false, R.string.activity_type_workout);
final String id;
final int iconId;
final int iconDrawableId;
final boolean showSpeedPreferred;
final int[] localizedStringIds;
//isSpeed?
ActivityType(String id, int iconId, boolean showSpeedPreferred, int... localizedStringIds) {
ActivityType(String id, int iconDrawableId, boolean showSpeedPreferred, int... localizedStringIds) {
this.id = id;
this.iconId = iconId;
this.iconDrawableId = iconDrawableId;
this.showSpeedPreferred = showSpeedPreferred;
this.localizedStringIds = localizedStringIds;
}
@@ -49,8 +52,8 @@ public enum ActivityType {
return id;
}
public int getIconId() {
return iconId;
public int getIconDrawableId() {
return iconDrawableId;
}
public boolean isShowSpeedPreferred() {
@@ -76,4 +79,25 @@ public enum ActivityType {
return result;
}
@NonNull
public static ActivityType findByActivityTypeId(String activityTypeId) {
return Arrays.stream(ActivityType.values()).filter(
it -> it.getId().equals(activityTypeId)
).findFirst()
.orElse(ActivityType.UNKNOWN);
}
public static ActivityType findByLocalizedString(Context context, String localizedActivityType) {
return findByLocalizedString(context.getResources(), localizedActivityType);
}
public static ActivityType findByLocalizedString(Resources resources, String localizedActivityType) {
return Arrays.stream(ActivityType.values())
.filter(
it -> Arrays.stream(it.getLocalizedStringIds())
.anyMatch(id -> resources.getString(id).equals(localizedActivityType))
).findFirst()
.orElse(ActivityType.UNKNOWN);
}
}