diff --git a/Sources/app/src/main/java/com/furwaz/roomview/BuildingActivity.java b/Sources/app/src/main/java/com/furwaz/roomview/BuildingActivity.java index 0cd6e34c53c2d757f147c94235fe0a89c9f264ee..0a12b2cbe593d422f6124d0324944026da170c76 100644 --- a/Sources/app/src/main/java/com/furwaz/roomview/BuildingActivity.java +++ b/Sources/app/src/main/java/com/furwaz/roomview/BuildingActivity.java @@ -12,6 +12,7 @@ import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ImageButton; +import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.SearchView; @@ -23,12 +24,14 @@ import java.util.Date; import Common.BuildingManager; import Common.InfoBinding; +import Popups.BuildingPopup; +import Popups.RoomPopup; import Structures.BuildingInfo; import Structures.RoomInfo; import Views.InfoAdapter; public class BuildingActivity extends AppCompatActivity { - InfoAdapter room_adapter = null; + InfoAdapter<RoomInfo> room_adapter = null; BuildingInfo building; @Override @@ -46,7 +49,7 @@ public class BuildingActivity extends AppCompatActivity { ListView room_lv = findViewById(R.id.room_list); LinearLayout noDataLayout = findViewById(R.id.no_room_layout); - room_adapter = new InfoAdapter(this, building.getRooms(), noDataLayout, R.layout.room_tile); + room_adapter = new InfoAdapter<RoomInfo>(this, building.getRooms(), noDataLayout, R.layout.room_tile); room_lv.setAdapter(room_adapter); room_adapter.setOnRemoveListener(param -> { @@ -85,9 +88,10 @@ public class BuildingActivity extends AppCompatActivity { }); ImageButton add_btn = findViewById(R.id.add_room_btn); - add_btn.setOnClickListener(view -> { - showAddRoomPopup(view); - }); + add_btn.setOnClickListener(this::showAddRoomPopup); + + ImageButton edit_btn = findViewById(R.id.edit_building_name); + edit_btn.setOnClickListener(view -> showEditPopup()); TextView building_tv_name = findViewById(R.id.building_name); building_tv_name.setText(building.getName()); @@ -99,51 +103,48 @@ public class BuildingActivity extends AppCompatActivity { room_adapter.setData(building.getRooms()); } + protected void showEditPopup() { + new BuildingPopup( + BuildingActivity.this, + param -> { + ((BuildingPopup) param).getInput().setText(building.getName()); + return null; + }, + param -> { + ((BuildingPopup) param).dismiss(); + return null; + }, + param -> { + BuildingPopup popup = ((BuildingPopup) param); + building.setName(popup.getInput().getText().toString()); + ((TextView) findViewById(R.id.building_name)).setText(building.getName()); + popup.dismiss(); + return null; + }, + BuildingPopup.MODE_EDIT + ).show(); + } + protected void showAddRoomPopup(View v) { - AlertDialog.Builder builder = new AlertDialog.Builder(BuildingActivity.this); - AlertDialog dialog = builder.create(); - LayoutInflater factory = LayoutInflater.from(BuildingActivity.this); - View popup = factory.inflate(R.layout.add_room_popup, null); - dialog.setView(popup); - - dialog.setOnShowListener(dialogInterface -> { - TextView r_err = popup.findViewById(R.id.room_input_error_msg); - EditText r_name = popup.findViewById(R.id.input_room_name); - Button validate_btn = popup.findViewById(R.id.btn_validate_room); - Button cancel_btn = popup.findViewById(R.id.btn_cancel_room); - - validate_btn.setEnabled(false); - r_err.setText(""); - r_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); - r_err.setText(""); - String input = editable.toString(); - if (input.length() == 0) { - r_err.setText(getResources().getString(R.string.specify_room_name)); - return; - } - if (building.getRoom(input) != null) { - r_err.setText(getResources().getString(R.string.room_exists)); - return; - } - // everything is correct, display the button - validate_btn.setEnabled(true); - } - }); - - cancel_btn.setOnClickListener(view -> { - dialog.dismiss(); - }); - - validate_btn.setOnClickListener(view -> { - building.addRoom(new RoomInfo(r_name.getText().toString())); - room_adapter.setData(building.getRooms()); - dialog.dismiss(); - }); - }); - dialog.show(); + new RoomPopup( + BuildingActivity.this, + building, + param -> { + ((RoomPopup) param).getInput().setText(""); + return null; + }, + param -> { + ((RoomPopup) param).dismiss(); + return null; + }, + param -> { + RoomPopup popup = ((RoomPopup) param); + building.addRoom(new RoomInfo(popup.getInput().getText().toString())); + room_adapter.setData(building.getRooms()); + popup.dismiss(); + return null; + }, + RoomPopup.MODE_NEW + ).show(); } } \ No newline at end of file diff --git a/Sources/app/src/main/java/com/furwaz/roomview/RoomActivity.java b/Sources/app/src/main/java/com/furwaz/roomview/RoomActivity.java index 3e63bcb695da720d20543a91b2cac36927b70a25..e408d8b2fffa0990bf87a5f1592c3c1c749569aa 100644 --- a/Sources/app/src/main/java/com/furwaz/roomview/RoomActivity.java +++ b/Sources/app/src/main/java/com/furwaz/roomview/RoomActivity.java @@ -28,6 +28,7 @@ import java.util.Locale; import Common.BuildingManager; import Common.InfoBinding; +import Popups.RoomPopup; import Structures.BuildingInfo; import Structures.PathDoor; import Structures.PathInfo; @@ -142,6 +143,9 @@ public class RoomActivity extends AppCompatActivity { else showAddZonePopup(view); }); + ImageButton edit_btn = findViewById(R.id.edit_room_name); + edit_btn.setOnClickListener(view -> showEditPopup()); + TextView room_tv_name = findViewById(R.id.room_name); room_tv_name.setText(room.getName()); } @@ -193,6 +197,30 @@ public class RoomActivity extends AppCompatActivity { tv.setPadding(padding, padding, padding, padding); } + protected void showEditPopup() { + new RoomPopup( + this, + building, + param -> { + ((RoomPopup) param).getInput().setText(room.getName()); + return null; + }, + param -> { + ((RoomPopup) param).dismiss(); + return null; + }, + param -> { + RoomPopup popup = ((RoomPopup) param); + String newName = popup.getInput().getText().toString(); + ((TextView) findViewById(R.id.room_name)).setText(newName); + room.setName(newName); + popup.dismiss(); + return null; + }, + RoomPopup.MODE_EDIT + ).show(); + } + protected void showAddZonePopup(View v) { AlertDialog.Builder builder = new AlertDialog.Builder(RoomActivity.this); AlertDialog dialog = builder.create(); diff --git a/Sources/app/src/main/res/layout/activity_building.xml b/Sources/app/src/main/res/layout/activity_building.xml index 05d32650c7eb901abece1294c5053cc4563c3dc9..62ba0eebf7b4bab5d83bf79574dcc6e0f2e246b2 100644 --- a/Sources/app/src/main/res/layout/activity_building.xml +++ b/Sources/app/src/main/res/layout/activity_building.xml @@ -11,20 +11,33 @@ android:layout_height="match_parent" android:orientation="vertical" android:background="@color/slate_50"> - <TextView - android:id="@+id/building_name" + <LinearLayout android:layout_width="match_parent" - android:layout_height="wrap_content" - android:gravity="center" - android:paddingBottom="20dp" - android:paddingTop="20dp" - android:textSize="40sp" - android:text="" - android:maxLines="1" - android:ellipsize="end" - android:scrollHorizontally="true" - android:textStyle="bold" - android:textColor="@color/blue_500"/> + android:layout_height="wrap_content"> + <TextView + android:id="@+id/building_name" + android:layout_width="0dp" + android:layout_weight="6" + android:layout_height="wrap_content" + android:gravity="center" + android:paddingBottom="20dp" + android:paddingTop="20dp" + android:textSize="40sp" + android:text="" + android:maxLines="1" + android:ellipsize="end" + android:scrollHorizontally="true" + android:textStyle="bold" + android:textColor="@color/blue_500"/> + <ImageButton + android:id="@+id/edit_building_name" + android:layout_width="0dp" + android:layout_weight="1" + android:layout_height="wrap_content" + android:background="#00000000" + android:src="@drawable/ic_baseline_edit_24" + android:layout_gravity="center"/> + </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" diff --git a/Sources/app/src/main/res/layout/activity_room.xml b/Sources/app/src/main/res/layout/activity_room.xml index e8eb78156c5fc8da258b8cd15680cdc3bb820f29..06753c24c7dcc0a76f75faf32c6083f20391cb53 100644 --- a/Sources/app/src/main/res/layout/activity_room.xml +++ b/Sources/app/src/main/res/layout/activity_room.xml @@ -11,20 +11,34 @@ android:layout_height="match_parent" android:orientation="vertical" android:background="@color/slate_50"> - <TextView - android:id="@+id/room_name" + <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" - android:gravity="center" - android:paddingBottom="20dp" - android:paddingTop="20dp" - android:textSize="40sp" - android:text="" - android:maxLines="1" - android:ellipsize="end" - android:scrollHorizontally="true" - android:textStyle="bold" - android:textColor="@color/blue_500"/> + android:orientation="horizontal"> + <TextView + android:id="@+id/room_name" + android:layout_width="0dp" + android:layout_weight="6" + android:layout_height="wrap_content" + android:gravity="center" + android:paddingBottom="20dp" + android:paddingTop="20dp" + android:textSize="40sp" + android:text="" + android:maxLines="1" + android:ellipsize="end" + android:scrollHorizontally="true" + android:textStyle="bold" + android:textColor="@color/blue_500"/> + <ImageButton + android:id="@+id/edit_room_name" + android:layout_width="0dp" + android:layout_weight="1" + android:layout_height="wrap_content" + android:background="#00000000" + android:src="@drawable/ic_baseline_edit_24" + android:layout_gravity="center"/> + </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" diff --git a/Sources/app/src/main/res/layout/add_building_popup.xml b/Sources/app/src/main/res/layout/add_building_popup.xml index 24f6f0b5bb3332114632a45824588d7a47a83f75..946e78fcc8c43edb4bffad58ab68ac8a40c6f142 100644 --- a/Sources/app/src/main/res/layout/add_building_popup.xml +++ b/Sources/app/src/main/res/layout/add_building_popup.xml @@ -18,10 +18,11 @@ android:layout_marginBottom="20dp"> <TextView + android:id="@+id/building_popup_title" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/slate_200" - android:text="@string/new_building" + android:text="" android:textColor="@color/blue_500" android:textSize="20sp" android:layout_marginBottom="4dp" diff --git a/Sources/app/src/main/res/layout/add_room_popup.xml b/Sources/app/src/main/res/layout/add_room_popup.xml index 3c6ee5f997eb4fa76e378b277cda84a9bf3fb10f..664d0095f267788772acec5e657583f1838e5a44 100644 --- a/Sources/app/src/main/res/layout/add_room_popup.xml +++ b/Sources/app/src/main/res/layout/add_room_popup.xml @@ -18,6 +18,7 @@ android:layout_marginBottom="20dp"> <TextView + android:id="@+id/room_popup_title" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/slate_200"