ecra principal

This commit is contained in:
2026-01-21 10:20:06 +00:00
parent 47665e3520
commit 19c889fcd2
16 changed files with 1280 additions and 197 deletions

View File

@@ -1,6 +1,13 @@
package com.example.pap_teste;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
@@ -8,10 +15,18 @@ import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import android.widget.Button;
import java.util.ArrayList;
import java.util.List;
public class GestaoStaffActivity extends AppCompatActivity {
private final List<StaffAssignment> staffAssignments = new ArrayList<>();
private ArrayAdapter<String> staffAdapter;
private ListView listStaffMesas;
private EditText inputNomeStaff;
private Spinner spinnerMesaStaff;
private TextView txtMensagemStaff;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -27,6 +42,112 @@ public class GestaoStaffActivity extends AppCompatActivity {
if (back != null) {
back.setOnClickListener(v -> finish());
}
bindViews();
setupMesaSpinner();
setupList();
setupFormActions();
}
private void bindViews() {
listStaffMesas = findViewById(R.id.listStaffMesas);
inputNomeStaff = findViewById(R.id.inputNomeStaff);
spinnerMesaStaff = findViewById(R.id.spinnerMesaStaff);
txtMensagemStaff = findViewById(R.id.txtMensagemStaff);
}
/**
* Preenche o spinner com uma lista simples de mesas (120).
* Mais tarde isto pode ser ligado às mesas reais configuradas em "Gerir Mesas".
*/
private void setupMesaSpinner() {
ArrayAdapter<String> mesaAdapter = new ArrayAdapter<>(
this,
android.R.layout.simple_spinner_dropdown_item
);
for (int i = 1; i <= 20; i++) {
mesaAdapter.add(String.format("Mesa %02d", i));
}
spinnerMesaStaff.setAdapter(mesaAdapter);
}
private void setupList() {
staffAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_activated_1);
listStaffMesas.setAdapter(staffAdapter);
refreshList();
listStaffMesas.setOnItemClickListener((parent, view, position, id) -> {
StaffAssignment item = staffAssignments.get(position);
inputNomeStaff.setText(item.nome);
int index = Math.max(0, Math.min(spinnerMesaStaff.getCount() - 1, item.mesaNumero - 1));
spinnerMesaStaff.setSelection(index);
txtMensagemStaff.setText(String.format("A editar: %s (Mesa %02d)", item.nome, item.mesaNumero));
});
}
private void setupFormActions() {
Button btnAtribuir = findViewById(R.id.btnAtribuirStaff);
if (btnAtribuir != null) {
btnAtribuir.setOnClickListener(v -> guardarAtribuicao());
}
}
private void guardarAtribuicao() {
String nome = inputNomeStaff != null ? inputNomeStaff.getText().toString().trim() : "";
if (nome.isEmpty()) {
Toast.makeText(this, "Indique o nome do funcionário.", Toast.LENGTH_SHORT).show();
return;
}
if (spinnerMesaStaff == null || spinnerMesaStaff.getSelectedItem() == null) {
Toast.makeText(this, "Selecione uma mesa.", Toast.LENGTH_SHORT).show();
return;
}
int mesaNumero = spinnerMesaStaff.getSelectedItemPosition() + 1;
StaffAssignment existente = findByNome(nome);
if (existente == null) {
staffAssignments.add(new StaffAssignment(nome, mesaNumero));
txtMensagemStaff.setText(String.format("%s atribuído à mesa %02d.", nome, mesaNumero));
} else {
existente.mesaNumero = mesaNumero;
txtMensagemStaff.setText(String.format("Mesa de %s atualizada para %02d.", nome, mesaNumero));
}
refreshList();
}
private StaffAssignment findByNome(String nome) {
for (StaffAssignment item : staffAssignments) {
if (item.nome.equalsIgnoreCase(nome)) {
return item;
}
}
return null;
}
private void refreshList() {
if (staffAdapter == null) return;
staffAdapter.clear();
for (StaffAssignment item : staffAssignments) {
String resumo = String.format("%s • Mesa %02d", item.nome, item.mesaNumero);
staffAdapter.add(resumo);
}
staffAdapter.notifyDataSetChanged();
}
private static class StaffAssignment {
String nome;
int mesaNumero;
StaffAssignment(String nome, int mesaNumero) {
this.nome = nome;
this.mesaNumero = mesaNumero;
}
}
}