diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 46c0a8b..d443007 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -17,26 +17,8 @@
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -109,124 +91,136 @@
-
-
+
+
-
-
+
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
-
+
+
+
-
-
+
+
-
-
-
-
-
+
+
+
+
+
+
-
-
+
+
-
-
-
-
-
+
+
+
-
-
+
+
-
-
-
-
-
+
+
+
-
-
+
+
+
+
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
+
+
+
+
+
-
-
+
+
-
-
-
+
+
+
+
+
+
@@ -238,6 +232,7 @@
+
@@ -251,7 +246,7 @@
@@ -1889,7 +1884,7 @@
@@ -2160,11 +2155,6 @@
@@ -2245,12 +2240,8 @@
-
-
-
-
@@ -2294,6 +2285,64 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -2428,9 +2477,17 @@
+
+
+
+
+
+
+
+
@@ -2438,7 +2495,7 @@
-
+
@@ -3080,7 +3137,28 @@
1487623484583
-
+
+ 1488129033279
+
+
+
+ 1488129033280
+
+
+ 1488151449535
+
+
+
+ 1488151449536
+
+
+ 1488154471603
+
+
+
+ 1488154471603
+
+
@@ -3126,30 +3204,30 @@
-
+
-
+
-
+
-
+
-
-
+
+
+
-
+
-
@@ -3161,8 +3239,8 @@
-
+
@@ -3192,11 +3270,14 @@
-
+
+
+
+
-
+
@@ -3208,446 +3289,477 @@
-
+
-
-
+
+
-
+
-
+
-
+
-
-
+
+
+
-
-
-
-
+
-
-
-
+
+
-
+
-
-
+
+
-
-
-
-
+
-
-
+
+
+
+
+
-
+
-
-
+
+
+
-
+
-
-
+
+
-
-
-
-
+
-
-
+
+
+
+
+
+
+
+
+
-
+
-
-
+
+
+
+
+
+
+
-
-
+
-
-
+
+
-
-
-
-
+
+
-
-
-
-
-
-
+
+
-
+
-
-
+
+
+
-
-
+
+
-
-
+
+
+
-
-
+
+
-
-
+
+
-
-
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
+
+
+
+
+
-
-
+
+
-
-
-
+
+
-
-
-
-
+
-
-
-
+
+
-
-
-
-
+
-
-
-
+
+
-
-
-
+
+
+
+
+
+
+
-
-
-
+
+
-
+
-
-
+
+
-
-
-
+
+
+
+
+
+
+
-
-
+
+
+
+
+
-
-
+
-
-
+
+
+
+
+
-
+
-
-
+
+
+
+
+
+
-
+
-
+
+
+
+
+
-
+
-
-
+
+
-
+
+
+
+
+
-
+
-
-
+
+
+
+
+
-
+
-
-
-
+
+
-
+
-
-
+
+
-
+
-
-
-
+
+
-
+
-
-
+
+
-
+
-
-
+
+
-
+
-
-
+
+
-
+
-
-
-
+
+
-
+
-
-
-
-
-
+
+
-
+
-
-
-
+
+
-
+
-
-
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
-
+
-
-
-
+
+
+
+
+
+
-
+
-
-
+
+
-
+
+
+
+
-
+
-
-
+
+
+
+
+
-
+
+
+
+
-
-
+
+
-
+
-
-
+
+
-
+
-
-
-
-
-
+
+
+
-
+
-
-
+
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
-
-
-
+
+
-
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
-
+
-
-
-
-
-
-
-
+
+
+
diff --git a/app/src/main/java/ovh/exception/watchdogzz/activities/AddPoiFragment.java b/app/src/main/java/ovh/exception/watchdogzz/activities/AddPoiFragment.java
new file mode 100644
index 0000000..8c259fe
--- /dev/null
+++ b/app/src/main/java/ovh/exception/watchdogzz/activities/AddPoiFragment.java
@@ -0,0 +1,78 @@
+package ovh.exception.watchdogzz.activities;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.app.DialogFragment;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.EditText;
+
+import ovh.exception.watchdogzz.R;
+
+public class AddPoiFragment extends DialogFragment {
+
+ public interface PoiDialogListener {
+ void onDialogPositiveClick(DialogFragment dialog);
+ void onDialogNegativeClick(DialogFragment dialog);
+ }
+
+ // Use this instance of the interface to deliver action events
+ PoiDialogListener mListener;
+
+ private EditText mName = null;
+
+ @Override
+ public void onAttach(Context context) {
+ super.onAttach(context);
+
+ Activity activity;
+
+ if (context instanceof Activity){
+ activity = (Activity) context;
+ // Verify that the host activity implements the callback interface
+ try {
+ // Instantiate the NoticeDialogListener so we can send events to the host
+ mListener = (PoiDialogListener) activity;
+ } catch (ClassCastException e) {
+ // The activity doesn't implement the interface, throw exception
+ throw new ClassCastException(activity.toString()
+ + " must implement PoiDialogListener");
+ }
+ }
+ }
+
+ @Override
+ public Dialog onCreateDialog(Bundle savedInstanceState) {
+ AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+ // Get the layout inflater
+ LayoutInflater inflater = getActivity().getLayoutInflater();
+
+ // Inflate and set the layout for the dialog
+ // Pass null as the parent view because its going in the dialog layout
+ View rootView = inflater.inflate(R.layout.poi_dialog, null);
+ mName = (EditText) rootView.findViewById(R.id.username);
+
+ builder.setView(rootView)
+ // Add action buttons
+ .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int id) {
+ mListener.onDialogPositiveClick(AddPoiFragment.this);
+ }
+ })
+ .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int id) {
+ mListener.onDialogNegativeClick(AddPoiFragment.this);
+ }
+ });
+ return builder.create();
+ }
+
+ public String getName() {
+ return mName != null ? mName.getText().toString() : "";
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/ovh/exception/watchdogzz/activities/MainActivity.java b/app/src/main/java/ovh/exception/watchdogzz/activities/MainActivity.java
index 24c71eb..074a58a 100644
--- a/app/src/main/java/ovh/exception/watchdogzz/activities/MainActivity.java
+++ b/app/src/main/java/ovh/exception/watchdogzz/activities/MainActivity.java
@@ -1,19 +1,21 @@
package ovh.exception.watchdogzz.activities;
+import android.app.DialogFragment;
import android.content.Intent;
import android.os.Bundle;
+import android.os.Handler;
import android.support.design.widget.FloatingActionButton;
-import android.support.design.widget.Snackbar;
-import android.util.Log;
-import android.view.View;
import android.support.design.widget.NavigationView;
+import android.support.design.widget.Snackbar;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
+import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
+import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
@@ -26,6 +28,7 @@
import ovh.exception.watchdogzz.R;
import ovh.exception.watchdogzz.data.GPSPosition;
import ovh.exception.watchdogzz.data.JUser;
+import ovh.exception.watchdogzz.data.PoiManager;
import ovh.exception.watchdogzz.data.User;
import ovh.exception.watchdogzz.data.UserManager;
import ovh.exception.watchdogzz.network.IWSConsumer;
@@ -35,13 +38,35 @@
import ovh.exception.watchdogzz.view.WDRenderer;
import ovh.exception.watchdogzz.view.WDSurfaceView;
-public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener, IWSConsumer {
+public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener, IWSConsumer, AddPoiFragment.PoiDialogListener {
private WDSurfaceView glView;
private UserManager users;
+ private PoiManager pois;
private PostitionManager postitionManager;
private NetworkManager networkManager;
- public boolean isSuccess = false, isFinished = false;
+ private FloatingActionButton mAddPOI, mValidatePOI;
+ private GPSPosition mNewPoiPosition;
+
+ private final static int INTERVAL = 1000 * 5; // 5 secondes
+ private Handler mHandler = new Handler();
+
+ private Runnable mHandlerTask = new Runnable() {
+ @Override
+ public void run() {
+ new WebServiceTask(MainActivity.this, null, users.getMe()).execute(getString(R.string.server) + "/where");
+ new WebServiceTask(MainActivity.this, MainActivity.this).execute(getString(R.string.server) + "/where");
+ mHandler.postDelayed(mHandlerTask, INTERVAL);
+ }
+ };
+
+ private void startRequestingTask() {
+ mHandlerTask.run();
+ }
+
+ private void stopRequestingTask() {
+ mHandler.removeCallbacks(mHandlerTask);
+ }
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -52,7 +77,7 @@ protected void onCreate(Bundle savedInstanceState) {
glView.setRenderer(renderer); // Use a custom renderer
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
-
+/*
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
@@ -63,6 +88,33 @@ public void onClick(View view) {
new WebServiceTask(MainActivity.this, MainActivity.this).execute(getString(R.string.server) + "/where");
}
});
+*/
+ mAddPOI = (FloatingActionButton) findViewById(R.id.add_poi);
+ mAddPOI.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ Snackbar.make(view, R.string.add_poi_help, Snackbar.LENGTH_LONG)
+ .setAction("Action", null).show();
+ glView.setCibleVisible(true);
+ mAddPOI.hide();
+ mValidatePOI.show();
+ }
+ });
+
+ mValidatePOI = (FloatingActionButton) findViewById(R.id.validate_poi);
+ mValidatePOI.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ AddPoiFragment dialog = new AddPoiFragment();
+ dialog.show(getFragmentManager(), "PoiDialogFragment");
+ mNewPoiPosition = new GPSPosition(0f,0f,0.5f);
+ glView.setCibleVisible(false);
+ mValidatePOI.hide();
+ mAddPOI.show();
+ MainActivity.this.glView.requestRender();
+ }
+ });
+ mValidatePOI.hide();
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
@@ -70,13 +122,14 @@ public void onClick(View view) {
this.postitionManager = new PostitionManager(this);
this.networkManager = NetworkManager.getInstance(this.getApplicationContext());
setUsers(new UserManager());
+ this.pois = new PoiManager();
User futurMe = getIntent().getParcelableExtra("user");
getUsers().addObserver(renderer.getMap());
this.users.setMe(futurMe);
/** TODO supppress stub **/
this.users.addUser(new User("tito", "Bob", "bob@mail.com", "", "http://www.superaktif.net/wp-content/upLoads/2011/07/Han.Solo_.jpg", false, new GPSPosition(3.111185f, 45.759231f, 0.0f)));
- this.users.addUser(new User("tata", "Alice", "alice@mail.com", "", "http://www.superaktif.net/wp-content/upLoads/2011/07/Han.Solo_.jpg", false, new GPSPosition(3.111185f, 45.759271f, 0.5f)));
+ this.users.addUser(new User("tata", "Alice", "alice@mail.com", "", "http://static.anakinworld.com/uploads/entries/original/personnage-leia-organa-solo.jpg", false, new GPSPosition(3.111185f, 45.759271f, 0.5f)));
/******************************************************/
// login sur le serveur
@@ -165,6 +218,10 @@ public boolean onNavigationItemSelected(MenuItem item) {
masterViewIntent.putExtra("users", users.getUsers());
masterViewIntent.putExtra("user", users.getMe());
startActivity(masterViewIntent);
+ } else if (id == R.id.poi_list) {
+ Intent masterViewIntent = new Intent(MainActivity.this, UserListActivity.class);
+ masterViewIntent.putExtra("pois", pois.getUsers());
+ startActivity(masterViewIntent);
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
@@ -172,11 +229,16 @@ public boolean onNavigationItemSelected(MenuItem item) {
return true;
}
+ private GPSPosition getGPSPosition(GPSPosition loc) {
+ return glView.getGPSPosition(loc);
+ }
+
@Override
protected void onPause() {
super.onPause();
glView.onPause();
this.postitionManager.stop();
+ this.stopRequestingTask();
}
@Override
@@ -184,6 +246,7 @@ protected void onResume() {
super.onResume();
glView.onResume();
this.postitionManager.start();
+ this.startRequestingTask();
}
@Override
@@ -249,4 +312,18 @@ public void consume(JSONObject json) {
} else
Log.w("COUCOU", "JSON is null");
}
+
+ @Override
+ public void onDialogPositiveClick(DialogFragment dialog) {
+ Snackbar.make(findViewById(R.id.content_main), R.string.poi_added, Snackbar.LENGTH_LONG)
+ .setAction("Action", null).show();
+ this.pois.createNewPoi(((AddPoiFragment)dialog).getName());
+ pois.finalizeNewPoi(getGPSPosition(mNewPoiPosition));
+ }
+
+ @Override
+ public void onDialogNegativeClick(DialogFragment dialog) {
+ Snackbar.make(findViewById(R.id.content_main), R.string.abandon, Snackbar.LENGTH_LONG)
+ .setAction("Action", null).show();
+ }
}
diff --git a/app/src/main/java/ovh/exception/watchdogzz/activities/UserListActivity.java b/app/src/main/java/ovh/exception/watchdogzz/activities/UserListActivity.java
index b0df9e1..2e2984b 100644
--- a/app/src/main/java/ovh/exception/watchdogzz/activities/UserListActivity.java
+++ b/app/src/main/java/ovh/exception/watchdogzz/activities/UserListActivity.java
@@ -43,19 +43,24 @@ public class UserListActivity extends AppCompatActivity {
*/
private boolean mTwoPane;
private List mUsers;
+ private boolean isPois = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_user_list);
- mUsers = getIntent().getParcelableArrayListExtra("users");
+ mUsers = getIntent().getParcelableArrayListExtra("pois");
+ if(mUsers==null)
+ mUsers = getIntent().getParcelableArrayListExtra("users");
+ else
+ isPois = true;
if(mUsers==null)
mUsers = new ArrayList<>();
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
- toolbar.setTitle(getTitle());
+ toolbar.setTitle(isPois?getString(R.string.poi_title):getTitle());
// Show the Up button in the action bar.
ActionBar actionBar = getSupportActionBar();
diff --git a/app/src/main/java/ovh/exception/watchdogzz/data/GPSPosition.java b/app/src/main/java/ovh/exception/watchdogzz/data/GPSPosition.java
index 9f34f94..0546de6 100644
--- a/app/src/main/java/ovh/exception/watchdogzz/data/GPSPosition.java
+++ b/app/src/main/java/ovh/exception/watchdogzz/data/GPSPosition.java
@@ -21,6 +21,12 @@ public float[] getForMap(float[] origin, float scale) {
return res;
}
+ public void screenToGps(float[] origin, float scale) {
+ latitude = (getLatitude() / scale + origin[1]);
+ longitude = (getLongitude() / scale + origin[0]);
+ altitude = (getAltitude() / scale + origin[2]);
+ }
+
@Override
public String toString() {
return getLatitude() + " " + getLongitude() + " " + getAltitude();
diff --git a/app/src/main/java/ovh/exception/watchdogzz/data/PoiManager.java b/app/src/main/java/ovh/exception/watchdogzz/data/PoiManager.java
new file mode 100644
index 0000000..286298e
--- /dev/null
+++ b/app/src/main/java/ovh/exception/watchdogzz/data/PoiManager.java
@@ -0,0 +1,27 @@
+package ovh.exception.watchdogzz.data;
+
+import android.util.Log;
+
+/**
+ * Manage points of interest
+ */
+public class PoiManager extends UserManager {
+
+ private boolean isCreatingNewPoi = false;
+ private User mNewUser = null;
+
+ public void createNewPoi(String name) {
+ mNewUser = new User(name,name,"","","https://i.stack.imgur.com/6cDGi.png",false,null);
+ this.isCreatingNewPoi = true;
+ }
+
+ public void finalizeNewPoi(GPSPosition position) {
+ if(this.isCreatingNewPoi) {
+ this.mNewUser.setPosition(position);
+ Log.i("POIS", position.toString());
+ this.addUser(this.mNewUser);
+ this.isCreatingNewPoi = false;
+ }
+ }
+
+}
diff --git a/app/src/main/java/ovh/exception/watchdogzz/model/WDMap.java b/app/src/main/java/ovh/exception/watchdogzz/model/WDMap.java
index 87bef2b..879965b 100644
--- a/app/src/main/java/ovh/exception/watchdogzz/model/WDMap.java
+++ b/app/src/main/java/ovh/exception/watchdogzz/model/WDMap.java
@@ -15,6 +15,7 @@
* Class for representing the map of an establishment
*/
public class WDMap extends Observable implements WDDrawable, Observer {
+ private final float scale = 3169.8f;
private WDObjet map;
private HashMap markers;
private Context context;
@@ -48,13 +49,14 @@ public void draw(GL10 gl) {
gl.glRotatef(57.55046185f,0.0f,0.0f,1.0f);
gl.glScalef(0.002f,0.002f,0.002f);
gl.glTranslatef(-1682f,-1016f,0); // position dans le mesh du point d'origine
+ gl.glColor4f(0,0,0,1.0f);
map.draw(gl);
gl.glPopMatrix();
// dessin des marqueurs
for (WDArtefact x : markers.values()) {
gl.glPushMatrix();
- float[] tmp = x.getPosition().getForMap(origin,3169.8f);
+ float[] tmp = x.getPosition().getForMap(getOrigin(), getScale());
gl.glTranslatef(tmp[0],tmp[1], 0.5f);
Log.d("ME", x.getPosition().toString() + " " + x.getLabel());
@@ -93,4 +95,16 @@ public void update(Observable observable, Object data) {
this.setChanged();
this.notifyObservers();
}
+
+ public float[] getOrigin() {
+ return origin;
+ }
+
+ public void setOrigin(float[] origin) {
+ this.origin = origin;
+ }
+
+ public float getScale() {
+ return scale;
+ }
}
diff --git a/app/src/main/java/ovh/exception/watchdogzz/view/WDRenderer.java b/app/src/main/java/ovh/exception/watchdogzz/view/WDRenderer.java
index da045fb..ae7ebe1 100644
--- a/app/src/main/java/ovh/exception/watchdogzz/view/WDRenderer.java
+++ b/app/src/main/java/ovh/exception/watchdogzz/view/WDRenderer.java
@@ -3,6 +3,7 @@
import android.content.Context;
import android.opengl.GLSurfaceView.Renderer;
import android.opengl.GLU;
+import android.util.Log;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
@@ -11,18 +12,20 @@
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
+import ovh.exception.watchdogzz.data.GPSPosition;
+import ovh.exception.watchdogzz.model.WDArtefact;
import ovh.exception.watchdogzz.model.WDMap;
/**
- * Created by begarco on 19/11/2016.
+ * Renderer for displayni a watchdogzz map
*/
-
public class WDRenderer implements Renderer {
private Context context; // contexte de l'application
private WDCamera camera; // camera
private WDMap map; // modele de la carte
+ private WDArtefact cible;
private final float[] mat_ambient = { 0.2f, 0.3f, 0.8f, 1.0f };
@@ -34,16 +37,19 @@ public class WDRenderer implements Renderer {
private final float[] mat_specular = { 0.2f * 0.4f, 0.2f * 0.6f, 0.2f * 0.8f, 1.0f };
private FloatBuffer mat_specular_buf;
- public volatile float mLightX = 0f;
- public volatile float mLightY = 0f;
- public volatile float mLightZ = 3f;
+ private volatile float mLightX = 0f;
+ private volatile float mLightY = 0f;
+ private volatile float mLightZ = 3f;
+ private boolean isCibleVisible = false;
// Constructeur avec contexte
public WDRenderer(Context context) {
this.context = context;
this.setMap(new WDMap(context));
this.camera = new WDCamera(0, 0, -8.0f);
+ this.cible = new WDArtefact(context, "cible", "cible");
+ cible.setPosition(new GPSPosition(0f,0f,0.5f));
}
/**
@@ -145,6 +151,12 @@ public void onDrawFrame(GL10 gl) {
gl.glLightfv(GL10.GL_LIGHT0, GL10.GL_POSITION, mat_posiBuf);
gl.glPushMatrix();
+ if(isCibleVisible()) {
+ gl.glPushMatrix();
+ gl.glTranslatef(0, 0, -3f);
+ this.cible.draw(gl);
+ gl.glPopMatrix();
+ }
this.camera.watch(gl);
gl.glPushMatrix();
this.getMap().draw(gl); // Draw model
@@ -171,4 +183,22 @@ public WDMap getMap() {
public void setMap(WDMap map) {
this.map = map;
}
+
+ public GPSPosition getGPSPosition(GPSPosition loc) {
+ GPSPosition res = loc;
+
+ res.setLatitude(-camera.x());
+ res.setLongitude(-camera.y());
+ res.screenToGps(map.getOrigin(),map.getScale());
+
+ return res;
+ }
+
+ public boolean isCibleVisible() {
+ return isCibleVisible;
+ }
+
+ public void setCibleVisible(boolean cibleVisible) {
+ isCibleVisible = cibleVisible;
+ }
}
diff --git a/app/src/main/java/ovh/exception/watchdogzz/view/WDSurfaceView.java b/app/src/main/java/ovh/exception/watchdogzz/view/WDSurfaceView.java
index 491933f..a487cb2 100644
--- a/app/src/main/java/ovh/exception/watchdogzz/view/WDSurfaceView.java
+++ b/app/src/main/java/ovh/exception/watchdogzz/view/WDSurfaceView.java
@@ -8,6 +8,8 @@
import java.util.Observable;
import java.util.Observer;
+import ovh.exception.watchdogzz.data.GPSPosition;
+
/**
* View to introduce OpenGL
*/
@@ -22,12 +24,20 @@ public class WDSurfaceView extends GLSurfaceView implements Observer {
private float mSpaceBetweenFingers; // espace entre les doigts
private float mScale; // echelle de zoom
+ public GPSPosition getGPSPosition(GPSPosition loc) {
+ return mRenderer.getGPSPosition(loc);
+ }
+
private enum FingerAction {
NONE,
IS_MOVING,
IS_ZOOMING
}
+ public void setCibleVisible(boolean val) {
+ this.mRenderer.setCibleVisible(val);
+ }
+
public WDSurfaceView(Context context) {
this(context, null);
}
diff --git a/app/src/main/res/layout/app_map_main.xml b/app/src/main/res/layout/app_map_main.xml
index 35700eb..7c3f620 100644
--- a/app/src/main/res/layout/app_map_main.xml
+++ b/app/src/main/res/layout/app_map_main.xml
@@ -17,13 +17,20 @@
-
+
+
diff --git a/app/src/main/res/layout/poi_dialog.xml b/app/src/main/res/layout/poi_dialog.xml
new file mode 100644
index 0000000..cbd3c20
--- /dev/null
+++ b/app/src/main/res/layout/poi_dialog.xml
@@ -0,0 +1,22 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/menu/activity_main_drawer.xml b/app/src/main/res/menu/activity_main_drawer.xml
index e962e36..c22b099 100644
--- a/app/src/main/res/menu/activity_main_drawer.xml
+++ b/app/src/main/res/menu/activity_main_drawer.xml
@@ -10,6 +10,10 @@
android:id="@+id/users_list"
android:icon="@drawable/logo"
android:title="@string/users_list" />
+
- Salut, voici ma position fournie par WatchDogZZ :
- Utilisateurs
+ Liste détaillée
Détails
Mode RV
https://watchdogzz.ddns.net
@@ -29,4 +29,12 @@
Partager la position
Envoyer un message
Les utilisateurs
+ "Points d'intérêt"
+ "Appuyez sur la carte pour ajouter un point d'intérêt."
+ Nom
+ Ok
+ Annuler
+ Abandon
+ Point ajouté.
+ "Points d'intérêt"
\ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 6ed9888..d30342b 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -3,4 +3,5 @@
#3F51B5
#303F9F
#40f9ff
+ #049704
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 6d351bb..d3607f7 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -29,7 +29,7 @@
Send your position to your friends.
Hi, here is my position provided by WatchDogZZ:
- Users
+ Detailed list
User Detail
https://watchdogzz.ddns.net
RV mode
@@ -40,5 +40,13 @@
Send message
Coming soon…
Users\' list
+ Points of interest
+ Tap on the map to place a point of interest.
+ Name
+ Ok
+ Cancel
+ Abandon
+ Point added.
+ Points of interests