forked from upstream-mirrors/OpenTracks
Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 80dbbbc1ed | |||
| 81e8872a11 | |||
| 4220c62ac0 | |||
| 4b73567075 | |||
| fdff0d255a | |||
| e956cf14c4 | |||
| a1646e1b76 | |||
| 9d6c9676ab | |||
| 19d8563a76 | |||
| 74e09e1fa9 | |||
| 6533e3e170 |
Executable
+51
@@ -0,0 +1,51 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
CHANGELOG_DIR="fastlane/metadata/android/en-US/changelogs/"
|
||||
|
||||
echo "Checking main branch"
|
||||
git checkout main
|
||||
VERSIONID=$(git rev-list HEAD --count main)
|
||||
CHANGELOG_FILE="$CHANGELOG_DIR/$VERSIONID.txt"
|
||||
|
||||
git diff --exit-code || echo -e "\nWARNING WARNING WARNING WARNING WARNING: this branch contains uncommit changes."
|
||||
|
||||
#TODO Execute all tests: we are destroying data, running on a real device.
|
||||
# ./gradlew connectedCheck
|
||||
|
||||
# Changelog
|
||||
echo -e "\nPrevious changelog\n------------"
|
||||
PREVIOUS_CHANGELOG=$(find "$CHANGELOG_DIR" -iname "[[:digit:]]**.txt" | sort -n | tail -1)
|
||||
sed 's/^/>/' "$PREVIOUS_CHANGELOG"
|
||||
|
||||
#For F-Droid, a version starts with a 'v'
|
||||
read -p $'\n\nPlease enter the versionname (e.g., v3.9.5):\n> v' VERSIONNAME
|
||||
VERSIONNAME="v$VERSIONNAME"
|
||||
|
||||
cp "$CHANGELOG_DIR/next_release.txt" "$CHANGELOG_FILE"
|
||||
sed -i "s/(versionName)/$VERSIONNAME/" "$CHANGELOG_FILE"
|
||||
|
||||
echo -e "\nGit commit since last release\n------------"
|
||||
git log $(git describe --tags --abbrev=0)..HEAD --no-merges --oneline
|
||||
|
||||
echo -e "\nPlease edit the changelog for the new release"
|
||||
gedit -w "$CHANGELOG_FILE"
|
||||
git add "$CHANGELOG_FILE"
|
||||
|
||||
echo "Updating build.gradle"
|
||||
sed -i s/versionCode\ .*/versionCode\ "$VERSIONID"/g build.gradle
|
||||
sed -i s/versionName\ .*/versionName\ "\"$VERSIONNAME\""/g build.gradle
|
||||
|
||||
git diff
|
||||
|
||||
COMMIT_MESSAGE="Release: $VERSIONNAME"
|
||||
echo -e "\nCommit message will be: '$COMMIT_MESSAGE'"
|
||||
|
||||
echo -e "\nPress ENTER, if everything looks good."
|
||||
read
|
||||
|
||||
git add -u
|
||||
git commit -m "$COMMIT_MESSAGE"
|
||||
|
||||
echo -e "Next steps:\n1. Push to Github\n2. Create release on Github: https://github.com/OpenTracksApp/OpenTracks/releases"
|
||||
+2
-2
@@ -47,8 +47,8 @@ android {
|
||||
|
||||
defaultConfig {
|
||||
applicationId "de.dennisguse.opentracks"
|
||||
versionCode 3573
|
||||
versionName "v3.9.4"
|
||||
versionCode 3584
|
||||
versionName "v3.9.5"
|
||||
|
||||
buildConfigField "String", "VERSION_NAME_FULL", "\"${getVersionName()}\""
|
||||
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
v3.9.5: OpenTracks
|
||||
|
||||
Changes:
|
||||
- UI shows speed only with one fractional digit
|
||||
|
||||
Bugfix:
|
||||
- App crash in search (due to Track.Id refactoring)
|
||||
- Track list did now show if a recording was ongoing (due to Track.Id refactoring)
|
||||
@@ -1,4 +1,4 @@
|
||||
(tbd): OpenTracks
|
||||
(versionName): OpenTracks
|
||||
|
||||
Changes:
|
||||
-
|
||||
|
||||
@@ -34,8 +34,8 @@ import java.util.List;
|
||||
|
||||
import de.dennisguse.opentracks.content.SearchEngine.ScoredResult;
|
||||
import de.dennisguse.opentracks.content.SearchEngine.SearchQuery;
|
||||
import de.dennisguse.opentracks.content.data.Marker;
|
||||
import de.dennisguse.opentracks.content.data.Track;
|
||||
import de.dennisguse.opentracks.content.data.Waypoint;
|
||||
import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
|
||||
import de.dennisguse.opentracks.content.provider.CustomContentProvider;
|
||||
import de.dennisguse.opentracks.content.provider.CustomSQLiteOpenHelper;
|
||||
@@ -102,36 +102,36 @@ public class SearchEngineTest {
|
||||
return insertTrack(title, "", "", hoursAgo);
|
||||
}
|
||||
|
||||
private Waypoint.Id insertWaypoint(String title, String description, String category, double distance, long hoursAgo, Track.Id trackId) {
|
||||
private Marker.Id insertWaypoint(String title, String description, String category, double distance, long hoursAgo, Track.Id trackId) {
|
||||
Location location = new Location(HERE);
|
||||
location.setLatitude(location.getLatitude() + distance);
|
||||
location.setLongitude(location.getLongitude() + distance);
|
||||
if (hoursAgo >= 0) {
|
||||
location.setTime(NOW - hoursAgo * 1000L * 60L * 60L);
|
||||
}
|
||||
Waypoint waypoint = new Waypoint(location);
|
||||
Marker waypoint = new Marker(location);
|
||||
waypoint.setName(title);
|
||||
waypoint.setDescription(description);
|
||||
waypoint.setCategory(category);
|
||||
waypoint.setTrackId(trackId);
|
||||
|
||||
Uri uri = providerUtils.insertWaypoint(waypoint);
|
||||
return new Waypoint.Id(ContentUris.parseId(uri));
|
||||
Uri uri = providerUtils.insertMarker(waypoint);
|
||||
return new Marker.Id(ContentUris.parseId(uri));
|
||||
}
|
||||
|
||||
private Waypoint.Id insertWaypoint(String title, String description, String category) {
|
||||
private Marker.Id insertWaypoint(String title, String description, String category) {
|
||||
return insertWaypoint(title, description, category, 0.0, -1, null);
|
||||
}
|
||||
|
||||
private Waypoint.Id insertWaypoint(String title, double distance) {
|
||||
private Marker.Id insertWaypoint(String title, double distance) {
|
||||
return insertWaypoint(title, "", "", distance, -1, null);
|
||||
}
|
||||
|
||||
private Waypoint.Id insertWaypoint(String title, long hoursAgo) {
|
||||
private Marker.Id insertWaypoint(String title, long hoursAgo) {
|
||||
return insertWaypoint(title, "", "", 0.0, hoursAgo, null);
|
||||
}
|
||||
|
||||
private Waypoint.Id insertWaypoint(String title, long hoursAgo, Track.Id trackId) {
|
||||
private Marker.Id insertWaypoint(String title, long hoursAgo, Track.Id trackId) {
|
||||
return insertWaypoint(title, "", "", 0.0, hoursAgo, trackId);
|
||||
}
|
||||
|
||||
@@ -171,12 +171,12 @@ public class SearchEngineTest {
|
||||
// - one which will match in title and description
|
||||
// - one which will match in all fields
|
||||
insertWaypoint("bb", "cc", "dd");
|
||||
Waypoint.Id descriptionMatchId = insertWaypoint("bb", "aa", "cc");
|
||||
Waypoint.Id categoryMatchId = insertWaypoint("bb", "cc", "aa");
|
||||
Waypoint.Id titleMatchId = insertWaypoint("aa", "bb", "cc");
|
||||
Waypoint.Id titleCategoryMatchId = insertWaypoint("aa", "bb", "ca");
|
||||
Waypoint.Id titleDescriptionMatchId = insertWaypoint("aa", "ba", "cc");
|
||||
Waypoint.Id allMatchId = insertWaypoint("aa", "ba", "ca");
|
||||
Marker.Id descriptionMatchId = insertWaypoint("bb", "aa", "cc");
|
||||
Marker.Id categoryMatchId = insertWaypoint("bb", "cc", "aa");
|
||||
Marker.Id titleMatchId = insertWaypoint("aa", "bb", "cc");
|
||||
Marker.Id titleCategoryMatchId = insertWaypoint("aa", "bb", "ca");
|
||||
Marker.Id titleDescriptionMatchId = insertWaypoint("aa", "ba", "cc");
|
||||
Marker.Id allMatchId = insertWaypoint("aa", "ba", "ca");
|
||||
|
||||
SearchQuery query = new SearchQuery("a", null, null, NOW);
|
||||
ArrayList<ScoredResult> results = new ArrayList<>(engine.search(query));
|
||||
@@ -193,9 +193,9 @@ public class SearchEngineTest {
|
||||
// - one waypoint which will match by title
|
||||
// - one track which won't match
|
||||
// - one track which will match by title
|
||||
Waypoint.Id descriptionWaypointId = insertWaypoint("bb", "aa", "cc");
|
||||
Marker.Id descriptionWaypointId = insertWaypoint("bb", "aa", "cc");
|
||||
insertWaypoint("bb", "cc", "dd");
|
||||
Waypoint.Id titleWaypointId = insertWaypoint("aa", "bb", "cc");
|
||||
Marker.Id titleWaypointId = insertWaypoint("aa", "bb", "cc");
|
||||
insertTrack("bb", "cc", "dd");
|
||||
Track.Id trackId = insertTrack("aa", "bb", "cc");
|
||||
|
||||
@@ -212,9 +212,9 @@ public class SearchEngineTest {
|
||||
@Test
|
||||
public void testSearchWaypointDistance() {
|
||||
// All results match text, but they're at difference distances from the user.
|
||||
Waypoint.Id farFarAwayId = insertWaypoint("aa", 0.3);
|
||||
Waypoint.Id nearId = insertWaypoint("ab", 0.1);
|
||||
Waypoint.Id farId = insertWaypoint("ac", 0.2);
|
||||
Marker.Id farFarAwayId = insertWaypoint("aa", 0.3);
|
||||
Marker.Id nearId = insertWaypoint("ab", 0.1);
|
||||
Marker.Id farId = insertWaypoint("ac", 0.2);
|
||||
|
||||
SearchQuery query = new SearchQuery("a", HERE, null, NOW);
|
||||
ArrayList<ScoredResult> results = new ArrayList<>(engine.search(query));
|
||||
@@ -239,9 +239,9 @@ public class SearchEngineTest {
|
||||
@Test
|
||||
public void testSearchWaypointRecent() {
|
||||
// All results match text, but they're were recorded at different times.
|
||||
Waypoint.Id oldestId = insertWaypoint("aa", 2);
|
||||
Waypoint.Id recentId = insertWaypoint("ab", 0);
|
||||
Waypoint.Id oldId = insertWaypoint("ac", 1);
|
||||
Marker.Id oldestId = insertWaypoint("aa", 2);
|
||||
Marker.Id recentId = insertWaypoint("ab", 0);
|
||||
Marker.Id oldId = insertWaypoint("ac", 1);
|
||||
|
||||
SearchQuery query = new SearchQuery("a", null, null, NOW);
|
||||
ArrayList<ScoredResult> results = new ArrayList<>(engine.search(query));
|
||||
@@ -266,8 +266,8 @@ public class SearchEngineTest {
|
||||
@Test
|
||||
public void testSearchCurrentTrackWaypoint() {
|
||||
// All results match text, but one of them is in the current track.
|
||||
Waypoint.Id otherId = insertWaypoint("aa", 1, new Track.Id(456));
|
||||
Waypoint.Id currentId = insertWaypoint("ab", 1, new Track.Id(123));
|
||||
Marker.Id otherId = insertWaypoint("aa", 1, new Track.Id(456));
|
||||
Marker.Id currentId = insertWaypoint("ab", 1, new Track.Id(123));
|
||||
|
||||
SearchQuery query = new SearchQuery("a", null, new Track.Id(123), NOW);
|
||||
ArrayList<ScoredResult> results = new ArrayList<>(engine.search(query));
|
||||
@@ -278,7 +278,7 @@ public class SearchEngineTest {
|
||||
|
||||
private void assertTrackResult(Track.Id trackId, ScoredResult result) {
|
||||
assertNotNull("Not a track", result.track);
|
||||
assertNull("Ambiguous result", result.waypoint);
|
||||
assertNull("Ambiguous result", result.marker);
|
||||
assertEquals(trackId, result.track.getId());
|
||||
}
|
||||
|
||||
@@ -293,18 +293,18 @@ public class SearchEngineTest {
|
||||
for (int i = 0; i < results.size(); i++) {
|
||||
ScoredResult result = results.get(i);
|
||||
assertNotNull(errMsg, result.track);
|
||||
assertNull(errMsg, result.waypoint);
|
||||
assertNull(errMsg, result.marker);
|
||||
assertEquals(errMsg, trackIds[i], result.track.getId());
|
||||
}
|
||||
}
|
||||
|
||||
private void assertWaypointResult(Waypoint.Id waypointId, ScoredResult result) {
|
||||
assertNotNull("Not a waypoint", result.waypoint);
|
||||
private void assertWaypointResult(Marker.Id waypointId, ScoredResult result) {
|
||||
assertNotNull("Not a waypoint", result.marker);
|
||||
assertNull("Ambiguous result", result.track);
|
||||
assertEquals(waypointId, result.waypoint.getId());
|
||||
assertEquals(waypointId, result.marker.getId());
|
||||
}
|
||||
|
||||
private void assertWaypointResults(List<ScoredResult> results, Waypoint.Id... waypointIds) {
|
||||
private void assertWaypointResults(List<ScoredResult> results, Marker.Id... waypointIds) {
|
||||
long[] longWaypointIds = new long[waypointIds.length];
|
||||
for (int i = 0; i < waypointIds.length; i++) {
|
||||
longWaypointIds[i] = waypointIds[i].getId();
|
||||
@@ -314,9 +314,9 @@ public class SearchEngineTest {
|
||||
assertEquals(results.size(), waypointIds.length);
|
||||
for (int i = 0; i < results.size(); i++) {
|
||||
ScoredResult result = results.get(i);
|
||||
assertNotNull(errMsg, result.waypoint);
|
||||
assertNotNull(errMsg, result.marker);
|
||||
assertNull(errMsg, result.track);
|
||||
assertEquals(errMsg, waypointIds[i], result.waypoint.getId());
|
||||
assertEquals(errMsg, waypointIds[i], result.marker.getId());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -93,12 +93,12 @@ public class TestDataUtil {
|
||||
* @param location The location.
|
||||
* @return the Waypoint created.
|
||||
*/
|
||||
public static Waypoint createWaypointWithPhoto(Context context, Track.Id trackId, Location location) throws IOException {
|
||||
public static Marker createWaypointWithPhoto(Context context, Track.Id trackId, Location location) throws IOException {
|
||||
File dstFile = new File(FileUtils.getImageUrl(context, trackId));
|
||||
dstFile.createNewFile();
|
||||
Uri photoUri = FileUtils.getUriForFile(context, dstFile);
|
||||
String photoUrl = photoUri.toString();
|
||||
|
||||
return new Waypoint("Waypoint name", "Waypoint description", "Waypoint category", "", trackId, 0.0, 0, location, photoUrl);
|
||||
return new Marker("Waypoint name", "Waypoint description", "Waypoint category", "", trackId, 0.0, 0, location, photoUrl);
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -25,9 +25,9 @@ import androidx.test.core.app.ApplicationProvider;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import de.dennisguse.opentracks.content.data.MarkerColumns;
|
||||
import de.dennisguse.opentracks.content.data.TrackPointsColumns;
|
||||
import de.dennisguse.opentracks.content.data.TracksColumns;
|
||||
import de.dennisguse.opentracks.content.data.WaypointsColumns;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
@@ -67,7 +67,7 @@ public class CustomContentProviderTest {
|
||||
assertEquals(TrackPointsColumns.CONTENT_TYPE, customContentProvider.getType(TrackPointsColumns.CONTENT_URI_BY_ID));
|
||||
assertEquals(TrackPointsColumns.CONTENT_ITEMTYPE, customContentProvider.getType(ContentUris.appendId(TrackPointsColumns.CONTENT_URI_BY_TRACKID.buildUpon(), 1).build()));
|
||||
|
||||
assertEquals(WaypointsColumns.CONTENT_TYPE, customContentProvider.getType(WaypointsColumns.CONTENT_URI));
|
||||
assertEquals(WaypointsColumns.CONTENT_ITEMTYPE, customContentProvider.getType(ContentUris.appendId(WaypointsColumns.CONTENT_URI.buildUpon(), 1).build()));
|
||||
assertEquals(MarkerColumns.CONTENT_TYPE, customContentProvider.getType(MarkerColumns.CONTENT_URI));
|
||||
assertEquals(MarkerColumns.CONTENT_ITEMTYPE, customContentProvider.getType(ContentUris.appendId(MarkerColumns.CONTENT_URI.buildUpon(), 1).build()));
|
||||
}
|
||||
}
|
||||
+98
-98
@@ -38,13 +38,13 @@ import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import de.dennisguse.opentracks.content.data.Marker;
|
||||
import de.dennisguse.opentracks.content.data.MarkerColumns;
|
||||
import de.dennisguse.opentracks.content.data.TestDataUtil;
|
||||
import de.dennisguse.opentracks.content.data.Track;
|
||||
import de.dennisguse.opentracks.content.data.TrackPoint;
|
||||
import de.dennisguse.opentracks.content.data.TrackPointsColumns;
|
||||
import de.dennisguse.opentracks.content.data.TracksColumns;
|
||||
import de.dennisguse.opentracks.content.data.Waypoint;
|
||||
import de.dennisguse.opentracks.content.data.WaypointsColumns;
|
||||
import de.dennisguse.opentracks.stats.TrackStatistics;
|
||||
import de.dennisguse.opentracks.util.FileUtils;
|
||||
import de.dennisguse.opentracks.util.UUIDUtils;
|
||||
@@ -212,15 +212,15 @@ public class CustomContentProviderUtilsTest {
|
||||
Track.Id trackId = new Track.Id(System.currentTimeMillis());
|
||||
TestDataUtil.createTrackAndInsert(contentProviderUtils, trackId, 10);
|
||||
|
||||
Waypoint waypoint = new Waypoint(contentProviderUtils.getLastValidTrackPoint(trackId));
|
||||
contentProviderUtils.insertWaypoint(waypoint);
|
||||
Marker waypoint = new Marker(contentProviderUtils.getLastValidTrackPoint(trackId));
|
||||
contentProviderUtils.insertMarker(waypoint);
|
||||
|
||||
ContentResolver contentResolver = context.getContentResolver();
|
||||
Cursor tracksCursor = contentResolver.query(TracksColumns.CONTENT_URI, null, null, null, TracksColumns._ID);
|
||||
assertEquals(1, tracksCursor.getCount());
|
||||
Cursor tracksPointsCursor = contentResolver.query(TrackPointsColumns.CONTENT_URI_BY_ID, null, null, null, TrackPointsColumns._ID);
|
||||
assertEquals(10, tracksPointsCursor.getCount());
|
||||
Cursor waypointCursor = contentResolver.query(WaypointsColumns.CONTENT_URI, null, null, null, WaypointsColumns._ID);
|
||||
Cursor waypointCursor = contentResolver.query(MarkerColumns.CONTENT_URI, null, null, null, MarkerColumns._ID);
|
||||
assertEquals(1, waypointCursor.getCount());
|
||||
// Delete all.
|
||||
contentProviderUtils.deleteAllTracks(context);
|
||||
@@ -229,7 +229,7 @@ public class CustomContentProviderUtilsTest {
|
||||
assertEquals(0, tracksCursor.getCount());
|
||||
tracksPointsCursor = contentResolver.query(TrackPointsColumns.CONTENT_URI_BY_ID, null, null, null, TrackPointsColumns._ID);
|
||||
assertEquals(0, tracksPointsCursor.getCount());
|
||||
waypointCursor = contentResolver.query(WaypointsColumns.CONTENT_URI, null, null, null, WaypointsColumns._ID);
|
||||
waypointCursor = contentResolver.query(MarkerColumns.CONTENT_URI, null, null, null, MarkerColumns._ID);
|
||||
assertEquals(0, waypointCursor.getCount());
|
||||
}
|
||||
|
||||
@@ -243,15 +243,15 @@ public class CustomContentProviderUtilsTest {
|
||||
Track track = TestDataUtil.createTrackAndInsert(contentProviderUtils, trackId, 10);
|
||||
|
||||
TrackPoint trackPoint = contentProviderUtils.getLastValidTrackPoint(trackId);
|
||||
Waypoint waypoint = TestDataUtil.createWaypointWithPhoto(context, trackId, trackPoint.getLocation());
|
||||
contentProviderUtils.insertWaypoint(waypoint);
|
||||
Marker waypoint = TestDataUtil.createWaypointWithPhoto(context, trackId, trackPoint.getLocation());
|
||||
contentProviderUtils.insertMarker(waypoint);
|
||||
|
||||
ContentResolver contentResolver = context.getContentResolver();
|
||||
Cursor tracksCursor = contentResolver.query(TracksColumns.CONTENT_URI, null, null, null, TracksColumns._ID);
|
||||
assertEquals(1, tracksCursor.getCount());
|
||||
Cursor tracksPointsCursor = contentResolver.query(TrackPointsColumns.CONTENT_URI_BY_ID, null, null, null, TrackPointsColumns._ID);
|
||||
assertEquals(10, tracksPointsCursor.getCount());
|
||||
Cursor waypointCursor = contentResolver.query(WaypointsColumns.CONTENT_URI, null, null, null, WaypointsColumns._ID);
|
||||
Cursor waypointCursor = contentResolver.query(MarkerColumns.CONTENT_URI, null, null, null, MarkerColumns._ID);
|
||||
assertEquals(1, waypointCursor.getCount());
|
||||
// Check waypoint has photo and it's in the external storage.
|
||||
assertTrue(waypoint.hasPhoto());
|
||||
@@ -266,7 +266,7 @@ public class CustomContentProviderUtilsTest {
|
||||
assertEquals(0, tracksCursor.getCount());
|
||||
tracksPointsCursor = contentResolver.query(TrackPointsColumns.CONTENT_URI_BY_ID, null, null, null, TrackPointsColumns._ID);
|
||||
assertEquals(0, tracksPointsCursor.getCount());
|
||||
waypointCursor = contentResolver.query(WaypointsColumns.CONTENT_URI, null, null, null, WaypointsColumns._ID);
|
||||
waypointCursor = contentResolver.query(MarkerColumns.CONTENT_URI, null, null, null, MarkerColumns._ID);
|
||||
assertEquals(0, waypointCursor.getCount());
|
||||
assertFalse(dir.exists());
|
||||
}
|
||||
@@ -287,16 +287,16 @@ public class CustomContentProviderUtilsTest {
|
||||
TestDataUtil.createTrackAndInsert(contentProviderUtils, trackId2, 10);
|
||||
TestDataUtil.createTrackAndInsert(contentProviderUtils, trackId3, 10);
|
||||
|
||||
Waypoint waypoint = new Waypoint(contentProviderUtils.getLastValidTrackPoint(trackId2));
|
||||
Marker waypoint = new Marker(contentProviderUtils.getLastValidTrackPoint(trackId2));
|
||||
waypoint.setTrackId(trackId1);
|
||||
contentProviderUtils.insertWaypoint(waypoint);
|
||||
contentProviderUtils.insertMarker(waypoint);
|
||||
|
||||
ContentResolver contentResolver = context.getContentResolver();
|
||||
Cursor tracksCursor = contentResolver.query(TracksColumns.CONTENT_URI, null, null, null, TracksColumns._ID);
|
||||
assertEquals(3, tracksCursor.getCount());
|
||||
Cursor tracksPointsCursor = contentResolver.query(TrackPointsColumns.CONTENT_URI_BY_ID, null, null, null, TrackPointsColumns._ID);
|
||||
assertEquals(20, tracksPointsCursor.getCount());
|
||||
Cursor waypointCursor = contentResolver.query(WaypointsColumns.CONTENT_URI, null, null, null, WaypointsColumns._ID);
|
||||
Cursor waypointCursor = contentResolver.query(MarkerColumns.CONTENT_URI, null, null, null, MarkerColumns._ID);
|
||||
assertEquals(1, waypointCursor.getCount());
|
||||
// Delete one track.
|
||||
contentProviderUtils.deleteTrack(context, trackId1);
|
||||
@@ -305,7 +305,7 @@ public class CustomContentProviderUtilsTest {
|
||||
assertEquals(2, tracksCursor.getCount());
|
||||
tracksPointsCursor = contentResolver.query(TrackPointsColumns.CONTENT_URI_BY_ID, null, null, null, TrackPointsColumns._ID);
|
||||
assertEquals(20, tracksPointsCursor.getCount());
|
||||
waypointCursor = contentResolver.query(WaypointsColumns.CONTENT_URI, null, null, null, WaypointsColumns._ID);
|
||||
waypointCursor = contentResolver.query(MarkerColumns.CONTENT_URI, null, null, null, MarkerColumns._ID);
|
||||
assertEquals(0, waypointCursor.getCount());
|
||||
}
|
||||
|
||||
@@ -326,13 +326,13 @@ public class CustomContentProviderUtilsTest {
|
||||
|
||||
// Insert a waypoint in tracks trackId and trackId + 1.
|
||||
TrackPoint trackPoint1 = contentProviderUtils.getLastValidTrackPoint(trackId1);
|
||||
Waypoint waypoint1 = TestDataUtil.createWaypointWithPhoto(context, trackId1, trackPoint1.getLocation());
|
||||
contentProviderUtils.insertWaypoint(waypoint1);
|
||||
Marker waypoint1 = TestDataUtil.createWaypointWithPhoto(context, trackId1, trackPoint1.getLocation());
|
||||
contentProviderUtils.insertMarker(waypoint1);
|
||||
File dir1 = FileUtils.getPhotoDir(context, trackId1);
|
||||
|
||||
TrackPoint trackPoint2 = contentProviderUtils.getLastValidTrackPoint(trackId2);
|
||||
Waypoint waypoint2 = TestDataUtil.createWaypointWithPhoto(context, trackId2, trackPoint2.getLocation());
|
||||
contentProviderUtils.insertWaypoint(waypoint2);
|
||||
Marker waypoint2 = TestDataUtil.createWaypointWithPhoto(context, trackId2, trackPoint2.getLocation());
|
||||
contentProviderUtils.insertMarker(waypoint2);
|
||||
File dir2 = FileUtils.getPhotoDir(context, trackId2);
|
||||
|
||||
// Check.
|
||||
@@ -341,7 +341,7 @@ public class CustomContentProviderUtilsTest {
|
||||
assertEquals(3, tracksCursor.getCount());
|
||||
Cursor tracksPointsCursor = contentResolver.query(TrackPointsColumns.CONTENT_URI_BY_ID, null, null, null, TrackPointsColumns._ID);
|
||||
assertEquals(30, tracksPointsCursor.getCount());
|
||||
Cursor waypointCursor = contentResolver.query(WaypointsColumns.CONTENT_URI, null, null, null, WaypointsColumns._ID);
|
||||
Cursor waypointCursor = contentResolver.query(MarkerColumns.CONTENT_URI, null, null, null, MarkerColumns._ID);
|
||||
assertEquals(2, waypointCursor.getCount());
|
||||
assertTrue(waypoint1.hasPhoto());
|
||||
assertTrue(dir1.isDirectory());
|
||||
@@ -357,7 +357,7 @@ public class CustomContentProviderUtilsTest {
|
||||
assertEquals(2, tracksCursor.getCount());
|
||||
tracksPointsCursor = contentResolver.query(TrackPointsColumns.CONTENT_URI_BY_ID, null, null, null, TrackPointsColumns._ID);
|
||||
assertEquals(20, tracksPointsCursor.getCount());
|
||||
waypointCursor = contentResolver.query(WaypointsColumns.CONTENT_URI, null, null, null, WaypointsColumns._ID);
|
||||
waypointCursor = contentResolver.query(MarkerColumns.CONTENT_URI, null, null, null, MarkerColumns._ID);
|
||||
assertEquals(1, waypointCursor.getCount());
|
||||
assertFalse(dir1.exists());
|
||||
assertTrue(dir2.exists());
|
||||
@@ -439,7 +439,7 @@ public class CustomContentProviderUtilsTest {
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the method {@link ContentProviderUtils#createContentValues(Waypoint)}.
|
||||
* Tests the method {@link ContentProviderUtils#createContentValues(Marker)}.
|
||||
*/
|
||||
@Test
|
||||
public void testCreateContentValues_waypoint() {
|
||||
@@ -463,30 +463,30 @@ public class CustomContentProviderUtilsTest {
|
||||
track.first.setTrackStatistics(statistics);
|
||||
contentProviderUtils.insertTrack(track.first);
|
||||
|
||||
Waypoint waypoint = new Waypoint(track.second[0]);
|
||||
Marker waypoint = new Marker(track.second[0]);
|
||||
waypoint.setDescription(TEST_DESC);
|
||||
contentProviderUtils.insertWaypoint(waypoint);
|
||||
contentProviderUtils.insertMarker(waypoint);
|
||||
|
||||
ContentProviderUtils contentProviderUtils = new ContentProviderUtils(contentResolverMock);
|
||||
|
||||
Waypoint.Id waypointId = new Waypoint.Id(System.currentTimeMillis());
|
||||
Marker.Id waypointId = new Marker.Id(System.currentTimeMillis());
|
||||
waypoint.setId(waypointId);
|
||||
ContentValues contentValues = contentProviderUtils.createContentValues(waypoint);
|
||||
assertEquals(waypointId.getId(), contentValues.get(WaypointsColumns._ID));
|
||||
assertEquals((int) (TestDataUtil.INITIAL_LONGITUDE * 1000000), contentValues.get(WaypointsColumns.LONGITUDE));
|
||||
assertEquals(TEST_DESC, contentValues.get(WaypointsColumns.DESCRIPTION));
|
||||
assertEquals(waypointId.getId(), contentValues.get(MarkerColumns._ID));
|
||||
assertEquals((int) (TestDataUtil.INITIAL_LONGITUDE * 1000000), contentValues.get(MarkerColumns.LONGITUDE));
|
||||
assertEquals(TEST_DESC, contentValues.get(MarkerColumns.DESCRIPTION));
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the method {@link ContentProviderUtils#createWaypoint(Cursor)}.
|
||||
* Tests the method {@link ContentProviderUtils#createMarker(Cursor)}.
|
||||
*/
|
||||
@Test
|
||||
public void testCreateWaypoint() {
|
||||
int startColumnIndex = 1;
|
||||
int columnIndex = startColumnIndex;
|
||||
when(cursorMock.getColumnIndexOrThrow(WaypointsColumns._ID)).thenReturn(columnIndex++);
|
||||
when(cursorMock.getColumnIndexOrThrow(WaypointsColumns.NAME)).thenReturn(columnIndex++);
|
||||
when(cursorMock.getColumnIndexOrThrow(WaypointsColumns.TRACKID)).thenReturn(columnIndex++);
|
||||
when(cursorMock.getColumnIndexOrThrow(MarkerColumns._ID)).thenReturn(columnIndex++);
|
||||
when(cursorMock.getColumnIndexOrThrow(MarkerColumns.NAME)).thenReturn(columnIndex++);
|
||||
when(cursorMock.getColumnIndexOrThrow(MarkerColumns.TRACKID)).thenReturn(columnIndex++);
|
||||
columnIndex = startColumnIndex;
|
||||
// Id
|
||||
when(cursorMock.isNull(columnIndex++)).thenReturn(false);
|
||||
@@ -505,7 +505,7 @@ public class CustomContentProviderUtilsTest {
|
||||
long trackId = 11L;
|
||||
when(cursorMock.getLong(columnIndex++)).thenReturn(trackId);
|
||||
|
||||
Waypoint waypoint = contentProviderUtils.createWaypoint(cursorMock);
|
||||
Marker waypoint = contentProviderUtils.createMarker(cursorMock);
|
||||
assertEquals(id, waypoint.getId().getId());
|
||||
assertEquals(name, waypoint.getName());
|
||||
assertEquals(trackId, waypoint.getTrackId().getId());
|
||||
@@ -513,7 +513,7 @@ public class CustomContentProviderUtilsTest {
|
||||
|
||||
/**
|
||||
* Tests the method
|
||||
* {@link ContentProviderUtils#deleteWaypoint(Context, Waypoint.Id)}
|
||||
* {@link ContentProviderUtils#deleteMarker(Context, Marker.Id)}
|
||||
* when there is only one waypoint in the track.
|
||||
*/
|
||||
@Test
|
||||
@@ -522,26 +522,26 @@ public class CustomContentProviderUtilsTest {
|
||||
TestDataUtil.createTrackAndInsert(contentProviderUtils, trackId, 10);
|
||||
|
||||
// Insert at first.
|
||||
Waypoint waypoint1 = new Waypoint(contentProviderUtils.getLastValidTrackPoint(trackId));
|
||||
Marker waypoint1 = new Marker(contentProviderUtils.getLastValidTrackPoint(trackId));
|
||||
waypoint1.setDescription(TEST_DESC);
|
||||
waypoint1.setTrackId(trackId);
|
||||
contentProviderUtils.insertWaypoint(waypoint1);
|
||||
contentProviderUtils.insertMarker(waypoint1);
|
||||
|
||||
// Check insert was done.
|
||||
assertEquals(contentProviderUtils.getWaypointCount(trackId), 1);
|
||||
assertEquals(contentProviderUtils.getMarkerCount(trackId), 1);
|
||||
|
||||
// Get waypoint id that needs to delete.
|
||||
Waypoint.Id waypoint1Id = new Waypoint.Id(ContentUris.parseId(contentProviderUtils.insertWaypoint(waypoint1)));
|
||||
Marker.Id waypoint1Id = new Marker.Id(ContentUris.parseId(contentProviderUtils.insertMarker(waypoint1)));
|
||||
|
||||
// Delete
|
||||
contentProviderUtils.deleteWaypoint(context, waypoint1Id);
|
||||
contentProviderUtils.deleteMarker(context, waypoint1Id);
|
||||
|
||||
assertNull(contentProviderUtils.getWaypoint(waypoint1Id));
|
||||
assertNull(contentProviderUtils.getMarker(waypoint1Id));
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the method
|
||||
* {@link ContentProviderUtils#deleteWaypoint(Context, Waypoint.Id)}
|
||||
* {@link ContentProviderUtils#deleteMarker(Context, Marker.Id)}
|
||||
* when there is only one waypoint in the track.
|
||||
*/
|
||||
@Test
|
||||
@@ -551,14 +551,14 @@ public class CustomContentProviderUtilsTest {
|
||||
|
||||
// Insert at first.
|
||||
TrackPoint trackPoint = contentProviderUtils.getLastValidTrackPoint(trackId);
|
||||
Waypoint waypoint1 = TestDataUtil.createWaypointWithPhoto(context, trackId, trackPoint.getLocation());
|
||||
contentProviderUtils.insertWaypoint(waypoint1);
|
||||
Marker waypoint1 = TestDataUtil.createWaypointWithPhoto(context, trackId, trackPoint.getLocation());
|
||||
contentProviderUtils.insertMarker(waypoint1);
|
||||
|
||||
// Check insert was done.
|
||||
assertEquals(contentProviderUtils.getWaypointCount(trackId), 1);
|
||||
assertEquals(contentProviderUtils.getMarkerCount(trackId), 1);
|
||||
|
||||
// Get waypoint id that needs to delete.
|
||||
Waypoint.Id waypoint1Id = new Waypoint.Id(ContentUris.parseId(contentProviderUtils.insertWaypoint(waypoint1)));
|
||||
Marker.Id waypoint1Id = new Marker.Id(ContentUris.parseId(contentProviderUtils.insertMarker(waypoint1)));
|
||||
|
||||
// Check waypoint has photo and it's in the external storage.
|
||||
assertTrue(waypoint1.hasPhoto());
|
||||
@@ -568,15 +568,15 @@ public class CustomContentProviderUtilsTest {
|
||||
assertTrue(dir.exists());
|
||||
|
||||
// Delete
|
||||
contentProviderUtils.deleteWaypoint(context, waypoint1Id);
|
||||
contentProviderUtils.deleteMarker(context, waypoint1Id);
|
||||
|
||||
// Check waypoint doesn't exists and photo folder was deleted.
|
||||
assertNull(contentProviderUtils.getWaypoint(waypoint1Id));
|
||||
assertNull(contentProviderUtils.getMarker(waypoint1Id));
|
||||
assertFalse(dir.exists());
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the method {@link ContentProviderUtils#deleteWaypoint(Context, Waypoint.Id)} when there is more than one waypoint in the track.
|
||||
* Tests the method {@link ContentProviderUtils#deleteMarker(Context, Marker.Id)} when there is more than one waypoint in the track.
|
||||
*/
|
||||
@Test
|
||||
public void testDeleteWaypoint_hasNextWayPoint() {
|
||||
@@ -600,67 +600,67 @@ public class CustomContentProviderUtilsTest {
|
||||
// TestDataUtil.insertTrackWithLocations(contentProviderUtils, track);
|
||||
|
||||
// Insert at first.
|
||||
Waypoint waypoint1 = new Waypoint(contentProviderUtils.getLastValidTrackPoint(trackId));
|
||||
Marker waypoint1 = new Marker(contentProviderUtils.getLastValidTrackPoint(trackId));
|
||||
waypoint1.setDescription(MOCK_DESC);
|
||||
waypoint1.setTrackId(trackId);
|
||||
Waypoint.Id waypoint1Id = new Waypoint.Id(ContentUris.parseId(contentProviderUtils.insertWaypoint(waypoint1)));
|
||||
Marker.Id waypoint1Id = new Marker.Id(ContentUris.parseId(contentProviderUtils.insertMarker(waypoint1)));
|
||||
|
||||
Waypoint waypoint2 = new Waypoint(contentProviderUtils.getLastValidTrackPoint(trackId));
|
||||
Marker waypoint2 = new Marker(contentProviderUtils.getLastValidTrackPoint(trackId));
|
||||
waypoint2.setDescription(MOCK_DESC);
|
||||
waypoint2.setTrackId(trackId);
|
||||
Waypoint.Id waypoint2Id = new Waypoint.Id(ContentUris.parseId(contentProviderUtils.insertWaypoint(waypoint2)));
|
||||
Marker.Id waypoint2Id = new Marker.Id(ContentUris.parseId(contentProviderUtils.insertMarker(waypoint2)));
|
||||
|
||||
// Delete
|
||||
assertNotNull(contentProviderUtils.getWaypoint(waypoint1Id));
|
||||
contentProviderUtils.deleteWaypoint(context, waypoint1Id);
|
||||
assertNull(contentProviderUtils.getWaypoint(waypoint1Id));
|
||||
assertNotNull(contentProviderUtils.getMarker(waypoint1Id));
|
||||
contentProviderUtils.deleteMarker(context, waypoint1Id);
|
||||
assertNull(contentProviderUtils.getMarker(waypoint1Id));
|
||||
|
||||
assertEquals(MOCK_DESC, contentProviderUtils.getWaypoint(waypoint2Id).getDescription());
|
||||
assertEquals(MOCK_DESC, contentProviderUtils.getMarker(waypoint2Id).getDescription());
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the method {@link ContentProviderUtils#getNextWaypointNumber(Track.Id)}.
|
||||
* Tests the method {@link ContentProviderUtils#getNextMarkerNumber(Track.Id)}.
|
||||
*/
|
||||
@Test
|
||||
public void testGetNextWaypointNumber() {
|
||||
Track.Id trackId = new Track.Id(System.currentTimeMillis());
|
||||
TestDataUtil.createTrackAndInsert(contentProviderUtils, trackId, 10);
|
||||
|
||||
Waypoint waypoint1 = new Waypoint(contentProviderUtils.getLastValidTrackPoint(trackId));
|
||||
Marker waypoint1 = new Marker(contentProviderUtils.getLastValidTrackPoint(trackId));
|
||||
waypoint1.setTrackId(trackId);
|
||||
Waypoint waypoint2 = new Waypoint(contentProviderUtils.getLastValidTrackPoint(trackId));
|
||||
Marker waypoint2 = new Marker(contentProviderUtils.getLastValidTrackPoint(trackId));
|
||||
waypoint2.setTrackId(trackId);
|
||||
Waypoint waypoint3 = new Waypoint(contentProviderUtils.getLastValidTrackPoint(trackId));
|
||||
Marker waypoint3 = new Marker(contentProviderUtils.getLastValidTrackPoint(trackId));
|
||||
waypoint3.setTrackId(trackId);
|
||||
Waypoint waypoint4 = new Waypoint(contentProviderUtils.getLastValidTrackPoint(trackId));
|
||||
Marker waypoint4 = new Marker(contentProviderUtils.getLastValidTrackPoint(trackId));
|
||||
waypoint4.setTrackId(trackId);
|
||||
contentProviderUtils.insertWaypoint(waypoint1);
|
||||
contentProviderUtils.insertWaypoint(waypoint2);
|
||||
contentProviderUtils.insertWaypoint(waypoint3);
|
||||
contentProviderUtils.insertWaypoint(waypoint4);
|
||||
contentProviderUtils.insertMarker(waypoint1);
|
||||
contentProviderUtils.insertMarker(waypoint2);
|
||||
contentProviderUtils.insertMarker(waypoint3);
|
||||
contentProviderUtils.insertMarker(waypoint4);
|
||||
|
||||
assertEquals(4, contentProviderUtils.getNextWaypointNumber(trackId));
|
||||
assertEquals(4, contentProviderUtils.getNextMarkerNumber(trackId));
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the method {@link ContentProviderUtils#insertWaypoint(Waypoint)} and
|
||||
* {@link ContentProviderUtils#getWaypoint(Waypoint.Id)}.
|
||||
* Tests the method {@link ContentProviderUtils#insertMarker(Marker)} and
|
||||
* {@link ContentProviderUtils#getMarker(Marker.Id)}.
|
||||
*/
|
||||
@Test
|
||||
public void testInsertAndGetWaypoint() {
|
||||
Track.Id trackId = new Track.Id(System.currentTimeMillis());
|
||||
TestDataUtil.createTrackAndInsert(contentProviderUtils, trackId, 10);
|
||||
|
||||
Waypoint waypoint = new Waypoint(contentProviderUtils.getLastValidTrackPoint(trackId));
|
||||
Marker waypoint = new Marker(contentProviderUtils.getLastValidTrackPoint(trackId));
|
||||
waypoint.setDescription(TEST_DESC);
|
||||
waypoint.setTrackId(trackId);
|
||||
Waypoint.Id waypointId = new Waypoint.Id(ContentUris.parseId(contentProviderUtils.insertWaypoint(waypoint)));
|
||||
Marker.Id waypointId = new Marker.Id(ContentUris.parseId(contentProviderUtils.insertMarker(waypoint)));
|
||||
|
||||
assertEquals(TEST_DESC, contentProviderUtils.getWaypoint(waypointId).getDescription());
|
||||
assertEquals(TEST_DESC, contentProviderUtils.getMarker(waypointId).getDescription());
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the method {@link ContentProviderUtils#updateWaypoint(Context, Waypoint)}.
|
||||
* Tests the method {@link ContentProviderUtils#updateMarker(Context, Marker)}.
|
||||
*/
|
||||
@Test
|
||||
public void testUpdateWaypoint() {
|
||||
@@ -668,21 +668,21 @@ public class CustomContentProviderUtilsTest {
|
||||
TestDataUtil.createTrackAndInsert(contentProviderUtils, trackId, 10);
|
||||
|
||||
// Insert at first.
|
||||
Waypoint waypoint = new Waypoint(contentProviderUtils.getLastValidTrackPoint(trackId));
|
||||
Marker waypoint = new Marker(contentProviderUtils.getLastValidTrackPoint(trackId));
|
||||
waypoint.setDescription(TEST_DESC);
|
||||
waypoint.setTrackId(trackId);
|
||||
Waypoint.Id waypointId = new Waypoint.Id(ContentUris.parseId(contentProviderUtils.insertWaypoint(waypoint)));
|
||||
Marker.Id waypointId = new Marker.Id(ContentUris.parseId(contentProviderUtils.insertMarker(waypoint)));
|
||||
|
||||
// Update
|
||||
waypoint = contentProviderUtils.getWaypoint(waypointId);
|
||||
waypoint = contentProviderUtils.getMarker(waypointId);
|
||||
waypoint.setDescription(TEST_DESC_NEW);
|
||||
contentProviderUtils.updateWaypoint(context, waypoint);
|
||||
contentProviderUtils.updateMarker(context, waypoint);
|
||||
|
||||
assertEquals(TEST_DESC_NEW, contentProviderUtils.getWaypoint(waypointId).getDescription());
|
||||
assertEquals(TEST_DESC_NEW, contentProviderUtils.getMarker(waypointId).getDescription());
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the method {@link ContentProviderUtils#updateWaypoint(Context, Waypoint)}.
|
||||
* Tests the method {@link ContentProviderUtils#updateMarker(Context, Marker)}.
|
||||
*/
|
||||
@Test
|
||||
public void testUpdateWaypoint_withPhoto() throws IOException {
|
||||
@@ -693,10 +693,10 @@ public class CustomContentProviderUtilsTest {
|
||||
|
||||
// Insert at first.
|
||||
TrackPoint trackPoint = contentProviderUtils.getLastValidTrackPoint(trackId);
|
||||
Waypoint waypoint = TestDataUtil.createWaypointWithPhoto(context, trackId, trackPoint.getLocation());
|
||||
Marker waypoint = TestDataUtil.createWaypointWithPhoto(context, trackId, trackPoint.getLocation());
|
||||
waypoint.setDescription(TEST_DESC);
|
||||
waypoint.setTrackId(trackId);
|
||||
Waypoint.Id waypointId = new Waypoint.Id(ContentUris.parseId(contentProviderUtils.insertWaypoint(waypoint)));
|
||||
Marker.Id waypointId = new Marker.Id(ContentUris.parseId(contentProviderUtils.insertMarker(waypoint)));
|
||||
|
||||
File dir = new File(FileUtils.getPhotoDir(context), "" + trackId.getId());
|
||||
assertTrue(dir.exists());
|
||||
@@ -704,13 +704,13 @@ public class CustomContentProviderUtilsTest {
|
||||
assertEquals(1, dir.list().length);
|
||||
|
||||
// Update
|
||||
waypoint = contentProviderUtils.getWaypoint(waypointId);
|
||||
waypoint = contentProviderUtils.getMarker(waypointId);
|
||||
waypoint.setName(TEST_NAME_NEW);
|
||||
waypoint.setDescription(TEST_DESC_NEW);
|
||||
contentProviderUtils.updateWaypoint(context, waypoint);
|
||||
contentProviderUtils.updateMarker(context, waypoint);
|
||||
|
||||
assertEquals(TEST_NAME_NEW, contentProviderUtils.getWaypoint(waypointId).getName());
|
||||
assertEquals(TEST_DESC_NEW, contentProviderUtils.getWaypoint(waypointId).getDescription());
|
||||
assertEquals(TEST_NAME_NEW, contentProviderUtils.getMarker(waypointId).getName());
|
||||
assertEquals(TEST_DESC_NEW, contentProviderUtils.getMarker(waypointId).getDescription());
|
||||
assertTrue(waypoint.hasPhoto());
|
||||
assertTrue(dir.exists());
|
||||
assertTrue(dir.isDirectory());
|
||||
@@ -718,7 +718,7 @@ public class CustomContentProviderUtilsTest {
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the method {@link ContentProviderUtils#updateWaypoint(Context, Waypoint)}.
|
||||
* Tests the method {@link ContentProviderUtils#updateMarker(Context, Marker)}.
|
||||
*/
|
||||
@Test
|
||||
public void testUpdateWaypoint_delPhotoAndDir() throws IOException {
|
||||
@@ -729,10 +729,10 @@ public class CustomContentProviderUtilsTest {
|
||||
|
||||
// Insert at first.
|
||||
TrackPoint trackPoint = contentProviderUtils.getLastValidTrackPoint(trackId);
|
||||
Waypoint waypoint = TestDataUtil.createWaypointWithPhoto(context, trackId, trackPoint.getLocation());
|
||||
Marker waypoint = TestDataUtil.createWaypointWithPhoto(context, trackId, trackPoint.getLocation());
|
||||
waypoint.setDescription(TEST_DESC);
|
||||
waypoint.setTrackId(trackId);
|
||||
Waypoint.Id waypointId = new Waypoint.Id(ContentUris.parseId(contentProviderUtils.insertWaypoint(waypoint)));
|
||||
Marker.Id waypointId = new Marker.Id(ContentUris.parseId(contentProviderUtils.insertMarker(waypoint)));
|
||||
|
||||
File dir = new File(FileUtils.getPhotoDir(context), "" + trackId.getId());
|
||||
assertTrue(dir.exists());
|
||||
@@ -740,20 +740,20 @@ public class CustomContentProviderUtilsTest {
|
||||
assertEquals(1, dir.list().length);
|
||||
|
||||
// Update
|
||||
waypoint = contentProviderUtils.getWaypoint(waypointId);
|
||||
waypoint = contentProviderUtils.getMarker(waypointId);
|
||||
waypoint.setName(TEST_NAME_NEW);
|
||||
waypoint.setDescription(TEST_DESC_NEW);
|
||||
waypoint.setPhotoUrl(null);
|
||||
contentProviderUtils.updateWaypoint(context, waypoint);
|
||||
contentProviderUtils.updateMarker(context, waypoint);
|
||||
|
||||
assertEquals(TEST_NAME_NEW, contentProviderUtils.getWaypoint(waypointId).getName());
|
||||
assertEquals(TEST_DESC_NEW, contentProviderUtils.getWaypoint(waypointId).getDescription());
|
||||
assertEquals(TEST_NAME_NEW, contentProviderUtils.getMarker(waypointId).getName());
|
||||
assertEquals(TEST_DESC_NEW, contentProviderUtils.getMarker(waypointId).getDescription());
|
||||
assertFalse(waypoint.hasPhoto());
|
||||
assertFalse(dir.exists());
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the method {@link ContentProviderUtils#updateWaypoint(Context, Waypoint)}.
|
||||
* Tests the method {@link ContentProviderUtils#updateMarker(Context, Marker)}.
|
||||
*/
|
||||
@Test
|
||||
public void testUpdateWaypoint_delPhotoNotDir() throws IOException {
|
||||
@@ -764,14 +764,14 @@ public class CustomContentProviderUtilsTest {
|
||||
|
||||
// Insert two waypoints with photos.
|
||||
TrackPoint trackPoint = contentProviderUtils.getLastValidTrackPoint(trackId);
|
||||
Waypoint waypoint = TestDataUtil.createWaypointWithPhoto(context, trackId, trackPoint.getLocation());
|
||||
Marker waypoint = TestDataUtil.createWaypointWithPhoto(context, trackId, trackPoint.getLocation());
|
||||
waypoint.setDescription(TEST_DESC);
|
||||
waypoint.setTrackId(trackId);
|
||||
Waypoint otherWaypoint = TestDataUtil.createWaypointWithPhoto(context, trackId, trackPoint.getLocation());
|
||||
Marker otherWaypoint = TestDataUtil.createWaypointWithPhoto(context, trackId, trackPoint.getLocation());
|
||||
otherWaypoint.setDescription(TEST_DESC);
|
||||
otherWaypoint.setTrackId(trackId);
|
||||
Waypoint.Id waypointId = new Waypoint.Id(ContentUris.parseId(contentProviderUtils.insertWaypoint(waypoint)));
|
||||
contentProviderUtils.insertWaypoint(otherWaypoint);
|
||||
Marker.Id waypointId = new Marker.Id(ContentUris.parseId(contentProviderUtils.insertMarker(waypoint)));
|
||||
contentProviderUtils.insertMarker(otherWaypoint);
|
||||
|
||||
File dir = new File(FileUtils.getPhotoDir(context), "" + trackId.getId());
|
||||
assertTrue(dir.exists());
|
||||
@@ -779,11 +779,11 @@ public class CustomContentProviderUtilsTest {
|
||||
assertEquals(2, dir.list().length);
|
||||
|
||||
// Update one waypoint deleting photo.
|
||||
waypoint = contentProviderUtils.getWaypoint(waypointId);
|
||||
waypoint = contentProviderUtils.getMarker(waypointId);
|
||||
waypoint.setPhotoUrl(null);
|
||||
contentProviderUtils.updateWaypoint(context, waypoint);
|
||||
contentProviderUtils.updateMarker(context, waypoint);
|
||||
|
||||
assertEquals(TEST_DESC, contentProviderUtils.getWaypoint(waypointId).getDescription());
|
||||
assertEquals(TEST_DESC, contentProviderUtils.getMarker(waypointId).getDescription());
|
||||
assertFalse(waypoint.hasPhoto());
|
||||
assertTrue(dir.exists());
|
||||
assertTrue(dir.isDirectory());
|
||||
|
||||
+6
-6
@@ -18,9 +18,9 @@ import org.junit.runner.RunWith;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import de.dennisguse.opentracks.content.data.MarkerColumns;
|
||||
import de.dennisguse.opentracks.content.data.TrackPointsColumns;
|
||||
import de.dennisguse.opentracks.content.data.TracksColumns;
|
||||
import de.dennisguse.opentracks.content.data.WaypointsColumns;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
@@ -45,7 +45,7 @@ public class CustomSQLiteOpenHelperTest {
|
||||
@VisibleForTesting
|
||||
public static Map<String, String> getTableSQL(SQLiteDatabase db) {
|
||||
HashMap<String, String> tableSQL = new HashMap<>();
|
||||
try (Cursor cursor = db.query("sqlite_master", new String[]{"name", "SQL"}, "name IN ('" + TracksColumns.TABLE_NAME + "', '" + TrackPointsColumns.TABLE_NAME + "', '" + WaypointsColumns.TABLE_NAME + "')", null, null, null, "name")) {
|
||||
try (Cursor cursor = db.query("sqlite_master", new String[]{"name", "SQL"}, "name IN ('" + TracksColumns.TABLE_NAME + "', '" + TrackPointsColumns.TABLE_NAME + "', '" + MarkerColumns.TABLE_NAME + "')", null, null, null, "name")) {
|
||||
if (cursor != null) {
|
||||
while (cursor.moveToNext()) {
|
||||
tableSQL.put(cursor.getString(0), cursor.getString(1));
|
||||
@@ -106,8 +106,8 @@ public class CustomSQLiteOpenHelperTest {
|
||||
assertTrue(hasSqlCreate(db, TrackPointsColumns.CREATE_TABLE));
|
||||
assertTrue(hasSqlCreate(db, TrackPointsColumns.CREATE_TABLE_INDEX));
|
||||
|
||||
assertTrue(hasSqlCreate(db, WaypointsColumns.CREATE_TABLE));
|
||||
assertTrue(hasSqlCreate(db, WaypointsColumns.CREATE_TABLE_INDEX));
|
||||
assertTrue(hasSqlCreate(db, MarkerColumns.CREATE_TABLE));
|
||||
assertTrue(hasSqlCreate(db, MarkerColumns.CREATE_TABLE_INDEX));
|
||||
} catch (Exception e) {
|
||||
fail();
|
||||
}
|
||||
@@ -140,13 +140,13 @@ public class CustomSQLiteOpenHelperTest {
|
||||
|
||||
assertEquals(tablesByCreate.get(TracksColumns.TABLE_NAME), tableByUpgrade.get(TracksColumns.TABLE_NAME));
|
||||
assertEquals(tablesByCreate.get(TrackPointsColumns.TABLE_NAME), tableByUpgrade.get(TrackPointsColumns.TABLE_NAME));
|
||||
assertEquals(tablesByCreate.get(WaypointsColumns.TABLE_NAME), tableByUpgrade.get(WaypointsColumns.TABLE_NAME));
|
||||
assertEquals(tablesByCreate.get(MarkerColumns.TABLE_NAME), tableByUpgrade.get(MarkerColumns.TABLE_NAME));
|
||||
|
||||
// then - verify custom indices
|
||||
assertEquals(3, indicesByCreate.size());
|
||||
assertEquals(indicesByUpgrade.get(TracksColumns.TABLE_NAME), indicesByCreate.get(TracksColumns.TABLE_NAME));
|
||||
assertEquals(indicesByUpgrade.get(TrackPointsColumns.TABLE_NAME), indicesByCreate.get(TrackPointsColumns.TABLE_NAME));
|
||||
assertEquals(indicesByUpgrade.get(WaypointsColumns.TABLE_NAME), indicesByCreate.get(WaypointsColumns.TABLE_NAME));
|
||||
assertEquals(indicesByUpgrade.get(MarkerColumns.TABLE_NAME), indicesByCreate.get(MarkerColumns.TABLE_NAME));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
+3
-3
@@ -33,9 +33,9 @@ import java.util.Locale;
|
||||
import java.util.SimpleTimeZone;
|
||||
import java.util.TimeZone;
|
||||
|
||||
import de.dennisguse.opentracks.content.data.MarkerColumns;
|
||||
import de.dennisguse.opentracks.content.data.Track;
|
||||
import de.dennisguse.opentracks.content.data.TrackPoint;
|
||||
import de.dennisguse.opentracks.content.data.WaypointsColumns;
|
||||
import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
@@ -70,7 +70,7 @@ public abstract class AbstractTestFileTrackImporter {
|
||||
static final long TRACK_POINT_ID_3 = 4;
|
||||
|
||||
private static final long WAYPOINT_ID_0 = 1;
|
||||
private static final Uri WAYPOINT_ID_O_URI = ContentUris.appendId(WaypointsColumns.CONTENT_URI.buildUpon(), WAYPOINT_ID_0).build();
|
||||
private static final Uri WAYPOINT_ID_O_URI = ContentUris.appendId(MarkerColumns.CONTENT_URI.buildUpon(), WAYPOINT_ID_0).build();
|
||||
|
||||
protected final Context context = ApplicationProvider.getApplicationContext();
|
||||
|
||||
@@ -114,7 +114,7 @@ public abstract class AbstractTestFileTrackImporter {
|
||||
protected void expectTrackUpdate(ArgumentCaptor<Track> trackCaptor, boolean lastTrack, Track.Id trackId) {
|
||||
contentProviderUtils.updateTrack(trackCaptor.capture());
|
||||
|
||||
when(contentProviderUtils.insertWaypoint(any())).thenReturn(WAYPOINT_ID_O_URI);
|
||||
when(contentProviderUtils.insertMarker(any())).thenReturn(WAYPOINT_ID_O_URI);
|
||||
if (lastTrack) {
|
||||
// Return null to not add waypoints
|
||||
when(contentProviderUtils.getTrack(trackId)).thenReturn(null);
|
||||
|
||||
+32
-32
@@ -21,10 +21,10 @@ import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import de.dennisguse.opentracks.R;
|
||||
import de.dennisguse.opentracks.content.data.Marker;
|
||||
import de.dennisguse.opentracks.content.data.TestDataUtil;
|
||||
import de.dennisguse.opentracks.content.data.Track;
|
||||
import de.dennisguse.opentracks.content.data.TrackPoint;
|
||||
import de.dennisguse.opentracks.content.data.Waypoint;
|
||||
import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
|
||||
import de.dennisguse.opentracks.io.file.TrackFileFormat;
|
||||
import de.dennisguse.opentracks.io.file.exporter.TrackExporter;
|
||||
@@ -53,7 +53,7 @@ public class ExportImportTest {
|
||||
private static final String TRACK_CATEGORY = "the category";
|
||||
private static final String TRACK_DESCRIPTION = "the description";
|
||||
|
||||
private final List<Waypoint> waypoints = new ArrayList<>();
|
||||
private final List<Marker> markers = new ArrayList<>();
|
||||
private final List<TrackPoint> trackPoints = new ArrayList<>();
|
||||
|
||||
private Track.Id importTrackId;
|
||||
@@ -72,19 +72,19 @@ public class ExportImportTest {
|
||||
trackPoints.addAll(Arrays.asList(track.second));
|
||||
|
||||
for (int i = 0; i < 3; i++) {
|
||||
Waypoint waypoint = new Waypoint(track.second[i].getLocation());
|
||||
waypoint.setName("the waypoint " + i);
|
||||
waypoint.setDescription("the waypoint description " + i);
|
||||
waypoint.setCategory("the waypoint category" + i);
|
||||
waypoint.setIcon("the waypoing icon" + i);
|
||||
waypoint.setPhotoUrl("the photo url" + i);
|
||||
waypoint.setTrackId(trackId);
|
||||
contentProviderUtils.insertWaypoint(waypoint);
|
||||
Marker marker = new Marker(track.second[i].getLocation());
|
||||
marker.setName("the marker " + i);
|
||||
marker.setDescription("the marker description " + i);
|
||||
marker.setCategory("the marker category" + i);
|
||||
marker.setIcon("the waypoing icon" + i);
|
||||
marker.setPhotoUrl("the photo url" + i);
|
||||
marker.setTrackId(trackId);
|
||||
contentProviderUtils.insertMarker(marker);
|
||||
|
||||
waypoints.add(waypoint);
|
||||
markers.add(marker);
|
||||
}
|
||||
|
||||
assertEquals(waypoints.size(), contentProviderUtils.getWaypointCount(trackId));
|
||||
assertEquals(markers.size(), contentProviderUtils.getMarkerCount(trackId));
|
||||
}
|
||||
|
||||
@After
|
||||
@@ -129,8 +129,8 @@ public class ExportImportTest {
|
||||
assertEquals(track.getIcon(), importedTrack.getIcon());
|
||||
assertEquals(track.getUuid(), importedTrack.getUuid());
|
||||
|
||||
// 2. waypoints
|
||||
assertWaypoints();
|
||||
// 2. markers
|
||||
assertMarkers();
|
||||
|
||||
// 3. trackpoints
|
||||
assertTrackpoints(false, false, false);
|
||||
@@ -164,8 +164,8 @@ public class ExportImportTest {
|
||||
assertEquals(track.getName(), importedTrack.getName());
|
||||
assertEquals(track.getIcon(), importedTrack.getIcon());
|
||||
|
||||
// 2. waypoints
|
||||
assertWaypoints();
|
||||
// 2. markers
|
||||
assertMarkers();
|
||||
|
||||
// 3. trackpoints
|
||||
assertTrackpoints(true, true, true);
|
||||
@@ -253,8 +253,8 @@ public class ExportImportTest {
|
||||
//TODO exporting and importing a track icon is not yet supported by GpxTrackWriter.
|
||||
//assertEquals(track.getIcon(), trackImported.getIcon());
|
||||
|
||||
// 2. waypoints
|
||||
assertWaypoints();
|
||||
// 2. markers
|
||||
assertMarkers();
|
||||
|
||||
// 3. trackpoints
|
||||
assertTrackpoints(false, true, true);
|
||||
@@ -285,22 +285,22 @@ public class ExportImportTest {
|
||||
assertNull(trackImported);
|
||||
}
|
||||
|
||||
private void assertWaypoints() {
|
||||
assertEquals(waypoints.size(), contentProviderUtils.getWaypointCount(importTrackId));
|
||||
private void assertMarkers() {
|
||||
assertEquals(markers.size(), contentProviderUtils.getMarkerCount(importTrackId));
|
||||
|
||||
List<Waypoint> importedWaypoints = contentProviderUtils.getWaypoints(importTrackId);
|
||||
for (int i = 0; i < waypoints.size(); i++) {
|
||||
Waypoint waypoint = waypoints.get(i);
|
||||
Waypoint importedWaypoint = importedWaypoints.get(i);
|
||||
assertEquals(waypoint.getCategory(), importedWaypoint.getCategory());
|
||||
assertEquals(waypoint.getDescription(), importedWaypoint.getDescription());
|
||||
// assertEquals(waypoint.getIcon(), importedWaypoint.getIcon()); // TODO for KML
|
||||
assertEquals(waypoint.getName(), importedWaypoint.getName());
|
||||
assertEquals("", importedWaypoint.getPhotoUrl());
|
||||
List<Marker> importedMarkers = contentProviderUtils.getMarkers(importTrackId);
|
||||
for (int i = 0; i < markers.size(); i++) {
|
||||
Marker marker = markers.get(i);
|
||||
Marker importMarker = importedMarkers.get(i);
|
||||
assertEquals(marker.getCategory(), importMarker.getCategory());
|
||||
assertEquals(marker.getDescription(), importMarker.getDescription());
|
||||
// assertEquals(marker.getIcon(), importMarker.getIcon()); // TODO for KML
|
||||
assertEquals(marker.getName(), importMarker.getName());
|
||||
assertEquals("", importMarker.getPhotoUrl());
|
||||
|
||||
assertEquals(waypoint.getLocation().getLatitude(), importedWaypoint.getLocation().getLatitude(), 0.001);
|
||||
assertEquals(waypoint.getLocation().getLongitude(), importedWaypoint.getLocation().getLongitude(), 0.001);
|
||||
assertEquals(waypoint.getLocation().getAltitude(), importedWaypoint.getLocation().getAltitude(), 0.001);
|
||||
assertEquals(marker.getLocation().getLatitude(), importMarker.getLocation().getLatitude(), 0.001);
|
||||
assertEquals(marker.getLocation().getLongitude(), importMarker.getLocation().getLongitude(), 0.001);
|
||||
assertEquals(marker.getLocation().getAltitude(), importMarker.getLocation().getAltitude(), 0.001);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+4
-4
@@ -44,10 +44,10 @@ import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.TimeoutException;
|
||||
|
||||
import de.dennisguse.opentracks.R;
|
||||
import de.dennisguse.opentracks.content.data.Marker;
|
||||
import de.dennisguse.opentracks.content.data.Track;
|
||||
import de.dennisguse.opentracks.content.data.TrackPoint;
|
||||
import de.dennisguse.opentracks.content.data.TrackPointsColumns;
|
||||
import de.dennisguse.opentracks.content.data.Waypoint;
|
||||
import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
|
||||
import de.dennisguse.opentracks.content.provider.CustomContentProvider;
|
||||
import de.dennisguse.opentracks.stats.TrackStatistics;
|
||||
@@ -296,7 +296,7 @@ public class TrackRecordingServiceTest {
|
||||
assertFalse(service.isRecording());
|
||||
|
||||
// when
|
||||
Waypoint.Id waypointId = service.insertWaypoint(null, null, null, null);
|
||||
Marker.Id waypointId = service.insertMarker(null, null, null, null);
|
||||
|
||||
// then
|
||||
assertNull(waypointId);
|
||||
@@ -313,11 +313,11 @@ public class TrackRecordingServiceTest {
|
||||
Track.Id trackId = service.getRecordingTrackId();
|
||||
|
||||
// when
|
||||
Waypoint.Id waypointId = service.insertWaypoint(null, null, null, null);
|
||||
Marker.Id waypointId = service.insertMarker(null, null, null, null);
|
||||
|
||||
// then
|
||||
assertNotEquals(-1L, waypointId);
|
||||
Waypoint wpt = contentProviderUtils.getWaypoint(waypointId);
|
||||
Marker wpt = contentProviderUtils.getMarker(waypointId);
|
||||
assertEquals(context.getString(R.string.marker_waypoint_icon_url), wpt.getIcon());
|
||||
assertEquals(context.getString(R.string.marker_name_format, 1), wpt.getName());
|
||||
assertEquals(trackId, wpt.getTrackId());
|
||||
|
||||
+1
-1
@@ -226,7 +226,7 @@ public class TrackRecordingServiceTestLooper {
|
||||
service.newTrackPoint(trackPoint, prefAccuracy);
|
||||
|
||||
if (i % 7 == 0) {
|
||||
service.insertWaypoint(null, null, null, null);
|
||||
service.insertMarker(null, null, null, null);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -202,7 +202,7 @@ public class StringUtilsTest {
|
||||
assertEquals("1", StringUtils.formatDecimal(1.1, 0));
|
||||
assertEquals("10", StringUtils.formatDecimal(10, 0));
|
||||
assertEquals("10", StringUtils.formatDecimal(10.1, 0));
|
||||
assertEquals("0", StringUtils.formatDecimal(-0.1, 0));
|
||||
assertEquals("-0", StringUtils.formatDecimal(-0.1, 0));
|
||||
|
||||
assertEquals("0", StringUtils.formatDecimal(0.0, 2));
|
||||
assertEquals("0.1", StringUtils.formatDecimal(0.1, 2));
|
||||
@@ -220,8 +220,8 @@ public class StringUtilsTest {
|
||||
assertEquals("4:59", StringUtils.getSpeedParts(context, 3.34, true, false).first);
|
||||
assertEquals("5:00", StringUtils.getSpeedParts(context, 3.33, true, false).first);
|
||||
|
||||
assertEquals("11.99", StringUtils.getSpeedParts(context, 3.33, true, true).first);
|
||||
assertEquals("7.45", StringUtils.getSpeedParts(context, 3.33, false, true).first);
|
||||
assertEquals("11.9", StringUtils.getSpeedParts(context, 3.31, true, true).first);
|
||||
assertEquals("7.5", StringUtils.getSpeedParts(context, 3.34, false, true).first);
|
||||
|
||||
assertEquals("min/km", StringUtils.getSpeedParts(context, 0, true, false).second);
|
||||
assertEquals("min/mi", StringUtils.getSpeedParts(context, 0, false, false).second);
|
||||
|
||||
@@ -30,7 +30,7 @@ import androidx.viewpager.widget.ViewPager;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import de.dennisguse.opentracks.content.data.Waypoint;
|
||||
import de.dennisguse.opentracks.content.data.Marker;
|
||||
import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
|
||||
import de.dennisguse.opentracks.fragments.DeleteMarkerDialogFragment.DeleteMarkerCaller;
|
||||
import de.dennisguse.opentracks.fragments.MarkerDetailFragment;
|
||||
@@ -48,13 +48,13 @@ public class MarkerDetailActivity extends AbstractActivity implements DeleteMark
|
||||
|
||||
private static final String TAG = MarkerDetailActivity.class.getSimpleName();
|
||||
|
||||
private List<Waypoint.Id> waypointIds;
|
||||
private List<Marker.Id> waypointIds;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle bundle) {
|
||||
super.onCreate(bundle);
|
||||
|
||||
Waypoint.Id waypointId = getIntent().getParcelableExtra(EXTRA_MARKER_ID);
|
||||
Marker.Id waypointId = getIntent().getParcelableExtra(EXTRA_MARKER_ID);
|
||||
if (waypointId == null) {
|
||||
Log.d(TAG, "invalid marker id");
|
||||
finish();
|
||||
@@ -62,16 +62,16 @@ public class MarkerDetailActivity extends AbstractActivity implements DeleteMark
|
||||
}
|
||||
|
||||
ContentProviderUtils contentProviderUtils = new ContentProviderUtils(this);
|
||||
Waypoint waypoint = contentProviderUtils.getWaypoint(waypointId);
|
||||
Marker waypoint = contentProviderUtils.getMarker(waypointId);
|
||||
|
||||
waypointIds = new ArrayList<>();
|
||||
int markerIndex = -1;
|
||||
|
||||
//TODO Load only waypointIds, not the whole waypoint
|
||||
try (Cursor cursor = contentProviderUtils.getWaypointCursor(waypoint.getTrackId(), null, -1)) {
|
||||
try (Cursor cursor = contentProviderUtils.getMarkerCursor(waypoint.getTrackId(), null, -1)) {
|
||||
if (cursor != null && cursor.moveToFirst()) {
|
||||
for (int i = 0; i < cursor.getCount(); i++) {
|
||||
Waypoint currentMarker = contentProviderUtils.createWaypoint(cursor);
|
||||
Marker currentMarker = contentProviderUtils.createMarker(cursor);
|
||||
waypointIds.add(currentMarker.getId());
|
||||
if (waypointId.equals(currentMarker.getId())) {
|
||||
markerIndex = waypointIds.size() - 1;
|
||||
|
||||
@@ -42,8 +42,8 @@ import java.io.File;
|
||||
import java.io.FileDescriptor;
|
||||
import java.io.IOException;
|
||||
|
||||
import de.dennisguse.opentracks.content.data.Marker;
|
||||
import de.dennisguse.opentracks.content.data.Track;
|
||||
import de.dennisguse.opentracks.content.data.Waypoint;
|
||||
import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
|
||||
import de.dennisguse.opentracks.services.TrackRecordingServiceConnection;
|
||||
import de.dennisguse.opentracks.util.FileUtils;
|
||||
@@ -67,7 +67,7 @@ public class MarkerEditActivity extends AbstractActivity {
|
||||
private static final String TAG = MarkerEditActivity.class.getSimpleName();
|
||||
private Track.Id trackId;
|
||||
private TrackRecordingServiceConnection trackRecordingServiceConnection = new TrackRecordingServiceConnection();
|
||||
private Waypoint waypoint;
|
||||
private Marker waypoint;
|
||||
|
||||
private MenuItem insertPhotoMenuItem;
|
||||
private MenuItem insertGalleryImgMenuItem;
|
||||
@@ -87,7 +87,7 @@ public class MarkerEditActivity extends AbstractActivity {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
trackId = getIntent().getParcelableExtra(EXTRA_TRACK_ID);
|
||||
Waypoint.Id waypointId = getIntent().getParcelableExtra(EXTRA_MARKER_ID);
|
||||
Marker.Id waypointId = getIntent().getParcelableExtra(EXTRA_MARKER_ID);
|
||||
|
||||
hasCamera = getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_ANY);
|
||||
|
||||
@@ -127,7 +127,7 @@ public class MarkerEditActivity extends AbstractActivity {
|
||||
});
|
||||
|
||||
if (isNewMarker) {
|
||||
int nextWaypointNumber = trackId == null ? -1 : new ContentProviderUtils(this).getNextWaypointNumber(trackId);
|
||||
int nextWaypointNumber = trackId == null ? -1 : new ContentProviderUtils(this).getNextMarkerNumber(trackId);
|
||||
if (nextWaypointNumber == -1) {
|
||||
nextWaypointNumber = 0;
|
||||
}
|
||||
@@ -136,7 +136,7 @@ public class MarkerEditActivity extends AbstractActivity {
|
||||
waypointMarkerType.setText("");
|
||||
waypointDescription.setText("");
|
||||
} else {
|
||||
waypoint = new ContentProviderUtils(this).getWaypoint(waypointId);
|
||||
waypoint = new ContentProviderUtils(this).getMarker(waypointId);
|
||||
if (waypoint == null) {
|
||||
Log.d(TAG, "waypoint is null");
|
||||
finish();
|
||||
@@ -307,6 +307,6 @@ public class MarkerEditActivity extends AbstractActivity {
|
||||
waypoint.setDescription(waypointDescription.getText().toString());
|
||||
waypoint.setPhotoUrl(photoUri != null ? photoUri.toString() : null);
|
||||
|
||||
new ContentProviderUtils(this).updateWaypoint(this, waypoint);
|
||||
new ContentProviderUtils(this).updateMarker(this, waypoint);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,9 +34,9 @@ import androidx.loader.app.LoaderManager;
|
||||
import androidx.loader.app.LoaderManager.LoaderCallbacks;
|
||||
import androidx.loader.content.Loader;
|
||||
|
||||
import de.dennisguse.opentracks.content.data.Marker;
|
||||
import de.dennisguse.opentracks.content.data.MarkerColumns;
|
||||
import de.dennisguse.opentracks.content.data.Track;
|
||||
import de.dennisguse.opentracks.content.data.Waypoint;
|
||||
import de.dennisguse.opentracks.content.data.WaypointsColumns;
|
||||
import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
|
||||
import de.dennisguse.opentracks.fragments.DeleteMarkerDialogFragment;
|
||||
import de.dennisguse.opentracks.fragments.DeleteMarkerDialogFragment.DeleteMarkerCaller;
|
||||
@@ -124,19 +124,19 @@ public class MarkerListActivity extends AbstractActivity implements DeleteMarker
|
||||
listView.setEmptyView(findViewById(R.id.marker_list_empty));
|
||||
listView.setOnItemClickListener((parent, view, position, id) -> {
|
||||
Intent intent = IntentUtils.newIntent(MarkerListActivity.this, MarkerDetailActivity.class)
|
||||
.putExtra(MarkerDetailActivity.EXTRA_MARKER_ID, new Waypoint.Id(id));
|
||||
.putExtra(MarkerDetailActivity.EXTRA_MARKER_ID, new Marker.Id(id));
|
||||
startActivity(intent);
|
||||
});
|
||||
resourceCursorAdapter = new ResourceCursorAdapter(this, R.layout.list_item, null, 0) {
|
||||
@Override
|
||||
public void bindView(View view, Context context, Cursor cursor) {
|
||||
int nameIndex = cursor.getColumnIndex(WaypointsColumns.NAME);
|
||||
int timeIndex = cursor.getColumnIndexOrThrow(WaypointsColumns.TIME);
|
||||
int categoryIndex = cursor.getColumnIndex(WaypointsColumns.CATEGORY);
|
||||
int descriptionIndex = cursor.getColumnIndex(WaypointsColumns.DESCRIPTION);
|
||||
int photoUrlIndex = cursor.getColumnIndex(WaypointsColumns.PHOTOURL);
|
||||
int latitudeIndex = cursor.getColumnIndex(WaypointsColumns.LATITUDE);
|
||||
int longitudeIndex = cursor.getColumnIndex(WaypointsColumns.LONGITUDE);
|
||||
int nameIndex = cursor.getColumnIndex(MarkerColumns.NAME);
|
||||
int timeIndex = cursor.getColumnIndexOrThrow(MarkerColumns.TIME);
|
||||
int categoryIndex = cursor.getColumnIndex(MarkerColumns.CATEGORY);
|
||||
int descriptionIndex = cursor.getColumnIndex(MarkerColumns.DESCRIPTION);
|
||||
int photoUrlIndex = cursor.getColumnIndex(MarkerColumns.PHOTOURL);
|
||||
int latitudeIndex = cursor.getColumnIndex(MarkerColumns.LATITUDE);
|
||||
int longitudeIndex = cursor.getColumnIndex(MarkerColumns.LONGITUDE);
|
||||
|
||||
int iconId = MarkerUtils.ICON_ID;
|
||||
String name = cursor.getString(nameIndex);
|
||||
@@ -158,7 +158,7 @@ public class MarkerListActivity extends AbstractActivity implements DeleteMarker
|
||||
@NonNull
|
||||
@Override
|
||||
public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {
|
||||
return ContentProviderUtils.getWaypointsLoader(MarkerListActivity.this, track != null ? track.getId() : null);
|
||||
return ContentProviderUtils.getMarkersLoader(MarkerListActivity.this, track != null ? track.getId() : null);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -234,16 +234,16 @@ public class MarkerListActivity extends AbstractActivity implements DeleteMarker
|
||||
* @return true if handled.
|
||||
*/
|
||||
private boolean handleContextItem(int itemId, long... longWaypointIds) {
|
||||
Waypoint.Id[] waypointIds = new Waypoint.Id[longWaypointIds.length];
|
||||
Marker.Id[] waypointIds = new Marker.Id[longWaypointIds.length];
|
||||
for (int i = 0; i < longWaypointIds.length; i++) {
|
||||
waypointIds[i] = new Waypoint.Id(longWaypointIds[i]);
|
||||
waypointIds[i] = new Marker.Id(longWaypointIds[i]);
|
||||
}
|
||||
|
||||
Intent intent;
|
||||
switch (itemId) {
|
||||
case R.id.list_context_menu_show_on_map:
|
||||
if (waypointIds.length == 1) {
|
||||
IntentUtils.showCoordinateOnMap(this, contentProviderUtils.getWaypoint(waypointIds[0]));
|
||||
IntentUtils.showCoordinateOnMap(this, contentProviderUtils.getMarker(waypointIds[0]));
|
||||
}
|
||||
return true;
|
||||
case R.id.list_context_menu_edit:
|
||||
|
||||
@@ -41,8 +41,8 @@ import java.util.SortedSet;
|
||||
import de.dennisguse.opentracks.content.SearchEngine;
|
||||
import de.dennisguse.opentracks.content.SearchEngine.ScoredResult;
|
||||
import de.dennisguse.opentracks.content.SearchEngine.SearchQuery;
|
||||
import de.dennisguse.opentracks.content.data.Marker;
|
||||
import de.dennisguse.opentracks.content.data.Track;
|
||||
import de.dennisguse.opentracks.content.data.Waypoint;
|
||||
import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
|
||||
import de.dennisguse.opentracks.fragments.ConfirmDeleteDialogFragment;
|
||||
import de.dennisguse.opentracks.fragments.DeleteMarkerDialogFragment;
|
||||
@@ -204,7 +204,7 @@ public class SearchListActivity extends AbstractListActivity implements DeleteMa
|
||||
listView.setOnItemClickListener((parent, view, position, id) -> {
|
||||
Map<String, Object> item = arrayAdapter.getItem(position);
|
||||
Track.Id trackId = (Track.Id) item.get(TRACK_ID_FIELD);
|
||||
Long markerId = (Long) item.get(MARKER_ID_FIELD);
|
||||
Marker.Id markerId = (Marker.Id) item.get(MARKER_ID_FIELD);
|
||||
Intent intent = IntentUtils.newIntent(SearchListActivity.this, TrackRecordedActivity.class);
|
||||
if (markerId != null) {
|
||||
intent = intent.putExtra(TrackRecordedActivity.EXTRA_MARKER_ID, markerId);
|
||||
@@ -271,7 +271,7 @@ public class SearchListActivity extends AbstractListActivity implements DeleteMa
|
||||
}
|
||||
Map<String, Object> item = arrayAdapter.getItem(positions[0]);
|
||||
Track.Id trackId = (Track.Id) item.get(TRACK_ID_FIELD);
|
||||
Waypoint.Id waypointId = (Waypoint.Id) item.get(MARKER_ID_FIELD);
|
||||
Marker.Id waypointId = (Marker.Id) item.get(MARKER_ID_FIELD);
|
||||
Intent intent;
|
||||
switch (itemId) {
|
||||
case R.id.list_context_menu_show_on_map:
|
||||
@@ -355,7 +355,7 @@ public class SearchListActivity extends AbstractListActivity implements DeleteMa
|
||||
if (result.track != null) {
|
||||
output.add(prepareTrackForDisplay(result.track));
|
||||
} else {
|
||||
output.add(prepareMarkerForDisplay(result.waypoint));
|
||||
output.add(prepareMarkerForDisplay(result.marker));
|
||||
}
|
||||
}
|
||||
return output;
|
||||
@@ -367,7 +367,7 @@ public class SearchListActivity extends AbstractListActivity implements DeleteMa
|
||||
* @param waypoint the marker
|
||||
* @return the result map
|
||||
*/
|
||||
private Map<String, Object> prepareMarkerForDisplay(Waypoint waypoint) {
|
||||
private Map<String, Object> prepareMarkerForDisplay(Marker waypoint) {
|
||||
Map<String, Object> resultMap = new HashMap<>();
|
||||
|
||||
//TODO: It may be more appropriate to obtain the track name as a join in the retrieval phase of the searchable.
|
||||
@@ -422,7 +422,7 @@ public class SearchListActivity extends AbstractListActivity implements DeleteMa
|
||||
resultMap.put(NAME_FIELD, track.getName());
|
||||
resultMap.put(TOTAL_TIME_FIELD, StringUtils.formatElapsedTime(trackStatistics.getTotalTime()));
|
||||
resultMap.put(TOTAL_DISTANCE_FIELD, StringUtils.formatDistance(this, trackStatistics.getTotalDistance(), metricUnits));
|
||||
resultMap.put(MARKER_COUNT_FIELD, contentProviderUtils.getWaypointCount(track.getId()));
|
||||
resultMap.put(MARKER_COUNT_FIELD, contentProviderUtils.getMarkerCount(track.getId()));
|
||||
resultMap.put(START_TIME_FIELD, trackStatistics.getStartTime_ms());
|
||||
resultMap.put(CATEGORY_FIELD, category);
|
||||
resultMap.put(DESCRIPTION_FIELD, track.getDescription());
|
||||
|
||||
@@ -263,13 +263,13 @@ public class TrackListActivity extends AbstractListActivity implements ConfirmDe
|
||||
int descriptionIndex = cursor.getColumnIndex(TracksColumns.DESCRIPTION);
|
||||
|
||||
Track.Id trackId = new Track.Id(cursor.getLong(idIndex));
|
||||
boolean isRecording = trackId == recordingTrackId;
|
||||
boolean isRecording = trackId.equals(recordingTrackId);
|
||||
String icon = cursor.getString(iconIndex);
|
||||
int iconId = TrackIconUtils.getIconDrawable(icon);
|
||||
String name = cursor.getString(nameIndex);
|
||||
String totalTime = StringUtils.formatElapsedTime(cursor.getLong(totalTimeIndex));
|
||||
String totalDistance = StringUtils.formatDistance(TrackListActivity.this, cursor.getDouble(totalDistanceIndex), metricUnits);
|
||||
int markerCount = contentProviderUtils.getWaypointCount(trackId);
|
||||
int markerCount = contentProviderUtils.getMarkerCount(trackId);
|
||||
long startTime = cursor.getLong(startTimeIndex);
|
||||
String category = icon != null && !icon.equals("") ? null : cursor.getString(categoryIndex);
|
||||
String description = cursor.getString(descriptionIndex);
|
||||
|
||||
@@ -31,8 +31,8 @@ import androidx.viewpager.widget.ViewPager;
|
||||
import com.google.android.material.tabs.TabLayout;
|
||||
|
||||
import de.dennisguse.opentracks.content.TrackDataHub;
|
||||
import de.dennisguse.opentracks.content.data.Marker;
|
||||
import de.dennisguse.opentracks.content.data.Track;
|
||||
import de.dennisguse.opentracks.content.data.Waypoint;
|
||||
import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
|
||||
import de.dennisguse.opentracks.fragments.ChartFragment;
|
||||
import de.dennisguse.opentracks.fragments.ChooseActivityTypeDialogFragment;
|
||||
@@ -206,10 +206,10 @@ public class TrackRecordedActivity extends AbstractListActivity implements Choos
|
||||
private void handleIntent(Intent intent) {
|
||||
Track.Id trackId = intent.getParcelableExtra(EXTRA_TRACK_ID);
|
||||
|
||||
Waypoint.Id waypointId = intent.getParcelableExtra(EXTRA_MARKER_ID);
|
||||
Marker.Id waypointId = intent.getParcelableExtra(EXTRA_MARKER_ID);
|
||||
if (waypointId != null) {
|
||||
// Use the trackId from the marker
|
||||
Waypoint waypoint = contentProviderUtils.getWaypoint(waypointId);
|
||||
Marker waypoint = contentProviderUtils.getMarker(waypointId);
|
||||
if (waypoint == null) {
|
||||
finish();
|
||||
return;
|
||||
|
||||
@@ -66,6 +66,9 @@ public class TrackRecordingActivity extends AbstractActivity implements ChooseAc
|
||||
// Preferences
|
||||
private boolean recordingTrackPaused;
|
||||
|
||||
// Intervals recording fragment needs Track.Id when the activity creates it.
|
||||
private OnTrackIdListener intervalsListener;
|
||||
|
||||
private final Runnable bindChangedCallback = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
@@ -82,6 +85,9 @@ public class TrackRecordingActivity extends AbstractActivity implements ChooseAc
|
||||
if (trackId == null) {
|
||||
// trackId isn't initialized -> leads a new recording.
|
||||
trackId = service.startNewTrack();
|
||||
if (intervalsListener != null) {
|
||||
intervalsListener.onTrackId(trackId);
|
||||
}
|
||||
} else {
|
||||
// trackId is initialized -> resumes the track.
|
||||
service.resumeTrack(trackId);
|
||||
@@ -410,4 +416,12 @@ public class TrackRecordingActivity extends AbstractActivity implements ChooseAc
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public interface OnTrackIdListener {
|
||||
void onTrackId(Track.Id trackId);
|
||||
}
|
||||
|
||||
public void setTrackIdListener(OnTrackIdListener listener) {
|
||||
this.intervalsListener = listener;
|
||||
}
|
||||
}
|
||||
@@ -42,7 +42,7 @@ import java.util.List;
|
||||
|
||||
import de.dennisguse.opentracks.MarkerDetailActivity;
|
||||
import de.dennisguse.opentracks.R;
|
||||
import de.dennisguse.opentracks.content.data.Waypoint;
|
||||
import de.dennisguse.opentracks.content.data.Marker;
|
||||
import de.dennisguse.opentracks.stats.ExtremityMonitor;
|
||||
import de.dennisguse.opentracks.util.IntentUtils;
|
||||
import de.dennisguse.opentracks.util.MarkerUtils;
|
||||
@@ -87,7 +87,7 @@ public class ChartView extends View {
|
||||
private final ChartValueSeries paceSeries;
|
||||
|
||||
private final List<ChartPoint> chartPoints = new ArrayList<>();
|
||||
private final List<Waypoint> waypoints = new ArrayList<>();
|
||||
private final List<Marker> waypoints = new ArrayList<>();
|
||||
private final ExtremityMonitor xExtremityMonitor = new ExtremityMonitor();
|
||||
private final Paint axisPaint;
|
||||
private final Paint xAxisMarkerPaint;
|
||||
@@ -150,9 +150,9 @@ public class ChartView extends View {
|
||||
// Check if the y event is within markerHeight of the marker center
|
||||
if (Math.abs(event.getY() - topBorder - spacer - markerHeight / 2f) < markerHeight) {
|
||||
int minDistance = Integer.MAX_VALUE;
|
||||
Waypoint nearestWaypoint = null;
|
||||
Marker nearestWaypoint = null;
|
||||
synchronized (waypoints) {
|
||||
for (Waypoint waypoint : waypoints) {
|
||||
for (Marker waypoint : waypoints) {
|
||||
int distance = Math.abs(getX(getWaypointXValue(waypoint)) - (int) event.getX() - getScrollX());
|
||||
if (distance < minDistance) {
|
||||
minDistance = distance;
|
||||
@@ -434,7 +434,7 @@ public class ChartView extends View {
|
||||
scrollTo(0, 0);
|
||||
}
|
||||
|
||||
public void addWaypoint(Waypoint waypoint) {
|
||||
public void addWaypoint(Marker waypoint) {
|
||||
synchronized (waypoints) {
|
||||
waypoints.add(waypoint);
|
||||
}
|
||||
@@ -594,7 +594,7 @@ public class ChartView extends View {
|
||||
*/
|
||||
private void drawWaypoints(Canvas canvas) {
|
||||
synchronized (waypoints) {
|
||||
for (Waypoint waypoint : waypoints) {
|
||||
for (Marker waypoint : waypoints) {
|
||||
double xValue = getWaypointXValue(waypoint);
|
||||
if (xValue > maxX) {
|
||||
continue;
|
||||
@@ -980,7 +980,7 @@ public class ChartView extends View {
|
||||
*
|
||||
* @param waypoint the waypoint
|
||||
*/
|
||||
private double getWaypointXValue(Waypoint waypoint) {
|
||||
private double getWaypointXValue(Marker waypoint) {
|
||||
if (chartByDistance) {
|
||||
double lenghtInKm = waypoint.getLength() * UnitConversions.M_TO_KM;
|
||||
return metricUnits ? lenghtInKm : lenghtInKm * UnitConversions.KM_TO_MI;
|
||||
|
||||
@@ -28,7 +28,7 @@ import de.dennisguse.opentracks.util.StringUtils;
|
||||
import de.dennisguse.opentracks.util.UnitConversions;
|
||||
|
||||
/**
|
||||
* Generates descriptions for tracks and waypoints.
|
||||
* Generates descriptions for tracks and markers.
|
||||
*
|
||||
* @author Jimmy Shih
|
||||
*/
|
||||
|
||||
@@ -28,17 +28,17 @@ import java.util.Locale;
|
||||
import java.util.SortedSet;
|
||||
import java.util.TreeSet;
|
||||
|
||||
import de.dennisguse.opentracks.content.data.Marker;
|
||||
import de.dennisguse.opentracks.content.data.MarkerColumns;
|
||||
import de.dennisguse.opentracks.content.data.Track;
|
||||
import de.dennisguse.opentracks.content.data.TracksColumns;
|
||||
import de.dennisguse.opentracks.content.data.Waypoint;
|
||||
import de.dennisguse.opentracks.content.data.WaypointsColumns;
|
||||
import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
|
||||
import de.dennisguse.opentracks.stats.TrackStatistics;
|
||||
import de.dennisguse.opentracks.util.LocationUtils;
|
||||
import de.dennisguse.opentracks.util.UnitConversions;
|
||||
|
||||
/**
|
||||
* Engine for searching for tracks and waypoints by text.
|
||||
* Engine for searching for tracks and markers by text.
|
||||
*
|
||||
* @author Rodrigo Damazio
|
||||
*/
|
||||
@@ -53,12 +53,12 @@ public class SearchEngine {
|
||||
TracksColumns.CATEGORY + " LIKE ?";
|
||||
|
||||
/**
|
||||
* WHERE query to get waypoints by name.
|
||||
* WHERE query to get markers by name.
|
||||
*/
|
||||
private static final String WAYPOINT_SELECTION_QUERY =
|
||||
WaypointsColumns.NAME + " LIKE ? OR " +
|
||||
WaypointsColumns.DESCRIPTION + " LIKE ? OR " +
|
||||
WaypointsColumns.CATEGORY + " LIKE ?";
|
||||
private static final String MARKER_SELECTION_QUERY =
|
||||
MarkerColumns.NAME + " LIKE ? OR " +
|
||||
MarkerColumns.DESCRIPTION + " LIKE ? OR " +
|
||||
MarkerColumns.CATEGORY + " LIKE ?";
|
||||
|
||||
/**
|
||||
* Order of track results.
|
||||
@@ -66,9 +66,9 @@ public class SearchEngine {
|
||||
private static final String TRACK_SELECTION_ORDER = TracksColumns._ID + " DESC LIMIT 1000";
|
||||
|
||||
/**
|
||||
* Order of waypoint results.
|
||||
* Order of marker results.
|
||||
*/
|
||||
private static final String WAYPOINT_SELECTION_ORDER = WaypointsColumns._ID + " DESC";
|
||||
private static final String MARKER_SELECTION_ORDER = MarkerColumns._ID + " DESC";
|
||||
|
||||
/**
|
||||
* How much we promote a match in the track category.
|
||||
@@ -86,9 +86,9 @@ public class SearchEngine {
|
||||
private static final double TRACK_NAME_PROMOTION = 16.0;
|
||||
|
||||
/**
|
||||
* How much we promote a waypoint result if it's in the currently-selected track.
|
||||
* How much we promote a marker result if it's in the currently-selected track.
|
||||
*/
|
||||
private static final double CURRENT_TRACK_WAYPOINT_PROMOTION = 2.0;
|
||||
private static final double CURRENT_TRACK_MARKER_PROMOTION = 2.0;
|
||||
|
||||
/**
|
||||
* How much we promote a track result if it's the currently-selected track.
|
||||
@@ -96,9 +96,9 @@ public class SearchEngine {
|
||||
private static final double CURRENT_TRACK_DEMOTION = 0.5;
|
||||
|
||||
/**
|
||||
* Maximum number of waypoints which will be retrieved and scored.
|
||||
* Maximum number of markers which will be retrieved and scored.
|
||||
*/
|
||||
private static final int MAX_SCORED_WAYPOINTS = 100;
|
||||
private static final int MAX_SCORED_MARKERS = 100;
|
||||
|
||||
/**
|
||||
* Oldest timestamp for which we rank based on time (2000-01-01 00:00:00.000)
|
||||
@@ -115,16 +115,16 @@ public class SearchEngine {
|
||||
return scoreDiff;
|
||||
}
|
||||
|
||||
// Make tracks come before waypoints.
|
||||
if (r1.waypoint != null && r2.track != null) {
|
||||
// Make tracks come before markers.
|
||||
if (r1.marker != null && r2.track != null) {
|
||||
return 1;
|
||||
} else if (r1.track != null && r2.waypoint != null) {
|
||||
} else if (r1.track != null && r2.marker != null) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Finally, use arbitrary ordering, by ID.
|
||||
long id1 = r1.track != null ? r1.track.getId().getId() : r1.waypoint.getId().getId();
|
||||
long id2 = r2.track != null ? r2.track.getId().getId() : r2.waypoint.getId().getId();
|
||||
long id1 = r1.track != null ? r1.track.getId().getId() : r1.marker.getId().getId();
|
||||
long id2 = r2.track != null ? r2.track.getId().getId() : r2.marker.getId().getId();
|
||||
long idDiff = id2 - id1;
|
||||
return Long.signum(idDiff);
|
||||
};
|
||||
@@ -153,7 +153,7 @@ public class SearchEngine {
|
||||
TreeSet<ScoredResult> scoredResults = new TreeSet<>(SCORED_RESULT_COMPARATOR);
|
||||
|
||||
scoreTrackResults(retrieveTracks(query), query, scoredResults);
|
||||
scoreWaypointResults(retrieveWaypoints(query), query, scoredResults);
|
||||
scoreMarkersResults(retrieveMarkers(query), query, scoredResults);
|
||||
|
||||
return scoredResults;
|
||||
}
|
||||
@@ -186,33 +186,33 @@ public class SearchEngine {
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves waypoints matching the given query from the database.
|
||||
* Retrieves markers matching the given query from the database.
|
||||
*
|
||||
* @param query the query to retrieve for
|
||||
*/
|
||||
private List<Waypoint> retrieveWaypoints(SearchQuery query) {
|
||||
ArrayList<Waypoint> waypoints = new ArrayList<>();
|
||||
private List<Marker> retrieveMarkers(SearchQuery query) {
|
||||
ArrayList<Marker> markers = new ArrayList<>();
|
||||
|
||||
String queryLikeSelection2 = "%" + query.textQuery + "%";
|
||||
String[] waypointSelectionArgs = new String[]{
|
||||
String[] markersSelectionArgs = new String[]{
|
||||
queryLikeSelection2,
|
||||
queryLikeSelection2,
|
||||
queryLikeSelection2
|
||||
};
|
||||
|
||||
try (Cursor cursor = providerUtils.getWaypointCursor(WAYPOINT_SELECTION_QUERY, waypointSelectionArgs, WAYPOINT_SELECTION_ORDER, MAX_SCORED_WAYPOINTS)) {
|
||||
try (Cursor cursor = providerUtils.getMarkerCursor(MARKER_SELECTION_QUERY, markersSelectionArgs, MARKER_SELECTION_ORDER, MAX_SCORED_MARKERS)) {
|
||||
if (cursor != null) {
|
||||
waypoints.ensureCapacity(cursor.getCount());
|
||||
markers.ensureCapacity(cursor.getCount());
|
||||
while (cursor.moveToNext()) {
|
||||
Waypoint waypoint = providerUtils.createWaypoint(cursor);
|
||||
if (LocationUtils.isValidLocation(waypoint.getLocation())) {
|
||||
waypoints.add(waypoint);
|
||||
Marker marker = providerUtils.createMarker(cursor);
|
||||
if (LocationUtils.isValidLocation(marker.getLocation())) {
|
||||
markers.add(marker);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return waypoints;
|
||||
return markers;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -258,40 +258,40 @@ public class SearchEngine {
|
||||
}
|
||||
|
||||
/**
|
||||
* Scores a collection of waypoint results.
|
||||
* Scores a collection of marker results.
|
||||
*
|
||||
* @param waypoints the results to score
|
||||
* @param query the query to score for
|
||||
* @param output the collection to fill with scored results
|
||||
* @param markers the results to score
|
||||
* @param query the query to score for
|
||||
* @param output the collection to fill with scored results
|
||||
*/
|
||||
private void scoreWaypointResults(Collection<Waypoint> waypoints, SearchQuery query, Collection<ScoredResult> output) {
|
||||
for (Waypoint waypoint : waypoints) {
|
||||
private void scoreMarkersResults(Collection<Marker> markers, SearchQuery query, Collection<ScoredResult> output) {
|
||||
for (Marker marker : markers) {
|
||||
// Calculate the score.
|
||||
double score = scoreWaypointResult(query, waypoint);
|
||||
double score = scoreMarkerResult(query, marker);
|
||||
|
||||
// Add to the output.
|
||||
output.add(new ScoredResult(waypoint, score));
|
||||
output.add(new ScoredResult(marker, score));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Scores a single waypoint result.
|
||||
* Scores a single marker result.
|
||||
*
|
||||
* @param query the query to score for
|
||||
* @param waypoint the results to score
|
||||
* @return the score for the waypoint
|
||||
* @param query the query to score for
|
||||
* @param marker the results to score
|
||||
* @return the score for the marker
|
||||
*/
|
||||
private double scoreWaypointResult(SearchQuery query, Waypoint waypoint) {
|
||||
private double scoreMarkerResult(SearchQuery query, Marker marker) {
|
||||
double score = 1.0;
|
||||
|
||||
Location location = waypoint.getLocation();
|
||||
score *= getTitleBoost(query, waypoint.getName(), waypoint.getDescription(), waypoint.getCategory());
|
||||
Location location = marker.getLocation();
|
||||
score *= getTitleBoost(query, marker.getName(), marker.getDescription(), marker.getCategory());
|
||||
score *= getDistanceBoost(query, location.getLatitude(), location.getLongitude());
|
||||
score *= getTimeBoost(query, location.getTime());
|
||||
|
||||
// Score waypoints in the currently-selected track higher (searching inside the current track).
|
||||
if (waypoint.getTrackId() != null && waypoint.getTrackId().equals(query.currentTrackId)) {
|
||||
score *= CURRENT_TRACK_WAYPOINT_PROMOTION;
|
||||
// Score markers in the currently-selected track higher (searching inside the current track).
|
||||
if (marker.getTrackId() != null && marker.getTrackId().equals(query.currentTrackId)) {
|
||||
score *= CURRENT_TRACK_MARKER_PROMOTION;
|
||||
}
|
||||
|
||||
return score;
|
||||
@@ -301,9 +301,9 @@ public class SearchEngine {
|
||||
* Calculates the boosting of the score due to the field(s) in which the match occured.
|
||||
*
|
||||
* @param query the query to boost for
|
||||
* @param name the name of the track or waypoint
|
||||
* @param description the description of the track or waypoint
|
||||
* @param category the category of the track or waypoint
|
||||
* @param name the name of the track or marker
|
||||
* @param description the description of the track or marker
|
||||
* @param category the category of the track or marker
|
||||
* @return the total boost to be applied to the result
|
||||
*/
|
||||
private double getTitleBoost(SearchQuery query, String name, String description, String category) {
|
||||
@@ -398,18 +398,18 @@ public class SearchEngine {
|
||||
*/
|
||||
public static class ScoredResult {
|
||||
public final Track track;
|
||||
public final Waypoint waypoint;
|
||||
public final Marker marker;
|
||||
final double score;
|
||||
|
||||
ScoredResult(Track track, double score) {
|
||||
this.track = track;
|
||||
this.waypoint = null;
|
||||
this.marker = null;
|
||||
this.score = score;
|
||||
}
|
||||
|
||||
ScoredResult(Waypoint waypoint, double score) {
|
||||
ScoredResult(Marker marker, double score) {
|
||||
this.track = null;
|
||||
this.waypoint = waypoint;
|
||||
this.marker = marker;
|
||||
this.score = score;
|
||||
}
|
||||
|
||||
@@ -418,7 +418,7 @@ public class SearchEngine {
|
||||
public String toString() {
|
||||
return "ScoredResult ["
|
||||
+ (track != null ? ("trackId=" + track.getId().getId() + ", ") : "")
|
||||
+ (waypoint != null ? ("wptId=" + waypoint.getId().getId() + ", ") : "")
|
||||
+ (marker != null ? ("wptId=" + marker.getId().getId() + ", ") : "")
|
||||
+ "score=" + score + "]";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,12 +32,12 @@ import java.util.Collections;
|
||||
import java.util.Set;
|
||||
|
||||
import de.dennisguse.opentracks.R;
|
||||
import de.dennisguse.opentracks.content.data.Marker;
|
||||
import de.dennisguse.opentracks.content.data.MarkerColumns;
|
||||
import de.dennisguse.opentracks.content.data.Track;
|
||||
import de.dennisguse.opentracks.content.data.TrackPoint;
|
||||
import de.dennisguse.opentracks.content.data.TrackPointsColumns;
|
||||
import de.dennisguse.opentracks.content.data.TracksColumns;
|
||||
import de.dennisguse.opentracks.content.data.Waypoint;
|
||||
import de.dennisguse.opentracks.content.data.WaypointsColumns;
|
||||
import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
|
||||
import de.dennisguse.opentracks.content.provider.TrackPointIterator;
|
||||
import de.dennisguse.opentracks.util.LocationUtils;
|
||||
@@ -58,14 +58,14 @@ public class TrackDataHub implements SharedPreferences.OnSharedPreferenceChangeL
|
||||
* We may display more than this number of points.
|
||||
*/
|
||||
@Deprecated
|
||||
private static final int TARGET_DISPLAYED_TRACK_POINTS = 5000;
|
||||
private static final int TARGET_DISPLAYED_TRACKPOINTS = 5000;
|
||||
|
||||
/**
|
||||
* Maximum number of waypoints to displayed.
|
||||
* Maximum number of markers to displayed.
|
||||
*/
|
||||
@VisibleForTesting
|
||||
@Deprecated
|
||||
private static final int MAX_DISPLAYED_WAYPOINTS = 128;
|
||||
private static final int MAX_DISPLAYED_MARKERS = 128;
|
||||
|
||||
private static final String TAG = TrackDataHub.class.getSimpleName();
|
||||
|
||||
@@ -90,11 +90,11 @@ public class TrackDataHub implements SharedPreferences.OnSharedPreferenceChangeL
|
||||
|
||||
// Registered listeners
|
||||
private ContentObserver tracksTableObserver;
|
||||
private ContentObserver waypointsTableObserver;
|
||||
private ContentObserver markersTableObserver;
|
||||
private ContentObserver trackPointsTableObserver;
|
||||
|
||||
public TrackDataHub(Context context) {
|
||||
this(context, new TrackDataManager(), new ContentProviderUtils(context), TARGET_DISPLAYED_TRACK_POINTS);
|
||||
this(context, new TrackDataManager(), new ContentProviderUtils(context), TARGET_DISPLAYED_TRACKPOINTS);
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
@@ -126,13 +126,13 @@ public class TrackDataHub implements SharedPreferences.OnSharedPreferenceChangeL
|
||||
};
|
||||
contentResolver.registerContentObserver(TracksColumns.CONTENT_URI, false, tracksTableObserver);
|
||||
|
||||
waypointsTableObserver = new ContentObserver(handler) {
|
||||
markersTableObserver = new ContentObserver(handler) {
|
||||
@Override
|
||||
public void onChange(boolean selfChange) {
|
||||
notifyWaypointsTableUpdate(trackDataManager.getListenerWaypoints());
|
||||
notifyMarkersTableUpdate(trackDataManager.getListenerMarkers());
|
||||
}
|
||||
};
|
||||
contentResolver.registerContentObserver(WaypointsColumns.CONTENT_URI, false, waypointsTableObserver);
|
||||
contentResolver.registerContentObserver(MarkerColumns.CONTENT_URI, false, markersTableObserver);
|
||||
|
||||
trackPointsTableObserver = new ContentObserver(handler) {
|
||||
@Override
|
||||
@@ -165,7 +165,7 @@ public class TrackDataHub implements SharedPreferences.OnSharedPreferenceChangeL
|
||||
//Unregister listeners
|
||||
ContentResolver contentResolver = context.getContentResolver();
|
||||
contentResolver.unregisterContentObserver(tracksTableObserver);
|
||||
contentResolver.unregisterContentObserver(waypointsTableObserver);
|
||||
contentResolver.unregisterContentObserver(markersTableObserver);
|
||||
contentResolver.unregisterContentObserver(trackPointsTableObserver);
|
||||
|
||||
if (handlerThread != null) {
|
||||
@@ -191,9 +191,9 @@ public class TrackDataHub implements SharedPreferences.OnSharedPreferenceChangeL
|
||||
*
|
||||
* @param trackDataListener the track data listener
|
||||
*/
|
||||
public void registerTrackDataListener(final TrackDataListener trackDataListener, final boolean tracksTable, final boolean waypointsTable, final boolean trackPointsTable_SampleIn, final boolean trackPointsTable_SampleOut) {
|
||||
public void registerTrackDataListener(final TrackDataListener trackDataListener, final boolean tracksTable, final boolean markersTable, final boolean trackPointsTable_SampleIn, final boolean trackPointsTable_SampleOut) {
|
||||
runInHandlerThread(() -> {
|
||||
trackDataManager.registerTrackDataListener(trackDataListener, tracksTable, waypointsTable, trackPointsTable_SampleIn, trackPointsTable_SampleOut);
|
||||
trackDataManager.registerTrackDataListener(trackDataListener, tracksTable, markersTable, trackPointsTable_SampleIn, trackPointsTable_SampleOut);
|
||||
if (started) {
|
||||
loadDataForListener(trackDataListener);
|
||||
}
|
||||
@@ -250,7 +250,7 @@ public class TrackDataHub implements SharedPreferences.OnSharedPreferenceChangeL
|
||||
listener.clearTrackPoints();
|
||||
}
|
||||
notifyTrackPointsTableUpdate(true, trackDataManager.getListenerTrackPoints_SampledIn(), trackDataManager.getListenerTrackPoints_SampledOut());
|
||||
notifyWaypointsTableUpdate(trackDataManager.getListenerWaypoints());
|
||||
notifyMarkersTableUpdate(trackDataManager.getListenerMarkers());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -277,8 +277,8 @@ public class TrackDataHub implements SharedPreferences.OnSharedPreferenceChangeL
|
||||
notifyTrackPointsTableUpdate(isOnlyListener, trackDataListeners, sampledOutListeners);
|
||||
}
|
||||
|
||||
if (trackDataManager.listensForWaypoints(trackDataListener)) {
|
||||
notifyWaypointsTableUpdate(trackDataListeners);
|
||||
if (trackDataManager.listensForMarkers(trackDataListener)) {
|
||||
notifyMarkersTableUpdate(trackDataListeners);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -298,36 +298,36 @@ public class TrackDataHub implements SharedPreferences.OnSharedPreferenceChangeL
|
||||
}
|
||||
|
||||
/**
|
||||
* Notifies waypoint table update.
|
||||
* Currently, reloads all the waypoints up to {@link #MAX_DISPLAYED_WAYPOINTS}. To be run in the {@link #handler} thread.
|
||||
* Notifies marker table update.
|
||||
* Currently, reloads all the markers up to {@link #MAX_DISPLAYED_MARKERS}. To be run in the {@link #handler} thread.
|
||||
*
|
||||
* @param trackDataListeners the track data listeners to notify
|
||||
*/
|
||||
private void notifyWaypointsTableUpdate(Set<TrackDataListener> trackDataListeners) {
|
||||
private void notifyMarkersTableUpdate(Set<TrackDataListener> trackDataListeners) {
|
||||
if (trackDataListeners.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (TrackDataListener trackDataListener : trackDataListeners) {
|
||||
trackDataListener.clearWaypoints();
|
||||
trackDataListener.clearMarkers();
|
||||
}
|
||||
|
||||
try (Cursor cursor = contentProviderUtils.getWaypointCursor(selectedTrackId, null, MAX_DISPLAYED_WAYPOINTS)) {
|
||||
try (Cursor cursor = contentProviderUtils.getMarkerCursor(selectedTrackId, null, MAX_DISPLAYED_MARKERS)) {
|
||||
if (cursor != null && cursor.moveToFirst()) {
|
||||
do {
|
||||
Waypoint waypoint = contentProviderUtils.createWaypoint(cursor);
|
||||
if (!LocationUtils.isValidLocation(waypoint.getLocation())) {
|
||||
Marker marker = contentProviderUtils.createMarker(cursor);
|
||||
if (!LocationUtils.isValidLocation(marker.getLocation())) {
|
||||
continue;
|
||||
}
|
||||
for (TrackDataListener trackDataListener : trackDataListeners) {
|
||||
trackDataListener.onNewWaypoint(waypoint);
|
||||
trackDataListener.onNewMarker(marker);
|
||||
}
|
||||
} while (cursor.moveToNext());
|
||||
}
|
||||
}
|
||||
|
||||
for (TrackDataListener trackDataListener : trackDataListeners) {
|
||||
trackDataListener.onNewWaypointsDone();
|
||||
trackDataListener.onNewMarkersDone();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -16,9 +16,9 @@
|
||||
|
||||
package de.dennisguse.opentracks.content;
|
||||
|
||||
import de.dennisguse.opentracks.content.data.Marker;
|
||||
import de.dennisguse.opentracks.content.data.Track;
|
||||
import de.dennisguse.opentracks.content.data.TrackPoint;
|
||||
import de.dennisguse.opentracks.content.data.Waypoint;
|
||||
|
||||
/**
|
||||
* Listener for track data changes.
|
||||
@@ -60,20 +60,20 @@ public interface TrackDataListener {
|
||||
void onNewTrackPointsDone();
|
||||
|
||||
/**
|
||||
* Called to clear previously sent waypoints.
|
||||
* Called to clear previously sent markers.
|
||||
*/
|
||||
void clearWaypoints();
|
||||
void clearMarkers();
|
||||
|
||||
/**
|
||||
* Called when a new waypoint is read.
|
||||
* Called when a new marker is read.
|
||||
*
|
||||
* @param waypoint the waypoint
|
||||
* @param marker the marker
|
||||
*/
|
||||
void onNewWaypoint(Waypoint waypoint);
|
||||
void onNewMarker(Marker marker);
|
||||
|
||||
/**
|
||||
* Called when finish sending new waypoints.
|
||||
* This gets called after every batch of calls to {@link #clearWaypoints()} and {@link #onNewWaypoint(Waypoint)}.
|
||||
* Called when finish sending new markers.
|
||||
* This gets called after every batch of calls to {@link #clearMarkers()} and {@link #onNewMarker(Marker)}.
|
||||
*/
|
||||
void onNewWaypointsDone();
|
||||
void onNewMarkersDone();
|
||||
}
|
||||
|
||||
@@ -29,32 +29,32 @@ class TrackDataManager {
|
||||
private static final String TAG = TrackDataManager.class.getSimpleName();
|
||||
|
||||
private final Set<TrackDataListener> dataListenerTracks = new HashSet<>();
|
||||
private final Set<TrackDataListener> dataListenerWaypoints = new HashSet<>();
|
||||
private final Set<TrackDataListener> dataListenerMarkers = new HashSet<>();
|
||||
private final Set<TrackDataListener> dataListenerTrackPoints_SampledIn = new HashSet<>();
|
||||
private final Set<TrackDataListener> dataListenerTrackPoints_SampledOut = new HashSet<>();
|
||||
|
||||
void registerTrackDataListener(final TrackDataListener trackDataListener, boolean tracksTable, boolean waypointsTable, boolean trackPointsTable_SampleIn, boolean trackPointsTable_SampleOut) {
|
||||
void registerTrackDataListener(final TrackDataListener trackDataListener, boolean tracksTable, boolean markersTable, boolean trackPointsTable_SampleIn, boolean trackPointsTable_SampleOut) {
|
||||
if (tracksTable) dataListenerTracks.add(trackDataListener);
|
||||
if (waypointsTable) dataListenerWaypoints.add(trackDataListener);
|
||||
if (markersTable) dataListenerMarkers.add(trackDataListener);
|
||||
if (trackPointsTable_SampleIn) dataListenerTrackPoints_SampledIn.add(trackDataListener);
|
||||
if (trackPointsTable_SampleOut) dataListenerTrackPoints_SampledOut.add(trackDataListener);
|
||||
}
|
||||
|
||||
void unregisterTrackDataListener(TrackDataListener trackDataListener) {
|
||||
dataListenerTracks.add(trackDataListener);
|
||||
dataListenerWaypoints.add(trackDataListener);
|
||||
dataListenerMarkers.add(trackDataListener);
|
||||
dataListenerTrackPoints_SampledIn.add(trackDataListener);
|
||||
dataListenerTrackPoints_SampledOut.add(trackDataListener);
|
||||
}
|
||||
|
||||
boolean hasListeners() {
|
||||
return dataListenerTracks.size() + dataListenerWaypoints.size() + dataListenerTrackPoints_SampledIn.size() + dataListenerTrackPoints_SampledOut.size() > 0;
|
||||
return dataListenerTracks.size() + dataListenerMarkers.size() + dataListenerTrackPoints_SampledIn.size() + dataListenerTrackPoints_SampledOut.size() > 0;
|
||||
}
|
||||
|
||||
int getNumberOfListeners() {
|
||||
Set<TrackDataListener> listener = new HashSet<>();
|
||||
listener.addAll(dataListenerTracks);
|
||||
listener.addAll(dataListenerWaypoints);
|
||||
listener.addAll(dataListenerMarkers);
|
||||
listener.addAll(dataListenerTrackPoints_SampledIn);
|
||||
listener.addAll(dataListenerTrackPoints_SampledOut);
|
||||
|
||||
@@ -65,8 +65,8 @@ class TrackDataManager {
|
||||
return dataListenerTracks.contains(listener);
|
||||
}
|
||||
|
||||
boolean listensForWaypoints(TrackDataListener listener) {
|
||||
return dataListenerWaypoints.contains(listener);
|
||||
boolean listensForMarkers(TrackDataListener listener) {
|
||||
return dataListenerMarkers.contains(listener);
|
||||
}
|
||||
|
||||
boolean listensForTrackPoints_SampledIn(TrackDataListener listener) {
|
||||
@@ -81,8 +81,8 @@ class TrackDataManager {
|
||||
return dataListenerTracks;
|
||||
}
|
||||
|
||||
Set<TrackDataListener> getListenerWaypoints() {
|
||||
return dataListenerWaypoints;
|
||||
Set<TrackDataListener> getListenerMarkers() {
|
||||
return dataListenerMarkers;
|
||||
}
|
||||
|
||||
Set<TrackDataListener> getListenerTrackPoints_SampledIn() {
|
||||
|
||||
+4
-6
@@ -30,12 +30,10 @@ import java.util.Objects;
|
||||
import de.dennisguse.opentracks.util.PreferencesUtils;
|
||||
|
||||
/**
|
||||
* A waypoint.
|
||||
*
|
||||
* @author Leif Hendrik Wilden
|
||||
* @author Rodrigo Damazio
|
||||
*/
|
||||
public final class Waypoint {
|
||||
public final class Marker {
|
||||
|
||||
private Id id;
|
||||
private String name = "";
|
||||
@@ -50,15 +48,15 @@ public final class Waypoint {
|
||||
private String photoUrl = "";
|
||||
|
||||
@VisibleForTesting
|
||||
public Waypoint(@NonNull TrackPoint trackPoint) {
|
||||
public Marker(@NonNull TrackPoint trackPoint) {
|
||||
this.location = trackPoint.getLocation();
|
||||
}
|
||||
|
||||
public Waypoint(@NonNull Location location) {
|
||||
public Marker(@NonNull Location location) {
|
||||
this.location = location;
|
||||
}
|
||||
|
||||
public Waypoint(String name, String description, String category, String icon, @NonNull Track.Id trackId, double length, long duration, @NonNull Location location, String photoUrl) {
|
||||
public Marker(String name, String description, String category, String icon, @NonNull Track.Id trackId, double length, long duration, @NonNull Location location, String photoUrl) {
|
||||
this.name = name;
|
||||
this.description = description;
|
||||
this.category = category;
|
||||
+1
-1
@@ -26,7 +26,7 @@ import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
|
||||
*
|
||||
* @author Leif Hendrik Wilden
|
||||
*/
|
||||
public interface WaypointsColumns extends BaseColumns {
|
||||
public interface MarkerColumns extends BaseColumns {
|
||||
|
||||
String TABLE_NAME = "waypoints";
|
||||
Uri CONTENT_URI = Uri.parse(ContentProviderUtils.CONTENT_BASE_URI + "/" + TABLE_NAME);
|
||||
@@ -59,10 +59,12 @@ public class TrackPoint {
|
||||
location.setTime(time);
|
||||
}
|
||||
|
||||
@Deprecated //See #316
|
||||
public static TrackPoint createPause() {
|
||||
return createPauseWithTime(System.currentTimeMillis());
|
||||
}
|
||||
|
||||
@Deprecated //See #316
|
||||
public static TrackPoint createPauseWithTime(long time) {
|
||||
Location pause = new Location(LocationManager.GPS_PROVIDER);
|
||||
pause.setLongitude(0);
|
||||
@@ -71,10 +73,12 @@ public class TrackPoint {
|
||||
return new TrackPoint(pause);
|
||||
}
|
||||
|
||||
@Deprecated //See #316
|
||||
public static TrackPoint createResume() {
|
||||
return createResumeWithTime(System.currentTimeMillis());
|
||||
}
|
||||
|
||||
@Deprecated //See #316
|
||||
public static TrackPoint createResumeWithTime(long time) {
|
||||
Location resume = new Location(LocationManager.GPS_PROVIDER);
|
||||
resume.setLongitude(0);
|
||||
|
||||
+122
-154
@@ -40,12 +40,12 @@ import java.util.UUID;
|
||||
import de.dennisguse.opentracks.BuildConfig;
|
||||
import de.dennisguse.opentracks.android.ContentResolverWrapper;
|
||||
import de.dennisguse.opentracks.android.IContentResolver;
|
||||
import de.dennisguse.opentracks.content.data.Marker;
|
||||
import de.dennisguse.opentracks.content.data.MarkerColumns;
|
||||
import de.dennisguse.opentracks.content.data.Track;
|
||||
import de.dennisguse.opentracks.content.data.TrackPoint;
|
||||
import de.dennisguse.opentracks.content.data.TrackPointsColumns;
|
||||
import de.dennisguse.opentracks.content.data.TracksColumns;
|
||||
import de.dennisguse.opentracks.content.data.Waypoint;
|
||||
import de.dennisguse.opentracks.content.data.WaypointsColumns;
|
||||
import de.dennisguse.opentracks.stats.TrackStatistics;
|
||||
import de.dennisguse.opentracks.util.FileUtils;
|
||||
import de.dennisguse.opentracks.util.TrackUtils;
|
||||
@@ -69,8 +69,8 @@ public class ContentProviderUtils {
|
||||
// The base URI for the app's content provider.
|
||||
public static final String CONTENT_BASE_URI = "content://" + AUTHORITY_PACKAGE;
|
||||
|
||||
// Maximum number of waypoints that will be loaded at one time.
|
||||
public static final int MAX_LOADED_WAYPOINTS_POINTS = 10000;
|
||||
// Maximum number of markers that will be loaded at one time.
|
||||
public static final int MAX_LOADED_MARKERS = 10000;
|
||||
private static final String ID_SEPARATOR = ",";
|
||||
|
||||
private final IContentResolver contentResolver;
|
||||
@@ -89,13 +89,13 @@ public class ContentProviderUtils {
|
||||
}
|
||||
|
||||
/**
|
||||
* Clears a track: removes waypoints and trackPoints.
|
||||
* Clears a track: removes markers and trackPoints.
|
||||
* Only keeps the track id.
|
||||
*
|
||||
* @param trackId the track id
|
||||
*/
|
||||
public void clearTrack(Track.Id trackId) {
|
||||
deleteTrackPointsAndWaypoints(trackId);
|
||||
deleteTrackPointsAndMarkers(trackId);
|
||||
Track track = new Track();
|
||||
track.setId(trackId);
|
||||
updateTrack(track);
|
||||
@@ -176,7 +176,7 @@ public class ContentProviderUtils {
|
||||
@VisibleForTesting
|
||||
public void deleteAllTracks(Context context) {
|
||||
contentResolver.delete(TrackPointsColumns.CONTENT_URI_BY_ID, null, null);
|
||||
contentResolver.delete(WaypointsColumns.CONTENT_URI, null, null);
|
||||
contentResolver.delete(MarkerColumns.CONTENT_URI, null, null);
|
||||
// Delete tracks last since it triggers a database vaccum call
|
||||
contentResolver.delete(TracksColumns.CONTENT_URI, null, null);
|
||||
|
||||
@@ -193,7 +193,7 @@ public class ContentProviderUtils {
|
||||
if (trackId == null) {
|
||||
return;
|
||||
}
|
||||
deleteTrackPointsAndWaypoints(trackId);
|
||||
deleteTrackPointsAndMarkers(trackId);
|
||||
|
||||
// Delete track folder resources.
|
||||
FileUtils.deleteDirectoryRecurse(FileUtils.getPhotoDir(context, trackId));
|
||||
@@ -202,16 +202,11 @@ public class ContentProviderUtils {
|
||||
contentResolver.delete(TracksColumns.CONTENT_URI, TracksColumns._ID + "=?", new String[]{Long.toString(trackId.getId())});
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes trackPoints and waypoints of a track.
|
||||
*
|
||||
* @param trackId the track id
|
||||
*/
|
||||
private void deleteTrackPointsAndWaypoints(@NonNull Track.Id trackId) {
|
||||
private void deleteTrackPointsAndMarkers(@NonNull Track.Id trackId) {
|
||||
String[] selectionArgs = new String[]{Long.toString(trackId.getId())};
|
||||
|
||||
contentResolver.delete(TrackPointsColumns.CONTENT_URI_BY_ID, TrackPointsColumns.TRACKID + "=?", selectionArgs);
|
||||
contentResolver.delete(WaypointsColumns.CONTENT_URI, WaypointsColumns.TRACKID + "=?", selectionArgs);
|
||||
contentResolver.delete(MarkerColumns.CONTENT_URI, MarkerColumns.TRACKID + "=?", selectionArgs);
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
@@ -338,28 +333,22 @@ public class ContentProviderUtils {
|
||||
return values;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Creates a waypoint from a cursor.
|
||||
*
|
||||
* @param cursor the cursor pointing to the waypoint
|
||||
*/
|
||||
public Waypoint createWaypoint(Cursor cursor) {
|
||||
int idIndex = cursor.getColumnIndexOrThrow(WaypointsColumns._ID);
|
||||
int nameIndex = cursor.getColumnIndexOrThrow(WaypointsColumns.NAME);
|
||||
int descriptionIndex = cursor.getColumnIndexOrThrow(WaypointsColumns.DESCRIPTION);
|
||||
int categoryIndex = cursor.getColumnIndexOrThrow(WaypointsColumns.CATEGORY);
|
||||
int iconIndex = cursor.getColumnIndexOrThrow(WaypointsColumns.ICON);
|
||||
int trackIdIndex = cursor.getColumnIndexOrThrow(WaypointsColumns.TRACKID);
|
||||
int lengthIndex = cursor.getColumnIndexOrThrow(WaypointsColumns.LENGTH);
|
||||
int durationIndex = cursor.getColumnIndexOrThrow(WaypointsColumns.DURATION);
|
||||
int longitudeIndex = cursor.getColumnIndexOrThrow(WaypointsColumns.LONGITUDE);
|
||||
int latitudeIndex = cursor.getColumnIndexOrThrow(WaypointsColumns.LATITUDE);
|
||||
int timeIndex = cursor.getColumnIndexOrThrow(WaypointsColumns.TIME);
|
||||
int altitudeIndex = cursor.getColumnIndexOrThrow(WaypointsColumns.ALTITUDE);
|
||||
int accuracyIndex = cursor.getColumnIndexOrThrow(WaypointsColumns.ACCURACY);
|
||||
int bearingIndex = cursor.getColumnIndexOrThrow(WaypointsColumns.BEARING);
|
||||
int photoUrlIndex = cursor.getColumnIndexOrThrow(WaypointsColumns.PHOTOURL);
|
||||
public Marker createMarker(Cursor cursor) {
|
||||
int idIndex = cursor.getColumnIndexOrThrow(MarkerColumns._ID);
|
||||
int nameIndex = cursor.getColumnIndexOrThrow(MarkerColumns.NAME);
|
||||
int descriptionIndex = cursor.getColumnIndexOrThrow(MarkerColumns.DESCRIPTION);
|
||||
int categoryIndex = cursor.getColumnIndexOrThrow(MarkerColumns.CATEGORY);
|
||||
int iconIndex = cursor.getColumnIndexOrThrow(MarkerColumns.ICON);
|
||||
int trackIdIndex = cursor.getColumnIndexOrThrow(MarkerColumns.TRACKID);
|
||||
int lengthIndex = cursor.getColumnIndexOrThrow(MarkerColumns.LENGTH);
|
||||
int durationIndex = cursor.getColumnIndexOrThrow(MarkerColumns.DURATION);
|
||||
int longitudeIndex = cursor.getColumnIndexOrThrow(MarkerColumns.LONGITUDE);
|
||||
int latitudeIndex = cursor.getColumnIndexOrThrow(MarkerColumns.LATITUDE);
|
||||
int timeIndex = cursor.getColumnIndexOrThrow(MarkerColumns.TIME);
|
||||
int altitudeIndex = cursor.getColumnIndexOrThrow(MarkerColumns.ALTITUDE);
|
||||
int accuracyIndex = cursor.getColumnIndexOrThrow(MarkerColumns.ACCURACY);
|
||||
int bearingIndex = cursor.getColumnIndexOrThrow(MarkerColumns.BEARING);
|
||||
int photoUrlIndex = cursor.getColumnIndexOrThrow(MarkerColumns.PHOTOURL);
|
||||
|
||||
Location location = new Location("");
|
||||
if (!cursor.isNull(longitudeIndex) && !cursor.isNull(latitudeIndex)) {
|
||||
@@ -379,59 +368,56 @@ public class ContentProviderUtils {
|
||||
location.setBearing(cursor.getFloat(bearingIndex));
|
||||
}
|
||||
|
||||
Waypoint waypoint = new Waypoint(location);
|
||||
Marker marker = new Marker(location);
|
||||
|
||||
if (!cursor.isNull(idIndex)) {
|
||||
waypoint.setId(new Waypoint.Id(cursor.getLong(idIndex)));
|
||||
marker.setId(new Marker.Id(cursor.getLong(idIndex)));
|
||||
}
|
||||
if (!cursor.isNull(nameIndex)) {
|
||||
waypoint.setName(cursor.getString(nameIndex));
|
||||
marker.setName(cursor.getString(nameIndex));
|
||||
}
|
||||
if (!cursor.isNull(descriptionIndex)) {
|
||||
waypoint.setDescription(cursor.getString(descriptionIndex));
|
||||
marker.setDescription(cursor.getString(descriptionIndex));
|
||||
}
|
||||
if (!cursor.isNull(categoryIndex)) {
|
||||
waypoint.setCategory(cursor.getString(categoryIndex));
|
||||
marker.setCategory(cursor.getString(categoryIndex));
|
||||
}
|
||||
if (!cursor.isNull(iconIndex)) {
|
||||
waypoint.setIcon(cursor.getString(iconIndex));
|
||||
marker.setIcon(cursor.getString(iconIndex));
|
||||
}
|
||||
if (!cursor.isNull(trackIdIndex)) {
|
||||
waypoint.setTrackId(new Track.Id(cursor.getLong(trackIdIndex)));
|
||||
marker.setTrackId(new Track.Id(cursor.getLong(trackIdIndex)));
|
||||
}
|
||||
if (!cursor.isNull(lengthIndex)) {
|
||||
waypoint.setLength(cursor.getFloat(lengthIndex));
|
||||
marker.setLength(cursor.getFloat(lengthIndex));
|
||||
}
|
||||
if (!cursor.isNull(durationIndex)) {
|
||||
waypoint.setDuration(cursor.getLong(durationIndex));
|
||||
marker.setDuration(cursor.getLong(durationIndex));
|
||||
}
|
||||
|
||||
if (!cursor.isNull(photoUrlIndex)) {
|
||||
waypoint.setPhotoUrl(cursor.getString(photoUrlIndex));
|
||||
marker.setPhotoUrl(cursor.getString(photoUrlIndex));
|
||||
}
|
||||
return waypoint;
|
||||
return marker;
|
||||
}
|
||||
|
||||
public void deleteWaypoint(Context context, Waypoint.Id waypointId) {
|
||||
final Waypoint waypoint = getWaypoint(waypointId);
|
||||
deleteWaypointPhoto(context, waypoint);
|
||||
contentResolver.delete(WaypointsColumns.CONTENT_URI, WaypointsColumns._ID + "=?", new String[]{Long.toString(waypointId.getId())});
|
||||
public void deleteMarker(Context context, Marker.Id markerId) {
|
||||
final Marker marker = getMarker(markerId);
|
||||
deleteMarkerPhoto(context, marker);
|
||||
contentResolver.delete(MarkerColumns.CONTENT_URI, MarkerColumns._ID + "=?", new String[]{Long.toString(markerId.getId())});
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the next waypoint number.
|
||||
*
|
||||
* @param trackId the track id
|
||||
* @return -1 if not able to get the next waypoint number.
|
||||
* @return -1 if not able to get the next marker number.
|
||||
*/
|
||||
public int getNextWaypointNumber(Track.Id trackId) {
|
||||
public int getNextMarkerNumber(Track.Id trackId) {
|
||||
if (!trackId.isValid()) {
|
||||
return -1;
|
||||
}
|
||||
String[] projection = {WaypointsColumns._ID};
|
||||
String selection = WaypointsColumns.TRACKID + "=?";
|
||||
String[] projection = {MarkerColumns._ID};
|
||||
String selection = MarkerColumns.TRACKID + "=?";
|
||||
String[] selectionArgs = new String[]{Long.toString(trackId.getId())};
|
||||
try (Cursor cursor = getWaypointCursor(projection, selection, selectionArgs, WaypointsColumns._ID, -1)) {
|
||||
try (Cursor cursor = getMarkerCursor(projection, selection, selectionArgs, MarkerColumns._ID, -1)) {
|
||||
if (cursor != null) {
|
||||
return cursor.getCount();
|
||||
}
|
||||
@@ -439,99 +425,94 @@ public class ContentProviderUtils {
|
||||
return -1;
|
||||
}
|
||||
|
||||
public Waypoint getWaypoint(Waypoint.Id waypointId) {
|
||||
if (!waypointId.isValid()) {
|
||||
public Marker getMarker(Marker.Id markerId) {
|
||||
if (!markerId.isValid()) {
|
||||
return null;
|
||||
}
|
||||
try (Cursor cursor = getWaypointCursor(null, WaypointsColumns._ID + "=?",
|
||||
new String[]{Long.toString(waypointId.getId())}, WaypointsColumns._ID, 1)) {
|
||||
try (Cursor cursor = getMarkerCursor(null, MarkerColumns._ID + "=?",
|
||||
new String[]{Long.toString(markerId.getId())}, MarkerColumns._ID, 1)) {
|
||||
if (cursor != null && cursor.moveToFirst()) {
|
||||
return createWaypoint(cursor);
|
||||
return createMarker(cursor);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a waypoint cursor.
|
||||
* he caller owns the returned cursor and is responsible for closing it.
|
||||
* The caller owns the returned cursor and is responsible for closing it.
|
||||
*
|
||||
* @param selection the selection. Can be null
|
||||
* @param selectionArgs the selection arguments. Can be null
|
||||
* @param sortOrder the sort order. Can be null
|
||||
* @param maxWaypoints the maximum number of waypoints to return. -1 for no limit
|
||||
* @param maxCount the maximum number of markers to return. -1 for no limit
|
||||
*/
|
||||
public Cursor getWaypointCursor(String selection, String[] selectionArgs, String sortOrder, int maxWaypoints) {
|
||||
return getWaypointCursor(null, selection, selectionArgs, sortOrder, maxWaypoints);
|
||||
public Cursor getMarkerCursor(String selection, String[] selectionArgs, String sortOrder, int maxCount) {
|
||||
return getMarkerCursor(null, selection, selectionArgs, sortOrder, maxCount);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a waypoint cursor for a track.
|
||||
* The caller owns the returned cursor and is responsible for closing it.
|
||||
*
|
||||
* @param trackId the track id
|
||||
* @param minWaypointId the minimum waypoint id. null to ignore
|
||||
* @param maxWaypoints the maximum number of waypoints to return. -1 for no limit
|
||||
* @param trackId the track id
|
||||
* @param minMarkerId the minimum marker id. null to ignore
|
||||
* @param maxCount the maximum number of markers to return. -1 for no limit
|
||||
*/
|
||||
public Cursor getWaypointCursor(Track.Id trackId, @Nullable Waypoint.Id minWaypointId, int maxWaypoints) {
|
||||
public Cursor getMarkerCursor(Track.Id trackId, @Nullable Marker.Id minMarkerId, int maxCount) {
|
||||
if (!trackId.isValid()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
String selection;
|
||||
String[] selectionArgs;
|
||||
if (minWaypointId != null && minWaypointId.isValid()) {
|
||||
selection = WaypointsColumns.TRACKID + "=? AND " + WaypointsColumns._ID + ">=?";
|
||||
selectionArgs = new String[]{Long.toString(trackId.getId()), Long.toString(minWaypointId.getId())};
|
||||
if (minMarkerId != null && minMarkerId.isValid()) {
|
||||
selection = MarkerColumns.TRACKID + "=? AND " + MarkerColumns._ID + ">=?";
|
||||
selectionArgs = new String[]{Long.toString(trackId.getId()), Long.toString(minMarkerId.getId())};
|
||||
} else {
|
||||
selection = WaypointsColumns.TRACKID + "=?";
|
||||
selection = MarkerColumns.TRACKID + "=?";
|
||||
selectionArgs = new String[]{Long.toString(trackId.getId())};
|
||||
}
|
||||
return getWaypointCursor(null, selection, selectionArgs, WaypointsColumns._ID, maxWaypoints);
|
||||
return getMarkerCursor(null, selection, selectionArgs, MarkerColumns._ID, maxCount);
|
||||
}
|
||||
|
||||
@Deprecated //TODO Move to test package
|
||||
@VisibleForTesting
|
||||
public List<Waypoint> getWaypoints(Track.Id trackId) {
|
||||
ArrayList<Waypoint> waypoints = new ArrayList<>();
|
||||
try (Cursor cursor = getWaypointCursor(trackId, null, -1)) {
|
||||
public List<Marker> getMarkers(Track.Id trackId) {
|
||||
ArrayList<Marker> markers = new ArrayList<>();
|
||||
try (Cursor cursor = getMarkerCursor(trackId, null, -1)) {
|
||||
if (cursor.moveToFirst()) {
|
||||
do {
|
||||
waypoints.add(createWaypoint(cursor));
|
||||
markers.add(createMarker(cursor));
|
||||
} while (cursor.moveToNext());
|
||||
}
|
||||
}
|
||||
return waypoints;
|
||||
return markers;
|
||||
}
|
||||
|
||||
public static Loader<Cursor> getWaypointsLoader(Context context, @Nullable Track.Id trackId) {
|
||||
final String[] PROJECTION = new String[]{WaypointsColumns._ID,
|
||||
WaypointsColumns.NAME, WaypointsColumns.DESCRIPTION, WaypointsColumns.CATEGORY,
|
||||
WaypointsColumns.TIME, WaypointsColumns.PHOTOURL,
|
||||
WaypointsColumns.LATITUDE, WaypointsColumns.LONGITUDE};
|
||||
public static Loader<Cursor> getMarkersLoader(Context context, @Nullable Track.Id trackId) {
|
||||
final String[] PROJECTION = new String[]{MarkerColumns._ID,
|
||||
MarkerColumns.NAME, MarkerColumns.DESCRIPTION, MarkerColumns.CATEGORY,
|
||||
MarkerColumns.TIME, MarkerColumns.PHOTOURL,
|
||||
MarkerColumns.LATITUDE, MarkerColumns.LONGITUDE};
|
||||
|
||||
if (trackId != null) {
|
||||
return new CursorLoader(context, WaypointsColumns.CONTENT_URI, PROJECTION,
|
||||
WaypointsColumns.TRACKID + "=?",
|
||||
return new CursorLoader(context, MarkerColumns.CONTENT_URI, PROJECTION,
|
||||
MarkerColumns.TRACKID + "=?",
|
||||
new String[]{String.valueOf(trackId.getId())}, null);
|
||||
} else {
|
||||
return new CursorLoader(context, WaypointsColumns.CONTENT_URI, PROJECTION, null, null, null);
|
||||
return new CursorLoader(context, MarkerColumns.CONTENT_URI, PROJECTION, null, null, null);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the number of waypoints for a track.
|
||||
*
|
||||
* @param trackId the track id
|
||||
*/
|
||||
public int getWaypointCount(Track.Id trackId) {
|
||||
@Deprecated //TODO Expose information via Cursor
|
||||
public int getMarkerCount(Track.Id trackId) {
|
||||
if (!trackId.isValid()) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
String[] projection = new String[]{"count(*) AS count"};
|
||||
String selection = WaypointsColumns.TRACKID + "=?";
|
||||
String selection = MarkerColumns.TRACKID + "=?";
|
||||
String[] selectionArgs = new String[]{Long.toString(trackId.getId())};
|
||||
try (Cursor cursor = contentResolver.query(WaypointsColumns.CONTENT_URI, projection, selection, selectionArgs, WaypointsColumns._ID)) {
|
||||
try (Cursor cursor = contentResolver.query(MarkerColumns.CONTENT_URI, projection, selection, selectionArgs, MarkerColumns._ID)) {
|
||||
if (cursor == null) {
|
||||
return 0;
|
||||
}
|
||||
@@ -541,26 +522,17 @@ public class ContentProviderUtils {
|
||||
}
|
||||
|
||||
/**
|
||||
* Inserts a waypoint.
|
||||
*
|
||||
* @param waypoint the waypoint
|
||||
* @return the content provider URI of the inserted waypoint.
|
||||
* @return the content provider URI of the inserted marker.
|
||||
*/
|
||||
public Uri insertWaypoint(@NonNull Waypoint waypoint) {
|
||||
waypoint.setId(null);
|
||||
return contentResolver.insert(WaypointsColumns.CONTENT_URI, createContentValues(waypoint));
|
||||
public Uri insertMarker(@NonNull Marker marker) {
|
||||
marker.setId(null);
|
||||
return contentResolver.insert(MarkerColumns.CONTENT_URI, createContentValues(marker));
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete waypoint's photo if any.
|
||||
*
|
||||
* @param context the context object.
|
||||
* @param waypoint the waypoint object.
|
||||
*/
|
||||
private void deleteWaypointPhoto(Context context, Waypoint waypoint) {
|
||||
if (waypoint != null && waypoint.hasPhoto()) {
|
||||
Uri uri = waypoint.getPhotoURI();
|
||||
File file = FileUtils.getPhotoFileIfExists(context, waypoint.getTrackId(), uri);
|
||||
private void deleteMarkerPhoto(Context context, Marker marker) {
|
||||
if (marker != null && marker.hasPhoto()) {
|
||||
Uri uri = marker.getPhotoURI();
|
||||
File file = FileUtils.getPhotoFileIfExists(context, marker.getTrackId(), uri);
|
||||
if (file.exists()) {
|
||||
File parent = file.getParentFile();
|
||||
file.delete();
|
||||
@@ -572,71 +544,67 @@ public class ContentProviderUtils {
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates a waypoint.
|
||||
* Returns true if successful.
|
||||
*
|
||||
* @param updatedWaypoint the waypoint with updated data.
|
||||
* @param updateMarker the marker with updated data.
|
||||
* @return true if successful.
|
||||
*/
|
||||
public boolean updateWaypoint(Context context, Waypoint updatedWaypoint) {
|
||||
Waypoint savedWaypoint = getWaypoint(updatedWaypoint.getId());
|
||||
if (!updatedWaypoint.hasPhoto()) {
|
||||
deleteWaypointPhoto(context, savedWaypoint);
|
||||
public boolean updateMarker(Context context, Marker updateMarker) {
|
||||
Marker savedMarker = getMarker(updateMarker.getId());
|
||||
if (!updateMarker.hasPhoto()) {
|
||||
deleteMarkerPhoto(context, savedMarker);
|
||||
}
|
||||
int rows = contentResolver.update(WaypointsColumns.CONTENT_URI, createContentValues(updatedWaypoint), WaypointsColumns._ID + "=?", new String[]{Long.toString(updatedWaypoint.getId().getId())});
|
||||
int rows = contentResolver.update(MarkerColumns.CONTENT_URI, createContentValues(updateMarker), MarkerColumns._ID + "=?", new String[]{Long.toString(updateMarker.getId().getId())});
|
||||
return rows == 1;
|
||||
}
|
||||
|
||||
ContentValues createContentValues(@NonNull Waypoint waypoint) {
|
||||
ContentValues createContentValues(@NonNull Marker marker) {
|
||||
ContentValues values = new ContentValues();
|
||||
|
||||
if (waypoint.getId() != null && waypoint.getId().isValid()) {
|
||||
values.put(WaypointsColumns._ID, waypoint.getId().getId());
|
||||
if (marker.getId() != null && marker.getId().isValid()) {
|
||||
values.put(MarkerColumns._ID, marker.getId().getId());
|
||||
}
|
||||
values.put(WaypointsColumns.NAME, waypoint.getName());
|
||||
values.put(WaypointsColumns.DESCRIPTION, waypoint.getDescription());
|
||||
values.put(WaypointsColumns.CATEGORY, waypoint.getCategory());
|
||||
values.put(WaypointsColumns.ICON, waypoint.getIcon());
|
||||
if (waypoint.getTrackId() != null) {
|
||||
values.put(WaypointsColumns.TRACKID, waypoint.getTrackId().getId());
|
||||
values.put(MarkerColumns.NAME, marker.getName());
|
||||
values.put(MarkerColumns.DESCRIPTION, marker.getDescription());
|
||||
values.put(MarkerColumns.CATEGORY, marker.getCategory());
|
||||
values.put(MarkerColumns.ICON, marker.getIcon());
|
||||
if (marker.getTrackId() != null) {
|
||||
values.put(MarkerColumns.TRACKID, marker.getTrackId().getId());
|
||||
}
|
||||
values.put(WaypointsColumns.LENGTH, waypoint.getLength());
|
||||
values.put(WaypointsColumns.DURATION, waypoint.getDuration());
|
||||
values.put(MarkerColumns.LENGTH, marker.getLength());
|
||||
values.put(MarkerColumns.DURATION, marker.getDuration());
|
||||
|
||||
Location location = waypoint.getLocation();
|
||||
values.put(WaypointsColumns.LONGITUDE, (int) (location.getLongitude() * 1E6));
|
||||
values.put(WaypointsColumns.LATITUDE, (int) (location.getLatitude() * 1E6));
|
||||
values.put(WaypointsColumns.TIME, location.getTime());
|
||||
Location location = marker.getLocation();
|
||||
values.put(MarkerColumns.LONGITUDE, (int) (location.getLongitude() * 1E6));
|
||||
values.put(MarkerColumns.LATITUDE, (int) (location.getLatitude() * 1E6));
|
||||
values.put(MarkerColumns.TIME, location.getTime());
|
||||
if (location.hasAltitude()) {
|
||||
values.put(WaypointsColumns.ALTITUDE, location.getAltitude());
|
||||
values.put(MarkerColumns.ALTITUDE, location.getAltitude());
|
||||
}
|
||||
if (location.hasAccuracy()) {
|
||||
values.put(WaypointsColumns.ACCURACY, location.getAccuracy());
|
||||
values.put(MarkerColumns.ACCURACY, location.getAccuracy());
|
||||
}
|
||||
if (location.hasBearing()) {
|
||||
values.put(WaypointsColumns.BEARING, location.getBearing());
|
||||
values.put(MarkerColumns.BEARING, location.getBearing());
|
||||
}
|
||||
|
||||
values.put(WaypointsColumns.PHOTOURL, waypoint.getPhotoUrl());
|
||||
values.put(MarkerColumns.PHOTOURL, marker.getPhotoUrl());
|
||||
return values;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a waypoint cursor.
|
||||
*
|
||||
* @param projection the projection
|
||||
* @param selection the selection
|
||||
* @param selectionArgs the selection args
|
||||
* @param sortOrder the sort order
|
||||
* @param maxWaypoints the maximum number of waypoints
|
||||
* @param maxCount the maximum number of markers
|
||||
*/
|
||||
private Cursor getWaypointCursor(String[] projection, String selection, String[] selectionArgs, String sortOrder, int maxWaypoints) {
|
||||
private Cursor getMarkerCursor(String[] projection, String selection, String[] selectionArgs, String sortOrder, int maxCount) {
|
||||
if (sortOrder == null) {
|
||||
sortOrder = WaypointsColumns._ID;
|
||||
sortOrder = MarkerColumns._ID;
|
||||
}
|
||||
if (maxWaypoints >= 0) {
|
||||
sortOrder += " LIMIT " + maxWaypoints;
|
||||
if (maxCount >= 0) {
|
||||
sortOrder += " LIMIT " + maxCount;
|
||||
}
|
||||
return contentResolver.query(WaypointsColumns.CONTENT_URI, projection, selection, selectionArgs, sortOrder);
|
||||
return contentResolver.query(MarkerColumns.CONTENT_URI, projection, selection, selectionArgs, sortOrder);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+18
-18
@@ -33,9 +33,9 @@ import android.util.Log;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
|
||||
import de.dennisguse.opentracks.content.data.MarkerColumns;
|
||||
import de.dennisguse.opentracks.content.data.TrackPointsColumns;
|
||||
import de.dennisguse.opentracks.content.data.TracksColumns;
|
||||
import de.dennisguse.opentracks.content.data.WaypointsColumns;
|
||||
|
||||
/**
|
||||
* A {@link ContentProvider} that handles access to track points, tracks, and waypoints tables.
|
||||
@@ -61,9 +61,9 @@ public class CustomContentProvider extends ContentProvider {
|
||||
uriMatcher.addURI(ContentProviderUtils.AUTHORITY_PACKAGE, TracksColumns.CONTENT_URI.getPath(), UrlType.TRACKS.ordinal());
|
||||
uriMatcher.addURI(ContentProviderUtils.AUTHORITY_PACKAGE, TracksColumns.CONTENT_URI.getPath() + "/*", UrlType.TRACKS_BY_ID.ordinal());
|
||||
|
||||
uriMatcher.addURI(ContentProviderUtils.AUTHORITY_PACKAGE, WaypointsColumns.CONTENT_URI.getPath(), UrlType.WAYPOINTS.ordinal());
|
||||
uriMatcher.addURI(ContentProviderUtils.AUTHORITY_PACKAGE, WaypointsColumns.CONTENT_URI.getPath() + "/#", UrlType.WAYPOINTS_BY_ID.ordinal());
|
||||
uriMatcher.addURI(ContentProviderUtils.AUTHORITY_PACKAGE, WaypointsColumns.CONTENT_URI_BY_TRACKID.getPath() + "/*", UrlType.WAYPOINTS_BY_TRACKID.ordinal());
|
||||
uriMatcher.addURI(ContentProviderUtils.AUTHORITY_PACKAGE, MarkerColumns.CONTENT_URI.getPath(), UrlType.WAYPOINTS.ordinal());
|
||||
uriMatcher.addURI(ContentProviderUtils.AUTHORITY_PACKAGE, MarkerColumns.CONTENT_URI.getPath() + "/#", UrlType.WAYPOINTS_BY_ID.ordinal());
|
||||
uriMatcher.addURI(ContentProviderUtils.AUTHORITY_PACKAGE, MarkerColumns.CONTENT_URI_BY_TRACKID.getPath() + "/*", UrlType.WAYPOINTS_BY_TRACKID.ordinal());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -101,7 +101,7 @@ public class CustomContentProvider extends ContentProvider {
|
||||
shouldVacuum = true;
|
||||
break;
|
||||
case WAYPOINTS:
|
||||
table = WaypointsColumns.TABLE_NAME;
|
||||
table = MarkerColumns.TABLE_NAME;
|
||||
break;
|
||||
default:
|
||||
throw new IllegalArgumentException("Unknown URL " + url);
|
||||
@@ -139,10 +139,10 @@ public class CustomContentProvider extends ContentProvider {
|
||||
case TRACKS_BY_ID:
|
||||
return TracksColumns.CONTENT_ITEMTYPE;
|
||||
case WAYPOINTS:
|
||||
return WaypointsColumns.CONTENT_TYPE;
|
||||
return MarkerColumns.CONTENT_TYPE;
|
||||
case WAYPOINTS_BY_ID:
|
||||
case WAYPOINTS_BY_TRACKID:
|
||||
return WaypointsColumns.CONTENT_ITEMTYPE;
|
||||
return MarkerColumns.CONTENT_ITEMTYPE;
|
||||
default:
|
||||
throw new IllegalArgumentException("Unknown URL " + url);
|
||||
}
|
||||
@@ -214,16 +214,16 @@ public class CustomContentProvider extends ContentProvider {
|
||||
queryBuilder.appendWhere(TracksColumns._ID + " IN (" + TextUtils.join(SQL_LIST_DELIMITER, ContentProviderUtils.parseTrackIdsFromUri(url)) + ")");
|
||||
break;
|
||||
case WAYPOINTS:
|
||||
queryBuilder.setTables(WaypointsColumns.TABLE_NAME);
|
||||
sortOrder = sort != null ? sort : WaypointsColumns.DEFAULT_SORT_ORDER;
|
||||
queryBuilder.setTables(MarkerColumns.TABLE_NAME);
|
||||
sortOrder = sort != null ? sort : MarkerColumns.DEFAULT_SORT_ORDER;
|
||||
break;
|
||||
case WAYPOINTS_BY_ID:
|
||||
queryBuilder.setTables(WaypointsColumns.TABLE_NAME);
|
||||
queryBuilder.appendWhere(WaypointsColumns._ID + "=" + ContentUris.parseId(url));
|
||||
queryBuilder.setTables(MarkerColumns.TABLE_NAME);
|
||||
queryBuilder.appendWhere(MarkerColumns._ID + "=" + ContentUris.parseId(url));
|
||||
break;
|
||||
case WAYPOINTS_BY_TRACKID:
|
||||
queryBuilder.setTables(WaypointsColumns.TABLE_NAME);
|
||||
queryBuilder.appendWhere(WaypointsColumns.TRACKID + " IN (" + TextUtils.join(SQL_LIST_DELIMITER, ContentProviderUtils.parseTrackIdsFromUri(url)) + ")");
|
||||
queryBuilder.setTables(MarkerColumns.TABLE_NAME);
|
||||
queryBuilder.appendWhere(MarkerColumns.TRACKID + " IN (" + TextUtils.join(SQL_LIST_DELIMITER, ContentProviderUtils.parseTrackIdsFromUri(url)) + ")");
|
||||
break;
|
||||
default:
|
||||
throw new IllegalArgumentException("Unknown url " + url);
|
||||
@@ -262,12 +262,12 @@ public class CustomContentProvider extends ContentProvider {
|
||||
}
|
||||
break;
|
||||
case WAYPOINTS:
|
||||
table = WaypointsColumns.TABLE_NAME;
|
||||
table = MarkerColumns.TABLE_NAME;
|
||||
whereClause = where;
|
||||
break;
|
||||
case WAYPOINTS_BY_ID:
|
||||
table = WaypointsColumns.TABLE_NAME;
|
||||
whereClause = WaypointsColumns._ID + "=" + ContentUris.parseId(url);
|
||||
table = MarkerColumns.TABLE_NAME;
|
||||
whereClause = MarkerColumns._ID + "=" + ContentUris.parseId(url);
|
||||
if (!TextUtils.isEmpty(where)) {
|
||||
whereClause += " AND (" + where + ")";
|
||||
}
|
||||
@@ -368,9 +368,9 @@ public class CustomContentProvider extends ContentProvider {
|
||||
* @param contentValues the content values
|
||||
*/
|
||||
private Uri insertWaypoint(Uri url, ContentValues contentValues) {
|
||||
long rowId = db.insert(WaypointsColumns.TABLE_NAME, WaypointsColumns._ID, contentValues);
|
||||
long rowId = db.insert(MarkerColumns.TABLE_NAME, MarkerColumns._ID, contentValues);
|
||||
if (rowId >= 0) {
|
||||
return ContentUris.appendId(WaypointsColumns.CONTENT_URI.buildUpon(), rowId).build();
|
||||
return ContentUris.appendId(MarkerColumns.CONTENT_URI.buildUpon(), rowId).build();
|
||||
}
|
||||
throw new SQLException("Failed to insert a waypoint " + url);
|
||||
}
|
||||
|
||||
@@ -11,10 +11,10 @@ import androidx.annotation.VisibleForTesting;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import de.dennisguse.opentracks.content.data.MarkerColumns;
|
||||
import de.dennisguse.opentracks.content.data.Track;
|
||||
import de.dennisguse.opentracks.content.data.TrackPointsColumns;
|
||||
import de.dennisguse.opentracks.content.data.TracksColumns;
|
||||
import de.dennisguse.opentracks.content.data.WaypointsColumns;
|
||||
import de.dennisguse.opentracks.util.UUIDUtils;
|
||||
|
||||
/**
|
||||
@@ -52,8 +52,8 @@ public class CustomSQLiteOpenHelper extends SQLiteOpenHelper {
|
||||
db.execSQL(TracksColumns.CREATE_TABLE);
|
||||
db.execSQL(TracksColumns.CREATE_TABLE_INDEX);
|
||||
|
||||
db.execSQL(WaypointsColumns.CREATE_TABLE);
|
||||
db.execSQL(WaypointsColumns.CREATE_TABLE_INDEX);
|
||||
db.execSQL(MarkerColumns.CREATE_TABLE);
|
||||
db.execSQL(MarkerColumns.CREATE_TABLE_INDEX);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -37,9 +37,9 @@ import de.dennisguse.opentracks.chart.ChartPoint;
|
||||
import de.dennisguse.opentracks.chart.ChartView;
|
||||
import de.dennisguse.opentracks.content.TrackDataHub;
|
||||
import de.dennisguse.opentracks.content.TrackDataListener;
|
||||
import de.dennisguse.opentracks.content.data.Marker;
|
||||
import de.dennisguse.opentracks.content.data.Track;
|
||||
import de.dennisguse.opentracks.content.data.TrackPoint;
|
||||
import de.dennisguse.opentracks.content.data.Waypoint;
|
||||
import de.dennisguse.opentracks.stats.TrackStatistics;
|
||||
import de.dennisguse.opentracks.stats.TrackStatisticsUpdater;
|
||||
import de.dennisguse.opentracks.util.LocationUtils;
|
||||
@@ -242,21 +242,21 @@ public class ChartFragment extends Fragment implements TrackDataListener {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clearWaypoints() {
|
||||
public void clearMarkers() {
|
||||
if (isResumed()) {
|
||||
chartView.clearWaypoints();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNewWaypoint(Waypoint waypoint) {
|
||||
if (isResumed() && waypoint != null && LocationUtils.isValidLocation(waypoint.getLocation())) {
|
||||
chartView.addWaypoint(waypoint);
|
||||
public void onNewMarker(Marker marker) {
|
||||
if (isResumed() && marker != null && LocationUtils.isValidLocation(marker.getLocation())) {
|
||||
chartView.addWaypoint(marker);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNewWaypointsDone() {
|
||||
public void onNewMarkersDone() {
|
||||
if (isResumed()) {
|
||||
runOnUiThread(updateChart);
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ import androidx.fragment.app.FragmentActivity;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
|
||||
import de.dennisguse.opentracks.R;
|
||||
import de.dennisguse.opentracks.content.data.Waypoint;
|
||||
import de.dennisguse.opentracks.content.data.Marker;
|
||||
import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
|
||||
import de.dennisguse.opentracks.util.DialogUtils;
|
||||
|
||||
@@ -42,7 +42,7 @@ public class DeleteMarkerDialogFragment extends DialogFragment {
|
||||
|
||||
private DeleteMarkerCaller caller;
|
||||
|
||||
public static void showDialog(FragmentManager fragmentManager, Waypoint.Id... waypointIds) {
|
||||
public static void showDialog(FragmentManager fragmentManager, Marker.Id... waypointIds) {
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putParcelableArray(KEY_MARKER_IDS, waypointIds);
|
||||
|
||||
@@ -64,23 +64,23 @@ public class DeleteMarkerDialogFragment extends DialogFragment {
|
||||
@Override
|
||||
@NonNull
|
||||
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
||||
final Waypoint.Id[] waypointIds = (Waypoint.Id[]) getArguments().getParcelableArray(KEY_MARKER_IDS);
|
||||
final Marker.Id[] markerIds = (Marker.Id[]) getArguments().getParcelableArray(KEY_MARKER_IDS);
|
||||
|
||||
final FragmentActivity fragmentActivity = getActivity();
|
||||
int titleId;
|
||||
int messageId;
|
||||
if (waypointIds == null) {
|
||||
if (markerIds == null) {
|
||||
titleId = R.string.generic_delete_all_confirm_title;
|
||||
messageId = R.string.marker_delete_all_confirm_message;
|
||||
} else {
|
||||
titleId = waypointIds.length > 1 ? R.string.generic_delete_selected_confirm_title : R.string.marker_delete_one_confirm_title;
|
||||
messageId = waypointIds.length > 1 ? R.string.marker_delete_multiple_confirm_message : R.string.marker_delete_one_confirm_message;
|
||||
titleId = markerIds.length > 1 ? R.string.generic_delete_selected_confirm_title : R.string.marker_delete_one_confirm_title;
|
||||
messageId = markerIds.length > 1 ? R.string.marker_delete_multiple_confirm_message : R.string.marker_delete_one_confirm_message;
|
||||
}
|
||||
return DialogUtils.createConfirmationDialog(
|
||||
fragmentActivity, titleId, getString(messageId), (dialog, which) -> new Thread(() -> {
|
||||
ContentProviderUtils contentProviderUtils = new ContentProviderUtils(fragmentActivity);
|
||||
for (Waypoint.Id waypointId : waypointIds) {
|
||||
contentProviderUtils.deleteWaypoint(getContext(), waypointId);
|
||||
for (Marker.Id markerId : markerIds) {
|
||||
contentProviderUtils.deleteMarker(getContext(), markerId);
|
||||
}
|
||||
caller.onDeleteMarkerDone();
|
||||
}).start());
|
||||
|
||||
@@ -90,4 +90,16 @@ public class IntervalsRecordedFragment extends Fragment implements IntervalListV
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unitChanged() {
|
||||
if (viewModel != null) {
|
||||
LiveData<IntervalStatistics> liveData = viewModel.getIntervalStats(trackId, null);
|
||||
liveData.observe(getActivity(), intervalStatistics -> {
|
||||
if (intervalStatistics != null) {
|
||||
intervalListView.display(intervalStatistics.getIntervalList());
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -14,6 +14,7 @@ import androidx.lifecycle.LiveData;
|
||||
import androidx.lifecycle.ViewModelProvider;
|
||||
|
||||
import de.dennisguse.opentracks.R;
|
||||
import de.dennisguse.opentracks.TrackRecordingActivity;
|
||||
import de.dennisguse.opentracks.content.data.Track;
|
||||
import de.dennisguse.opentracks.util.UnitConversions;
|
||||
import de.dennisguse.opentracks.viewmodels.IntervalStatistics;
|
||||
@@ -23,7 +24,7 @@ import de.dennisguse.opentracks.views.IntervalListView;
|
||||
/**
|
||||
* A fragment to display the intervals from recording track.
|
||||
*/
|
||||
public class IntervalsRecordingFragment extends Fragment implements IntervalListView.IntervalListListener {
|
||||
public class IntervalsRecordingFragment extends Fragment implements IntervalListView.IntervalListListener, TrackRecordingActivity.OnTrackIdListener {
|
||||
|
||||
private static final String TAG = IntervalsRecordingFragment.class.getSimpleName();
|
||||
|
||||
@@ -34,6 +35,7 @@ public class IntervalsRecordingFragment extends Fragment implements IntervalList
|
||||
|
||||
private IntervalStatisticsModel viewModel;
|
||||
private IntervalListView.IntervalReverseListView intervalListView;
|
||||
private IntervalStatisticsModel.IntervalOption selectedInterval;
|
||||
|
||||
private Track.Id trackId;
|
||||
|
||||
@@ -68,6 +70,7 @@ public class IntervalsRecordingFragment extends Fragment implements IntervalList
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
|
||||
trackId = getArguments().getParcelable(TRACK_ID_KEY);
|
||||
((TrackRecordingActivity) getActivity()).setTrackIdListener(this);
|
||||
|
||||
intervalHandler = new Handler();
|
||||
|
||||
@@ -112,6 +115,7 @@ public class IntervalsRecordingFragment extends Fragment implements IntervalList
|
||||
return;
|
||||
}
|
||||
|
||||
selectedInterval = interval;
|
||||
LiveData<IntervalStatistics> liveData = viewModel.getIntervalStats(trackId, interval);
|
||||
liveData.observe(getActivity(), intervalStatistics -> {
|
||||
if (intervalStatistics != null) {
|
||||
@@ -121,7 +125,23 @@ public class IntervalsRecordingFragment extends Fragment implements IntervalList
|
||||
}
|
||||
|
||||
private void updateIntervals() {
|
||||
intervalChanged(null);
|
||||
intervalChanged(selectedInterval);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unitChanged() {
|
||||
if (viewModel != null) {
|
||||
LiveData<IntervalStatistics> liveData = viewModel.getIntervalStats(trackId, selectedInterval);
|
||||
liveData.observe(getActivity(), intervalStatistics -> {
|
||||
if (intervalStatistics != null) {
|
||||
intervalListView.display(intervalStatistics.getIntervalList());
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTrackId(Track.Id trackId) {
|
||||
this.trackId = trackId;
|
||||
}
|
||||
}
|
||||
@@ -40,7 +40,7 @@ import androidx.fragment.app.FragmentActivity;
|
||||
|
||||
import de.dennisguse.opentracks.MarkerEditActivity;
|
||||
import de.dennisguse.opentracks.R;
|
||||
import de.dennisguse.opentracks.content.data.Waypoint;
|
||||
import de.dennisguse.opentracks.content.data.Marker;
|
||||
import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
|
||||
import de.dennisguse.opentracks.util.IntentUtils;
|
||||
import de.dennisguse.opentracks.util.ListItemUtils;
|
||||
@@ -67,7 +67,7 @@ public class MarkerDetailFragment extends Fragment {
|
||||
private ImageView photoView;
|
||||
private ImageView textGradient;
|
||||
private LinearLayout waypointInfo;
|
||||
private Waypoint waypoint;
|
||||
private Marker waypoint;
|
||||
private final Runnable hideText = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
@@ -93,7 +93,7 @@ public class MarkerDetailFragment extends Fragment {
|
||||
}
|
||||
};
|
||||
|
||||
public static MarkerDetailFragment newInstance(Waypoint.Id waypointId) {
|
||||
public static MarkerDetailFragment newInstance(Marker.Id waypointId) {
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putParcelable(KEY_MARKER_ID, waypointId);
|
||||
|
||||
@@ -106,7 +106,7 @@ public class MarkerDetailFragment extends Fragment {
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
Waypoint.Id waypointId = getArguments().getParcelable(KEY_MARKER_ID);
|
||||
Marker.Id waypointId = getArguments().getParcelable(KEY_MARKER_ID);
|
||||
if (waypointId == null) {
|
||||
Log.d(TAG, "invalid marker id");
|
||||
getParentFragmentManager().popBackStack();
|
||||
@@ -182,7 +182,7 @@ public class MarkerDetailFragment extends Fragment {
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
Waypoint.Id waypointId = getArguments().getParcelable(KEY_MARKER_ID); //TODO Should only happen in onCreate?
|
||||
Marker.Id waypointId = getArguments().getParcelable(KEY_MARKER_ID); //TODO Should only happen in onCreate?
|
||||
FragmentActivity fragmentActivity = getActivity();
|
||||
Intent intent;
|
||||
switch (item.getItemId()) {
|
||||
@@ -216,7 +216,7 @@ public class MarkerDetailFragment extends Fragment {
|
||||
*/
|
||||
private void updateWaypoint(boolean refresh) {
|
||||
if (refresh || waypoint == null) {
|
||||
waypoint = contentProviderUtils.getWaypoint(getArguments().getParcelable(KEY_MARKER_ID)); //TODO Should only happen in onCreate?
|
||||
waypoint = contentProviderUtils.getMarker(getArguments().getParcelable(KEY_MARKER_ID)); //TODO Should only happen in onCreate?
|
||||
if (waypoint == null) {
|
||||
Log.d(TAG, "waypoint is null");
|
||||
getParentFragmentManager().popBackStack();
|
||||
|
||||
@@ -22,9 +22,9 @@ import de.dennisguse.opentracks.R;
|
||||
import de.dennisguse.opentracks.TrackRecordingActivity;
|
||||
import de.dennisguse.opentracks.content.TrackDataHub;
|
||||
import de.dennisguse.opentracks.content.TrackDataListener;
|
||||
import de.dennisguse.opentracks.content.data.Marker;
|
||||
import de.dennisguse.opentracks.content.data.Track;
|
||||
import de.dennisguse.opentracks.content.data.TrackPoint;
|
||||
import de.dennisguse.opentracks.content.data.Waypoint;
|
||||
import de.dennisguse.opentracks.content.sensor.SensorDataCycling;
|
||||
import de.dennisguse.opentracks.content.sensor.SensorDataHeartRate;
|
||||
import de.dennisguse.opentracks.content.sensor.SensorDataSet;
|
||||
@@ -350,17 +350,17 @@ public class StatisticsRecordingFragment extends Fragment implements TrackDataLi
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clearWaypoints() {
|
||||
public void clearMarkers() {
|
||||
// We don't care.
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNewWaypoint(Waypoint wpt) {
|
||||
public void onNewMarker(Marker marker) {
|
||||
// We don't care.
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNewWaypointsDone() {
|
||||
public void onNewMarkersDone() {
|
||||
// We don't care.
|
||||
}
|
||||
|
||||
|
||||
@@ -23,9 +23,9 @@ import androidx.annotation.NonNull;
|
||||
|
||||
import java.io.OutputStream;
|
||||
|
||||
import de.dennisguse.opentracks.content.data.Marker;
|
||||
import de.dennisguse.opentracks.content.data.Track;
|
||||
import de.dennisguse.opentracks.content.data.TrackPoint;
|
||||
import de.dennisguse.opentracks.content.data.Waypoint;
|
||||
import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
|
||||
import de.dennisguse.opentracks.content.provider.TrackPointIterator;
|
||||
import de.dennisguse.opentracks.util.LocationUtils;
|
||||
@@ -98,7 +98,7 @@ public class FileTrackExporter implements TrackExporter {
|
||||
* I am leaving the number of waypoints very high which should not be a problem, because we don't try to load them into objects all at the same time.
|
||||
*/
|
||||
boolean hasWaypoints = false;
|
||||
try (Cursor cursor = contentProviderUtils.getWaypointCursor(track.getId(), null, ContentProviderUtils.MAX_LOADED_WAYPOINTS_POINTS)) {
|
||||
try (Cursor cursor = contentProviderUtils.getMarkerCursor(track.getId(), null, ContentProviderUtils.MAX_LOADED_MARKERS)) {
|
||||
if (cursor != null && cursor.moveToFirst()) {
|
||||
for (int i = 0; i < cursor.getCount(); i++) {
|
||||
if (Thread.interrupted()) {
|
||||
@@ -108,7 +108,7 @@ public class FileTrackExporter implements TrackExporter {
|
||||
trackWriter.writeBeginWaypoints(track);
|
||||
hasWaypoints = true;
|
||||
}
|
||||
Waypoint waypoint = contentProviderUtils.createWaypoint(cursor);
|
||||
Marker waypoint = contentProviderUtils.createMarker(cursor);
|
||||
trackWriter.writeWaypoint(waypoint);
|
||||
|
||||
cursor.moveToNext();
|
||||
|
||||
@@ -23,9 +23,9 @@ import java.io.PrintWriter;
|
||||
import java.text.NumberFormat;
|
||||
import java.util.Locale;
|
||||
|
||||
import de.dennisguse.opentracks.content.data.Marker;
|
||||
import de.dennisguse.opentracks.content.data.Track;
|
||||
import de.dennisguse.opentracks.content.data.TrackPoint;
|
||||
import de.dennisguse.opentracks.content.data.Waypoint;
|
||||
import de.dennisguse.opentracks.util.StringUtils;
|
||||
|
||||
/**
|
||||
@@ -130,7 +130,7 @@ public class GpxTrackWriter implements TrackWriter {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeWaypoint(Waypoint waypoint) {
|
||||
public void writeWaypoint(Marker waypoint) {
|
||||
if (printWriter != null) {
|
||||
Location location = waypoint.getLocation();
|
||||
printWriter.println("<wpt " + formatLocation(location) + ">");
|
||||
|
||||
@@ -26,9 +26,9 @@ import java.util.List;
|
||||
|
||||
import de.dennisguse.opentracks.R;
|
||||
import de.dennisguse.opentracks.content.DescriptionGenerator;
|
||||
import de.dennisguse.opentracks.content.data.Marker;
|
||||
import de.dennisguse.opentracks.content.data.Track;
|
||||
import de.dennisguse.opentracks.content.data.TrackPoint;
|
||||
import de.dennisguse.opentracks.content.data.Waypoint;
|
||||
import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
|
||||
import de.dennisguse.opentracks.util.FileUtils;
|
||||
import de.dennisguse.opentracks.util.StringUtils;
|
||||
@@ -163,7 +163,7 @@ public class KmlTrackWriter implements TrackWriter {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeWaypoint(Waypoint waypoint) {
|
||||
public void writeWaypoint(Marker waypoint) {
|
||||
if (printWriter != null && exportTrackDetail) {
|
||||
boolean existsPhoto = FileUtils.getPhotoFileIfExists(context, waypoint.getTrackId(), waypoint.getPhotoURI()) != null;
|
||||
if (waypoint.hasPhoto() && exportPhotos && existsPhoto) {
|
||||
@@ -335,7 +335,7 @@ public class KmlTrackWriter implements TrackWriter {
|
||||
* @param waypoint Waypoint object.
|
||||
* @param heading the heading.
|
||||
*/
|
||||
private void writePhotoOverlay(Waypoint waypoint, float heading) {
|
||||
private void writePhotoOverlay(Marker waypoint, float heading) {
|
||||
if (exportTrackDetail) {
|
||||
printWriter.println("<PhotoOverlay>");
|
||||
printWriter.println("<name>" + StringUtils.formatCData(waypoint.getName()) + "</name>");
|
||||
|
||||
@@ -31,8 +31,8 @@ import java.io.OutputStream;
|
||||
import java.util.zip.ZipEntry;
|
||||
import java.util.zip.ZipOutputStream;
|
||||
|
||||
import de.dennisguse.opentracks.content.data.Marker;
|
||||
import de.dennisguse.opentracks.content.data.Track;
|
||||
import de.dennisguse.opentracks.content.data.Waypoint;
|
||||
import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
|
||||
import de.dennisguse.opentracks.util.FileUtils;
|
||||
|
||||
@@ -99,13 +99,13 @@ public class KmzTrackExporter implements TrackExporter {
|
||||
|
||||
private void addImages(Context context, Track[] tracks, ZipOutputStream zipOutputStream) throws InterruptedException, IOException {
|
||||
for (Track track : tracks) {
|
||||
try (Cursor cursor = contentProviderUtils.getWaypointCursor(track.getId(), null, -1)) {
|
||||
try (Cursor cursor = contentProviderUtils.getMarkerCursor(track.getId(), null, -1)) {
|
||||
if (cursor != null && cursor.moveToFirst()) {
|
||||
for (int i = 0; i < cursor.getCount(); i++) {
|
||||
if (Thread.interrupted()) {
|
||||
throw new InterruptedException();
|
||||
}
|
||||
Waypoint waypoint = contentProviderUtils.createWaypoint(cursor);
|
||||
Marker waypoint = contentProviderUtils.createMarker(cursor);
|
||||
if (waypoint.hasPhoto()) {
|
||||
Uri uriPhoto = waypoint.getPhotoURI();
|
||||
boolean existsPhoto = FileUtils.getPhotoFileIfExists(context, track.getId(), uriPhoto) != null;
|
||||
@@ -121,7 +121,7 @@ public class KmzTrackExporter implements TrackExporter {
|
||||
}
|
||||
}
|
||||
|
||||
private void addImage(Context context, ZipOutputStream zipOutputStream, Uri uri, Waypoint waypoint) throws IOException {
|
||||
private void addImage(Context context, ZipOutputStream zipOutputStream, Uri uri, Marker waypoint) throws IOException {
|
||||
try (InputStream inputStream = context.getContentResolver().openInputStream(uri)) {
|
||||
ZipEntry zipEntry = new ZipEntry(buildKmzImageFilePath(waypoint));
|
||||
zipOutputStream.putNextEntry(zipEntry);
|
||||
@@ -150,7 +150,7 @@ public class KmzTrackExporter implements TrackExporter {
|
||||
*
|
||||
* @param waypoint Waypoint object.
|
||||
*/
|
||||
public static String buildKmzImageFilePath(Waypoint waypoint) {
|
||||
public static String buildKmzImageFilePath(Marker waypoint) {
|
||||
String ext = FileUtils.getExtension(waypoint.getPhotoUrl());
|
||||
ext = ext == null ? "" : "." + ext;
|
||||
return KMZ_IMAGES_DIR + File.separatorChar + FileUtils.sanitizeFileName(waypoint.getId() + ext);
|
||||
|
||||
@@ -17,9 +17,9 @@ package de.dennisguse.opentracks.io.file.exporter;
|
||||
|
||||
import java.io.OutputStream;
|
||||
|
||||
import de.dennisguse.opentracks.content.data.Marker;
|
||||
import de.dennisguse.opentracks.content.data.Track;
|
||||
import de.dennisguse.opentracks.content.data.TrackPoint;
|
||||
import de.dennisguse.opentracks.content.data.Waypoint;
|
||||
|
||||
/**
|
||||
* Interface for writing tracks to a file. The expected sequence of calls is:
|
||||
@@ -30,7 +30,7 @@ import de.dennisguse.opentracks.content.data.Waypoint;
|
||||
* For each track:
|
||||
* {@link #writeBeginWaypoints(Track)}
|
||||
* For each waypoint:
|
||||
* {@link #writeWaypoint(Waypoint)}
|
||||
* {@link #writeWaypoint(Marker)}
|
||||
* {@link #writeEndWaypoints()}
|
||||
* {@link #writeMultiTrackBegin()}
|
||||
* For each track:
|
||||
@@ -91,7 +91,7 @@ public interface TrackWriter {
|
||||
*
|
||||
* @param waypoint the waypoint
|
||||
*/
|
||||
void writeWaypoint(Waypoint waypoint);
|
||||
void writeWaypoint(Marker waypoint);
|
||||
|
||||
/**
|
||||
* Writes the beginning of the tracks.
|
||||
|
||||
+6
-6
@@ -39,9 +39,9 @@ import javax.xml.parsers.SAXParser;
|
||||
import javax.xml.parsers.SAXParserFactory;
|
||||
|
||||
import de.dennisguse.opentracks.R;
|
||||
import de.dennisguse.opentracks.content.data.Marker;
|
||||
import de.dennisguse.opentracks.content.data.Track;
|
||||
import de.dennisguse.opentracks.content.data.TrackPoint;
|
||||
import de.dennisguse.opentracks.content.data.Waypoint;
|
||||
import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
|
||||
import de.dennisguse.opentracks.content.provider.TrackPointIterator;
|
||||
import de.dennisguse.opentracks.stats.TrackStatisticsUpdater;
|
||||
@@ -70,7 +70,7 @@ abstract class AbstractFileTrackImporter extends DefaultHandler implements Track
|
||||
|
||||
private Track.Id importTrackId;
|
||||
private final List<Track.Id> trackIds = new ArrayList<>();
|
||||
private final List<Waypoint> waypoints = new ArrayList<>();
|
||||
private final List<Marker> waypoints = new ArrayList<>();
|
||||
|
||||
// The current element content
|
||||
//TODO Should be made private and getter be used by child classes.
|
||||
@@ -160,7 +160,7 @@ abstract class AbstractFileTrackImporter extends DefaultHandler implements Track
|
||||
}
|
||||
|
||||
int waypointPosition = -1;
|
||||
Waypoint waypoint = null;
|
||||
Marker waypoint = null;
|
||||
TrackPoint trackPoint = null;
|
||||
TrackStatisticsUpdater trackStatisticsUpdater = new TrackStatisticsUpdater(track.getTrackStatistics().getStartTime_ms());
|
||||
// TODO Should not be necessary anymore?
|
||||
@@ -209,8 +209,8 @@ abstract class AbstractFileTrackImporter extends DefaultHandler implements Track
|
||||
long duration = trackStatisticsUpdater.getTrackStatistics().getTotalTime();
|
||||
|
||||
// Insert waypoint
|
||||
Waypoint newWaypoint = new Waypoint(waypoint.getName(), waypointDescription, waypoint.getCategory(), icon, track.getId(), length, duration, trackPoint.getLocation(), waypoint.getPhotoUrl());
|
||||
contentProviderUtils.insertWaypoint(newWaypoint);
|
||||
Marker newWaypoint = new Marker(waypoint.getName(), waypointDescription, waypoint.getCategory(), icon, track.getId(), length, duration, trackPoint.getLocation(), waypoint.getPhotoUrl());
|
||||
contentProviderUtils.insertMarker(newWaypoint);
|
||||
}
|
||||
|
||||
// Load the next waypoint
|
||||
@@ -314,7 +314,7 @@ abstract class AbstractFileTrackImporter extends DefaultHandler implements Track
|
||||
if (!LocationUtils.isValidLocation(trackPoint.getLocation())) {
|
||||
throw new SAXException(createErrorMessage("Invalid location detected: " + trackPoint));
|
||||
}
|
||||
Waypoint waypoint = new Waypoint(trackPoint.getLocation());
|
||||
Marker waypoint = new Marker(trackPoint.getLocation());
|
||||
|
||||
if (name != null) {
|
||||
waypoint.setName(name);
|
||||
|
||||
@@ -32,8 +32,8 @@ import java.util.List;
|
||||
import java.util.zip.ZipEntry;
|
||||
import java.util.zip.ZipInputStream;
|
||||
|
||||
import de.dennisguse.opentracks.content.data.Marker;
|
||||
import de.dennisguse.opentracks.content.data.Track;
|
||||
import de.dennisguse.opentracks.content.data.Waypoint;
|
||||
import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
|
||||
import de.dennisguse.opentracks.io.file.exporter.KmzTrackExporter;
|
||||
import de.dennisguse.opentracks.util.FileUtils;
|
||||
@@ -200,9 +200,9 @@ public class KmzTrackImporter implements TrackImporter {
|
||||
if (!trackId.isValid()) {
|
||||
// 1.- Gets all photo names in the waypoints of the track identified by id.
|
||||
ContentProviderUtils contentProviderUtils = new ContentProviderUtils(context);
|
||||
List<Waypoint> waypoints = contentProviderUtils.getWaypoints(trackId);
|
||||
List<Marker> waypoints = contentProviderUtils.getMarkers(trackId);
|
||||
List<String> photosName = new ArrayList<>();
|
||||
for (Waypoint w : waypoints) {
|
||||
for (Marker w : waypoints) {
|
||||
if (w.hasPhoto()) {
|
||||
String photoUrl = Uri.decode(w.getPhotoUrl());
|
||||
photosName.add(photoUrl.substring(photoUrl.lastIndexOf(File.separatorChar) + 1));
|
||||
|
||||
@@ -39,9 +39,9 @@ import java.util.List;
|
||||
import de.dennisguse.opentracks.R;
|
||||
import de.dennisguse.opentracks.TrackListActivity;
|
||||
import de.dennisguse.opentracks.TrackRecordingActivity;
|
||||
import de.dennisguse.opentracks.content.data.Marker;
|
||||
import de.dennisguse.opentracks.content.data.Track;
|
||||
import de.dennisguse.opentracks.content.data.TrackPoint;
|
||||
import de.dennisguse.opentracks.content.data.Waypoint;
|
||||
import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
|
||||
import de.dennisguse.opentracks.content.provider.CustomContentProvider;
|
||||
import de.dennisguse.opentracks.content.provider.TrackPointIterator;
|
||||
@@ -215,6 +215,7 @@ public class TrackRecordingService extends Service implements HandlerServer.Hand
|
||||
return trackStatisticsUpdater.getTrackStatistics();
|
||||
}
|
||||
|
||||
//TODO Throw exception, when not recording.
|
||||
public long getTotalTime() {
|
||||
if (trackStatisticsUpdater == null) {
|
||||
return 0;
|
||||
@@ -225,27 +226,22 @@ public class TrackRecordingService extends Service implements HandlerServer.Hand
|
||||
return trackStatisticsUpdater.getTrackStatistics().getTotalTime();
|
||||
}
|
||||
|
||||
/**
|
||||
* Inserts a waypoint.
|
||||
*
|
||||
* @return the waypoint id
|
||||
*/
|
||||
public Waypoint.Id insertWaypoint(String name, String category, String description, String photoUrl) {
|
||||
public Marker.Id insertMarker(String name, String category, String description, String photoUrl) {
|
||||
if (!isRecording() || isPaused()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (name == null) {
|
||||
int nextWaypointNumber = contentProviderUtils.getNextWaypointNumber(recordingTrackId);
|
||||
if (nextWaypointNumber == -1) {
|
||||
nextWaypointNumber = 1;
|
||||
int nextMarkerNumber = contentProviderUtils.getNextMarkerNumber(recordingTrackId);
|
||||
if (nextMarkerNumber == -1) {
|
||||
nextMarkerNumber = 1;
|
||||
}
|
||||
name = getString(R.string.marker_name_format, nextWaypointNumber + 1);
|
||||
name = getString(R.string.marker_name_format, nextMarkerNumber + 1);
|
||||
}
|
||||
|
||||
TrackPoint trackPoint = getLastValidTrackPointInCurrentSegment(recordingTrackId);
|
||||
if (trackPoint == null) {
|
||||
Log.i(TAG, "Could not create a waypoint as trackPoint is unknown.");
|
||||
Log.i(TAG, "Could not create a marker as trackPoint is unknown.");
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -258,10 +254,10 @@ public class TrackRecordingService extends Service implements HandlerServer.Hand
|
||||
double length = stats.getTotalDistance();
|
||||
long duration = stats.getTotalTime();
|
||||
|
||||
// Insert waypoint
|
||||
Waypoint waypoint = new Waypoint(name, description, category, icon, recordingTrackId, length, duration, trackPoint.getLocation(), photoUrl);
|
||||
Uri uri = contentProviderUtils.insertWaypoint(waypoint);
|
||||
return new Waypoint.Id(ContentUris.parseId(uri));
|
||||
// Insert marker
|
||||
Marker marker = new Marker(name, description, category, icon, recordingTrackId, length, duration, trackPoint.getLocation(), photoUrl);
|
||||
Uri uri = contentProviderUtils.insertMarker(marker);
|
||||
return new Marker.Id(ContentUris.parseId(uri));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -2,9 +2,9 @@ package de.dennisguse.opentracks.services;
|
||||
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
|
||||
import de.dennisguse.opentracks.content.data.Marker;
|
||||
import de.dennisguse.opentracks.content.data.Track;
|
||||
import de.dennisguse.opentracks.content.data.TrackPoint;
|
||||
import de.dennisguse.opentracks.content.data.Waypoint;
|
||||
import de.dennisguse.opentracks.content.sensor.SensorDataSet;
|
||||
import de.dennisguse.opentracks.services.handlers.GpsStatusValue;
|
||||
import de.dennisguse.opentracks.services.sensors.BluetoothRemoteSensorManager;
|
||||
@@ -90,8 +90,8 @@ class TrackRecordingServiceBinder extends android.os.Binder implements TrackReco
|
||||
}
|
||||
|
||||
@Override
|
||||
public Waypoint.Id insertWaypoint(String name, String category, String description, String photoUrl) {
|
||||
return trackRecordingService.insertWaypoint(name, category, description, photoUrl);
|
||||
public Marker.Id insertMarker(String name, String category, String description, String photoUrl) {
|
||||
return trackRecordingService.insertMarker(name, category, description, photoUrl);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+5
-11
@@ -31,8 +31,8 @@ import androidx.annotation.NonNull;
|
||||
import de.dennisguse.opentracks.BuildConfig;
|
||||
import de.dennisguse.opentracks.R;
|
||||
import de.dennisguse.opentracks.TrackEditActivity;
|
||||
import de.dennisguse.opentracks.content.data.Marker;
|
||||
import de.dennisguse.opentracks.content.data.Track;
|
||||
import de.dennisguse.opentracks.content.data.Waypoint;
|
||||
import de.dennisguse.opentracks.util.IntentUtils;
|
||||
import de.dennisguse.opentracks.util.PreferencesUtils;
|
||||
|
||||
@@ -181,16 +181,16 @@ public class TrackRecordingServiceConnection implements ServiceConnection, Death
|
||||
*
|
||||
* @return the id of the marker or null if none could be created.
|
||||
*/
|
||||
public Waypoint.Id addMarker(Context context, String name, String category, String description, String photoUrl) {
|
||||
public Marker.Id addMarker(Context context, String name, String category, String description, String photoUrl) {
|
||||
TrackRecordingServiceInterface trackRecordingService = getServiceIfBound();
|
||||
if (trackRecordingService == null) {
|
||||
Log.d(TAG, "Unable to add marker, no track recording service");
|
||||
} else {
|
||||
try {
|
||||
Waypoint.Id waypoint = trackRecordingService.insertWaypoint(name, category, description, photoUrl);
|
||||
if (waypoint != null) {
|
||||
Marker.Id marker = trackRecordingService.insertMarker(name, category, description, photoUrl);
|
||||
if (marker != null) {
|
||||
Toast.makeText(context, R.string.marker_add_success, Toast.LENGTH_SHORT).show();
|
||||
return waypoint;
|
||||
return marker;
|
||||
}
|
||||
} catch (IllegalStateException e) {
|
||||
Log.e(TAG, "Unable to add marker.", e);
|
||||
@@ -201,12 +201,6 @@ public class TrackRecordingServiceConnection implements ServiceConnection, Death
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Stops the recording.
|
||||
*
|
||||
* @param context the context
|
||||
* @param showEditor true to show the editor
|
||||
*/
|
||||
public void stopRecording(@NonNull Context context, boolean showEditor) {
|
||||
TrackRecordingServiceInterface trackRecordingService = getServiceIfBound();
|
||||
if (trackRecordingService == null) {
|
||||
|
||||
+4
-35
@@ -17,9 +17,9 @@ package de.dennisguse.opentracks.services;
|
||||
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
|
||||
import de.dennisguse.opentracks.content.data.Marker;
|
||||
import de.dennisguse.opentracks.content.data.Track;
|
||||
import de.dennisguse.opentracks.content.data.TrackPoint;
|
||||
import de.dennisguse.opentracks.content.data.Waypoint;
|
||||
import de.dennisguse.opentracks.content.sensor.SensorDataSet;
|
||||
import de.dennisguse.opentracks.services.handlers.GpsStatusValue;
|
||||
import de.dennisguse.opentracks.services.sensors.BluetoothRemoteSensorManager;
|
||||
@@ -30,46 +30,20 @@ import de.dennisguse.opentracks.services.sensors.BluetoothRemoteSensorManager;
|
||||
*/
|
||||
public interface TrackRecordingServiceInterface {
|
||||
|
||||
/**
|
||||
* Starts gps.
|
||||
*/
|
||||
void startGps();
|
||||
|
||||
/**
|
||||
* Stops gps.
|
||||
*/
|
||||
void stopGps();
|
||||
|
||||
/**
|
||||
* Starts recording a new track.
|
||||
*
|
||||
* @return the track ID of the new track.
|
||||
*/
|
||||
Track.Id startNewTrack();
|
||||
|
||||
/**
|
||||
* Resumes the track identified by trackId.
|
||||
*/
|
||||
void resumeTrack(Track.Id trackId);
|
||||
|
||||
/**
|
||||
* Pauses the current recording track.
|
||||
*/
|
||||
void pauseCurrentTrack();
|
||||
|
||||
/**
|
||||
* Resumes the current recording track.
|
||||
*/
|
||||
void resumeCurrentTrack();
|
||||
|
||||
/**
|
||||
* Ends the current recording track.
|
||||
*/
|
||||
void resumeTrack(Track.Id trackId);
|
||||
|
||||
void endCurrentTrack();
|
||||
|
||||
/**
|
||||
* Returns true if currently recording a track.
|
||||
*/
|
||||
boolean isRecording();
|
||||
|
||||
/**
|
||||
@@ -88,12 +62,7 @@ public interface TrackRecordingServiceInterface {
|
||||
//TODO milliseconds?
|
||||
long getTotalTime();
|
||||
|
||||
/**
|
||||
* Inserts a waypoint in the current recording track.
|
||||
*
|
||||
* @return the ID of the inserted waypoint
|
||||
*/
|
||||
Waypoint.Id insertWaypoint(String name, String category, String description, String photoUrl);
|
||||
Marker.Id insertMarker(String name, String category, String description, String photoUrl);
|
||||
|
||||
/**
|
||||
* Gets the current sensor data. Returns null if there is no data.
|
||||
|
||||
@@ -11,10 +11,10 @@ import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import de.dennisguse.opentracks.content.data.MarkerColumns;
|
||||
import de.dennisguse.opentracks.content.data.Track;
|
||||
import de.dennisguse.opentracks.content.data.TrackPointsColumns;
|
||||
import de.dennisguse.opentracks.content.data.TracksColumns;
|
||||
import de.dennisguse.opentracks.content.data.WaypointsColumns;
|
||||
import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
|
||||
|
||||
/**
|
||||
@@ -55,7 +55,7 @@ public class IntentDashboardUtils {
|
||||
ArrayList<Uri> uris = new ArrayList<>();
|
||||
uris.add(TRACK_URI_INDEX, Uri.withAppendedPath(TracksColumns.CONTENT_URI, trackIdList));
|
||||
uris.add(TRACKPOINTS_URI_INDEX, Uri.withAppendedPath(TrackPointsColumns.CONTENT_URI_BY_TRACKID, trackIdList));
|
||||
uris.add(WAYPOINTS_URI_INDEX, Uri.withAppendedPath(WaypointsColumns.CONTENT_URI_BY_TRACKID, trackIdList));
|
||||
uris.add(WAYPOINTS_URI_INDEX, Uri.withAppendedPath(MarkerColumns.CONTENT_URI_BY_TRACKID, trackIdList));
|
||||
|
||||
Intent intent = new Intent(ACTION_DASHBOARD);
|
||||
intent.putParcelableArrayListExtra(ACTION_DASHBOARD_PAYLOAD, uris);
|
||||
|
||||
@@ -32,8 +32,8 @@ import java.util.Date;
|
||||
|
||||
import de.dennisguse.opentracks.R;
|
||||
import de.dennisguse.opentracks.content.DescriptionGenerator;
|
||||
import de.dennisguse.opentracks.content.data.Marker;
|
||||
import de.dennisguse.opentracks.content.data.Track;
|
||||
import de.dennisguse.opentracks.content.data.Waypoint;
|
||||
import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
|
||||
import de.dennisguse.opentracks.content.provider.ShareContentProvider;
|
||||
|
||||
@@ -128,7 +128,7 @@ public class IntentUtils {
|
||||
.putExtra(Intent.EXTRA_TEXT, context.getString(R.string.share_image_body));
|
||||
}
|
||||
|
||||
public static void showCoordinateOnMap(Context context, Waypoint waypoint) {
|
||||
public static void showCoordinateOnMap(Context context, Marker waypoint) {
|
||||
showCoordinateOnMap(context, waypoint.getLocation().getLatitude(), waypoint.getLocation().getLongitude(), waypoint.getName());
|
||||
}
|
||||
|
||||
|
||||
@@ -41,6 +41,7 @@ public class LocationUtils {
|
||||
* @return true if the location is a valid location.
|
||||
*/
|
||||
//TODO Move to TrackPoint
|
||||
@Deprecated //See #316
|
||||
public static boolean isValidLocation(Location location) {
|
||||
return location != null
|
||||
&& Math.abs(location.getLatitude()) <= 90
|
||||
|
||||
@@ -22,6 +22,7 @@ import android.text.format.DateUtils;
|
||||
import android.util.Log;
|
||||
import android.util.Pair;
|
||||
|
||||
import java.math.RoundingMode;
|
||||
import java.text.DecimalFormat;
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDateTime;
|
||||
@@ -125,12 +126,10 @@ public class StringUtils {
|
||||
* Format a decimal number while removing trailing zeros of the decimal part (if present).
|
||||
*/
|
||||
public static String formatDecimal(double value, int decimalPlaces) {
|
||||
if (decimalPlaces < 1) {
|
||||
return Long.toString(Math.round(value));
|
||||
}
|
||||
|
||||
String format = "#." + new String(new char[decimalPlaces]).replace("\0", "#");
|
||||
return new DecimalFormat(format).format(value);
|
||||
DecimalFormat df = new DecimalFormat();
|
||||
df.setMaximumFractionDigits(decimalPlaces);
|
||||
df.setRoundingMode(RoundingMode.HALF_EVEN);
|
||||
return df.format(value);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -204,7 +203,7 @@ public class StringUtils {
|
||||
}
|
||||
|
||||
if (reportSpeed) {
|
||||
return new Pair<>(StringUtils.formatDecimal(speed * UnitConversions.S_TO_HR), unitString);
|
||||
return new Pair<>(StringUtils.formatDecimal(speed * UnitConversions.S_TO_HR, 1), unitString);
|
||||
}
|
||||
|
||||
int pace = speed == 0 ? 0 : (int) Math.round(1 / speed); //sec / [KM | MI]
|
||||
|
||||
@@ -24,6 +24,7 @@ import de.dennisguse.opentracks.util.UnitConversions;
|
||||
public class IntervalStatisticsModel extends AndroidViewModel {
|
||||
|
||||
private MutableLiveData<IntervalStatistics> intervalStats = new MutableLiveData<>();
|
||||
private IntervalOption interval = IntervalOption.OPTION_1;
|
||||
|
||||
public IntervalStatisticsModel(@NonNull Application application) {
|
||||
super(application);
|
||||
|
||||
@@ -35,6 +35,7 @@ public class IntervalListView extends LinearLayout {
|
||||
if (PreferencesUtils.isKey(getContext(), R.string.stats_units_key, key) || PreferencesUtils.isKey(getContext(), R.string.stats_rate_key, key)) {
|
||||
if (spinnerIntervalsUnit != null) {
|
||||
spinnerIntervalsUnit.setText(PreferencesUtils.isMetricUnits(getContext()) ? getContext().getString(R.string.unit_kilometer) : getContext().getString(R.string.unit_mile));
|
||||
listener.unitChanged();
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -92,6 +93,7 @@ public class IntervalListView extends LinearLayout {
|
||||
|
||||
public interface IntervalListListener {
|
||||
void intervalChanged(IntervalStatisticsModel.IntervalOption interval);
|
||||
void unitChanged();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||
android:viewportHeight="24.0" android:viewportWidth="24.0"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#FF000000" android:pathData="M15.5,5.5c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 0.9,2 2,2zM5,12c-2.8,0 -5,2.2 -5,5s2.2,5 5,5 5,-2.2 5,-5 -2.2,-5 -5,-5zM5,20.5c-1.9,0 -3.5,-1.6 -3.5,-3.5s1.6,-3.5 3.5,-3.5 3.5,1.6 3.5,3.5 -1.6,3.5 -3.5,3.5zM10.8,10.5l2.4,-2.4 0.8,0.8c1.3,1.3 3,2.1 5.1,2.1L19.1,9c-1.5,0 -2.7,-0.6 -3.6,-1.5l-1.9,-1.9c-0.5,-0.4 -1,-0.6 -1.6,-0.6s-1.1,0.2 -1.4,0.6L7.8,8.4c-0.4,0.4 -0.6,0.9 -0.6,1.4 0,0.6 0.2,1.1 0.6,1.4L11,14v5h2v-6.2l-2.2,-2.3zM19,12c-2.8,0 -5,2.2 -5,5s2.2,5 5,5 5,-2.2 5,-5 -2.2,-5 -5,-5zM19,20.5c-1.9,0 -3.5,-1.6 -3.5,-3.5s1.6,-3.5 3.5,-3.5 3.5,1.6 3.5,3.5 -1.6,3.5 -3.5,3.5z"/>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="#FFFFFF"
|
||||
android:viewportWidth="24.0"
|
||||
android:viewportHeight="24.0">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M15.5,5.5c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 0.9,2 2,2zM5,12c-2.8,0 -5,2.2 -5,5s2.2,5 5,5 5,-2.2 5,-5 -2.2,-5 -5,-5zM5,20.5c-1.9,0 -3.5,-1.6 -3.5,-3.5s1.6,-3.5 3.5,-3.5 3.5,1.6 3.5,3.5 -1.6,3.5 -3.5,3.5zM10.8,10.5l2.4,-2.4 0.8,0.8c1.3,1.3 3,2.1 5.1,2.1L19.1,9c-1.5,0 -2.7,-0.6 -3.6,-1.5l-1.9,-1.9c-0.5,-0.4 -1,-0.6 -1.6,-0.6s-1.1,0.2 -1.4,0.6L7.8,8.4c-0.4,0.4 -0.6,0.9 -0.6,1.4 0,0.6 0.2,1.1 0.6,1.4L11,14v5h2v-6.2l-2.2,-2.3zM19,12c-2.8,0 -5,2.2 -5,5s2.2,5 5,5 5,-2.2 5,-5 -2.2,-5 -5,-5zM19,20.5c-1.9,0 -3.5,-1.6 -3.5,-3.5s1.6,-3.5 3.5,-3.5 3.5,1.6 3.5,3.5 -1.6,3.5 -3.5,3.5z" />
|
||||
</vector>
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||
android:viewportHeight="24.0" android:viewportWidth="24.0"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#FF000000" android:pathData="M20,21c-1.39,0 -2.78,-0.47 -4,-1.32 -2.44,1.71 -5.56,1.71 -8,0C6.78,20.53 5.39,21 4,21H2v2h2c1.38,0 2.74,-0.35 4,-0.99 2.52,1.29 5.48,1.29 8,0 1.26,0.65 2.62,0.99 4,0.99h2v-2h-2zM3.95,19H4c1.6,0 3.02,-0.88 4,-2 0.98,1.12 2.4,2 4,2s3.02,-0.88 4,-2c0.98,1.12 2.4,2 4,2h0.05l1.89,-6.68c0.08,-0.26 0.06,-0.54 -0.06,-0.78s-0.34,-0.42 -0.6,-0.5L20,10.62V6c0,-1.1 -0.9,-2 -2,-2h-3V1H9v3H6c-1.1,0 -2,0.9 -2,2v4.62l-1.29,0.42c-0.26,0.08 -0.48,0.26 -0.6,0.5s-0.15,0.52 -0.06,0.78L3.95,19zM6,6h12v3.97L12,8 6,9.97V6z"/>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="#FFFFFF"
|
||||
android:viewportWidth="24.0"
|
||||
android:viewportHeight="24.0">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M20,21c-1.39,0 -2.78,-0.47 -4,-1.32 -2.44,1.71 -5.56,1.71 -8,0C6.78,20.53 5.39,21 4,21H2v2h2c1.38,0 2.74,-0.35 4,-0.99 2.52,1.29 5.48,1.29 8,0 1.26,0.65 2.62,0.99 4,0.99h2v-2h-2zM3.95,19H4c1.6,0 3.02,-0.88 4,-2 0.98,1.12 2.4,2 4,2s3.02,-0.88 4,-2c0.98,1.12 2.4,2 4,2h0.05l1.89,-6.68c0.08,-0.26 0.06,-0.54 -0.06,-0.78s-0.34,-0.42 -0.6,-0.5L20,10.62V6c0,-1.1 -0.9,-2 -2,-2h-3V1H9v3H6c-1.1,0 -2,0.9 -2,2v4.62l-1.29,0.42c-0.26,0.08 -0.48,0.26 -0.6,0.5s-0.15,0.52 -0.06,0.78L3.95,19zM6,6h12v3.97L12,8 6,9.97V6z" />
|
||||
</vector>
|
||||
|
||||
@@ -1,113 +1,225 @@
|
||||
<vector android:height="24dp" android:viewportHeight="5.820833"
|
||||
android:viewportWidth="5.820833" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#cacaca"
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="5.820833"
|
||||
android:viewportHeight="5.820833">
|
||||
<path
|
||||
android:fillColor="#cacaca"
|
||||
android:pathData="M14.77216,-15.55645l26.53766,0l0,30.62037l-26.53766,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.6855"/>
|
||||
<path android:fillColor="#e74c3c"
|
||||
android:strokeWidth="14.6855"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#e74c3c"
|
||||
android:pathData="M15.79283,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#ed1515"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#ed1515"
|
||||
android:pathData="M19.87555,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#f47750"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#f47750"
|
||||
android:pathData="M23.95827,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#fdbc4b"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#fdbc4b"
|
||||
android:pathData="M28.04098,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#c9ce3b"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#c9ce3b"
|
||||
android:pathData="M32.1237,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#da4453"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#da4453"
|
||||
android:pathData="M15.79283,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#c0392b"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#c0392b"
|
||||
android:pathData="M19.87555,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#d35400"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#d35400"
|
||||
android:pathData="M23.95827,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#f67400"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#f67400"
|
||||
android:pathData="M28.04098,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#f39c1f"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#f39c1f"
|
||||
android:pathData="M32.1237,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#1cdc9a"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#1cdc9a"
|
||||
android:pathData="M15.79283,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#2ecc71"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#2ecc71"
|
||||
android:pathData="M19.87555,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#1abc9c"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#1abc9c"
|
||||
android:pathData="M23.95827,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#3498db"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#3498db"
|
||||
android:pathData="M28.04098,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#3daee9"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#3daee9"
|
||||
android:pathData="M32.1237,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#10d116"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#10d116"
|
||||
android:pathData="M15.79283,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#27ae60"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#27ae60"
|
||||
android:pathData="M19.87555,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#16a085"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#16a085"
|
||||
android:pathData="M23.95827,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#2980b9"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#2980b9"
|
||||
android:pathData="M28.04098,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#1d99f3"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#1d99f3"
|
||||
android:pathData="M32.1237,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#9b59b6"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#9b59b6"
|
||||
android:pathData="M36.20642,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#8e44ad"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#8e44ad"
|
||||
android:pathData="M36.20642,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#34495e"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#34495e"
|
||||
android:pathData="M15.79284,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#31363b"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#31363b"
|
||||
android:pathData="M19.87556,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#7f8c8d"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#7f8c8d"
|
||||
android:pathData="M23.95828,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#bdc3c7"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#bdc3c7"
|
||||
android:pathData="M28.04099,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#fcfcfc"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#fcfcfc"
|
||||
android:pathData="M32.12371,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#2c3e50"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#2c3e50"
|
||||
android:pathData="M15.79284,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#232629"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#232629"
|
||||
android:pathData="M19.87556,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#4d4d4d"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#4d4d4d"
|
||||
android:pathData="M23.95828,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#95a5a6"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#95a5a6"
|
||||
android:pathData="M28.04099,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#eff0f1"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#eff0f1"
|
||||
android:pathData="M32.12371,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#ffffff" android:fillType="nonZero"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#ffffff"
|
||||
android:fillType="nonZero"
|
||||
android:pathData="M6.31445,-0.15234L5.64648,0.3418L4.89453,2.88477L3.70508,3.23242L3.0293,4.91211L1.69922,5.11133L1.53711,5.45703L-0.22656,5.81836L-0.17383,6.07617L1.7207,5.69141L1.87891,5.35156L3.21875,5.15039L3.90234,3.44922L5.10742,3.09766L5.875,0.50195L6.47266,0.06055L6.31445,-0.15234z"
|
||||
android:strokeColor="#00000000" android:strokeLineCap="butt"
|
||||
android:strokeLineJoin="miter" android:strokeWidth="0.264583"/>
|
||||
<path android:fillColor="#ffffff"
|
||||
android:strokeWidth="0.264583"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeLineCap="butt"
|
||||
android:strokeLineJoin="miter" />
|
||||
<path
|
||||
android:fillColor="#ffffff"
|
||||
android:pathData="M2.198,1.23865C2.42177,1.19788 2.57149,0.98144 2.53072,0.75767 2.48995,0.5339 2.27351,0.38417 2.04974,0.42494 1.82597,0.46572 1.67624,0.68216 1.71702,0.90593 1.75779,1.1297 1.97423,1.27942 2.198,1.23865ZM1.68595,4.19686 L1.95228,3.42332 2.46335,3.55617 2.93506,4.18433 3.28268,3.89484 2.72506,3.11037 2.24694,2.89657 2.38332,2.25579C2.70337,2.51274 3.14729,2.64204 3.59483,2.5605L3.5207,2.15365C3.13419,2.22407 2.77164,2.07994 2.55701,1.8248L2.29428,1.53638C2.19067,1.42915 2.05379,1.37002 1.91139,1.39596c-0.06103,0.01112 -0.09801,0.03887 -0.15903,0.04999L1.60548,2.19234 1.45861,2.93873 1.25698,3.92124 0.49782,5.18765 0.86657,5.49049Z"
|
||||
android:strokeColor="#00000000" android:strokeWidth="0.168524"/>
|
||||
<path android:fillAlpha="0.997" android:fillColor="#ffffff"
|
||||
android:strokeWidth="0.168524"
|
||||
android:strokeColor="#00000000" />
|
||||
<path
|
||||
android:fillAlpha="0.997"
|
||||
android:fillColor="#ffffff"
|
||||
android:pathData="m1.38687,1.61032l0,0 -0.22274,0.98585 0.02179,-0.09645z"
|
||||
android:strokeAlpha="0.997" android:strokeColor="#ffffff"
|
||||
android:strokeLineJoin="round" android:strokeWidth="0.248933"/>
|
||||
android:strokeWidth="0.248933"
|
||||
android:strokeAlpha="0.997"
|
||||
android:strokeColor="#ffffff"
|
||||
android:strokeLineJoin="round" />
|
||||
</vector>
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||
android:viewportHeight="24.0" android:viewportWidth="24.0"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#FF000000" android:pathData="M18.92,6.01C18.72,5.42 18.16,5 17.5,5h-11c-0.66,0 -1.21,0.42 -1.42,1.01L3,12v8c0,0.55 0.45,1 1,1h1c0.55,0 1,-0.45 1,-1v-1h12v1c0,0.55 0.45,1 1,1h1c0.55,0 1,-0.45 1,-1v-8l-2.08,-5.99zM6.5,16c-0.83,0 -1.5,-0.67 -1.5,-1.5S5.67,13 6.5,13s1.5,0.67 1.5,1.5S7.33,16 6.5,16zM17.5,16c-0.83,0 -1.5,-0.67 -1.5,-1.5s0.67,-1.5 1.5,-1.5 1.5,0.67 1.5,1.5 -0.67,1.5 -1.5,1.5zM5,11l1.5,-4.5h11L19,11L5,11z"/>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="#FFFFFF"
|
||||
android:viewportWidth="24.0"
|
||||
android:viewportHeight="24.0">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M18.92,6.01C18.72,5.42 18.16,5 17.5,5h-11c-0.66,0 -1.21,0.42 -1.42,1.01L3,12v8c0,0.55 0.45,1 1,1h1c0.55,0 1,-0.45 1,-1v-1h12v1c0,0.55 0.45,1 1,1h1c0.55,0 1,-0.45 1,-1v-8l-2.08,-5.99zM6.5,16c-0.83,0 -1.5,-0.67 -1.5,-1.5S5.67,13 6.5,13s1.5,0.67 1.5,1.5S7.33,16 6.5,16zM17.5,16c-0.83,0 -1.5,-0.67 -1.5,-1.5s0.67,-1.5 1.5,-1.5 1.5,0.67 1.5,1.5 -0.67,1.5 -1.5,1.5zM5,11l1.5,-4.5h11L19,11L5,11z" />
|
||||
</vector>
|
||||
|
||||
@@ -3,269 +3,269 @@
|
||||
android:height="22dp"
|
||||
android:viewportWidth="5.820833"
|
||||
android:viewportHeight="5.820833">
|
||||
<path
|
||||
android:pathData="M2.36328,1.98438A0.1325,0.1325 0,0 0,2.25 2.13477A0.1325,0.1325 0,0 0,2.39844 2.24805C2.64244,2.2158 2.90617,2.30436 3.08203,2.47656C3.20488,2.59686 3.28941,2.75907 3.30859,2.92578C3.32135,3.03664 3.30546,3.15964 3.29297,3.29492C3.28044,3.43061 3.27019,3.5832 3.31055,3.73828C3.34385,3.86624 3.41023,3.98289 3.50195,4.07813C3.59367,4.17336 3.70932,4.24512 3.83594,4.2832A0.1325,0.1325 0,0 0,4.00195 4.19336A0.1325,0.1325 0,0 0,3.91211 4.0293C3.82972,4.00452 3.75304,3.9565 3.69336,3.89453C3.63368,3.83257 3.59003,3.75318 3.56836,3.66992C3.5418,3.56787 3.54669,3.4492 3.55859,3.32031C3.57054,3.19102 3.58793,3.04763 3.57031,2.89453C3.54353,2.66173 3.43207,2.44818 3.26758,2.28711C3.03092,2.05538 2.69165,1.94099 2.36328,1.98438z"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="0.264999"
|
||||
android:fillColor="#909090"
|
||||
android:strokeColor="#00000000"
|
||||
android:fillType="nonZero"
|
||||
android:strokeLineCap="round"/>
|
||||
<path
|
||||
android:pathData="M1.5875,1.45521A0.13251,0.13251 0,0 0,1.45521 1.5875L1.45521,2.64583A0.13251,0.13251 0,0 0,1.5875 2.77812L1.85208,2.77812C2.21594,2.77812 2.51354,2.48053 2.51354,2.11667C2.51354,1.75281 2.21594,1.45521 1.85208,1.45521L1.5875,1.45521zM1.71979,1.71979L1.85208,1.71979C2.07273,1.71979 2.24896,1.89602 2.24896,2.11667C2.24896,2.33731 2.07273,2.51354 1.85208,2.51354L1.71979,2.51354L1.71979,1.71979z"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="1.00157"
|
||||
android:fillColor="#909090"
|
||||
android:strokeColor="#00000000"
|
||||
android:fillType="nonZero"
|
||||
android:strokeLineCap="round"/>
|
||||
<path
|
||||
android:pathData="M1.05859,1.71875A0.1325,0.1325 0,0 0,0.92578 1.85156A0.1325,0.1325 0,0 0,1.05859 1.98438L1.58789,1.98438A0.1325,0.1325 0,0 0,1.7207 1.85156A0.1325,0.1325 0,0 0,1.58789 1.71875L1.05859,1.71875z"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="0.264999"
|
||||
android:fillColor="#909090"
|
||||
android:strokeColor="#00000000"
|
||||
android:fillType="nonZero"
|
||||
android:strokeLineCap="round"/>
|
||||
<path
|
||||
android:pathData="M1.05859,2.24805A0.1325,0.1325 0,0 0,0.92578 2.38086A0.1325,0.1325 0,0 0,1.05859 2.51367L1.58789,2.51367A0.1325,0.1325 0,0 0,1.7207 2.38086A0.1325,0.1325 0,0 0,1.58789 2.24805L1.05859,2.24805z"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="0.264999"
|
||||
android:fillColor="#909090"
|
||||
android:strokeColor="#00000000"
|
||||
android:fillType="nonZero"
|
||||
android:strokeLineCap="round"/>
|
||||
<path
|
||||
android:pathData="m-1.32529,1.50326 l-0.41007,0.68344a0.12846,0.12846 60.48187,0 0,0.11015 0.19455l0.24958,-0 -0.11002,0.54956a0.08983,0.08983 21.14222,0 0,0.1651 0.06385L-0.91048,2.31121A0.12846,0.12846 60.48188,0 0,-1.02063 2.11667H-1.27021L-1.16019,1.56711a0.08983,0.08983 21.14223,0 0,-0.1651 -0.06385z"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="0.264583"
|
||||
android:fillColor="#fdbc4b"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeLineCap="round"/>
|
||||
<path
|
||||
android:pathData="M14.77216,-15.55645l26.53766,0l0,30.62037l-26.53766,0z"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="14.6855"
|
||||
android:fillColor="#cacaca"
|
||||
android:strokeLineCap="square"/>
|
||||
<path
|
||||
android:pathData="M15.79283,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="14.955"
|
||||
android:fillColor="#e74c3c"
|
||||
android:strokeLineCap="square"/>
|
||||
<path
|
||||
android:pathData="M19.87555,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="14.955"
|
||||
android:fillColor="#ed1515"
|
||||
android:strokeLineCap="square"/>
|
||||
<path
|
||||
android:pathData="M23.95827,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="14.955"
|
||||
android:fillColor="#f47750"
|
||||
android:strokeLineCap="square"/>
|
||||
<path
|
||||
android:pathData="M28.04098,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="14.955"
|
||||
android:fillColor="#fdbc4b"
|
||||
android:strokeLineCap="square"/>
|
||||
<path
|
||||
android:pathData="M32.1237,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="14.955"
|
||||
android:fillColor="#c9ce3b"
|
||||
android:strokeLineCap="square"/>
|
||||
<path
|
||||
android:pathData="M15.79283,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="14.955"
|
||||
android:fillColor="#da4453"
|
||||
android:strokeLineCap="square"/>
|
||||
<path
|
||||
android:pathData="M19.87555,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="14.955"
|
||||
android:fillColor="#c0392b"
|
||||
android:strokeLineCap="square"/>
|
||||
<path
|
||||
android:pathData="M23.95827,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="14.955"
|
||||
android:fillColor="#d35400"
|
||||
android:strokeLineCap="square"/>
|
||||
<path
|
||||
android:pathData="M28.04098,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="14.955"
|
||||
android:fillColor="#f67400"
|
||||
android:strokeLineCap="square"/>
|
||||
<path
|
||||
android:pathData="M32.1237,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="14.955"
|
||||
android:fillColor="#f39c1f"
|
||||
android:strokeLineCap="square"/>
|
||||
<path
|
||||
android:pathData="M15.79283,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="14.955"
|
||||
android:fillColor="#1cdc9a"
|
||||
android:strokeLineCap="square"/>
|
||||
<path
|
||||
android:pathData="M19.87555,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="14.955"
|
||||
android:fillColor="#2ecc71"
|
||||
android:strokeLineCap="square"/>
|
||||
<path
|
||||
android:pathData="M23.95827,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="14.955"
|
||||
android:fillColor="#1abc9c"
|
||||
android:strokeLineCap="square"/>
|
||||
<path
|
||||
android:pathData="M28.04098,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="14.955"
|
||||
android:fillColor="#3498db"
|
||||
android:strokeLineCap="square"/>
|
||||
<path
|
||||
android:pathData="M32.1237,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="14.955"
|
||||
android:fillColor="#3daee9"
|
||||
android:strokeLineCap="square"/>
|
||||
<path
|
||||
android:pathData="M15.79283,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="14.955"
|
||||
android:fillColor="#10d116"
|
||||
android:strokeLineCap="square"/>
|
||||
<path
|
||||
android:pathData="M19.87555,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="14.955"
|
||||
android:fillColor="#27ae60"
|
||||
android:strokeLineCap="square"/>
|
||||
<path
|
||||
android:pathData="M23.95827,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="14.955"
|
||||
android:fillColor="#16a085"
|
||||
android:strokeLineCap="square"/>
|
||||
<path
|
||||
android:pathData="M28.04098,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="14.955"
|
||||
android:fillColor="#2980b9"
|
||||
android:strokeLineCap="square"/>
|
||||
<path
|
||||
android:pathData="M32.1237,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="14.955"
|
||||
android:fillColor="#1d99f3"
|
||||
android:strokeLineCap="square"/>
|
||||
<path
|
||||
android:pathData="M36.20642,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="14.955"
|
||||
android:fillColor="#9b59b6"
|
||||
android:strokeLineCap="square"/>
|
||||
<path
|
||||
android:pathData="M36.20642,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="14.955"
|
||||
android:fillColor="#8e44ad"
|
||||
android:strokeLineCap="square"/>
|
||||
<path
|
||||
android:pathData="M15.79284,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="14.955"
|
||||
android:fillColor="#34495e"
|
||||
android:strokeLineCap="square"/>
|
||||
<path
|
||||
android:pathData="M19.87556,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="14.955"
|
||||
android:fillColor="#31363b"
|
||||
android:strokeLineCap="square"/>
|
||||
<path
|
||||
android:pathData="M23.95828,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="14.955"
|
||||
android:fillColor="#7f8c8d"
|
||||
android:strokeLineCap="square"/>
|
||||
<path
|
||||
android:pathData="M28.04099,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="14.955"
|
||||
android:fillColor="#bdc3c7"
|
||||
android:strokeLineCap="square"/>
|
||||
<path
|
||||
android:pathData="M32.12371,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="14.955"
|
||||
android:fillColor="#fcfcfc"
|
||||
android:strokeLineCap="square"/>
|
||||
<path
|
||||
android:pathData="M15.79284,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="14.955"
|
||||
android:fillColor="#2c3e50"
|
||||
android:strokeLineCap="square"/>
|
||||
<path
|
||||
android:pathData="M19.87556,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="14.955"
|
||||
android:fillColor="#232629"
|
||||
android:strokeLineCap="square"/>
|
||||
<path
|
||||
android:pathData="M23.95828,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="14.955"
|
||||
android:fillColor="#4d4d4d"
|
||||
android:strokeLineCap="square"/>
|
||||
<path
|
||||
android:pathData="M28.04099,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="14.955"
|
||||
android:fillColor="#95a5a6"
|
||||
android:strokeLineCap="square"/>
|
||||
<path
|
||||
android:pathData="M32.12371,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="14.955"
|
||||
android:fillColor="#eff0f1"
|
||||
android:strokeLineCap="square"/>
|
||||
<path
|
||||
android:pathData="M3.70262,1.19062A0.13229,0.13229 0,0 0,3.58583 1.26401A0.13229,0.13229 0,0 0,3.64526 1.44126L3.94446,1.59112C4.0556,1.64681 4.13708,1.74801 4.16719,1.86862L4.60127,3.60443C4.06966,3.68012 3.66126,4.09455 3.59875,4.63021L2.22209,4.63021C2.15315,4.03948 1.66802,3.57241 1.05937,3.57187C1.0537,3.57183 1.04798,3.57184 1.04231,3.57187L0.52917,3.57187A0.13229,0.13229 0,0 0,0.39687 3.70417A0.13229,0.13229 0,0 0,0.52917 3.83646L1.04231,3.83646A0.1323,0.1323 0,0 0,1.04335 3.83646C1.04802,3.83642 1.05263,3.83642 1.0573,3.83646A0.1323,0.1323 0,0 0,1.05833 3.83646C1.57134,3.83646 1.98438,4.24949 1.98437,4.7625A0.1323,0.1323 0,0 0,2.11667 4.89479L3.70417,4.89479A0.1323,0.1323 0,0 0,3.83646 4.7625C3.83646,4.24949 4.24949,3.83646 4.7625,3.83646A0.1323,0.1323 0,0 0,4.89066 3.67213L4.4235,1.80454C4.37475,1.60919 4.24332,1.44464 4.06332,1.35444A0.1323,0.1323 0,0 0,4.0628 1.35444L3.76308,1.20458A0.13229,0.13229 0,0 0,3.70262 1.19062z"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="1.00157481"
|
||||
android:fillColor="#ffffff"
|
||||
android:strokeColor="#00000000"
|
||||
android:fillType="nonZero"
|
||||
android:strokeLineCap="round"/>
|
||||
<path
|
||||
android:pathData="M4.76172,4.13672C4.42656,4.13672 4.15234,4.41094 4.15234,4.74609C4.15234,5.08125 4.42656,5.35547 4.76172,5.35547C5.09687,5.35547 5.37109,5.08125 5.37109,4.74609C5.37109,4.41094 5.09687,4.13672 4.76172,4.13672zM4.76172,4.33789C4.98794,4.33789 5.16797,4.51987 5.16797,4.74609C5.16797,4.97231 4.98794,5.1543 4.76172,5.1543C4.5355,5.1543 4.35352,4.97231 4.35352,4.74609C4.35352,4.51987 4.5355,4.33789 4.76172,4.33789z"
|
||||
android:strokeAlpha="0.997"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="0.201567"
|
||||
android:fillColor="#ffffff"
|
||||
android:strokeColor="#00000000"
|
||||
android:fillType="nonZero"
|
||||
android:fillAlpha="0.997"
|
||||
android:strokeLineCap="butt"/>
|
||||
<path
|
||||
android:pathData="m1.02215,4.13672c-0.33515,0 -0.60938,0.27422 -0.60938,0.60938 0,0.33515 0.27422,0.60937 0.60938,0.60938 0.33515,-0 0.60937,-0.27422 0.60938,-0.60938 -0,-0.33515 -0.27422,-0.60938 -0.60938,-0.60938zM1.02215,4.33789c0.22622,0 0.40625,0.18198 0.40625,0.4082 -0,0.22622 -0.18003,0.4082 -0.40625,0.4082 -0.22622,0 -0.4082,-0.18198 -0.4082,-0.4082 0,-0.22622 0.18198,-0.4082 0.4082,-0.4082z"
|
||||
android:strokeAlpha="0.997"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="0.201567"
|
||||
android:fillColor="#ffffff"
|
||||
android:strokeColor="#00000000"
|
||||
android:fillType="nonZero"
|
||||
android:fillAlpha="0.997"
|
||||
android:strokeLineCap="butt"/>
|
||||
<path
|
||||
android:fillColor="#909090"
|
||||
android:fillType="nonZero"
|
||||
android:pathData="M2.36328,1.98438A0.1325,0.1325 0,0 0,2.25 2.13477A0.1325,0.1325 0,0 0,2.39844 2.24805C2.64244,2.2158 2.90617,2.30436 3.08203,2.47656C3.20488,2.59686 3.28941,2.75907 3.30859,2.92578C3.32135,3.03664 3.30546,3.15964 3.29297,3.29492C3.28044,3.43061 3.27019,3.5832 3.31055,3.73828C3.34385,3.86624 3.41023,3.98289 3.50195,4.07813C3.59367,4.17336 3.70932,4.24512 3.83594,4.2832A0.1325,0.1325 0,0 0,4.00195 4.19336A0.1325,0.1325 0,0 0,3.91211 4.0293C3.82972,4.00452 3.75304,3.9565 3.69336,3.89453C3.63368,3.83257 3.59003,3.75318 3.56836,3.66992C3.5418,3.56787 3.54669,3.4492 3.55859,3.32031C3.57054,3.19102 3.58793,3.04763 3.57031,2.89453C3.54353,2.66173 3.43207,2.44818 3.26758,2.28711C3.03092,2.05538 2.69165,1.94099 2.36328,1.98438z"
|
||||
android:strokeWidth="0.264999"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeLineCap="round"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#909090"
|
||||
android:fillType="nonZero"
|
||||
android:pathData="M1.5875,1.45521A0.13251,0.13251 0,0 0,1.45521 1.5875L1.45521,2.64583A0.13251,0.13251 0,0 0,1.5875 2.77812L1.85208,2.77812C2.21594,2.77812 2.51354,2.48053 2.51354,2.11667C2.51354,1.75281 2.21594,1.45521 1.85208,1.45521L1.5875,1.45521zM1.71979,1.71979L1.85208,1.71979C2.07273,1.71979 2.24896,1.89602 2.24896,2.11667C2.24896,2.33731 2.07273,2.51354 1.85208,2.51354L1.71979,2.51354L1.71979,1.71979z"
|
||||
android:strokeWidth="1.00157"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeLineCap="round"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#909090"
|
||||
android:fillType="nonZero"
|
||||
android:pathData="M1.05859,1.71875A0.1325,0.1325 0,0 0,0.92578 1.85156A0.1325,0.1325 0,0 0,1.05859 1.98438L1.58789,1.98438A0.1325,0.1325 0,0 0,1.7207 1.85156A0.1325,0.1325 0,0 0,1.58789 1.71875L1.05859,1.71875z"
|
||||
android:strokeWidth="0.264999"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeLineCap="round"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#909090"
|
||||
android:fillType="nonZero"
|
||||
android:pathData="M1.05859,2.24805A0.1325,0.1325 0,0 0,0.92578 2.38086A0.1325,0.1325 0,0 0,1.05859 2.51367L1.58789,2.51367A0.1325,0.1325 0,0 0,1.7207 2.38086A0.1325,0.1325 0,0 0,1.58789 2.24805L1.05859,2.24805z"
|
||||
android:strokeWidth="0.264999"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeLineCap="round"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#fdbc4b"
|
||||
android:pathData="m-1.32529,1.50326 l-0.41007,0.68344a0.12846,0.12846 60.48187,0 0,0.11015 0.19455l0.24958,-0 -0.11002,0.54956a0.08983,0.08983 21.14222,0 0,0.1651 0.06385L-0.91048,2.31121A0.12846,0.12846 60.48188,0 0,-1.02063 2.11667H-1.27021L-1.16019,1.56711a0.08983,0.08983 21.14223,0 0,-0.1651 -0.06385z"
|
||||
android:strokeWidth="0.264583"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeLineCap="round"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#cacaca"
|
||||
android:pathData="M14.77216,-15.55645l26.53766,0l0,30.62037l-26.53766,0z"
|
||||
android:strokeWidth="14.6855"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#e74c3c"
|
||||
android:pathData="M15.79283,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#ed1515"
|
||||
android:pathData="M19.87555,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#f47750"
|
||||
android:pathData="M23.95827,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#fdbc4b"
|
||||
android:pathData="M28.04098,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#c9ce3b"
|
||||
android:pathData="M32.1237,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#da4453"
|
||||
android:pathData="M15.79283,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#c0392b"
|
||||
android:pathData="M19.87555,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#d35400"
|
||||
android:pathData="M23.95827,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#f67400"
|
||||
android:pathData="M28.04098,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#f39c1f"
|
||||
android:pathData="M32.1237,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#1cdc9a"
|
||||
android:pathData="M15.79283,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#2ecc71"
|
||||
android:pathData="M19.87555,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#1abc9c"
|
||||
android:pathData="M23.95827,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#3498db"
|
||||
android:pathData="M28.04098,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#3daee9"
|
||||
android:pathData="M32.1237,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#10d116"
|
||||
android:pathData="M15.79283,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#27ae60"
|
||||
android:pathData="M19.87555,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#16a085"
|
||||
android:pathData="M23.95827,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#2980b9"
|
||||
android:pathData="M28.04098,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#1d99f3"
|
||||
android:pathData="M32.1237,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#9b59b6"
|
||||
android:pathData="M36.20642,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#8e44ad"
|
||||
android:pathData="M36.20642,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#34495e"
|
||||
android:pathData="M15.79284,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#31363b"
|
||||
android:pathData="M19.87556,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#7f8c8d"
|
||||
android:pathData="M23.95828,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#bdc3c7"
|
||||
android:pathData="M28.04099,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#fcfcfc"
|
||||
android:pathData="M32.12371,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#2c3e50"
|
||||
android:pathData="M15.79284,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#232629"
|
||||
android:pathData="M19.87556,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#4d4d4d"
|
||||
android:pathData="M23.95828,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#95a5a6"
|
||||
android:pathData="M28.04099,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#eff0f1"
|
||||
android:pathData="M32.12371,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#ffffff"
|
||||
android:fillType="nonZero"
|
||||
android:pathData="M3.70262,1.19062A0.13229,0.13229 0,0 0,3.58583 1.26401A0.13229,0.13229 0,0 0,3.64526 1.44126L3.94446,1.59112C4.0556,1.64681 4.13708,1.74801 4.16719,1.86862L4.60127,3.60443C4.06966,3.68012 3.66126,4.09455 3.59875,4.63021L2.22209,4.63021C2.15315,4.03948 1.66802,3.57241 1.05937,3.57187C1.0537,3.57183 1.04798,3.57184 1.04231,3.57187L0.52917,3.57187A0.13229,0.13229 0,0 0,0.39687 3.70417A0.13229,0.13229 0,0 0,0.52917 3.83646L1.04231,3.83646A0.1323,0.1323 0,0 0,1.04335 3.83646C1.04802,3.83642 1.05263,3.83642 1.0573,3.83646A0.1323,0.1323 0,0 0,1.05833 3.83646C1.57134,3.83646 1.98438,4.24949 1.98437,4.7625A0.1323,0.1323 0,0 0,2.11667 4.89479L3.70417,4.89479A0.1323,0.1323 0,0 0,3.83646 4.7625C3.83646,4.24949 4.24949,3.83646 4.7625,3.83646A0.1323,0.1323 0,0 0,4.89066 3.67213L4.4235,1.80454C4.37475,1.60919 4.24332,1.44464 4.06332,1.35444A0.1323,0.1323 0,0 0,4.0628 1.35444L3.76308,1.20458A0.13229,0.13229 0,0 0,3.70262 1.19062z"
|
||||
android:strokeWidth="1.00157481"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeLineCap="round"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillAlpha="0.997"
|
||||
android:fillColor="#ffffff"
|
||||
android:fillType="nonZero"
|
||||
android:pathData="M4.76172,4.13672C4.42656,4.13672 4.15234,4.41094 4.15234,4.74609C4.15234,5.08125 4.42656,5.35547 4.76172,5.35547C5.09687,5.35547 5.37109,5.08125 5.37109,4.74609C5.37109,4.41094 5.09687,4.13672 4.76172,4.13672zM4.76172,4.33789C4.98794,4.33789 5.16797,4.51987 5.16797,4.74609C5.16797,4.97231 4.98794,5.1543 4.76172,5.1543C4.5355,5.1543 4.35352,4.97231 4.35352,4.74609C4.35352,4.51987 4.5355,4.33789 4.76172,4.33789z"
|
||||
android:strokeWidth="0.201567"
|
||||
android:strokeAlpha="0.997"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeLineCap="butt"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillAlpha="0.997"
|
||||
android:fillColor="#ffffff"
|
||||
android:fillType="nonZero"
|
||||
android:pathData="m1.02215,4.13672c-0.33515,0 -0.60938,0.27422 -0.60938,0.60938 0,0.33515 0.27422,0.60937 0.60938,0.60938 0.33515,-0 0.60937,-0.27422 0.60938,-0.60938 -0,-0.33515 -0.27422,-0.60938 -0.60938,-0.60938zM1.02215,4.33789c0.22622,0 0.40625,0.18198 0.40625,0.4082 -0,0.22622 -0.18003,0.4082 -0.40625,0.4082 -0.22622,0 -0.4082,-0.18198 -0.4082,-0.4082 0,-0.22622 0.18198,-0.4082 0.4082,-0.4082z"
|
||||
android:strokeWidth="0.201567"
|
||||
android:strokeAlpha="0.997"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeLineCap="butt"
|
||||
android:strokeLineJoin="round" />
|
||||
</vector>
|
||||
|
||||
@@ -1,6 +1,13 @@
|
||||
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||
android:viewportHeight="24.0" android:viewportWidth="24.0"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#FF000000" android:pathData="M10.18,9"/>
|
||||
<path android:fillColor="#FF000000" android:pathData="M21,16v-2l-8,-5V3.5c0,-0.83 -0.67,-1.5 -1.5,-1.5S10,2.67 10,3.5V9l-8,5v2l8,-2.5V19l-2,1.5V22l3.5,-1 3.5,1v-1.5L13,19v-5.5l8,2.5z"/>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="#FFFFFF"
|
||||
android:viewportWidth="24.0"
|
||||
android:viewportHeight="24.0">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M10.18,9" />
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M21,16v-2l-8,-5V3.5c0,-0.83 -0.67,-1.5 -1.5,-1.5S10,2.67 10,3.5V9l-8,5v2l8,-2.5V19l-2,1.5V22l3.5,-1 3.5,1v-1.5L13,19v-5.5l8,2.5z" />
|
||||
</vector>
|
||||
|
||||
@@ -1,137 +1,273 @@
|
||||
<vector android:height="24dp" android:viewportHeight="5.820833"
|
||||
android:viewportWidth="5.820833" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#ffffff"
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="5.820833"
|
||||
android:viewportHeight="5.820833">
|
||||
<path
|
||||
android:fillColor="#ffffff"
|
||||
android:pathData="m3.37221,1.25278c0.24151,0 0.4391,-0.1976 0.4391,-0.4391 0,-0.24151 -0.1976,-0.4391 -0.4391,-0.4391 -0.24151,0 -0.4391,0.1976 -0.4391,0.4391 0,0.24151 0.1976,0.4391 0.4391,0.4391zM2.58182,4.30455 L2.80137,3.33852 3.26243,3.77763V5.09494H3.70154V3.4483L3.24048,3.0092 3.37221,2.35054c0.28542,0.32933 0.72452,0.54888 1.20753,0.54888V2.46032c-0.41715,0 -0.76843,-0.21955 -0.94407,-0.52692L3.41612,1.58211C3.3283,1.45038 3.19657,1.36256 3.04288,1.36256c-0.06587,0 -0.10978,0.02196 -0.17564,0.02196L1.72557,1.86753V2.89942H2.16468V2.15294L2.55987,1.99926 2.20859,3.77763 1.13278,3.55808 1.04496,3.99718Z"
|
||||
android:strokeColor="#00000000" android:strokeWidth="0.219552"/>
|
||||
<path android:fillColor="#cacaca"
|
||||
android:strokeWidth="0.219552"
|
||||
android:strokeColor="#00000000" />
|
||||
<path
|
||||
android:fillColor="#cacaca"
|
||||
android:pathData="M14.77216,-15.55645l26.53766,0l0,30.62037l-26.53766,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.6855"/>
|
||||
<path android:fillColor="#e74c3c"
|
||||
android:strokeWidth="14.6855"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#e74c3c"
|
||||
android:pathData="M15.79283,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#ed1515"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#ed1515"
|
||||
android:pathData="M19.87555,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#f47750"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#f47750"
|
||||
android:pathData="M23.95827,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#fdbc4b"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#fdbc4b"
|
||||
android:pathData="M28.04098,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#c9ce3b"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#c9ce3b"
|
||||
android:pathData="M32.1237,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#da4453"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#da4453"
|
||||
android:pathData="M15.79283,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#c0392b"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#c0392b"
|
||||
android:pathData="M19.87555,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#d35400"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#d35400"
|
||||
android:pathData="M23.95827,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#f67400"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#f67400"
|
||||
android:pathData="M28.04098,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#f39c1f"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#f39c1f"
|
||||
android:pathData="M32.1237,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#1cdc9a"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#1cdc9a"
|
||||
android:pathData="M15.79283,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#2ecc71"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#2ecc71"
|
||||
android:pathData="M19.87555,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#1abc9c"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#1abc9c"
|
||||
android:pathData="M23.95827,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#3498db"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#3498db"
|
||||
android:pathData="M28.04098,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#3daee9"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#3daee9"
|
||||
android:pathData="M32.1237,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#10d116"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#10d116"
|
||||
android:pathData="M15.79283,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#27ae60"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#27ae60"
|
||||
android:pathData="M19.87555,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#16a085"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#16a085"
|
||||
android:pathData="M23.95827,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#2980b9"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#2980b9"
|
||||
android:pathData="M28.04098,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#1d99f3"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#1d99f3"
|
||||
android:pathData="M32.1237,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#9b59b6"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#9b59b6"
|
||||
android:pathData="M36.20642,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#8e44ad"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#8e44ad"
|
||||
android:pathData="M36.20642,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#34495e"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#34495e"
|
||||
android:pathData="M15.79284,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#31363b"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#31363b"
|
||||
android:pathData="M19.87556,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#7f8c8d"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#7f8c8d"
|
||||
android:pathData="M23.95828,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#bdc3c7"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#bdc3c7"
|
||||
android:pathData="M28.04099,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#fcfcfc"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#fcfcfc"
|
||||
android:pathData="M32.12371,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#2c3e50"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#2c3e50"
|
||||
android:pathData="M15.79284,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#232629"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#232629"
|
||||
android:pathData="M19.87556,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#4d4d4d"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#4d4d4d"
|
||||
android:pathData="M23.95828,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#95a5a6"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#95a5a6"
|
||||
android:pathData="M28.04099,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#eff0f1"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#eff0f1"
|
||||
android:pathData="M32.12371,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillAlpha="0.997" android:fillColor="#ffffff"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillAlpha="0.997"
|
||||
android:fillColor="#ffffff"
|
||||
android:pathData="M0.86526,2.98747m0.03886,-0.20311a0.20679,0.20679 55.83268,1 1,-0.07773 0.40621a0.20679,0.20679 55.83267,1 1,0.07773 -0.40621"
|
||||
android:strokeAlpha="0.997" android:strokeColor="#00000000"
|
||||
android:strokeLineJoin="round" android:strokeWidth="0.264999"/>
|
||||
<path android:fillAlpha="0.997" android:fillColor="#ffffff"
|
||||
android:strokeWidth="0.264999"
|
||||
android:strokeAlpha="0.997"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillAlpha="0.997"
|
||||
android:fillColor="#ffffff"
|
||||
android:pathData="M0.77727,3.44729m0.03886,-0.20311a0.20679,0.20679 55.83268,1 1,-0.07773 0.40621a0.20679,0.20679 55.83267,1 1,0.07773 -0.40621"
|
||||
android:strokeAlpha="0.997" android:strokeColor="#00000000"
|
||||
android:strokeLineJoin="round" android:strokeWidth="0.264999"/>
|
||||
<path android:fillAlpha="0.997" android:fillColor="#ffffff"
|
||||
android:strokeWidth="0.264999"
|
||||
android:strokeAlpha="0.997"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillAlpha="0.997"
|
||||
android:fillColor="#ffffff"
|
||||
android:pathData="M0.68928,3.9071m0.03886,-0.20311a0.20679,0.20679 55.83268,1 1,-0.07773 0.40621a0.20679,0.20679 55.83268,1 1,0.07773 -0.40621"
|
||||
android:strokeAlpha="0.997" android:strokeColor="#00000000"
|
||||
android:strokeLineJoin="round" android:strokeWidth="0.264999"/>
|
||||
<path android:fillAlpha="0.997" android:fillColor="#ffffff"
|
||||
android:strokeWidth="0.264999"
|
||||
android:strokeAlpha="0.997"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillAlpha="0.997"
|
||||
android:fillColor="#ffffff"
|
||||
android:pathData="M0.6013,4.36692m0.03886,-0.20311a0.20679,0.20679 55.83268,1 1,-0.07773 0.40621a0.20679,0.20679 55.83268,1 1,0.07773 -0.40621"
|
||||
android:strokeAlpha="0.997" android:strokeColor="#00000000"
|
||||
android:strokeLineJoin="round" android:strokeWidth="0.264999"/>
|
||||
<path android:fillAlpha="0.997" android:fillColor="#ffffff"
|
||||
android:strokeWidth="0.264999"
|
||||
android:strokeAlpha="0.997"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillAlpha="0.997"
|
||||
android:fillColor="#ffffff"
|
||||
android:pathData="M2.8026,5.44778m-0.20678,0.00257a0.20679,0.20679 134.28799,1 1,0.41355 -0.00514a0.20679,0.20679 134.28799,1 1,-0.41355 0.00514"
|
||||
android:strokeAlpha="0.997" android:strokeColor="#00000000"
|
||||
android:strokeLineJoin="round" android:strokeWidth="0.264999"/>
|
||||
<path android:fillAlpha="0.997" android:fillColor="#ffffff"
|
||||
android:strokeWidth="0.264999"
|
||||
android:strokeAlpha="0.997"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillAlpha="0.997"
|
||||
android:fillColor="#ffffff"
|
||||
android:pathData="M3.27072,5.44197m-0.20678,0.00257a0.20679,0.20679 134.28799,1 1,0.41355 -0.00514a0.20679,0.20679 134.28799,1 1,-0.41355 0.00514"
|
||||
android:strokeAlpha="0.997" android:strokeColor="#00000000"
|
||||
android:strokeLineJoin="round" android:strokeWidth="0.264999"/>
|
||||
<path android:fillAlpha="0.997" android:fillColor="#ffffff"
|
||||
android:strokeWidth="0.264999"
|
||||
android:strokeAlpha="0.997"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillAlpha="0.997"
|
||||
android:fillColor="#ffffff"
|
||||
android:pathData="M3.73884,5.43615m-0.20678,0.00257a0.20679,0.20679 134.28799,1 1,0.41355 -0.00514a0.20679,0.20679 134.28799,1 1,-0.41355 0.00514"
|
||||
android:strokeAlpha="0.997" android:strokeColor="#00000000"
|
||||
android:strokeLineJoin="round" android:strokeWidth="0.264999"/>
|
||||
<path android:fillAlpha="0.997" android:fillColor="#ffffff"
|
||||
android:strokeWidth="0.264999"
|
||||
android:strokeAlpha="0.997"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillAlpha="0.997"
|
||||
android:fillColor="#ffffff"
|
||||
android:pathData="M4.20697,5.43033m-0.20678,0.00257a0.20679,0.20679 134.28799,1 1,0.41355 -0.00514a0.20679,0.20679 134.28799,1 1,-0.41355 0.00514"
|
||||
android:strokeAlpha="0.997" android:strokeColor="#00000000"
|
||||
android:strokeLineJoin="round" android:strokeWidth="0.264999"/>
|
||||
android:strokeWidth="0.264999"
|
||||
android:strokeAlpha="0.997"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeLineJoin="round" />
|
||||
</vector>
|
||||
|
||||
@@ -1,145 +1,290 @@
|
||||
<vector android:height="24dp" android:viewportHeight="5.820833"
|
||||
android:viewportWidth="5.820833" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#cacaca"
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="5.820833"
|
||||
android:viewportHeight="5.820833">
|
||||
<path
|
||||
android:fillColor="#cacaca"
|
||||
android:pathData="M14.77216,-15.55645l26.53766,0l0,30.62037l-26.53766,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.6855"/>
|
||||
<path android:fillColor="#e74c3c"
|
||||
android:strokeWidth="14.6855"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#e74c3c"
|
||||
android:pathData="M15.79283,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#ed1515"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#ed1515"
|
||||
android:pathData="M19.87555,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#f47750"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#f47750"
|
||||
android:pathData="M23.95827,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#fdbc4b"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#fdbc4b"
|
||||
android:pathData="M28.04098,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#c9ce3b"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#c9ce3b"
|
||||
android:pathData="M32.1237,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#da4453"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#da4453"
|
||||
android:pathData="M15.79283,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#c0392b"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#c0392b"
|
||||
android:pathData="M19.87555,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#d35400"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#d35400"
|
||||
android:pathData="M23.95827,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#f67400"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#f67400"
|
||||
android:pathData="M28.04098,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#f39c1f"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#f39c1f"
|
||||
android:pathData="M32.1237,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#1cdc9a"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#1cdc9a"
|
||||
android:pathData="M15.79283,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#2ecc71"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#2ecc71"
|
||||
android:pathData="M19.87555,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#1abc9c"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#1abc9c"
|
||||
android:pathData="M23.95827,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#3498db"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#3498db"
|
||||
android:pathData="M28.04098,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#3daee9"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#3daee9"
|
||||
android:pathData="M32.1237,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#10d116"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#10d116"
|
||||
android:pathData="M15.79283,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#27ae60"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#27ae60"
|
||||
android:pathData="M19.87555,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#16a085"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#16a085"
|
||||
android:pathData="M23.95827,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#2980b9"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#2980b9"
|
||||
android:pathData="M28.04098,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#1d99f3"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#1d99f3"
|
||||
android:pathData="M32.1237,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#9b59b6"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#9b59b6"
|
||||
android:pathData="M36.20642,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#8e44ad"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#8e44ad"
|
||||
android:pathData="M36.20642,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#34495e"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#34495e"
|
||||
android:pathData="M15.79284,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#31363b"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#31363b"
|
||||
android:pathData="M19.87556,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#7f8c8d"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#7f8c8d"
|
||||
android:pathData="M23.95828,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#bdc3c7"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#bdc3c7"
|
||||
android:pathData="M28.04099,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#fcfcfc"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#fcfcfc"
|
||||
android:pathData="M32.12371,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#2c3e50"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#2c3e50"
|
||||
android:pathData="M15.79284,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#232629"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#232629"
|
||||
android:pathData="M19.87556,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#4d4d4d"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#4d4d4d"
|
||||
android:pathData="M23.95828,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#95a5a6"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#95a5a6"
|
||||
android:pathData="M28.04099,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#eff0f1"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#eff0f1"
|
||||
android:pathData="M32.12371,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#ffffff" android:fillType="nonZero"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#ffffff"
|
||||
android:fillType="nonZero"
|
||||
android:pathData="M1.85742,3.30664A0.13229,0.13229 0,0 0,1.73633 3.375L1.07422,4.56641A0.1323,0.1323 0,0 0,1.20508 4.76172L2.39648,4.62891A0.13229,0.13229 0,0 0,2.51367 4.48242A0.13229,0.13229 0,0 0,2.36719 4.36719L1.43164,4.4707L1.9668,3.50391A0.13229,0.13229 0,0 0,1.91602 3.32422A0.13229,0.13229 0,0 0,1.85742 3.30664z"
|
||||
android:strokeColor="#00000000" android:strokeLineCap="round"
|
||||
android:strokeLineJoin="round" android:strokeWidth="0.264583"/>
|
||||
<path android:fillColor="#ffffff" android:fillType="nonZero"
|
||||
android:strokeWidth="0.264583"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeLineCap="round"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#ffffff"
|
||||
android:fillType="nonZero"
|
||||
android:pathData="M3.17578,1.98438A0.13229,0.13229 0,0 0,3.04297 2.11719A0.13229,0.13229 0,0 0,3.17578 2.24805L3.61133,2.24805L4.50586,4.67578A0.13229,0.13229 0,0 0,4.67578 4.75391A0.13229,0.13229 0,0 0,4.75391 4.58398L3.82813,2.07031A0.1323,0.1323 0,0 0,3.70508 1.98438L3.17578,1.98438z"
|
||||
android:strokeColor="#00000000" android:strokeLineCap="round"
|
||||
android:strokeLineJoin="round" android:strokeWidth="0.264583"/>
|
||||
<path android:fillColor="#ffffff" android:fillType="nonZero"
|
||||
android:strokeWidth="0.264583"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeLineCap="round"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#ffffff"
|
||||
android:fillType="nonZero"
|
||||
android:pathData="M1.31672,3.04271A0.1323,0.1323 0,0 0,1.19062 3.175L1.19062,3.43958A0.1323,0.1323 0,0 0,1.32292 3.57187L2.11667,3.57187A0.1323,0.1323 45,0 0,2.24586 3.45664A0.1323,0.1323 0,0 0,2.24689 3.44113A0.1323,0.1323 0,0 0,2.19263 3.33261A0.1323,0.1323 0,0 0,2.17971 3.32434A0.1323,0.1323 45,0 0,2.13527 3.30884A0.1323,0.1323 0,0 0,2.11977 3.30729A0.1323,0.1323 0,0 0,2.11667 3.30729C1.87413,3.30729 1.69678,3.24721 1.58027,3.18895C1.46375,3.1307 1.41645,3.08147 1.41645,3.08147A0.1323,0.1323 0,0 0,1.31672 3.04271z"
|
||||
android:strokeColor="#00000000" android:strokeLineCap="round"
|
||||
android:strokeLineJoin="round" android:strokeWidth="0.999999"/>
|
||||
<path android:fillColor="#ffffff" android:fillType="nonZero"
|
||||
android:strokeWidth="0.999999"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeLineCap="round"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#ffffff"
|
||||
android:fillType="nonZero"
|
||||
android:pathData="M2.77734,4.10156A0.1325,0.1325 0,0 0,2.64648 4.23242A0.1325,0.1325 0,0 0,2.77734 4.36523L3.04297,4.36523A0.1325,0.1325 0,0 0,3.17578 4.23242A0.1325,0.1325 0,0 0,3.04297 4.10156L2.77734,4.10156z"
|
||||
android:strokeColor="#00000000" android:strokeLineCap="round"
|
||||
android:strokeLineJoin="miter" android:strokeWidth="0.265"/>
|
||||
<path android:fillColor="#000000" android:fillType="nonZero"
|
||||
android:strokeWidth="0.265"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeLineCap="round"
|
||||
android:strokeLineJoin="miter" />
|
||||
<path
|
||||
android:fillColor="#000000"
|
||||
android:fillType="nonZero"
|
||||
android:pathData="m4.36562,2.77812c-0.07185,0.00167 -0.13231,0.06042 -0.13229,0.13229 0,0.07306 0.05923,0.13229 0.13229,0.13229z"
|
||||
android:strokeColor="#00000000" android:strokeLineCap="round"
|
||||
android:strokeLineJoin="round" android:strokeWidth="1.00157"/>
|
||||
<path android:fillColor="#ffffff" android:fillType="nonZero"
|
||||
android:strokeWidth="1.00157"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeLineCap="round"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#ffffff"
|
||||
android:fillType="nonZero"
|
||||
android:pathData="M4.36252,2.64583C4.22022,2.64913 4.101,2.76421 4.10104,2.91042C4.10104,3.05509 4.22095,3.175 4.36562,3.175A0.13251,0.13251 0,0 0,4.49792 3.04271L4.49792,2.77812A0.13251,0.13251 0,0 0,4.36252 2.64583z"
|
||||
android:strokeColor="#00000000" android:strokeLineCap="round"
|
||||
android:strokeLineJoin="round" android:strokeWidth="1.00157"/>
|
||||
<path android:fillAlpha="0.994135" android:fillColor="#ffffff"
|
||||
android:strokeWidth="1.00157"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeLineCap="round"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillAlpha="0.994135"
|
||||
android:fillColor="#ffffff"
|
||||
android:fillType="nonZero"
|
||||
android:pathData="M2.91042,3.04271C2.74421,3.04271 2.62752,3.16093 2.56884,3.30729L2.11667,3.30729A0.1323,0.1323 0,0 0,1.99058 3.47989L2.41381,4.80281A0.1323,0.1323 0,0 0,2.5399 4.89479L3.43958,4.89479A0.1323,0.1323 0,0 0,3.57187 4.7625C3.57187,4.70364 3.57183,4.67513 3.57187,4.63021C3.5719,4.18629 3.84776,3.79035 4.26434,3.63699A0.1323,0.1323 0,0 0,4.34289 3.46697L4.21835,3.12901A0.1323,0.1323 0,0 0,4.09432 3.04271L2.91042,3.04271zM2.91042,3.30729L4.00234,3.30729L4.06332,3.47369C3.61802,3.69527 3.30732,4.12482 3.30729,4.63021L2.63653,4.63021L2.29805,3.57187L2.64583,3.57187A0.1323,0.1323 0,0 0,2.77812 3.43958C2.77812,3.36495 2.83579,3.30729 2.91042,3.30729z"
|
||||
android:strokeAlpha="0.994135" android:strokeColor="#00000000"
|
||||
android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="0.999999"/>
|
||||
<path android:fillColor="#ffffff" android:fillType="nonZero"
|
||||
android:strokeWidth="0.999999"
|
||||
android:strokeAlpha="0.994135"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeLineCap="round"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#ffffff"
|
||||
android:fillType="nonZero"
|
||||
android:pathData="M2.77734,3.70313A0.1325,0.1325 0,0 0,2.64648 3.83594A0.1325,0.1325 0,0 0,2.77734 3.96875L3.04297,3.96875A0.1325,0.1325 0,0 0,3.17578 3.83594A0.1325,0.1325 0,0 0,3.04297 3.70313L2.77734,3.70313z"
|
||||
android:strokeColor="#00000000" android:strokeLineCap="round"
|
||||
android:strokeLineJoin="miter" android:strokeWidth="0.265"/>
|
||||
<path android:fillAlpha="0.997" android:fillColor="#ffffff"
|
||||
android:strokeWidth="0.265"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeLineCap="round"
|
||||
android:strokeLineJoin="miter" />
|
||||
<path
|
||||
android:fillAlpha="0.997"
|
||||
android:fillColor="#ffffff"
|
||||
android:fillType="nonZero"
|
||||
android:pathData="m4.62582,3.82507c-0.43457,0 -0.79012,0.35556 -0.79012,0.79012 0,0.43457 0.35556,0.79012 0.79012,0.79012 0.43457,-0 0.79012,-0.35556 0.79012,-0.79012 0,-0.43457 -0.35556,-0.79012 -0.79012,-0.79012zM4.62582,4.08592c0.29332,0 0.52675,0.23596 0.52675,0.52928 0,0.29332 -0.23343,0.52928 -0.52675,0.52928 -0.29332,0 -0.52928,-0.23596 -0.52928,-0.52928 0,-0.29332 0.23596,-0.52928 0.52928,-0.52928z"
|
||||
android:strokeAlpha="0.997" android:strokeColor="#00000000"
|
||||
android:strokeLineCap="butt" android:strokeLineJoin="round" android:strokeWidth="0.261354"/>
|
||||
<path android:fillAlpha="0.997" android:fillColor="#ffffff"
|
||||
android:strokeWidth="0.261354"
|
||||
android:strokeAlpha="0.997"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeLineCap="butt"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillAlpha="0.997"
|
||||
android:fillColor="#ffffff"
|
||||
android:fillType="nonZero"
|
||||
android:pathData="m1.2138,3.82507c-0.43457,0 -0.79012,0.35556 -0.79012,0.79012 0,0.43457 0.35556,0.79012 0.79012,0.79012 0.43457,-0 0.79012,-0.35556 0.79012,-0.79012 0,-0.43457 -0.35556,-0.79012 -0.79012,-0.79012zM1.2138,4.08592c0.29332,0 0.52675,0.23596 0.52675,0.52928 0,0.29332 -0.23343,0.52928 -0.52675,0.52928 -0.29332,0 -0.52928,-0.23596 -0.52928,-0.52928 0,-0.29332 0.23596,-0.52928 0.52928,-0.52928z"
|
||||
android:strokeAlpha="0.997" android:strokeColor="#00000000"
|
||||
android:strokeLineCap="butt" android:strokeLineJoin="round" android:strokeWidth="0.261354"/>
|
||||
android:strokeWidth="0.261354"
|
||||
android:strokeAlpha="0.997"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeLineCap="butt"
|
||||
android:strokeLineJoin="round" />
|
||||
</vector>
|
||||
|
||||
@@ -1,108 +1,216 @@
|
||||
<vector android:height="24dp" android:viewportHeight="5.820833"
|
||||
android:viewportWidth="5.820833" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#cacaca"
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="5.820833"
|
||||
android:viewportHeight="5.820833">
|
||||
<path
|
||||
android:fillColor="#cacaca"
|
||||
android:pathData="M14.77216,-15.55645l26.53766,0l0,30.62037l-26.53766,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.6855"/>
|
||||
<path android:fillColor="#e74c3c"
|
||||
android:strokeWidth="14.6855"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#e74c3c"
|
||||
android:pathData="M15.79283,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#ed1515"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#ed1515"
|
||||
android:pathData="M19.87555,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#f47750"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#f47750"
|
||||
android:pathData="M23.95827,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#fdbc4b"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#fdbc4b"
|
||||
android:pathData="M28.04098,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#c9ce3b"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#c9ce3b"
|
||||
android:pathData="M32.1237,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#da4453"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#da4453"
|
||||
android:pathData="M15.79283,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#c0392b"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#c0392b"
|
||||
android:pathData="M19.87555,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#d35400"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#d35400"
|
||||
android:pathData="M23.95827,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#f67400"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#f67400"
|
||||
android:pathData="M28.04098,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#f39c1f"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#f39c1f"
|
||||
android:pathData="M32.1237,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#1cdc9a"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#1cdc9a"
|
||||
android:pathData="M15.79283,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#2ecc71"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#2ecc71"
|
||||
android:pathData="M19.87555,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#1abc9c"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#1abc9c"
|
||||
android:pathData="M23.95827,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#3498db"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#3498db"
|
||||
android:pathData="M28.04098,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#3daee9"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#3daee9"
|
||||
android:pathData="M32.1237,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#10d116"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#10d116"
|
||||
android:pathData="M15.79283,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#27ae60"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#27ae60"
|
||||
android:pathData="M19.87555,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#16a085"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#16a085"
|
||||
android:pathData="M23.95827,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#2980b9"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#2980b9"
|
||||
android:pathData="M28.04098,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#1d99f3"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#1d99f3"
|
||||
android:pathData="M32.1237,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#9b59b6"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#9b59b6"
|
||||
android:pathData="M36.20642,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#8e44ad"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#8e44ad"
|
||||
android:pathData="M36.20642,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#34495e"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#34495e"
|
||||
android:pathData="M15.79284,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#31363b"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#31363b"
|
||||
android:pathData="M19.87556,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#7f8c8d"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#7f8c8d"
|
||||
android:pathData="M23.95828,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#bdc3c7"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#bdc3c7"
|
||||
android:pathData="M28.04099,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#fcfcfc"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#fcfcfc"
|
||||
android:pathData="M32.12371,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#2c3e50"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#2c3e50"
|
||||
android:pathData="M15.79284,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#232629"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#232629"
|
||||
android:pathData="M19.87556,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#4d4d4d"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#4d4d4d"
|
||||
android:pathData="M23.95828,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#95a5a6"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#95a5a6"
|
||||
android:pathData="M28.04099,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#eff0f1"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#eff0f1"
|
||||
android:pathData="M32.12371,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#ffffff"
|
||||
android:pathData="M1.80421,1.07094C1.97839,0.94323 2.0164,0.69622 1.88869,0.52205 1.76097,0.34787 1.51397,0.30985 1.33979,0.43757 1.16561,0.56528 1.1276,0.81229 1.25531,0.98647 1.38303,1.16064 1.63003,1.19866 1.80421,1.07094ZM0.89628,3.31928C0.45292,3.64437 0.36,4.24816 0.68509,4.69152 1.01019,5.13488 1.61397,5.2278 2.05733,4.90271 2.50069,4.57762 2.59362,3.97383 2.26853,3.53047 1.94343,3.08711 1.33965,2.99418 0.89628,3.31928ZM1.88318,4.66519C1.58232,4.88579 1.14321,4.81821 0.92261,4.51736 0.70201,4.21651 0.76959,3.77739 1.07044,3.55679 1.37129,3.33619 1.81041,3.40377 2.03101,3.70463 2.25161,4.00548 2.18403,4.4446 1.88318,4.66519ZM1.64052,2.40835 L1.74189,1.74968 1.96145,1.78347c0.35678,0.05491 0.71885,-0.01579 1.05137,-0.25961L2.78061,1.20717C2.5431,1.38132 2.28342,1.42564 2.03642,1.38763L1.51497,1.30738C1.38935,1.30209 1.28696,1.32847 1.19195,1.39814 1.09695,1.4678 1.041,1.55752 1.03994,1.65569L0.92167,2.42415c-0.0169,0.10978 0.00949,0.21217 0.06754,0.29134 0.06966,0.09501 0.15938,0.15096 0.25755,0.15202L2.07855,2.93933 2.65908,3.73105 2.97577,3.49884 2.25592,2.51711ZM3.11309,1.69381C2.66973,2.0189 2.57681,2.62269 2.9019,3.06605 3.22699,3.50941 3.83078,3.60233 4.27414,3.27724 4.7175,2.95215 4.81043,2.34836 4.48533,1.905 4.16024,1.46164 3.55645,1.36871 3.11309,1.69381ZM4.09998,3.03973C3.79913,3.26033 3.36001,3.19274 3.13941,2.89189 2.91882,2.59104 2.9864,2.15192 3.28725,1.93132 3.5881,1.71072 4.02722,1.77831 4.24782,2.07916 4.46842,2.38001 4.40084,2.81913 4.09998,3.03973Z" android:strokeWidth="0.196349"/>
|
||||
<path android:fillColor="#ffffff" android:fillType="nonZero"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#ffffff"
|
||||
android:pathData="M1.80421,1.07094C1.97839,0.94323 2.0164,0.69622 1.88869,0.52205 1.76097,0.34787 1.51397,0.30985 1.33979,0.43757 1.16561,0.56528 1.1276,0.81229 1.25531,0.98647 1.38303,1.16064 1.63003,1.19866 1.80421,1.07094ZM0.89628,3.31928C0.45292,3.64437 0.36,4.24816 0.68509,4.69152 1.01019,5.13488 1.61397,5.2278 2.05733,4.90271 2.50069,4.57762 2.59362,3.97383 2.26853,3.53047 1.94343,3.08711 1.33965,2.99418 0.89628,3.31928ZM1.88318,4.66519C1.58232,4.88579 1.14321,4.81821 0.92261,4.51736 0.70201,4.21651 0.76959,3.77739 1.07044,3.55679 1.37129,3.33619 1.81041,3.40377 2.03101,3.70463 2.25161,4.00548 2.18403,4.4446 1.88318,4.66519ZM1.64052,2.40835 L1.74189,1.74968 1.96145,1.78347c0.35678,0.05491 0.71885,-0.01579 1.05137,-0.25961L2.78061,1.20717C2.5431,1.38132 2.28342,1.42564 2.03642,1.38763L1.51497,1.30738C1.38935,1.30209 1.28696,1.32847 1.19195,1.39814 1.09695,1.4678 1.041,1.55752 1.03994,1.65569L0.92167,2.42415c-0.0169,0.10978 0.00949,0.21217 0.06754,0.29134 0.06966,0.09501 0.15938,0.15096 0.25755,0.15202L2.07855,2.93933 2.65908,3.73105 2.97577,3.49884 2.25592,2.51711ZM3.11309,1.69381C2.66973,2.0189 2.57681,2.62269 2.9019,3.06605 3.22699,3.50941 3.83078,3.60233 4.27414,3.27724 4.7175,2.95215 4.81043,2.34836 4.48533,1.905 4.16024,1.46164 3.55645,1.36871 3.11309,1.69381ZM4.09998,3.03973C3.79913,3.26033 3.36001,3.19274 3.13941,2.89189 2.91882,2.59104 2.9864,2.15192 3.28725,1.93132 3.5881,1.71072 4.02722,1.77831 4.24782,2.07916 4.46842,2.38001 4.40084,2.81913 4.09998,3.03973Z"
|
||||
android:strokeWidth="0.196349" />
|
||||
<path
|
||||
android:fillColor="#ffffff"
|
||||
android:fillType="nonZero"
|
||||
android:pathData="M6.23559,2.34583 L4.36649,3.42253 3.0293,4.91211 2.09994,5.06574 1.53711,5.45703 -0.22656,5.81836 -0.17383,6.07617 1.7207,5.69141 2.27962,5.30597 3.21875,5.15039 4.56375,3.63933 6.44848,2.55872Z"
|
||||
android:strokeColor="#00000000" android:strokeLineCap="butt"
|
||||
android:strokeLineJoin="miter" android:strokeWidth="0.264583"/>
|
||||
android:strokeWidth="0.264583"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeLineCap="butt"
|
||||
android:strokeLineJoin="miter" />
|
||||
</vector>
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||
android:viewportHeight="24.0" android:viewportWidth="24.0"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#FF000000" android:pathData="M13.49,5.48c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 0.9,2 2,2zM9.89,19.38l1,-4.4 2.1,2v6h2v-7.5l-2.1,-2 0.6,-3c1.3,1.5 3.3,2.5 5.5,2.5v-2c-1.9,0 -3.5,-1 -4.3,-2.4l-1,-1.6c-0.4,-0.6 -1,-1 -1.7,-1 -0.3,0 -0.5,0.1 -0.8,0.1l-5.2,2.2v4.7h2v-3.4l1.8,-0.7 -1.6,8.1 -4.9,-1 -0.4,2 7,1.4z"/>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="#FFFFFF"
|
||||
android:viewportWidth="24.0"
|
||||
android:viewportHeight="24.0">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M13.49,5.48c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 0.9,2 2,2zM9.89,19.38l1,-4.4 2.1,2v6h2v-7.5l-2.1,-2 0.6,-3c1.3,1.5 3.3,2.5 5.5,2.5v-2c-1.9,0 -3.5,-1 -4.3,-2.4l-1,-1.6c-0.4,-0.6 -1,-1 -1.7,-1 -0.3,0 -0.5,0.1 -0.8,0.1l-5.2,2.2v4.7h2v-3.4l1.8,-0.7 -1.6,8.1 -4.9,-1 -0.4,2 7,1.4z" />
|
||||
</vector>
|
||||
|
||||
@@ -1,122 +1,239 @@
|
||||
<vector android:height="24dp" android:viewportHeight="5.820833"
|
||||
android:viewportWidth="5.820833" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#cacaca"
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="5.820833"
|
||||
android:viewportHeight="5.820833">
|
||||
<path
|
||||
android:fillColor="#cacaca"
|
||||
android:pathData="M14.77216,-15.55645l26.53766,0l0,30.62037l-26.53766,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.6855"/>
|
||||
<path android:fillColor="#e74c3c"
|
||||
android:strokeWidth="14.6855"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#e74c3c"
|
||||
android:pathData="M15.79283,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#ed1515"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#ed1515"
|
||||
android:pathData="M19.87555,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#f47750"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#f47750"
|
||||
android:pathData="M23.95827,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#fdbc4b"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#fdbc4b"
|
||||
android:pathData="M28.04098,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#c9ce3b"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#c9ce3b"
|
||||
android:pathData="M32.1237,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#da4453"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#da4453"
|
||||
android:pathData="M15.79283,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#c0392b"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#c0392b"
|
||||
android:pathData="M19.87555,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#d35400"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#d35400"
|
||||
android:pathData="M23.95827,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#f67400"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#f67400"
|
||||
android:pathData="M28.04098,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#f39c1f"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#f39c1f"
|
||||
android:pathData="M32.1237,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#1cdc9a"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#1cdc9a"
|
||||
android:pathData="M15.79283,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#2ecc71"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#2ecc71"
|
||||
android:pathData="M19.87555,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#1abc9c"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#1abc9c"
|
||||
android:pathData="M23.95827,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#3498db"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#3498db"
|
||||
android:pathData="M28.04098,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#3daee9"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#3daee9"
|
||||
android:pathData="M32.1237,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#10d116"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#10d116"
|
||||
android:pathData="M15.79283,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#27ae60"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#27ae60"
|
||||
android:pathData="M19.87555,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#16a085"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#16a085"
|
||||
android:pathData="M23.95827,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#2980b9"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#2980b9"
|
||||
android:pathData="M28.04098,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#1d99f3"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#1d99f3"
|
||||
android:pathData="M32.1237,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#9b59b6"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#9b59b6"
|
||||
android:pathData="M36.20642,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#8e44ad"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#8e44ad"
|
||||
android:pathData="M36.20642,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#34495e"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#34495e"
|
||||
android:pathData="M15.79284,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#31363b"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#31363b"
|
||||
android:pathData="M19.87556,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#7f8c8d"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#7f8c8d"
|
||||
android:pathData="M23.95828,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#bdc3c7"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#bdc3c7"
|
||||
android:pathData="M28.04099,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#fcfcfc"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#fcfcfc"
|
||||
android:pathData="M32.12371,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#2c3e50"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#2c3e50"
|
||||
android:pathData="M15.79284,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#232629"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#232629"
|
||||
android:pathData="M19.87556,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#4d4d4d"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#4d4d4d"
|
||||
android:pathData="M23.95828,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#95a5a6"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#95a5a6"
|
||||
android:pathData="M28.04099,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#eff0f1"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#eff0f1"
|
||||
android:pathData="M32.12371,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#ffffff"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#ffffff"
|
||||
android:pathData="M0.56042,4.47083 L1.16042,5.4h3.5l0.6,-0.92917z"
|
||||
android:strokeColor="#00000000" android:strokeLineCap="butt"
|
||||
android:strokeLineJoin="miter" android:strokeWidth="0.264583"/>
|
||||
<path android:fillColor="#ffffff"
|
||||
android:strokeWidth="0.264583"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeLineCap="butt"
|
||||
android:strokeLineJoin="miter" />
|
||||
<path
|
||||
android:fillColor="#ffffff"
|
||||
android:pathData="M2.80243,0.32721V4.5H3.0184V0.32721Z"
|
||||
android:strokeColor="#00000000" android:strokeLineCap="butt"
|
||||
android:strokeLineJoin="miter" android:strokeWidth="0.244823"/>
|
||||
<path android:fillColor="#ffffff"
|
||||
android:strokeWidth="0.244823"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeLineCap="butt"
|
||||
android:strokeLineJoin="miter" />
|
||||
<path
|
||||
android:fillColor="#ffffff"
|
||||
android:pathData="M2.65279,1.00669 L2.64597,4.19281 0.73849,4.20353Z"
|
||||
android:strokeColor="#00000000" android:strokeLineCap="butt"
|
||||
android:strokeLineJoin="miter" android:strokeWidth="0.257218"/>
|
||||
<path android:fillColor="#ffffff"
|
||||
android:strokeWidth="0.257218"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeLineCap="butt"
|
||||
android:strokeLineJoin="miter" />
|
||||
<path
|
||||
android:fillColor="#ffffff"
|
||||
android:pathData="m3.16167,0.35464 l0.00682,3.82765 1.90748,0.01288z"
|
||||
android:strokeColor="#00000000" android:strokeLineCap="butt"
|
||||
android:strokeLineJoin="miter" android:strokeWidth="0.281927"/>
|
||||
<path android:fillColor="#ffffff"
|
||||
android:strokeWidth="0.281927"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeLineCap="butt"
|
||||
android:strokeLineJoin="miter" />
|
||||
<path
|
||||
android:fillColor="#ffffff"
|
||||
android:pathData="M2.81055,0.32721V0.7545L2.03249,0.57664Z"
|
||||
android:strokeColor="#00000000" android:strokeLineCap="butt"
|
||||
android:strokeLineJoin="miter" android:strokeWidth="0.286457"/>
|
||||
android:strokeWidth="0.286457"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeLineCap="butt"
|
||||
android:strokeLineJoin="miter" />
|
||||
</vector>
|
||||
|
||||
@@ -1,117 +1,233 @@
|
||||
<vector android:height="24dp" android:viewportHeight="5.820833"
|
||||
android:viewportWidth="5.820833" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#ffffff"
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="5.820833"
|
||||
android:viewportHeight="5.820833">
|
||||
<path
|
||||
android:fillColor="#ffffff"
|
||||
android:pathData="M3.44976,1.2724C3.71883,1.26759 3.93505,1.0435 3.93023,0.77443 3.92542,0.50536 3.70134,0.28914 3.43226,0.29396 3.16319,0.29877 2.94698,0.52285 2.95179,0.79193 2.9566,1.061 3.18069,1.27721 3.44976,1.2724ZM3.06374,4.33101 L2.84991,3.46541 3.50506,3.73772 4.03189,5.10783 4.48859,4.93222 3.83005,3.21959 3.1749,2.94728 3.37709,2.42128C3.70165,2.78251 4.18343,3.04528 4.72158,3.03566L4.71283,2.54644C4.24807,2.55475 3.95867,2.3644 3.75685,2.02545L3.50524,1.63844C3.40477,1.49342 3.25626,1.3982 3.08503,1.40127c-0.07338,0.00131 -0.12187,0.02665 -0.19525,0.02796L1.62742,1.99012 1.24713,3.02657 1.65384,3.24232 2.0692,2.30711 2.55957,2.12026 2.10811,3.25241 2.40897,4.15919 1.31643,4.85786 1.94801,4.97164Z"
|
||||
android:strokeColor="#00000000" android:strokeWidth="0.244651"/>
|
||||
<path android:fillColor="#cacaca"
|
||||
android:strokeWidth="0.244651"
|
||||
android:strokeColor="#00000000" />
|
||||
<path
|
||||
android:fillColor="#cacaca"
|
||||
android:pathData="M14.77216,-15.55645l26.53766,0l0,30.62037l-26.53766,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.6855"/>
|
||||
<path android:fillColor="#e74c3c"
|
||||
android:strokeWidth="14.6855"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#e74c3c"
|
||||
android:pathData="M15.79283,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#ed1515"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#ed1515"
|
||||
android:pathData="M19.87555,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#f47750"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#f47750"
|
||||
android:pathData="M23.95827,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#fdbc4b"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#fdbc4b"
|
||||
android:pathData="M28.04098,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#c9ce3b"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#c9ce3b"
|
||||
android:pathData="M32.1237,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#da4453"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#da4453"
|
||||
android:pathData="M15.79283,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#c0392b"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#c0392b"
|
||||
android:pathData="M19.87555,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#d35400"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#d35400"
|
||||
android:pathData="M23.95827,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#f67400"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#f67400"
|
||||
android:pathData="M28.04098,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#f39c1f"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#f39c1f"
|
||||
android:pathData="M32.1237,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#1cdc9a"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#1cdc9a"
|
||||
android:pathData="M15.79283,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#2ecc71"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#2ecc71"
|
||||
android:pathData="M19.87555,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#1abc9c"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#1abc9c"
|
||||
android:pathData="M23.95827,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#3498db"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#3498db"
|
||||
android:pathData="M28.04098,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#3daee9"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#3daee9"
|
||||
android:pathData="M32.1237,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#10d116"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#10d116"
|
||||
android:pathData="M15.79283,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#27ae60"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#27ae60"
|
||||
android:pathData="M19.87555,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#16a085"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#16a085"
|
||||
android:pathData="M23.95827,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#2980b9"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#2980b9"
|
||||
android:pathData="M28.04098,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#1d99f3"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#1d99f3"
|
||||
android:pathData="M32.1237,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#9b59b6"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#9b59b6"
|
||||
android:pathData="M36.20642,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#8e44ad"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#8e44ad"
|
||||
android:pathData="M36.20642,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#34495e"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#34495e"
|
||||
android:pathData="M15.79284,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#31363b"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#31363b"
|
||||
android:pathData="M19.87556,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#7f8c8d"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#7f8c8d"
|
||||
android:pathData="M23.95828,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#bdc3c7"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#bdc3c7"
|
||||
android:pathData="M28.04099,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#fcfcfc"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#fcfcfc"
|
||||
android:pathData="M32.12371,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#2c3e50"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#2c3e50"
|
||||
android:pathData="M15.79284,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#232629"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#232629"
|
||||
android:pathData="M19.87556,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#4d4d4d"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#4d4d4d"
|
||||
android:pathData="M23.95828,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#95a5a6"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#95a5a6"
|
||||
android:pathData="M28.04099,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#eff0f1"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#eff0f1"
|
||||
android:pathData="M32.12371,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#ffffff" android:fillType="nonZero"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#ffffff"
|
||||
android:fillType="nonZero"
|
||||
android:pathData="M0.70721,4.61894 L0.5052,4.88718c-0,0 0.19155,0.15437 0.2935,0.22688 0.04087,0.02235 0.02971,0.02814 0.10131,0.03513l2.08763,-0.0023 2.08763,0.0023c0.0716,-0.00699 0.06106,-0.01277 0.10193,-0.03513C5.27913,5.04155 5.47006,4.88718 5.47006,4.88718L5.26805,4.61894 5.01815,4.81242 3.13561,4.81127H2.83965l-1.88193,0.00115z"
|
||||
android:strokeColor="#00000000" android:strokeLineCap="butt"
|
||||
android:strokeLineJoin="miter" android:strokeWidth="0.304444"/>
|
||||
<path android:fillAlpha="0.997" android:fillColor="#ffffff"
|
||||
android:strokeWidth="0.304444"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeLineCap="butt"
|
||||
android:strokeLineJoin="miter" />
|
||||
<path
|
||||
android:fillAlpha="0.997"
|
||||
android:fillColor="#ffffff"
|
||||
android:pathData="M1.42826,5.41433m-0.11492,0a0.11492,0.11492 0,1 1,0.22984 0a0.11492,0.11492 0,1 1,-0.22984 0"
|
||||
android:strokeAlpha="0.997" android:strokeColor="#ffffff"
|
||||
android:strokeLineJoin="round" android:strokeWidth="0.264999"/>
|
||||
<path android:fillAlpha="0.997" android:fillColor="#ffffff"
|
||||
android:strokeWidth="0.264999"
|
||||
android:strokeAlpha="0.997"
|
||||
android:strokeColor="#ffffff"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillAlpha="0.997"
|
||||
android:fillColor="#ffffff"
|
||||
android:pathData="M4.43871,5.41433m-0.11492,0a0.11492,0.11492 0,1 1,0.22984 0a0.11492,0.11492 0,1 1,-0.22984 0"
|
||||
android:strokeAlpha="0.997" android:strokeColor="#ffffff"
|
||||
android:strokeLineJoin="round" android:strokeWidth="0.264999"/>
|
||||
android:strokeWidth="0.264999"
|
||||
android:strokeAlpha="0.997"
|
||||
android:strokeColor="#ffffff"
|
||||
android:strokeLineJoin="round" />
|
||||
</vector>
|
||||
|
||||
@@ -1,113 +1,225 @@
|
||||
<vector android:height="24dp" android:viewportHeight="5.820833"
|
||||
android:viewportWidth="5.820833" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#ffffff"
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="5.820833"
|
||||
android:viewportHeight="5.820833">
|
||||
<path
|
||||
android:fillColor="#ffffff"
|
||||
android:pathData="M4.55855,1.86825C4.73058,2.03776 5.01001,2.0357 5.17952,1.86368 5.34903,1.69166 5.34698,1.41222 5.17496,1.24271 5.00294,1.0732 4.7235,1.07526 4.55399,1.24728 4.38448,1.4193 4.38653,1.69874 4.55855,1.86825ZM2.56165,2.88954 L2.98181,3.74127 2.16278,4.15659 2.48907,4.51596 3.66441,3.97834 3.33242,3.2071 3.78805,2.65016C3.76019,3.08507 3.91886,3.54966 4.2629,3.88868L4.5711,3.57591C4.27398,3.28312 4.17786,2.88018 4.2685,2.53796L4.35868,2.13364C4.38859,1.97817 4.3564,1.82316 4.24693,1.71529 4.20001,1.66906 4.04313,1.53101 3.91715,1.48529 3.61094,1.37416 2.94362,1.40009 2.94362,1.40009L1.98176,1.99171 2.29453,2.29992 3.06663,1.81548 3.45599,1.82977Z"
|
||||
android:strokeColor="#00000000" android:strokeWidth="0.219552"/>
|
||||
<path android:fillColor="#cacaca"
|
||||
android:strokeWidth="0.219552"
|
||||
android:strokeColor="#00000000" />
|
||||
<path
|
||||
android:fillColor="#cacaca"
|
||||
android:pathData="M15.18314,-15.55645l26.53766,0l0,30.62037l-26.53766,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.6855"/>
|
||||
<path android:fillColor="#e74c3c"
|
||||
android:strokeWidth="14.6855"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#e74c3c"
|
||||
android:pathData="M16.20381,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#ed1515"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#ed1515"
|
||||
android:pathData="M20.28653,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#f47750"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#f47750"
|
||||
android:pathData="M24.36925,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#fdbc4b"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#fdbc4b"
|
||||
android:pathData="M28.45196,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#c9ce3b"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#c9ce3b"
|
||||
android:pathData="M32.53468,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#da4453"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#da4453"
|
||||
android:pathData="M16.20381,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#c0392b"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#c0392b"
|
||||
android:pathData="M20.28653,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#d35400"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#d35400"
|
||||
android:pathData="M24.36925,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#f67400"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#f67400"
|
||||
android:pathData="M28.45196,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#f39c1f"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#f39c1f"
|
||||
android:pathData="M32.53468,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#1cdc9a"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#1cdc9a"
|
||||
android:pathData="M16.20381,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#2ecc71"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#2ecc71"
|
||||
android:pathData="M20.28653,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#1abc9c"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#1abc9c"
|
||||
android:pathData="M24.36925,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#3498db"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#3498db"
|
||||
android:pathData="M28.45196,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#3daee9"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#3daee9"
|
||||
android:pathData="M32.53468,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#10d116"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#10d116"
|
||||
android:pathData="M16.20381,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#27ae60"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#27ae60"
|
||||
android:pathData="M20.28653,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#16a085"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#16a085"
|
||||
android:pathData="M24.36925,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#2980b9"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#2980b9"
|
||||
android:pathData="M28.45196,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#1d99f3"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#1d99f3"
|
||||
android:pathData="M32.53468,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#9b59b6"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#9b59b6"
|
||||
android:pathData="M36.6174,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#8e44ad"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#8e44ad"
|
||||
android:pathData="M36.6174,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#34495e"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#34495e"
|
||||
android:pathData="M16.20382,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#31363b"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#31363b"
|
||||
android:pathData="M20.28654,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#7f8c8d"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#7f8c8d"
|
||||
android:pathData="M24.36926,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#bdc3c7"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#bdc3c7"
|
||||
android:pathData="M28.45197,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#fcfcfc"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#fcfcfc"
|
||||
android:pathData="M32.53469,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#2c3e50"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#2c3e50"
|
||||
android:pathData="M16.20382,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#232629"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#232629"
|
||||
android:pathData="M20.28654,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#4d4d4d"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#4d4d4d"
|
||||
android:pathData="M24.36926,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#95a5a6"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#95a5a6"
|
||||
android:pathData="M28.45197,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#eff0f1"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#eff0f1"
|
||||
android:pathData="M32.53469,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#ffffff" android:fillType="nonZero"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#ffffff"
|
||||
android:fillType="nonZero"
|
||||
android:pathData="m0.42966,3.41244 l3.27272,1.98984c0.10372,0.05566 0.09127,0.04209 0.15902,0.05977 0.17682,0.03126 0.46866,-0.03088 0.46866,-0.03088L4.25347,5.18327 3.8764,5.18921 0.56601,3.18641Z"
|
||||
android:strokeColor="#00000000" android:strokeLineCap="butt"
|
||||
android:strokeLineJoin="miter" android:strokeWidth="0.369514"/>
|
||||
<path android:fillColor="#ffffff" android:fillType="nonZero"
|
||||
android:strokeWidth="0.369514"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeLineCap="butt"
|
||||
android:strokeLineJoin="miter" />
|
||||
<path
|
||||
android:fillColor="#ffffff"
|
||||
android:fillType="nonZero"
|
||||
android:pathData="M1.36507,1.26653 L1.23479,1.43565 1.05419,1.31077 0.93976,1.45155 1.12466,1.57807 0.9935,1.74818 1.11148,1.83902 1.24794,1.66257 4.36217,3.7944 4.47184,3.67019 1.3576,1.52018 1.48305,1.35737Z"
|
||||
android:strokeColor="#00000000" android:strokeLineCap="butt"
|
||||
android:strokeLineJoin="miter" android:strokeWidth="0.238916"/>
|
||||
android:strokeWidth="0.238916"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeLineCap="butt"
|
||||
android:strokeLineJoin="miter" />
|
||||
</vector>
|
||||
|
||||
@@ -1,109 +1,217 @@
|
||||
<vector android:height="24dp" android:viewportHeight="5.820833"
|
||||
android:viewportWidth="5.820833" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#ffffff"
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="5.820833"
|
||||
android:viewportHeight="5.820833">
|
||||
<path
|
||||
android:fillColor="#ffffff"
|
||||
android:pathData="M3.44976,1.66236C3.71883,1.65755 3.93505,1.43346 3.93023,1.16439 3.92542,0.89531 3.70134,0.6791 3.43226,0.68391 3.16319,0.68872 2.94698,0.91281 2.95179,1.18188 2.9566,1.45096 3.18069,1.66717 3.44976,1.66236ZM3.06374,4.72097 L2.84991,3.85537 3.50506,4.12768 4.03189,5.49779 4.48859,5.32218 3.83005,3.60955 3.1749,3.33723 3.37709,2.81124C3.70165,3.17247 4.18343,3.43524 4.72158,3.42562L4.71283,2.93639C4.24807,2.94471 3.95867,2.75436 3.75685,2.4154L3.50524,2.0284C3.40477,1.88338 3.25626,1.78816 3.08503,1.79122 3.01165,1.79254 2.96316,1.81787 2.88978,1.81919L1.62742,2.38008 1.24713,3.41652 1.65384,3.63228 2.0692,2.69706 2.55957,2.51022 2.10811,3.64237 2.40897,4.54915 1.31643,5.24782 1.94801,5.3616Z"
|
||||
android:strokeColor="#00000000" android:strokeWidth="0.244651"/>
|
||||
<path android:fillColor="#cacaca"
|
||||
android:strokeWidth="0.244651"
|
||||
android:strokeColor="#00000000" />
|
||||
<path
|
||||
android:fillColor="#cacaca"
|
||||
android:pathData="M14.77216,-15.55645l26.53766,0l0,30.62037l-26.53766,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.6855"/>
|
||||
<path android:fillColor="#e74c3c"
|
||||
android:strokeWidth="14.6855"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#e74c3c"
|
||||
android:pathData="M15.79283,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#ed1515"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#ed1515"
|
||||
android:pathData="M19.87555,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#f47750"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#f47750"
|
||||
android:pathData="M23.95827,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#fdbc4b"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#fdbc4b"
|
||||
android:pathData="M28.04098,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#c9ce3b"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#c9ce3b"
|
||||
android:pathData="M32.1237,-14.53577l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#da4453"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#da4453"
|
||||
android:pathData="M15.79283,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#c0392b"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#c0392b"
|
||||
android:pathData="M19.87555,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#d35400"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#d35400"
|
||||
android:pathData="M23.95827,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#f67400"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#f67400"
|
||||
android:pathData="M28.04098,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#f39c1f"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#f39c1f"
|
||||
android:pathData="M32.1237,-10.45305l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#1cdc9a"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#1cdc9a"
|
||||
android:pathData="M15.79283,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#2ecc71"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#2ecc71"
|
||||
android:pathData="M19.87555,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#1abc9c"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#1abc9c"
|
||||
android:pathData="M23.95827,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#3498db"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#3498db"
|
||||
android:pathData="M28.04098,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#3daee9"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#3daee9"
|
||||
android:pathData="M32.1237,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#10d116"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#10d116"
|
||||
android:pathData="M15.79283,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#27ae60"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#27ae60"
|
||||
android:pathData="M19.87555,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#16a085"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#16a085"
|
||||
android:pathData="M23.95827,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#2980b9"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#2980b9"
|
||||
android:pathData="M28.04098,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#1d99f3"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#1d99f3"
|
||||
android:pathData="M32.1237,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#9b59b6"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#9b59b6"
|
||||
android:pathData="M36.20642,-4.32897l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#8e44ad"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#8e44ad"
|
||||
android:pathData="M36.20642,-0.24626l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#34495e"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#34495e"
|
||||
android:pathData="M15.79284,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#31363b"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#31363b"
|
||||
android:pathData="M19.87556,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#7f8c8d"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#7f8c8d"
|
||||
android:pathData="M23.95828,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#bdc3c7"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#bdc3c7"
|
||||
android:pathData="M28.04099,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#fcfcfc"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#fcfcfc"
|
||||
android:pathData="M32.12371,5.87782l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#2c3e50"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#2c3e50"
|
||||
android:pathData="M15.79284,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#232629"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#232629"
|
||||
android:pathData="M19.87556,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#4d4d4d"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#4d4d4d"
|
||||
android:pathData="M23.95828,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#95a5a6"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#95a5a6"
|
||||
android:pathData="M28.04099,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#eff0f1"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#eff0f1"
|
||||
android:pathData="M32.12371,9.96054l4.08272,0l0,4.08272l-4.08272,0z"
|
||||
android:strokeLineCap="square" android:strokeLineJoin="round" android:strokeWidth="14.955"/>
|
||||
<path android:fillColor="#ffffff" android:fillType="nonZero"
|
||||
android:strokeWidth="14.955"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#ffffff"
|
||||
android:fillType="nonZero"
|
||||
android:pathData="M0.70721,5.0089 L0.5052,5.27714c-0,0 0.19155,0.15437 0.2935,0.22688 0.04087,0.02235 0.02971,0.02814 0.10131,0.03513l2.08763,-0.0023 2.08763,0.0023c0.0716,-0.00699 0.06106,-0.01277 0.10193,-0.03513C5.27913,5.43151 5.47006,5.27714 5.47006,5.27714L5.26805,5.0089 5.01815,5.20238 3.13561,5.20123H2.83965l-1.88193,0.00115z"
|
||||
android:strokeColor="#00000000" android:strokeLineCap="butt"
|
||||
android:strokeLineJoin="miter" android:strokeWidth="0.304444"/>
|
||||
android:strokeWidth="0.304444"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeLineCap="butt"
|
||||
android:strokeLineJoin="miter" />
|
||||
</vector>
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||
android:viewportHeight="24.0" android:viewportWidth="24.0"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#FF000000" android:pathData="M13.5,5.5c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 0.9,2 2,2zM9.8,8.9L7,23h2.1l1.8,-8 2.1,2v6h2v-7.5l-2.1,-2 0.6,-3C14.8,12 16.8,13 19,13v-2c-1.9,0 -3.5,-1 -4.3,-2.4l-1,-1.6c-0.4,-0.6 -1,-1 -1.7,-1 -0.3,0 -0.5,0.1 -0.8,0.1L6,8.3V13h2V9.6l1.8,-0.7"/>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="#FFFFFF"
|
||||
android:viewportWidth="24.0"
|
||||
android:viewportHeight="24.0">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M13.5,5.5c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 0.9,2 2,2zM9.8,8.9L7,23h2.1l1.8,-8 2.1,2v6h2v-7.5l-2.1,-2 0.6,-3C14.8,12 16.8,13 19,13v-2c-1.9,0 -3.5,-1 -4.3,-2.4l-1,-1.6c-0.4,-0.6 -1,-1 -1.7,-1 -0.3,0 -0.5,0.1 -0.8,0.1L6,8.3V13h2V9.6l1.8,-0.7" />
|
||||
</vector>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
android:tint="@android:color/white"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M3,4V1h2v3h3v2H5v3H3V6H0V4H3zM6,10V7h3V4h7l1.83,2H21c1.1,0 2,0.9 2,2v12c0,1.1 -0.9,2 -2,2H5c-1.1,0 -2,-0.9 -2,-2V10H6zM13,19c2.76,0 5,-2.24 5,-5s-2.24,-5 -5,-5s-5,2.24 -5,5S10.24,19 13,19zM9.8,14c0,1.77 1.43,3.2 3.2,3.2s3.2,-1.43 3.2,-3.2s-1.43,-3.2 -3.2,-3.2S9.8,12.23 9.8,14z"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M3,4V1h2v3h3v2H5v3H3V6H0V4H3zM6,10V7h3V4h7l1.83,2H21c1.1,0 2,0.9 2,2v12c0,1.1 -0.9,2 -2,2H5c-1.1,0 -2,-0.9 -2,-2V10H6zM13,19c2.76,0 5,-2.24 5,-5s-2.24,-5 -5,-5s-5,2.24 -5,5S10.24,19 13,19zM9.8,14c0,1.77 1.43,3.2 3.2,3.2s3.2,-1.43 3.2,-3.2s-1.43,-3.2 -3.2,-3.2S9.8,12.23 9.8,14z" />
|
||||
</vector>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
android:tint="@android:color/white"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M19,7v2.99s-1.99,0.01 -2,0L17,7h-3s0.01,-1.99 0,-2h3L17,2h2v3h3v2h-3zM16,11L16,8h-3L13,5L5,5c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2v-8h-3zM5,19l3,-4 2,3 3,-4 4,5L5,19z"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M19,7v2.99s-1.99,0.01 -2,0L17,7h-3s0.01,-1.99 0,-2h3L17,2h2v3h3v2h-3zM16,11L16,8h-3L13,5L5,5c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2v-8h-3zM5,19l3,-4 2,3 3,-4 4,5L5,19z" />
|
||||
</vector>
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="#FFFFFF"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="#FFFFFF">
|
||||
<path
|
||||
android:name="smallDot"
|
||||
android:pathData="m14.24,12.01 l2.32,2.32C16.84,13.61 17,12.82 17,12 17,11.18 16.84,10.41 16.57,9.69Z"
|
||||
android:fillColor="#000000" />
|
||||
<path
|
||||
android:name="bigDot"
|
||||
android:pathData="m19.53,6.71 l-1.26,1.26c0.63,1.21 0.98,2.57 0.98,4.02 0,1.45 -0.36,2.82 -0.98,4.02l1.2,1.2C20.44,15.67 21.01,13.85 21.01,11.9 21,10.01 20.46,8.23 19.53,6.71Z"
|
||||
android:fillColor="#000000" />
|
||||
<path
|
||||
android:pathData="M12.88,16.29 L11,18.17V14.41ZM11,5.83 L12.88,7.71 11,9.59ZM15.71,7.71 L10,2H9V9.59L4.41,5 3,6.41 8.59,12 3,17.59 4.41,19 9,14.41V22h1L15.71,16.29 11.41,12Z"
|
||||
android:fillColor="#000000" />
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:name="smallDot"
|
||||
android:fillColor="#000000"
|
||||
android:pathData="m14.24,12.01 l2.32,2.32C16.84,13.61 17,12.82 17,12 17,11.18 16.84,10.41 16.57,9.69Z" />
|
||||
<path
|
||||
android:name="bigDot"
|
||||
android:fillColor="#000000"
|
||||
android:pathData="m19.53,6.71 l-1.26,1.26c0.63,1.21 0.98,2.57 0.98,4.02 0,1.45 -0.36,2.82 -0.98,4.02l1.2,1.2C20.44,15.67 21.01,13.85 21.01,11.9 21,10.01 20.46,8.23 19.53,6.71Z" />
|
||||
<path
|
||||
android:fillColor="#000000"
|
||||
android:pathData="M12.88,16.29 L11,18.17V14.41ZM11,5.83 L12.88,7.71 11,9.59ZM15.71,7.71 L10,2H9V9.59L4.41,5 3,6.41 8.59,12 3,17.59 4.41,19 9,14.41V22h1L15.71,16.29 11.41,12Z" />
|
||||
</vector>
|
||||
|
||||
@@ -24,9 +24,9 @@
|
||||
android:strokeWidth="4.82273865"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeColor="#00000000" />
|
||||
<path android:name="fade_out_circle"
|
||||
android:pathData="M62.5,62.5m-0,-62a50,50 0,1 1,-0 123a50,50 0,1 1,-0 -123"
|
||||
<path
|
||||
android:name="fade_out_circle"
|
||||
android:fillAlpha="0.0"
|
||||
android:fillColor="#a31a1f">
|
||||
</path>
|
||||
android:fillColor="#a31a1f"
|
||||
android:pathData="M62.5,62.5m-0,-62a50,50 0,1 1,-0 123a50,50 0,1 1,-0 -123"></path>
|
||||
</vector>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:drawable="@drawable/ic_button_pause" >
|
||||
android:drawable="@drawable/ic_button_pause">
|
||||
<target
|
||||
android:name="fade_out_circle"
|
||||
android:animation="@animator/button_animator" />
|
||||
|
||||
@@ -25,9 +25,9 @@
|
||||
android:strokeWidth="1.04023623"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeColor="#414141" />
|
||||
<path android:name="fade_out_circle"
|
||||
android:pathData="M62.5,62.5m-0,-62a50,50 0,1 1,-0 123a50,50 0,1 1,-0 -123"
|
||||
<path
|
||||
android:name="fade_out_circle"
|
||||
android:fillAlpha="0.0"
|
||||
android:fillColor="#a31a1f">
|
||||
</path>
|
||||
android:fillColor="#a31a1f"
|
||||
android:pathData="M62.5,62.5m-0,-62a50,50 0,1 1,-0 123a50,50 0,1 1,-0 -123"></path>
|
||||
</vector>
|
||||
|
||||
@@ -28,11 +28,11 @@
|
||||
android:strokeWidth="1.04023623"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeColor="#414141" />
|
||||
<path android:name="fade_out_circle"
|
||||
android:pathData="M62.5,62.5m-0,-62a50,50 0,1 1,-0 123a50,50 0,1 1,-0 -123"
|
||||
<path
|
||||
android:name="fade_out_circle"
|
||||
android:fillAlpha="0.0"
|
||||
android:fillColor="#a31a1f">
|
||||
</path>
|
||||
android:fillColor="#a31a1f"
|
||||
android:pathData="M62.5,62.5m-0,-62a50,50 0,1 1,-0 123a50,50 0,1 1,-0 -123"></path>
|
||||
</vector>
|
||||
</aapt:attr>
|
||||
<target
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||
android:viewportHeight="24.0" android:viewportWidth="24.0"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#FF000000" android:pathData="M6,19c0,1.1 0.9,2 2,2h8c1.1,0 2,-0.9 2,-2L18,7L6,7v12zM8.46,11.88l1.41,-1.41L12,12.59l2.12,-2.12 1.41,1.41L13.41,14l2.12,2.12 -1.41,1.41L12,15.41l-2.12,2.12 -1.41,-1.41L10.59,14l-2.13,-2.12zM15.5,4l-1,-1h-5l-1,1L5,4v2h14L19,4z"/>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="#FFFFFF"
|
||||
android:viewportWidth="24.0"
|
||||
android:viewportHeight="24.0">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M6,19c0,1.1 0.9,2 2,2h8c1.1,0 2,-0.9 2,-2L18,7L6,7v12zM8.46,11.88l1.41,-1.41L12,12.59l2.12,-2.12 1.41,1.41L13.41,14l2.12,2.12 -1.41,1.41L12,15.41l-2.12,2.12 -1.41,-1.41L10.59,14l-2.13,-2.12zM15.5,4l-1,-1h-5l-1,1L5,4v2h14L19,4z" />
|
||||
</vector>
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||
android:viewportHeight="24.0" android:viewportWidth="24.0"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#FF000000" android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM13,17h-2v-2h2v2zM13,13h-2L11,7h2v6z"/>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="#FFFFFF"
|
||||
android:viewportWidth="24.0"
|
||||
android:viewportHeight="24.0">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM13,17h-2v-2h2v2zM13,13h-2L11,7h2v6z" />
|
||||
</vector>
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||
android:viewportHeight="24.0" android:viewportWidth="24.0"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#FF000000" android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM13,17h-2v-6h2v6zM13,9h-2L11,7h2v2z"/>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="#FFFFFF"
|
||||
android:viewportWidth="24.0"
|
||||
android:viewportHeight="24.0">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM13,17h-2v-6h2v6zM13,9h-2L11,7h2v2z" />
|
||||
</vector>
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||
android:viewportHeight="24.0" android:viewportWidth="24.0"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#FF000000" android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM10,17l-5,-5 1.41,-1.41L10,14.17l7.59,-7.59L19,8l-9,9z"/>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="#FFFFFF"
|
||||
android:viewportWidth="24.0"
|
||||
android:viewportHeight="24.0">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM10,17l-5,-5 1.41,-1.41L10,14.17l7.59,-7.59L19,8l-9,9z" />
|
||||
</vector>
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||
android:viewportHeight="24.0" android:viewportWidth="24.0"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#FF000000" android:pathData="M3,17.25V21h3.75L17.81,9.94l-3.75,-3.75L3,17.25zM20.71,7.04c0.39,-0.39 0.39,-1.02 0,-1.41l-2.34,-2.34c-0.39,-0.39 -1.02,-0.39 -1.41,0l-1.83,1.83 3.75,3.75 1.83,-1.83z"/>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="#FFFFFF"
|
||||
android:viewportWidth="24.0"
|
||||
android:viewportHeight="24.0">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M3,17.25V21h3.75L17.81,9.94l-3.75,-3.75L3,17.25zM20.71,7.04c0.39,-0.39 0.39,-1.02 0,-1.41l-2.34,-2.34c-0.39,-0.39 -1.02,-0.39 -1.41,0l-1.83,1.83 3.75,3.75 1.83,-1.83z" />
|
||||
</vector>
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||
android:viewportHeight="24.0" android:viewportWidth="24.0"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#FF000000" android:pathData="M12,8c-2.21,0 -4,1.79 -4,4s1.79,4 4,4 4,-1.79 4,-4 -1.79,-4 -4,-4zM20.94,11c-0.46,-4.17 -3.77,-7.48 -7.94,-7.94L13,1h-2v2.06C6.83,3.52 3.52,6.83 3.06,11L1,11v2h2.06c0.46,4.17 3.77,7.48 7.94,7.94L11,23h2v-2.06c4.17,-0.46 7.48,-3.77 7.94,-7.94L23,13v-2h-2.06zM12,19c-3.87,0 -7,-3.13 -7,-7s3.13,-7 7,-7 7,3.13 7,7 -3.13,7 -7,7z"/>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="#FFFFFF"
|
||||
android:viewportWidth="24.0"
|
||||
android:viewportHeight="24.0">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M12,8c-2.21,0 -4,1.79 -4,4s1.79,4 4,4 4,-1.79 4,-4 -1.79,-4 -4,-4zM20.94,11c-0.46,-4.17 -3.77,-7.48 -7.94,-7.94L13,1h-2v2.06C6.83,3.52 3.52,6.83 3.06,11L1,11v2h2.06c0.46,4.17 3.77,7.48 7.94,7.94L11,23h2v-2.06c4.17,-0.46 7.48,-3.77 7.94,-7.94L23,13v-2h-2.06zM12,19c-3.87,0 -7,-3.13 -7,-7s3.13,-7 7,-7 7,3.13 7,7 -3.13,7 -7,7z" />
|
||||
</vector>
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||
android:viewportHeight="24.0" android:viewportWidth="24.0"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#FF000000" android:pathData="M20.94,11c-0.46,-4.17 -3.77,-7.48 -7.94,-7.94V1h-2v2.06C6.83,3.52 3.52,6.83 3.06,11H1v2h2.06c0.46,4.17 3.77,7.48 7.94,7.94V23h2v-2.06c4.17,-0.46 7.48,-3.77 7.94,-7.94H23v-2h-2.06zM12,19c-3.87,0 -7,-3.13 -7,-7s3.13,-7 7,-7 7,3.13 7,7 -3.13,7 -7,7z"/>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="#FFFFFF"
|
||||
android:viewportWidth="24.0"
|
||||
android:viewportHeight="24.0">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M20.94,11c-0.46,-4.17 -3.77,-7.48 -7.94,-7.94V1h-2v2.06C6.83,3.52 3.52,6.83 3.06,11H1v2h2.06c0.46,4.17 3.77,7.48 7.94,7.94V23h2v-2.06c4.17,-0.46 7.48,-3.77 7.94,-7.94H23v-2h-2.06zM12,19c-3.87,0 -7,-3.13 -7,-7s3.13,-7 7,-7 7,3.13 7,7 -3.13,7 -7,7z" />
|
||||
</vector>
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||
android:viewportHeight="24.0" android:viewportWidth="24.0"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#FF000000" android:pathData="M20.94,11c-0.46,-4.17 -3.77,-7.48 -7.94,-7.94L13,1h-2v2.06c-1.13,0.12 -2.19,0.46 -3.16,0.97l1.5,1.5C10.16,5.19 11.06,5 12,5c3.87,0 7,3.13 7,7 0,0.94 -0.19,1.84 -0.52,2.65l1.5,1.5c0.5,-0.96 0.84,-2.02 0.97,-3.15L23,13v-2h-2.06zM3,4.27l2.04,2.04C3.97,7.62 3.25,9.23 3.06,11L1,11v2h2.06c0.46,4.17 3.77,7.48 7.94,7.94L11,23h2v-2.06c1.77,-0.2 3.38,-0.91 4.69,-1.98L19.73,21 21,19.73 4.27,3 3,4.27zM16.27,17.54C15.09,18.45 13.61,19 12,19c-3.87,0 -7,-3.13 -7,-7 0,-1.61 0.55,-3.09 1.46,-4.27l9.81,9.81z"/>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="#FFFFFF"
|
||||
android:viewportWidth="24.0"
|
||||
android:viewportHeight="24.0">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M20.94,11c-0.46,-4.17 -3.77,-7.48 -7.94,-7.94L13,1h-2v2.06c-1.13,0.12 -2.19,0.46 -3.16,0.97l1.5,1.5C10.16,5.19 11.06,5 12,5c3.87,0 7,3.13 7,7 0,0.94 -0.19,1.84 -0.52,2.65l1.5,1.5c0.5,-0.96 0.84,-2.02 0.97,-3.15L23,13v-2h-2.06zM3,4.27l2.04,2.04C3.97,7.62 3.25,9.23 3.06,11L1,11v2h2.06c0.46,4.17 3.77,7.48 7.94,7.94L11,23h2v-2.06c1.77,-0.2 3.38,-0.91 4.69,-1.98L19.73,21 21,19.73 4.27,3 3,4.27zM16.27,17.54C15.09,18.45 13.61,19 12,19c-3.87,0 -7,-3.13 -7,-7 0,-1.61 0.55,-3.09 1.46,-4.27l9.81,9.81z" />
|
||||
</vector>
|
||||
|
||||
@@ -1,37 +1,36 @@
|
||||
<animated-vector
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt">
|
||||
<aapt:attr name="android:drawable">
|
||||
<vector
|
||||
android:name="vector"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="#FFFFFF"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="#FFFFFF">
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:name="path"
|
||||
android:pathData="M 20.94 11 C 20.48 6.83 17.17 3.52 13 3.06 L 13 1 L 11 1 L 11 3.06 C 6.83 3.52 3.52 6.83 3.06 11 L 1 11 L 1 13 L 3.06 13 C 3.52 17.17 6.83 20.48 11 20.94 L 11 23 L 13 23 L 13 20.94 C 17.17 20.48 20.48 17.17 20.94 13 L 23 13 L 23 11 L 20.94 11 Z M 12 19 C 8.13 19 5 15.87 5 12 C 5 8.13 8.13 5 12 5 C 15.87 5 19 8.13 19 12 C 19 15.87 15.87 19 12 19 Z"
|
||||
android:fillColor="#000"
|
||||
android:strokeWidth="1"/>
|
||||
android:pathData="M 20.94 11 C 20.48 6.83 17.17 3.52 13 3.06 L 13 1 L 11 1 L 11 3.06 C 6.83 3.52 3.52 6.83 3.06 11 L 1 11 L 1 13 L 3.06 13 C 3.52 17.17 6.83 20.48 11 20.94 L 11 23 L 13 23 L 13 20.94 C 17.17 20.48 20.48 17.17 20.94 13 L 23 13 L 23 11 L 20.94 11 Z M 12 19 C 8.13 19 5 15.87 5 12 C 5 8.13 8.13 5 12 5 C 15.87 5 19 8.13 19 12 C 19 15.87 15.87 19 12 19 Z"
|
||||
android:strokeWidth="1" />
|
||||
<path
|
||||
android:name="path_1"
|
||||
android:pathData="M 12 8 C 10.94 8 9.921 8.422 9.172 9.172 C 8.422 9.921 8 10.94 8 12 C 8 13.06 8.422 14.079 9.172 14.828 C 9.921 15.578 10.94 16 12 16 C 13.06 16 14.079 15.578 14.828 14.828 C 15.578 14.079 16 13.06 16 12 C 16 10.94 15.578 9.921 14.828 9.172 C 14.079 8.422 13.06 8 12 8 Z"
|
||||
android:fillColor="#000001"
|
||||
android:strokeWidth="1"/>
|
||||
android:pathData="M 12 8 C 10.94 8 9.921 8.422 9.172 9.172 C 8.422 9.921 8 10.94 8 12 C 8 13.06 8.422 14.079 9.172 14.828 C 9.921 15.578 10.94 16 12 16 C 13.06 16 14.079 15.578 14.828 14.828 C 15.578 14.079 16 13.06 16 12 C 16 10.94 15.578 9.921 14.828 9.172 C 14.079 8.422 13.06 8 12 8 Z"
|
||||
android:strokeWidth="1" />
|
||||
</vector>
|
||||
</aapt:attr>
|
||||
<target android:name="path_1">
|
||||
<aapt:attr name="android:animation">
|
||||
<objectAnimator
|
||||
android:propertyName="fillAlpha"
|
||||
android:duration="2000"
|
||||
android:interpolator="@android:anim/linear_interpolator"
|
||||
android:propertyName="fillAlpha"
|
||||
android:repeatCount="infinite"
|
||||
android:repeatMode="restart"
|
||||
android:valueFrom="1"
|
||||
android:valueTo="0"
|
||||
android:valueType="floatType"
|
||||
android:interpolator="@android:anim/linear_interpolator"
|
||||
android:repeatCount="infinite"
|
||||
android:repeatMode="restart"/>
|
||||
android:valueType="floatType" />
|
||||
</aapt:attr>
|
||||
</target>
|
||||
</animated-vector>
|
||||
|
||||
@@ -4,30 +4,30 @@
|
||||
android:height="108dp"
|
||||
android:viewportWidth="108"
|
||||
android:viewportHeight="108">
|
||||
<group
|
||||
android:scaleX="0.56"
|
||||
android:scaleY="0.56"
|
||||
android:translateX="21.50"
|
||||
android:translateY="24.00">
|
||||
<path
|
||||
android:strokeWidth="1"
|
||||
android:pathData="M85.133,20.59C85.731,18.546 84.756,17.817 82.965,18.968L23.874,56.967c-1.791,1.152 -1.519,2.224 0.604,2.382L49.019,61.18c2.124,0.159 4.477,1.918 5.229,3.91l8.7,23.021c0.753,1.992 1.857,1.949 2.455,-0.094z"
|
||||
android:strokeColor="#f69123">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient
|
||||
android:startY="80.33152"
|
||||
android:startX="38.773293"
|
||||
android:endY="19.211866"
|
||||
android:endX="84.4913"
|
||||
android:type="linear">
|
||||
<item
|
||||
android:offset="0"
|
||||
android:color="#FFFBB22F" />
|
||||
<item
|
||||
android:offset="1"
|
||||
android:color="#FFF58820" />
|
||||
</gradient>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
</group>
|
||||
<group
|
||||
android:scaleX="0.56"
|
||||
android:scaleY="0.56"
|
||||
android:translateX="21.50"
|
||||
android:translateY="24.00">
|
||||
<path
|
||||
android:pathData="M85.133,20.59C85.731,18.546 84.756,17.817 82.965,18.968L23.874,56.967c-1.791,1.152 -1.519,2.224 0.604,2.382L49.019,61.18c2.124,0.159 4.477,1.918 5.229,3.91l8.7,23.021c0.753,1.992 1.857,1.949 2.455,-0.094z"
|
||||
android:strokeWidth="1"
|
||||
android:strokeColor="#f69123">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient
|
||||
android:endX="84.4913"
|
||||
android:endY="19.211866"
|
||||
android:startX="38.773293"
|
||||
android:startY="80.33152"
|
||||
android:type="linear">
|
||||
<item
|
||||
android:color="#FFFBB22F"
|
||||
android:offset="0" />
|
||||
<item
|
||||
android:color="#FFF58820"
|
||||
android:offset="1" />
|
||||
</gradient>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
</group>
|
||||
</vector>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24.0"
|
||||
android:viewportHeight="24.0">
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24.0"
|
||||
android:viewportHeight="24.0">
|
||||
<path
|
||||
android:fillColor="#FFFFFFFF"
|
||||
android:pathData="M20.5,3l-0.16,0.03L15,5.1 9,3 3.36,4.9c-0.21,0.07 -0.36,0.25 -0.36,0.48V20.5c0,0.28 0.22,0.5 0.5,0.5l0.16,-0.03L9,18.9l6,2.1 5.64,-1.9c0.21,-0.07 0.36,-0.25 0.36,-0.48V3.5c0,-0.28 -0.22,-0.5 -0.5,-0.5zM15,19l-6,-2.11V5l6,2.11V19z"/>
|
||||
android:pathData="M20.5,3l-0.16,0.03L15,5.1 9,3 3.36,4.9c-0.21,0.07 -0.36,0.25 -0.36,0.48V20.5c0,0.28 0.22,0.5 0.5,0.5l0.16,-0.03L9,18.9l6,2.1 5.64,-1.9c0.21,-0.07 0.36,-0.25 0.36,-0.48V3.5c0,-0.28 -0.22,-0.5 -0.5,-0.5zM15,19l-6,-2.11V5l6,2.11V19z" />
|
||||
</vector>
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||
android:viewportHeight="24.0" android:viewportWidth="24.0"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#FF000000" android:pathData="M12,2C8.14,2 5,5.14 5,9c0,5.25 7,13 7,13s7,-7.75 7,-13c0,-3.86 -3.14,-7 -7,-7zM16,10h-3v3h-2v-3L8,10L8,8h3L11,5h2v3h3v2z"/>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="#FFFFFF"
|
||||
android:viewportWidth="24.0"
|
||||
android:viewportHeight="24.0">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M12,2C8.14,2 5,5.14 5,9c0,5.25 7,13 7,13s7,-7.75 7,-13c0,-3.86 -3.14,-7 -7,-7zM16,10h-3v3h-2v-3L8,10L8,8h3L11,5h2v3h3v2z" />
|
||||
</vector>
|
||||
|
||||
@@ -1,25 +1,25 @@
|
||||
<vector android:height="34dp"
|
||||
android:viewportHeight="297"
|
||||
android:viewportWidth="210"
|
||||
android:width="24.040403dp"
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
android:width="24.040403dp"
|
||||
android:height="34dp"
|
||||
android:viewportWidth="210"
|
||||
android:viewportHeight="297">
|
||||
<path
|
||||
android:fillAlpha="0.49421525"
|
||||
android:fillColor="#333333"
|
||||
android:pathData="m108.528,213.298a56.035,7.006 5.281,0 0,-22.426 2.532,56.035 7.006,5.281 0,0 -0.234,0.177l-0.207,-0.024c-0.045,0.116 -0.075,0.231 -0.096,0.348a56.035,7.006 5.281,0 0,0.338 1.582c0.981,1.709 3.761,3.463 6.584,5.219l-22.744,15.5a67.065,11.557 4.228,0 0,-39.968 5.269,67.065 11.557,4.228 0,0 -0.729,0.576 67.065,11.557 4.228,0 0,-2.754 1.364,67.065 11.557,4.228 0,0 38.909,16.043l-32.177,27.065 52.228,-24.746a67.065,11.557 4.228,0 0,71.411 -3.819,67.065 11.557,4.228 0,0 0.728,-0.575 67.065,11.557 4.228,0 0,2.755 -1.364,67.065 11.557,4.228 0,0 -12.384,-10.598 40.034,5.073 5.25,0 0,0.056 -0.037,40.034 5.073,5.25 0,0 0.377,-0.343l22.452,-15.301c8.236,-0.652 17.656,-1.478 22.944,-3.01a56.035,7.006 5.281,0 0,2.655 -1.038,56.035 7.006,5.281 0,0 -46.084,-12.27 56.035,7.006 5.281,0 0,-41.636 -2.55z"
|
||||
android:strokeWidth="0.138931"
|
||||
android:strokeAlpha="0.265501"
|
||||
android:strokeColor="#000000"
|
||||
android:strokeLineCap="butt"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="0.138931" />
|
||||
android:strokeLineJoin="miter" />
|
||||
<path
|
||||
android:pathData="M70.603,174.308 L33.024,288.947 94.567,183.195Z"
|
||||
android:strokeWidth="0.264583"
|
||||
android:strokeAlpha="0.265501"
|
||||
android:strokeColor="#000000"
|
||||
android:strokeLineCap="butt"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="0.264583">
|
||||
android:strokeLineJoin="miter">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient
|
||||
android:endX="67.193245"
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||
android:viewportHeight="24.0" android:viewportWidth="24.0"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#FF000000" android:pathData="M12,2C8.13,2 5,5.13 5,9c0,5.25 7,13 7,13s7,-7.75 7,-13c0,-3.87 -3.13,-7 -7,-7zM12,11.5c-1.38,0 -2.5,-1.12 -2.5,-2.5s1.12,-2.5 2.5,-2.5 2.5,1.12 2.5,2.5 -1.12,2.5 -2.5,2.5z"/>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="#FFFFFF"
|
||||
android:viewportWidth="24.0"
|
||||
android:viewportHeight="24.0">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M12,2C8.13,2 5,5.13 5,9c0,5.25 7,13 7,13s7,-7.75 7,-13c0,-3.87 -3.13,-7 -7,-7zM12,11.5c-1.38,0 -2.5,-1.12 -2.5,-2.5s1.12,-2.5 2.5,-2.5 2.5,1.12 2.5,2.5 -1.12,2.5 -2.5,2.5z" />
|
||||
</vector>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM10,16.5v-9l6,4.5 -6,4.5z"
|
||||
android:fillColor="#ffffff"/>
|
||||
<path
|
||||
android:fillColor="#ffffff"
|
||||
android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM10,16.5v-9l6,4.5 -6,4.5z" />
|
||||
</vector>
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||
android:viewportHeight="24.0" android:viewportWidth="24.0"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#FF000000" android:pathData="M3,5h2L5,3c-1.1,0 -2,0.9 -2,2zM3,13h2v-2L3,11v2zM7,21h2v-2L7,19v2zM3,9h2L5,7L3,7v2zM13,3h-2v2h2L13,3zM19,3v2h2c0,-1.1 -0.9,-2 -2,-2zM5,21v-2L3,19c0,1.1 0.9,2 2,2zM3,17h2v-2L3,15v2zM9,3L7,3v2h2L9,3zM11,21h2v-2h-2v2zM19,13h2v-2h-2v2zM19,21c1.1,0 2,-0.9 2,-2h-2v2zM19,9h2L21,7h-2v2zM19,17h2v-2h-2v2zM15,21h2v-2h-2v2zM15,5h2L17,3h-2v2zM7,17h10L17,7L7,7v10zM9,9h6v6L9,15L9,9z"/>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="#FFFFFF"
|
||||
android:viewportWidth="24.0"
|
||||
android:viewportHeight="24.0">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M3,5h2L5,3c-1.1,0 -2,0.9 -2,2zM3,13h2v-2L3,11v2zM7,21h2v-2L7,19v2zM3,9h2L5,7L3,7v2zM13,3h-2v2h2L13,3zM19,3v2h2c0,-1.1 -0.9,-2 -2,-2zM5,21v-2L3,19c0,1.1 0.9,2 2,2zM3,17h2v-2L3,15v2zM9,3L7,3v2h2L9,3zM11,21h2v-2h-2v2zM19,13h2v-2h-2v2zM19,21c1.1,0 2,-0.9 2,-2h-2v2zM19,9h2L21,7h-2v2zM19,17h2v-2h-2v2zM15,21h2v-2h-2v2zM15,5h2L17,3h-2v2zM7,17h10L17,7L7,7v10zM9,9h6v6L9,15L9,9z" />
|
||||
</vector>
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||
android:viewportHeight="24" android:viewportWidth="24"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#FF000000" android:pathData="M19.1,12.9a2.8,2.8 0,0 0,0.1 -0.9,2.8 2.8,0 0,0 -0.1,-0.9l2.1,-1.6a0.7,0.7 0,0 0,0.1 -0.6L19.4,5.5a0.7,0.7 0,0 0,-0.6 -0.2l-2.4,1a6.5,6.5 0,0 0,-1.6 -0.9l-0.4,-2.6a0.5,0.5 0,0 0,-0.5 -0.4H10.1a0.5,0.5 0,0 0,-0.5 0.4L9.3,5.4a5.6,5.6 0,0 0,-1.7 0.9l-2.4,-1a0.4,0.4 0,0 0,-0.5 0.2l-2,3.4c-0.1,0.2 0,0.4 0.2,0.6l2,1.6a2.8,2.8 0,0 0,-0.1 0.9,2.8 2.8,0 0,0 0.1,0.9L2.8,14.5a0.7,0.7 0,0 0,-0.1 0.6l1.9,3.4a0.7,0.7 0,0 0,0.6 0.2l2.4,-1a6.5,6.5 0,0 0,1.6 0.9l0.4,2.6a0.5,0.5 0,0 0,0.5 0.4h3.8a0.5,0.5 0,0 0,0.5 -0.4l0.3,-2.6a5.6,5.6 0,0 0,1.7 -0.9l2.4,1a0.4,0.4 0,0 0,0.5 -0.2l2,-3.4c0.1,-0.2 0,-0.4 -0.2,-0.6ZM12,15.6A3.6,3.6 0,1 1,15.6 12,3.6 3.6,0 0,1 12,15.6Z"/>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="#FFFFFF"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M19.1,12.9a2.8,2.8 0,0 0,0.1 -0.9,2.8 2.8,0 0,0 -0.1,-0.9l2.1,-1.6a0.7,0.7 0,0 0,0.1 -0.6L19.4,5.5a0.7,0.7 0,0 0,-0.6 -0.2l-2.4,1a6.5,6.5 0,0 0,-1.6 -0.9l-0.4,-2.6a0.5,0.5 0,0 0,-0.5 -0.4H10.1a0.5,0.5 0,0 0,-0.5 0.4L9.3,5.4a5.6,5.6 0,0 0,-1.7 0.9l-2.4,-1a0.4,0.4 0,0 0,-0.5 0.2l-2,3.4c-0.1,0.2 0,0.4 0.2,0.6l2,1.6a2.8,2.8 0,0 0,-0.1 0.9,2.8 2.8,0 0,0 0.1,0.9L2.8,14.5a0.7,0.7 0,0 0,-0.1 0.6l1.9,3.4a0.7,0.7 0,0 0,0.6 0.2l2.4,-1a6.5,6.5 0,0 0,1.6 0.9l0.4,2.6a0.5,0.5 0,0 0,0.5 0.4h3.8a0.5,0.5 0,0 0,0.5 -0.4l0.3,-2.6a5.6,5.6 0,0 0,1.7 -0.9l2.4,1a0.4,0.4 0,0 0,0.5 -0.2l2,-3.4c0.1,-0.2 0,-0.4 -0.2,-0.6ZM12,15.6A3.6,3.6 0,1 1,15.6 12,3.6 3.6,0 0,1 12,15.6Z" />
|
||||
</vector>
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||
android:viewportHeight="24.0" android:viewportWidth="24.0"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#FF000000" android:pathData="M19,3L5,3c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2L21,5c0,-1.1 -0.9,-2 -2,-2zM9,17L7,17v-7h2v7zM13,17h-2L11,7h2v10zM17,17h-2v-4h2v4z"/>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="#FFFFFF"
|
||||
android:viewportWidth="24.0"
|
||||
android:viewportHeight="24.0">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M19,3L5,3c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2L21,5c0,-1.1 -0.9,-2 -2,-2zM9,17L7,17v-7h2v7zM13,17h-2L11,7h2v10zM17,17h-2v-4h2v4z" />
|
||||
</vector>
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="oval">
|
||||
<solid
|
||||
android:color="@color/text_gradient_center"/>
|
||||
<solid android:color="@color/text_gradient_center" />
|
||||
</shape>
|
||||
Reference in New Issue
Block a user