diff --git a/Sources/app/src/main/java/Popups/BuildingPopup.java b/Sources/app/src/main/java/Popups/BuildingPopup.java new file mode 100644 index 0000000000000000000000000000000000000000..3ae616a389a638ea74aecddb08687031a3aca2e2 --- /dev/null +++ b/Sources/app/src/main/java/Popups/BuildingPopup.java @@ -0,0 +1,105 @@ +package Popups; + +import android.content.Context; +import android.text.Editable; +import android.text.TextWatcher; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.TextView; + +import androidx.appcompat.app.AlertDialog; + +import com.furwaz.roomview.R; + +import Common.BuildingManager; +import Common.Callback; + +public class BuildingPopup { + public static final int MODE_NEW = 1; + public static final int MODE_EDIT = 2; + + AlertDialog dialog = null; + TextView b_err = null; + EditText b_name = null; + Button validate_btn = null; + Button cancel_btn = null; + TextView popup_title = null; + + public BuildingPopup(Context context, Callback onCreate, Callback onCancel, Callback onValidate, int mode) { + AlertDialog.Builder builder = new AlertDialog.Builder(context); + dialog = builder.create(); + LayoutInflater factory = LayoutInflater.from(context); + View popup = factory.inflate(R.layout.add_building_popup, null); + dialog.setView(popup); + + dialog.setOnShowListener(dialogInterface -> { + b_err = popup.findViewById(R.id.building_input_error_msg); + b_name = popup.findViewById(R.id.input_building_name); + validate_btn = popup.findViewById(R.id.btn_validate_building); + cancel_btn = popup.findViewById(R.id.btn_cancel_building); + popup_title = popup.findViewById(R.id.building_popup_title); + + onCreate.call(this); + + String title = context.getResources().getString( (mode == MODE_EDIT)? R.string.edit_building : R.string.new_building ); + String btn_text = context.getResources().getString( (mode == MODE_EDIT)? R.string.edit : R.string.create ); + popup_title.setText(title); + validate_btn.setText(btn_text); + 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(context.getResources().getString(R.string.specify_building_name)); + return; + } + if (BuildingManager.getBuilding(input) != null) { + b_err.setText(context.getResources().getString(R.string.building_exists)); + return; + } + if (input.contains("/")) { + b_err.setText(context.getResources().getString(R.string.building_invalid)); + return; + } + // everything is correct, display the button + validate_btn.setEnabled(true); + } + }); + + cancel_btn.setOnClickListener(view -> onCancel.call(this)); + + validate_btn.setOnClickListener(view -> onValidate.call(this)); + }); + } + + public void show() { + dialog.show(); + } + + public void dismiss() { + dialog.dismiss(); + } + + public Button getCancel_btn() { + return cancel_btn; + } + + public Button getValidate_btn() { + return validate_btn; + } + + public EditText getInput() { + return b_name; + } + + public TextView getTitle() { + return popup_title; + } +} diff --git a/Sources/app/src/main/java/Popups/RoomPopup.java b/Sources/app/src/main/java/Popups/RoomPopup.java new file mode 100644 index 0000000000000000000000000000000000000000..f00a796f39b2732d103079316c84bdaf1430d55c --- /dev/null +++ b/Sources/app/src/main/java/Popups/RoomPopup.java @@ -0,0 +1,92 @@ +package Popups; + +import android.content.Context; +import android.text.Editable; +import android.text.TextWatcher; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.TextView; + +import androidx.appcompat.app.AlertDialog; + +import com.furwaz.roomview.BuildingActivity; +import com.furwaz.roomview.R; + +import Common.Callback; +import Structures.BuildingInfo; +import Structures.RoomInfo; + +public class RoomPopup { + public static final int MODE_NEW = 1; + public static final int MODE_EDIT = 2; + + AlertDialog dialog = null; + TextView r_err = null; + EditText r_name = null; + Button validate_btn = null; + Button cancel_btn = null; + TextView room_title = null; + + public RoomPopup(Context context, BuildingInfo building, Callback onCreate, Callback onCancel, Callback onValidate, int mode) { + AlertDialog.Builder builder = new AlertDialog.Builder(context); + dialog = builder.create(); + LayoutInflater factory = LayoutInflater.from(context); + View popup = factory.inflate(R.layout.add_room_popup, null); + dialog.setView(popup); + + dialog.setOnShowListener(dialogInterface -> { + r_err = popup.findViewById(R.id.room_input_error_msg); + r_name = popup.findViewById(R.id.input_room_name); + validate_btn = popup.findViewById(R.id.btn_validate_room); + cancel_btn = popup.findViewById(R.id.btn_cancel_room); + room_title = popup.findViewById(R.id.room_popup_title); + + onCreate.call(this); + + String title = context.getResources().getString( (mode == MODE_EDIT)? R.string.edit_room : R.string.new_room ); + String btn_text = context.getResources().getString( (mode == MODE_EDIT)? R.string.edit : R.string.create ); + room_title.setText(title); + validate_btn.setText(btn_text); + 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(context.getResources().getString(R.string.specify_room_name)); + return; + } + if (building.getRoom(input) != null) { + r_err.setText(context.getResources().getString(R.string.room_exists)); + return; + } + // everything is correct, display the button + validate_btn.setEnabled(true); + } + }); + + cancel_btn.setOnClickListener(view -> onCancel.call(this)); + + validate_btn.setOnClickListener(view -> onValidate.call(this)); + }); + dialog.show(); + } + + public void dismiss() { + dialog.dismiss(); + } + + public EditText getInput() { + return r_name; + } + + public void show() { + dialog.show(); + } +}