From 90446639b0a712ea743d7b06bab7ded2464d051d Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Tue, 24 Jun 2025 11:48:17 +0200 Subject: [PATCH] Cleanup: remove TrackUtils by inlining functionality. --- .../opentracks/TrackEditActivity.java | 26 ++++---- .../opentracks/TrackRecordingActivity.java | 5 +- .../opentracks/TrackStoppedActivity.java | 9 +-- .../opentracks/data/models/ActivityType.java | 2 + .../opentracks/data/models/Track.java | 6 ++ .../opentracks/publicapi/StartRecording.java | 13 ++-- .../opentracks/util/TrackUtils.java | 59 ------------------- src/main/res/layout/track_edit.xml | 2 +- 8 files changed, 37 insertions(+), 85 deletions(-) delete mode 100644 src/main/java/de/dennisguse/opentracks/util/TrackUtils.java diff --git a/src/main/java/de/dennisguse/opentracks/TrackEditActivity.java b/src/main/java/de/dennisguse/opentracks/TrackEditActivity.java index b6035d705..b2728eaee 100644 --- a/src/main/java/de/dennisguse/opentracks/TrackEditActivity.java +++ b/src/main/java/de/dennisguse/opentracks/TrackEditActivity.java @@ -31,7 +31,6 @@ import de.dennisguse.opentracks.data.models.Track; import de.dennisguse.opentracks.databinding.TrackEditBinding; import de.dennisguse.opentracks.fragments.ChooseActivityTypeDialogFragment; import de.dennisguse.opentracks.ui.ZoneOffsetAdapter; -import de.dennisguse.opentracks.util.TrackUtils; /** * An activity that let's the user see and edit the user editable track meta data such as track name, activity type, and track description. @@ -73,16 +72,16 @@ public class TrackEditActivity extends AbstractActivity implements ChooseActivit viewBinding.trackEditName.setText(track.getName()); - viewBinding.trackEditActivityType.setText(track.getActivityTypeLocalized()); + viewBinding.trackEditActivityTypeLocalized.setText(track.getActivityTypeLocalized()); ArrayAdapter adapter = new ArrayAdapter<>(this, android.R.layout.simple_dropdown_item_1line, ActivityType.getLocalizedStrings(this)); - viewBinding.trackEditActivityType.setAdapter(adapter); - viewBinding.trackEditActivityType.setOnItemClickListener((parent, view, position, id) -> { - String localizedActivityType = (String) viewBinding.trackEditActivityType.getAdapter().getItem(position); + viewBinding.trackEditActivityTypeLocalized.setAdapter(adapter); + viewBinding.trackEditActivityTypeLocalized.setOnItemClickListener((parent, view, position, id) -> { + String localizedActivityType = (String) viewBinding.trackEditActivityTypeLocalized.getAdapter().getItem(position); setActivityTypeIcon(ActivityType.findByLocalizedString(this, localizedActivityType)); }); - viewBinding.trackEditActivityType.setOnFocusChangeListener((v, hasFocus) -> { + viewBinding.trackEditActivityTypeLocalized.setOnFocusChangeListener((v, hasFocus) -> { if (!hasFocus) { - String localizedActivityType = viewBinding.trackEditActivityType.getText().toString(); + String localizedActivityType = viewBinding.trackEditActivityTypeLocalized.getText().toString(); setActivityTypeIcon(ActivityType.findByLocalizedString(this, localizedActivityType)); } }); @@ -95,7 +94,7 @@ public class TrackEditActivity extends AbstractActivity implements ChooseActivit activityType = track.getActivityType(); } setActivityTypeIcon(activityType); - viewBinding.trackEditActivityTypeIcon.setOnClickListener(v -> ChooseActivityTypeDialogFragment.showDialog(getSupportFragmentManager(), this, viewBinding.trackEditActivityType.getText().toString())); + viewBinding.trackEditActivityTypeIcon.setOnClickListener(v -> ChooseActivityTypeDialogFragment.showDialog(getSupportFragmentManager(), this, viewBinding.trackEditActivityTypeLocalized.getText().toString())); viewBinding.trackEditDescription.setText(track.getDescription()); @@ -105,9 +104,12 @@ public class TrackEditActivity extends AbstractActivity implements ChooseActivit viewBinding.trackEditTimeOffset.setOnItemClickListener((parent, view, position, id) -> track.setZoneOffset(zoneOffsetAdapter.getItem(position))); viewBinding.trackEditSave.setOnClickListener(v -> { - TrackUtils.updateTrack(TrackEditActivity.this, track, viewBinding.trackEditName.getText().toString(), - viewBinding.trackEditActivityType.getText().toString(), viewBinding.trackEditDescription.getText().toString(), - contentProviderUtils); + track.setName(viewBinding.trackEditName.getText().toString()); + track.setDescription(viewBinding.trackEditDescription.getText().toString()); + + track.setActivityTypeLocalizedAndUpdateActivityType(this, viewBinding.trackEditActivityTypeLocalized.getText().toString()); + + contentProviderUtils.updateTrack(track); finish(); }); @@ -136,6 +138,6 @@ public class TrackEditActivity extends AbstractActivity implements ChooseActivit @Override public void onChooseActivityTypeDone(ActivityType activityType) { setActivityTypeIcon(activityType); - viewBinding.trackEditActivityType.setText(getString(activityType.getLocalizedStringId())); + viewBinding.trackEditActivityTypeLocalized.setText(getString(activityType.getLocalizedStringId())); } } diff --git a/src/main/java/de/dennisguse/opentracks/TrackRecordingActivity.java b/src/main/java/de/dennisguse/opentracks/TrackRecordingActivity.java index edbd4e56c..a257098db 100644 --- a/src/main/java/de/dennisguse/opentracks/TrackRecordingActivity.java +++ b/src/main/java/de/dennisguse/opentracks/TrackRecordingActivity.java @@ -49,7 +49,6 @@ import de.dennisguse.opentracks.ui.markers.MarkerListActivity; import de.dennisguse.opentracks.ui.util.ActivityUtils; import de.dennisguse.opentracks.util.IntentDashboardUtils; import de.dennisguse.opentracks.util.IntentUtils; -import de.dennisguse.opentracks.util.TrackUtils; /** * An activity to show the track detail, record a new track or resumes an existing one. @@ -327,7 +326,9 @@ public class TrackRecordingActivity extends AbstractActivity implements ChooseAc public void onChooseActivityTypeDone(ActivityType activityType) { Track track = contentProviderUtils.getTrack(trackId); String activityTypeLocalized = getString(activityType.getLocalizedStringId()); - TrackUtils.updateTrack(this, track, null, activityTypeLocalized, null, contentProviderUtils); + track.setActivityTypeLocalizedAndUpdateActivityType(this, activityTypeLocalized); + + contentProviderUtils.updateTrack(track); } private class CustomFragmentPagerAdapter extends FragmentStateAdapter { diff --git a/src/main/java/de/dennisguse/opentracks/TrackStoppedActivity.java b/src/main/java/de/dennisguse/opentracks/TrackStoppedActivity.java index 062d4cb85..fa4cd50cf 100644 --- a/src/main/java/de/dennisguse/opentracks/TrackStoppedActivity.java +++ b/src/main/java/de/dennisguse/opentracks/TrackStoppedActivity.java @@ -22,7 +22,6 @@ import de.dennisguse.opentracks.ui.aggregatedStatistics.ConfirmDeleteDialogFragm import de.dennisguse.opentracks.util.ExportUtils; import de.dennisguse.opentracks.util.IntentUtils; import de.dennisguse.opentracks.util.StringUtils; -import de.dennisguse.opentracks.util.TrackUtils; public class TrackStoppedActivity extends AbstractTrackDeleteActivity implements ChooseActivityTypeDialogFragment.ChooseActivityTypeCaller { @@ -105,9 +104,11 @@ public class TrackStoppedActivity extends AbstractTrackDeleteActivity implements } private void storeTrackMetaData(ContentProviderUtils contentProviderUtils, Track track) { - TrackUtils.updateTrack(TrackStoppedActivity.this, track, viewBinding.trackEditName.getText().toString(), - viewBinding.trackEditActivityType.getText().toString(), viewBinding.trackEditDescription.getText().toString(), - contentProviderUtils); + track.setName(viewBinding.trackEditName.getText().toString()); + track.setDescription(viewBinding.trackEditDescription.getText().toString()); + track.setActivityTypeLocalizedAndUpdateActivityType(this, viewBinding.trackEditActivityType.getText().toString()); + + contentProviderUtils.updateTrack(track); } @NonNull diff --git a/src/main/java/de/dennisguse/opentracks/data/models/ActivityType.java b/src/main/java/de/dennisguse/opentracks/data/models/ActivityType.java index 75b111d0b..031d8d646 100644 --- a/src/main/java/de/dennisguse/opentracks/data/models/ActivityType.java +++ b/src/main/java/de/dennisguse/opentracks/data/models/ActivityType.java @@ -129,10 +129,12 @@ public enum ActivityType { .orElse(ActivityType.UNKNOWN); } + @NonNull public static ActivityType findByLocalizedString(Context context, String localizedActivityType) { return findByLocalizedString(context.getResources(), localizedActivityType); } + @NonNull public static ActivityType findByLocalizedString(Resources resources, String localizedActivityType) { return Arrays.stream(ActivityType.values()) .filter(it -> resources.getString(it.getLocalizedStringId()).equals(localizedActivityType)) diff --git a/src/main/java/de/dennisguse/opentracks/data/models/Track.java b/src/main/java/de/dennisguse/opentracks/data/models/Track.java index 9703de43d..e0a2347c6 100644 --- a/src/main/java/de/dennisguse/opentracks/data/models/Track.java +++ b/src/main/java/de/dennisguse/opentracks/data/models/Track.java @@ -16,6 +16,7 @@ package de.dennisguse.opentracks.data.models; +import android.content.Context; import android.os.Parcel; import android.os.Parcelable; @@ -113,6 +114,11 @@ public class Track { this.activityType = activityType; } + public void setActivityTypeLocalizedAndUpdateActivityType(Context context, String activityTypeLocalized) { + setActivityTypeLocalized(activityTypeLocalized); + setActivityType(ActivityType.findByLocalizedString(context, activityTypeLocalized)); + } + public ZoneOffset getZoneOffset() { return zoneOffset; } diff --git a/src/main/java/de/dennisguse/opentracks/publicapi/StartRecording.java b/src/main/java/de/dennisguse/opentracks/publicapi/StartRecording.java index bcb9bc384..9857078a1 100644 --- a/src/main/java/de/dennisguse/opentracks/publicapi/StartRecording.java +++ b/src/main/java/de/dennisguse/opentracks/publicapi/StartRecording.java @@ -10,7 +10,6 @@ import de.dennisguse.opentracks.data.models.Track; import de.dennisguse.opentracks.services.TrackRecordingService; import de.dennisguse.opentracks.settings.PreferencesUtils; import de.dennisguse.opentracks.util.IntentDashboardUtils; -import de.dennisguse.opentracks.util.TrackUtils; public class StartRecording extends AbstractAPIActivity { @@ -42,12 +41,12 @@ public class StartRecording extends AbstractAPIActivity { ContentProviderUtils contentProviderUtils = new ContentProviderUtils(this); Track track = contentProviderUtils.getTrack(trackId); - TrackUtils.updateTrack(this, track, - bundle.getString(EXTRA_TRACK_NAME, null), - bundle.getString(EXTRA_TRACK_ACTIVITY_TYPE_LOCALIZED, null), - ActivityType.findBy(bundle.getString(EXTRA_TRACK_ACTIVITY_TYPE_ID, null)), - bundle.getString(EXTRA_TRACK_DESCRIPTION, null), - contentProviderUtils); + track.setName(bundle.getString(EXTRA_TRACK_NAME, "")); + track.setDescription(bundle.getString(EXTRA_TRACK_DESCRIPTION, "")); + track.setActivityType(ActivityType.findBy(bundle.getString(EXTRA_TRACK_ACTIVITY_TYPE_ID, null))); + track.setActivityTypeLocalized(bundle.getString(EXTRA_TRACK_ACTIVITY_TYPE_LOCALIZED, "")); + + contentProviderUtils.updateTrack(track); } private void startDashboardAPI(@NonNull Track.Id trackId, @NonNull Bundle bundle) { diff --git a/src/main/java/de/dennisguse/opentracks/util/TrackUtils.java b/src/main/java/de/dennisguse/opentracks/util/TrackUtils.java deleted file mode 100644 index 46d03a17f..000000000 --- a/src/main/java/de/dennisguse/opentracks/util/TrackUtils.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright 2013 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ - -package de.dennisguse.opentracks.util; - -import android.content.Context; - -import de.dennisguse.opentracks.data.ContentProviderUtils; -import de.dennisguse.opentracks.data.models.ActivityType; -import de.dennisguse.opentracks.data.models.Track; - -/** - * Utilities for updating track. - * - * @author Jimmy Shih - */ -//TOOD Refactor ActivityType handling in here! -@Deprecated //TODO Refactor: all this should happen somewhere else (ContentProviderUtils?) -public class TrackUtils { - - private TrackUtils() { - } - - public static void updateTrack(Context context, Track track, String name, String activityTypeLocalized, String description, ContentProviderUtils contentProviderUtils) { - updateTrack(context, track, name, activityTypeLocalized, ActivityType.findByLocalizedString(context, activityTypeLocalized), description, contentProviderUtils); - } - - public static void updateTrack(Context context, Track track, String name, String activityTypeLocalized, ActivityType activityType, String description, ContentProviderUtils contentProviderUtils) { - if (name != null) { - track.setName(name); - } - if (activityTypeLocalized != null) { - track.setActivityTypeLocalized(activityTypeLocalized); - } - if (activityType != null) { - track.setActivityType(activityType); - } else if (activityTypeLocalized != null) { - track.setActivityType(ActivityType.findByLocalizedString(context, activityTypeLocalized)); - } - if (description != null) { - track.setDescription(description); - } - - contentProviderUtils.updateTrack(track); - } -} diff --git a/src/main/res/layout/track_edit.xml b/src/main/res/layout/track_edit.xml index cb4d630fe..4529ea999 100644 --- a/src/main/res/layout/track_edit.xml +++ b/src/main/res/layout/track_edit.xml @@ -62,7 +62,7 @@ limitations under the License. android:imeOptions="actionNext" android:importantForAutofill="no">