From 70001e36c3e9c3c6ba9854718999fa3bbf7122e9 Mon Sep 17 00:00:00 2001 From: Adam Domagalski Date: Tue, 20 Nov 2018 22:56:30 +0100 Subject: [PATCH] cancel button improved handle runnable for tmp sending manual location --- .../wmi/findmytutor/activity/MapActivity.java | 137 +++++++++--------- app/src/main/res/layout/activity_map.xml | 11 ++ app/src/main/res/values/strings.xml | 1 + 3 files changed, 80 insertions(+), 69 deletions(-) diff --git a/app/src/main/java/com/uam/wmi/findmytutor/activity/MapActivity.java b/app/src/main/java/com/uam/wmi/findmytutor/activity/MapActivity.java index 8b39465..17a9d01 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/activity/MapActivity.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/activity/MapActivity.java @@ -94,9 +94,13 @@ public class MapActivity extends BaseActivity private int mInterval = 10000; private Handler mHandler = new Handler(); private Runnable mStatusChecker; + private Handler manualLocHandler = new Handler(); + private Runnable manualLocStatusChecker; private MapView mapView; private MapboxMap mapboxMap; + private Button selectLocationButton; private Marker droppedMarker; + private Marker tmpLocalMarker; private Coordinate droppedMarkercoordinate; private HashMap coordsMap = new HashMap<>(); private HashMap markerHash = new HashMap<>(); @@ -129,8 +133,10 @@ public class MapActivity extends BaseActivity } }; + Bundle extras = getIntent().getExtras(); + selectLocationButton = findViewById(R.id.select_location_button); Mapbox.getInstance(this, getString(R.string.access_token)); mapView = findViewById(R.id.mapView); @@ -147,8 +153,25 @@ public class MapActivity extends BaseActivity MapActivity.this.mapboxMap = mapboxMap; mStatusChecker.run(); enableLocationPlugin(); + mapboxMap.setOnMarkerClickListener(marker -> { - createMarkerModal(marker.getTitle()); + String id = marker.getTitle(); + if (id.equals(myID)) { + Log.e(tag+"Manual", "my own marker from API"); + Button rmButton = findViewById(R.id.remove_location_button); + rmButton.setVisibility(View.VISIBLE); + rmButton.setOnClickListener(view -> { + Log.e(tag+"Manual", "manual coords sending stopped"); + // TODO to remove after BGserv + manualLocHandler.removeCallbacks(manualLocStatusChecker); + + rmButton.setVisibility(View.GONE); + + }); + } else { + createMarkerModal(id); + } + return true; }); @@ -210,34 +233,28 @@ public class MapActivity extends BaseActivity // Manual loc selection on long tap private void setOnMapLongClickListener() { - final boolean[] cancel = {false}; - Button selectLocationButton = findViewById(R.id.select_location_button); - mapboxMap.addOnMapLongClickListener((LatLng latLng) -> { selectLocationButton.setVisibility(View.VISIBLE); Icon icon = IconFactory.getInstance(MapActivity.this).fromResource(R.drawable.green_marker); - if (droppedMarker == null) { + if (tmpLocalMarker == null) { - droppedMarker = mapboxMap.addMarker(new MarkerOptions() + tmpLocalMarker = mapboxMap.addMarker(new MarkerOptions() .position(latLng) .icon(icon) .title("My Loc") .setSnippet("Snipecik")); - } else if (!cancel[0]) { - ValueAnimator markerAnimator = ObjectAnimator.ofObject(droppedMarker, "position", - new mapUtils.LatLngEvaluator(), droppedMarker.getPosition(), latLng); + } else { + ValueAnimator markerAnimator = ObjectAnimator.ofObject(tmpLocalMarker, "position", + new mapUtils.LatLngEvaluator(), tmpLocalMarker.getPosition(), latLng); markerAnimator.setDuration(2000); markerAnimator.start(); } selectLocationButton.setOnClickListener((View view) -> { - - if (!cancel[0] && droppedMarker != null) { + if (tmpLocalMarker != null) { // Toast instructing user to tap on the mapboxMap - - // TODO PUT MANUAL CORD try { droppedMarkercoordinate = new Coordinate( @@ -250,68 +267,57 @@ public class MapActivity extends BaseActivity PrefUtils.getLocationLevel(getApplicationContext()) ); - Log.e(tag, "tutajMANUALid: " + PrefUtils.getUserId(getApplicationContext())); - Log.e(tag, "tutajMANUALid: " + myID); + // TODO remove after BG sending + manualLocStatusChecker = () -> { + try { + Log.e(tag+"Manual", "sending manual coords"); + // TODO ^^^ wrapper to removve + disposable.add( + coordinateService + .postCoordinate(droppedMarkercoordinate) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribeWith(new DisposableSingleObserver() { + @SuppressLint("LongLogTag") + @Override + public void onSuccess(Coordinate coord) { + Log.e(tag + "POST", String.valueOf(coord)); + } - disposable.add( - coordinateService - .postCoordinate(droppedMarkercoordinate) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribeWith(new DisposableSingleObserver() { - @SuppressLint("LongLogTag") - @Override - public void onSuccess(Coordinate coord) { - Log.e(tag + "POST", String.valueOf(coord)); - } + @SuppressLint("LongLogTag") + @Override + public void onError(Throwable e) { - @SuppressLint("LongLogTag") - @Override - public void onError(Throwable e) { + Log.e(tag + "onError", e.getMessage()); - Log.e(tag + "onError", e.getMessage()); + if (e instanceof HttpException) { + ResponseBody responseBody = ((HttpException) e).response().errorBody(); + Log.e(tag + "onError", RestApiHelper.getErrorMessage(responseBody)); + + } + } + })); + // TODO \/\/\/\/\/ wrapper to removve + } finally { + manualLocHandler.postDelayed(manualLocStatusChecker, mInterval); + } + }; + manualLocStatusChecker.run(); - if (e instanceof HttpException) { - ResponseBody responseBody = ((HttpException) e).response().errorBody(); - Log.e(tag + "onError", RestApiHelper.getErrorMessage(responseBody)); - } - } - })); } catch (IllegalArgumentException e) { Timber.e(String.valueOf(e)); } - Toast.makeText( MapActivity.this, "Manual Locations selected!" + latLng, Toast.LENGTH_LONG ).show(); - selectLocationButton.setBackgroundColor( - ContextCompat.getColor(MapActivity.this, R.color.colorAccent)); - selectLocationButton.setText("Remove Manual location"); - selectLocationButton.setVisibility(View.VISIBLE); - cancel[0] = true; - } else { - - // TODO REMOVE Manual Location - mapboxMap.removeMarker(droppedMarker); - droppedMarker = null; - droppedMarkercoordinate = null; - - Toast.makeText( - MapActivity.this, - "REMOVED!!" + latLng, - Toast.LENGTH_LONG - ).show(); - - cancel[0] = false; selectLocationButton.setVisibility(View.GONE); - selectLocationButton.setText(R.string.select_a_location); - selectLocationButton.setBackgroundColor( - ContextCompat.getColor(MapActivity.this, R.color.colorPrimary)); + mapboxMap.removeMarker(tmpLocalMarker); + tmpLocalMarker = null; } }); }); @@ -362,18 +368,12 @@ public class MapActivity extends BaseActivity @Override public void onSuccess(List coordsList) { - if (droppedMarker != null) { - Timber.e("coordsList.add(droppedMarkercoordinate);"); - coordsList.add(droppedMarkercoordinate); - } - - if (coordsList.isEmpty() && droppedMarker == null) { + if (coordsList.isEmpty()) { Timber.e("200 empty []"); mapboxMap.clear(); return; } - ArrayList tmp = new ArrayList<>(); for (Coordinate coordinate : coordsList) { tmp.add(coordinate.getUserId()); @@ -408,9 +408,6 @@ public class MapActivity extends BaseActivity if (coordinate != null) { Log.e(tag, "Coordin: " + coordinate.getLatitude() + " | " + coordinate.getLongitude()); -// Log.e(tag, "Element: " + element.getLatitude()+" | " + element.getLongitude()); -// Log.e(tag, "isEqual: " + coordinate.getLatitude().equals(element.getLatitude())); -// Log.e(tag, "isEqual: " + coordinate.getLongitude().equals(element.getLongitude())); boolean statement = coordinate.getLatitude().equals(element.getLatitude()) || coordinate.getLongitude().equals(element.getLongitude()); Log.e(tag, "diff || diff: " + !statement); @@ -576,6 +573,8 @@ public class MapActivity extends BaseActivity super.onDestroy(); mapView.onDestroy(); mHandler.removeCallbacks(mStatusChecker); + // TODO remove after BG sending + manualLocHandler.removeCallbacks(manualLocStatusChecker); disposable.dispose(); } diff --git a/app/src/main/res/layout/activity_map.xml b/app/src/main/res/layout/activity_map.xml index dd40aea..42813df 100644 --- a/app/src/main/res/layout/activity_map.xml +++ b/app/src/main/res/layout/activity_map.xml @@ -111,6 +111,17 @@ android:textColor="@android:color/white" android:visibility="gone" /> +