From 965692ce7e3afe227f09d6d235dc4745630453ae Mon Sep 17 00:00:00 2001 From: Marcel Hibbe Date: Sat, 22 May 2021 00:16:13 +0200 Subject: [PATCH] set location picker icon over map show location when clicked on button Signed-off-by: Marcel Hibbe --- .../talk/controllers/LocationController.kt | 37 ++++++--- .../nextcloud/talk/utils/DisplayUtils.java | 28 +++---- .../res/drawable/current_location_circle.xml | 12 +++ .../ic_baseline_location_on_red_24.xml | 9 ++ .../main/res/layout/controller_location.xml | 82 +++++++++++++++---- 5 files changed, 126 insertions(+), 42 deletions(-) create mode 100644 app/src/main/res/drawable/current_location_circle.xml create mode 100644 app/src/main/res/drawable/ic_baseline_location_on_red_24.xml diff --git a/app/src/main/java/com/nextcloud/talk/controllers/LocationController.kt b/app/src/main/java/com/nextcloud/talk/controllers/LocationController.kt index b9fff4a8a..dd5872ad9 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/LocationController.kt +++ b/app/src/main/java/com/nextcloud/talk/controllers/LocationController.kt @@ -9,6 +9,7 @@ import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.Button import android.widget.ImageButton import android.widget.Toast import androidx.core.content.PermissionChecker @@ -47,9 +48,13 @@ class LocationController(args: Bundle) : BaseController(args) { @JvmField var btCenterMap: ImageButton? = null + @BindView(R.id.btn_select_location) + @JvmField + var btnSelectLocation: Button? = null + init { NextcloudTalkApplication.sharedApplication!!.componentApplication.inject(this) - getInstance().load(context, PreferenceManager.getDefaultSharedPreferences(context)); + getInstance().load(context, PreferenceManager.getDefaultSharedPreferences(context)) } override fun inflateView(inflater: LayoutInflater, container: ViewGroup): View { @@ -61,24 +66,34 @@ class LocationController(args: Bundle) : BaseController(args) { drawMap() } + override fun onViewBound(view: View) { + btnSelectLocation?.setOnClickListener { + val selectedLat: Double? = map?.mapCenter?.latitude + val selectedLon: Double? = map?.mapCenter?.longitude + Toast.makeText(activity, "Lat: $selectedLat Lon: $selectedLon", Toast.LENGTH_LONG).show() + } + } + fun drawMap(){ if (!isFineLocationPermissionGranted()) { - requestFineLocationPermission(); + requestFineLocationPermission() } - map?.setTileSource(TileSourceFactory.MAPNIK); + map?.setTileSource(TileSourceFactory.MAPNIK) - map?.onResume(); + map?.onResume() - val copyrightOverlay = CopyrightOverlay(context); - map?.overlays?.add(copyrightOverlay); + val copyrightOverlay = CopyrightOverlay(context) + map?.overlays?.add(copyrightOverlay) - map?.setMultiTouchControls(true); - map?.isTilesScaledToDpi = true; + map?.setMultiTouchControls(true) + map?.isTilesScaledToDpi = true - val locationOverlay = MyLocationNewOverlay(GpsMyLocationProvider(context), map); - locationOverlay.enableFollowLocation(); - locationOverlay.enableMyLocation(); + val locationOverlay = MyLocationNewOverlay(GpsMyLocationProvider(context), map) + locationOverlay.enableFollowLocation() + locationOverlay.enableMyLocation() + // locationOverlay.setPersonIcon( + // DisplayUtils.getBitmap(ResourcesCompat.getDrawable(resources!!, R.drawable.current_location_circle, null))) map?.overlays?.add(locationOverlay) val mapController = map?.controller diff --git a/app/src/main/java/com/nextcloud/talk/utils/DisplayUtils.java b/app/src/main/java/com/nextcloud/talk/utils/DisplayUtils.java index 397c084ea..48408670a 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/DisplayUtils.java +++ b/app/src/main/java/com/nextcloud/talk/utils/DisplayUtils.java @@ -55,19 +55,6 @@ import android.view.Window; import android.widget.EditText; import android.widget.TextView; -import androidx.annotation.ColorInt; -import androidx.annotation.ColorRes; -import androidx.annotation.DrawableRes; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.annotation.XmlRes; -import androidx.appcompat.widget.AppCompatDrawableManager; -import androidx.appcompat.widget.SearchView; -import androidx.core.content.ContextCompat; -import androidx.core.graphics.ColorUtils; -import androidx.core.graphics.drawable.DrawableCompat; -import androidx.emoji.text.EmojiCompat; - import com.facebook.common.executors.UiThreadImmediateExecutorService; import com.facebook.common.references.CloseableReference; import com.facebook.datasource.DataSource; @@ -102,6 +89,19 @@ import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; +import androidx.annotation.ColorInt; +import androidx.annotation.ColorRes; +import androidx.annotation.DrawableRes; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.XmlRes; +import androidx.appcompat.widget.AppCompatDrawableManager; +import androidx.appcompat.widget.SearchView; +import androidx.core.content.ContextCompat; +import androidx.core.graphics.ColorUtils; +import androidx.core.graphics.drawable.DrawableCompat; +import androidx.emoji.text.EmojiCompat; + public class DisplayUtils { private static final String TAG = "DisplayUtils"; @@ -160,7 +160,7 @@ public class DisplayUtils { return new BitmapDrawable(getRoundedBitmapFromVectorDrawableResource(resources, resource)); } - private static Bitmap getBitmap(Drawable drawable) { + public static Bitmap getBitmap(Drawable drawable) { Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); diff --git a/app/src/main/res/drawable/current_location_circle.xml b/app/src/main/res/drawable/current_location_circle.xml new file mode 100644 index 000000000..310a104ab --- /dev/null +++ b/app/src/main/res/drawable/current_location_circle.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_baseline_location_on_red_24.xml b/app/src/main/res/drawable/ic_baseline_location_on_red_24.xml new file mode 100644 index 000000000..d8b0f5f0c --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_location_on_red_24.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/controller_location.xml b/app/src/main/res/layout/controller_location.xml index 014589912..03fc40916 100644 --- a/app/src/main/res/layout/controller_location.xml +++ b/app/src/main/res/layout/controller_location.xml @@ -1,24 +1,72 @@ - + android:layout_height="match_parent" + android:orientation="vertical"> - + + + - + - \ No newline at end of file + + + + + + + + + + + + + + + + + + \ No newline at end of file