diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index dc8cfa34408dcff46292ff147a208ac82382aa75..ec21a8c5c5c222b79e1373dc955b988aef3e5f51 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -5,7 +5,11 @@ android:name="android.hardware.camera" android:required="true" /> - + <queries> + <intent> + <action android:name="android.media.action.IMAGE_CAPTURE" /> + </intent> + </queries> <application android:allowBackup="true" android:dataExtractionRules="@xml/data_extraction_rules" @@ -16,6 +20,7 @@ android:supportsRtl="true" android:theme="@style/Theme.PROJET" tools:targetApi="31"> + <provider android:name="androidx.core.content.FileProvider" android:authorities="fr.ul.projet.fileprovider" @@ -41,11 +46,14 @@ <activity android:name=".PieceActivity" android:exported="false"/> + <activity + android:name=".AccesActivity" + android:exported="false"/> </application> <uses-permission android:name="android.permission.CAMERA" android:required="true"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> - <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> + <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="28"/> </manifest> \ No newline at end of file diff --git a/app/src/main/java/fr/ul/projet/AccesActivity.java b/app/src/main/java/fr/ul/projet/AccesActivity.java new file mode 100644 index 0000000000000000000000000000000000000000..52828d7ef51818a9048017d7dc496c302009ae5e --- /dev/null +++ b/app/src/main/java/fr/ul/projet/AccesActivity.java @@ -0,0 +1,98 @@ +package fr.ul.projet; + +import android.content.DialogInterface; +import android.content.Intent; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.net.Uri; +import android.os.Bundle; +import android.os.Environment; +import android.provider.MediaStore; +import android.util.Log; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; +import android.widget.Toast; + +import androidx.activity.EdgeToEdge; +import androidx.activity.result.ActivityResult; +import androidx.activity.result.ActivityResultCallback; +import androidx.activity.result.ActivityResultLauncher; +import androidx.activity.result.contract.ActivityResultContracts; +import androidx.appcompat.app.AlertDialog; +import androidx.appcompat.app.AppCompatActivity; +import androidx.core.content.FileProvider; +import androidx.core.graphics.Insets; +import androidx.core.view.ViewCompat; +import androidx.core.view.WindowInsetsCompat; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; + +import fr.ul.projet.modele.Modele; +import fr.ul.projet.modele.Piece; + +public class AccesActivity extends AppCompatActivity { + + private Modele modele; + private Piece piece; + private String direction; + private Uri photo; + + private ActivityResultLauncher<Intent> launcher; + + + + @Override + protected void onCreate(Bundle savedInstanceState){ + super.onCreate(savedInstanceState); + EdgeToEdge.enable(this); + setContentView(R.layout.activity_acces); + + this.modele = getIntent().getParcelableExtra("modele"); + this.piece = this.modele.getPieceCourante(); + this.photo = getIntent().getParcelableExtra("photo"); + this.direction = getIntent().getExtras().getString("direction"); + + TextView textView = findViewById(R.id.textView2); + textView.setText(getString(R.string.acces, this.modele.getNom(), this.piece.getNom(), direction)); + + ImageView imageView = findViewById(R.id.imageView); + imageView.setImageURI(photo); + + ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.acces), (v, insets) -> { + Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()); + v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); + return insets; + }); + + this.launcher = registerForActivityResult( + new ActivityResultContracts.StartActivityForResult(), + new ActivityResultCallback<ActivityResult>() { + @Override + public void onActivityResult(ActivityResult result){ + + } + } + ); + + } + + + public void quit(View v){ + Intent res = new Intent(AccesActivity.this, MainActivity.class); + launcher.launch(res); + } + + public void backToPiece(View v){ + Intent res = new Intent(AccesActivity.this, PieceActivity.class); + res.putExtra("modele", this.modele); + res.putExtra("piece", this.piece); + launcher.launch(res); + } +} diff --git a/app/src/main/java/fr/ul/projet/ModeleActivity.java b/app/src/main/java/fr/ul/projet/ModeleActivity.java index 6e3783ec60bf4a439ab124e30d46697215c0c41e..3861279ae52857e2c8a06d44f58d5fefb4d8429d 100644 --- a/app/src/main/java/fr/ul/projet/ModeleActivity.java +++ b/app/src/main/java/fr/ul/projet/ModeleActivity.java @@ -98,7 +98,7 @@ public class ModeleActivity extends AppCompatActivity { @Override public void onClick(DialogInterface dialog, int which){ String userInput = input.getText().toString(); - modele.ajouterPiece(userInput, "", "", "", ""); + modele.ajouterPiece(userInput, null, null, null, null); Intent intent = new Intent(ModeleActivity.this, PieceActivity.class); intent.putExtra("modele", modele); launcher.launch(intent); diff --git a/app/src/main/java/fr/ul/projet/PieceActivity.java b/app/src/main/java/fr/ul/projet/PieceActivity.java index f4eb1b7dae6dd34d3878c1069d5751101852d5d6..912ac9e9f608a5c1841ea6a805a25463923cc732 100644 --- a/app/src/main/java/fr/ul/projet/PieceActivity.java +++ b/app/src/main/java/fr/ul/projet/PieceActivity.java @@ -8,8 +8,9 @@ import android.os.Environment; import android.provider.MediaStore; import android.util.Log; import android.view.View; +import android.widget.Button; import android.widget.EditText; -import android.widget.ImageView; +import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; @@ -26,6 +27,7 @@ import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; import java.io.File; +import java.io.IOException; import fr.ul.projet.modele.Modele; import fr.ul.projet.modele.Piece; @@ -33,58 +35,65 @@ import fr.ul.projet.modele.Piece; public class PieceActivity extends AppCompatActivity { private Modele modele; - private static final int NB_IMAGES = 4; - private int imageIndex = 0; private Piece piece; - private Uri photoUri; private ActivityResultLauncher<Intent> launcher; + private String directionSelectionne; + private Uri photoUri; + private String photoPath; private final ActivityResultLauncher<Intent> pickImageLauncher = registerForActivityResult( new ActivityResultContracts.StartActivityForResult(), result -> { - if (result.getResultCode() == RESULT_OK && result.getData() != null && imageIndex < NB_IMAGES) { + if (result.getResultCode() == RESULT_OK && result.getData() != null) { Uri imageUri = result.getData().getData(); if (imageUri != null) { - switch (imageIndex){ - case 0: - PieceActivity.this.piece.setPhotoNord(imageUri.getPath()); + switch (directionSelectionne){ + case "Nord": + this.modele.modifierPieceCourante(this.piece.getNom(), imageUri, this.piece.getPhotoSud(), this.piece.getPhotoEst(), this.piece.getPhotoOuest()); + //this.piece.setPhotoNord(imageUri); + Toast.makeText(this, "Photo Nord importée avec succés", Toast.LENGTH_LONG).show(); break; - case 1: - PieceActivity.this.piece.setPhotoSud(imageUri.getPath()); + case "Sud": + this.piece.setPhotoSud(imageUri); + Toast.makeText(this, "Photo Sud importée avec succés", Toast.LENGTH_LONG).show(); break; - case 2: - PieceActivity.this.piece.setPhotoEst(imageUri.getPath()); + case "Est": + this.piece.setPhotoEst(imageUri); + Toast.makeText(this, "Photo Est importée avec succés", Toast.LENGTH_LONG).show(); break; - case 3: - PieceActivity.this.piece.setPhotoOuest(imageUri.getPath()); + case "Ouest": + this.piece.setPhotoOuest(imageUri); + Toast.makeText(this, "Photo Ouest importée avec succés", Toast.LENGTH_LONG).show(); break; } } - imageIndex++; } }); private final ActivityResultLauncher<Intent> cameraLauncher = registerForActivityResult( new ActivityResultContracts.StartActivityForResult(), result -> { - if (result.getResultCode() == RESULT_OK && imageIndex < NB_IMAGES) { - ImageView imageView = findViewById(R.id.imageView); - imageView.setImageURI(this.photoUri); - /*switch (imageIndex){ - case 0: - PieceActivity.this.piece.setPhotoNord(photoUri.getPath()); + if (result.getResultCode() == RESULT_OK) { + + switch (directionSelectionne){ + case "Nord": + this.modele.modifierPieceCourante(this.piece.getNom(), this.photoUri, this.piece.getPhotoSud(), this.piece.getPhotoEst(), this.piece.getPhotoOuest()); + //this.piece.setPhotoNord(this.photoUri); + Toast.makeText(this, "Photo Nord importée avec succés", Toast.LENGTH_LONG).show(); break; - case 1: - PieceActivity.this.piece.setPhotoSud(photoUri.getPath()); + case "Sud": + this.piece.setPhotoSud(this.photoUri); + Toast.makeText(this, "Photo Sud importée avec succés", Toast.LENGTH_LONG).show(); break; - case 2: - PieceActivity.this.piece.setPhotoEst(photoUri.getPath()); + case "Est": + this.piece.setPhotoEst(this.photoUri); + Toast.makeText(this, "Photo Est importée avec succés", Toast.LENGTH_LONG).show(); break; - case 3: - PieceActivity.this.piece.setPhotoOuest(photoUri.getPath()); + case "Ouest": + this.piece.setPhotoOuest(this.photoUri); + Toast.makeText(this, "Photo Ouest importée avec succés", Toast.LENGTH_LONG).show(); break; - }*/ - imageIndex++; + } } }); @@ -94,35 +103,48 @@ public class PieceActivity extends AppCompatActivity { EdgeToEdge.enable(this); setContentView(R.layout.activity_piece); - String nomPiece = getIntent().getStringExtra("nomPiece"); this.modele = getIntent().getParcelableExtra("modele"); this.piece = this.modele.getPieceCourante(); + TextView textView = findViewById(R.id.nomPiece); - textView.setText(this.modele.getNom()+ " : " + this.piece.getNom()); - ImageView imageView = findViewById(R.id.imageView); - switch (this.modele.getOrientationCourante()){ + textView.setText(getString(R.string.piece_nom, this.modele.getNom(), this.piece.getNom())); + + LinearLayout photosContainer = findViewById(R.id.photos); + photosContainer.removeAllViews(); + + Button boutonNord = new Button(this); + boutonNord.setText(R.string.nord); + boutonNord.setOnClickListener(v -> { + this.directionSelectionne = "Nord"; + this.selectionImageDialog(); + this.piece.setValide(); + }); + photosContainer.addView(boutonNord); + Button boutonSud = new Button(this); + boutonSud.setText(R.string.sud); + boutonSud.setOnClickListener(v -> { + this.directionSelectionne = "Sud"; + this.selectionImageDialog(); + this.piece.setValide(); + }); + photosContainer.addView(boutonSud); + Button boutonEst = new Button(this); + boutonEst.setText(R.string.est); + boutonEst.setOnClickListener(v -> { + this.directionSelectionne = "Est"; + this.selectionImageDialog(); + this.piece.setValide(); + }); + photosContainer.addView(boutonEst); + Button boutonOuest = new Button(this); + boutonOuest.setText(R.string.ouest); + boutonOuest.setOnClickListener(v -> { + this.directionSelectionne = "Ouest"; + this.selectionImageDialog(); + this.piece.setValide(); + }); + photosContainer.addView(boutonOuest); - case "Nord": - if (!this.piece.getPhotoNord().equals("")){ - imageView.setImageURI(Uri.fromFile(new File(this.piece.getPhotoNord()))); - } - break; - case "Sud": - if (!this.piece.getPhotoNord().equals("")){ - imageView.setImageURI(Uri.fromFile(new File(this.piece.getPhotoSud()))); - } - break; - case "Est": - if (!this.piece.getPhotoNord().equals("")){ - imageView.setImageURI(Uri.fromFile(new File(this.piece.getPhotoEst()))); - } - break; - case "Ouest": - if (!this.piece.getPhotoNord().equals("")){ - imageView.setImageURI(Uri.fromFile(new File(this.piece.getPhotoOuest()))); - } - break; - } ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.piece), (v, insets) -> { Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()); @@ -135,55 +157,85 @@ public class PieceActivity extends AppCompatActivity { new ActivityResultCallback<ActivityResult>() { @Override public void onActivityResult(ActivityResult result){ - int resCode = result.getResultCode(); // Code retourné par l'activité - if (result.getResultCode() == RESULT_OK && result.getData() != null && imageIndex < NB_IMAGES){ - Uri imageUri = result.getData().getData(); - if (imageUri != null) { - switch (imageIndex){ - case 0: - PieceActivity.this.piece.setPhotoNord(imageUri.getPath()); - break; - case 1: - PieceActivity.this.piece.setPhotoSud(imageUri.getPath()); - break; - case 2: - PieceActivity.this.piece.setPhotoEst(imageUri.getPath()); - break; - case 3: - PieceActivity.this.piece.setPhotoOuest(imageUri.getPath()); - break; - } - } - } + } } ); } - public void selectionImageDialog(View v){ - if (imageIndex >= NB_IMAGES){ - Toast.makeText(this, "Vous avez déjà sélectionné 4 images", Toast.LENGTH_LONG).show(); - return; - } + public void selectionImageDialog(){ AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Choisir une option") - .setItems(new String[]{"Prendre une photo, Séléctionner une photo"}, (dialog, which) -> { + .setItems(new String[]{"Prendre une photo", "Séléctionner une photo", "Ajouter un accès","Annuler"}, (dialog, which) -> { if (which == 0){ this.prendrePhoto(); - } else{ + } else if (which == 1){ this.selectionnerPhoto(); + } else if (which == 2){ + Uri photo=null; + switch (directionSelectionne){ + case "Nord": + photo = this.piece.getPhotoNord(); + break; + case "Sud": + photo = this.piece.getPhotoSud(); + break; + case "Est": + photo = this.piece.getPhotoEst(); + break; + case "Ouest": + photo = this.piece.getPhotoOuest(); + break; + } + + if (photo != null){ + Intent intent = new Intent(PieceActivity.this, AccesActivity.class); + intent.putExtra("modele", modele); + intent.putExtra("photo", photo); + intent.putExtra("direction", directionSelectionne); + launcher.launch(intent); + }else{ + Toast.makeText(this, "Vous devez ajouter la photo avant d'ajouter un accés", Toast.LENGTH_LONG).show(); + } } }) .show(); } - private void prendrePhoto(){ - File photo = new File(getExternalFilesDir(Environment.DIRECTORY_PICTURES), "photo_" + System.currentTimeMillis() + ".jpg"); - this.photoUri = FileProvider.getUriForFile(this, getApplicationContext().getPackageName() + ".fileprovider", photo); - Intent camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); - camera.putExtra(MediaStore.EXTRA_OUTPUT, this.photoUri); - cameraLauncher.launch(camera); + private void prendrePhoto() { + // Obtenir le dossier de stockage des images + File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES); + if (storageDir != null && !storageDir.exists()) { + storageDir.mkdirs(); // Créer le dossier s'il n'existe pas + } + + // Créer un fichier unique avec un nom basé sur l'horodatage + File photoFile = new File(storageDir, "photo_" + System.currentTimeMillis() + ".jpg"); + photoPath = photoFile.getAbsolutePath(); // Stocker le chemin absolu + + try { + boolean created = photoFile.createNewFile(); + Log.i("CREATION", created ? "SUCCÈS" : "ÉCHEC"); + } catch (IOException e) { + Log.e("ERREUR", "Erreur lors de la création du fichier : " + e.getMessage()); + } + + // Vérifier que le fichier a bien été créé + if (photoFile.exists() && photoFile.canWrite()) { + photoUri = FileProvider.getUriForFile(this, getApplicationContext().getPackageName() + ".fileprovider", photoFile); + Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); + cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri); + + // Vérifier que l'appareil a une caméra avant de lancer l'intent + if (cameraIntent.resolveActivity(getPackageManager()) != null) { + cameraLauncher.launch(cameraIntent); + } else { + Toast.makeText(this, "Aucune application de caméra trouvée", Toast.LENGTH_SHORT).show(); + } + } else { + Toast.makeText(this, "Impossible de créer l'image", Toast.LENGTH_SHORT).show(); + } } private void selectionnerPhoto(){ @@ -192,33 +244,6 @@ public class PieceActivity extends AppCompatActivity { pickImageLauncher.launch(intent); } - public void nouvellePiece(View v){ - AlertDialog.Builder builder = new AlertDialog.Builder(this); - builder.setTitle("Entrez un nom pour votre pièce"); - - final EditText input = new EditText(this); - builder.setView(input); - - // Bouton de validation - builder.setPositiveButton("OK", new DialogInterface.OnClickListener(){ - @Override - public void onClick(DialogInterface dialog, int which){ - String userInput = input.getText().toString(); - Intent intent = new Intent(PieceActivity.this, PieceActivity.class); - intent.putExtra("nomPiece", userInput); - launcher.launch(intent); - } - }); - - // Bouton d'annulatiopn - builder.setNegativeButton("Annuler", new DialogInterface.OnClickListener(){ - @Override - public void onClick(DialogInterface dialog, int which){ - dialog.cancel(); - } - }); - builder.show(); - } public void quit(View v){ Intent res = new Intent(PieceActivity.this, MainActivity.class); diff --git a/app/src/main/java/fr/ul/projet/modele/Modele.java b/app/src/main/java/fr/ul/projet/modele/Modele.java index 6b9de199d08871ef01c32d33f36a8e73f98ad8c0..5d03ec8cdaadd166c48760c3b149b3cb905d199c 100644 --- a/app/src/main/java/fr/ul/projet/modele/Modele.java +++ b/app/src/main/java/fr/ul/projet/modele/Modele.java @@ -230,7 +230,7 @@ public class Modele implements Parcelable{ * @param photoEst Chemin vers la photo représentant l'orientation Est de la pièce * @param photoOuest Chemin vers la photo représentant l'orientation Ouest de la pièce */ - public void ajouterPiece(String nom, String photoNord, String photoSud, String photoEst, String photoOuest){ + public void ajouterPiece(String nom, Uri photoNord, Uri photoSud, Uri photoEst, Uri photoOuest){ Piece piece = new Piece(nom, photoNord, photoSud, photoEst, photoOuest); this.pieces.put(piece.getId(), piece); this.setPieceCourante(piece); @@ -244,7 +244,7 @@ public class Modele implements Parcelable{ * @param photoEst Chemin vers la photo représentant l'orientation Est de la pièce * @param photoOuest Chemin vers la photo représentant l'orientation Ouest de la pièce */ - public void modifierPieceCourante(String nom, String photoNord, String photoSud, String photoEst, String photoOuest){ + public void modifierPieceCourante(String nom, Uri photoNord, Uri photoSud, Uri photoEst, Uri photoOuest){ this.getPieceCourante().setNom(nom); this.getPieceCourante().setPhotoNord(photoNord); this.getPieceCourante().setPhotoSud(photoSud); @@ -404,10 +404,10 @@ public class Modele implements Parcelable{ Piece piece = new Piece(); piece.setId(pieceJson.getInt("id")); piece.setNom(pieceJson.getString("nom")); - piece.setPhotoNord(pieceJson.getString("cheminPhotoNord")); - piece.setPhotoSud(pieceJson.getString("cheminPhotoSud")); - piece.setPhotoEst(pieceJson.getString("cheminPhotoEst")); - piece.setPhotoOuest(pieceJson.getString("cheminPhotoOuest")); + piece.setPhotoNord(Uri.parse(pieceJson.getString("cheminPhotoNord"))); + piece.setPhotoSud(Uri.parse(pieceJson.getString("cheminPhotoSud"))); + piece.setPhotoEst(Uri.parse(pieceJson.getString("cheminPhotoEst"))); + piece.setPhotoOuest(Uri.parse(pieceJson.getString("cheminPhotoOuest"))); this.pieces.put(piece.getId(), piece); Log.i("nom piece", piece.getNom()); } diff --git a/app/src/main/java/fr/ul/projet/modele/Piece.java b/app/src/main/java/fr/ul/projet/modele/Piece.java index 0afa50612588fe9050a77a82eeb5120057c25375..c8f5e17567046698d94fed2814b1455428f6e9e2 100644 --- a/app/src/main/java/fr/ul/projet/modele/Piece.java +++ b/app/src/main/java/fr/ul/projet/modele/Piece.java @@ -1,5 +1,6 @@ package fr.ul.projet.modele; +import android.net.Uri; import android.os.Parcel; import android.os.Parcelable; @@ -14,12 +15,14 @@ public class Piece implements Parcelable { private int id; String nom; - String photoNord, photoSud, photoEst, photoOuest; + Uri photoNord, photoSud, photoEst, photoOuest; HashMap<Integer, Acces> acces; + boolean valide; - public Piece(String nom, String photoNord, String photoSud, String photoEst, String photoOuest){ + + public Piece(String nom, Uri photoNord, Uri photoSud, Uri photoEst, Uri photoOuest){ this.id = FabriqueIdentifiant.getInstance().getIdentifiantPiece(); this.photoNord = photoNord; this.photoSud = photoSud; @@ -27,25 +30,27 @@ public class Piece implements Parcelable { this.photoOuest = photoOuest; this.nom = nom; this.acces = new HashMap<Integer, Acces>(); + this.setValide(); } public Piece(){ this.id = FabriqueIdentifiant.getInstance().getIdentifiantPiece(); - this.photoNord = ""; - this.photoSud = ""; - this.photoEst = ""; - this.photoOuest = ""; + this.photoNord = null; + this.photoSud = null; + this.photoEst = null; + this.photoOuest = null; this.nom = ""; this.acces = new HashMap<Integer, Acces>(); + this.setValide(); } protected Piece(Parcel in){ this.id = in.readInt(); this.nom = in.readString(); - this.photoNord = in.readString(); - this.photoSud = in.readString(); - this.photoEst = in.readString(); - this.photoOuest = in.readString(); + this.photoNord = in.readParcelable(Uri.class.getClassLoader()); + this.photoSud = in.readParcelable(Uri.class.getClassLoader()); + this.photoEst = in.readParcelable(Uri.class.getClassLoader()); + this.photoOuest = in.readParcelable(Uri.class.getClassLoader()); this.acces = new HashMap<Integer, Acces>(); int size = in.readInt(); for (int i = 0; i < size; i++){ @@ -71,10 +76,10 @@ public class Piece implements Parcelable { public void writeToParcel(Parcel dest, int flags){ dest.writeInt(this.id); dest.writeString(this.nom); - dest.writeString(this.photoNord); - dest.writeString(this.photoSud); - dest.writeString(this.photoEst); - dest.writeString(this.photoOuest); + dest.writeParcelable(this.photoNord, flags); + dest.writeParcelable(this.photoSud, flags); + dest.writeParcelable(this.photoEst, flags); + dest.writeParcelable(this.photoOuest, flags); dest.writeInt(this.acces.size()); for (Map.Entry<Integer, Acces> entry : this.acces.entrySet()){ dest.writeInt(entry.getKey()); @@ -95,6 +100,19 @@ public class Piece implements Parcelable { this.id = i; } + public boolean isValide(){ + return this.valide; + } + + public void setValide(){ + + if (this.getPhotoNord() != null || this.getPhotoSud() != null || this.getPhotoEst() != null || this.getPhotoOuest() != null){ + this.valide = true; + }else { + this.valide = false; + } + } + public String getNom() { return this.nom; } @@ -103,32 +121,32 @@ public class Piece implements Parcelable { this.nom = nom; } - public String getPhotoNord() { + public Uri getPhotoNord() { return this.photoNord; } - public void setPhotoNord(String photoNord){ + public void setPhotoNord(Uri photoNord){ this.photoNord = photoNord; } - public String getPhotoEst() { + public Uri getPhotoEst() { return this.photoEst; } - public void setPhotoEst(String photoEst){ + public void setPhotoEst(Uri photoEst){ this.photoEst = photoEst; } - public String getPhotoSud() { + public Uri getPhotoSud() { return this.photoSud; } - public void setPhotoSud(String photoSud){ + public void setPhotoSud(Uri photoSud){ this.photoSud = photoSud; } - public String getPhotoOuest(){ + public Uri getPhotoOuest(){ return this.photoOuest; } - public void setPhotoOuest(String photoOuest){ + public void setPhotoOuest(Uri photoOuest){ this.photoOuest = photoOuest; } @@ -151,10 +169,10 @@ public class Piece implements Parcelable { try{ piece.put("id", this.getId()); piece.put("nom", this.getNom()); - piece.put("cheminPhotoNord", this.getPhotoNord()); - piece.put("cheminPhotoSud", this.getPhotoSud()); - piece.put("cheminPhotoEst", this.getPhotoEst()); - piece.put("cheminPhotoOuest", this.getPhotoOuest()); + piece.put("cheminPhotoNord", this.getPhotoNord().getPath()); + piece.put("cheminPhotoSud", this.getPhotoSud().getPath()); + piece.put("cheminPhotoEst", this.getPhotoEst().getPath()); + piece.put("cheminPhotoOuest", this.getPhotoOuest().getPath()); } catch (Exception e) { e.printStackTrace(); } diff --git a/app/src/main/res/layout/activity_acces.xml b/app/src/main/res/layout/activity_acces.xml new file mode 100644 index 0000000000000000000000000000000000000000..4a5f3d4c263e9f32dd1b47d34eca61e4dfde38e5 --- /dev/null +++ b/app/src/main/res/layout/activity_acces.xml @@ -0,0 +1,56 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:id="@+id/acces" + android:layout_height="match_parent"> + + <Button + android:id="@+id/boutonRetour2" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:onClick="backToPiece" + android:text="@string/backPiece" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintHorizontal_bias="0.498" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.866" /> + + <Button + android:id="@+id/boutonAccueil2" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:onClick="quit" + android:text="@string/quitter" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintHorizontal_bias="0.498" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.951" /> + + <ImageView + android:id="@+id/imageView" + android:layout_width="399dp" + android:layout_height="248dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + tools:srcCompat="@tools:sample/backgrounds/scenic" /> + + <TextView + android:id="@+id/textView2" + android:layout_width="222dp" + android:layout_height="45dp" + android:textSize="24sp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintHorizontal_bias="0.498" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.254" /> +</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_piece.xml b/app/src/main/res/layout/activity_piece.xml index 1c4ee93cb881a39a527be05b6d8963bca3e254d7..bff8bc723b209ecce553f20c431c43abc727079d 100644 --- a/app/src/main/res/layout/activity_piece.xml +++ b/app/src/main/res/layout/activity_piece.xml @@ -45,26 +45,17 @@ app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.951" /> - <ImageView - android:id="@+id/imageView" - android:layout_width="379dp" - android:layout_height="263dp" + <LinearLayout + android:id="@+id/photos" + android:layout_width="359dp" + android:layout_height="266dp" + android:orientation="vertical" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" - tools:srcCompat="@tools:sample/backgrounds/scenic" /> + app:layout_constraintVertical_bias="0.404"> + + </LinearLayout> - <Button - android:id="@+id/button" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:onClick="selectionImageDialog" - android:text="Button" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintHorizontal_bias="0.498" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintVertical_bias="0.25" /> </androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e7234d130d55ee80a9d8f302ccc7601d26704b34..4fa53b305d17d066f0a26072531bb2462969b46b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -6,6 +6,13 @@ <string name="ouvrir_mess">Modèle correctement importé</string> <string name="quitter">Retour à l\'accueil</string> <string name="accueil">Retour au modèle</string> + <string name="backPiece">Retour à la pièce</string> <string name="creer_piece">Ajouter un pièce</string> <string name="sauvegarder">Sauvegarder le modèle</string> + <string name="nord">Photo Nord</string> + <string name="sud">Photo Sud</string> + <string name="est">Photo Est</string> + <string name="ouest">Photo Ouest</string> + <string name="piece_nom">%1$s : %2$s</string> + <string name="acces">%1$s : %2$s (%3$s)</string> </resources> \ No newline at end of file diff --git a/app/src/main/res/xml/file_paths.xml b/app/src/main/res/xml/file_paths.xml index 8e9109d13fc2e4e3fc5ef499c08aa6ddbe0e20c2..a01ef46df280492f539b397fa7452744727ad9c3 100644 --- a/app/src/main/res/xml/file_paths.xml +++ b/app/src/main/res/xml/file_paths.xml @@ -1,7 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <paths xmlns:android="http://schemas.android.com/apk/res/android"> - <!-- Spécifie les chemins des fichiers partagés --> - <external-path - name="external_files" - path="." /> + <external-files-path + name="images" + path="Pictures/" /> </paths> \ No newline at end of file