From 154fb97298a813e76755295c4164a830ca8ca8b2 Mon Sep 17 00:00:00 2001 From: FurWaz <fur.waz06@gmail.com> Date: Fri, 11 Nov 2022 23:12:17 +0100 Subject: [PATCH] Cleaned code, switched to class popups --- .../main/java/Structures/BuildingInfo.java | 3 + .../src/main/java/Structures/RoomInfo.java | 1 + .../com/furwaz/roomview/MainActivity.java | 72 ++++++------------- .../main/res/drawable/ic_baseline_edit_24.xml | 5 ++ .../app/src/main/res/layout/building_tile.xml | 11 ++- .../app/src/main/res/layout/pathway_tile.xml | 6 +- .../app/src/main/res/values-fr/strings.xml | 3 + Sources/app/src/main/res/values/strings.xml | 3 + 8 files changed, 50 insertions(+), 54 deletions(-) create mode 100644 Sources/app/src/main/res/drawable/ic_baseline_edit_24.xml diff --git a/Sources/app/src/main/java/Structures/BuildingInfo.java b/Sources/app/src/main/java/Structures/BuildingInfo.java index cff2e23..e449cd2 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 cf85fc2..5d52b18 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 fa296d2..8df82b2 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 0000000..afb9aac --- /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 7d7bb4f..a3be8ca 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 09230c6..a542f2b 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 c74c2cb..04a0a21 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 2fab35e..8f5a985 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 -- GitLab