|
14 | 14 | import android.support.design.widget.Snackbar; |
15 | 15 | import android.support.v7.app.ActionBar; |
16 | 16 | import android.support.v7.app.AppCompatActivity; |
| 17 | +import android.text.InputType; |
17 | 18 | import android.view.Menu; |
18 | 19 | import android.view.MenuItem; |
19 | 20 | import android.view.TouchDelegate; |
|
22 | 23 | import android.view.WindowManager; |
23 | 24 | import android.widget.AdapterView; |
24 | 25 | import android.widget.Button; |
| 26 | +import android.widget.EditText; |
25 | 27 | import android.widget.ImageButton; |
26 | 28 | import android.widget.LinearLayout; |
27 | 29 | import android.widget.ListView; |
|
30 | 32 |
|
31 | 33 | import com.mapbox.mapboxsdk.geometry.BoundingBox; |
32 | 34 | import com.mapbox.mapboxsdk.geometry.LatLng; |
| 35 | +import com.mapbox.mapboxsdk.overlay.Marker; |
33 | 36 | import com.mapbox.mapboxsdk.views.MapView; |
34 | 37 | import com.spatialdev.osm.OSMMap; |
35 | 38 | import com.spatialdev.osm.events.OSMSelectionListener; |
@@ -376,8 +379,10 @@ protected void initializeAddNodeButtons() { |
376 | 379 | View.OnClickListener listener = new View.OnClickListener() { |
377 | 380 | @Override |
378 | 381 | public void onClick(View v) { |
379 | | - osmMap.addNode(); |
| 382 | + OSMNode node = osmMap.addNode(); |
380 | 383 | toggleNodeMode(); |
| 384 | + node.select(); |
| 385 | + identifyOSMFeature(node); |
381 | 386 | } |
382 | 387 | }; |
383 | 388 | addNodeMarkerBtn.setOnClickListener(listener); |
@@ -452,14 +457,24 @@ private void toggleMoveNodeMode() { |
452 | 457 | } |
453 | 458 |
|
454 | 459 | private void hideSelectedMarker() { |
455 | | - OSMNode node = (OSMNode)OSMElement.getSelectedElements().getFirst(); |
456 | | - node.getMarker().setVisibility(false); |
| 460 | + LinkedList<OSMElement> selectedElements = OSMElement.getSelectedElements(); |
| 461 | + if (selectedElements.size() < 1) return; |
| 462 | + OSMNode node = (OSMNode)selectedElements.getFirst(); |
| 463 | + Marker marker = node.getMarker(); |
| 464 | + if (marker != null) { |
| 465 | + node.getMarker().setVisibility(false); |
| 466 | + } |
457 | 467 | mapView.invalidate(); |
458 | 468 | } |
459 | 469 |
|
460 | 470 | private void showSelectedMarker() { |
461 | | - OSMNode node = (OSMNode)OSMElement.getSelectedElements().getFirst(); |
462 | | - node.getMarker().setVisibility(true); |
| 471 | + LinkedList<OSMElement> selectedElements = OSMElement.getSelectedElements(); |
| 472 | + if (selectedElements.size() < 1) return; |
| 473 | + OSMNode node = (OSMNode)selectedElements.getFirst(); |
| 474 | + Marker marker = node.getMarker(); |
| 475 | + if (marker != null) { |
| 476 | + node.getMarker().setVisibility(true); |
| 477 | + } |
463 | 478 | mapView.invalidate(); |
464 | 479 | } |
465 | 480 |
|
@@ -514,6 +529,36 @@ public void onClick(DialogInterface dialog, int id) { |
514 | 529 | } |
515 | 530 | } |
516 | 531 |
|
| 532 | + private void inputOSMCredentials() { |
| 533 | + final SharedPreferences userNamePref = getSharedPreferences("org.redcross.openmapkit.USER_NAME", Context.MODE_PRIVATE); |
| 534 | + AlertDialog.Builder builder = new AlertDialog.Builder(this); |
| 535 | + builder.setTitle("OpenStreetMap User Name"); |
| 536 | + builder.setMessage("Please enter your OpenStreetMap user name."); |
| 537 | + final EditText input = new EditText(this); |
| 538 | + input.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS); |
| 539 | + String userName = userNamePref.getString("userName", null); |
| 540 | + if (userName != null) { |
| 541 | + input.setText(userName); |
| 542 | + } |
| 543 | + builder.setView(input); |
| 544 | + builder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { |
| 545 | + @Override |
| 546 | + public void onClick(DialogInterface dialog, int id) { |
| 547 | + // just dismiss |
| 548 | + } |
| 549 | + }); |
| 550 | + builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { |
| 551 | + @Override |
| 552 | + public void onClick(DialogInterface dialog, int which) { |
| 553 | + String userName = input.getText().toString(); |
| 554 | + SharedPreferences.Editor editor = userNamePref.edit(); |
| 555 | + editor.putString("userName", userName); |
| 556 | + editor.apply(); |
| 557 | + } |
| 558 | + }); |
| 559 | + builder.show(); |
| 560 | + } |
| 561 | + |
517 | 562 | private void askIfDownloadOSM() { |
518 | 563 | AlertDialog.Builder builder = new AlertDialog.Builder(this); |
519 | 564 | builder.setTitle(R.string.downloadOSMTitle); |
@@ -576,6 +621,9 @@ public boolean onOptionsItemSelected(MenuItem item) { |
576 | 621 | } else if (id == R.id.mbtilessettings) { |
577 | 622 | basemap.presentMBTilesOptions(); |
578 | 623 | return true; |
| 624 | + } else if (id == R.id.osmcredentials) { |
| 625 | + inputOSMCredentials(); |
| 626 | + return true; |
579 | 627 | } else if (id == R.id.osmsettings) { |
580 | 628 | presentOSMOptions(); |
581 | 629 | return true; |
|
0 commit comments