From 20f74a90c423552776c3d038a4d317606ec0512e Mon Sep 17 00:00:00 2001 From: Ayan Sarkar <71203077+Ayan-10@users.noreply.github.com> Date: Sun, 13 Jun 2021 09:06:47 +0530 Subject: [PATCH] Added a feature for editing coordinates (#4418) * not * Place Picker added * Pick location and API call linked * minor warnings resolved * Code conventions followed * issue fixed * Wikitext edited properly * minor modification * Location Picker added * Bottom sheet removed * Location picker fully implemented * credit added * credit added * issues fixed * issues fixed * minor issue fixed --- app/build.gradle | 2 +- app/src/main/AndroidManifest.xml | 6 +- .../LocationPicker/LocationPicker.java | 54 ++++ .../LocationPickerActivity.java | 288 ++++++++++++++++++ .../LocationPickerConstants.java | 13 + .../LocationPickerViewModel.java | 60 ++++ .../main/java/fr/free/nrw/commons/Media.kt | 2 +- .../nrw/commons/actions/PageEditClient.kt | 12 + .../nrw/commons/actions/PageEditInterface.kt | 20 +- .../coordinates/CoordinateEditHelper.java | 197 ++++++++++++ .../commons/media/MediaDetailFragment.java | 104 ++++++- .../notification/NotificationHelper.java | 1 + .../drawable-hdpi/map_default_map_marker.png | Bin 0 -> 4543 bytes .../map_default_map_marker_shadow.png | Bin 0 -> 778 bytes .../res/drawable-hdpi/mapbox_logo_icon.png | Bin 0 -> 4778 bytes .../drawable-mdpi/map_default_map_marker.png | Bin 0 -> 2771 bytes .../map_default_map_marker_shadow.png | Bin 0 -> 474 bytes .../res/drawable-mdpi/mapbox_logo_icon.png | Bin 0 -> 2622 bytes .../drawable-xhdpi/map_default_map_marker.png | Bin 0 -> 6194 bytes .../map_default_map_marker_shadow.png | Bin 0 -> 1186 bytes .../res/drawable-xhdpi/mapbox_logo_icon.png | Bin 0 -> 6579 bytes .../map_default_map_marker.png | Bin 0 -> 10777 bytes .../map_default_map_marker_shadow.png | Bin 0 -> 2437 bytes .../res/drawable-xxhdpi/mapbox_logo_icon.png | Bin 0 -> 10802 bytes .../map_default_map_marker.png | Bin 0 -> 15733 bytes .../map_default_map_marker_shadow.png | Bin 0 -> 4205 bytes .../res/drawable-xxxhdpi/mapbox_logo_icon.png | Bin 0 -> 14441 bytes .../res/layout/activity_location_picker.xml | 20 ++ .../bottom_container_location_picker.xml | 35 +++ .../res/layout/content_location_picker.xml | 49 +++ .../main/res/layout/fragment_media_detail.xml | 10 + .../res/layout/toolbar_location_picker.xml | 50 +++ app/src/main/res/values/strings.xml | 13 + 33 files changed, 924 insertions(+), 12 deletions(-) create mode 100644 app/src/main/java/fr/free/nrw/commons/LocationPicker/LocationPicker.java create mode 100644 app/src/main/java/fr/free/nrw/commons/LocationPicker/LocationPickerActivity.java create mode 100644 app/src/main/java/fr/free/nrw/commons/LocationPicker/LocationPickerConstants.java create mode 100644 app/src/main/java/fr/free/nrw/commons/LocationPicker/LocationPickerViewModel.java create mode 100644 app/src/main/java/fr/free/nrw/commons/coordinates/CoordinateEditHelper.java create mode 100644 app/src/main/res/drawable-hdpi/map_default_map_marker.png create mode 100644 app/src/main/res/drawable-hdpi/map_default_map_marker_shadow.png create mode 100644 app/src/main/res/drawable-hdpi/mapbox_logo_icon.png create mode 100644 app/src/main/res/drawable-mdpi/map_default_map_marker.png create mode 100644 app/src/main/res/drawable-mdpi/map_default_map_marker_shadow.png create mode 100644 app/src/main/res/drawable-mdpi/mapbox_logo_icon.png create mode 100644 app/src/main/res/drawable-xhdpi/map_default_map_marker.png create mode 100644 app/src/main/res/drawable-xhdpi/map_default_map_marker_shadow.png create mode 100644 app/src/main/res/drawable-xhdpi/mapbox_logo_icon.png create mode 100644 app/src/main/res/drawable-xxhdpi/map_default_map_marker.png create mode 100644 app/src/main/res/drawable-xxhdpi/map_default_map_marker_shadow.png create mode 100644 app/src/main/res/drawable-xxhdpi/mapbox_logo_icon.png create mode 100644 app/src/main/res/drawable-xxxhdpi/map_default_map_marker.png create mode 100644 app/src/main/res/drawable-xxxhdpi/map_default_map_marker_shadow.png create mode 100644 app/src/main/res/drawable-xxxhdpi/mapbox_logo_icon.png create mode 100644 app/src/main/res/layout/activity_location_picker.xml create mode 100644 app/src/main/res/layout/bottom_container_location_picker.xml create mode 100644 app/src/main/res/layout/content_location_picker.xml create mode 100644 app/src/main/res/layout/toolbar_location_picker.xml diff --git a/app/build.gradle b/app/build.gradle index 4c562e7de..752f4b718 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -39,7 +39,7 @@ dependencies { implementation 'fr.avianey.com.viewpagerindicator:library:2.4.1.1@aar' implementation 'com.github.chrisbanes:PhotoView:2.0.0' implementation 'com.github.pedrovgs:renderers:3.3.3' - implementation 'com.mapbox.mapboxsdk:mapbox-android-sdk:8.6.2' + implementation 'com.mapbox.mapboxsdk:mapbox-android-sdk:9.1.0' implementation 'com.mapbox.mapboxsdk:mapbox-android-plugin-localization-v8:0.11.0' implementation 'com.mapbox.mapboxsdk:mapbox-android-plugin-scalebar-v9:0.4.0' implementation 'com.github.deano2390:MaterialShowcaseView:1.2.0' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 47d102fdc..036299c66 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -137,7 +137,11 @@ android:name=".review.ReviewActivity" android:label="@string/title_activity_review" /> - + + diff --git a/app/src/main/java/fr/free/nrw/commons/LocationPicker/LocationPicker.java b/app/src/main/java/fr/free/nrw/commons/LocationPicker/LocationPicker.java new file mode 100644 index 000000000..bd890d6ef --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/LocationPicker/LocationPicker.java @@ -0,0 +1,54 @@ +package fr.free.nrw.commons.LocationPicker; + +import android.app.Activity; +import android.content.Intent; +import androidx.annotation.NonNull; +import com.mapbox.mapboxsdk.camera.CameraPosition; + +/** + * Helper class for starting the activity + */ +public final class LocationPicker { + + /** + * Getting camera position from the intent using constants + * @param data intent + * @return CameraPosition + */ + public static CameraPosition getCameraPosition(final Intent data) { + return data.getParcelableExtra(LocationPickerConstants.MAP_CAMERA_POSITION); + } + + public static class IntentBuilder { + + private final Intent intent; + + /** + * Creates a new builder that creates an intent to launch the place picker activity. + */ + public IntentBuilder() { + intent = new Intent(); + } + + /** + * Gets and puts location in intent + * @param position CameraPosition + * @return LocationPicker.IntentBuilder + */ + public LocationPicker.IntentBuilder defaultLocation( + final CameraPosition position) { + intent.putExtra(LocationPickerConstants.MAP_CAMERA_POSITION, position); + return this; + } + + /** + * Gets and sets the activity + * @param activity Activity + * @return Intent + */ + public Intent build(final Activity activity) { + intent.setClass(activity, LocationPickerActivity.class); + return intent; + } + } +} diff --git a/app/src/main/java/fr/free/nrw/commons/LocationPicker/LocationPickerActivity.java b/app/src/main/java/fr/free/nrw/commons/LocationPicker/LocationPickerActivity.java new file mode 100644 index 000000000..57da44a42 --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/LocationPicker/LocationPickerActivity.java @@ -0,0 +1,288 @@ +package fr.free.nrw.commons.LocationPicker; + +import android.content.Intent; +import android.os.Bundle; +import android.text.Html; +import android.text.method.LinkMovementMethod; +import android.view.Window; +import android.view.animation.OvershootInterpolator; +import android.widget.ImageView; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.app.ActionBar; +import androidx.appcompat.app.AppCompatActivity; +import androidx.appcompat.widget.AppCompatTextView; +import androidx.constraintlayout.widget.ConstraintLayout; +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; +import com.google.android.material.floatingactionbutton.FloatingActionButton; +import com.mapbox.android.core.permissions.PermissionsManager; +import com.mapbox.mapboxsdk.camera.CameraPosition; +import com.mapbox.mapboxsdk.camera.CameraPosition.Builder; +import com.mapbox.mapboxsdk.camera.CameraUpdateFactory; +import com.mapbox.mapboxsdk.geometry.LatLng; +import com.mapbox.mapboxsdk.location.LocationComponent; +import com.mapbox.mapboxsdk.location.LocationComponentActivationOptions; +import com.mapbox.mapboxsdk.location.modes.CameraMode; +import com.mapbox.mapboxsdk.location.modes.RenderMode; +import com.mapbox.mapboxsdk.maps.MapView; +import com.mapbox.mapboxsdk.maps.MapboxMap; +import com.mapbox.mapboxsdk.maps.MapboxMap.OnCameraIdleListener; +import com.mapbox.mapboxsdk.maps.MapboxMap.OnCameraMoveStartedListener; +import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; +import com.mapbox.mapboxsdk.maps.Style; +import com.mapbox.mapboxsdk.maps.UiSettings; +import fr.free.nrw.commons.R; +import org.jetbrains.annotations.NotNull; +import timber.log.Timber; + +/** + * Helps to pick location and return the result with an intent + */ +public class LocationPickerActivity extends AppCompatActivity implements OnMapReadyCallback, + OnCameraMoveStartedListener, OnCameraIdleListener, Observer { + + /** + * cameraPosition : position of picker + */ + private CameraPosition cameraPosition; + /** + * markerImage : picker image + */ + private ImageView markerImage; + /** + * mapboxMap : map + */ + private MapboxMap mapboxMap; + /** + * mapView : view of the map + */ + private MapView mapView; + /** + * tvAttribution : credit + */ + private AppCompatTextView tvAttribution; + + @Override + protected void onCreate(@Nullable final Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + getWindow().requestFeature(Window.FEATURE_ACTION_BAR); + final ActionBar actionBar = getSupportActionBar(); + if (actionBar != null) { + actionBar.hide(); + } + setContentView(R.layout.activity_location_picker); + + if (savedInstanceState == null) { + cameraPosition = getIntent().getParcelableExtra(LocationPickerConstants.MAP_CAMERA_POSITION); + } + + final LocationPickerViewModel viewModel = new ViewModelProvider(this) + .get(LocationPickerViewModel.class); + viewModel.getResult().observe(this, this); + + bindViews(); + addBackButtonListener(); + addPlaceSelectedButton(); + addCredits(); + getToolbarUI(); + + mapView.onCreate(savedInstanceState); + mapView.getMapAsync(this); + } + + /** + * For showing credits + */ + private void addCredits() { + tvAttribution.setText(Html.fromHtml(getString(R.string.map_attribution))); + tvAttribution.setMovementMethod(LinkMovementMethod.getInstance()); + } + + /** + * Clicking back button destroy locationPickerActivity + */ + private void addBackButtonListener() { + final ImageView backButton = findViewById(R.id.mapbox_place_picker_toolbar_back_button); + backButton.setOnClickListener(view -> finish()); + } + + /** + * Binds mapView and location picker icon + */ + private void bindViews() { + mapView = findViewById(R.id.map_view); + markerImage = findViewById(R.id.location_picker_image_view_marker); + tvAttribution = findViewById(R.id.tv_attribution); + } + + /** + * Binds the listeners + */ + private void bindListeners() { + mapboxMap.addOnCameraMoveStartedListener( + this); + mapboxMap.addOnCameraIdleListener( + this); + } + + /** + * Gets toolbar color + */ + private void getToolbarUI() { + final ConstraintLayout toolbar = findViewById(R.id.location_picker_toolbar); + toolbar.setBackgroundColor(getResources().getColor(R.color.primaryColor)); + } + + /** + * Takes action when map is ready to show + * @param mapboxMap map + */ + @Override + public void onMapReady(final MapboxMap mapboxMap) { + this.mapboxMap = mapboxMap; + mapboxMap.setStyle(Style.MAPBOX_STREETS, style -> { + adjustCameraBasedOnOptions(); + bindListeners(); + enableLocationComponent(style); + }); + } + + /** + * move the location to the current media coordinates + */ + private void adjustCameraBasedOnOptions() { + mapboxMap.moveCamera(CameraUpdateFactory.newCameraPosition(cameraPosition)); + } + + /** + * Enables location components + * @param loadedMapStyle Style + */ + @SuppressWarnings( {"MissingPermission"}) + private void enableLocationComponent(@NonNull final Style loadedMapStyle) { + final UiSettings uiSettings = mapboxMap.getUiSettings(); + uiSettings.setAttributionEnabled(false); + + // Check if permissions are enabled and if not request + if (PermissionsManager.areLocationPermissionsGranted(this)) { + + // Get an instance of the component + final LocationComponent locationComponent = mapboxMap.getLocationComponent(); + + // Activate with options + locationComponent.activateLocationComponent( + LocationComponentActivationOptions.builder(this, loadedMapStyle).build()); + + // Enable to make component visible + locationComponent.setLocationComponentEnabled(true); + + // Set the component's camera mode + locationComponent.setCameraMode(CameraMode.NONE); + + // Set the component's render mode + locationComponent.setRenderMode(RenderMode.NORMAL); + + } + } + + /** + * Acts on camera moving + * @param reason int + */ + @Override + public void onCameraMoveStarted(final int reason) { + Timber.v("Map camera has begun moving."); + if (markerImage.getTranslationY() == 0) { + markerImage.animate().translationY(-75) + .setInterpolator(new OvershootInterpolator()).setDuration(250).start(); + } + } + + /** + * Acts on camera idle + */ + @Override + public void onCameraIdle() { + Timber.v("Map camera is now idling."); + markerImage.animate().translationY(0) + .setInterpolator(new OvershootInterpolator()).setDuration(250).start(); + } + + /** + * Takes action on camera position + * @param position position of picker + */ + @Override + public void onChanged(@Nullable CameraPosition position) { + if (position == null) { + position = new Builder() + .target(new LatLng(mapboxMap.getCameraPosition().target.getLatitude(), + mapboxMap.getCameraPosition().target.getLongitude())) + .zoom(16).build(); + } + cameraPosition = position; + } + + /** + * Select the preferable location + */ + private void addPlaceSelectedButton() { + final FloatingActionButton placeSelectedButton = findViewById(R.id.location_chosen_button); + placeSelectedButton.setOnClickListener(view -> placeSelected()); + } + + /** + * Return the intent with required data + */ + void placeSelected() { + final Intent returningIntent = new Intent(); + returningIntent.putExtra(LocationPickerConstants.MAP_CAMERA_POSITION, + mapboxMap.getCameraPosition()); + setResult(AppCompatActivity.RESULT_OK, returningIntent); + finish(); + } + + @Override + protected void onStart() { + super.onStart(); + mapView.onStart(); + } + + @Override + protected void onResume() { + super.onResume(); + mapView.onResume(); + } + + @Override + protected void onPause() { + super.onPause(); + mapView.onPause(); + } + + @Override + protected void onStop() { + super.onStop(); + mapView.onStop(); + } + + @Override + protected void onSaveInstanceState(final @NotNull Bundle outState) { + super.onSaveInstanceState(outState); + mapView.onSaveInstanceState(outState); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + mapView.onDestroy(); + } + + @Override + public void onLowMemory() { + super.onLowMemory(); + mapView.onLowMemory(); + } +} diff --git a/app/src/main/java/fr/free/nrw/commons/LocationPicker/LocationPickerConstants.java b/app/src/main/java/fr/free/nrw/commons/LocationPicker/LocationPickerConstants.java new file mode 100644 index 000000000..1a2cab6d1 --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/LocationPicker/LocationPickerConstants.java @@ -0,0 +1,13 @@ +package fr.free.nrw.commons.LocationPicker; + +/** + * Constants need for location picking + */ +public final class LocationPickerConstants { + + public static final String MAP_CAMERA_POSITION + = "location.picker.cameraPosition"; + + private LocationPickerConstants() { + } +} diff --git a/app/src/main/java/fr/free/nrw/commons/LocationPicker/LocationPickerViewModel.java b/app/src/main/java/fr/free/nrw/commons/LocationPicker/LocationPickerViewModel.java new file mode 100644 index 000000000..c0b91cf71 --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/LocationPicker/LocationPickerViewModel.java @@ -0,0 +1,60 @@ +package fr.free.nrw.commons.LocationPicker; + +import android.app.Application; +import androidx.annotation.NonNull; +import androidx.lifecycle.AndroidViewModel; +import androidx.lifecycle.MutableLiveData; +import com.mapbox.mapboxsdk.camera.CameraPosition; +import org.jetbrains.annotations.NotNull; +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; +import timber.log.Timber; + +/** + * Observes live camera position data + */ +public class LocationPickerViewModel extends AndroidViewModel implements Callback { + + /** + * Wrapping CameraPosition with MutableLiveData + */ + private final MutableLiveData result = new MutableLiveData<>(); + + /** + * Constructor for this class + * @param application Application + */ + public LocationPickerViewModel(@NonNull final Application application) { + super(application); + } + + /** + * Responses on camera position changing + * @param call Call + * @param response Response + */ + @Override + public void onResponse(final @NotNull Call call, + final Response response) { + if(response.body()==null){ + result.setValue(null); + return; + } + result.setValue(response.body()); + } + + @Override + public void onFailure(final @NotNull Call call, final @NotNull Throwable t) { + Timber.e(t); + } + + /** + * Gets live CameraPosition + * @return MutableLiveData + */ + public MutableLiveData getResult() { + return result; + } + +} diff --git a/app/src/main/java/fr/free/nrw/commons/Media.kt b/app/src/main/java/fr/free/nrw/commons/Media.kt index 090d8e230..3987acb37 100644 --- a/app/src/main/java/fr/free/nrw/commons/Media.kt +++ b/app/src/main/java/fr/free/nrw/commons/Media.kt @@ -74,7 +74,7 @@ class Media constructor( * Gets the coordinates of where the file was created. * @return file coordinates as a LatLng */ - val coordinates: LatLng? = null, + var coordinates: LatLng? = null, val captions: Map = emptyMap(), val descriptions: Map = emptyMap(), val depictionIds: List = emptyList() diff --git a/app/src/main/java/fr/free/nrw/commons/actions/PageEditClient.kt b/app/src/main/java/fr/free/nrw/commons/actions/PageEditClient.kt index 0ae7e42de..4dfce0f88 100644 --- a/app/src/main/java/fr/free/nrw/commons/actions/PageEditClient.kt +++ b/app/src/main/java/fr/free/nrw/commons/actions/PageEditClient.kt @@ -1,6 +1,7 @@ package fr.free.nrw.commons.actions import io.reactivex.Observable +import io.reactivex.Single import org.wikipedia.csrf.CsrfTokenClient /** @@ -62,4 +63,15 @@ class PageEditClient( Observable.just(false) } } + + /** + * Get whole WikiText of required file + * @param title : Name of the file + * @return Observable + */ + fun getCurrentWikiText(title: String): Single { + return pageEditInterface.getWikiText(title).map { + it.query()?.pages()?.get(0)?.revisions()?.get(0)?.content() + } + } } \ No newline at end of file diff --git a/app/src/main/java/fr/free/nrw/commons/actions/PageEditInterface.kt b/app/src/main/java/fr/free/nrw/commons/actions/PageEditInterface.kt index 8b27d1288..91e8230bf 100644 --- a/app/src/main/java/fr/free/nrw/commons/actions/PageEditInterface.kt +++ b/app/src/main/java/fr/free/nrw/commons/actions/PageEditInterface.kt @@ -1,12 +1,11 @@ package fr.free.nrw.commons.actions import io.reactivex.Observable +import io.reactivex.Single import org.wikipedia.dataclient.Service +import org.wikipedia.dataclient.mwapi.MwQueryResponse import org.wikipedia.edit.Edit -import retrofit2.http.Field -import retrofit2.http.FormUrlEncoded -import retrofit2.http.Headers -import retrofit2.http.POST +import retrofit2.http.* /** * This interface facilitates wiki commons page editing services to the Networking module @@ -73,4 +72,17 @@ interface PageEditInterface { @Field("prependtext") prependText: String, @Field("token") token: String ): Observable + + /** + * Get wiki text for provided file names + * @param titles : Name of the file + * @return Single + */ + @GET( + Service.MW_API_PREFIX + + "action=query&prop=revisions&rvprop=content|timestamp&rvlimit=1&converttitles=" + ) + fun getWikiText( + @Query("titles") title: String + ): Single } \ No newline at end of file diff --git a/app/src/main/java/fr/free/nrw/commons/coordinates/CoordinateEditHelper.java b/app/src/main/java/fr/free/nrw/commons/coordinates/CoordinateEditHelper.java new file mode 100644 index 000000000..1f3a75029 --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/coordinates/CoordinateEditHelper.java @@ -0,0 +1,197 @@ +package fr.free.nrw.commons.coordinates; + +import static fr.free.nrw.commons.notification.NotificationHelper.NOTIFICATION_EDIT_COORDINATES; + +import android.content.Context; +import android.content.Intent; +import android.net.Uri; +import fr.free.nrw.commons.BuildConfig; +import fr.free.nrw.commons.Media; +import fr.free.nrw.commons.R; +import fr.free.nrw.commons.actions.PageEditClient; +import fr.free.nrw.commons.notification.NotificationHelper; +import fr.free.nrw.commons.utils.ViewUtilWrapper; +import io.reactivex.Observable; +import io.reactivex.Single; +import io.reactivex.schedulers.Schedulers; +import java.util.Objects; +import javax.inject.Inject; +import javax.inject.Named; +import org.apache.commons.lang3.StringUtils; +import timber.log.Timber; + +/** + * Helper class for edit and update given coordinates and showing notification about new coordinates + * upgradation + */ +public class CoordinateEditHelper { + + /** + * notificationHelper: helps creating notification + */ + private final NotificationHelper notificationHelper; + /** + * * pageEditClient: methods provided by this member posts the edited coordinates + * to the Media wiki api + */ + public final PageEditClient pageEditClient; + /** + * viewUtil: helps to show Toast + */ + private final ViewUtilWrapper viewUtil; + + @Inject + public CoordinateEditHelper(final NotificationHelper notificationHelper, + @Named("commons-page-edit") final PageEditClient pageEditClient, + final ViewUtilWrapper viewUtil) { + this.notificationHelper = notificationHelper; + this.pageEditClient = pageEditClient; + this.viewUtil = viewUtil; + } + + /** + * Public interface to edit coordinates + * @param context to be added + * @param media to be added + * @param Accuracy to be added + * @return Single + */ + public Single makeCoordinatesEdit(final Context context, final Media media, + final String Latitude, final String Longitude, final String Accuracy) { + viewUtil.showShortToast(context, + context.getString(R.string.coordinates_edit_helper_make_edit_toast)); + return addCoordinates(media, Latitude, Longitude, Accuracy) + .flatMapSingle(result -> Single.just(showCoordinatesEditNotification(context, media, + Latitude, Longitude, Accuracy, result))) + .firstOrError(); + } + + /** + * Replaces new coordinates + * @param media to be added + * @param Latitude to be added + * @param Longitude to be added + * @param Accuracy to be added + * @return Observable + */ + private Observable addCoordinates(final Media media, final String Latitude, + final String Longitude, final String Accuracy) { + Timber.d("thread is coordinates adding %s", Thread.currentThread().getName()); + final String summary = "Adding Coordinates"; + + final StringBuilder buffer = new StringBuilder(); + + final String wikiText = pageEditClient.getCurrentWikiText(media.getFilename()) + .subscribeOn(Schedulers.io()) + .blockingGet(); + + if (Latitude != null) { + buffer.append("\n{{Location|").append(Latitude).append("|").append(Longitude) + .append("|").append(Accuracy).append("}}"); + } + + final String editedLocation = buffer.toString(); + final String appendText = getFormattedWikiText(wikiText, editedLocation); + + return pageEditClient.edit(Objects.requireNonNull(media.getFilename()) + , appendText, summary); + } + + /** + * Helps to get formatted wikitext with upgraded location + * @param wikiText current wikitext + * @param editedLocation new location + * @return String + */ + private String getFormattedWikiText(final String wikiText, final String editedLocation){ + + if (wikiText.contains("filedesc") && wikiText.contains("Location")) { + + final String fromLocationToEnd = wikiText.substring(wikiText.indexOf("{{Location")); + final String firstHalf = wikiText.substring(0, wikiText.indexOf("{{Location")); + final String lastHalf = fromLocationToEnd.substring( + fromLocationToEnd.indexOf("}}") + 2); + + final int startOfSecondSection = StringUtils.ordinalIndexOf(wikiText, + "==", 3); + final StringBuilder buffer = new StringBuilder(); + if (wikiText.charAt(wikiText.indexOf("{{Location")-1) == '\n') { + buffer.append(editedLocation.substring(1)); + } else { + buffer.append(editedLocation); + } + if (startOfSecondSection != -1 && wikiText.charAt(startOfSecondSection-1)!= '\n') { + buffer.append("\n"); + } + + return firstHalf + buffer + lastHalf; + + } + if (wikiText.contains("filedesc") && !wikiText.contains("Location")) { + + final int startOfSecondSection = StringUtils.ordinalIndexOf(wikiText, + "==", 3); + + if (startOfSecondSection != -1) { + final String firstHalf = wikiText.substring(0, startOfSecondSection); + final String lastHalf = wikiText.substring(startOfSecondSection); + final String buffer = editedLocation.substring(1) + + "\n"; + return firstHalf + buffer + lastHalf; + } + + return wikiText + editedLocation; + } + if (!wikiText.contains("filedesc") && !wikiText.contains("Location")) { + + return "== {{int:filedesc}} ==" + editedLocation + wikiText; + + } + if (!wikiText.contains("filedesc") && wikiText.contains("Location")) { + + return "== {{int:filedesc}} ==" + editedLocation + wikiText; + + } + return null; + } + + /** + * Update coordinates and shows notification about coordinates update + * @param context to be added + * @param media to be added + * @param latitude to be added + * @param longitude to be added + * @param Accuracy to be added + * @param result to be added + * @return boolean + */ + private boolean showCoordinatesEditNotification(final Context context, final Media media, + final String latitude, final String longitude, final String Accuracy, + final boolean result) { + final String message; + String title = context.getString(R.string.coordinates_edit_helper_show_edit_title); + + if (result) { + media.setCoordinates( + new fr.free.nrw.commons.location.LatLng(Double.parseDouble(latitude), + Double.parseDouble(longitude), + Float.parseFloat(Accuracy))); + title += ": " + context + .getString(R.string.coordinates_edit_helper_show_edit_title_success); + final StringBuilder coordinatesInMessage = new StringBuilder(); + final String mediaCoordinate = String.valueOf(media.getCoordinates()); + coordinatesInMessage.append(mediaCoordinate); + message = context.getString(R.string.coordinates_edit_helper_show_edit_message, + coordinatesInMessage.toString()); + } else { + title += ": " + context.getString(R.string.coordinates_edit_helper_show_edit_title); + message = context.getString(R.string.coordinates_edit_helper_edit_message_else) ; + } + + final String urlForFile = BuildConfig.COMMONS_URL + "/wiki/" + media.getFilename(); + final Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(urlForFile)); + notificationHelper.showNotification(context, title, message, NOTIFICATION_EDIT_COORDINATES, + browserIntent); + return result; + } +} diff --git a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java index 6c9472ddd..8e6518c44 100644 --- a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java @@ -1,5 +1,7 @@ package fr.free.nrw.commons.media; +import static android.app.Activity.RESULT_CANCELED; +import static android.app.Activity.RESULT_OK; import static android.view.View.GONE; import static android.view.View.VISIBLE; import static fr.free.nrw.commons.category.CategoryClientKt.CATEGORY_NEEDING_CATEGORIES; @@ -16,11 +18,8 @@ import android.os.Bundle; import android.text.Editable; import android.text.TextUtils; import android.text.TextWatcher; -import android.util.Log; -import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; -import android.view.View.OnKeyListener; import android.view.ViewGroup; import android.view.ViewTreeObserver; import android.view.ViewTreeObserver.OnGlobalLayoutListener; @@ -50,6 +49,9 @@ import com.facebook.imagepipeline.image.ImageInfo; import com.facebook.imagepipeline.request.ImageRequest; import com.jakewharton.rxbinding2.view.RxView; import com.jakewharton.rxbinding2.widget.RxSearchView; +import com.mapbox.mapboxsdk.camera.CameraPosition; +import com.mapbox.mapboxsdk.geometry.LatLng; +import fr.free.nrw.commons.LocationPicker.LocationPicker; import fr.free.nrw.commons.Media; import fr.free.nrw.commons.MediaDataExtractor; import fr.free.nrw.commons.R; @@ -62,10 +64,11 @@ import fr.free.nrw.commons.category.CategoryEditHelper; import fr.free.nrw.commons.category.CategoryEditSearchRecyclerViewAdapter; import fr.free.nrw.commons.category.CategoryEditSearchRecyclerViewAdapter.Callback; import fr.free.nrw.commons.contributions.ContributionsFragment; +import fr.free.nrw.commons.coordinates.CoordinateEditHelper; import fr.free.nrw.commons.delete.DeleteHelper; import fr.free.nrw.commons.delete.ReasonBuilder; -import fr.free.nrw.commons.explore.depictions.WikidataItemDetailsActivity; import fr.free.nrw.commons.di.CommonsDaggerSupportFragment; +import fr.free.nrw.commons.explore.depictions.WikidataItemDetailsActivity; import fr.free.nrw.commons.kvstore.JsonKvStore; import fr.free.nrw.commons.nearby.Label; import fr.free.nrw.commons.ui.widget.HtmlTextView; @@ -77,8 +80,9 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Locale; -import java.util.concurrent.TimeUnit; import java.util.Map; +import java.util.Objects; +import java.util.concurrent.TimeUnit; import javax.inject.Inject; import javax.inject.Named; import org.apache.commons.lang3.StringUtils; @@ -88,6 +92,7 @@ import timber.log.Timber; public class MediaDetailFragment extends CommonsDaggerSupportFragment implements Callback, CategoryEditHelper.Callback { + private static final int REQUEST_CODE = 1001 ; private boolean editable; private boolean isCategoryImage; private MediaDetailPagerFragment.MediaDetailProvider detailProvider; @@ -125,6 +130,8 @@ public class MediaDetailFragment extends CommonsDaggerSupportFragment implements @Inject CategoryEditHelper categoryEditHelper; @Inject + CoordinateEditHelper coordinateEditHelper; + @Inject ViewUtilWrapper viewUtil; @Inject CategoryClient categoryClient; @@ -760,6 +767,75 @@ public class MediaDetailFragment extends CommonsDaggerSupportFragment implements } } + @OnClick(R.id.coordinate_edit) + public void onUpdateCoordinatesClicked(){ + goToLocationPickerActivity(); + } + + /** + * Start location picker activity with a request code and get the coordinates from the activity. + */ + private void goToLocationPickerActivity() { + /* + If location is not provided in media this coordinates will act as a placeholder in + location picker activity + */ + double defaultLatitude = 37.773972; + double defaultLongitude = -122.431297; + + if (media.getCoordinates() != null) { + defaultLatitude = media.getCoordinates().getLatitude(); + defaultLongitude = media.getCoordinates().getLongitude(); + } + startActivityForResult(new LocationPicker.IntentBuilder() + .defaultLocation(new CameraPosition.Builder() + .target(new LatLng(defaultLatitude, defaultLongitude)) + .zoom(16).build()) + .build(getActivity()), REQUEST_CODE); + } + + /** + * Get the coordinates and update the existing coordinates. + * @param requestCode + * @param resultCode + * @param data + */ + @Override + public void onActivityResult(final int requestCode, final int resultCode, + @Nullable final Intent data) { + super.onActivityResult(requestCode, resultCode, data); + + if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) { + + assert data != null; + final CameraPosition cameraPosition = LocationPicker.getCameraPosition(data); + + if (cameraPosition != null) { + + final String latitude = String.valueOf(cameraPosition.target.getLatitude()); + final String longitude = String.valueOf(cameraPosition.target.getLongitude()); + final String accuracy = String.valueOf(cameraPosition.target.getAltitude()); + String currentLatitude = null; + String currentLongitude = null; + + if (media.getCoordinates() != null) { + currentLatitude = String.valueOf(media.getCoordinates().getLatitude()); + currentLongitude = String.valueOf(media.getCoordinates().getLongitude()); + } + + if (!latitude.equals(currentLatitude) || !longitude.equals(currentLongitude)) { + updateCoordinates(latitude, longitude, accuracy); + } else if (media.getCoordinates() == null) { + updateCoordinates(latitude, longitude, accuracy); + } + } + } else if (resultCode == RESULT_CANCELED) { + viewUtil.showShortToast(getContext(), + Objects.requireNonNull(getContext()) + .getString(R.string.coordinates_picking_unsuccessful)); + } + } + @OnClick(R.id.update_categories_button) public void onUpdateCategoriesClicked() { updateCategories(categoryEditSearchRecyclerViewAdapter.getNewCategories()); @@ -783,6 +859,24 @@ public class MediaDetailFragment extends CommonsDaggerSupportFragment implements })); } + /** + * Fetched coordinates are replaced with existing coordinates by a POST API call. + * @param Latitude to be added + * @param Longitude to be added + * @param Accuracy to be added + */ + public void updateCoordinates(final String Latitude, final String Longitude, + final String Accuracy) { + compositeDisposable.add(coordinateEditHelper.makeCoordinatesEdit(getContext(), media, + Latitude, Longitude, Accuracy) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(s -> { + Timber.d("Coordinates are added."); + coordinates.setText(prettyCoordinates(media)); + })); + } + @SuppressLint("StringFormatInvalid") @OnClick(R.id.nominateDeletion) public void onDeleteButtonClicked(){ diff --git a/app/src/main/java/fr/free/nrw/commons/notification/NotificationHelper.java b/app/src/main/java/fr/free/nrw/commons/notification/NotificationHelper.java index 76b51bb57..a23f350bd 100644 --- a/app/src/main/java/fr/free/nrw/commons/notification/NotificationHelper.java +++ b/app/src/main/java/fr/free/nrw/commons/notification/NotificationHelper.java @@ -25,6 +25,7 @@ public class NotificationHelper { public static final int NOTIFICATION_DELETE = 1; public static final int NOTIFICATION_EDIT_CATEGORY = 2; + public static final int NOTIFICATION_EDIT_COORDINATES = 3; private NotificationManager notificationManager; private NotificationCompat.Builder notificationBuilder; diff --git a/app/src/main/res/drawable-hdpi/map_default_map_marker.png b/app/src/main/res/drawable-hdpi/map_default_map_marker.png new file mode 100644 index 0000000000000000000000000000000000000000..ef993a0f55ae78fc0cfb0347c655eb73c9d6f0bb GIT binary patch literal 4543 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 S)1NOI!1%I-e$^${xPJkL9ayda literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/map_default_map_marker_shadow.png b/app/src/main/res/drawable-hdpi/map_default_map_marker_shadow.png new file mode 100644 index 0000000000000000000000000000000000000000..c841453c101edaad02c2e5e07b1feadbeb4e332d GIT binary patch literal 778 zcmeAS@N?(olHy`uVBq!ia0vp^u0Y(w!3HF?vQk2U6k~CayA#8@b22X(7?_TDx;TbZ zFuuL+RNE_CG7e zb#il|!-}0Z6k2Efvr+seIiF*DzUIR<&tu-%F3nl+;mpoLq0-_b&yPy{t&C!rwLFFC zhs?WVxz-yim!~qPs_8LEFUYMmS%2T@SZCq-^>(JU$I@qd9C>@*Qa&qx!5NjzVqXm* zF>iq^d--R7mCpW7pPfE8&Md&^(vy`(3(s73h&RbTwxfdk?m26x>yJLKZ`>>;tzjH# zX8LO5_E{(>1>XA3{s8-C^T!)4E9lCRjEHZ#3G=lw4Eb=w1eEIql|^Uq$V zJL}^v*l3=a``w4(DEfh9tw>t)FK}27p-93`MB%vCt=O$z{Jhq>FVdQ&MBb@00Hqvn*aa+ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/mapbox_logo_icon.png b/app/src/main/res/drawable-hdpi/mapbox_logo_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..7568387a8da1c702981dd72c9a154e278a7436ca GIT binary patch literal 4778 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 Ef@lR+_y7O^ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/map_default_map_marker.png b/app/src/main/res/drawable-mdpi/map_default_map_marker.png new file mode 100644 index 0000000000000000000000000000000000000000..45ca4ab58f3738c2c05c4910549db1b4bac606a4 GIT binary patch literal 2771 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 O($dV z4xOBSEZo6B?&FdEPl}Hp1$Jk!+@C6ZnIU~yV~-b0aQ%bUO^LtK@BeQ97k6FH<<52w zx&15uY_omd_wRMwm8fG+*M2%{<~67GuZ}TS2j5>4hq+QI@}~_?JgJvT0_`;w8V)~h@FT=nY5afgZ(|NkmVv;Q4AUu;fu58-eF2JAoSM*WBUp6@UI S37rUxECx?kKbLh*2~7Y=E5A|z literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/mapbox_logo_icon.png b/app/src/main/res/drawable-mdpi/mapbox_logo_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..9cdec5151c24c3ccac14663e199e69943fbf9f80 GIT binary patch literal 2622 zcmV-E3c>Y>P)8NpzzHI|yPmL+y&Y$f*ARbpSF$CgASf+S*VBC#YQna}rmzlfl#Ocmu1r|SED zzkBYv=iYnnx#yhUvoXD!zNE_o)B=@(11JDbKn}PGeg&VYoCR#kwbiT&ngREys3_;Y zef#>>ty{NdwQAL>K6>;h@5YTAcQ$O;a1}g2CJUScdEhg>!veM8M@C0SkIKo(IaE?o zlKn2w|MRe6!~Q0DpmConIkK?tKop1oe&C~#4AXndmMyc2i;LfB%(6z7+}5pIXKNhz zR1I6dNs}gnu3WjYb@l4i(^zL1_@HEK)vhZah(Z6@t5>gnHa2fYg%>YgJm>o7VARqD zNiIA*ysyT=3;@#esgZ5Hdi5N9eSO>b`}=#bxC$S7ffcP2_zxXA)U9XFp8d*Ch#_yq z#>TE&ym;~LXV0D$ySuyFO_(sjd+^}F{p{@Ql)y|H$N0>pOPBi7Oemwnhxa0JW3Kx7XZ0(a}XV)!HA40P(Zfv)x!pa|rH>elvSo;N@$C{K1U z6b>|2av2~EyZ|DtuL027r28q*dXs>Xw>OZC=KBR`eV#yTQf^69rxsFY^5n@q%6sU; zhYvFwH*P$C-n@CYWYGHc>sQRm%6dM0`0$j@ojcEX{`|Qr0h7itUe`(nls=Ib-D=5_ zB|(c8E&8T?`}R%u@82JK`0(LwBSws9Nnc2d7A;!u*s&wz^y$-)lO|1S2Tz+-7|~`z z8Pl5Z5_IOwnVxZRaUpJQZcXRUpa1pBl`Frc-=FqZ>({Rj9X)zP zR;~J)!`B?0fU1^KYTLGLm2KO$1v6*Zx^?TmMXn8tw{cS6B% z`prUx3Kh&xpFWMRQ>RWpgNLyu8M1mtMn+1$DG*fyW)35zsHiA|XR;Bi^<2Al?eyH- z+_MHx;}y>t6Arq?#Kep#EG$ebt3NLTLnB0bV4rBJC+ zHE!3gUH__5rAl8sEmmzIAt7Ojcz9`y^vLjxGkbb^{+R=UKWSWf zql%Z9n7Fz@g9Zcemj1hU?_MaLtDXX5%>VO5pA8$mr?G9?w5iL(4XBFvJxQiA z2dQN88WHDx@Ib9Y$wS3`)rJil)|U|b$kkJX;k-F`c~hyJpP!$%`Z$<^yLa!Z8ZeO{ zYw@T9yg;LF-MUrdu?y5ud>Zyl$Hk$9B7B38{?TtR2wRNEQFjZalET41u}f=y?gft zP{THp+`)qf^N5-0>^qOzJ7W6u>3%h8)CeT`HspHumjWt{V|tS5!zd>m$q$S0{JTAR z^oSy9>UK3(zo;onEZI@$U7piFXFx8`&TJ8`+;&f38!fPSNQ4lMz#` z<6o;1^7Hf0<8^;QPT4>BUD==bzCi0*xNu>t)=7Nbq4uJJ0!V4U%VWbdVA>MG1IZv@TjZ2(0Yt|FIZ^o!mqx?KPJY15JlCmhXk}-B&>s7Z- z!-O|)rVbi3=)jmUWBj;5u9q)g&YC!JVhV9wdEqJvG=M9*iW>Iri4!Ms$Bi4;2oH57 z%w+SPM3o@96QE?-vSoIM4jsa2r#8ZyYq6eR@z6Aqmp%YY+@K=badYO(xkB^y`0?XQ zoSmJQ07uqYF)c0aOB)G7?FSAV=+DMtDC7;E!ayOXP=Jx0%JN?hdG(7-313+Mq$vL{ z+=N#>CSTqan?%_l1t?B>0?nh?DKD0{Dh4VXJpku{4qWlk9Vq#UuS0VN8f(jy^CgK) zx_I&8VKVY|c-nYnpxCJRcNK`50F6_UQvRq8z5ohU*MXAN%S7>V4O*i&u*687N|;J~ z8si1DPU+D)YXZqu0MaKLSV-AFg1_@-$d%t08mIB#jVi*T{lonD7{x!?cq3CpewbbD4&zc0hR>% zu_k|?dE5|=AQX%w9$69xc6+Pms$X)F2O9UWNg*K^^aA0aA^0Rnv8g=i3ajq&;1f;% z{Ckr?O8@!4e*OAwzT2;l0XiS gL1oy_RL%nb15SLFW@)wHcmMzZ07*qoM6N<$g5&5e_5c6? literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/map_default_map_marker.png b/app/src/main/res/drawable-xhdpi/map_default_map_marker.png new file mode 100644 index 0000000000000000000000000000000000000000..19a1f66a8fc789f21f8f7feac50eab41e09ce7a4 GIT binary patch literal 6194 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/mapbox_logo_icon.png b/app/src/main/res/drawable-xhdpi/mapbox_logo_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..7eec45f4b199ffffb46c4274a7c5973127d084ba GIT binary patch literal 6579 zcmV;k8BFGhP)k{d7jDkIlHs7v$L~%lOy!U zAc5xPz#?FN2Z@IEI+#j)1Go*$hHMUGnFBep+#(c`a8?B+partneh>8}u&cmqq0J)m z{>|01BB%vnR9&!AB*R*^Y#D#@$tM@6T)A?5g$fl4t9;$Mbvu)jlXov&x^&NX-+i|` zvJL4q-~w=0Kv{NHHV48ukQqVEMT>f14KSx#=g*%%$DMcHc~XZC9qQDtU%zpI0tHGc zKN{@WvuE?XdGlrt88T$?z<~od@7=ris8{z0;R;X!d)Uj%4zf9rjsqD9s_f3DU~${> z<(FTsbnm_QUR}6w;j%U_E8(tPyMBG=op*-z=+Q$O)xs7cQ^9>UBRkA82ddLT$|T-t zshw;knCRsFEu*mnRko;v)Yzdn-E>pJE3drLu2iW~wNJ!IH*em&yldC4Uw`t+CtE#w zvR|iw+fM}je;JJ`jQ6YK<1flcD;@rJC?ik)?070%{FY<@a9ubJ++o}R=qQp#Q#i~GomNbpiMwCu!$2V z{%Jz$ez$4Urfu;INI(VpwoDGA&6SZ2*&K)zRJor@h%Ilu^;QkET$VNIfddD29-5+ZyjinmZTt4^tHXdmeK^g;vj1dr01miYzfOxa#g!XwxFO;G z`|rO)@yx=iRjcN{{`%|RzW@IFoA&M7cf@Vis8OT*k3RZn&9*>XT%2yP0s%ANju|s% z^#1I#&vd}51Q)O8hJpu?ri@K6W<1kw#rI_YHLB?-vH{2AiCuMBKwZ*C!@m0Jt5;?A;DlXy00DikTeogWA{Yd- zXV2b?&vkyea^)6(^UXJ{PdVk37D4s&O}>34g8Cli>Wj4MjG(&YX;C!RS?$df<9+ z4wzYil>pe?il`AXEi!?4B7Q6YqtVmCsSk=bL7?)=U_(%2n-6Mitw1AFgf3{|O$H_0 z;?+4|&^$`d>J>x3Q?iGzqxS0Jmv*ue$20;w4L#%=hDuKW?2gX;PYZA)!gR5S#)^LkjdgP3$R3 z2%w+y>Z`9VTCG~Of;)HaJowX3Kkb+@WlBaGO5=(Nx>RY?rcIF=HEI;ty?ghepMU;2 zZQ8VHmTq|(mjbnjCA1kre0+S)Yp%H_p=#Bt@m#*v-;w-)hdkyG1Yt*dw3FdagvZL+tC#(R_r))=FCqJ%JnY&)YR13FTM2AW44{> zb6D(m=+L2Lw;pE8vNzs%;|W`juq`OY3eEz}cM;5+5$pkcH_>gc_|~mkr#$=Yvt3n} zaehu;mJ8{F1i`dd*r`*eE_^S^;zJKT^f3LunZ?p~|Ni~U0_aY2#{i9M!Ls0GqQ`FZ zgxlunr=RYjejs+ z&6LMstt;Osqd2!-Dd0|a1Yct+--VGQM}FR}UAwuwLFjRk<IKUl^r~IFfDK1yiePD2wi1v=pMA` z@#Du2MO!s3Sg@e9c~n@oY}vGP&N*ikV?RtKp|n>X1hv{Dk34dpZ8%}Vgs-62f-7#j z&D)}|@RwhHnRNEqXOBmik5X^|90#fojlmGtSJ@@p&f3CSTfT>rPb5Tc|-n41c66E83gjQL-H8jCA2oyw_0SL{AKmuf9)7JLN)VG)dVQFZBt&p

L7~>ITNnP|gAcj{2`S$Uqr(JW zXob|H6ElGJHIYIJO$lKbVAeEY^4sC(mMM}8v>HFGp3JLAAr)UDp<%;@=cC1&d--_@ zr39o+LumNiZ0&aj326{54$c?A-)j&|^({1i{``HIhMy^J0n@HM{4-{OE-5fc+S@Yb z;?V84-~Od1r0VQKm8r6{lL0z>rj5r6vH2!*I+vyk1RkH%$dMz*Nh)N!(4Yf>E7=u+ z1!U3}vzonfzmL)C+k8#zS6_YgDYj=17EE`vR$sQ(G+R!;q#>FsjV(E{diCl(urqsb zqw^|SAjQ^G_`m}XXxq1tLl+>d{+sjU$&=q^qJ?&{3;h?t?n!<(gzc%(qel;h;pqg- zw#g_&Q?BaXy?gIUl`3^(x9EQJ%{RY*yH93=5A?e+9+nI>oEkuH?SKCBpFZqxJ&PAF z-i=FvmoQ1D_{50d%f3t+*~^piG8aDVjMo<{R?N4lv2VA%_S$Rx&N$mtq^LTpO^|mKs#T{sj^k|B&bH? zoqO)N@l06EEk_Lm&ph)?7}JjBV!)ksR$hFkXSZzG@+O^vuDrM9Lxr~brfH?aN)PyxJ|+QILKk; z2zKeO?c28>z)C)3>uQ2PqZyR<;)^d<6_ahbObxcoUbxi~IqdA07T}<`3$6V#!qCg5 zW!q#F!oTS(vj1}Zxrs3xX7L>1EU*nv$?z|}_##X*vFlt(e{#p7$@qT8PVI}rSdYoD zUp)EfqmQ;lQ8`%4p?EP00)mSE#}g7 z`V>abtrHnXXnyhXb`hFIfctC%2br+%aL}-eO*UDQ+8|`99148qD36Kqw^h6dW;;~A zfa}T6u-Y6{q=Lv zO!G+_VEZfrKaG8E^V|@6yRN+Q%Ha}D^3&0~<(69(vM^@aHtaxE5ugN{zV5o~&b4vv z5Pa(k1Yi6TtOwOMqy2bQw;s(pN(BOTmpJU@8pl$h5T?o=crwVQ(V_(&d+f0XY+5@Z zbN9LP1XTS}zYR!G^C>2`g~`d_4_n5($SNEf4xq^rIjJT_mf18NNul0Sggne-V3pZ{ z+p2!(^eIz<$|BmxL|TogzW9^M2{%l0BSdzwt)<><&=_xc5oEmkfN$5=sA#(SwgACj z&jPS@B~X*WMc_oxED8=vi(D;3eoR2>T^O>_B=vxeTL+Mysm&a*y!{zJVo)cAxJkDD_G06pjatus-?Zlm7NjUWnbM zwn7UW)|bNHFhyX?cvCX$%P+r7_0lT{H`_9W5>z7ubgGbB5H0@w_usD!D&rybMppO- zT!X%X%V&*KXD^0&f3~Psxh7qT!1${~b=cy=G_2DuI}uo+dy zug7*B)<4;$0{Rk%7Kk$m{=jevrv;ZM5_q#sO!8!X=xi*mNcps zREUF((b$R$IOO;m@L108e-TvEhMcJMIL&YSy#>zHGG&S>jXj$edtUNkVCBk{t8JXn z9j_FF;lha#d5Iv47UDUoV?3LtxeK$*2+sr%h6+n&DCM4@BP%$4GJT9J|08K8$Y*FQI#w{yp!?AlzQ#tw`t}#?Yk`)YcxwE(+;-(c zt5k|b-z_`+^wVu!xrnMdWjaSxRGLL!!pRSDz=^6j@L`%Z)Q?KePm<5~j8z>)13W)bSj!#^J__TL0mPA3opK4+@<=op3=7`d&tP z?m-64Q09pzp0I*YnYJ2BL+~Q7BpBktqVDfXO*yflL4yWOKx^hSruI3YXlfGkXmN2e zZ%Nz-Oo3!S5fR~p-UPp<6&#nI`j|)6Q7SFmX1L#s*}|ffdE+Y?{HgWXo{M;O4gmpgZE@yNjN;lslY3mlei z!o^k4E0(5{rYWj4<1c}ipo8L>1+-B--?&Pe*lVK+6U{iKaRr@;!1xCg+(X+jvwl@s z5I`?KZyefj%Oi~{u=MgNF?jIc`cX}cg9hmUW`G4JZFmEh4VG3} z3e*=f{^y>1t|GT(mmRBZZsGRfC--gHi!Z*o5FQAhAM|}ISIA*5Equqf&>ypapd+ET z-!faj>6qLH7_}Sihk`;5N&eOsRPN?sUxwz)nG>i@xz##}d+poY`jK&5G#k|?FW+Zg zWWB#KjRs9(GL!8$v9S|)FYp)>+CUFT5U|{G@8AJB_r3St>wyNeOt(!k3|YJlIkyat*4L+1fAf0V7zNFzvkJDgoK1@cy7AkDX7lDxPW}jX!rzn&GV_-$<|XiYSgIV z^4luTg2};cUI(^(nF$6sbbkS+;L;px^DqGtSSS~GY3(f1*ap;a16WrnoVYW&r@d0~ zAmBs3b_puaOdf-*z+LbCkcv5pIM8Q0^wh@_3OYn+F#*=L45aUBR2}X(wSI~{)m7R` z4Y0BE;cvVV3~YZqnOwY-#ev=ljM|*H3Nzv3;;0pz0$t?r$m4#{$qkR}m2vPX#MhU%bp9ZR(#!)6&wm$#xcE zE^KoMsg7R{nyI!P_tjfqq}8OhjtSY?cXDx&CghF4c5cq>)|vu6vyjTDMR>-|ar5#CUwaHx0_f&H2rnw^nVptYK-(04c_ z4fD2q395w3INaH$_o&Z8#<-nrGzpus59Y}*zMqaB!nd6Hc?rk-L{G59gBhU4q`uAv zL(JcPOpy2a_M41ht@2!ukD7z;9KDLdyqKt~Ra?#h=?s~SfOxtSn|TnvTiX|78g%a5 zd8OVmcy-cH4sl%5R`h5TC-hx3MM<;&c!cm5;z3JqrDEIol-gNnjOm4i55ma^V0(wyZy?p<2tn% zk59})XBK)Ibd5lI^fbv5Ds7Qree%k~0x1~!Sp<3oSpDXnT1gz^N{ zKpnVpDIw4s3?8KvW^Qxi8PLP&RB7I0rRJ~trbU#`$%~BcC1WCZ5oivJkrlkO#yrNI z=*DDJRUsem$iru&a+Qt*Z5OyN4xyn^SxmdJ;|gFF#K-c9M$(9u-nen&0#2zPd*!lY zG#No4VbKHy!BR5kc?D$%n}E5!v>QlkNF#}}Kp$VSPYB=?ZLi~MHZ44J@I)Fm~M9Uby< zf095g=t5vCFeexZ>bLlr3aZcQyT%X+68wRB%>0Tixc?>RCFz=VAAP8zCn!Y z++cAEg(n2qe)e-B9pMoZ1Es~HfrK#yl+f6TP#b9k36=%9Z^nS7K+6mX&<@abNGm-S zEDc&=RXu6PO`vF7P`hzp0$35$q)2P4jwV~*Ukhqd^nN&|O-$zUWsvcf>$)`Hefrtxar z8nc8@3qf>#1GNjPF9OjV4XRIe{6q~uHAi;QZznzy)I4fISP&i2G>g$CAO&Tae z4{U(@`keef9e5AfU*GmVw2V-FiUk^^FeBJYh2)GXQ7-04z%mQ6iCw!msNJfd%%D6J zfEI>8lRw|YGXF=5KtdS=5^&)k1@Tcbl3CFFC1;|tg!b21^|T^fSV%%r9O4O9^0;y1 zzH|%!%(%YA!dT;dLmEqc$%bqW7!E`Vs#c{`yi|P%V}2GV&>@QdnShWEx#W^dW_sVy zx2J;Y%Rd^h^~3DF$n-yY@L3$3we8$y+ID1$}#JGY}e0}_%uBqU*Ij*>D zQcR3~yoO)m5zrR!J!lrnaS{D{G?E=$1RvsF4x@>93g!rT8?X+yllU+5C+Y7ol)t8z zVJkY~lQO)UfyOxJ`mQMd=BEv>hU!JsJFX-?zxf>6MmjdBgmVgbB5bMS>eFA?NP^lT z#`meR`5eL-3r-iis%%n$@$0Iq;}BRVb(d289}vF z3lKRCtOAC$(;LbZN zDF?y?E|WZv?J8j{56bDA6-cA9oWiodw9REhHU~1rf#VTWmvCVc5?F=#9TZ(@N@-G| lZZ0IC*}@4EvLWjn_&@w9Dn+|&SJ(gm002ovPDHLkV1mD5v>_kaJrbIwfn^i)69)pfe7r>a6!lx2zVsqp~-0Fk_$lp3lGMco;=*r?}GXY3xT zKyy-)eGjM@qxts&G?7zN0suT%007@_0KgwqlkYA7;KB_6>>B|9;2!`0rF~k9sxYdb zwxx!avzF2au!$WM^x4$T*bL+jwMX>;0EFGas4CRV`7_WRYGdmJb{Bd19||z4{;!$q zCGbBa&ekF?wUktVl6H<}Kt9l05cf+_d>{}g>}dK0tR^M%KiyGpA}=kRo$bL~TyAb| zAh$OlJ4bUa9zj7tE^b~fUS3WV1*a3t*7>tLr>zs?e?k5~94Rv=6GuyXXG=R<;6L2Y z#&#~wA}?S5WAwk*f5+);`Q`uTWb5=lVxa`&`uBy42gJ?wzu2g*!v9*q5JyWh6z6~V zqCCR?q5OZ^{)dk+*FWa}*I@oD>3>>LqKe`RbN%nMiQ<3gX4M7&*xt)aNocsE9eKf` zY35*tCYAN3(tP;Ni;q;@Sl= zetbAWGLLiVx$}4BX5}VzZrKSs)LN}m(m&1lQ@~(4u=J{%&oO6IAn5>GZnUXMzOx~v zO>;V_xf~l%x;K1wpln@jai!3*s8@Pb*(Y3rB~kxSk8qIYp|1Y%lPTqG2a~tFXUQN@ zyF7k+FRNvl)kSIYqt5FUt2o6J^|Vz5sJv4Y$AbdYIZw$dqb$~v>i-x9vP zFgLrvi_`;Ovns7iuJUEeQ&=itCuSw|N7h)ww_{k%)V2-e3k;uGQF1CoPMHuc^*iKV z${$^p3f5CrZDR(d>P`=-qHCjIjX((44R9X52*4V9eILEb8{AEpE8#;d4_gse|$u#EEGcc$EI?W4H8D+%Tugho=5Q3)kpH=M@5Ui~iW7OYSnTA^q z7}153GOH6?{k2*Og@OKrVhDiy`|6{CP4$Fv{Zxvn6VkNL#~UnZVJdI?8(}6I#EXz(&HgW+W=9tkxoTXiuHyB{z~zN))S-Iw znQaAYlL8f7cTv~I>a#Q344Pked17!(tVG;*>(d2Wk@cChg;vQJAD1WhNyrCg|3foC zyNB<(Ole8o42N?~`&{_Jp|me<%ypKo^WP+U6*~_b@Z1DLl6LZ2)z~XbbDb;yd=eXjK*)zcceo+?Q|N-DUgsABZ`Ji($G-;g%x-@x>Y zLZ(xd<>{+}OQEVfHXBQ=6jR!g=0g7`nq3?XG^3b*`Gic=xL01 zcgY>}B7gtf6jTxp*_z^;2S^O3unO21&GVk;M>b1-nHF}*QuR0@9jvv8dBPJ|)UIQ9 z5naq!S&Z!)W>{ctX9uzSx)XFV>U`<>DsIqQ<5TV%mK~4eZH2pExnWMEtL>NDwL#lE zJ9xNiWD&x}vwkSuW=|?7gG~qzH~D@(=orSBPrd?!Y4p76BT@5JUq(O-PaG5~)^n;m zcApFK&acnCA$aDH$=Jc7nlQG#UGRwPE;fJ6)SG^-pvFeg^;Ei^*qzhFV8$E=`T(P&-A|x##t~7HtW{%8rMuNLjnNH)Pe|D)gA380x`e}^Ym>}n<7E&oVU+u-vC`q8ZNrZXzmXX?WJnakJ%@$ zU$bD#Pvs!%GlVUEJte^3d*N?7;CHh;1$Q~oRNEU7laJk8>XHR{5-UZd|0Sk`wAt&N z|LmObofP)U@kJM*K5DPSq#Me+ETmD?p3!18bH1~tg-tX`2J~)A`mTXZZ@wP?HEt>2 zxZu6#PZ)6N8basXcDi^pxs9OrhPEUBd~XfG4&BBJWDC8T6rT{D8_UmyQki{DqN2f1 zs+^6%i4b}Z45q&`Gg@%HIBNaly86f5;FVVrW72`b$5#|l5Ix~5-K15pw=xR_*0UFE z@dxOMiQhPsNi5vT8R>CI=5Yx})r0g#94^wuZk+T}Z;%nbrkQl79$V_gGuPJ{qnXEx zO&cS=Av+emkc-LGfiq`)KRUcx1+%ckeQZZ&wR2a{H*ME@siSkOqrPC^)f8ouv{D zJ$*$2LCVe9g!SauHch^qBdHPqvj5s}e9-RkFiOv1Ju{ZAH)N1)wro+!G(9f7Bq_n8 zidKYEPmGT4ah}B>p4D*|8TE@RllD$w!Vux1*n)okxlE{)|HRwGc(c5b#!D~DVQ(VA z#rc~!>MHOQBytTFQ@ILUedD7s6Q~6n_bF$4}FV6Dv)pV*3 zfv1?k=m8v}p4wuI(Bwb7q5g}UCAqUp!lrXi(Xs7Lua3aCg|U0sUprlzOUQSRmb}-- z?cV_5-B;u*^$#-+0EA6S;ggwSwLDy>HK`bP+ZRJxl zy1QM`*Nu$CvkN;>%5Uox@2TJUTWf|~yyGW(Tk-UH-l@wOCQ&gq1V58?a4i@8p!^F5 z&`|L1*R}2mOjd;$zOt!JpcYA#93jkpHC#j#-}I!;Plh&lKuU5EzE$w(EaIJEx?nY{ z%CPjl!R=zDQegH){qIHDpM=R%*ekZfHn`7!CJKh-qE>M|F-uDO9h}%(uVVHjjM`Mc zBa~dO@C3ef9Ce=~g*&I~-b$gfZ8T9G!x3)pLLYo}q2hdSX;PmWO zb3^`;8EQZ>py(qR+G6Ot@dq;n#jdd|e#kO!%Z2{ULrv33gK>G7buGG(8_n%Rq5q#O z3f0z7eKAu>+FL~8r8$=~_i6lKTngqH-}ndF8_Jim&?*Uo@w0|s9+i!-n{oqP*`%b= zFK`>{(z&Urb#iw!Wk(5Q^giWUDvH z&#@rEZ)3g}5Nd4>yp{r?F@5P5P0)M~UwQDh>k%P#Cp~E!c;SBLaI)B}nflqvOwhFT z@9EGD@m7^JhS)wX_CBzu;HoP7y9c*LUP{oI=qXceR1Gawrq42LX`Cj`C5gV!(nhhd z!CmYM;xoNe18wz{=wt{6$bG}2@qFd^)SBrL4fl}uhl>uK)Mb<}gup{*Q!ecH`PS2u z(Za_mj_p$^XbQjE?-|H(M!UdUb}9$W$yPjfFN7)2MUA8sV?a)qt@4X30OkvriWdoR z#xmK{V+V3S!m6XQbox?7Qn$gp)@?wxW9%v<_A1dLIW6E4fTpoAmk+Df}IXjqag1;}& z@oB!VAt=%CCkLPIqtoA}dQZ_ikPtgOrQa}W`(l}V4QgH@w5FJ4Mnv&WyA0MPsJ>v^ zMHIkx>&kF|ncd@`^QV)Exy2dTTw|Ax|Hd~5459%GnheD6X>&*b=$&lwQ;u~A@7Hd^ zj@>*Orn{1B!St?)o@nCeR~rnX$MM{B{m?)byQH?tLi0BU#Y6|sHl?X@wlOYh{;1iZ z_6puyT->5mI$z=9#-oCz6^=2YzbelvJ#aXlkV-DADSdV&4=vkhM888@ik&OMIn;%3!RsJ(Ku#Uk_) zxHOv2aZ!v(26p1+44A{ng)g3u7z9+OR6+mdKRG zUrAx|zTFZNx;TXy;DxKjL(HV8CYh8K{YF@7gN-3N9>AYgDl}wSG8iqG(zgdEm>9FC z5Dha%0*@{&6!2Vdf*2r4(|aKiOsn9Ywrn&Fz-iZUPkV5HdvKUFWm=^D+M@K6&B@(Fg~HVUw`1n0Dp3jLmIkm=`JCtO z2D*ZU1|iP3P*3g7hh>}_#6I8VfGt1mt?%5zPwUXF)#G(%(nF>%vf?GYAKBZ{Fp3UI zuwUl{DMN;nyo8VdmRt;X07>?j!kB#S4WpZ9(QD##h{6~p+uv`NTd!A5w>mv66;>QM zNh63gaVeJZ+7cJ0XD7LS&Q3RGDqj^W-K;W?+qC`YH*fSw;h6)fNfp-|;{GTxbjF~5 z>Od|3n_0`ZADk7m?5uwOfu=XE>47htn4&feEiD%3+|oJj##`l|IHJ*$a$bWzd0Z}L zqFV5Tx*8yEwB^x!W2|`T5u@10W0$K-s^~1a^HpE;xu^43Y65VC3(jo8w`rmx8h7&9 zHX~x7LkL-4U-@0oGLt>-UqxXt5CB&k55Q9)3@Ah3!1!wFO|5jJn8dZQLygdet~iqe z0cO(=#B!6TI=BrF`R2_FB6;&_VwSNbw*XR1U!Nq>5vEYBhutWF;GiZJY;p7|1ZZQG zD1=EAQ5wU^+;L_1OkV+gAvfmFlq1UWr(m+}cCLLX*1#Ncq+N21o0^MQt~$sf!yEsS z_j24q7<=y7Lov2cDA}hGOnHISJZ%NTV^NmKkf3F};hoH}5lj4yFpP5vg9w{*@)>y7 zZCQ*m4*0E_VJNKZ_rs6vA^V zxK9ATb3WbH?IK$_sHADQDbB4-z^#60|EK@d>nIF-VQ47?U|bs z__4bBxVlp6GrU8AN!mrL#N7s~ua7L=J&VResgVepzc|atu5y`%M=^049fcQZS?F;V zb}?P>w&{z}8zKDfU=!O^&*nBLc~E=IV}e}^hpj3GoXxEcV~;j+%T|arCehK=0xf^8&}91x~Zv9 z)K=iv`pn`?CVi0Z`X_%#h zI@CryUxS6$lR@k$J*!wFHRUW+c$CM=5;ox*^uCINn|_|uiwb>y)m`r{N3pEP=j!w? zK4&V30!VGSm-T_E4OWLW)Ra)mcd zniC1-+2~djF81s9F|xV33>~-eo4(1Pz|mIuRNO$iFM zyZxLXuD$+rgx(JDHOL@8cR|&c+G(FX*@4HqCl%TJtD00y@Jp;7df4EvY?GEcbpsh_ zRu%?z@#qpS5}7~{J2VRM!BCE{Xi^gWd-#~h6*)dM_Og#m`*`X5`og$AK$@ZmVVO(F ztykjv40w9sSNI3D^;X=GVctnmmRby6ne`W8y1! zHx$C?!#dtjdZ=ZWk_q1?5_#mTWHY3J45!O4ifQ87SGfw1Gr0WT5@WG5_{itRoufkL zQ7f=p@F!V7LJze}pA&EJw+xzj9xs0Pvs0jRO^;5gNNzZ&E1m=QY+QI+%*!tzQkVHu zTHN=CcGuT!s(p6+4DLudPRu(!rhonV<_5hbs{DH3UCGB`XLV7_RztXL!+@8pse(qW z`ux<0LgK>E;p*yvo%J-PJ}@oO8!*y6^TTa>;$7SKLB+#G6`fa`bRv(7QSHp~fE581 z_ta;EdFyJ;AJOq&+T-y7i{`-R2H+*$iJz@U3=YPgw{!L6P8TcnT_y&ykFH!xaMk{P zs0}yOA&td$-Af%L4n0jfVQWYK`FBFJz=9R z_sb!}0Xx!Bz4`z&0r#p_PIW^W7l!Icn@tIr#fzi)bjv~z-#bxo>*t%U`*XBaw;FZH zA~NrFWa-MtZr0pn<4N^_^YsTiJSfvs81Ah#qD#8E)jc{>Q-VU{I4$r7lPUVS9;Gn<1nBmM# zUw$#(=z8tVvKu5yWPR6cy;5Jx{02q-KD0bQf@#ajhyeE%IE%`l+I%nJ6w7Ah-*3iPwoyciL-FeH=L(`D{Q)#~j zM_^%2aVwYK<5o8Bl1BBF)s@~eGjhqNf!!|8aCUZBPq9f2*Q(jwC{T*z@57x*UU!o7 z?@q)cNwtbb{XkrJSu9<}uO~f({MNU+Gy^ZfE_|eSTw1U>R9?}MMhk;tuKrll1?+=) zLP#(*dR2+yiy|8gh^;O@MAtdPPV*}j(f<&YG@gIfV=bBU=AT09Wq0i)JVLpEIP>h`8nZ>^zjU)%ipnH;q*q zVJYM{j=`@txX3BKoQ1sie;JyyTajDhcSMVo4t=XSt3f;>I>Dp8$R0p3-tq7&b7*)y z;@%xxT->#CbYSPbW&p+p^|9y2HoH0>WN`E?YjvMsOKCcjC+7t&0GwK{1F$ zpm{Sv&Q{JAbv^?^;4L!ecku`1DdcSWbVB!2JDWY)?yS$So@9RWE9>&>q{dVgM!sq& zqLs#}53oobm24mup{iZd^FCUr9MYe7;kxD`=#52D(EoUUo9`E56fvrUKYkUV!mDj9 zw7a{|;^7^-7RTS4!CHLWounl4Z2mpO5i?28gg>Fx04j8 z1%z(+TLLXIu1hR9ef`l~y7=r^bD=4PnUhL}aDjz|j-v#duQyzwpP2=DSC)c?l7=e@ z;SUSNlNZR1SxkRy0vHkD3(N%5vXCQnhxAW6-w-cx7`y3qHfoaYh9O#nH_(Nz49knx zMt$0C_q5vu13^9;=X)l0gBmuz^I1hqCVVB>@AH}U*i}dx%c{D>QE{gX*)@vm{EP>) z>$4bjyX%wrBuHZ&|6!C4Z+3ldaZcL{q}^BtGGND)@c6mv+b2vPR0E_gKte9$dpc-X z7)yPPaq_10^rA55o(c?I^}P|u5?Te0wrKt}j(L=~p-*)hkb$kKM|@WJ2or-nsV_0x zZEu%eQ4@m<)0JHJ;H@3&`xnIx*7{biHk-2WB|Gm%b*?a|ciSME5Sxa>7+6SiB$&&{f!?aenildon;2@2ny zx=Z{Pg^GIwI+AN0AOiL!3+3UnG4JlTyrN*Rh{wU}_EAUH`2F0oBdM*z_P~Ce)!VC5 zO63jBVlB_PC+}%P55WRZBJ|PL!veOHldbgSuQ9KO1PX*@im^yn>mn@`BDv} z(Zvo4qpDF9;uAA$;dOCXdy_OyHz($5a>9lQArrvGR#RR|EUv^WXI6<;(NalBpS3h- z{`UGPOV}uHMPMDPxnb`t-TXsu;cCop5_a_p*PM{UE;zx0`=g zK~*#LyoPypDgWA0U1~vyh)#Zl%MO1?17UKh>EHk=?70`duh9u8)e| zIG5Gu$|_45m^?0S)EuIJN19HrU*0AKMv7gCFm#tj?zvevdtHay2x#z56-#QtamJt9g{yLJV1t36#@|H$qj^n~svW-VgArxwST<2%*v}d8q2PIR9ZUTYt z*h*Lx=*tNhrWwUT|PM>QdW9OQf5y6F6Ch43i5UOA%jz*+<8Yb}AM3a#H zlBg^5Gro{ZGOGTU7IADnyH;%=F0o(TN3>0`wUOcxUrC%enf(-&zSUfYrf4AY0G`VMi1w{Wcb+-J#g^4d|70?&gFXW zCRIH>JG=h_IgkO@3M;n7uW&_NA|xlY^eQFl6^EBxy7zSM&Hyj1KBOM?BM~fsi26O( zutmB3AXg!OTAHNVigWd!$x3}GK?E4>>8HpqgcsC374O3QFGkASe;98x0|#_6 ze%NR@)EitRP$0HmfDR9Pi;&FU_GH2Q$8Eap5lyXX+>Ij4K9JA*!{(9RC#lABzCeh$ zI7=lej%V~7VUfpg7oM2j(lQ}~ffeUWj!Khpoa&n-h!V|j-V5nN)=$cU8;?bRMuO3A zNsvro&bd!%B_3ckhmfs^9DTG-Tjn2es#(1CpGe*Z7R@r?6)oy_woKoG2Nq zi++oR;!+MMMV8T2OOYNXDx2rBmi^uttqvmJzH_KA^0+;H&Nz6xG67%QU8@{b(t9|Z z5EK1=vQjm{&t^mAJyT809tikfBq1nEmeKj^Dg)eqNPYfG{6nv?+5h-*MP!Pd`FoO^ za>os>aMhTIC@|J;PImVGD6F7Zy03al^DdpV;rk7y5QlB37bA-}Q8iMIlq?TTK zaCxoS5y47>wKnCG_I&G}LW7f)ww)?uG-N^XVQO#Ya(;p}$k4|Y;O#gMC}KLOwy{^? z7hLO_tc&W=6Z`lE9jkWk`_Izss}#4Z>Lc)zyDAb=#=@W$ejC__6z?X z5Ml^+xvW9(11F+n(;`G^1_}@X;L{fAy?V&AL@gKn!bz;9#TCRw8mdyUIG)Ax`2uF z-?pCCsX{^@_#w0=wOnRXY$8WQxq4ZF%+dC1MZ)zNZ3Xh~dE#OP7z-e3R4&UBud#&) zDnsed->E5+c<;enzcjcw(TDu?3DssR5g4V*9yi++|M)j&G(JGloW_OfeeqoUeO*Pd zJ6ujFK}(8P_09?&76eil&#p@ctLe*~%NKKCyJUsux+o0{a4JtTzhELusGZeZw`8r~ z!H1Xn>d3AX1WVIyEIKla94SfWQj}Oe3zuVhWv5%Y#pKy*pPhom`d#8e-ZY8WS!wxl zozEpFax=%#ZLePWg79E!QbvapX!BSkF!PR2sYZNM*slqx-;mc*B-k37sS)%8v|3c1 zqHvw!YccD{}MChrIn>B-W&PyD1vm7^^F=NuSDampf+z=d>amhEDl4GK|kW5mkVe%4C%W#iCrZ?|3 zph7M)rZ1PwddP?(XrRZh(i|OJ6A{DLGZ*^0+vxM3nBV57&;9BCaL+yG-uqD(LQRZq zj3E$+N!a64mp+UhO5 zTHEcRk{Z?K+e?>DhHjN<0l6|y=FUOm z@fC8cwyBm40`Nx%wz#4JRcng7ELBZ~mJX2tZk1QPN(3|I39dKw*85vu4sCC&(au{h zvR1D*@s~LX1>bfh>OY&lGNppvPnlf`1QJ)-q!~F?lR6xa&c$~lp%%x#fxSlrOR(B! zF4`A@)6|VD+my}Jn`xGlic(mq9-5_$@D|zkfUf&zLXVHgcPsI}CZi+R@Du-Sd`#+V z*EY!jq}0K2^GRxMWp%dSS={wVpENQZEJGOhf6tP}2+qImdc@p)_6Yl5v;%(H*I4c5*T9 z9A2U3q9jiQ!+lK?JH&uM?JO!s)iTqrTZ#0gN~f8jnAwH#PSnblW3Dwd+|ckd>+UUF|Dn{JMx zO1)(9K${0~BA-4zeQD1)kox-%R`cl$-Dlh70+%*h!f++OybD_FNATRPgOR#p%6#`3 z6N9B6H#DDjyfHnKE^K3h?-^VNf>6OpPD@x3@_aHhO@wkvd1K{EM12xMKH0ovOoT!v zixAZkUiBaSY{5~|%FB{F6idMCkcWn$C733MG{3FlZ5!EY*Fc~TO(5fkKFhYM3CCJC zm~g=MLkJ>zEF9x1r({e*U;Vl{JxGdcUslUymr-N#?WH*TfyE$VFyGpTP2xj7i zq&|8v?4_$1EXh3Q(IVcB!ZTv8g>JcTQcjiQcvm%i=JtndE6bLJt3nMMQM&o<;)Dpp zuDj6odUS#!1>i<|VM^?k*+vla-A>%f%Itr`IsVSLJ}q%UUx zHjI!Td!vbJ)~Y!|BgU%PY?+r)+QfoIwnq)*=s2j>9Vhf;bd$g55>3W-6<2)M8Bf|u z&>>9S*C^IPx}u3HMYr@iu^pzBMIHNL`(LY^dffkMIGz^^2*Ht&1n($9;Xp)PQoAAR zU9%Vjgh+I5>#l8M*O2m2SLF82-}lyk3Yp3*nsey^+8@|UqF3^tm-NPgijQY3Y*=uJ zY}C9}9cxcuH81@yP{*0fmiX(BL+|Ti!U1{J`quAIS}kYjv4BG`m4eM#aSt;&D5K(B zTz6ubIc*MOM#+#Wko=rJgVV}W3@d||ee-6zGyDPbuQkr+%$#X&!W@ZSIhH_PwR33v>fl#F!h$aZwFKe{{tr-P_|E_U literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/mapbox_logo_icon.png b/app/src/main/res/drawable-xxhdpi/mapbox_logo_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..5876056f1c4f403de7d44332d68b23814cc76fa6 GIT binary patch literal 10802 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/map_default_map_marker.png b/app/src/main/res/drawable-xxxhdpi/map_default_map_marker.png new file mode 100644 index 0000000000000000000000000000000000000000..65fe36d1babea4149bfa3a785c77ed41b1f5aec9 GIT binary patch literal 15733 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/mapbox_logo_icon.png b/app/src/main/res/drawable-xxxhdpi/mapbox_logo_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..e5780ccc071d00fc6e14ee6c94235106271b15ab GIT binary patch literal 14441 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 d%E6zos^Sknx4$2GeQ^iD + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/bottom_container_location_picker.xml b/app/src/main/res/layout/bottom_container_location_picker.xml new file mode 100644 index 000000000..95c0a2431 --- /dev/null +++ b/app/src/main/res/layout/bottom_container_location_picker.xml @@ -0,0 +1,35 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/content_location_picker.xml b/app/src/main/res/layout/content_location_picker.xml new file mode 100644 index 000000000..2f846759c --- /dev/null +++ b/app/src/main/res/layout/content_location_picker.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_media_detail.xml b/app/src/main/res/layout/fragment_media_detail.xml index d4fb2d18e..ef691c300 100644 --- a/app/src/main/res/layout/fragment_media_detail.xml +++ b/app/src/main/res/layout/fragment_media_detail.xml @@ -249,6 +249,16 @@ android:drawablePadding="@dimen/tiny_gap" android:drawableStart="?attr/iconMap24" tools:text="Coordinates link" /> + +