Skip to content
Snippets Groups Projects
Commit 5bdaeb4d authored by CHAPUSOT Alexis's avatar CHAPUSOT Alexis
Browse files

Creation de l'activité photo + validation des murs

parent eb87823c
No related branches found
No related tags found
No related merge requests found
Showing
with 578 additions and 106 deletions
...@@ -34,6 +34,8 @@ dependencies { ...@@ -34,6 +34,8 @@ dependencies {
implementation("com.google.android.material:material:1.10.0") implementation("com.google.android.material:material:1.10.0")
implementation("androidx.constraintlayout:constraintlayout:2.1.4") implementation("androidx.constraintlayout:constraintlayout:2.1.4")
implementation("androidx.gridlayout:gridlayout:1.0.0") implementation("androidx.gridlayout:gridlayout:1.0.0")
implementation("androidx.camera:camera-view:1.3.0")
implementation("androidx.camera:camera-lifecycle:1.3.0")
testImplementation("junit:junit:4.13.2") testImplementation("junit:junit:4.13.2")
androidTestImplementation("androidx.test.ext:junit:1.1.5") androidTestImplementation("androidx.test.ext:junit:1.1.5")
androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1") androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
<uses-feature <uses-feature
android:name="android.hardware.camera" android:name="android.hardware.camera"
android:required="true"/> android:required="true"/>
<uses-permission android:name="android.permission.CAMERA"/>
<application <application
android:allowBackup="true" android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules" android:dataExtractionRules="@xml/data_extraction_rules"
...@@ -17,10 +17,13 @@ ...@@ -17,10 +17,13 @@
android:theme="@style/Theme.BuildingBuilder" android:theme="@style/Theme.BuildingBuilder"
tools:targetApi="31"> tools:targetApi="31">
<activity <activity
android:name=".Room_Creator" android:name=".CameraWithAccelererometre"
android:exported="false"/>
<activity
android:name=".RoomCreator"
android:exported="false"/> android:exported="false"/>
<activity <activity
android:name=".worldCreator" android:name=".WorldCreator"
android:exported="false"/> android:exported="false"/>
<activity <activity
android:name=".MainActivity" android:name=".MainActivity"
......
package com.example.buildingbuilder;
import android.Manifest;
import android.content.pm.PackageManager;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import androidx.camera.core.Camera;
import androidx.camera.core.CameraSelector;
import androidx.camera.core.Preview;
import androidx.camera.lifecycle.ProcessCameraProvider;
import androidx.camera.view.PreviewView;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.lifecycle.LifecycleOwner;
import com.google.common.util.concurrent.ListenableFuture;
import org.jetbrains.annotations.NotNull;
import java.util.Locale;
import java.util.concurrent.ExecutionException;
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
public class CameraWithAccelererometre extends AppCompatActivity {
private ListenableFuture<ProcessCameraProvider> cameraProviderFuture;
private PreviewView previewView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_camera_with_accelerometre);
this.previewView = findViewById(R.id.previewCamera);
cameraProviderFuture = ProcessCameraProvider.getInstance(this);
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA},
1000);
} else {
setupCamera();
}
}
private void setupCamera() {
cameraProviderFuture = ProcessCameraProvider.getInstance(this);
cameraProviderFuture.addListener(() -> {
try {
ProcessCameraProvider cameraProvider = cameraProviderFuture.get();
bindPreview(cameraProvider);
} catch (InterruptedException | ExecutionException e) {
// No errors need to be handled for this Future.
// This should never be reached.
}
}, ContextCompat.getMainExecutor(this));
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull @NotNull String[] permissions, @NonNull @NotNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode,permissions,grantResults);
if(requestCode == 1000){
if(grantResults.length>0 && grantResults[0]==PERMISSION_GRANTED){
setupCamera();
}
else{
String warningMsg = Locale.getDefault().getLanguage().equals("fr") ? "l'autorasation de la caméra est nécessaire": "authorisation of the camera is necessary";
Toast.makeText(this, warningMsg, Toast.LENGTH_LONG).show();
}
}
}
void bindPreview(@NonNull ProcessCameraProvider cameraProvider) {
Preview preview = new Preview.Builder()
.build();
CameraSelector cameraSelector = new CameraSelector.Builder()
.requireLensFacing(CameraSelector.LENS_FACING_BACK)
.build();
preview.setSurfaceProvider(previewView.getSurfaceProvider());
Camera camera = cameraProvider.bindToLifecycle((LifecycleOwner)this, cameraSelector, preview);
}
}
\ No newline at end of file
...@@ -2,8 +2,8 @@ package com.example.buildingbuilder.Data; ...@@ -2,8 +2,8 @@ package com.example.buildingbuilder.Data;
public class Access { public class Access {
Coordonéees coordonéees; Coordonéees coordonéees;
String accessedRoom; Room accessedRoom;
public Access(Coordonéees c,String accessedRoom){ public Access(Coordonéees c,Room accessedRoom){
coordonéees = c; coordonéees = c;
this.accessedRoom = accessedRoom; this.accessedRoom = accessedRoom;
} }
......
...@@ -17,24 +17,27 @@ public class Building implements IterableItem,Iterable<Room> { ...@@ -17,24 +17,27 @@ public class Building implements IterableItem,Iterable<Room> {
private ArrayList<Room> workingRoom; private ArrayList<Room> workingRoom;
private String location; private String location;
private boolean selected; private boolean selected;
private boolean selectionMode;
public Building(String Name){ public Building(String Name){
this.uuid = UUID.randomUUID().toString(); this.uuid = UUID.randomUUID().toString();
this.location = uuid+"/"+"home.data";
this.name = Name; this.name = Name;
this.rooms = new ArrayList<>(); this.rooms = new ArrayList<>();
this.valid =false; this.valid =false;
this.workingRoom = new ArrayList<>(); this.workingRoom = new ArrayList<>();
this.selectionMode = false;
} }
public Building(){ public Building(){
this.uuid = UUID.randomUUID().toString(); this.uuid = UUID.randomUUID().toString();
this.location = uuid+"/"+"home";
this.rooms = new ArrayList<>(); this.rooms = new ArrayList<>();
this.valid =false; this.valid =false;
this.workingRoom = new ArrayList<>(); this.workingRoom = new ArrayList<>();
this.selectionMode = false;
} }
public String getName() { public String getName() {
...@@ -68,7 +71,7 @@ public class Building implements IterableItem,Iterable<Room> { ...@@ -68,7 +71,7 @@ public class Building implements IterableItem,Iterable<Room> {
} }
public void validRoom(){ public void validRoom(){
Room validRoom = workingRoom.get(workingRoom.size()+1); Room validRoom = workingRoom.get(workingRoom.size()-1);
rooms.add(workingRoom.get(workingRoom.size()-1)); rooms.add(workingRoom.get(workingRoom.size()-1));
workingRoom.remove(validRoom); workingRoom.remove(validRoom);
} }
...@@ -91,10 +94,21 @@ public class Building implements IterableItem,Iterable<Room> { ...@@ -91,10 +94,21 @@ public class Building implements IterableItem,Iterable<Room> {
this.selected = selected; this.selected = selected;
} }
public void cancelRoom(){
workingRoom.remove(workingRoom.get(workingRoom.size()-1));
}
@NonNull @NonNull
@NotNull @NotNull
@Override @Override
public Iterator<Room> iterator() { public Iterator<Room> iterator() {
return rooms.iterator(); return rooms.iterator();
} }
public boolean isSelectionMode() {
return selectionMode;
}
public void setSelectionMode(boolean SelectionMode) {
this.selectionMode = SelectionMode;
}
} }
...@@ -10,9 +10,16 @@ public class Room implements IterableItem { ...@@ -10,9 +10,16 @@ public class Room implements IterableItem {
private String uuid; private String uuid;
private String name; private String name;
private Wall[] walls; private Wall[] walls;
int selectedWalls; private Wall workingWall;
private int selectedWalls;
private boolean selected; private boolean selected;
public Room(){
selectedWalls = 0;
walls = new Wall[4];
this.name = "name";
this.uuid = UUID.randomUUID().toString();
}
public Room(String name){ public Room(String name){
selectedWalls = 0; selectedWalls = 0;
walls = new Wall[4]; walls = new Wall[4];
...@@ -23,7 +30,12 @@ public class Room implements IterableItem { ...@@ -23,7 +30,12 @@ public class Room implements IterableItem {
this.name = name; this.name = name;
} }
public Room(Room room){ public Room(Room room){
this.location = new String(room.location);
this.uuid = new String(room.uuid);
this.name = new String(room.name);
this.walls = room.walls;
selectedWalls = 0;
selected = false;
} }
public Wall getWall(){ public Wall getWall(){
...@@ -36,6 +48,10 @@ public class Room implements IterableItem { ...@@ -36,6 +48,10 @@ public class Room implements IterableItem {
this.selectedWalls =position; this.selectedWalls =position;
} }
public void cancelWall(){
this.workingWall = null;
}
@Override @Override
public String getName() { public String getName() {
return name; return name;
...@@ -59,4 +75,23 @@ public class Room implements IterableItem { ...@@ -59,4 +75,23 @@ public class Room implements IterableItem {
@Override @Override
public void setSelected(boolean selected) { public void setSelected(boolean selected) {
this.selected=selected; } this.selected=selected; }
public Wall getCurrentWall() {
return workingWall;
}
public void validWall(String position) {
if(position.equals("north")){
walls[0]=workingWall;
}
if(position.equals("south")){
walls[2]=workingWall;
}
if(position.equals("East")){
walls[1]=workingWall;
}
if(position.equals("West")){
walls[3]=workingWall;
}
}
} }
package com.example.buildingbuilder; package com.example.buildingbuilder;
import android.content.Context; import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Log; import android.util.Log;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
...@@ -11,15 +13,20 @@ import androidx.core.content.ContextCompat; ...@@ -11,15 +13,20 @@ import androidx.core.content.ContextCompat;
import com.example.buildingbuilder.Data.Building; import com.example.buildingbuilder.Data.Building;
import com.example.buildingbuilder.Data.BuildingManager; import com.example.buildingbuilder.Data.BuildingManager;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
public class ItemAdapter extends ArrayAdapter<IterableItem> { public class ItemAdapter extends ArrayAdapter<IterableItem> {
Button button; Button button;
public ItemAdapter(@NonNull Context context, int resource, @NonNull List<IterableItem> objects,Button button) { boolean iterateBuilding;
public ItemAdapter(@NonNull Context context, int resource, @NonNull List<IterableItem> objects,Button button,boolean mode) {
super(context, resource, objects); super(context, resource, objects);
this.button = button; this.button = button;
this.iterateBuilding = mode;
} }
@NonNull @NonNull
...@@ -35,8 +42,30 @@ public class ItemAdapter extends ArrayAdapter<IterableItem> { ...@@ -35,8 +42,30 @@ public class ItemAdapter extends ArrayAdapter<IterableItem> {
View view = View.inflate(getContext(),R.layout.buildingitem,null); View view = View.inflate(getContext(),R.layout.buildingitem,null);
TextView text = view.findViewById(R.id.BuildingItemText); TextView text = view.findViewById(R.id.BuildingItemText);
ImageView valid = view.findViewById(R.id.BuildingItemValid); ImageView valid = view.findViewById(R.id.BuildingItemValid);
ImageView coverPictureView = view.findViewById(R.id.BuildingItemPicture);
try {
String location = getItem(position).getLocation();
if(location!=null) {
FileInputStream fis = new FileInputStream(new File(location));
Bitmap coverPicture = BitmapFactory.decodeStream(fis);
if (coverPicture == null) {
Log.i("ItemAdapter", "le fichier n'a pas été trouvé");
} else {
coverPictureView.setImageBitmap(coverPicture);
}
}
} catch (FileNotFoundException e) {
throw new RuntimeException(e);
}
CheckBox box = view.findViewById(R.id.BuildingCheckBox); CheckBox box = view.findViewById(R.id.BuildingCheckBox);
box.setVisibility(View.VISIBLE); if(!iterateBuilding){
box.setVisibility(BuildingManager.getInstance().getCurrentBuilding().isSelectionMode() ? View.VISIBLE:View.INVISIBLE);
}
else{
box.setVisibility(BuildingManager.getInstance().isSelectedMode() ? View.VISIBLE:View.INVISIBLE);
}
box.setChecked(getItem(position).isSelected()); box.setChecked(getItem(position).isSelected());
box.setOnClickListener(v -> { box.setOnClickListener(v -> {
IterableItem item = getItem(position); IterableItem item = getItem(position);
......
package com.example.buildingbuilder; package com.example.buildingbuilder;
import android.content.Intent; import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.util.Log; import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.*; import android.widget.*;
import androidx.activity.result.ActivityResultLauncher; import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts; import androidx.activity.result.contract.ActivityResultContracts;
...@@ -15,13 +11,7 @@ import androidx.core.content.ContextCompat; ...@@ -15,13 +11,7 @@ import androidx.core.content.ContextCompat;
import com.example.buildingbuilder.Data.Building; import com.example.buildingbuilder.Data.Building;
import com.example.buildingbuilder.Data.BuildingManager; import com.example.buildingbuilder.Data.BuildingManager;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.StreamSupport;
import static java.security.AccessController.getContext;
public class MainActivity extends AppCompatActivity { public class MainActivity extends AppCompatActivity {
...@@ -92,9 +82,9 @@ public class MainActivity extends AppCompatActivity { ...@@ -92,9 +82,9 @@ public class MainActivity extends AppCompatActivity {
Button buttonCreation = new Button(this); Button buttonCreation = new Button(this);
buttonCreation.setBackground(ContextCompat.getDrawable(this,android.R.drawable.ic_menu_add)); buttonCreation.setBackground(ContextCompat.getDrawable(this,android.R.drawable.ic_menu_add));
adapter = new ItemAdapter(this, R.layout.buildingitem, buildingList,buttonCreation); adapter = new ItemAdapter(this, R.layout.buildingitem, buildingList,buttonCreation,true);
intent = new Intent(this, worldCreator.class); intent = new Intent(this, WorldCreator.class);
//on crée un nouveau monde //on crée un nouveau monde
buttonCreation.setOnClickListener(v->{ buttonCreation.setOnClickListener(v->{
addLauncher.launch(intent); addLauncher.launch(intent);
......
package com.example.buildingbuilder;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContract;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import androidx.core.app.ActivityOptionsCompat;
import com.example.buildingbuilder.Data.BuildingManager;
import com.example.buildingbuilder.Data.Room;
import org.jetbrains.annotations.NotNull;
public class RoomCreator extends AppCompatActivity {
private boolean updateMode;
private int position;
private ActivityResultLauncher<Intent> wallLauncher;
@SuppressLint("NonConstantResourceId")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_room_creator);
this.updateMode=false;
ImageView buttonPhotoMurNord = findViewById(R.id.NorthPictureButton);
ImageView buttonPhotoMurSud = findViewById(R.id.SouthPictureButton);
ImageView buttonPhotoMurEst = findViewById(R.id.EastPictureButton);
ImageView buttonPhotoMurOuest = findViewById(R.id.WestPictureButton);
ImageView buttonEditMurNord = findViewById(R.id.NorthEditButton);
ImageView buttonEditMurSud = findViewById(R.id.SouthEditButton);
ImageView buttonEditMurEst = findViewById(R.id.EastEditButton);
ImageView buttonEditMurOuest = findViewById(R.id.WestEditButton);
ImageView imageMurNord = findViewById(R.id.ImageMurNord);
ImageView imageMurSud = findViewById(R.id.ImageMurSud);
ImageView imageMurEst = findViewById(R.id.ImageMurEst);
ImageView imageMurOuest = findViewById(R.id.ImageMurOuest);
Intent intent = getIntent();
if(intent!=null){
this.updateMode = intent.getExtras() != null;
if(updateMode){
buttonEditMurNord.setVisibility(View.VISIBLE);
buttonEditMurSud.setVisibility(View.VISIBLE);
buttonEditMurOuest.setVisibility(View.VISIBLE);
buttonEditMurEst.setVisibility(View.VISIBLE);
this.position = Integer.parseInt(intent.getExtras().getString("position"));
//recopie de la salle
}
else{
buttonEditMurNord.setVisibility(View.INVISIBLE);
buttonEditMurSud.setVisibility(View.INVISIBLE);
buttonEditMurOuest.setVisibility(View.INVISIBLE);
buttonEditMurEst.setVisibility(View.INVISIBLE);
BuildingManager.getInstance().getCurrentBuilding().addWorkingRoom(new Room());
}
}
wallLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result ->{
if (result.getResultCode()==RESULT_OK){
if(updateMode){
//Mise à jour du mur selon la position
}
else{
BuildingManager.getInstance().getCurrentBuilding().getLastWorkingRoom().validWall(result.getData().getExtras().getString("position"));
}
}
else{
BuildingManager.getInstance().getCurrentBuilding().getLastWorkingRoom().cancelWall();
}
});
buttonPhotoMurNord.setOnClickListener(view->{
Intent intent = new
});
}
}
\ No newline at end of file
package com.example.buildingbuilder;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class Room_Creator extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_room_creator);
}
}
\ No newline at end of file
...@@ -3,6 +3,7 @@ package com.example.buildingbuilder; ...@@ -3,6 +3,7 @@ package com.example.buildingbuilder;
import android.app.Activity; import android.app.Activity;
import android.content.Intent; import android.content.Intent;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.os.Environment;
import android.provider.MediaStore; import android.provider.MediaStore;
import android.util.Log; import android.util.Log;
import android.widget.Button; import android.widget.Button;
...@@ -19,14 +20,17 @@ import com.example.buildingbuilder.Data.Building; ...@@ -19,14 +20,17 @@ import com.example.buildingbuilder.Data.Building;
import com.example.buildingbuilder.Data.BuildingManager; import com.example.buildingbuilder.Data.BuildingManager;
import com.example.buildingbuilder.Data.Room; import com.example.buildingbuilder.Data.Room;
import java.io.File;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Iterator; import java.util.Iterator;
public class worldCreator extends AppCompatActivity { public class WorldCreator extends AppCompatActivity {
boolean updateMode = false; boolean updateMode = false;
String position; String position;
ActivityResultLauncher<Intent> launcherCoverPicture;
ActivityResultLauncher<Intent> launcherRoom;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
...@@ -43,6 +47,85 @@ public class worldCreator extends AppCompatActivity { ...@@ -43,6 +47,85 @@ public class worldCreator extends AppCompatActivity {
ImageView cancel = findViewById(R.id.cancel); ImageView cancel = findViewById(R.id.cancel);
EditText nomMonde = findViewById(R.id.NomMonde); EditText nomMonde = findViewById(R.id.NomMonde);
Activity activity = this; Activity activity = this;
if(updateMode){
//mise à jour
/*BuildingManager manager = BuildingManager.getInstance();
Building building = new Building(manager.getBuilding(Integer.parseInt(position)));
manager.addCurrentBuilding(building);
updateMode = true;*/
}else{
BuildingManager.getInstance().addCurrentBuilding(new Building());
}
Button button = new Button(this);
button.setBackground(ContextCompat.getDrawable(this,android.R.drawable.ic_menu_add));
// creation de la liste de base
Iterator<Room> iterator = BuildingManager.getInstance().getCurrentBuilding().iterator();
ArrayList<IterableItem> rooms = new ArrayList<>();
while(iterator.hasNext()){
rooms.add(iterator.next());
}
rooms.add(new Room("dummy"));
ItemAdapter roomAdapter = new ItemAdapter(this,R.layout.buildingitem,rooms,button,false);
gridRoom.setAdapter(roomAdapter);
launcherRoom = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(),result ->{
if(result.getResultCode()==RESULT_OK){
if(!updateMode){
BuildingManager.getInstance().getCurrentBuilding().validRoom();
}else{
//recupèrer la position de la pièce qu'on a souhaité modifier
//mettre à jour la piece avec la pièce temporaire
//retirer la piece temporaire
}
}
else{
if(result.getResultCode()==RESULT_CANCELED){
BuildingManager.getInstance().getCurrentBuilding().cancelRoom();
}
}
});
button.setOnClickListener(view ->{
Intent roomIntent = new Intent(this,RoomCreator.class);
launcherRoom.launch(roomIntent);
});
launcherCoverPicture = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {
if(result.getResultCode()==RESULT_OK){
Intent resultIntent = result.getData();
Bundle bundleResult = null;
if (resultIntent != null) {
bundleResult = resultIntent.getExtras();
}
if(bundleResult!=null) {
Bitmap image = (Bitmap) bundleResult.get("data");
try {
//l'image sera stocké par rapport au monde
//remplacer le nom par copy en cas d'update
String location = BuildingManager.getInstance().getCurrentBuilding().getLocation();
File buildingDirectory = new File(getFilesDir().getAbsolutePath(),BuildingManager.getInstance().getCurrentBuildingUUID());
if (!buildingDirectory.exists()){
if(!buildingDirectory.mkdir()){
throw new Exception("the folder is not created");
}
}
File imageFile = File.createTempFile(
"coverPicture", /* prefix */
".png", /* suffix */
buildingDirectory /* directory */
);
FileOutputStream fos = new FileOutputStream(imageFile);
image.compress(Bitmap.CompressFormat.PNG,100,fos);
fos.flush();
fos.close();
BuildingManager.getInstance().getCurrentBuilding().setLocation(imageFile.getAbsolutePath());
} catch (Exception e) {
Log.i("WorldCreator","Enregistrement de la photo impossible");
}
}
}
});
getOnBackPressedDispatcher().addCallback(new OnBackPressedCallback(true) { getOnBackPressedDispatcher().addCallback(new OnBackPressedCallback(true) {
@Override @Override
public void handleOnBackPressed() { public void handleOnBackPressed() {
...@@ -56,62 +139,22 @@ public class worldCreator extends AppCompatActivity { ...@@ -56,62 +139,22 @@ public class worldCreator extends AppCompatActivity {
}); });
confirm.setOnClickListener(view->{ confirm.setOnClickListener(view->{
//A FAIRE renvoyer la position en cas de modif //A FAIRE renvoyer la position en cas de modif
BuildingManager.getInstance().getCurrentBuilding().setName(nomMonde.getText().toString()); BuildingManager.getInstance().getCurrentBuilding().setName(nomMonde.getText().toString()
);
setResult(RESULT_OK); setResult(RESULT_OK);
finish(); finish();
}); });
//prise de la photo de couverture du monde //prise de la photo de couverture du monde
boutonPhotoCouverture.setOnClickListener(view->{ boutonPhotoCouverture.setOnClickListener(view->{
ActivityResultLauncher<Intent> launcher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {
if(result.getResultCode()==RESULT_OK){
Intent resultIntent = result.getData();
Bundle bundleResult = null;
if (resultIntent != null) {
bundleResult = resultIntent.getExtras();
}
if(bundleResult!=null) {
Bitmap image = (Bitmap) bundleResult.get("data");
try {
//l'image sera stocké par rapport au monde
//remplacer le nom par copy en cas d'update
String location = BuildingManager.getInstance().getCurrentBuilding().getLocation();
FileOutputStream fos = openFileOutput(location, MODE_PRIVATE);
image.compress(Bitmap.CompressFormat.PNG, 100, fos);
fos.flush();
fos.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
});
Intent intentPhoto = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); Intent intentPhoto = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
launcher.launch(intentPhoto); launcherCoverPicture.launch(intentPhoto);
}); });
if(updateMode){
//mise à jour
/*BuildingManager manager = BuildingManager.getInstance();
Building building = new Building(manager.getBuilding(Integer.parseInt(position)));
manager.addCurrentBuilding(building);
updateMode = true;*/
}else{
BuildingManager.getInstance().addCurrentBuilding(new Building());
}
Button button = new Button(this);
button.setBackground(ContextCompat.getDrawable(this,android.R.drawable.ic_menu_add));
// creation de la liste de base
Iterator<Room> iterator = BuildingManager.getInstance().getCurrentBuilding().iterator();
ArrayList<IterableItem> rooms = new ArrayList<>();
while(iterator.hasNext()){
rooms.add(iterator.next());
}
rooms.add(new Room("dummy"));
ItemAdapter roomAdapter = new ItemAdapter(this,R.layout.buildingitem,rooms,button);
gridRoom.setAdapter(roomAdapter);
} }
......
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".CameraWithAccelererometre">
<FrameLayout
android:id="@+id/container" android:layout_height="316dp" app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_width="325dp" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent">
<androidx.camera.view.PreviewView
android:id="@+id/previewCamera" tools:ignore="MissingClass" android:layout_height="match_parent"
android:layout_width="match_parent"/>
</FrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
android:layout_width="429dp" android:layout_width="429dp"
android:layout_height="573dp" android:layout_height="573dp"
android:id="@+id/GrilleBuilding" app:layout_constraintTop_toTopOf="parent" android:id="@+id/GrilleBuilding" app:layout_constraintTop_toTopOf="parent"
android:numColumns="4" android:numColumns="3"
android:layout_margin="10px" android:layout_margin="10px"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"/> app:layout_constraintStart_toStartOf="parent"/>
......
...@@ -5,6 +5,176 @@ ...@@ -5,6 +5,176 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
tools:context=".Room_Creator"> tools:context=".RoomCreator">
<FrameLayout
android:layout_width="174dp"
android:layout_height="100dp"
app:layout_constraintTop_toTopOf="@+id/toolbar2"
android:layout_marginTop="240dp" app:layout_constraintStart_toStartOf="parent"
android:layout_marginStart="20dp" android:background="#0091EA">
</FrameLayout>
<ImageView
android:layout_width="174dp"
android:layout_height="100dp" app:srcCompat="@drawable/ic_launcher_foreground"
android:id="@+id/ImageMurNord" app:layout_constraintTop_toTopOf="parent"
android:layout_marginTop="240dp" app:layout_constraintStart_toStartOf="parent"
android:layout_marginStart="20dp"/>
<FrameLayout
android:layout_width="174dp"
android:layout_height="100dp" app:layout_constraintTop_toTopOf="parent"
android:layout_marginTop="240dp"
app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="20dp" android:background="#0091EA">
</FrameLayout>
<ImageView
android:layout_width="174dp"
android:layout_height="100dp" app:srcCompat="@drawable/ic_launcher_foreground"
android:id="@+id/ImageMurEst"
app:layout_constraintTop_toTopOf="parent" android:layout_marginEnd="20dp"
app:layout_constraintEnd_toEndOf="parent" android:layout_marginTop="240dp"/>
<FrameLayout
android:layout_width="174dp"
android:layout_height="100dp" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" android:layout_marginBottom="170dp"
android:layout_marginStart="20dp">
</FrameLayout>
<ImageView
android:layout_width="174dp"
android:layout_height="100dp" app:srcCompat="@drawable/ic_launcher_foreground"
android:id="@+id/ImageMurSud"
app:layout_constraintBottom_toBottomOf="parent" android:layout_marginBottom="170dp"
app:layout_constraintStart_toStartOf="parent" android:layout_marginStart="20dp"
android:background="#0091EA"/>
<FrameLayout
android:layout_width="174dp"
android:layout_height="100dp" app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginBottom="170dp" app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="20dp">
</FrameLayout>
<ImageView
android:layout_width="174dp"
android:layout_height="100dp" app:srcCompat="@drawable/ic_launcher_foreground"
android:id="@+id/ImageMurOuest"
app:layout_constraintBottom_toBottomOf="parent" android:layout_marginBottom="170dp"
android:layout_marginEnd="20dp" app:layout_constraintEnd_toEndOf="parent" android:background="#0091EA"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:id="@+id/textView2"
app:layout_constraintBottom_toTopOf="@+id/ImageMurNord"
android:text="@string/Texte_nord"
android:layout_marginBottom="20dp" app:layout_constraintStart_toStartOf="parent"
android:layout_marginStart="85dp"/>
<TextView
android:layout_width="30dp"
android:layout_height="23dp" android:id="@+id/textView3"
app:layout_constraintBottom_toTopOf="@+id/ImageMurEst"
android:layout_marginBottom="20dp" app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="85dp"
android:text="@string/Texte_Est"
android:textAlignment="center"
/>
<TextView
android:text="@string/Text_Sud"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:id="@+id/textView4"
android:layout_marginBottom="20dp"
app:layout_constraintBottom_toTopOf="@+id/ImageMurSud" app:layout_constraintStart_toStartOf="parent"
android:layout_marginStart="85dp"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:id="@+id/textView5"
android:layout_marginBottom="20dp"
app:layout_constraintBottom_toTopOf="@+id/ImageMurOuest" android:layout_marginEnd="85dp"
app:layout_constraintEnd_toEndOf="parent"
android:text="@string/Mur_Ouest"
/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content" app:srcCompat="@android:drawable/ic_menu_edit"
android:id="@+id/SouthEditButton"
app:layout_constraintStart_toStartOf="parent" android:layout_marginStart="50dp"
android:layout_marginTop="18dp" app:layout_constraintTop_toBottomOf="@+id/ImageMurSud"
android:visibility="invisible"/>
<ImageView
android:layout_width="33dp"
android:layout_height="33dp" app:srcCompat="@android:drawable/ic_menu_camera"
android:id="@+id/SouthPictureButton"
app:layout_constraintStart_toEndOf="@+id/SouthEditButton" android:layout_marginStart="15dp"
android:layout_marginTop="18dp" app:layout_constraintTop_toBottomOf="@+id/ImageMurSud"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content" app:srcCompat="@android:drawable/ic_menu_edit"
android:id="@+id/WestEditButton"
app:layout_constraintTop_toBottomOf="@+id/ImageMurOuest" android:layout_marginTop="18dp"
app:layout_constraintEnd_toStartOf="@+id/WestPictureButton" android:layout_marginEnd="15dp"
android:text="@string/Mur_Ouest"
android:visibility="invisible"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content" app:srcCompat="@android:drawable/ic_menu_camera"
android:id="@+id/WestPictureButton"
app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="50dp" android:layout_marginTop="18dp"
app:layout_constraintTop_toBottomOf="@+id/ImageMurOuest"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content" app:srcCompat="@android:drawable/ic_menu_edit"
android:id="@+id/NorthEditButton" android:layout_marginTop="18dp"
app:layout_constraintTop_toBottomOf="@+id/ImageMurNord" app:layout_constraintStart_toStartOf="parent"
android:layout_marginStart="50dp" android:visibility="invisible"/>
<ImageView
android:layout_width="33dp"
android:layout_height="wrap_content" app:srcCompat="@android:drawable/ic_menu_camera"
android:id="@+id/NorthPictureButton" android:layout_marginTop="18dp"
app:layout_constraintTop_toBottomOf="@+id/ImageMurNord" android:layout_marginStart="15dp"
app:layout_constraintStart_toEndOf="@+id/NorthEditButton"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content" app:srcCompat="@android:drawable/ic_menu_edit"
android:id="@+id/EastEditButton"
app:layout_constraintEnd_toStartOf="@+id/EastPictureButton" android:layout_marginEnd="15dp"
android:layout_marginTop="18dp" app:layout_constraintTop_toBottomOf="@+id/ImageMurEst"
android:visibility="invisible"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content" app:srcCompat="@android:drawable/ic_menu_camera"
android:id="@+id/EastPictureButton" android:layout_marginEnd="50dp"
app:layout_constraintEnd_toEndOf="parent" android:layout_marginTop="18dp"
app:layout_constraintTop_toBottomOf="@+id/ImageMurEst"/>
<TextView
android:text="@string/champ_building_nom"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:id="@+id/textView" tools:layout_editor_absoluteY="61dp"
tools:layout_editor_absoluteX="191dp"/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="text"
android:ems="10"
android:id="@+id/NameRoom" tools:layout_editor_absoluteY="100dp" tools:layout_editor_absoluteX="105dp"
android:hint="@string/champ_building_nom"
/>
<androidx.appcompat.widget.Toolbar
android:layout_width="410dp"
android:layout_height="50dp"
android:background="?attr/colorPrimary"
android:theme="?attr/actionBarTheme"
android:minHeight="?attr/actionBarSize" tools:layout_editor_absoluteX="0dp" android:id="@+id/toolbar2"
tools:layout_editor_absoluteY="1dp"/>
<ImageView
android:layout_width="51dp"
android:layout_height="38dp" app:srcCompat="@drawable/check" android:id="@+id/RoomConfirm"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent"/>
<ImageView
android:layout_width="48dp"
android:layout_height="43dp" app:srcCompat="@android:drawable/ic_delete"
android:id="@+id/RoomCancel"
app:layout_constraintStart_toStartOf="parent"
android:layout_marginStart="16dp" app:layout_constraintBottom_toBottomOf="@+id/toolbar2"
android:layout_marginBottom="8dp"/>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
tools:context=".worldCreator" tools:layout_editor_absoluteY="7dp" tools:layout_editor_absoluteX="-61dp"> tools:context=".WorldCreator" tools:layout_editor_absoluteY="7dp" tools:layout_editor_absoluteX="-61dp">
<TextView <TextView
android:text="@string/photo_de_couverture" android:text="@string/photo_de_couverture"
android:layout_width="205dp" android:layout_width="205dp"
...@@ -18,12 +18,11 @@ ...@@ -18,12 +18,11 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:inputType="text" android:inputType="text"
android:text="@string/champ_building_nom"
android:ems="10" android:ems="10"
android:id="@+id/NomMonde" android:id="@+id/NomMonde"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" android:layout_marginTop="75dp" app:layout_constraintTop_toTopOf="parent" android:layout_marginTop="75dp"
app:layout_constraintHorizontal_bias="0.412"/> app:layout_constraintHorizontal_bias="0.412" android:hint="@string/champ_building_nom"/>
<ImageView <ImageView
android:layout_width="43dp" android:layout_width="43dp"
android:layout_height="54dp" app:srcCompat="@android:drawable/ic_menu_camera" android:layout_height="54dp" app:srcCompat="@android:drawable/ic_menu_camera"
......
...@@ -2,33 +2,33 @@ ...@@ -2,33 +2,33 @@
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content" android:layout_width="730px"
android:layout_height="wrap_content"> android:layout_height="660px"
>
<ImageView <ImageView
android:layout_width="71dp" android:layout_width="93dp"
android:layout_height="59dp" app:srcCompat="@drawable/ic_launcher_foreground" android:layout_height="90dp" app:srcCompat="@drawable/ic_launcher_foreground"
android:id="@+id/BuildingItemPicture" android:id="@+id/BuildingItemPicture"
app:layout_constraintStart_toStartOf="parent" android:layout_marginBottom="6dp" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toTopOf="@+id/BuildingItemText" app:layout_constraintTop_toTopOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent"
android:layout_marginTop="16dp" app:layout_constraintVertical_bias="0.0" />
app:layout_constraintEnd_toEndOf="parent"/>
<TextView <TextView
android:text="TextView" android:text="TextView"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:id="@+id/BuildingItemText" android:layout_height="wrap_content" android:id="@+id/BuildingItemText"
app:layout_constraintTop_toBottomOf="@+id/BuildingItemValid" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginStart="19dp" android:layout_marginEnd="19dp" android:layout_marginBottom="140dp"/>
app:layout_constraintEnd_toEndOf="parent"/>
<ImageView <ImageView
android:layout_width="26dp" android:layout_width="26dp"
android:layout_height="21dp" app:srcCompat="@android:drawable/ic_delete" android:id="@+id/BuildingItemValid" android:layout_height="21dp" app:srcCompat="@android:drawable/ic_delete" android:id="@+id/BuildingItemValid"
app:layout_constraintStart_toEndOf="@+id/BuildingItemPicture" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent" android:layout_marginTop="60dp" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toTopOf="@+id/BuildingItemText" app:layout_constraintHorizontal_bias="0.0"/> android:layout_marginEnd="16dp" android:layout_marginBottom="60dp"/>
<CheckBox <CheckBox
android:layout_width="31dp" android:layout_width="31dp"
android:layout_height="31dp" android:id="@+id/BuildingCheckBox" android:layout_height="31dp" android:id="@+id/BuildingCheckBox"
app:layout_constraintStart_toStartOf="parent" android:layout_marginStart="15dp" android:visibility="invisible"
app:layout_constraintBottom_toTopOf="@+id/BuildingItemText" android:visibility="invisible"/> app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent"
android:layout_marginBottom="90dp" android:layout_marginStart="50dp"/>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
...@@ -3,4 +3,8 @@ ...@@ -3,4 +3,8 @@
<string name="app_name">BuildingBuilder</string> <string name="app_name">BuildingBuilder</string>
<string name="champ_building_nom">name</string> <string name="champ_building_nom">name</string>
<string name="photo_de_couverture">Cover Picture</string> <string name="photo_de_couverture">Cover Picture</string>
<string name="Texte_nord">North</string>
<string name="Texte_Est">East</string>
<string name="Text_Sud">South</string>
<string name="Mur_Ouest">West</string>
</resources> </resources>
\ No newline at end of file
...@@ -2,4 +2,8 @@ ...@@ -2,4 +2,8 @@
<string name="app_name">BuildingBuilder</string> <string name="app_name">BuildingBuilder</string>
<string name="champ_building_nom">nom</string> <string name="champ_building_nom">nom</string>
<string name="photo_de_couverture">Photo de couverture</string> <string name="photo_de_couverture">Photo de couverture</string>
<string name="Texte_nord">Nord</string>
<string name="Texte_Est">Est</string>
<string name="Text_Sud">Sud</string>
<string name="Mur_Ouest">Ouest</string>
</resources> </resources>
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment