Refactoring package structure.
This commit is contained in:
Dennis Guse
2022-01-15 22:59:19 +01:00
committed by GitHub
187 changed files with 860 additions and 877 deletions
@@ -10,11 +10,10 @@ import org.junit.runner.RunWith;
import java.time.Duration; import java.time.Duration;
import de.dennisguse.opentracks.content.data.Altitude; import de.dennisguse.opentracks.data.models.Altitude;
import de.dennisguse.opentracks.content.data.Distance; import de.dennisguse.opentracks.data.models.Distance;
import de.dennisguse.opentracks.content.data.Speed; import de.dennisguse.opentracks.data.models.Speed;
import de.dennisguse.opentracks.content.data.TrackPoint; import de.dennisguse.opentracks.data.models.TrackPoint;
import de.dennisguse.opentracks.fragments.TrackStubUtils;
import de.dennisguse.opentracks.stats.TrackStatistics; import de.dennisguse.opentracks.stats.TrackStatistics;
@RunWith(AndroidJUnit4.class) @RunWith(AndroidJUnit4.class)
@@ -14,20 +14,20 @@
* the License. * the License.
*/ */
package de.dennisguse.opentracks.fragments; package de.dennisguse.opentracks.chart;
import java.time.Instant; import java.time.Instant;
import de.dennisguse.opentracks.content.data.Distance; import de.dennisguse.opentracks.data.models.Distance;
import de.dennisguse.opentracks.content.data.Speed; import de.dennisguse.opentracks.data.models.Speed;
import de.dennisguse.opentracks.content.data.TrackPoint; import de.dennisguse.opentracks.data.models.TrackPoint;
/** /**
* Commons utilities for creating stubs of track, location. * Commons utilities for creating stubs of track, location.
* *
* @author Youtao Liu * @author Youtao Liu
*/ */
public class TrackStubUtils { class TrackStubUtils {
public static final double INITIAL_ALTITUDE = 22; public static final double INITIAL_ALTITUDE = 22;
public static final long INITIAL_TIME = 1000L; public static final long INITIAL_TIME = 1000L;
@@ -11,8 +11,13 @@ import java.time.Instant;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import de.dennisguse.opentracks.content.provider.ContentProviderUtils; import de.dennisguse.opentracks.data.ContentProviderUtils;
import de.dennisguse.opentracks.content.provider.TrackPointIterator; import de.dennisguse.opentracks.data.TrackPointIterator;
import de.dennisguse.opentracks.data.models.Distance;
import de.dennisguse.opentracks.data.models.Marker;
import de.dennisguse.opentracks.data.models.Speed;
import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.data.models.TrackPoint;
import de.dennisguse.opentracks.stats.TrackStatistics; import de.dennisguse.opentracks.stats.TrackStatistics;
import de.dennisguse.opentracks.stats.TrackStatisticsUpdater; import de.dennisguse.opentracks.stats.TrackStatisticsUpdater;
import de.dennisguse.opentracks.util.FileUtils; import de.dennisguse.opentracks.util.FileUtils;
@@ -5,6 +5,10 @@ import java.time.Instant;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import de.dennisguse.opentracks.data.models.Distance;
import de.dennisguse.opentracks.data.models.Speed;
import de.dennisguse.opentracks.data.models.TrackPoint;
public class TestSensorDataUtil { public class TestSensorDataUtil {
private final List<TrackPoint> trackPointList = new ArrayList<>(); private final List<TrackPoint> trackPointList = new ArrayList<>();
@@ -14,7 +14,10 @@
* the License. * the License.
*/ */
package de.dennisguse.opentracks.content.provider; package de.dennisguse.opentracks.data;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import android.content.ContentUris; import android.content.ContentUris;
import android.content.Context; import android.content.Context;
@@ -25,12 +28,9 @@ import androidx.test.core.app.ApplicationProvider;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import de.dennisguse.opentracks.content.data.MarkerColumns; import de.dennisguse.opentracks.data.tables.MarkerColumns;
import de.dennisguse.opentracks.content.data.TrackPointsColumns; import de.dennisguse.opentracks.data.tables.TrackPointsColumns;
import de.dennisguse.opentracks.content.data.TracksColumns; import de.dennisguse.opentracks.data.tables.TracksColumns;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
/** /**
* Tests {@link CustomContentProvider}. * Tests {@link CustomContentProvider}.
@@ -13,7 +13,7 @@
* License for the specific language governing permissions and limitations under * License for the specific language governing permissions and limitations under
* the License. * the License.
*/ */
package de.dennisguse.opentracks.content.provider; package de.dennisguse.opentracks.data;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertFalse;
@@ -49,16 +49,16 @@ import java.util.Random;
import java.util.UUID; import java.util.UUID;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import de.dennisguse.opentracks.content.data.Distance;
import de.dennisguse.opentracks.content.data.Marker;
import de.dennisguse.opentracks.content.data.MarkerColumns;
import de.dennisguse.opentracks.content.data.Speed;
import de.dennisguse.opentracks.content.data.TestDataUtil; import de.dennisguse.opentracks.content.data.TestDataUtil;
import de.dennisguse.opentracks.content.data.TestSensorDataUtil; import de.dennisguse.opentracks.content.data.TestSensorDataUtil;
import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.data.models.Distance;
import de.dennisguse.opentracks.content.data.TrackPoint; import de.dennisguse.opentracks.data.models.Marker;
import de.dennisguse.opentracks.content.data.TrackPointsColumns; import de.dennisguse.opentracks.data.models.Speed;
import de.dennisguse.opentracks.content.data.TracksColumns; import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.data.models.TrackPoint;
import de.dennisguse.opentracks.data.tables.MarkerColumns;
import de.dennisguse.opentracks.data.tables.TrackPointsColumns;
import de.dennisguse.opentracks.data.tables.TracksColumns;
import de.dennisguse.opentracks.stats.SensorStatistics; import de.dennisguse.opentracks.stats.SensorStatistics;
import de.dennisguse.opentracks.stats.TrackStatistics; import de.dennisguse.opentracks.stats.TrackStatistics;
import de.dennisguse.opentracks.util.FileUtils; import de.dennisguse.opentracks.util.FileUtils;
@@ -1,4 +1,8 @@
package de.dennisguse.opentracks.content.provider; package de.dennisguse.opentracks.data;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import android.content.Context; import android.content.Context;
import android.database.Cursor; import android.database.Cursor;
@@ -20,13 +24,9 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import de.dennisguse.opentracks.content.data.MarkerColumns; import de.dennisguse.opentracks.data.tables.MarkerColumns;
import de.dennisguse.opentracks.content.data.TrackPointsColumns; import de.dennisguse.opentracks.data.tables.TrackPointsColumns;
import de.dennisguse.opentracks.content.data.TracksColumns; import de.dennisguse.opentracks.data.tables.TracksColumns;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
@RunWith(AndroidJUnit4.class) @RunWith(AndroidJUnit4.class)
public class CustomSQLiteOpenHelperTest { public class CustomSQLiteOpenHelperTest {
@@ -1,4 +1,6 @@
package de.dennisguse.opentracks.content.provider; package de.dennisguse.opentracks.data;
import static org.junit.Assert.assertEquals;
import android.net.Uri; import android.net.Uri;
import android.util.Pair; import android.util.Pair;
@@ -8,11 +10,9 @@ import org.junit.Test;
import java.util.HashSet; import java.util.HashSet;
import java.util.Set; import java.util.Set;
import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.io.file.TrackFileFormat; import de.dennisguse.opentracks.io.file.TrackFileFormat;
import static org.junit.Assert.assertEquals;
public class ShareContentProviderTest { public class ShareContentProviderTest {
@Test @Test
@@ -1,4 +1,4 @@
package de.dennisguse.opentracks.content.data; package de.dennisguse.opentracks.data;
import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.ext.junit.runners.AndroidJUnit4;
@@ -9,7 +9,7 @@ import org.junit.runner.RunWith;
import java.time.Instant; import java.time.Instant;
import de.dennisguse.opentracks.content.provider.SelectionData; import de.dennisguse.opentracks.data.models.Track;
@RunWith(AndroidJUnit4.class) @RunWith(AndroidJUnit4.class)
public class TrackSelectionTest extends TestCase { public class TrackSelectionTest extends TestCase {
@@ -1,4 +1,4 @@
package de.dennisguse.opentracks.content.provider; package de.dennisguse.opentracks.data;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
@@ -1,13 +1,16 @@
package de.dennisguse.opentracks.content.data; package de.dennisguse.opentracks.data.model;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import org.junit.Test; import org.junit.Test;
import java.time.Instant; import java.time.Instant;
import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit;
import static org.junit.Assert.assertEquals; import de.dennisguse.opentracks.data.models.Distance;
import static org.junit.Assert.assertFalse; import de.dennisguse.opentracks.data.models.TrackPoint;
import static org.junit.Assert.assertTrue;
public class TrackPointTest { public class TrackPointTest {
@@ -14,7 +14,7 @@ import java.io.ByteArrayOutputStream;
import java.time.Instant; import java.time.Instant;
import java.time.ZoneOffset; import java.time.ZoneOffset;
import de.dennisguse.opentracks.content.data.TrackPoint; import de.dennisguse.opentracks.data.models.TrackPoint;
import de.dennisguse.opentracks.io.file.TrackFileFormat; import de.dennisguse.opentracks.io.file.TrackFileFormat;
@RunWith(JUnit4.class) @RunWith(JUnit4.class)
@@ -38,24 +38,24 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException; import java.util.concurrent.TimeoutException;
import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.content.data.Distance;
import de.dennisguse.opentracks.content.data.Marker;
import de.dennisguse.opentracks.content.data.Speed;
import de.dennisguse.opentracks.content.data.TestDataUtil; import de.dennisguse.opentracks.content.data.TestDataUtil;
import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.data.ContentProviderUtils;
import de.dennisguse.opentracks.content.data.TrackPoint; import de.dennisguse.opentracks.data.models.Distance;
import de.dennisguse.opentracks.content.provider.ContentProviderUtils; import de.dennisguse.opentracks.data.models.Marker;
import de.dennisguse.opentracks.content.sensor.SensorDataCycling; import de.dennisguse.opentracks.data.models.Speed;
import de.dennisguse.opentracks.content.sensor.SensorDataCyclingPower; import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.content.sensor.SensorDataHeartRate; import de.dennisguse.opentracks.data.models.TrackPoint;
import de.dennisguse.opentracks.content.sensor.SensorDataSet;
import de.dennisguse.opentracks.io.file.TrackFileFormat; import de.dennisguse.opentracks.io.file.TrackFileFormat;
import de.dennisguse.opentracks.io.file.exporter.TrackExporter; import de.dennisguse.opentracks.io.file.exporter.TrackExporter;
import de.dennisguse.opentracks.sensors.AltitudeSumManager;
import de.dennisguse.opentracks.sensors.BluetoothRemoteSensorManager;
import de.dennisguse.opentracks.sensors.sensorData.SensorDataCycling;
import de.dennisguse.opentracks.sensors.sensorData.SensorDataCyclingPower;
import de.dennisguse.opentracks.sensors.sensorData.SensorDataHeartRate;
import de.dennisguse.opentracks.sensors.sensorData.SensorDataSet;
import de.dennisguse.opentracks.services.TrackRecordingService; import de.dennisguse.opentracks.services.TrackRecordingService;
import de.dennisguse.opentracks.services.TrackRecordingServiceTestUtils; import de.dennisguse.opentracks.services.TrackRecordingServiceTestUtils;
import de.dennisguse.opentracks.services.handlers.TrackPointCreator; import de.dennisguse.opentracks.services.handlers.TrackPointCreator;
import de.dennisguse.opentracks.services.sensors.AltitudeSumManager;
import de.dennisguse.opentracks.services.sensors.BluetoothRemoteSensorManager;
import de.dennisguse.opentracks.stats.TrackStatistics; import de.dennisguse.opentracks.stats.TrackStatistics;
/** /**
@@ -1,5 +1,8 @@
package de.dennisguse.opentracks.io.file.importer; package de.dennisguse.opentracks.io.file.importer;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import android.content.Context; import android.content.Context;
import androidx.test.core.app.ApplicationProvider; import androidx.test.core.app.ApplicationProvider;
@@ -18,17 +21,14 @@ import java.time.Duration;
import java.time.Instant; import java.time.Instant;
import java.util.List; import java.util.List;
import de.dennisguse.opentracks.content.data.Distance;
import de.dennisguse.opentracks.content.data.Speed;
import de.dennisguse.opentracks.content.data.TestDataUtil; import de.dennisguse.opentracks.content.data.TestDataUtil;
import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.data.ContentProviderUtils;
import de.dennisguse.opentracks.content.data.TrackPoint; import de.dennisguse.opentracks.data.models.Distance;
import de.dennisguse.opentracks.content.provider.ContentProviderUtils; import de.dennisguse.opentracks.data.models.Speed;
import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.data.models.TrackPoint;
import de.dennisguse.opentracks.stats.TrackStatistics; import de.dennisguse.opentracks.stats.TrackStatistics;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
/** /**
* Test that legacy KML/GPX formats can still be imported. * Test that legacy KML/GPX formats can still be imported.
*/ */
@@ -1,5 +1,8 @@
package de.dennisguse.opentracks.io.file.importer; package de.dennisguse.opentracks.io.file.importer;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import android.content.Context; import android.content.Context;
import androidx.test.core.app.ApplicationProvider; import androidx.test.core.app.ApplicationProvider;
@@ -17,15 +20,12 @@ import java.io.InputStream;
import java.time.Instant; import java.time.Instant;
import java.util.List; import java.util.List;
import de.dennisguse.opentracks.content.data.Distance;
import de.dennisguse.opentracks.content.data.Speed;
import de.dennisguse.opentracks.content.data.TestDataUtil; import de.dennisguse.opentracks.content.data.TestDataUtil;
import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.data.ContentProviderUtils;
import de.dennisguse.opentracks.content.data.TrackPoint; import de.dennisguse.opentracks.data.models.Distance;
import de.dennisguse.opentracks.content.provider.ContentProviderUtils; import de.dennisguse.opentracks.data.models.Speed;
import de.dennisguse.opentracks.data.models.Track;
import static org.junit.Assert.assertEquals; import de.dennisguse.opentracks.data.models.TrackPoint;
import static org.junit.Assert.assertNotNull;
/** /**
* Test that legacy KML/GPX formats can still be imported. * Test that legacy KML/GPX formats can still be imported.
@@ -4,7 +4,7 @@ import org.junit.Assert;
import java.util.List; import java.util.List;
import de.dennisguse.opentracks.content.data.TrackPoint; import de.dennisguse.opentracks.data.models.TrackPoint;
public class TrackPointAssert { public class TrackPointAssert {
@@ -1,4 +1,4 @@
package de.dennisguse.opentracks.services.sensors; package de.dennisguse.opentracks.sensors;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Before; import org.junit.Before;
@@ -1,4 +1,4 @@
package de.dennisguse.opentracks.services.sensors; package de.dennisguse.opentracks.sensors;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull; import static org.junit.Assert.assertNull;
@@ -7,10 +7,10 @@ import android.bluetooth.BluetoothGattCharacteristic;
import org.junit.Test; import org.junit.Test;
import de.dennisguse.opentracks.content.data.Distance; import de.dennisguse.opentracks.data.models.Distance;
import de.dennisguse.opentracks.content.data.Speed; import de.dennisguse.opentracks.data.models.Speed;
import de.dennisguse.opentracks.content.sensor.SensorDataCycling; import de.dennisguse.opentracks.sensors.sensorData.SensorDataCycling;
import de.dennisguse.opentracks.content.sensor.SensorDataRunning; import de.dennisguse.opentracks.sensors.sensorData.SensorDataRunning;
public class BluetoothUtilsTest { public class BluetoothUtilsTest {
@@ -1,4 +1,4 @@
package de.dennisguse.opentracks.services.sensors; package de.dennisguse.opentracks.sensors;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull; import static org.junit.Assert.assertNull;
@@ -1,4 +1,4 @@
package de.dennisguse.opentracks.services.sensors; package de.dennisguse.opentracks.sensors;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
@@ -1,4 +1,4 @@
package de.dennisguse.opentracks.content.sensor; package de.dennisguse.opentracks.sensors.sensorData;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertFalse;
@@ -11,8 +11,8 @@ import org.junit.Ignore;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import de.dennisguse.opentracks.content.data.Distance; import de.dennisguse.opentracks.data.models.Distance;
import de.dennisguse.opentracks.services.sensors.UintUtils; import de.dennisguse.opentracks.sensors.UintUtils;
@RunWith(AndroidJUnit4.class) @RunWith(AndroidJUnit4.class)
public class SensorDataCyclingTest { public class SensorDataCyclingTest {
@@ -1,5 +1,10 @@
package de.dennisguse.opentracks.services; package de.dennisguse.opentracks.services;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.app.NotificationManager; import android.app.NotificationManager;
import android.content.Context; import android.content.Context;
@@ -11,16 +16,11 @@ import org.junit.runner.RunWith;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner; import org.mockito.junit.MockitoJUnitRunner;
import de.dennisguse.opentracks.content.data.Distance; import de.dennisguse.opentracks.data.models.Distance;
import de.dennisguse.opentracks.content.data.Speed; import de.dennisguse.opentracks.data.models.Speed;
import de.dennisguse.opentracks.content.data.TrackPoint; import de.dennisguse.opentracks.data.models.TrackPoint;
import de.dennisguse.opentracks.stats.TrackStatistics; import de.dennisguse.opentracks.stats.TrackStatistics;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@RunWith(MockitoJUnitRunner.class) @RunWith(MockitoJUnitRunner.class)
public class TrackRecordingServiceNotificationManagerTest { public class TrackRecordingServiceNotificationManagerTest {
@@ -45,10 +45,10 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException; import java.util.concurrent.TimeoutException;
import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.content.data.Marker; import de.dennisguse.opentracks.data.ContentProviderUtils;
import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.data.models.Marker;
import de.dennisguse.opentracks.content.data.TrackPoint; import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.content.provider.ContentProviderUtils; import de.dennisguse.opentracks.data.models.TrackPoint;
import de.dennisguse.opentracks.services.handlers.TrackPointCreator; import de.dennisguse.opentracks.services.handlers.TrackPointCreator;
@RunWith(AndroidJUnit4.class) @RunWith(AndroidJUnit4.class)
@@ -28,17 +28,17 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException; import java.util.concurrent.TimeoutException;
import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.content.data.Distance;
import de.dennisguse.opentracks.content.data.Speed;
import de.dennisguse.opentracks.content.data.TestDataUtil; import de.dennisguse.opentracks.content.data.TestDataUtil;
import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.data.ContentProviderUtils;
import de.dennisguse.opentracks.content.data.TrackPoint; import de.dennisguse.opentracks.data.models.Distance;
import de.dennisguse.opentracks.content.provider.ContentProviderUtils; import de.dennisguse.opentracks.data.models.Speed;
import de.dennisguse.opentracks.content.sensor.SensorDataRunning; import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.data.models.TrackPoint;
import de.dennisguse.opentracks.io.file.importer.TrackPointAssert; import de.dennisguse.opentracks.io.file.importer.TrackPointAssert;
import de.dennisguse.opentracks.sensors.AltitudeSumManager;
import de.dennisguse.opentracks.sensors.BluetoothRemoteSensorManager;
import de.dennisguse.opentracks.sensors.sensorData.SensorDataRunning;
import de.dennisguse.opentracks.services.handlers.TrackPointCreator; import de.dennisguse.opentracks.services.handlers.TrackPointCreator;
import de.dennisguse.opentracks.services.sensors.AltitudeSumManager;
import de.dennisguse.opentracks.services.sensors.BluetoothRemoteSensorManager;
import de.dennisguse.opentracks.settings.PreferencesUtils; import de.dennisguse.opentracks.settings.PreferencesUtils;
import de.dennisguse.opentracks.stats.TrackStatistics; import de.dennisguse.opentracks.stats.TrackStatistics;
@@ -45,8 +45,8 @@ import java.util.List;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException; import java.util.concurrent.TimeoutException;
import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.data.ContentProviderUtils;
import de.dennisguse.opentracks.content.provider.ContentProviderUtils; import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.services.handlers.GpsStatusValue; import de.dennisguse.opentracks.services.handlers.GpsStatusValue;
/** /**
@@ -9,8 +9,8 @@ import androidx.test.rule.ServiceTestRule;
import java.time.Clock; import java.time.Clock;
import java.util.concurrent.TimeoutException; import java.util.concurrent.TimeoutException;
import de.dennisguse.opentracks.sensors.BluetoothRemoteSensorManager;
import de.dennisguse.opentracks.services.handlers.TrackPointCreator; import de.dennisguse.opentracks.services.handlers.TrackPointCreator;
import de.dennisguse.opentracks.services.sensors.BluetoothRemoteSensorManager;
import de.dennisguse.opentracks.settings.PreferencesUtils; import de.dennisguse.opentracks.settings.PreferencesUtils;
public class TrackRecordingServiceTestUtils { public class TrackRecordingServiceTestUtils {
@@ -21,7 +21,7 @@ import java.time.Duration;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException; import java.util.concurrent.TimeoutException;
import de.dennisguse.opentracks.content.data.Distance; import de.dennisguse.opentracks.data.models.Distance;
import de.dennisguse.opentracks.services.TrackRecordingService; import de.dennisguse.opentracks.services.TrackRecordingService;
import de.dennisguse.opentracks.stats.TrackStatistics; import de.dennisguse.opentracks.stats.TrackStatistics;
@@ -15,15 +15,15 @@ import org.junit.runner.RunWith;
import java.time.Duration; import java.time.Duration;
import de.dennisguse.opentracks.content.data.Distance;
import de.dennisguse.opentracks.content.data.Speed;
import de.dennisguse.opentracks.content.data.TestDataUtil; import de.dennisguse.opentracks.content.data.TestDataUtil;
import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.data.ContentProviderUtils;
import de.dennisguse.opentracks.content.provider.ContentProviderUtils; import de.dennisguse.opentracks.data.TrackPointIterator;
import de.dennisguse.opentracks.content.provider.TrackPointIterator; import de.dennisguse.opentracks.data.models.Distance;
import de.dennisguse.opentracks.data.models.Speed;
import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.stats.TrackStatistics; import de.dennisguse.opentracks.stats.TrackStatistics;
import de.dennisguse.opentracks.ui.intervals.IntervalStatistics;
import de.dennisguse.opentracks.util.StringUtils; import de.dennisguse.opentracks.util.StringUtils;
import de.dennisguse.opentracks.viewmodels.IntervalStatistics;
@RunWith(AndroidJUnit4.class) @RunWith(AndroidJUnit4.class)
public class VoiceAnnouncementUtilsTest { public class VoiceAnnouncementUtilsTest {
@@ -21,8 +21,8 @@ import org.mockito.junit.MockitoJUnitRunner;
import java.time.Instant; import java.time.Instant;
import de.dennisguse.opentracks.content.data.Distance; import de.dennisguse.opentracks.data.models.Distance;
import de.dennisguse.opentracks.content.data.TrackPoint; import de.dennisguse.opentracks.data.models.TrackPoint;
import de.dennisguse.opentracks.settings.PreferencesUtils; import de.dennisguse.opentracks.settings.PreferencesUtils;
@RunWith(MockitoJUnitRunner.class) @RunWith(MockitoJUnitRunner.class)
@@ -12,8 +12,8 @@ import org.junit.runner.RunWith;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner; import org.mockito.junit.MockitoJUnitRunner;
import de.dennisguse.opentracks.content.data.Distance; import de.dennisguse.opentracks.data.models.Distance;
import de.dennisguse.opentracks.content.data.TrackPoint; import de.dennisguse.opentracks.data.models.TrackPoint;
@RunWith(MockitoJUnitRunner.class) @RunWith(MockitoJUnitRunner.class)
public class TrackPointCreatorTest { public class TrackPointCreatorTest {
@@ -17,7 +17,7 @@ import org.junit.runner.RunWith;
import java.util.List; import java.util.List;
import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.content.data.Layout; import de.dennisguse.opentracks.ui.customRecordingLayout.Layout;
@RunWith(AndroidJUnit4.class) @RunWith(AndroidJUnit4.class)
public class PreferencesOpenHelperTest { public class PreferencesOpenHelperTest {
@@ -20,9 +20,9 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.content.data.DataField;
import de.dennisguse.opentracks.content.data.Layout;
import de.dennisguse.opentracks.io.file.TrackFileFormat; import de.dennisguse.opentracks.io.file.TrackFileFormat;
import de.dennisguse.opentracks.ui.customRecordingLayout.DataField;
import de.dennisguse.opentracks.ui.customRecordingLayout.Layout;
@RunWith(AndroidJUnit4.class) @RunWith(AndroidJUnit4.class)
public class PreferencesUtilsTest { public class PreferencesUtilsTest {
@@ -14,7 +14,9 @@
* the License. * the License.
*/ */
package de.dennisguse.opentracks.content; package de.dennisguse.opentracks.share;
import static org.junit.Assert.assertEquals;
import android.content.Context; import android.content.Context;
@@ -31,14 +33,12 @@ import java.time.OffsetDateTime;
import java.time.ZoneId; import java.time.ZoneId;
import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.content.data.Distance; import de.dennisguse.opentracks.data.models.Distance;
import de.dennisguse.opentracks.content.data.Speed; import de.dennisguse.opentracks.data.models.Speed;
import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.stats.TrackStatistics; import de.dennisguse.opentracks.stats.TrackStatistics;
import de.dennisguse.opentracks.util.StringUtils; import de.dennisguse.opentracks.util.StringUtils;
import static org.junit.Assert.assertEquals;
/** /**
* Tests for {@link DescriptionGenerator}. * Tests for {@link DescriptionGenerator}.
* *
@@ -82,18 +82,18 @@ public class DescriptionGeneratorTest {
+ "Description: -<br>" + "Description: -<br>"
+ "Total distance: 20.00 km (12.4 mi)<br>" + "Total distance: 20.00 km (12.4 mi)<br>"
+ "Total time: 10:00<br>" + "Total time: 10:00<br>"
+ "Moving time: 05:00<br>" + "Moving time: 05:00<br>"
+ "Average speed: 120.00 km/h (74.6 mi/h)<br>" + "Average speed: 120.00 km/h (74.6 mi/h)<br>"
+ "Average moving speed: 240.00 km/h (149.1 mi/h)<br>" + "Average moving speed: 240.00 km/h (149.1 mi/h)<br>"
+ "Max speed: 360.00 km/h (223.7 mi/h)<br>" + "Max speed: 360.00 km/h (223.7 mi/h)<br>"
+ "Average pace: 0:30 min/km (0:48 min/mi)<br>" + "Average pace: 0:30 min/km (0:48 min/mi)<br>"
+ "Average moving pace: 0:15 min/km (0:24 min/mi)<br>" + "Average moving pace: 0:15 min/km (0:24 min/mi)<br>"
+ "Fastest pace: 0:10 min/km (0:16 min/mi)<br>" + "Fastest pace: 0:10 min/km (0:16 min/mi)<br>"
+ "Max elevation: 550 m (1804 ft)<br>" + "Max elevation: 550 m (1804 ft)<br>"
+ "Min elevation: -500 m (-1640 ft)<br>" + "Min elevation: -500 m (-1640 ft)<br>"
+ "Elevation gain: 6000 m (19685 ft)<br>" + "Elevation gain: 6000 m (19685 ft)<br>"
+ "Elevation loss: 6000 m (19685 ft)<br>" + "Elevation loss: 6000 m (19685 ft)<br>"
+ "Recorded: " + StringUtils.formatDateTime(OffsetDateTime.ofInstant(START_TIME, ZoneId.systemDefault())) + "<br>"; + "Recorded: " + StringUtils.formatDateTime(OffsetDateTime.ofInstant(START_TIME, ZoneId.systemDefault())) + "<br>";
assertEquals(expected, descriptionGenerator.generateTrackDescription(track, true)); assertEquals(expected, descriptionGenerator.generateTrackDescription(track, true));
} }
@@ -15,6 +15,9 @@
*/ */
package de.dennisguse.opentracks.stats; package de.dennisguse.opentracks.stats;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.ext.junit.runners.AndroidJUnit4;
import org.junit.Before; import org.junit.Before;
@@ -24,11 +27,8 @@ import org.junit.runner.RunWith;
import java.time.Duration; import java.time.Duration;
import java.time.Instant; import java.time.Instant;
import de.dennisguse.opentracks.content.data.Distance; import de.dennisguse.opentracks.data.models.Distance;
import de.dennisguse.opentracks.content.data.Speed; import de.dennisguse.opentracks.data.models.Speed;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
/** /**
* Tests for {@link TrackStatistics}. * Tests for {@link TrackStatistics}.
@@ -12,12 +12,12 @@ import org.junit.runner.RunWith;
import java.time.Duration; import java.time.Duration;
import java.time.Instant; import java.time.Instant;
import de.dennisguse.opentracks.content.data.Altitude;
import de.dennisguse.opentracks.content.data.Distance;
import de.dennisguse.opentracks.content.data.Speed;
import de.dennisguse.opentracks.content.data.TestDataUtil; import de.dennisguse.opentracks.content.data.TestDataUtil;
import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.data.models.Altitude;
import de.dennisguse.opentracks.content.data.TrackPoint; import de.dennisguse.opentracks.data.models.Distance;
import de.dennisguse.opentracks.data.models.Speed;
import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.data.models.TrackPoint;
@RunWith(AndroidJUnit4.class) @RunWith(AndroidJUnit4.class)
public class TrackStatisticsUpdaterTest { public class TrackStatisticsUpdaterTest {
@@ -1,4 +1,7 @@
package de.dennisguse.opentracks.viewmodels; package de.dennisguse.opentracks.ui.aggregatedStatistics;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import android.content.Context; import android.content.Context;
@@ -13,15 +16,12 @@ import java.time.Instant;
import java.util.List; import java.util.List;
import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.content.data.Distance; import de.dennisguse.opentracks.data.models.Distance;
import de.dennisguse.opentracks.content.data.Speed; import de.dennisguse.opentracks.data.models.Speed;
import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.stats.TrackStatistics; import de.dennisguse.opentracks.stats.TrackStatistics;
import de.dennisguse.opentracks.util.TrackIconUtils; import de.dennisguse.opentracks.util.TrackIconUtils;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
@RunWith(JUnit4.class) @RunWith(JUnit4.class)
public class AggregatedStatisticsTest { public class AggregatedStatisticsTest {
@@ -1,4 +1,4 @@
package de.dennisguse.opentracks; package de.dennisguse.opentracks.ui.aggregatedStatistics;
import static androidx.test.espresso.Espresso.onView; import static androidx.test.espresso.Espresso.onView;
import static androidx.test.espresso.action.ViewActions.click; import static androidx.test.espresso.action.ViewActions.click;
@@ -15,6 +15,7 @@ import android.view.View;
import androidx.test.core.app.ApplicationProvider; import androidx.test.core.app.ApplicationProvider;
import androidx.test.espresso.ViewInteraction; import androidx.test.espresso.ViewInteraction;
import androidx.test.espresso.matcher.ViewMatchers;
import androidx.test.ext.junit.rules.ActivityScenarioRule; import androidx.test.ext.junit.rules.ActivityScenarioRule;
import androidx.test.filters.LargeTest; import androidx.test.filters.LargeTest;
import androidx.test.rule.GrantPermissionRule; import androidx.test.rule.GrantPermissionRule;
@@ -28,10 +29,12 @@ import org.junit.runner.RunWith;
import java.util.List; import java.util.List;
import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.TrackListActivity;
import de.dennisguse.opentracks.content.data.TestDataUtil; import de.dennisguse.opentracks.content.data.TestDataUtil;
import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.data.ContentProviderUtils;
import de.dennisguse.opentracks.content.data.TrackPoint; import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.content.provider.ContentProviderUtils; import de.dennisguse.opentracks.data.models.TrackPoint;
@LargeTest @LargeTest
@RunWith(AndroidJUnit4.class) @RunWith(AndroidJUnit4.class)
@@ -55,7 +58,7 @@ public class EspressoAggregatedFilterTest {
@Test @Test
public void espressoAggregatedFilterTest() { public void espressoAggregatedFilterTest() {
// open AggregatedStatisticsActivity through toolbar's menu item // open AggregatedStatisticsActivity through toolbar's menu item
onView(withId(R.id.toolbar)).check(matches(isDisplayed())); onView(ViewMatchers.withId(R.id.toolbar)).check(matches(isDisplayed()));
onView(withId(R.id.toolbar)).check(matches(hasDescendant(withId(R.id.track_list_aggregated_stats)))); onView(withId(R.id.toolbar)).check(matches(hasDescendant(withId(R.id.track_list_aggregated_stats))));
onView(withId(R.id.track_list_aggregated_stats)).perform(click()); onView(withId(R.id.track_list_aggregated_stats)).perform(click());
@@ -1,4 +1,4 @@
package de.dennisguse.opentracks.util; package de.dennisguse.opentracks.ui.customRecordingLayout;
import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.ext.junit.runners.AndroidJUnit4;
@@ -1,4 +1,4 @@
package de.dennisguse.opentracks; package de.dennisguse.opentracks.ui.customRecordingLayout;
import static androidx.test.espresso.Espresso.onView; import static androidx.test.espresso.Espresso.onView;
@@ -20,6 +20,7 @@ import androidx.test.espresso.ViewAction;
import androidx.test.espresso.ViewAssertion; import androidx.test.espresso.ViewAssertion;
import androidx.test.espresso.ViewInteraction; import androidx.test.espresso.ViewInteraction;
import androidx.test.espresso.action.MotionEvents; import androidx.test.espresso.action.MotionEvents;
import androidx.test.espresso.matcher.ViewMatchers;
import androidx.test.ext.junit.rules.ActivityScenarioRule; import androidx.test.ext.junit.rules.ActivityScenarioRule;
import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.LargeTest; import androidx.test.filters.LargeTest;
@@ -32,8 +33,8 @@ import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import de.dennisguse.opentracks.content.data.DataField; import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.content.data.Layout; import de.dennisguse.opentracks.TrackListActivity;
import de.dennisguse.opentracks.settings.PreferencesUtils; import de.dennisguse.opentracks.settings.PreferencesUtils;
@LargeTest @LargeTest
@@ -49,7 +50,7 @@ public class EspressoCustomLayoutTest {
@Test @Test
public void customLayoutTest() { public void customLayoutTest() {
// TrackListActivity: start recording // TrackListActivity: start recording
ViewInteraction trackControllerRecordButton = onView(withId(R.id.controller_record)); ViewInteraction trackControllerRecordButton = onView(ViewMatchers.withId(R.id.controller_record));
trackControllerRecordButton.perform(click()); trackControllerRecordButton.perform(click());
// Get custom layout preferences and check all data fields are showed. // Get custom layout preferences and check all data fields are showed.
@@ -1,4 +1,4 @@
package de.dennisguse.opentracks.content.data; package de.dennisguse.opentracks.ui.customRecordingLayout;
import android.content.Context; import android.content.Context;
import android.content.res.Resources; import android.content.res.Resources;
@@ -1,4 +1,4 @@
package de.dennisguse.opentracks.viewmodels; package de.dennisguse.opentracks.ui.intervals;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
@@ -15,13 +15,13 @@ import org.junit.runners.JUnit4;
import java.util.List; import java.util.List;
import de.dennisguse.opentracks.content.data.Distance;
import de.dennisguse.opentracks.content.data.TestDataUtil; import de.dennisguse.opentracks.content.data.TestDataUtil;
import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.data.ContentProviderUtils;
import de.dennisguse.opentracks.content.data.TrackPoint; import de.dennisguse.opentracks.data.TrackPointIterator;
import de.dennisguse.opentracks.content.data.UnitConversions; import de.dennisguse.opentracks.data.models.Distance;
import de.dennisguse.opentracks.content.provider.ContentProviderUtils; import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.content.provider.TrackPointIterator; import de.dennisguse.opentracks.data.models.TrackPoint;
import de.dennisguse.opentracks.data.models.UnitConversions;
import de.dennisguse.opentracks.stats.TrackStatistics; import de.dennisguse.opentracks.stats.TrackStatistics;
import de.dennisguse.opentracks.stats.TrackStatisticsUpdater; import de.dennisguse.opentracks.stats.TrackStatisticsUpdater;
@@ -1,5 +1,8 @@
package de.dennisguse.opentracks.util; package de.dennisguse.opentracks.util;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
import android.content.Context; import android.content.Context;
import androidx.test.core.app.ApplicationProvider; import androidx.test.core.app.ApplicationProvider;
@@ -16,10 +19,7 @@ import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.time.Instant; import java.time.Instant;
import de.dennisguse.opentracks.content.data.TrackPoint; import de.dennisguse.opentracks.data.models.TrackPoint;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
@RunWith(JUnit4.class) @RunWith(JUnit4.class)
public class EGM2008UtilsTest { public class EGM2008UtilsTest {
@@ -11,8 +11,8 @@ import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.content.data.DataField; import de.dennisguse.opentracks.ui.customRecordingLayout.DataField;
import de.dennisguse.opentracks.content.data.Layout; import de.dennisguse.opentracks.ui.customRecordingLayout.Layout;
@RunWith(AndroidJUnit4.class) @RunWith(AndroidJUnit4.class)
public class StatisticsUtilsTest extends TestCase { public class StatisticsUtilsTest extends TestCase {
@@ -45,8 +45,8 @@ import java.util.Locale;
import java.util.TimeZone; import java.util.TimeZone;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import de.dennisguse.opentracks.content.data.Distance; import de.dennisguse.opentracks.data.models.Distance;
import de.dennisguse.opentracks.content.data.Speed; import de.dennisguse.opentracks.data.models.Speed;
/** /**
* Tests for {@link StringUtils}. * Tests for {@link StringUtils}.
@@ -26,11 +26,10 @@ import androidx.test.ext.junit.runners.AndroidJUnit4;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import java.time.LocalDateTime;
import java.time.OffsetDateTime; import java.time.OffsetDateTime;
import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.settings.PreferencesUtils; import de.dennisguse.opentracks.settings.PreferencesUtils;
/** /**
@@ -1,5 +1,7 @@
package de.dennisguse.opentracks.viewmodels; package de.dennisguse.opentracks.viewmodels;
import static org.mockito.Mockito.when;
import android.content.Context; import android.content.Context;
import androidx.test.core.app.ApplicationProvider; import androidx.test.core.app.ApplicationProvider;
@@ -15,14 +17,12 @@ import java.time.Duration;
import java.util.List; import java.util.List;
import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.content.data.Distance; import de.dennisguse.opentracks.data.models.Distance;
import de.dennisguse.opentracks.content.data.Layout; import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.content.data.Track;
import de.dennisguse.opentracks.services.TrackRecordingService; import de.dennisguse.opentracks.services.TrackRecordingService;
import de.dennisguse.opentracks.stats.SensorStatistics; import de.dennisguse.opentracks.stats.SensorStatistics;
import de.dennisguse.opentracks.stats.TrackStatistics; import de.dennisguse.opentracks.stats.TrackStatistics;
import de.dennisguse.opentracks.ui.customRecordingLayout.Layout;
import static org.mockito.Mockito.when;
@RunWith(MockitoJUnitRunner.class) @RunWith(MockitoJUnitRunner.class)
public class StatisticDataBuilderTest extends TestCase { public class StatisticDataBuilderTest extends TestCase {
+7 -7
View File
@@ -267,7 +267,7 @@ limitations under the License.
</activity> </activity>
<activity <activity
android:name=".MarkerDetailActivity" android:name=".ui.markers.MarkerDetailActivity"
android:exported="true"> android:exported="true">
<intent-filter> <intent-filter>
<action android:name="de.dennisguse.opentracks.MarkerDetails" /> <action android:name="de.dennisguse.opentracks.MarkerDetails" />
@@ -275,10 +275,10 @@ limitations under the License.
</intent-filter> </intent-filter>
</activity> </activity>
<activity android:name=".MarkerEditActivity" /> <activity android:name=".ui.markers.MarkerEditActivity" />
<activity <activity
android:name=".MarkerListActivity" android:name=".ui.markers.MarkerListActivity"
android:exported="true" android:exported="true"
android:label="@string/menu_markers" android:label="@string/menu_markers"
android:launchMode="singleTop"> android:launchMode="singleTop">
@@ -316,7 +316,7 @@ limitations under the License.
<activity android:name=".TrackEditActivity" /> <activity android:name=".TrackEditActivity" />
<activity android:name=".AggregatedStatisticsActivity" /> <activity android:name=".ui.aggregatedStatistics.AggregatedStatisticsActivity" />
<activity android:name=".io.file.importer.DirectoryChooserActivity$ExportDirectoryChooserActivity" /> <activity android:name=".io.file.importer.DirectoryChooserActivity$ExportDirectoryChooserActivity" />
<activity android:name=".io.file.importer.DirectoryChooserActivity$DefaultTrackExportDirectoryChooserActivity" /> <activity android:name=".io.file.importer.DirectoryChooserActivity$DefaultTrackExportDirectoryChooserActivity" />
@@ -328,7 +328,7 @@ limitations under the License.
<activity android:name=".settings.SettingsCustomLayoutEditActivity" /> <activity android:name=".settings.SettingsCustomLayoutEditActivity" />
<activity <activity
android:name=".ShowOnMapProxyActivity$KML" android:name=".share.ShowOnMapProxyActivity$KML"
android:exported="true"> android:exported="true">
<intent-filter android:label="@string/open_track_as_KML"> <intent-filter android:label="@string/open_track_as_KML">
<action android:name="Intent.OpenTracks-Dashboard" /> <action android:name="Intent.OpenTracks-Dashboard" />
@@ -336,7 +336,7 @@ limitations under the License.
</intent-filter> </intent-filter>
</activity> </activity>
<activity <activity
android:name=".ShowOnMapProxyActivity$GPX" android:name=".share.ShowOnMapProxyActivity$GPX"
android:exported="true"> android:exported="true">
<intent-filter android:label="@string/open_track_as_GPX"> <intent-filter android:label="@string/open_track_as_GPX">
<action android:name="Intent.OpenTracks-Dashboard" /> <action android:name="Intent.OpenTracks-Dashboard" />
@@ -345,7 +345,7 @@ limitations under the License.
</activity> </activity>
<provider <provider
android:name=".content.provider.ShareContentProvider" android:name=".data.ShareContentProvider"
android:authorities="${applicationId}.content" android:authorities="${applicationId}.content"
android:exported="false" android:exported="false"
android:grantUriPermissions="true" /> android:grantUriPermissions="true" />
@@ -6,8 +6,8 @@ import android.view.View;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import de.dennisguse.opentracks.databinding.AboutBinding; import de.dennisguse.opentracks.databinding.AboutBinding;
import de.dennisguse.opentracks.ui.util.ViewUtils;
import de.dennisguse.opentracks.util.SystemUtils; import de.dennisguse.opentracks.util.SystemUtils;
import de.dennisguse.opentracks.util.ViewUtils;
public class AboutActivity extends AbstractActivity { public class AboutActivity extends AbstractActivity {
@@ -22,11 +22,11 @@ import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.fragments.ConfirmDeleteDialogFragment;
import de.dennisguse.opentracks.fragments.ConfirmDeleteDialogFragment.ConfirmDeleteCaller;
import de.dennisguse.opentracks.services.TrackDeleteService; import de.dennisguse.opentracks.services.TrackDeleteService;
import de.dennisguse.opentracks.services.TrackDeleteServiceConnection; import de.dennisguse.opentracks.services.TrackDeleteServiceConnection;
import de.dennisguse.opentracks.ui.aggregatedStatistics.ConfirmDeleteDialogFragment;
import de.dennisguse.opentracks.ui.aggregatedStatistics.ConfirmDeleteDialogFragment.ConfirmDeleteCaller;
/** /**
* An abstract class for the following common tasks across * An abstract class for the following common tasks across
@@ -1,46 +0,0 @@
/*
* Copyright 2012 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;
import android.view.Menu;
/**
* Callback when items in the contextual action mode are selected.
*
* @author Jimmy Shih
*/
public interface ContextualActionModeCallback {
/**
* Invoked to prepare the menu for the selected items.
*
* @param menu the menu
* @param positions the selected items' positions
* @param ids the selected items' ids, if available
* @param showSelectAll true to show select all
*/
void onPrepare(Menu menu, int[] positions, long[] ids, boolean showSelectAll);
/**
* Invoked when items are selected.
*
* @param itemId the context menu item id
* @param positions the selected items' positions
* @param ids the selected items' ids, if available
*/
boolean onClick(int itemId, int[] positions, long[] ids);
}
@@ -35,7 +35,7 @@ import androidx.fragment.app.Fragment;
import de.dennisguse.opentracks.databinding.ControllerFragmentBinding; import de.dennisguse.opentracks.databinding.ControllerFragmentBinding;
import de.dennisguse.opentracks.services.TrackRecordingService; import de.dennisguse.opentracks.services.TrackRecordingService;
import de.dennisguse.opentracks.services.TrackRecordingServiceConnection; import de.dennisguse.opentracks.services.TrackRecordingServiceConnection;
import de.dennisguse.opentracks.util.ActivityUtils; import de.dennisguse.opentracks.ui.util.ActivityUtils;
import de.dennisguse.opentracks.util.StringUtils; import de.dennisguse.opentracks.util.StringUtils;
/** /**
@@ -6,7 +6,7 @@ import android.view.View;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import de.dennisguse.opentracks.databinding.HelpBinding; import de.dennisguse.opentracks.databinding.HelpBinding;
import de.dennisguse.opentracks.util.ViewUtils; import de.dennisguse.opentracks.ui.util.ViewUtils;
public class HelpActivity extends AbstractActivity { public class HelpActivity extends AbstractActivity {
@@ -1,10 +0,0 @@
package de.dennisguse.opentracks;
import de.dennisguse.opentracks.content.TrackDataHub;
/**
* Interface for communication between activities that use {@link de.dennisguse.opentracks.content.TrackDataHub} and their fragments that need thi data hub.
*/
public interface TrackActivityDataHubInterface {
TrackDataHub getTrackDataHub();
}
@@ -23,8 +23,8 @@ import android.widget.ArrayAdapter;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.data.ContentProviderUtils;
import de.dennisguse.opentracks.content.provider.ContentProviderUtils; import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.databinding.TrackEditBinding; import de.dennisguse.opentracks.databinding.TrackEditBinding;
import de.dennisguse.opentracks.fragments.ChooseActivityTypeDialogFragment; import de.dennisguse.opentracks.fragments.ChooseActivityTypeDialogFragment;
import de.dennisguse.opentracks.services.TrackRecordingServiceConnection; import de.dennisguse.opentracks.services.TrackRecordingServiceConnection;
@@ -54,20 +54,23 @@ import java.time.ZoneOffset;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import de.dennisguse.opentracks.content.data.Distance; import de.dennisguse.opentracks.data.models.Distance;
import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.content.data.TracksColumns; import de.dennisguse.opentracks.data.tables.TracksColumns;
import de.dennisguse.opentracks.databinding.TrackListBinding; import de.dennisguse.opentracks.databinding.TrackListBinding;
import de.dennisguse.opentracks.fragments.ConfirmDeleteDialogFragment;
import de.dennisguse.opentracks.services.TrackRecordingService; import de.dennisguse.opentracks.services.TrackRecordingService;
import de.dennisguse.opentracks.services.TrackRecordingServiceConnection; import de.dennisguse.opentracks.services.TrackRecordingServiceConnection;
import de.dennisguse.opentracks.services.handlers.GpsStatusValue; import de.dennisguse.opentracks.services.handlers.GpsStatusValue;
import de.dennisguse.opentracks.settings.PreferencesUtils; import de.dennisguse.opentracks.settings.PreferencesUtils;
import de.dennisguse.opentracks.settings.SettingsActivity; import de.dennisguse.opentracks.settings.SettingsActivity;
import de.dennisguse.opentracks.util.ActivityUtils; import de.dennisguse.opentracks.share.ShareUtils;
import de.dennisguse.opentracks.ui.aggregatedStatistics.AggregatedStatisticsActivity;
import de.dennisguse.opentracks.ui.aggregatedStatistics.ConfirmDeleteDialogFragment;
import de.dennisguse.opentracks.ui.markers.MarkerListActivity;
import de.dennisguse.opentracks.ui.util.ActivityUtils;
import de.dennisguse.opentracks.ui.util.ListItemUtils;
import de.dennisguse.opentracks.util.IntentDashboardUtils; import de.dennisguse.opentracks.util.IntentDashboardUtils;
import de.dennisguse.opentracks.util.IntentUtils; import de.dennisguse.opentracks.util.IntentUtils;
import de.dennisguse.opentracks.util.ListItemUtils;
import de.dennisguse.opentracks.util.StringUtils; import de.dennisguse.opentracks.util.StringUtils;
import de.dennisguse.opentracks.util.TrackIconUtils; import de.dennisguse.opentracks.util.TrackIconUtils;
@@ -95,7 +98,7 @@ public class TrackListActivity extends AbstractTrackDeleteActivity implements Co
private TrackRecordingService.RecordingStatus recordingStatus = TrackRecordingService.STATUS_DEFAULT; private TrackRecordingService.RecordingStatus recordingStatus = TrackRecordingService.STATUS_DEFAULT;
// Callback when an item is selected in the contextual action mode // Callback when an item is selected in the contextual action mode
private final ContextualActionModeCallback contextualActionModeCallback = new ContextualActionModeCallback() { private final ActivityUtils.ContextualActionModeCallback contextualActionModeCallback = new ActivityUtils.ContextualActionModeCallback() {
@Override @Override
public void onPrepare(Menu menu, int[] positions, long[] trackIds, boolean showSelectAll) { public void onPrepare(Menu menu, int[] positions, long[] trackIds, boolean showSelectAll) {
@@ -447,7 +450,7 @@ public class TrackListActivity extends AbstractTrackDeleteActivity implements Co
} }
if (itemId == R.id.list_context_menu_share) { if (itemId == R.id.list_context_menu_share) {
Intent intent = IntentUtils.newShareFileIntent(this, trackIds); Intent intent = ShareUtils.newShareFileIntent(this, trackIds);
intent = Intent.createChooser(intent, null); intent = Intent.createChooser(intent, null);
startActivity(intent); startActivity(intent);
return true; return true;
@@ -34,18 +34,21 @@ import androidx.viewpager2.adapter.FragmentStateAdapter;
import com.google.android.material.tabs.TabLayoutMediator; import com.google.android.material.tabs.TabLayoutMediator;
import de.dennisguse.opentracks.chart.ChartFragment; import de.dennisguse.opentracks.chart.ChartFragment;
import de.dennisguse.opentracks.content.TrackDataHub; import de.dennisguse.opentracks.chart.TrackDataHubInterface;
import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.data.ContentProviderUtils;
import de.dennisguse.opentracks.content.provider.ContentProviderUtils; import de.dennisguse.opentracks.data.TrackDataHub;
import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.databinding.TrackRecordedBinding; import de.dennisguse.opentracks.databinding.TrackRecordedBinding;
import de.dennisguse.opentracks.fragments.ConfirmDeleteDialogFragment;
import de.dennisguse.opentracks.fragments.IntervalsFragment;
import de.dennisguse.opentracks.fragments.StatisticsRecordedFragment; import de.dennisguse.opentracks.fragments.StatisticsRecordedFragment;
import de.dennisguse.opentracks.services.TrackDeleteService; import de.dennisguse.opentracks.services.TrackDeleteService;
import de.dennisguse.opentracks.services.TrackRecordingService; import de.dennisguse.opentracks.services.TrackRecordingService;
import de.dennisguse.opentracks.services.TrackRecordingServiceConnection; import de.dennisguse.opentracks.services.TrackRecordingServiceConnection;
import de.dennisguse.opentracks.settings.PreferencesUtils; import de.dennisguse.opentracks.settings.PreferencesUtils;
import de.dennisguse.opentracks.settings.SettingsActivity; import de.dennisguse.opentracks.settings.SettingsActivity;
import de.dennisguse.opentracks.share.ShareUtils;
import de.dennisguse.opentracks.ui.aggregatedStatistics.ConfirmDeleteDialogFragment;
import de.dennisguse.opentracks.ui.intervals.IntervalsFragment;
import de.dennisguse.opentracks.ui.markers.MarkerListActivity;
import de.dennisguse.opentracks.util.IntentDashboardUtils; import de.dennisguse.opentracks.util.IntentDashboardUtils;
import de.dennisguse.opentracks.util.IntentUtils; import de.dennisguse.opentracks.util.IntentUtils;
@@ -56,7 +59,7 @@ import de.dennisguse.opentracks.util.IntentUtils;
* @author Rodrigo Damazio * @author Rodrigo Damazio
*/ */
//TODO Should not use TrackRecordingServiceConnection; only used to determine if there is NO current recording, to enable resume functionality. //TODO Should not use TrackRecordingServiceConnection; only used to determine if there is NO current recording, to enable resume functionality.
public class TrackRecordedActivity extends AbstractTrackDeleteActivity implements ConfirmDeleteDialogFragment.ConfirmDeleteCaller, TrackActivityDataHubInterface { public class TrackRecordedActivity extends AbstractTrackDeleteActivity implements ConfirmDeleteDialogFragment.ConfirmDeleteCaller, TrackDataHubInterface {
private static final String TAG = TrackRecordedActivity.class.getSimpleName(); private static final String TAG = TrackRecordedActivity.class.getSimpleName();
@@ -180,7 +183,7 @@ public class TrackRecordedActivity extends AbstractTrackDeleteActivity implement
@Override @Override
public boolean onOptionsItemSelected(MenuItem item) { public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.track_detail_share) { if (item.getItemId() == R.id.track_detail_share) {
Intent intent = Intent.createChooser(IntentUtils.newShareFileIntent(this, trackId), null); Intent intent = Intent.createChooser(ShareUtils.newShareFileIntent(this, trackId), null);
startActivity(intent); startActivity(intent);
return true; return true;
} }
@@ -22,17 +22,20 @@ import com.google.android.material.tabs.TabLayoutMediator;
import java.util.List; import java.util.List;
import de.dennisguse.opentracks.chart.ChartFragment; import de.dennisguse.opentracks.chart.ChartFragment;
import de.dennisguse.opentracks.content.TrackDataHub; import de.dennisguse.opentracks.chart.TrackDataHubInterface;
import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.data.ContentProviderUtils;
import de.dennisguse.opentracks.content.provider.ContentProviderUtils; import de.dennisguse.opentracks.data.TrackDataHub;
import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.databinding.TrackRecordingBinding; import de.dennisguse.opentracks.databinding.TrackRecordingBinding;
import de.dennisguse.opentracks.fragments.ChooseActivityTypeDialogFragment; import de.dennisguse.opentracks.fragments.ChooseActivityTypeDialogFragment;
import de.dennisguse.opentracks.fragments.IntervalsFragment;
import de.dennisguse.opentracks.fragments.StatisticsRecordingFragment; import de.dennisguse.opentracks.fragments.StatisticsRecordingFragment;
import de.dennisguse.opentracks.services.TrackRecordingService; import de.dennisguse.opentracks.services.TrackRecordingService;
import de.dennisguse.opentracks.services.TrackRecordingServiceConnection; import de.dennisguse.opentracks.services.TrackRecordingServiceConnection;
import de.dennisguse.opentracks.settings.PreferencesUtils; import de.dennisguse.opentracks.settings.PreferencesUtils;
import de.dennisguse.opentracks.settings.SettingsActivity; import de.dennisguse.opentracks.settings.SettingsActivity;
import de.dennisguse.opentracks.ui.intervals.IntervalsFragment;
import de.dennisguse.opentracks.ui.markers.MarkerEditActivity;
import de.dennisguse.opentracks.ui.markers.MarkerListActivity;
import de.dennisguse.opentracks.util.IntentDashboardUtils; import de.dennisguse.opentracks.util.IntentDashboardUtils;
import de.dennisguse.opentracks.util.IntentUtils; import de.dennisguse.opentracks.util.IntentUtils;
import de.dennisguse.opentracks.util.TrackIconUtils; import de.dennisguse.opentracks.util.TrackIconUtils;
@@ -46,7 +49,7 @@ import de.dennisguse.opentracks.util.TrackUtils;
*/ */
//NOTE: This activity does NOT react to preference changes of R.string.recording_track_id_key. //NOTE: This activity does NOT react to preference changes of R.string.recording_track_id_key.
//This mode of communication should be removed anyhow. //This mode of communication should be removed anyhow.
public class TrackRecordingActivity extends AbstractActivity implements ChooseActivityTypeDialogFragment.ChooseActivityTypeCaller, TrackActivityDataHubInterface, ControllerFragment.Callback { public class TrackRecordingActivity extends AbstractActivity implements ChooseActivityTypeDialogFragment.ChooseActivityTypeCaller, TrackDataHubInterface, ControllerFragment.Callback {
public static final String EXTRA_TRACK_ID = "track_id"; public static final String EXTRA_TRACK_ID = "track_id";
@@ -14,7 +14,7 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.content.data.CustomLayoutFieldType; import de.dennisguse.opentracks.ui.customRecordingLayout.CustomLayoutFieldType;
import de.dennisguse.opentracks.viewmodels.StatisticData; import de.dennisguse.opentracks.viewmodels.StatisticData;
public class StatisticsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { public class StatisticsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
@@ -31,14 +31,12 @@ import java.util.Collections;
import java.util.List; import java.util.List;
import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.TrackActivityDataHubInterface; import de.dennisguse.opentracks.data.TrackDataHub;
import de.dennisguse.opentracks.content.TrackDataHub; import de.dennisguse.opentracks.data.models.Altitude;
import de.dennisguse.opentracks.content.TrackDataListener; import de.dennisguse.opentracks.data.models.Marker;
import de.dennisguse.opentracks.content.data.Altitude; import de.dennisguse.opentracks.data.models.Speed;
import de.dennisguse.opentracks.content.data.Marker; import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.content.data.Speed; import de.dennisguse.opentracks.data.models.TrackPoint;
import de.dennisguse.opentracks.content.data.Track;
import de.dennisguse.opentracks.content.data.TrackPoint;
import de.dennisguse.opentracks.databinding.ChartBinding; import de.dennisguse.opentracks.databinding.ChartBinding;
import de.dennisguse.opentracks.settings.PreferencesUtils; import de.dennisguse.opentracks.settings.PreferencesUtils;
import de.dennisguse.opentracks.stats.TrackStatistics; import de.dennisguse.opentracks.stats.TrackStatistics;
@@ -51,7 +49,7 @@ import de.dennisguse.opentracks.stats.TrackStatisticsUpdater;
* @author Sandor Dornbush * @author Sandor Dornbush
* @author Rodrigo Damazio * @author Rodrigo Damazio
*/ */
public class ChartFragment extends Fragment implements TrackDataListener { public class ChartFragment extends Fragment implements TrackDataHub.Listener {
private static final String KEY_CHART_VIEW_BY_DISTANCE_KEY = "chartViewByDistance"; private static final String KEY_CHART_VIEW_BY_DISTANCE_KEY = "chartViewByDistance";
@@ -242,7 +240,7 @@ public class ChartFragment extends Fragment implements TrackDataListener {
* Needs to be synchronized because trackDataHub can be accessed by multiple threads. * Needs to be synchronized because trackDataHub can be accessed by multiple threads.
*/ */
private synchronized void resumeTrackDataHub() { private synchronized void resumeTrackDataHub() {
trackDataHub = ((TrackActivityDataHubInterface) getActivity()).getTrackDataHub(); trackDataHub = ((TrackDataHubInterface) getActivity()).getTrackDataHub();
trackDataHub.registerTrackDataListener(this); trackDataHub.registerTrackDataListener(this);
} }
@@ -3,11 +3,11 @@ package de.dennisguse.opentracks.chart;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting;
import de.dennisguse.opentracks.content.data.Altitude; import de.dennisguse.opentracks.data.models.Altitude;
import de.dennisguse.opentracks.content.data.Distance; import de.dennisguse.opentracks.data.models.Distance;
import de.dennisguse.opentracks.content.data.Speed; import de.dennisguse.opentracks.data.models.Speed;
import de.dennisguse.opentracks.content.data.TrackPoint; import de.dennisguse.opentracks.data.models.TrackPoint;
import de.dennisguse.opentracks.content.data.UnitConversions; import de.dennisguse.opentracks.data.models.UnitConversions;
import de.dennisguse.opentracks.stats.TrackStatistics; import de.dennisguse.opentracks.stats.TrackStatistics;
public class ChartPoint { public class ChartPoint {
@@ -44,14 +44,14 @@ import java.util.ArrayList;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import de.dennisguse.opentracks.MarkerDetailActivity;
import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.content.data.Marker; import de.dennisguse.opentracks.data.models.Marker;
import de.dennisguse.opentracks.stats.ExtremityMonitor; import de.dennisguse.opentracks.stats.ExtremityMonitor;
import de.dennisguse.opentracks.ui.markers.MarkerDetailActivity;
import de.dennisguse.opentracks.ui.markers.MarkerUtils;
import de.dennisguse.opentracks.ui.util.ThemeUtils;
import de.dennisguse.opentracks.util.IntentUtils; import de.dennisguse.opentracks.util.IntentUtils;
import de.dennisguse.opentracks.util.MarkerUtils;
import de.dennisguse.opentracks.util.StringUtils; import de.dennisguse.opentracks.util.StringUtils;
import de.dennisguse.opentracks.util.ThemeUtils;
/** /**
* Visualization of the chart. * Visualization of the chart.
@@ -0,0 +1,10 @@
package de.dennisguse.opentracks.chart;
import de.dennisguse.opentracks.data.TrackDataHub;
/**
* Interface for communication between activities that use {@link TrackDataHub} and their fragments that need thi data hub.
*/
public interface TrackDataHubInterface {
TrackDataHub getTrackDataHub();
}
@@ -1,91 +0,0 @@
/*
* Copyright 2011 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.content;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import de.dennisguse.opentracks.content.data.Altitude;
import de.dennisguse.opentracks.content.data.Marker;
import de.dennisguse.opentracks.content.data.Speed;
import de.dennisguse.opentracks.content.data.Track;
import de.dennisguse.opentracks.content.data.TrackPoint;
import de.dennisguse.opentracks.stats.TrackStatistics;
/**
* Listener for track data changes.
*
* @author Rodrigo Damazio
*/
public interface TrackDataListener {
/**
* Called when the track or its statistics has been updated.
*
* @param track the track
*/
//TODO Could be @NonNull
void onTrackUpdated(Track track);
/**
* Called to clear previously-sent track points.
*/
void clearTrackPoints();
/**
* Called when a sampled in track point is read.
*
* @param trackPoint the trackPoint
*/
default void onSampledInTrackPoint(@NonNull TrackPoint trackPoint, @NonNull TrackStatistics trackStatistics, Speed smoothedSpeed, @Nullable Altitude smoothedAltitude_m) {
}
/**
* Called when a sampled out track point is read.
*
* @param trackPoint the trackPoint
*/
default void onSampledOutTrackPoint(@NonNull TrackPoint trackPoint, @NonNull TrackStatistics trackStatistics) {
}
/**
* Called when finish sending new track points.
*/
default void onNewTrackPointsDone() {
}
/**
* Called to clear previously sent markers.
*/
default void clearMarkers() {
}
/**
* Called when a new marker is read.
*
* @param marker the marker
*/
default void onNewMarker(@NonNull Marker marker) {
}
/**
* Called when finish sending new markers.
* This gets called after every batch of calls to {@link #clearMarkers()} and {@link #onNewMarker(Marker)}.
*/
default void onNewMarkersDone() {
}
}
@@ -1,8 +1,8 @@
package de.dennisguse.opentracks.content.provider; package de.dennisguse.opentracks.data;
import android.database.Cursor; import android.database.Cursor;
import de.dennisguse.opentracks.content.data.TrackPointsColumns; import de.dennisguse.opentracks.data.tables.TrackPointsColumns;
/** /**
* A cache of track points indexes. * A cache of track points indexes.
@@ -14,7 +14,7 @@
* the License. * the License.
*/ */
package de.dennisguse.opentracks.content.provider; package de.dennisguse.opentracks.data;
import android.content.ContentResolver; import android.content.ContentResolver;
import android.content.ContentUris; import android.content.ContentUris;
@@ -40,15 +40,15 @@ import java.util.List;
import java.util.UUID; import java.util.UUID;
import de.dennisguse.opentracks.BuildConfig; import de.dennisguse.opentracks.BuildConfig;
import de.dennisguse.opentracks.content.data.Altitude; import de.dennisguse.opentracks.data.models.Altitude;
import de.dennisguse.opentracks.content.data.Distance; import de.dennisguse.opentracks.data.models.Distance;
import de.dennisguse.opentracks.content.data.Marker; import de.dennisguse.opentracks.data.models.Marker;
import de.dennisguse.opentracks.content.data.MarkerColumns; import de.dennisguse.opentracks.data.models.Speed;
import de.dennisguse.opentracks.content.data.Speed; import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.data.models.TrackPoint;
import de.dennisguse.opentracks.content.data.TrackPoint; import de.dennisguse.opentracks.data.tables.MarkerColumns;
import de.dennisguse.opentracks.content.data.TrackPointsColumns; import de.dennisguse.opentracks.data.tables.TrackPointsColumns;
import de.dennisguse.opentracks.content.data.TracksColumns; import de.dennisguse.opentracks.data.tables.TracksColumns;
import de.dennisguse.opentracks.stats.SensorStatistics; import de.dennisguse.opentracks.stats.SensorStatistics;
import de.dennisguse.opentracks.stats.TrackStatistics; import de.dennisguse.opentracks.stats.TrackStatistics;
import de.dennisguse.opentracks.util.FileUtils; import de.dennisguse.opentracks.util.FileUtils;
@@ -14,7 +14,7 @@
* the License. * the License.
*/ */
package de.dennisguse.opentracks.content.provider; package de.dennisguse.opentracks.data;
import android.content.ContentProvider; import android.content.ContentProvider;
import android.content.ContentUris; import android.content.ContentUris;
@@ -35,10 +35,10 @@ import androidx.annotation.VisibleForTesting;
import java.util.Arrays; import java.util.Arrays;
import de.dennisguse.opentracks.content.data.MarkerColumns; import de.dennisguse.opentracks.data.models.TrackPoint;
import de.dennisguse.opentracks.content.data.TrackPoint; import de.dennisguse.opentracks.data.tables.MarkerColumns;
import de.dennisguse.opentracks.content.data.TrackPointsColumns; import de.dennisguse.opentracks.data.tables.TrackPointsColumns;
import de.dennisguse.opentracks.content.data.TracksColumns; import de.dennisguse.opentracks.data.tables.TracksColumns;
/** /**
* A {@link ContentProvider} that handles access to track points, tracks, and markers tables. * A {@link ContentProvider} that handles access to track points, tracks, and markers tables.
@@ -1,4 +1,4 @@
package de.dennisguse.opentracks.content.provider; package de.dennisguse.opentracks.data;
import android.content.ContentValues; import android.content.ContentValues;
import android.content.Context; import android.content.Context;
@@ -15,10 +15,10 @@ import java.time.zone.ZoneRules;
import java.util.UUID; import java.util.UUID;
import de.dennisguse.opentracks.Startup; import de.dennisguse.opentracks.Startup;
import de.dennisguse.opentracks.content.data.MarkerColumns; import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.data.tables.MarkerColumns;
import de.dennisguse.opentracks.content.data.TrackPointsColumns; import de.dennisguse.opentracks.data.tables.TrackPointsColumns;
import de.dennisguse.opentracks.content.data.TracksColumns; import de.dennisguse.opentracks.data.tables.TracksColumns;
/** /**
* Database helper for creating and upgrading the database. * Database helper for creating and upgrading the database.
@@ -1,4 +1,4 @@
package de.dennisguse.opentracks.content.provider; package de.dennisguse.opentracks.data;
public class SelectionData { public class SelectionData {
private final String selection; private final String selection;
@@ -1,4 +1,4 @@
package de.dennisguse.opentracks.content.provider; package de.dennisguse.opentracks.data;
import android.content.Context; import android.content.Context;
import android.content.UriMatcher; import android.content.UriMatcher;
@@ -25,8 +25,8 @@ import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.content.data.TracksColumns; import de.dennisguse.opentracks.data.tables.TracksColumns;
import de.dennisguse.opentracks.io.file.TrackFileFormat; import de.dennisguse.opentracks.io.file.TrackFileFormat;
import de.dennisguse.opentracks.io.file.exporter.TrackExporter; import de.dennisguse.opentracks.io.file.exporter.TrackExporter;
@@ -14,7 +14,7 @@
* the License. * the License.
*/ */
package de.dennisguse.opentracks.content; package de.dennisguse.opentracks.data;
import android.content.ContentResolver; import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
@@ -25,28 +25,30 @@ import android.os.HandlerThread;
import android.util.Log; import android.util.Log;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting;
import java.util.Collections; import java.util.Collections;
import java.util.HashSet; import java.util.HashSet;
import java.util.Set; import java.util.Set;
import de.dennisguse.opentracks.content.data.Distance; import de.dennisguse.opentracks.data.models.Altitude;
import de.dennisguse.opentracks.content.data.Marker; import de.dennisguse.opentracks.data.models.Distance;
import de.dennisguse.opentracks.content.data.MarkerColumns; import de.dennisguse.opentracks.data.models.Marker;
import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.data.models.Speed;
import de.dennisguse.opentracks.content.data.TrackPoint; import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.content.data.TrackPointsColumns; import de.dennisguse.opentracks.data.models.TrackPoint;
import de.dennisguse.opentracks.content.data.TracksColumns; import de.dennisguse.opentracks.data.tables.MarkerColumns;
import de.dennisguse.opentracks.content.provider.ContentProviderUtils; import de.dennisguse.opentracks.data.tables.TrackPointsColumns;
import de.dennisguse.opentracks.content.provider.TrackPointIterator; import de.dennisguse.opentracks.data.tables.TracksColumns;
import de.dennisguse.opentracks.services.TrackRecordingService; import de.dennisguse.opentracks.services.TrackRecordingService;
import de.dennisguse.opentracks.services.handlers.EGM2008CorrectionManager; import de.dennisguse.opentracks.services.handlers.EGM2008CorrectionManager;
import de.dennisguse.opentracks.stats.TrackStatistics;
import de.dennisguse.opentracks.stats.TrackStatisticsUpdater; import de.dennisguse.opentracks.stats.TrackStatisticsUpdater;
/** /**
* Track data hub. * Track data hub.
* Receives data from {@link de.dennisguse.opentracks.content.provider.CustomContentProvider} and distributes it to {@link TrackDataListener} after some processing. * Receives data from {@link CustomContentProvider} and distributes it to {@link Listener} after some processing.
* <p> * <p>
* {@link TrackPoint}s are filtered/downsampled with a dynamic sampling frequency. * {@link TrackPoint}s are filtered/downsampled with a dynamic sampling frequency.
* *
@@ -70,7 +72,7 @@ public class TrackDataHub {
private static final String TAG = TrackDataHub.class.getSimpleName(); private static final String TAG = TrackDataHub.class.getSimpleName();
private final Context context; private final Context context;
private final Set<TrackDataListener> listeners; private final Set<Listener> listeners;
private final ContentProviderUtils contentProviderUtils; private final ContentProviderUtils contentProviderUtils;
private final int targetNumPoints; private final int targetNumPoints;
@@ -178,11 +180,11 @@ public class TrackDataHub {
} }
/** /**
* Registers a {@link TrackDataListener}. * Registers a {@link Listener}.
* *
* @param trackDataListener the track data listener * @param trackDataListener the track data listener
*/ */
public void registerTrackDataListener(final TrackDataListener trackDataListener) { public void registerTrackDataListener(final Listener trackDataListener) {
handler.post(() -> { handler.post(() -> {
listeners.add(trackDataListener); listeners.add(trackDataListener);
if (isStarted()) { if (isStarted()) {
@@ -192,11 +194,11 @@ public class TrackDataHub {
} }
/** /**
* Unregisters a {@link TrackDataListener}. * Unregisters a {@link Listener}.
* *
* @param trackDataListener the track data listener * @param trackDataListener the track data listener
*/ */
public void unregisterTrackDataListener(final TrackDataListener trackDataListener) { public void unregisterTrackDataListener(final Listener trackDataListener) {
handler.post(() -> listeners.remove(trackDataListener)); handler.post(() -> listeners.remove(trackDataListener));
} }
@@ -218,7 +220,7 @@ public class TrackDataHub {
notifyTracksTableUpdate(listeners); notifyTracksTableUpdate(listeners);
for (TrackDataListener listener : listeners) { for (Listener listener : listeners) {
listener.clearTrackPoints(); listener.clearTrackPoints();
} }
notifyTrackPointsTableUpdate(true, listeners); notifyTrackPointsTableUpdate(true, listeners);
@@ -230,8 +232,8 @@ public class TrackDataHub {
* *
* @param trackDataListener the track data listener. * @param trackDataListener the track data listener.
*/ */
private void loadDataForListener(TrackDataListener trackDataListener) { private void loadDataForListener(Listener trackDataListener) {
Set<TrackDataListener> trackDataListeners = Collections.singleton(trackDataListener); Set<Listener> trackDataListeners = Collections.singleton(trackDataListener);
//Track //Track
notifyTracksTableUpdate(trackDataListeners); notifyTracksTableUpdate(trackDataListeners);
@@ -253,12 +255,12 @@ public class TrackDataHub {
* *
* @param trackDataListeners the track data listeners to notify * @param trackDataListeners the track data listeners to notify
*/ */
private void notifyTracksTableUpdate(Set<TrackDataListener> trackDataListeners) { private void notifyTracksTableUpdate(Set<Listener> trackDataListeners) {
if (trackDataListeners.isEmpty()) { if (trackDataListeners.isEmpty()) {
return; return;
} }
Track track = contentProviderUtils.getTrack(selectedTrackId); Track track = contentProviderUtils.getTrack(selectedTrackId);
for (TrackDataListener trackDataListener : trackDataListeners) { for (Listener trackDataListener : trackDataListeners) {
trackDataListener.onTrackUpdated(track); trackDataListener.onTrackUpdated(track);
} }
} }
@@ -269,12 +271,12 @@ public class TrackDataHub {
* *
* @param trackDataListeners the track data listeners to notify * @param trackDataListeners the track data listeners to notify
*/ */
private void notifyMarkersTableUpdate(Set<TrackDataListener> trackDataListeners) { private void notifyMarkersTableUpdate(Set<Listener> trackDataListeners) {
if (trackDataListeners.isEmpty()) { if (trackDataListeners.isEmpty()) {
return; return;
} }
for (TrackDataListener trackDataListener : trackDataListeners) { for (Listener trackDataListener : trackDataListeners) {
trackDataListener.clearMarkers(); trackDataListener.clearMarkers();
} }
@@ -282,14 +284,14 @@ public class TrackDataHub {
if (cursor != null && cursor.moveToFirst()) { if (cursor != null && cursor.moveToFirst()) {
do { do {
Marker marker = contentProviderUtils.createMarker(cursor); Marker marker = contentProviderUtils.createMarker(cursor);
for (TrackDataListener trackDataListener : trackDataListeners) { for (Listener trackDataListener : trackDataListeners) {
trackDataListener.onNewMarker(marker); trackDataListener.onNewMarker(marker);
} }
} while (cursor.moveToNext()); } while (cursor.moveToNext());
} }
} }
for (TrackDataListener trackDataListener : trackDataListeners) { for (Listener trackDataListener : trackDataListeners) {
trackDataListener.onNewMarkersDone(); trackDataListener.onNewMarkersDone();
} }
} }
@@ -299,7 +301,7 @@ public class TrackDataHub {
* *
* @param updateSamplingState true to update the sampling state * @param updateSamplingState true to update the sampling state
*/ */
private void notifyTrackPointsTableUpdate(boolean updateSamplingState, Set<TrackDataListener> listeners) { private void notifyTrackPointsTableUpdate(boolean updateSamplingState, Set<Listener> listeners) {
if (listeners.isEmpty()) { if (listeners.isEmpty()) {
return; return;
} }
@@ -308,7 +310,7 @@ public class TrackDataHub {
// Reload and resample the track at a lower frequency. // Reload and resample the track at a lower frequency.
Log.i(TAG, "Resampling track after " + numLoadedPoints + " points."); Log.i(TAG, "Resampling track after " + numLoadedPoints + " points.");
resetSamplingState(); resetSamplingState();
for (TrackDataListener listener : listeners) { for (Listener listener : listeners) {
listener.clearTrackPoints(); listener.clearTrackPoints();
} }
} }
@@ -366,11 +368,11 @@ public class TrackDataHub {
// Also include the last point if the selected track is not recording. // Also include the last point if the selected track is not recording.
if ((localNumLoadedTrackPoints % samplingFrequency == 0) || (trackPointId == lastTrackPointId && !isSelectedTrackRecording())) { if ((localNumLoadedTrackPoints % samplingFrequency == 0) || (trackPointId == lastTrackPointId && !isSelectedTrackRecording())) {
for (TrackDataListener trackDataListener : listeners) { for (Listener trackDataListener : listeners) {
trackDataListener.onSampledInTrackPoint(trackPoint, currentUpdater.getTrackStatistics(), currentUpdater.getSmoothedSpeed(), currentUpdater.getSmoothedAltitude()); trackDataListener.onSampledInTrackPoint(trackPoint, currentUpdater.getTrackStatistics(), currentUpdater.getSmoothedSpeed(), currentUpdater.getSmoothedAltitude());
} }
} else { } else {
for (TrackDataListener trackDataListener : listeners) { for (Listener trackDataListener : listeners) {
trackDataListener.onSampledOutTrackPoint(trackPoint, currentUpdater.getTrackStatistics()); trackDataListener.onSampledOutTrackPoint(trackPoint, currentUpdater.getTrackStatistics());
} }
} }
@@ -389,7 +391,7 @@ public class TrackDataHub {
lastSeenTrackPointId = localLastSeenTrackPointIdId; lastSeenTrackPointId = localLastSeenTrackPointIdId;
} }
listeners.stream().forEach(TrackDataListener::onNewTrackPointsDone); listeners.stream().forEach(Listener::onNewTrackPointsDone);
} }
@@ -415,4 +417,63 @@ public class TrackDataHub {
public void setRecordingDistanceInterval(Distance recordingDistanceInterval) { public void setRecordingDistanceInterval(Distance recordingDistanceInterval) {
this.recordingDistanceInterval = recordingDistanceInterval; this.recordingDistanceInterval = recordingDistanceInterval;
} }
public interface Listener {
/**
* Called when the track or its statistics has been updated.
*
* @param track the track
*/
//TODO Could be @NonNull
void onTrackUpdated(Track track);
/**
* Called to clear previously-sent track points.
*/
void clearTrackPoints();
/**
* Called when a sampled in track point is read.
*
* @param trackPoint the trackPoint
*/
default void onSampledInTrackPoint(@NonNull TrackPoint trackPoint, @NonNull TrackStatistics trackStatistics, Speed smoothedSpeed, @Nullable Altitude smoothedAltitude_m) {
}
/**
* Called when a sampled out track point is read.
*
* @param trackPoint the trackPoint
*/
default void onSampledOutTrackPoint(@NonNull TrackPoint trackPoint, @NonNull TrackStatistics trackStatistics) {
}
/**
* Called when finish sending new track points.
*/
default void onNewTrackPointsDone() {
}
/**
* Called to clear previously sent markers.
*/
default void clearMarkers() {
}
/**
* Called when a new marker is read.
*
* @param marker the marker
*/
default void onNewMarker(@NonNull Marker marker) {
}
/**
* Called when finish sending new markers.
* This gets called after every batch of calls to {@link #clearMarkers()} and {@link #onNewMarker(Marker)}.
*/
default void onNewMarkersDone() {
}
}
} }
@@ -1,4 +1,4 @@
package de.dennisguse.opentracks.content.provider; package de.dennisguse.opentracks.data;
import android.database.Cursor; import android.database.Cursor;
@@ -8,8 +8,8 @@ import androidx.annotation.VisibleForTesting;
import java.util.Iterator; import java.util.Iterator;
import java.util.NoSuchElementException; import java.util.NoSuchElementException;
import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.content.data.TrackPoint; import de.dennisguse.opentracks.data.models.TrackPoint;
/** /**
* A lightweight wrapper around the original {@link Cursor}. * A lightweight wrapper around the original {@link Cursor}.
@@ -1,4 +1,4 @@
package de.dennisguse.opentracks.content.data; package de.dennisguse.opentracks.data;
import android.text.TextUtils; import android.text.TextUtils;
@@ -8,8 +8,8 @@ import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import de.dennisguse.opentracks.content.provider.ContentProviderUtils; import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.content.provider.SelectionData; import de.dennisguse.opentracks.data.tables.TracksColumns;
public class TrackSelection implements ContentProviderUtils.ContentProviderSelectionInterface { public class TrackSelection implements ContentProviderUtils.ContentProviderSelectionInterface {
private final List<Track.Id> trackIds = new ArrayList<>(); private final List<Track.Id> trackIds = new ArrayList<>();
@@ -1,4 +1,4 @@
package de.dennisguse.opentracks.content.provider; package de.dennisguse.opentracks.data;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
@@ -1,4 +1,4 @@
package de.dennisguse.opentracks.content.data; package de.dennisguse.opentracks.data.models;
import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.R;
@@ -1,4 +1,4 @@
package de.dennisguse.opentracks.content.data; package de.dennisguse.opentracks.data.models;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
@@ -14,7 +14,7 @@
* the License. * the License.
*/ */
package de.dennisguse.opentracks.content.data; package de.dennisguse.opentracks.data.models;
import android.location.Location; import android.location.Location;
import android.net.Uri; import android.net.Uri;
@@ -1,4 +1,4 @@
package de.dennisguse.opentracks.content.data; package de.dennisguse.opentracks.data.models;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
@@ -14,7 +14,7 @@
* the License. * the License.
*/ */
package de.dennisguse.opentracks.content.data; package de.dennisguse.opentracks.data.models;
import android.os.Parcel; import android.os.Parcel;
import android.os.Parcelable; import android.os.Parcelable;
@@ -13,7 +13,7 @@
* License for the specific language governing permissions and limitations under * License for the specific language governing permissions and limitations under
* the License. * the License.
*/ */
package de.dennisguse.opentracks.content.data; package de.dennisguse.opentracks.data.models;
import android.location.Location; import android.location.Location;
import android.os.Parcel; import android.os.Parcel;
@@ -13,7 +13,7 @@
* License for the specific language governing permissions and limitations under * License for the specific language governing permissions and limitations under
* the License. * the License.
*/ */
package de.dennisguse.opentracks.content.data; package de.dennisguse.opentracks.data.models;
/** /**
* Unit conversion constants. * Unit conversion constants.
@@ -14,12 +14,12 @@
* the License. * the License.
*/ */
package de.dennisguse.opentracks.content.data; package de.dennisguse.opentracks.data.tables;
import android.net.Uri; import android.net.Uri;
import android.provider.BaseColumns; import android.provider.BaseColumns;
import de.dennisguse.opentracks.content.provider.ContentProviderUtils; import de.dennisguse.opentracks.data.ContentProviderUtils;
/** /**
* Constants for markers table. * Constants for markers table.
@@ -14,12 +14,12 @@
* the License. * the License.
*/ */
package de.dennisguse.opentracks.content.data; package de.dennisguse.opentracks.data.tables;
import android.net.Uri; import android.net.Uri;
import android.provider.BaseColumns; import android.provider.BaseColumns;
import de.dennisguse.opentracks.content.provider.ContentProviderUtils; import de.dennisguse.opentracks.data.ContentProviderUtils;
/** /**
* Constants for the track points table. * Constants for the track points table.
@@ -14,12 +14,12 @@
* the License. * the License.
*/ */
package de.dennisguse.opentracks.content.data; package de.dennisguse.opentracks.data.tables;
import android.net.Uri; import android.net.Uri;
import android.provider.BaseColumns; import android.provider.BaseColumns;
import de.dennisguse.opentracks.content.provider.ContentProviderUtils; import de.dennisguse.opentracks.data.ContentProviderUtils;
/** /**
* Constants for the tracks table. * Constants for the tracks table.
@@ -27,7 +27,7 @@ import androidx.core.content.ContextCompat;
import java.util.List; import java.util.List;
import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.util.ResourceUtils; import de.dennisguse.opentracks.ui.util.ResourceUtils;
/** /**
* Image adapter for choosing an activity type. * Image adapter for choosing an activity type.
@@ -36,12 +36,12 @@ import java.util.List;
import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.TrackRecordedActivity; import de.dennisguse.opentracks.TrackRecordedActivity;
import de.dennisguse.opentracks.adapters.StatisticsAdapter; import de.dennisguse.opentracks.adapters.StatisticsAdapter;
import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.data.ContentProviderUtils;
import de.dennisguse.opentracks.content.provider.ContentProviderUtils; import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.databinding.StatisticsRecordedBinding; import de.dennisguse.opentracks.databinding.StatisticsRecordedBinding;
import de.dennisguse.opentracks.settings.PreferencesUtils;
import de.dennisguse.opentracks.stats.SensorStatistics; import de.dennisguse.opentracks.stats.SensorStatistics;
import de.dennisguse.opentracks.stats.TrackStatistics; import de.dennisguse.opentracks.stats.TrackStatistics;
import de.dennisguse.opentracks.settings.PreferencesUtils;
import de.dennisguse.opentracks.util.StringUtils; import de.dennisguse.opentracks.util.StringUtils;
import de.dennisguse.opentracks.util.TrackIconUtils; import de.dennisguse.opentracks.util.TrackIconUtils;
import de.dennisguse.opentracks.viewmodels.StatisticData; import de.dennisguse.opentracks.viewmodels.StatisticData;
@@ -19,13 +19,13 @@ import java.util.List;
import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.adapters.StatisticsAdapter; import de.dennisguse.opentracks.adapters.StatisticsAdapter;
import de.dennisguse.opentracks.content.data.Layout; import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.data.models.TrackPoint;
import de.dennisguse.opentracks.content.data.TrackPoint;
import de.dennisguse.opentracks.databinding.StatisticsRecordingBinding; import de.dennisguse.opentracks.databinding.StatisticsRecordingBinding;
import de.dennisguse.opentracks.services.TrackRecordingService; import de.dennisguse.opentracks.services.TrackRecordingService;
import de.dennisguse.opentracks.services.TrackRecordingServiceConnection; import de.dennisguse.opentracks.services.TrackRecordingServiceConnection;
import de.dennisguse.opentracks.settings.PreferencesUtils; import de.dennisguse.opentracks.settings.PreferencesUtils;
import de.dennisguse.opentracks.ui.customRecordingLayout.Layout;
import de.dennisguse.opentracks.viewmodels.StatisticData; import de.dennisguse.opentracks.viewmodels.StatisticData;
import de.dennisguse.opentracks.viewmodels.StatisticsDataModel; import de.dennisguse.opentracks.viewmodels.StatisticsDataModel;
@@ -6,7 +6,7 @@ import android.graphics.Bitmap;
import java.util.Locale; import java.util.Locale;
import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.content.provider.ContentProviderUtils; import de.dennisguse.opentracks.data.ContentProviderUtils;
import de.dennisguse.opentracks.io.file.exporter.GPXTrackExporter; import de.dennisguse.opentracks.io.file.exporter.GPXTrackExporter;
import de.dennisguse.opentracks.io.file.exporter.KMLTrackExporter; import de.dennisguse.opentracks.io.file.exporter.KMLTrackExporter;
import de.dennisguse.opentracks.io.file.exporter.KmzTrackExporter; import de.dennisguse.opentracks.io.file.exporter.KmzTrackExporter;
@@ -33,9 +33,9 @@ import java.util.List;
import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.LinkedBlockingQueue;
import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.data.ContentProviderUtils;
import de.dennisguse.opentracks.content.data.TracksColumns; import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.content.provider.ContentProviderUtils; import de.dennisguse.opentracks.data.tables.TracksColumns;
import de.dennisguse.opentracks.databinding.ExportActivityBinding; import de.dennisguse.opentracks.databinding.ExportActivityBinding;
import de.dennisguse.opentracks.databinding.ToolbarBinding; import de.dennisguse.opentracks.databinding.ToolbarBinding;
import de.dennisguse.opentracks.io.file.ErrorListDialog; import de.dennisguse.opentracks.io.file.ErrorListDialog;
@@ -12,8 +12,8 @@ import androidx.annotation.NonNull;
import androidx.core.app.JobIntentService; import androidx.core.app.JobIntentService;
import androidx.documentfile.provider.DocumentFile; import androidx.documentfile.provider.DocumentFile;
import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.data.ContentProviderUtils;
import de.dennisguse.opentracks.content.provider.ContentProviderUtils; import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.io.file.TrackFileFormat; import de.dennisguse.opentracks.io.file.TrackFileFormat;
import de.dennisguse.opentracks.util.ExportUtils; import de.dennisguse.opentracks.util.ExportUtils;
@@ -32,11 +32,11 @@ import java.util.Objects;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Stream; import java.util.stream.Stream;
import de.dennisguse.opentracks.content.data.Marker; import de.dennisguse.opentracks.data.ContentProviderUtils;
import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.data.TrackPointIterator;
import de.dennisguse.opentracks.content.data.TrackPoint; import de.dennisguse.opentracks.data.models.Marker;
import de.dennisguse.opentracks.content.provider.ContentProviderUtils; import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.content.provider.TrackPointIterator; import de.dennisguse.opentracks.data.models.TrackPoint;
import de.dennisguse.opentracks.stats.TrackStatistics; import de.dennisguse.opentracks.stats.TrackStatistics;
import de.dennisguse.opentracks.util.StringUtils; import de.dennisguse.opentracks.util.StringUtils;
@@ -35,11 +35,11 @@ import java.util.Locale;
import java.util.Objects; import java.util.Objects;
import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.content.data.Marker; import de.dennisguse.opentracks.data.ContentProviderUtils;
import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.data.TrackPointIterator;
import de.dennisguse.opentracks.content.data.TrackPoint; import de.dennisguse.opentracks.data.models.Marker;
import de.dennisguse.opentracks.content.provider.ContentProviderUtils; import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.content.provider.TrackPointIterator; import de.dennisguse.opentracks.data.models.TrackPoint;
import de.dennisguse.opentracks.util.FileUtils; import de.dennisguse.opentracks.util.FileUtils;
import de.dennisguse.opentracks.util.StringUtils; import de.dennisguse.opentracks.util.StringUtils;
@@ -31,9 +31,9 @@ import java.io.OutputStream;
import java.util.zip.ZipEntry; import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream; import java.util.zip.ZipOutputStream;
import de.dennisguse.opentracks.content.data.Marker; import de.dennisguse.opentracks.data.ContentProviderUtils;
import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.data.models.Marker;
import de.dennisguse.opentracks.content.provider.ContentProviderUtils; import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.util.FileUtils; import de.dennisguse.opentracks.util.FileUtils;
/** /**
@@ -11,10 +11,10 @@ import androidx.annotation.NonNull;
import java.io.OutputStream; import java.io.OutputStream;
import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.databinding.TrackSharePictureBinding; import de.dennisguse.opentracks.databinding.TrackSharePictureBinding;
import de.dennisguse.opentracks.stats.TrackStatistics;
import de.dennisguse.opentracks.settings.PreferencesUtils; import de.dennisguse.opentracks.settings.PreferencesUtils;
import de.dennisguse.opentracks.stats.TrackStatistics;
import de.dennisguse.opentracks.util.StringUtils; import de.dennisguse.opentracks.util.StringUtils;
/** /**
@@ -20,7 +20,7 @@ import androidx.annotation.NonNull;
import java.io.OutputStream; import java.io.OutputStream;
import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.data.models.Track;
/** /**
* Track exporting for exporting track to an {@link OutputStream}. * Track exporting for exporting track to an {@link OutputStream}.
@@ -30,12 +30,12 @@ import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import de.dennisguse.opentracks.content.data.Altitude; import de.dennisguse.opentracks.data.models.Altitude;
import de.dennisguse.opentracks.content.data.Distance; import de.dennisguse.opentracks.data.models.Distance;
import de.dennisguse.opentracks.content.data.Marker; import de.dennisguse.opentracks.data.models.Marker;
import de.dennisguse.opentracks.content.data.Speed; import de.dennisguse.opentracks.data.models.Speed;
import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.content.data.TrackPoint; import de.dennisguse.opentracks.data.models.TrackPoint;
import de.dennisguse.opentracks.util.StringUtils; import de.dennisguse.opentracks.util.StringUtils;
/** /**
@@ -16,12 +16,12 @@ import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.content.data.Distance; import de.dennisguse.opentracks.data.ContentProviderUtils;
import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.data.models.Distance;
import de.dennisguse.opentracks.content.provider.ContentProviderUtils; import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.io.file.TrackFileFormat; import de.dennisguse.opentracks.io.file.TrackFileFormat;
import de.dennisguse.opentracks.util.FileUtils;
import de.dennisguse.opentracks.settings.PreferencesUtils; import de.dennisguse.opentracks.settings.PreferencesUtils;
import de.dennisguse.opentracks.util.FileUtils;
public class ImportService extends JobIntentService { public class ImportService extends JobIntentService {
@@ -16,7 +16,7 @@ import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.util.FileUtils; import de.dennisguse.opentracks.util.FileUtils;
public class ImportViewModel extends AndroidViewModel implements ImportServiceResultReceiver.Receiver { public class ImportViewModel extends AndroidViewModel implements ImportServiceResultReceiver.Receiver {
@@ -32,11 +32,11 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import de.dennisguse.opentracks.content.data.Distance; import de.dennisguse.opentracks.data.models.Distance;
import de.dennisguse.opentracks.content.data.Marker; import de.dennisguse.opentracks.data.models.Marker;
import de.dennisguse.opentracks.content.data.Speed; import de.dennisguse.opentracks.data.models.Speed;
import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.content.data.TrackPoint; import de.dennisguse.opentracks.data.models.TrackPoint;
import de.dennisguse.opentracks.io.file.exporter.KMLTrackExporter; import de.dennisguse.opentracks.io.file.exporter.KMLTrackExporter;
import de.dennisguse.opentracks.util.StringUtils; import de.dennisguse.opentracks.util.StringUtils;
@@ -34,9 +34,9 @@ import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream; import java.util.zip.ZipInputStream;
import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.content.data.Marker; import de.dennisguse.opentracks.data.ContentProviderUtils;
import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.data.models.Marker;
import de.dennisguse.opentracks.content.provider.ContentProviderUtils; import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.io.file.exporter.KmzTrackExporter; import de.dennisguse.opentracks.io.file.exporter.KmzTrackExporter;
import de.dennisguse.opentracks.util.FileUtils; import de.dennisguse.opentracks.util.FileUtils;
@@ -19,12 +19,12 @@ import java.util.UUID;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.content.data.Distance; import de.dennisguse.opentracks.data.ContentProviderUtils;
import de.dennisguse.opentracks.content.data.Marker; import de.dennisguse.opentracks.data.models.Distance;
import de.dennisguse.opentracks.content.data.Speed; import de.dennisguse.opentracks.data.models.Marker;
import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.data.models.Speed;
import de.dennisguse.opentracks.content.data.TrackPoint; import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.content.provider.ContentProviderUtils; import de.dennisguse.opentracks.data.models.TrackPoint;
import de.dennisguse.opentracks.stats.TrackStatistics; import de.dennisguse.opentracks.stats.TrackStatistics;
import de.dennisguse.opentracks.stats.TrackStatisticsUpdater; import de.dennisguse.opentracks.stats.TrackStatisticsUpdater;
import de.dennisguse.opentracks.util.FileUtils; import de.dennisguse.opentracks.util.FileUtils;

Some files were not shown because too many files have changed in this diff Show More