Compare commits

...

4 Commits

Author SHA1 Message Date
Dennis Guse 9225d90e45 Release: v4.3.3 2023-04-27 18:49:23 +02:00
Dennis Guse 32dc6fef82 Bugfix: CustomLayout - title for pace was speed/GPS.
Introduced in d70e7b8788
2023-04-26 07:19:11 +02:00
Dennis Guse 96fb65b6b0 Bugfix: hidden DataFields should be hidden.
Introduced in d70e7b8788
2023-04-26 07:19:11 +02:00
dependabot[bot] 936bbf9264 Bump org.mockito:mockito-android from 5.3.0 to 5.3.1
Bumps [org.mockito:mockito-android](https://github.com/mockito/mockito) from 5.3.0 to 5.3.1.
- [Release notes](https://github.com/mockito/mockito/releases)
- [Commits](https://github.com/mockito/mockito/compare/v5.3.0...v5.3.1)

---
updated-dependencies:
- dependency-name: org.mockito:mockito-android
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-24 07:01:14 +02:00
9 changed files with 47 additions and 27 deletions
+3 -3
View File
@@ -64,8 +64,8 @@ android {
defaultConfig {
applicationId "de.dennisguse.opentracks"
versionCode 5189
versionName "v4.3.2"
versionCode 5194
versionName "v4.3.3"
buildConfigField "String", "VERSION_NAME_FULL", "\"${getVersionName()}\""
@@ -143,7 +143,7 @@ dependencies {
androidTestImplementation 'androidx.test:rules:1.5.0'
androidTestImplementation 'androidx.test:runner:1.5.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
androidTestImplementation 'org.mockito:mockito-android:5.3.0'
androidTestImplementation 'org.mockito:mockito-android:5.3.1'
androidTestUtil 'androidx.test:orchestrator:1.4.2'
}
@@ -0,0 +1,5 @@
v4.3.3: OpenTracks
Bugfixes:
- Hidden fields were shown (introduced in v4.2.0)
- Speed was shown instead of pace (introduced in v4.2.0)
@@ -52,8 +52,8 @@ public class StatisticsUtilsTest extends TestCase {
recordingLayout.addField(new DataField("key5", true, true, false));
// when
RecordingLayout resultTrue = StatisticsUtils.filterVisible(recordingLayout, true);
RecordingLayout resultFalse = StatisticsUtils.filterVisible(recordingLayout, false);
RecordingLayout resultTrue = recordingLayout.toRecordingLayout(true);
RecordingLayout resultFalse = recordingLayout.toRecordingLayout(false);
// then
assertEquals(resultTrue.getFields().size(), 3);
@@ -131,8 +131,7 @@ public class StatisticsRecordingFragment extends Fragment {
int rowIndex = 0;
int columnIndex = 0;
for (int i = 0; i < recordingLayout.getFields().size(); i++) {
DataField dataField = recordingLayout.getFields().get(i);
for (DataField dataField : recordingLayout.toRecordingLayout(true).getFields()) {
GridLayout.LayoutParams param = new GridLayout.LayoutParams();
param.setGravity(Gravity.FILL_HORIZONTAL);
param.width = 0;
@@ -20,7 +20,6 @@ import de.dennisguse.opentracks.ui.customRecordingLayout.DataField;
import de.dennisguse.opentracks.ui.customRecordingLayout.RecordingLayout;
import de.dennisguse.opentracks.ui.customRecordingLayout.SettingsCustomLayoutEditAdapter;
import de.dennisguse.opentracks.ui.util.ArrayAdapterFilterDisabled;
import de.dennisguse.opentracks.util.StatisticsUtils;
public class SettingsCustomLayoutEditActivity extends AbstractActivity implements SettingsCustomLayoutEditAdapter.SettingsCustomLayoutItemClickListener {
@@ -41,7 +40,7 @@ public class SettingsCustomLayoutEditActivity extends AbstractActivity implement
// Recycler view with visible stats.
RecordingLayout recordingLayout = getIntent().getParcelableExtra(EXTRA_LAYOUT);
profile = recordingLayout.getName();
recordingLayoutFieldsVisible = StatisticsUtils.filterVisible(recordingLayout, true);
recordingLayoutFieldsVisible = recordingLayout.toRecordingLayout(true);
adapterFieldsVisible = new SettingsCustomLayoutEditAdapter(this, this, recordingLayoutFieldsVisible);
numColumns = recordingLayout.getColumnsPerRow();
@@ -90,7 +89,7 @@ public class SettingsCustomLayoutEditActivity extends AbstractActivity implement
viewBinding.rowsOptions.setText(rowsOptionAdapter.getItem(numColumns - 1).toString(), false);
// Recycler view with not visible stats.
recordingLayoutFieldsHidden = StatisticsUtils.filterVisible(recordingLayout, false);
recordingLayoutFieldsHidden = recordingLayout.toRecordingLayout(false);
adapterFieldsHidden = new SettingsCustomLayoutEditAdapter(this, this, recordingLayoutFieldsHidden);
RecyclerView recyclerViewNotVisible = viewBinding.recyclerViewNotVisible;
recyclerViewNotVisible.setLayoutManager(new LinearLayoutManager(this));
@@ -66,6 +66,12 @@ public class RecordingLayout implements Parcelable {
return new ArrayList<>(dataFields);
}
public RecordingLayout toRecordingLayout(boolean visibility) {
RecordingLayout result = new RecordingLayout(this.getName());
result.addFields(dataFields.stream().filter(f -> f.isVisible() == visibility).collect(Collectors.toList()));
return result;
}
public void moveField(int from, int to) {
DataField dataFieldToMove = dataFields.remove(from);
dataFields.add(to, dataFieldToMove);
@@ -4,11 +4,8 @@ import android.content.Context;
import androidx.annotation.NonNull;
import java.util.stream.Collectors;
import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.settings.PreferencesUtils;
import de.dennisguse.opentracks.ui.customRecordingLayout.RecordingLayout;
public class StatisticsUtils {
@@ -24,11 +21,4 @@ public class StatisticsUtils {
return context.getString(R.string.stats_empty_value_integer);
}
}
@Deprecated //Add to Layout?
public static RecordingLayout filterVisible(RecordingLayout recordingLayout, boolean visible) {
RecordingLayout result = new RecordingLayout(recordingLayout.getName());
result.addFields(recordingLayout.getFields().stream().filter(f -> f.isVisible() == visible).collect(Collectors.toList()));
return result;
}
}
@@ -65,15 +65,20 @@ public abstract class GenericStatisticsViewHolder extends StatisticViewHolder<St
}
}
public static class SpeedOrPace extends GenericStatisticsViewHolder {
public abstract static class SpeedOrPace extends GenericStatisticsViewHolder {
private final boolean reportSpeed;
public SpeedOrPace(boolean reportSpeed) {
this.reportSpeed = reportSpeed;
}
@Override
public void onChanged(UnitSystem unitSystem, RecordingData data) {
// TODO Pace wont work for now
boolean reportSpeed = true;
SpeedFormatter localSpeedFormatter = SpeedFormatter.Builder()
.setUnit(unitSystem)
.setReportSpeedOrPace(reportSpeed).build(getContext());
.setReportSpeedOrPace(reportSpeed)
.build(getContext());
Pair<String, String> valueAndUnit;
@@ -85,7 +90,9 @@ public abstract class GenericStatisticsViewHolder extends StatisticViewHolder<St
} else {
Speed speed = latestTrackPoint != null && latestTrackPoint.hasSpeed() ? latestTrackPoint.getSpeed() : null;
valueAndUnit = localSpeedFormatter.getSpeedParts(speed);
getBinding().statsDescriptionMain.setText(getContext().getString(R.string.description_speed_source_gps));
String title = reportSpeed ? getContext().getString(R.string.stats_speed) : getContext().getString(R.string.stats_pace);
getBinding().statsDescriptionMain.setText(title);
}
getBinding().statsValue.setText(valueAndUnit.first);
@@ -93,6 +100,20 @@ public abstract class GenericStatisticsViewHolder extends StatisticViewHolder<St
}
}
public static class SpeedVH extends SpeedOrPace {
public SpeedVH() {
super(true);
}
}
public static class PaceVH extends SpeedOrPace {
public PaceVH() {
super(false);
}
}
public static class AverageMovingSpeed extends GenericStatisticsViewHolder {
@Override
@@ -17,8 +17,8 @@ public class Mapping {
m.put(context.getString(R.string.stats_custom_layout_distance_key), GenericStatisticsViewHolder.Distance::new);
m.put(context.getString(R.string.stats_custom_layout_speed_key), GenericStatisticsViewHolder.SpeedOrPace::new);
m.put(context.getString(R.string.stats_custom_layout_pace_key), GenericStatisticsViewHolder.SpeedOrPace::new);
m.put(context.getString(R.string.stats_custom_layout_speed_key), GenericStatisticsViewHolder.SpeedVH::new);
m.put(context.getString(R.string.stats_custom_layout_pace_key), GenericStatisticsViewHolder.PaceVH::new);
m.put(context.getString(R.string.stats_custom_layout_average_moving_speed_key), GenericStatisticsViewHolder.AverageMovingSpeed::new);
m.put(context.getString(R.string.stats_custom_layout_average_speed_key), GenericStatisticsViewHolder.AverageSpeed::new);
m.put(context.getString(R.string.stats_custom_layout_max_speed_key), GenericStatisticsViewHolder.MaxSpeed::new);