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
No related branches found
No related tags found
No related merge requests found
......@@ -7,6 +7,7 @@ import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.os.SystemClock;
import android.provider.MediaStore;
import android.util.Log;
import android.view.View;
......@@ -42,6 +43,8 @@ public class AccesActivity extends AppCompatActivity {
private Modele modele;
private Piece piece;
private String direction;
private String directionDest;
private int idDest;
private Uri photo;
private ActivityResultLauncher<Intent> launcher;
......@@ -58,6 +61,9 @@ public class AccesActivity extends AppCompatActivity {
this.piece = this.modele.getPieceCourante();
this.photo = getIntent().getParcelableExtra("photo");
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.setText(getString(R.string.acces, this.modele.getNom(), this.piece.getNom(), direction));
......@@ -69,14 +75,14 @@ public class AccesActivity extends AppCompatActivity {
Button ajouter = findViewById(R.id.boutonAcces);
ajouter.setOnClickListener(v -> {
imageView.setDrawing();
imageView.setDrawing(this.idDest);
});
imageView.setOnRectangleClickListener(new DrawableImageView.OnRectangleClickListener() {
@Override
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 {
private boolean isDrawingFinished = false;
private boolean fixed = false;
private boolean drawing = false;
private int id;
private OnRectangleClickListener listener;
public DrawableImageView(Context context, AttributeSet attrs) {
......@@ -108,7 +110,7 @@ public class DrawableImageView extends AppCompatImageView {
Math.min(startX, endX), Math.min(startY, endY),
Math.max(startX, endX), Math.max(startY, endY)
);
rectangles.put(rectangles.size(), rect);
rectangles.put(this.id, rect);
rectanglesTemp.clear();
fixed = true;
drawing=false;
......@@ -120,8 +122,9 @@ public class DrawableImageView extends AppCompatImageView {
return false;
}
public void setDrawing(){
public void setDrawing(int idDest){
drawing = true;
id = idDest;
}
public void setOnRectangleClickListener(OnRectangleClickListener listener) {
......
......@@ -28,6 +28,9 @@ import androidx.core.view.WindowInsetsCompat;
import java.io.File;
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.Piece;
......@@ -35,6 +38,7 @@ import fr.ul.projet.modele.Piece;
public class PieceActivity extends AppCompatActivity {
private Modele modele;
private Uri photo;
private Piece piece;
private ActivityResultLauncher<Intent> launcher;
private String directionSelectionne;
......@@ -106,7 +110,7 @@ public class PieceActivity extends AppCompatActivity {
this.modele = getIntent().getParcelableExtra("modele");
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 {
} else if (which == 1){
this.selectionnerPhoto();
} else if (which == 2){
Uri photo=null;
this.photo=null;
switch (directionSelectionne){
case "Nord":
photo = this.piece.getPhotoNord();
......@@ -204,19 +208,104 @@ public class PieceActivity extends AppCompatActivity {
if (photo != null){
Intent intent = new Intent(PieceActivity.this, AccesActivity.class);
intent.putExtra("modele", this.modele);
intent.putExtra("photo", photo);
intent.putExtra("direction", directionSelectionne);
launcher.launch(intent);
creationAcces();
}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();
}
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() {
// Obtenir le dossier de stockage des images
File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
......
......@@ -74,21 +74,21 @@ public class Modele implements Parcelable{
this.nom = in.readString();
this.orientationCourante = in.readString();
this.pieces = new HashMap<Integer, Piece>();
int size = in.readInt();
this.pieceCourante = in.readParcelable(Piece.class.getClassLoader());
if (pieceCourante != null){
this.pieces.put(this.pieceCourante.getId(), this.pieceCourante);
if (pieceCourante != null && this.pieces.containsValue(this.pieceCourante)){
this.pieces.remove(this.pieceCourante.getId());
}
int size = in.readInt();
for (int i = 0; i < size; i++){
int key = in.readInt();
if (key != this.pieceCourante.getId()){
Piece piece = in.readParcelable(Piece.class.getClassLoader());
this.pieces.put(key, piece);
}
Piece piece = in.readParcelable(Piece.class.getClassLoader());
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{
dest.writeString(this.fichierJson);
dest.writeString(this.nom);
dest.writeString(this.orientationCourante);
dest.writeInt(this.pieces.size());
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()){
dest.writeInt(entry.getKey());
dest.writeParcelable(entry.getValue(), flags);
......@@ -145,6 +149,15 @@ public class Modele implements Parcelable{
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
* @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