From 150d254d75cd7890b91fa6891942cbac4475ece9 Mon Sep 17 00:00:00 2001 From: collinot4u <baptiste.collinot1@etu.univ-lorraine.fr> Date: Mon, 11 Dec 2023 18:19:00 +0100 Subject: [PATCH] V3 --- .../visualisation/PieceDetailsActivity.java | 69 ++++++++++++++++++- .../res/layout/activity_piece_details.xml | 8 +++ 2 files changed, 76 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/example/visualisation/PieceDetailsActivity.java b/app/src/main/java/com/example/visualisation/PieceDetailsActivity.java index 4aa0a6b..ffab39f 100644 --- a/app/src/main/java/com/example/visualisation/PieceDetailsActivity.java +++ b/app/src/main/java/com/example/visualisation/PieceDetailsActivity.java @@ -1,6 +1,7 @@ package com.example.visualisation; import android.Manifest; +import android.annotation.SuppressLint; import android.content.Intent; import android.content.pm.PackageManager; import android.graphics.Bitmap; @@ -13,6 +14,7 @@ import android.graphics.PorterDuff; import android.graphics.Rect; import android.os.Bundle; import android.util.Log; +import android.view.MotionEvent; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.View; @@ -30,10 +32,12 @@ public class PieceDetailsActivity extends AppCompatActivity implements SurfaceHo private static final int REQUEST_WRITE_EXTERNAL_STORAGE = 1; private TextView nomPiece; + private TextView orientation; private ImageView imageView; private Modele modele; private Piece piece; private int indicePhoto; + private Photo photo; private SurfaceView surfaceView; private SurfaceHolder surfaceHolder; private Paint paint; @@ -46,6 +50,7 @@ public class PieceDetailsActivity extends AppCompatActivity implements SurfaceHo setContentView(R.layout.activity_piece_details); nomPiece = findViewById(R.id.nomPiece); + orientation = findViewById(R.id.orientation); imageView = findViewById(R.id.imageView); indicePhoto = 0; @@ -55,6 +60,7 @@ public class PieceDetailsActivity extends AppCompatActivity implements SurfaceHo modele = (Modele) intent.getSerializableExtra("modele"); piece = (Piece) intent.getSerializableExtra("piece"); nomPiece.setText(piece.getNom()); + photo = piece.getPhoto(indicePhoto); } surfaceView = findViewById(R.id.surfaceView); @@ -70,6 +76,8 @@ public class PieceDetailsActivity extends AppCompatActivity implements SurfaceHo paint.setStyle(Paint.Style.STROKE); afficherPhoto(); + + } private void dessinerRect() { @@ -79,7 +87,7 @@ public class PieceDetailsActivity extends AppCompatActivity implements SurfaceHo if (canvas != null) { try { canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR); - Photo photo = piece.getPhoto(indicePhoto); + photo = piece.getPhoto(indicePhoto); for (Acces acces : photo.getAcces()) { Log.d("a", "" + acces.getPiece()); int[] coord = acces.getCoord(); @@ -138,6 +146,7 @@ public class PieceDetailsActivity extends AppCompatActivity implements SurfaceHo } } dessinerRect(); + setOrientation(); } @Override @@ -155,6 +164,44 @@ public class PieceDetailsActivity extends AppCompatActivity implements SurfaceHo @Override public void surfaceCreated(@NonNull SurfaceHolder holder) { dessinerRect(); + surfaceView.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + int action = event.getAction(); + float touchX = event.getX(); + float touchY = event.getY(); + + switch (action) { + case MotionEvent.ACTION_DOWN: + for (Acces acces : photo.getAcces()) { + int[] coord = acces.getCoord(); + Rect accesRect = new Rect(coord[0], coord[1], coord[2], coord[3]); + + if (accesRect.contains((int) touchX, (int) touchY)) { + String accesPiece = acces.getPiece(); + + Piece nouvellePiece = null; + for (Piece p : modele) { + if (p.getNom().equals(accesPiece)) { + nouvellePiece = p; + break; + } + } + if (nouvellePiece != null) { + piece = nouvellePiece; + nomPiece.setText(piece.getNom()); + afficherPhoto(); + } + + break; + } + } + break; + } + + return true; + } + }); } @Override @@ -166,4 +213,24 @@ public class PieceDetailsActivity extends AppCompatActivity implements SurfaceHo public void surfaceDestroyed(@NonNull SurfaceHolder holder) { } + + private void setOrientation() { + switch (indicePhoto) { + case 0 : + orientation.setText("NORD"); + break; + case 1 : + orientation.setText("EST"); + break; + case 2 : + orientation.setText("SUD"); + break; + case 3 : + orientation.setText("OUEST"); + break; + default: + orientation.setText("ORIENTATION"); + break; + } + } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_piece_details.xml b/app/src/main/res/layout/activity_piece_details.xml index 908157d..079017a 100644 --- a/app/src/main/res/layout/activity_piece_details.xml +++ b/app/src/main/res/layout/activity_piece_details.xml @@ -67,6 +67,14 @@ </LinearLayout> + <TextView + android:id="@+id/orientation" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="Orientation" + android:textSize="24sp" + android:gravity="center_horizontal" /> + </LinearLayout> </androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file -- GitLab