Skip to content
Snippets Groups Projects
Commit b7ae0d12 authored by @potel5u's avatar @potel5u
Browse files

règlage de certains bug, essaie d'avancement sur acces...

parent 82118083
Branches
No related tags found
No related merge requests found
...@@ -7,6 +7,7 @@ import android.graphics.BitmapFactory; ...@@ -7,6 +7,7 @@ import android.graphics.BitmapFactory;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.os.Environment; import android.os.Environment;
import android.os.SystemClock;
import android.provider.MediaStore; import android.provider.MediaStore;
import android.util.Log; import android.util.Log;
import android.view.View; import android.view.View;
...@@ -42,6 +43,8 @@ public class AccesActivity extends AppCompatActivity { ...@@ -42,6 +43,8 @@ public class AccesActivity extends AppCompatActivity {
private Modele modele; private Modele modele;
private Piece piece; private Piece piece;
private String direction; private String direction;
private String directionDest;
private int idDest;
private Uri photo; private Uri photo;
private ActivityResultLauncher<Intent> launcher; private ActivityResultLauncher<Intent> launcher;
...@@ -58,6 +61,9 @@ public class AccesActivity extends AppCompatActivity { ...@@ -58,6 +61,9 @@ public class AccesActivity extends AppCompatActivity {
this.piece = this.modele.getPieceCourante(); this.piece = this.modele.getPieceCourante();
this.photo = getIntent().getParcelableExtra("photo"); this.photo = getIntent().getParcelableExtra("photo");
this.direction = getIntent().getExtras().getString("direction"); this.direction = getIntent().getExtras().getString("direction");
this.directionDest = getIntent().getExtras().getString("directionDest");
this.idDest = getIntent().getExtras().getInt("pieceDest");
TextView textView = findViewById(R.id.textView2); TextView textView = findViewById(R.id.textView2);
textView.setText(getString(R.string.acces, this.modele.getNom(), this.piece.getNom(), direction)); textView.setText(getString(R.string.acces, this.modele.getNom(), this.piece.getNom(), direction));
...@@ -69,14 +75,14 @@ public class AccesActivity extends AppCompatActivity { ...@@ -69,14 +75,14 @@ public class AccesActivity extends AppCompatActivity {
Button ajouter = findViewById(R.id.boutonAcces); Button ajouter = findViewById(R.id.boutonAcces);
ajouter.setOnClickListener(v -> { ajouter.setOnClickListener(v -> {
imageView.setDrawing(); imageView.setDrawing(this.idDest);
}); });
imageView.setOnRectangleClickListener(new DrawableImageView.OnRectangleClickListener() { imageView.setOnRectangleClickListener(new DrawableImageView.OnRectangleClickListener() {
@Override @Override
public void onRectangleClick(int rectangleId) { public void onRectangleClick(int rectangleId) {
Toast.makeText(AccesActivity.this, "Rectangle " + rectangleId + " cliqué", Toast.LENGTH_SHORT).show(); Toast.makeText(AccesActivity.this, "Accès à la pièce " + AccesActivity.this.modele.getPieces().get(rectangleId).getNom(), Toast.LENGTH_SHORT).show();
} }
}); });
......
...@@ -23,6 +23,8 @@ public class DrawableImageView extends AppCompatImageView { ...@@ -23,6 +23,8 @@ public class DrawableImageView extends AppCompatImageView {
private boolean isDrawingFinished = false; private boolean isDrawingFinished = false;
private boolean fixed = false; private boolean fixed = false;
private boolean drawing = false; private boolean drawing = false;
private int id;
private OnRectangleClickListener listener; private OnRectangleClickListener listener;
public DrawableImageView(Context context, AttributeSet attrs) { public DrawableImageView(Context context, AttributeSet attrs) {
...@@ -108,7 +110,7 @@ public class DrawableImageView extends AppCompatImageView { ...@@ -108,7 +110,7 @@ public class DrawableImageView extends AppCompatImageView {
Math.min(startX, endX), Math.min(startY, endY), Math.min(startX, endX), Math.min(startY, endY),
Math.max(startX, endX), Math.max(startY, endY) Math.max(startX, endX), Math.max(startY, endY)
); );
rectangles.put(rectangles.size(), rect); rectangles.put(this.id, rect);
rectanglesTemp.clear(); rectanglesTemp.clear();
fixed = true; fixed = true;
drawing=false; drawing=false;
...@@ -120,8 +122,9 @@ public class DrawableImageView extends AppCompatImageView { ...@@ -120,8 +122,9 @@ public class DrawableImageView extends AppCompatImageView {
return false; return false;
} }
public void setDrawing(){ public void setDrawing(int idDest){
drawing = true; drawing = true;
id = idDest;
} }
public void setOnRectangleClickListener(OnRectangleClickListener listener) { public void setOnRectangleClickListener(OnRectangleClickListener listener) {
......
...@@ -28,6 +28,9 @@ import androidx.core.view.WindowInsetsCompat; ...@@ -28,6 +28,9 @@ import androidx.core.view.WindowInsetsCompat;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import fr.ul.projet.modele.Modele; import fr.ul.projet.modele.Modele;
import fr.ul.projet.modele.Piece; import fr.ul.projet.modele.Piece;
...@@ -35,6 +38,7 @@ import fr.ul.projet.modele.Piece; ...@@ -35,6 +38,7 @@ import fr.ul.projet.modele.Piece;
public class PieceActivity extends AppCompatActivity { public class PieceActivity extends AppCompatActivity {
private Modele modele; private Modele modele;
private Uri photo;
private Piece piece; private Piece piece;
private ActivityResultLauncher<Intent> launcher; private ActivityResultLauncher<Intent> launcher;
private String directionSelectionne; private String directionSelectionne;
...@@ -106,7 +110,7 @@ public class PieceActivity extends AppCompatActivity { ...@@ -106,7 +110,7 @@ public class PieceActivity extends AppCompatActivity {
this.modele = getIntent().getParcelableExtra("modele"); this.modele = getIntent().getParcelableExtra("modele");
this.piece = this.modele.getPieceCourante(); this.piece = this.modele.getPieceCourante();
Toast.makeText(this, "photo : "+this.piece.getPhotoNord(), Toast.LENGTH_LONG).show();
...@@ -186,7 +190,7 @@ public class PieceActivity extends AppCompatActivity { ...@@ -186,7 +190,7 @@ public class PieceActivity extends AppCompatActivity {
} else if (which == 1){ } else if (which == 1){
this.selectionnerPhoto(); this.selectionnerPhoto();
} else if (which == 2){ } else if (which == 2){
Uri photo=null; this.photo=null;
switch (directionSelectionne){ switch (directionSelectionne){
case "Nord": case "Nord":
photo = this.piece.getPhotoNord(); photo = this.piece.getPhotoNord();
...@@ -204,19 +208,104 @@ public class PieceActivity extends AppCompatActivity { ...@@ -204,19 +208,104 @@ public class PieceActivity extends AppCompatActivity {
if (photo != null){ if (photo != null){
Intent intent = new Intent(PieceActivity.this, AccesActivity.class); creationAcces();
intent.putExtra("modele", this.modele);
intent.putExtra("photo", photo);
intent.putExtra("direction", directionSelectionne);
launcher.launch(intent);
}else{ }else{
Toast.makeText(this, "Vous devez ajouter la photo avant d'ajouter un accés" + this.modele.getPieceCourante().getId(), Toast.LENGTH_LONG).show(); Toast.makeText(this, "Vous devez ajouter la photo avant d'ajouter un accés", Toast.LENGTH_LONG).show();
} }
} }
}) })
.show(); .show();
} }
private void creationAcces(){
if (this.modele.getPieces().size() == 1){
Toast.makeText(this, "Aucune pièce à accéder.", Toast.LENGTH_LONG).show();
}else{
List<String> piecesList = new ArrayList<>();
for (Map.Entry<Integer, Piece> entry : this.modele.getPieces().entrySet()){
if (!entry.getKey().equals(this.piece.getId())){
piecesList.add(entry.getValue().getNom());
}
}
String[] piecesArray = piecesList.toArray(new String[0]);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Choisir une pièce de destination")
.setItems(piecesArray, (dialog1, which1) -> {
String selectedPiece = piecesArray[which1];
String[] directions = {"Nord", "Sud", "Est", "Ouest"};
AlertDialog.Builder builder2 = new AlertDialog.Builder(this);
builder2.setTitle("Choisir une direction")
.setItems(directions, (dialog2, which2) ->{
switch (directions[which2]){
case "Nord":
if (this.modele.getPieces().get(this.modele.getPieceByNom(selectedPiece)).getPhotoNord() != null){
Intent intent = new Intent(PieceActivity.this, AccesActivity.class);
intent.putExtra("modele", this.modele);
intent.putExtra("photo", PieceActivity.this.photo);
intent.putExtra("direction", directionSelectionne);
intent.putExtra("directionDest", directions[which2]);
intent.putExtra("pieceDest", this.modele.getPieceByNom(selectedPiece));
launcher.launch(intent);
}else{
Toast.makeText(PieceActivity.this, "Destination incorrecte. Ajouter une photo d'arrivée", Toast.LENGTH_LONG).show();
}
break;
case "Sud":
if (this.modele.getPieces().get(this.modele.getPieceByNom(selectedPiece)).getPhotoSud() != null){
Intent intent = new Intent(PieceActivity.this, AccesActivity.class);
intent.putExtra("modele", this.modele);
intent.putExtra("photo", PieceActivity.this.photo);
intent.putExtra("direction", directionSelectionne);
intent.putExtra("directionDest", directions[which2]);
intent.putExtra("pieceDest", this.modele.getPieceByNom(selectedPiece));
launcher.launch(intent);
}else{
Toast.makeText(PieceActivity.this, "Destination incorrecte. Ajouter une photo d'arrivée", Toast.LENGTH_LONG).show();
}
break;
case "Est":
if (this.modele.getPieces().get(this.modele.getPieceByNom(selectedPiece)).getPhotoEst() != null){
Intent intent = new Intent(PieceActivity.this, AccesActivity.class);
intent.putExtra("modele", this.modele);
intent.putExtra("photo", PieceActivity.this.photo);
intent.putExtra("direction", directionSelectionne);
intent.putExtra("directionDest", directions[which2]);
intent.putExtra("pieceDest", this.modele.getPieceByNom(selectedPiece));
launcher.launch(intent);
}else{
Toast.makeText(PieceActivity.this, "Destination incorrecte. Ajouter une photo d'arrivée", Toast.LENGTH_LONG).show();
}
break;
case "Ouest":
if (this.modele.getPieces().get(this.modele.getPieceByNom(selectedPiece)).getPhotoOuest() != null){
Intent intent = new Intent(PieceActivity.this, AccesActivity.class);
intent.putExtra("modele", this.modele);
intent.putExtra("photo", PieceActivity.this.photo);
intent.putExtra("direction", directionSelectionne);
intent.putExtra("directionDest", directions[which2]);
intent.putExtra("pieceDest", this.modele.getPieceByNom(selectedPiece));
launcher.launch(intent);
}else{
Toast.makeText(PieceActivity.this, "Destination incorrecte. Ajouter une photo d'arrivée", Toast.LENGTH_LONG).show();
}
break;
}
});
builder2.show();
});
builder.show();
}
}
private void prendrePhoto() { private void prendrePhoto() {
// Obtenir le dossier de stockage des images // Obtenir le dossier de stockage des images
File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES); File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
......
...@@ -74,21 +74,21 @@ public class Modele implements Parcelable{ ...@@ -74,21 +74,21 @@ public class Modele implements Parcelable{
this.nom = in.readString(); this.nom = in.readString();
this.orientationCourante = in.readString(); this.orientationCourante = in.readString();
this.pieces = new HashMap<Integer, Piece>(); this.pieces = new HashMap<Integer, Piece>();
int size = in.readInt();
this.pieceCourante = in.readParcelable(Piece.class.getClassLoader()); this.pieceCourante = in.readParcelable(Piece.class.getClassLoader());
if (pieceCourante != null){ if (pieceCourante != null && this.pieces.containsValue(this.pieceCourante)){
this.pieces.put(this.pieceCourante.getId(), this.pieceCourante); this.pieces.remove(this.pieceCourante.getId());
} }
int size = in.readInt();
for (int i = 0; i < size; i++){ for (int i = 0; i < size; i++){
int key = in.readInt(); int key = in.readInt();
if (key != this.pieceCourante.getId()){ Piece piece = in.readParcelable(Piece.class.getClassLoader());
Piece piece = in.readParcelable(Piece.class.getClassLoader()); this.pieces.put(key, piece);
this.pieces.put(key, piece); }
} if (pieceCourante != null){
this.pieces.put(this.pieceCourante.getId(), this.pieceCourante);
} }
} }
/** /**
...@@ -115,8 +115,12 @@ public class Modele implements Parcelable{ ...@@ -115,8 +115,12 @@ public class Modele implements Parcelable{
dest.writeString(this.fichierJson); dest.writeString(this.fichierJson);
dest.writeString(this.nom); dest.writeString(this.nom);
dest.writeString(this.orientationCourante); dest.writeString(this.orientationCourante);
dest.writeInt(this.pieces.size());
dest.writeParcelable(this.pieceCourante, flags); dest.writeParcelable(this.pieceCourante, flags);
if (this.pieceCourante != null && this.pieces.containsValue(this.pieceCourante)){
this.pieces.remove(this.pieceCourante.getId());
}
dest.writeInt(this.pieces.size());
for (Map.Entry<Integer, Piece> entry : this.pieces.entrySet()){ for (Map.Entry<Integer, Piece> entry : this.pieces.entrySet()){
dest.writeInt(entry.getKey()); dest.writeInt(entry.getKey());
dest.writeParcelable(entry.getValue(), flags); dest.writeParcelable(entry.getValue(), flags);
...@@ -145,6 +149,15 @@ public class Modele implements Parcelable{ ...@@ -145,6 +149,15 @@ public class Modele implements Parcelable{
return this.nom; return this.nom;
} }
public int getPieceByNom(String nom){
for (Piece p : this.pieces.values()){
if (p.getNom().equals(nom)){
return p.getId();
}
}
return -1;
}
/** /**
* Setter du nom du bâtiment * Setter du nom du bâtiment
* @param nom Nom souhaité pour le bâtiment * @param nom Nom souhaité pour le bâtiment
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment