diff --git a/Sources/app/src/main/java/Structures/BuildingInfo.java b/Sources/app/src/main/java/Structures/BuildingInfo.java index cff2e232858c06a24311a0b16ea6f1689078e4a5..e449cd2c165256dd6a90ad7bc20df9f1ff6114ca 100644 --- a/Sources/app/src/main/java/Structures/BuildingInfo.java +++ b/Sources/app/src/main/java/Structures/BuildingInfo.java @@ -55,6 +55,7 @@ public class BuildingInfo implements Serializable { public void setDate(Date date) { this.date = date; + BuildingManager.saveBuilding(this); } public String getName() { @@ -62,7 +63,9 @@ public class BuildingInfo implements Serializable { } public void setName(String name) { + BuildingManager.removeBuilding(this); this.name = name; + BuildingManager.saveBuilding(this); } public int getNbRooms() { diff --git a/Sources/app/src/main/java/Structures/RoomInfo.java b/Sources/app/src/main/java/Structures/RoomInfo.java index cf85fc2b985eec76655610be2861ffeb92f357e5..5d52b18acfda1870b5e133c4839fdd9d3bba387a 100644 --- a/Sources/app/src/main/java/Structures/RoomInfo.java +++ b/Sources/app/src/main/java/Structures/RoomInfo.java @@ -92,6 +92,7 @@ public class RoomInfo implements Serializable { public void setName(String name) { this.name = name; + if (this.building != null) this.building.save(); } public void setBuilding(BuildingInfo building) { this.building = building; } diff --git a/Sources/app/src/main/java/com/furwaz/roomview/MainActivity.java b/Sources/app/src/main/java/com/furwaz/roomview/MainActivity.java index fa296d2a662e5b66e33532ea3c0ed1e954ad8533..8df82b250cd2f9cc5b9cf5874f6e0c18dc8b2894 100644 --- a/Sources/app/src/main/java/com/furwaz/roomview/MainActivity.java +++ b/Sources/app/src/main/java/com/furwaz/roomview/MainActivity.java @@ -4,6 +4,7 @@ import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; +import android.os.Build; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; @@ -29,11 +30,12 @@ import java.util.List; import Common.BuildingManager; import Common.InfoBinding; +import Popups.BuildingPopup; import Structures.BuildingInfo; import Views.InfoAdapter; public class MainActivity extends AppCompatActivity { - InfoAdapter building_adapter = null; + InfoAdapter<BuildingInfo> building_adapter = null; @Override protected void onCreate(Bundle savedInstanceState) { @@ -45,7 +47,7 @@ public class MainActivity extends AppCompatActivity { ListView building_lv = findViewById(R.id.building_list); LinearLayout noDataLayout = findViewById(R.id.no_building_layout); - building_adapter = new InfoAdapter(this, BuildingManager.getBuildings(), noDataLayout, R.layout.building_tile); + building_adapter = new InfoAdapter<BuildingInfo>(this, BuildingManager.getBuildings(), noDataLayout, R.layout.building_tile); building_lv.setAdapter(building_adapter); building_adapter.setOnRemoveListener(param -> { @@ -86,9 +88,7 @@ public class MainActivity extends AppCompatActivity { }); ImageButton add_btn = findViewById(R.id.add_building_btn); - add_btn.setOnClickListener(view -> { - showAddBuildingPopup(view); - }); + add_btn.setOnClickListener(this::showAddBuildingPopup); } @Override @@ -98,50 +98,24 @@ public class MainActivity extends AppCompatActivity { } protected void showAddBuildingPopup(View v) { - AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); - AlertDialog dialog = builder.create(); - LayoutInflater factory = LayoutInflater.from(MainActivity.this); - View popup = factory.inflate(R.layout.add_building_popup, null); - dialog.setView(popup); - - dialog.setOnShowListener(dialogInterface -> { - TextView b_err = popup.findViewById(R.id.building_input_error_msg); - EditText b_name = popup.findViewById(R.id.input_building_name); - Button validate_btn = popup.findViewById(R.id.btn_validate_building); - Button cancel_btn = popup.findViewById(R.id.btn_cancel_building); - - validate_btn.setEnabled(false); - b_err.setText(""); - b_name.addTextChangedListener(new TextWatcher() { - public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {} - public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {} - public void afterTextChanged(Editable editable) { - validate_btn.setEnabled(false); - b_err.setText(""); - String input = editable.toString(); - if (input.length() == 0) { - b_err.setText(getResources().getString(R.string.specify_building_name)); - return; - } - if (BuildingManager.getBuilding(input) != null) { - b_err.setText(getResources().getString(R.string.building_exists)); - return; - } - // everything is correct, display the button - validate_btn.setEnabled(true); - } - }); - - cancel_btn.setOnClickListener(view -> { - dialog.dismiss(); - }); - - validate_btn.setOnClickListener(view -> { - BuildingManager.addBuilding(new BuildingInfo(b_name.getText().toString(), new Date())); + new BuildingPopup( + MainActivity.this, + param -> { + ((BuildingPopup) param).getInput().setText(""); + return null; + }, + param -> { + ((BuildingPopup) param).dismiss(); + return null; + }, + param -> { + BuildingPopup popup = ((BuildingPopup) param); + BuildingManager.addBuilding(new BuildingInfo(popup.getInput().getText().toString(), new Date())); building_adapter.setData(BuildingManager.getBuildings()); - dialog.dismiss(); - }); - }); - dialog.show(); + popup.dismiss(); + return null; + }, + BuildingPopup.MODE_NEW + ).show(); } } \ No newline at end of file diff --git a/Sources/app/src/main/res/drawable/ic_baseline_edit_24.xml b/Sources/app/src/main/res/drawable/ic_baseline_edit_24.xml new file mode 100644 index 0000000000000000000000000000000000000000..afb9aacc7a561326b770fe13d38e5bef026df2e4 --- /dev/null +++ b/Sources/app/src/main/res/drawable/ic_baseline_edit_24.xml @@ -0,0 +1,5 @@ +<vector android:height="40dp" android:tint="@color/blue_500" + android:viewportHeight="24" android:viewportWidth="24" + android:width="40dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="@android:color/white" android:pathData="M3,17.25V21h3.75L17.81,9.94l-3.75,-3.75L3,17.25zM20.71,7.04c0.39,-0.39 0.39,-1.02 0,-1.41l-2.34,-2.34c-0.39,-0.39 -1.02,-0.39 -1.41,0l-1.83,1.83 3.75,3.75 1.83,-1.83z"/> +</vector> diff --git a/Sources/app/src/main/res/layout/building_tile.xml b/Sources/app/src/main/res/layout/building_tile.xml index 7d7bb4fd77b76ae1749c15acee99a8c5cd14faf6..a3be8cacd2c4f7ad44755be3af662fcdd4e33d18 100644 --- a/Sources/app/src/main/res/layout/building_tile.xml +++ b/Sources/app/src/main/res/layout/building_tile.xml @@ -18,7 +18,8 @@ android:orientation="horizontal"> <TextView android:id="@+id/building_name" - android:layout_width="wrap_content" + android:layout_width="0dp" + android:layout_weight="2" android:layout_height="wrap_content" android:textStyle="bold" android:text="" @@ -28,7 +29,8 @@ android:textSize="20sp" android:textColor="@color/blue_500" /> <LinearLayout - android:layout_width="match_parent" + android:layout_width="0dp" + android:layout_weight="1" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_gravity="center" @@ -38,7 +40,10 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:textStyle="normal" - android:text="" + android:text="XX / XX / XXXX" + android:maxLines="1" + android:ellipsize="none" + android:scrollHorizontally="false" android:textSize="16sp" android:textColor="@color/slate_500" /> </LinearLayout> diff --git a/Sources/app/src/main/res/layout/pathway_tile.xml b/Sources/app/src/main/res/layout/pathway_tile.xml index 09230c6823252b0413817933e7ab61c35f3cffb8..a542f2b14b302aee0b25b87d63f706d16df700ae 100644 --- a/Sources/app/src/main/res/layout/pathway_tile.xml +++ b/Sources/app/src/main/res/layout/pathway_tile.xml @@ -18,7 +18,8 @@ android:orientation="horizontal"> <TextView android:id="@+id/pathway_name" - android:layout_width="wrap_content" + android:layout_width="0dp" + android:layout_weight="2" android:layout_height="wrap_content" android:textStyle="bold" android:text="" @@ -28,7 +29,8 @@ android:textSize="20sp" android:textColor="@color/blue_500" /> <LinearLayout - android:layout_width="match_parent" + android:layout_width="0dp" + android:layout_weight="1" android:layout_height="wrap_content" android:orientation="horizontal" android:gravity="end"> diff --git a/Sources/app/src/main/res/values-fr/strings.xml b/Sources/app/src/main/res/values-fr/strings.xml index c74c2cb94cfe09abbd5b899a2acb905724920ab2..04a0a2118156411c220000704e4ee4809b244bab 100644 --- a/Sources/app/src/main/res/values-fr/strings.xml +++ b/Sources/app/src/main/res/values-fr/strings.xml @@ -41,4 +41,7 @@ <string name="zone_exists">La zone existe déjà</string> <string name="specify_pathway_name">Spécifiez un nom de chemin</string> <string name="pathway_exists">le chemin existe déjà</string> + <string name="edit_building">Modifier le bâtiment</string> + <string name="building_invalid">Nom de bâtiment invalide</string> + <string name="edit_room">Modifier la pièce</string> </resources> \ No newline at end of file diff --git a/Sources/app/src/main/res/values/strings.xml b/Sources/app/src/main/res/values/strings.xml index 2fab35ed7d096ab1f6964441cc03351ec7ee3aa6..8f5a9854762542b7a86eac19265bc2dc66d1f126 100644 --- a/Sources/app/src/main/res/values/strings.xml +++ b/Sources/app/src/main/res/values/strings.xml @@ -41,4 +41,7 @@ <string name="zone_exists">Zone already exists</string> <string name="specify_pathway_name">Specify a pathway name</string> <string name="pathway_exists">Pathway already exists</string> + <string name="edit_building">Edit building</string> + <string name="building_invalid">Invalid building name</string> + <string name="edit_room">Edit room</string> </resources> \ No newline at end of file