diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index 26d33521af10bcc7fd8cea344038eaaeb78d0ef5..0000000000000000000000000000000000000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 412a64606d15346ba167189b4b4e6ae9a732e451..c24b221700b99ac03d63c759e944aec46c1cea6e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,6 +2,16 @@ <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> + <uses-feature + android:name="android.hardware.camera" + android:required="false" /> + + <uses-permission android:name="android.permission.CAMERA"/> + <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" + android:maxSdkVersion="32" /> + <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" + android:maxSdkVersion="32" /> + <application android:allowBackup="true" android:dataExtractionRules="@xml/data_extraction_rules" @@ -23,6 +33,21 @@ <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> + + <activity android:name=".CreateModelActivity" android:exported="true"/> + <activity android:name=".LoadModelActivity" android:exported="true"/> + <activity android:name=".AddPhotosActivity" android:exported="true"/> + + <provider + android:name="androidx.core.content.FileProvider" + android:authorities="${applicationId}.provider" + android:exported="false" + android:grantUriPermissions="true"> + <meta-data + android:name="android.support.FILE_PROVIDER_PATHS" + android:resource="@xml/file_paths" /> + </provider> + </application> </manifest> \ No newline at end of file diff --git a/app/src/main/java/fr/ul/projetdevmob/AddPhotosActivity.java b/app/src/main/java/fr/ul/projetdevmob/AddPhotosActivity.java new file mode 100644 index 0000000000000000000000000000000000000000..41761b7a37ae0cb298fb890f9e04773a726bc157 --- /dev/null +++ b/app/src/main/java/fr/ul/projetdevmob/AddPhotosActivity.java @@ -0,0 +1,94 @@ +package fr.ul.projetdevmob; + +import android.content.Intent; +import android.net.Uri; +import android.os.Bundle; +import android.os.Environment; +import android.provider.MediaStore; +import android.view.View; +import android.widget.Button; +import android.widget.Toast; +import androidx.appcompat.app.AppCompatActivity; +import androidx.core.content.FileProvider; +import java.io.File; +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import fr.ul.projetdevmob.model.ImageMur; +import fr.ul.projetdevmob.model.Piece; + +public class AddPhotosActivity extends AppCompatActivity { + + private static final int REQUEST_IMAGE_CAPTURE = 1; + + private String currentOrientation; + private String currentPhotoPath; + + private HashMap<String, String> photoPaths = new HashMap<>(); // pour stocker N, S, E, O + + private String pieceName; // nom de la pièce à récupérer + private Piece currentPiece; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_add_photos); + + // récupérer le nom de la pièce depuis l’activité précédente + pieceName = getIntent().getStringExtra("nom_piece"); + currentPiece = new Piece(pieceName); + + // lier les boutons + Button btnN = findViewById(R.id.btnPhotoN); + Button btnS = findViewById(R.id.btnPhotoS); + Button btnE = findViewById(R.id.btnPhotoE); + Button btnO = findViewById(R.id.btnPhotoO); + + btnN.setOnClickListener(v -> takePhoto("N")); + btnS.setOnClickListener(v -> takePhoto("S")); + btnE.setOnClickListener(v -> takePhoto("E")); + btnO.setOnClickListener(v -> takePhoto("O")); + } + + private void takePhoto(String orientation) { + currentOrientation = orientation; + Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); + + if (takePictureIntent.resolveActivity(getPackageManager()) != null) { + File photoFile = null; + try { + photoFile = createImageFile(); + } catch (IOException ex) { + Toast.makeText(this, "Erreur création image", Toast.LENGTH_SHORT).show(); + } + + if (photoFile != null) { + Uri photoURI = FileProvider.getUriForFile(this, + getPackageName() + ".provider", photoFile); + takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI); + startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE); + } + } + } + + private File createImageFile() throws IOException { + String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); + String fileName = "IMG_" + currentOrientation + "_" + timeStamp; + File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES); + File image = File.createTempFile(fileName, ".jpg", storageDir); + currentPhotoPath = image.getAbsolutePath(); + return image; + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + + if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { + photoPaths.put(currentOrientation, currentPhotoPath); + currentPiece.ajouterImage(currentOrientation, new ImageMur(currentPhotoPath)); + Toast.makeText(this, "Photo " + currentOrientation + " enregistrée !", Toast.LENGTH_SHORT).show(); + } + } +} diff --git a/app/src/main/java/fr/ul/projetdevmob/CreateModelActivity.java b/app/src/main/java/fr/ul/projetdevmob/CreateModelActivity.java new file mode 100644 index 0000000000000000000000000000000000000000..12babce4b0afa5e7bc6678e95725e4efc410f9d1 --- /dev/null +++ b/app/src/main/java/fr/ul/projetdevmob/CreateModelActivity.java @@ -0,0 +1,68 @@ +package fr.ul.projetdevmob; + +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.TextView; +import androidx.appcompat.app.AlertDialog; +import androidx.appcompat.app.AppCompatActivity; +import fr.ul.projetdevmob.model.Modele; +import fr.ul.projetdevmob.model.Piece; + +public class CreateModelActivity extends AppCompatActivity { + + private EditText editModelName; + private Button btnAddPiece; + private TextView txtPiecesList; + + private Modele modele; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_create_model); + + editModelName = findViewById(R.id.editModelName); + btnAddPiece = findViewById(R.id.btnAddPiece); + txtPiecesList = findViewById(R.id.txtPiecesList); + + modele = new Modele("Sans nom"); + + btnAddPiece.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + String nomModele = editModelName.getText().toString(); + if (!nomModele.isEmpty()) { + modele = new Modele(nomModele); + } + + showAddPieceDialog(); + } + }); + } + + private void showAddPieceDialog() { + final EditText input = new EditText(this); + input.setHint("Nom de la pièce"); + + new AlertDialog.Builder(this) + .setTitle("Ajouter une pièce") + .setView(input) + .setPositiveButton("Ajouter", (dialog, which) -> { + String pieceName = input.getText().toString(); + if (!pieceName.isEmpty()) { + Piece piece = new Piece(pieceName); + modele.ajouterPiece(piece); + txtPiecesList.setText("Pièces : " + modele.getPieces().size()); + + Intent intent = new Intent(CreateModelActivity.this, AddPhotosActivity.class); + intent.putExtra("nom_piece", pieceName); + startActivity(intent); + } + }) + .setNegativeButton("Annuler", null) + .show(); + } +} diff --git a/app/src/main/java/fr/ul/projetdevmob/LoadModelActivity.java b/app/src/main/java/fr/ul/projetdevmob/LoadModelActivity.java new file mode 100644 index 0000000000000000000000000000000000000000..70d8577d8291e14cb9516d8f28324650e63afa8d --- /dev/null +++ b/app/src/main/java/fr/ul/projetdevmob/LoadModelActivity.java @@ -0,0 +1,12 @@ +package fr.ul.projetdevmob; + +import android.os.Bundle; +import androidx.appcompat.app.AppCompatActivity; + +public class LoadModelActivity extends AppCompatActivity { + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_load_model); + } +} \ No newline at end of file diff --git a/app/src/main/java/fr/ul/projetdevmob/MainActivity.kt b/app/src/main/java/fr/ul/projetdevmob/MainActivity.kt deleted file mode 100644 index 6cdb55c286baa079d602ac40eeda5505dca9f758..0000000000000000000000000000000000000000 --- a/app/src/main/java/fr/ul/projetdevmob/MainActivity.kt +++ /dev/null @@ -1,47 +0,0 @@ -package fr.ul.projetdevmob - -import android.os.Bundle -import androidx.activity.ComponentActivity -import androidx.activity.compose.setContent -import androidx.activity.enableEdgeToEdge -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.padding -import androidx.compose.material3.Scaffold -import androidx.compose.material3.Text -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import androidx.compose.ui.tooling.preview.Preview -import fr.ul.projetdevmob.ui.theme.ProjetdevmobTheme - -class MainActivity : ComponentActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - enableEdgeToEdge() - setContent { - ProjetdevmobTheme { - Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding -> - Greeting( - name = "Android", - modifier = Modifier.padding(innerPadding) - ) - } - } - } - } -} - -@Composable -fun Greeting(name: String, modifier: Modifier = Modifier) { - Text( - text = "Hello $name!", - modifier = modifier - ) -} - -@Preview(showBackground = true) -@Composable -fun GreetingPreview() { - ProjetdevmobTheme { - Greeting("Android") - } -} \ No newline at end of file diff --git a/app/src/main/java/fr/ul/projetdevmob/model/Acces.java b/app/src/main/java/fr/ul/projetdevmob/model/Acces.java new file mode 100644 index 0000000000000000000000000000000000000000..adbe05e789162af3ab416219f1010a3425b506f5 --- /dev/null +++ b/app/src/main/java/fr/ul/projetdevmob/model/Acces.java @@ -0,0 +1,20 @@ +package fr.ul.projetdevmob.model; + +public class Acces { + private int x, y, width, height; // zone cliquable + private String destination; // nom de la pièce cible + + public Acces(int x, int y, int width, int height, String destination) { + this.x = x; + this.y = y; + this.width = width; + this.height = height; + this.destination = destination; + } + + public int getX() { return x; } + public int getY() { return y; } + public int getWidth() { return width; } + public int getHeight() { return height; } + public String getDestination() { return destination; } +} diff --git a/app/src/main/java/fr/ul/projetdevmob/model/ImageMur.java b/app/src/main/java/fr/ul/projetdevmob/model/ImageMur.java new file mode 100644 index 0000000000000000000000000000000000000000..f1621767033efe121ef48754c5607d1b87dd77f4 --- /dev/null +++ b/app/src/main/java/fr/ul/projetdevmob/model/ImageMur.java @@ -0,0 +1,21 @@ +package fr.ul.projetdevmob.model; + +import java.util.ArrayList; +import java.util.List; + +public class ImageMur { + private String path; // chemin de l'image + private List<Acces> accesList; + + public ImageMur(String path) { + this.path = path; + this.accesList = new ArrayList<>(); + } + + public String getPath() { return path; } + public List<Acces> getAccesList() { return accesList; } + + public void ajouterAcces(Acces acces) { + accesList.add(acces); + } +} diff --git a/app/src/main/java/fr/ul/projetdevmob/model/Modele.java b/app/src/main/java/fr/ul/projetdevmob/model/Modele.java new file mode 100644 index 0000000000000000000000000000000000000000..e8425135a6957d5377eecf9e5f5ee91ed62387b5 --- /dev/null +++ b/app/src/main/java/fr/ul/projetdevmob/model/Modele.java @@ -0,0 +1,22 @@ +package fr.ul.projetdevmob.model; + +import java.util.ArrayList; +import java.util.List; + +public class Modele { + private String nom; + private List<Piece> pieces; + + public Modele(String nom) { + this.nom = nom; + this.pieces = new ArrayList<>(); + } + + public String getNom() { return nom; } + public List<Piece> getPieces() { return pieces; } + + public void ajouterPiece(Piece piece) { + pieces.add(piece); + } +} + diff --git a/app/src/main/java/fr/ul/projetdevmob/model/Piece.java b/app/src/main/java/fr/ul/projetdevmob/model/Piece.java new file mode 100644 index 0000000000000000000000000000000000000000..5ee395c5e54c2fa1e1a9c5bd2bb75b145bad45cc --- /dev/null +++ b/app/src/main/java/fr/ul/projetdevmob/model/Piece.java @@ -0,0 +1,28 @@ +package fr.ul.projetdevmob.model; + +import java.util.HashMap; +import java.util.Map; + +public class Piece { + private String nom; + private Map<String, ImageMur> images; // "N", "S", "E", "O" + + public Piece(String nom) { + this.nom = nom; + this.images = new HashMap<>(); + } + + public String getNom() { return nom; } + + public void ajouterImage(String orientation, ImageMur image) { + images.put(orientation, image); + } + + public ImageMur getImage(String orientation) { + return images.get(orientation); + } + + public Map<String, ImageMur> getImages() { + return images; + } +} diff --git a/app/src/main/java/fr/ul/projetdevmob/ui/theme/Color.kt b/app/src/main/java/fr/ul/projetdevmob/ui/theme/Color.kt deleted file mode 100644 index 97ccf1653345bfaca9e53a42ae05a40219b3dcc0..0000000000000000000000000000000000000000 --- a/app/src/main/java/fr/ul/projetdevmob/ui/theme/Color.kt +++ /dev/null @@ -1,11 +0,0 @@ -package fr.ul.projetdevmob.ui.theme - -import androidx.compose.ui.graphics.Color - -val Purple80 = Color(0xFFD0BCFF) -val PurpleGrey80 = Color(0xFFCCC2DC) -val Pink80 = Color(0xFFEFB8C8) - -val Purple40 = Color(0xFF6650a4) -val PurpleGrey40 = Color(0xFF625b71) -val Pink40 = Color(0xFF7D5260) \ No newline at end of file diff --git a/app/src/main/java/fr/ul/projetdevmob/ui/theme/Theme.kt b/app/src/main/java/fr/ul/projetdevmob/ui/theme/Theme.kt deleted file mode 100644 index ef34a52f5f60c51532c73fe9a1120f18c9d0208d..0000000000000000000000000000000000000000 --- a/app/src/main/java/fr/ul/projetdevmob/ui/theme/Theme.kt +++ /dev/null @@ -1,58 +0,0 @@ -package fr.ul.projetdevmob.ui.theme - -import android.app.Activity -import android.os.Build -import androidx.compose.foundation.isSystemInDarkTheme -import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.darkColorScheme -import androidx.compose.material3.dynamicDarkColorScheme -import androidx.compose.material3.dynamicLightColorScheme -import androidx.compose.material3.lightColorScheme -import androidx.compose.runtime.Composable -import androidx.compose.ui.platform.LocalContext - -private val DarkColorScheme = darkColorScheme( - primary = Purple80, - secondary = PurpleGrey80, - tertiary = Pink80 -) - -private val LightColorScheme = lightColorScheme( - primary = Purple40, - secondary = PurpleGrey40, - tertiary = Pink40 - - /* Other default colors to override - background = Color(0xFFFFFBFE), - surface = Color(0xFFFFFBFE), - onPrimary = Color.White, - onSecondary = Color.White, - onTertiary = Color.White, - onBackground = Color(0xFF1C1B1F), - onSurface = Color(0xFF1C1B1F), - */ -) - -@Composable -fun ProjetdevmobTheme( - darkTheme: Boolean = isSystemInDarkTheme(), - // Dynamic color is available on Android 12+ - dynamicColor: Boolean = true, - content: @Composable () -> Unit -) { - val colorScheme = when { - dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> { - val context = LocalContext.current - if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context) - } - - darkTheme -> DarkColorScheme - else -> LightColorScheme - } - - MaterialTheme( - colorScheme = colorScheme, - typography = Typography, - content = content - ) -} \ No newline at end of file diff --git a/app/src/main/java/fr/ul/projetdevmob/ui/theme/Type.kt b/app/src/main/java/fr/ul/projetdevmob/ui/theme/Type.kt deleted file mode 100644 index 2a2bfe464387e71baf9be38a5667fe9f4dcb5784..0000000000000000000000000000000000000000 --- a/app/src/main/java/fr/ul/projetdevmob/ui/theme/Type.kt +++ /dev/null @@ -1,34 +0,0 @@ -package fr.ul.projetdevmob.ui.theme - -import androidx.compose.material3.Typography -import androidx.compose.ui.text.TextStyle -import androidx.compose.ui.text.font.FontFamily -import androidx.compose.ui.text.font.FontWeight -import androidx.compose.ui.unit.sp - -// Set of Material typography styles to start with -val Typography = Typography( - bodyLarge = TextStyle( - fontFamily = FontFamily.Default, - fontWeight = FontWeight.Normal, - fontSize = 16.sp, - lineHeight = 24.sp, - letterSpacing = 0.5.sp - ) - /* Other default text styles to override - titleLarge = TextStyle( - fontFamily = FontFamily.Default, - fontWeight = FontWeight.Normal, - fontSize = 22.sp, - lineHeight = 28.sp, - letterSpacing = 0.sp - ), - labelSmall = TextStyle( - fontFamily = FontFamily.Default, - fontWeight = FontWeight.Medium, - fontSize = 11.sp, - lineHeight = 16.sp, - letterSpacing = 0.5.sp - ) - */ -) \ No newline at end of file diff --git a/app/src/main/res/layout/activity_add_photos.xml b/app/src/main/res/layout/activity_add_photos.xml new file mode 100644 index 0000000000000000000000000000000000000000..1ea7ef79c3a9e002f5a25f270bba71fb93615567 --- /dev/null +++ b/app/src/main/res/layout/activity_add_photos.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical" + android:padding="24dp" + android:gravity="center_horizontal"> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="Ajouter les photos (N/S/E/O)" + android:textSize="18sp" + android:layout_marginBottom="16dp" /> + + <Button + android:id="@+id/btnPhotoN" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="Prendre photo Nord" + android:layout_marginBottom="8dp" /> + + <Button + android:id="@+id/btnPhotoS" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="Prendre photo Sud" + android:layout_marginBottom="8dp" /> + + <Button + android:id="@+id/btnPhotoE" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="Prendre photo Est" + android:layout_marginBottom="8dp" /> + + <Button + android:id="@+id/btnPhotoO" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="Prendre photo Ouest" + android:layout_marginBottom="8dp" /> +</LinearLayout> diff --git a/app/src/main/res/layout/activity_create_model.xml b/app/src/main/res/layout/activity_create_model.xml new file mode 100644 index 0000000000000000000000000000000000000000..921927c29d347ccd199f205f0a77a55096990d3a --- /dev/null +++ b/app/src/main/res/layout/activity_create_model.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical" + android:padding="24dp"> + + <EditText + android:id="@+id/editModelName" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="Nom du modèle" + android:layout_marginBottom="16dp" /> + + <Button + android:id="@+id/btnAddPiece" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="Ajouter une pièce" + android:layout_marginBottom="16dp" /> + + <TextView + android:id="@+id/txtPiecesList" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="Pièces : (aucune)" + android:textSize="16sp" /> + +</LinearLayout> diff --git a/app/src/main/res/layout/activity_load_model.xml b/app/src/main/res/layout/activity_load_model.xml new file mode 100644 index 0000000000000000000000000000000000000000..d36f681f4584f9b6364cc5a0dccba818d2f41a22 --- /dev/null +++ b/app/src/main/res/layout/activity_load_model.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:gravity="center" + android:orientation="vertical" + android:padding="24dp"> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/chargement_du_mod_le_faire" + android:textSize="18sp" /> +</LinearLayout> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c2d919f0e327744046450e91671f578488754002..ca8a1fbc8d56d8f0d49597ea7513f81b9bdd9d1a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,3 +1,4 @@ <resources> <string name="app_name">Projetdevmob</string> + <string name="chargement_du_mod_le_faire">Chargement du modèle (à faire)</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 new file mode 100644 index 0000000000000000000000000000000000000000..a6ce6d3aebfdb448a9335ad8698f4a8bef1df73e --- /dev/null +++ b/app/src/main/res/xml/file_paths.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<paths xmlns:android="http://schemas.android.com/apk/res/android"> + <external-path name="external_files" path="." /> +</paths> diff --git a/doc_de_concep_devmobile.pdf b/doc_de_concep_devmobile.pdf new file mode 100644 index 0000000000000000000000000000000000000000..767735b5a9e3db45a613c6cd86974c2b595c8a57 Binary files /dev/null and b/doc_de_concep_devmobile.pdf differ diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 6e61ad584c9acd481b2762fa4db2b6d6ceb6a2cf..dffb574932481b060c0677d7c2bea4e365555c41 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -8,6 +8,10 @@ espressoCore = "3.6.1" lifecycleRuntimeKtx = "2.6.1" activityCompose = "1.10.0" composeBom = "2024.04.01" +appcompat = "1.7.0" +material = "1.12.0" +activity = "1.10.1" +constraintlayout = "2.2.0" [libraries] androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" } @@ -24,6 +28,10 @@ androidx-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-toolin androidx-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" } androidx-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" } androidx-material3 = { group = "androidx.compose.material3", name = "material3" } +androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" } +material = { group = "com.google.android.material", name = "material", version.ref = "material" } +androidx-activity = { group = "androidx.activity", name = "activity", version.ref = "activity" } +androidx-constraintlayout = { group = "androidx.constraintlayout", name = "constraintlayout", version.ref = "constraintlayout" } [plugins] android-application = { id = "com.android.application", version.ref = "agp" } diff --git a/projet_devmobile b/projet_devmobile deleted file mode 160000 index f17d32799ca47c8e69180c4f3a97e5361d7e7f5a..0000000000000000000000000000000000000000 --- a/projet_devmobile +++ /dev/null @@ -1 +0,0 @@ -Subproject commit f17d32799ca47c8e69180c4f3a97e5361d7e7f5a