first commit

This commit is contained in:
2026-04-27 15:06:38 +01:00
commit f08e661796
113 changed files with 8669 additions and 0 deletions

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#DDDDDD" />
<corners android:radius="16dp" />
</shape>
</selector>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#EDEDED" />
<corners android:radius="10dp" />
</shape>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FFFFFF" />
<stroke android:width="2dp" android:color="#888" />
<corners android:radius="10dp" />
</shape>

View File

@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="#2200001A">
<item>
<shape android:shape="rectangle">
<solid android:color="#00001A" />
<corners android:radius="12dp" />
<padding
android:left="12dp"
android:top="8dp"
android:right="12dp"
android:bottom="8dp" />
</shape>
</item>
</ripple>

Binary file not shown.

After

Width:  |  Height:  |  Size: 526 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 485 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 732 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 548 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 478 KiB

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="#000" />
</shape>
</selector>

View File

@@ -0,0 +1,170 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path
android:fillColor="#3DDC84"
android:pathData="M0,0h108v108h-108z" />
<path
android:fillColor="#00000000"
android:pathData="M9,0L9,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,0L19,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,0L29,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,0L39,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,0L49,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,0L59,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,0L69,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,0L79,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M89,0L89,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M99,0L99,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,9L108,9"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,19L108,19"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,29L108,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,39L108,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,49L108,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,59L108,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,69L108,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,79L108,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,89L108,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,99L108,99"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,29L89,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,39L89,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,49L89,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,59L89,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,69L89,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,79L89,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,19L29,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,19L39,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,19L49,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,19L59,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,19L69,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,19L79,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
</vector>

View File

@@ -0,0 +1,30 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path android:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="85.84757"
android:endY="92.4963"
android:startX="42.9492"
android:startY="49.59793"
android:type="linear">
<item
android:color="#44000000"
android:offset="0.0" />
<item
android:color="#00000000"
android:offset="1.0" />
</gradient>
</aapt:attr>
</path>
<path
android:fillColor="#FFFFFF"
android:fillType="nonZero"
android:pathData="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z"
android:strokeWidth="1"
android:strokeColor="#00000000" />
</vector>

View File

@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#757575"
android:pathData="M12,4.5C7,4.5 2.73,7.61 1,12c1.73,4.39 5.99,7.5 11,7.5s9.27,-3.11 11,-7.5c-1.73,-4.39 -6,-7.5 -11,-7.5zM12,17c-2.76,0 -5,-2.24 -5,-5s2.24,-5 5,-5 5,2.24 5,5 -2.24,5 -5,5zM12,9c-1.66,0 -3,1.34 -3,3s1.34,3 3,3 3,-1.34 3,-3 -1.34,-3 -3,-3z"/>
</vector>

View File

@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#757575"
android:pathData="M12,7c2.76,0 5,2.24 5,5 0,0.65 -0.13,1.26 -0.36,1.83l2.92,2.92c1.51,-1.26 2.7,-2.89 3.43,-4.75 -1.73,-4.39 -6,-7.5 -11,-7.5 -1.4,0 -2.74,0.25 -3.98,0.7l2.16,2.16C10.74,7.13 11.35,7 12,7zM2,4.27l2.28,2.28 0.46,0.46C3.08,8.3 1.78,10.02 1,12c1.73,4.39 5.99,7.5 11,7.5 1.55,0 3.03,-0.3 4.38,-0.84l0.42,0.42L19.73,22 21,20.73 3.27,3 2,4.27zM7.53,9.8l1.55,1.55c-0.05,0.21 -0.08,0.43 -0.08,0.65 0,1.66 1.34,3 3,3 0.22,0 0.44,-0.03 0.65,-0.08l1.55,1.55c-0.67,0.33 -1.41,0.53 -2.2,0.53 -2.76,0 -5,-2.24 -5,-5 0,-0.79 0.2,-1.53 0.53,-2.2zM11.84,9.02l3.15,3.15 0.02,-0.16c0,-1.66 -1.34,-3 -3,-3l-0.17,0.01z"/>
</vector>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#EFEFEF" />
<corners android:radius="10dp" />
</shape>
</selector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#8BC34A" />
<corners android:radius="10dp" />
</shape>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FFFFFF" />
<corners android:radius="10dp" />
</shape>

View File

@@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/accountCreatedRoot"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorBackground"
tools:context=".AccountCreatedActivity">
<com.google.android.material.button.MaterialButton
android:id="@+id/btnVoltar"
style="@style/Widget.Material3.Button.TextButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:text="← Voltar"
android:textAllCaps="false"
android:textColor="@color/colorTextSecondary"
android:textSize="16sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.google.android.material.card.MaterialCardView
android:id="@+id/cardAccountCreated"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginEnd="24dp"
android:layout_marginTop="32dp"
app:cardBackgroundColor="@color/colorSurface"
app:cardCornerRadius="20dp"
app:cardElevation="6dp"
app:layout_constraintTop_toBottomOf="@id/btnVoltar"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="32dp">
<TextView
android:id="@+id/txtCongrats"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Conta criada!"
android:textColor="@color/colorTextPrimary"
android:textSize="26sp"
android:fontFamily="sans-serif-medium" />
<TextView
android:id="@+id/txtWelcome"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:text="Nome"
android:textColor="@color/colorTextSecondary"
android:textSize="16sp" />
<TextView
android:id="@+id/txtEmail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:text="email@example.com"
android:textColor="@color/colorTextSecondary"
android:textSize="14sp" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginTop="20dp"
android:background="@color/colorDivider" />
<TextView
android:id="@+id/txtRoleLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="Função atribuída:"
android:textColor="@color/colorTextPrimary"
android:textSize="15sp"
android:fontFamily="sans-serif-medium" />
<TextView
android:id="@+id/txtRole"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:text="ADMIN"
android:textColor="@color/colorSuccess"
android:textSize="14sp"
android:textStyle="bold" />
<TextView
android:id="@+id/txtInstructions"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="Vamos configurar o seu espaço. Pode aceder à sua área agora."
android:textColor="@color/colorTextSecondary"
android:textSize="14sp"
android:lineSpacingExtra="4dp" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btnContinuar"
android:layout_width="match_parent"
android:layout_height="56dp"
android:layout_marginTop="32dp"
app:cornerRadius="14dp"
app:backgroundTint="@color/colorPrimary"
android:text="Ir para a minha área"
android:textAllCaps="false"
android:textColor="@color/white"
android:textSize="16sp" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,164 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorBackground"
tools:context=".AddStaffActivity">
<com.google.android.material.button.MaterialButton
android:id="@+id/btnVoltarAddStaff"
style="@style/Widget.Material3.Button.TextButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:text="← Voltar"
android:textAllCaps="false"
android:textColor="@color/colorError"
android:textSize="16sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/txtAdicionarTitulo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="Novo Funcionário"
android:textColor="@color/colorTextPrimary"
android:textSize="28sp"
android:fontFamily="sans-serif-medium"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/btnVoltarAddStaff" />
<TextView
android:id="@+id/txtAdicionarDesc"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="32dp"
android:layout_marginTop="8dp"
android:text="Introduza os dados e atribuições deste membro:"
android:textColor="@color/colorTextSecondary"
android:textAlignment="center"
android:textSize="14sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/txtAdicionarTitulo" />
<com.google.android.material.card.MaterialCardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="32dp"
app:cardCornerRadius="20dp"
app:cardElevation="2dp"
app:cardBackgroundColor="@color/colorSurface"
app:layout_constraintTop_toBottomOf="@id/txtAdicionarDesc">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="24dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Nome do Funcionário"
android:textColor="@color/colorTextPrimary"
android:textSize="15sp"
android:fontFamily="sans-serif-medium" />
<EditText
android:id="@+id/nammeEditText"
android:layout_width="match_parent"
android:layout_height="54dp"
android:layout_marginTop="10dp"
android:background="@drawable/input_bg"
android:hint="Ex: João Silva"
android:inputType="textPersonName"
android:paddingHorizontal="16dp"
android:textColor="@color/colorTextPrimary" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:text="Zona de Trabalho"
android:textColor="@color/colorTextPrimary"
android:textSize="15sp"
android:fontFamily="sans-serif-medium" />
<LinearLayout
android:id="@+id/zoneLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:orientation="horizontal"
android:gravity="center_vertical">
<Spinner
android:id="@+id/zonaSpinner"
android:layout_width="0dp"
android:layout_height="54dp"
android:layout_weight="1"
android:background="@drawable/input_bg" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btnAddZone"
android:layout_width="54dp"
android:layout_height="54dp"
android:layout_marginStart="12dp"
app:cornerRadius="12dp"
app:backgroundTint="@color/colorPrimary"
android:insetTop="0dp"
android:insetBottom="0dp"
android:paddingTop="0dp"
android:paddingBottom="0dp"
android:text="+"
android:textColor="@color/white"
android:textSize="24sp" />
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:text="Mesa a Atribuir"
android:textColor="@color/colorTextPrimary"
android:textSize="15sp"
android:fontFamily="sans-serif-medium" />
<LinearLayout
android:id="@+id/mesaLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:orientation="horizontal">
<Spinner
android:id="@+id/mesaSpinner"
android:layout_width="match_parent"
android:layout_height="54dp"
android:background="@drawable/input_bg" />
</LinearLayout>
<com.google.android.material.button.MaterialButton
android:id="@+id/addButton"
android:layout_width="match_parent"
android:layout_height="56dp"
android:layout_marginTop="36dp"
app:cornerRadius="14dp"
app:backgroundTint="@color/colorPrimary"
android:text="Adicionar Membro"
android:textAllCaps="false"
android:textColor="@color/white"
android:textSize="16sp" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,126 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/checkinRoot"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorBackground"
tools:context=".CheckInAntecipadoActivity">
<com.google.android.material.button.MaterialButton
android:id="@+id/btnVoltar"
style="@style/Widget.Material3.Button.TextButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:text="← Voltar"
android:textAllCaps="false"
android:textColor="@color/colorTextSecondary"
android:textSize="16sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/txtTituloCheckin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Check-in antecipado"
android:textColor="@color/colorTextPrimary"
android:textSize="28sp"
android:fontFamily="sans-serif-medium"
app:layout_constraintTop_toBottomOf="@id/btnVoltar"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginTop="20dp" />
<TextView
android:id="@+id/txtDescricaoCheckin"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="32dp"
android:layout_marginTop="12dp"
android:text="Aqui poderá confirmar a sua chegada ao restaurante."
android:textColor="@color/colorTextSecondary"
android:textSize="14sp"
android:textAlignment="center"
app:layout_constraintTop_toBottomOf="@id/txtTituloCheckin"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<TextView
android:id="@+id/txtDistancia"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="40dp"
android:text="A calcular distância..."
android:textColor="@color/colorPrimary"
android:textSize="20sp"
android:fontFamily="sans-serif-medium"
app:layout_constraintTop_toBottomOf="@id/txtDescricaoCheckin"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<TextView
android:id="@+id/txtStatusDistancia"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="32dp"
android:layout_marginTop="12dp"
android:text="Por favor, aguarde enquanto validamos a sua localização."
android:textAlignment="center"
android:textColor="@color/colorTextSecondary"
android:textSize="14sp"
app:layout_constraintTop_toBottomOf="@id/txtDistancia"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<TextView
android:id="@+id/txtEnderecoRestaurante"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="32dp"
android:layout_marginTop="24dp"
android:text="A carregar morada..."
android:textAlignment="center"
android:textColor="@color/colorTextPrimary"
android:textSize="15sp"
android:textStyle="italic"
app:layout_constraintTop_toBottomOf="@id/txtStatusDistancia"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btnAbrirMapa"
style="@style/Widget.Material3.Button.TextButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="Ver no Mapa"
android:textAllCaps="false"
android:textColor="@color/colorPrimary"
app:layout_constraintTop_toBottomOf="@id/txtEnderecoRestaurante"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btnConfirmarChegada"
android:layout_width="0dp"
android:layout_height="56dp"
android:layout_marginHorizontal="32dp"
android:layout_marginTop="32dp"
app:cornerRadius="14dp"
app:backgroundTint="@color/colorSuccess"
android:text="Confirmar Chegada"
android:textAllCaps="false"
android:textColor="@color/white"
android:textSize="16sp"
android:enabled="false"
app:layout_constraintTop_toBottomOf="@id/btnAbrirMapa"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,290 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/clientRoot"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorBackground"
tools:context=".ClientDashboardActivity">
<!-- Top Bar with Profile Icon -->
<com.google.android.material.card.MaterialCardView
android:id="@+id/cardProfile"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginStart="24dp"
android:layout_marginTop="24dp"
app:cardCornerRadius="25dp"
app:cardElevation="2dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:id="@+id/imgProfile"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:src="@drawable/circle_bg" />
</com.google.android.material.card.MaterialCardView>
<TextView
android:id="@+id/txtClientGreeting"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:text="Olá, convidado"
android:textColor="@color/colorTextPrimary"
android:textSize="22sp"
android:fontFamily="sans-serif-medium"
app:layout_constraintBottom_toBottomOf="@id/cardProfile"
app:layout_constraintStart_toEndOf="@id/cardProfile"
app:layout_constraintTop_toTopOf="@id/cardProfile" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btnVoltar"
style="@style/Widget.Material3.Button.TextButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:text="Sair"
android:textAllCaps="false"
android:textColor="@color/colorError"
app:layout_constraintBottom_toBottomOf="@id/cardProfile"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/cardProfile" />
<ScrollView
android:id="@+id/clientScroll"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginTop="24dp"
android:fillViewport="true"
android:scrollbars="none"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/cardProfile">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="40dp">
<!-- Categories Section -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:text="Categorias"
android:textColor="@color/colorTextPrimary"
android:textSize="20sp"
android:fontFamily="sans-serif-medium" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvCategories"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:clipToPadding="false"
android:orientation="horizontal"
android:paddingStart="16dp"
android:paddingEnd="16dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/item_food_category" />
<!-- Integrated Next Reservation Card -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginTop="32dp"
android:text="A sua próxima reserva"
android:textColor="@color/colorTextPrimary"
android:textSize="20sp"
android:fontFamily="sans-serif-medium" />
<com.google.android.material.card.MaterialCardView
android:id="@+id/cardNextReservation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="16dp"
app:cardBackgroundColor="@color/colorSurface"
app:cardCornerRadius="24dp"
app:cardElevation="6dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="24dp">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/txtResTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Sabor &amp; Arte"
android:textColor="@color/colorTextPrimary"
android:textSize="20sp"
android:fontFamily="sans-serif-medium" />
<TextView
android:id="@+id/txtResTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/txtResTitle"
android:layout_marginTop="6dp"
android:text="Amanhã às 20h00 • 2 pessoas"
android:textColor="@color/colorTextSecondary"
android:textSize="15sp" />
<ImageView
android:id="@+id/imgResIcon"
android:layout_width="56dp"
android:layout_height="56dp"
android:layout_alignParentEnd="true"
android:src="@drawable/circle_bg"
app:tint="@color/colorPrimary" />
</RelativeLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginVertical="20dp"
android:background="@color/colorDivider" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<com.google.android.material.button.MaterialButton
android:id="@+id/btnCheckIn"
android:layout_width="0dp"
android:layout_height="54dp"
android:layout_marginEnd="8dp"
android:layout_weight="1"
app:cornerRadius="14dp"
app:backgroundTint="@color/colorPrimary"
android:text="Check-in"
android:textAllCaps="false"
android:textColor="@color/white"
android:textSize="15sp" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btnPartilhar"
style="@style/Widget.Material3.Button.TonalButton"
android:layout_width="0dp"
android:layout_height="54dp"
android:layout_marginStart="8dp"
android:layout_weight="1"
app:cornerRadius="14dp"
android:text="Partilhar"
android:textAllCaps="false"
android:textSize="15sp" />
</LinearLayout>
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
<!-- Actions Section -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginTop="40dp"
android:text="Mais opções"
android:textColor="@color/colorTextPrimary"
android:textSize="20sp"
android:fontFamily="sans-serif-medium" />
<GridLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="16dp"
android:layout_marginTop="16dp"
android:columnCount="1">
<com.google.android.material.card.MaterialCardView
android:id="@+id/cardNewRes"
android:layout_width="match_parent"
android:layout_height="90dp"
android:layout_margin="8dp"
app:cardCornerRadius="16dp"
app:cardElevation="2dp"
app:cardBackgroundColor="@color/colorSurface">
<LinearLayout
android:id="@+id/btnNovaReserva"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
android:background="?attr/selectableItemBackground">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Reservar"
android:textColor="@color/colorTextPrimary"
android:textSize="18sp"
android:fontFamily="sans-serif-medium" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
<com.google.android.material.card.MaterialCardView
android:id="@+id/cardMinhasReservas"
android:layout_width="match_parent"
android:layout_height="90dp"
android:layout_margin="8dp"
app:cardCornerRadius="16dp"
app:cardElevation="2dp"
app:cardBackgroundColor="@color/colorSurface">
<LinearLayout
android:id="@+id/btnMinhasReservas"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
android:background="?attr/selectableItemBackground">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Minhas Reservas"
android:textColor="@color/colorTextPrimary"
android:textSize="18sp"
android:fontFamily="sans-serif-medium" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
</GridLayout>
<!-- Status Section -->
<TextView
android:id="@+id/txtClientStatus"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="32dp"
android:layout_marginTop="40dp"
android:text="Tudo pronto para a sua próxima refeição!"
android:textAlignment="center"
android:textColor="@color/colorTextSecondary"
android:textSize="15sp" />
<TextView
android:id="@+id/txtClientRole"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="8dp"
android:text="Modo Cliente"
android:textColor="#94A3B8"
android:textSize="12sp" />
</LinearLayout>
</ScrollView>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,176 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/definicoesRoot"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorBackground"
tools:context=".DefinicoesAdminActivity">
<com.google.android.material.button.MaterialButton
android:id="@+id/btnVoltar"
style="@style/Widget.Material3.Button.TextButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:text="← Voltar"
android:textAllCaps="false"
android:textColor="@color/colorTextSecondary"
android:textSize="16sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ScrollView
android:layout_width="0dp"
android:layout_height="0dp"
android:fillViewport="true"
android:scrollbars="none"
app:layout_constraintTop_toBottomOf="@id/btnVoltar"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingHorizontal="24dp"
android:paddingTop="8dp"
android:paddingBottom="48dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Definições do Estabelecimento"
android:textColor="@color/colorTextPrimary"
android:textSize="28sp"
android:fontFamily="sans-serif-medium"
android:textAlignment="center" />
<!-- Improved Logo using MaterialCardView -->
<com.google.android.material.card.MaterialCardView
android:layout_width="120dp"
android:layout_height="120dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="32dp"
app:cardCornerRadius="60dp"
app:cardElevation="2dp"
app:strokeWidth="1dp"
app:strokeColor="@color/colorDivider">
<ImageView
android:id="@+id/imgRestaurantLogo"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:src="@drawable/circle_bg" />
</com.google.android.material.card.MaterialCardView>
<com.google.android.material.button.MaterialButton
android:id="@+id/btnChangeLogo"
style="@style/Widget.Material3.Button.OutlinedButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="16dp"
android:text="Alterar Logótipo"
android:textAllCaps="false" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:text="Configure o raio de segurança para check-in antecipado e regras associadas."
android:textColor="@color/colorTextSecondary"
android:textAlignment="center"
android:textSize="14sp" />
<com.google.android.material.card.MaterialCardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
app:cardBackgroundColor="@color/colorSurface"
app:cardCornerRadius="20dp"
app:cardElevation="2dp"
app:strokeWidth="1dp"
app:strokeColor="@color/colorDivider">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="24dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Raio de Segurança (metros)"
android:textColor="@color/colorTextPrimary"
android:textSize="16sp"
android:fontFamily="sans-serif-medium" />
<EditText
android:id="@+id/inputRadius"
android:layout_width="match_parent"
android:layout_height="54dp"
android:layout_marginTop="12dp"
android:hint="Ex: 500"
android:inputType="number"
android:paddingHorizontal="16dp"
android:background="@drawable/input_bg"
android:textColor="@color/colorTextPrimary" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:text="Informação do Restaurante"
android:textColor="@color/colorTextPrimary"
android:textSize="16sp"
android:fontFamily="sans-serif-medium" />
<EditText
android:id="@+id/inputAddress"
android:layout_width="match_parent"
android:layout_height="54dp"
android:layout_marginTop="12dp"
android:hint="Morada (Ex: Rua Estreita, 12)"
android:inputType="textPostalAddress"
android:paddingHorizontal="16dp"
android:background="@drawable/input_bg"
android:textColor="@color/colorTextPrimary" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="Categoria"
android:textColor="@color/colorTextSecondary"
android:textSize="15sp" />
<Spinner
android:id="@+id/spinnerCategory"
android:layout_width="match_parent"
android:layout_height="54dp"
android:layout_marginTop="8dp"
android:background="@drawable/input_bg" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btnSaveSettings"
android:layout_width="match_parent"
android:layout_height="56dp"
android:layout_marginTop="32dp"
app:cornerRadius="14dp"
app:backgroundTint="@color/colorPrimary"
android:text="Guardar Definições"
android:textAllCaps="false"
android:textSize="16sp" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
</LinearLayout>
</ScrollView>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,183 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/detalhesReservasRoot"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorBackground"
tools:context=".DetalhesReservasActivity">
<com.google.android.material.button.MaterialButton
android:id="@+id/btnVoltar"
style="@style/Widget.Material3.Button.TextButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:text="← Voltar"
android:textAllCaps="false"
android:textColor="@color/colorTextSecondary"
android:textSize="16sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/txtTituloDetalhes"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Detalhes das reservas"
android:textColor="@color/colorTextPrimary"
android:textSize="26sp"
android:fontFamily="sans-serif-medium"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/btnVoltar"
android:layout_marginTop="20dp" />
<TextView
android:id="@+id/txtDescricaoDetalhes"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="32dp"
android:layout_marginTop="8dp"
android:text="Selecione uma reserva para ver os detalhes e atualizar o estado."
android:textColor="@color/colorTextSecondary"
android:textSize="14sp"
android:textAlignment="center"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/txtTituloDetalhes" />
<ListView
android:id="@+id/listReservas"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginStart="24dp"
android:layout_marginEnd="24dp"
android:layout_marginTop="24dp"
android:layout_marginBottom="16dp"
android:divider="@color/colorDivider"
android:dividerHeight="1dp"
android:scrollbars="none"
android:clipToPadding="false"
app:layout_constraintTop_toBottomOf="@id/txtDescricaoDetalhes"
app:layout_constraintBottom_toTopOf="@id/cardDetalhes"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<com.google.android.material.card.MaterialCardView
android:id="@+id/cardDetalhes"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginEnd="24dp"
android:layout_marginBottom="32dp"
app:cardBackgroundColor="@color/colorSurface"
app:cardCornerRadius="20dp"
app:cardElevation="10dp"
app:strokeWidth="1dp"
app:strokeColor="@color/colorDivider"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="24dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Reserva selecionada"
android:textColor="@color/colorTextPrimary"
android:textSize="18sp"
android:fontFamily="sans-serif-medium" />
<TextView
android:id="@+id/txtReservaInfo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:text="Selecione uma reserva"
android:textColor="@color/colorTextSecondary"
android:textSize="15sp" />
<TextView
android:id="@+id/txtReservaNotas"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:text=""
android:textColor="@color/colorTextSecondary"
android:textSize="14sp" />
<TextView
android:id="@+id/txtReservaEstado"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="Estado:"
android:textColor="@color/colorSuccess"
android:textSize="14sp"
android:textStyle="bold" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:orientation="horizontal">
<com.google.android.material.button.MaterialButton
android:id="@+id/btnConfirmarReserva"
android:layout_width="0dp"
android:layout_height="54dp"
android:layout_marginEnd="4dp"
android:layout_weight="1"
app:cornerRadius="12dp"
app:backgroundTint="@color/colorPrimary"
android:text="Confirmar"
android:textAllCaps="false"
android:textColor="@color/white" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btnCancelarReserva"
style="@style/Widget.Material3.Button.TonalButton"
android:layout_width="0dp"
android:layout_height="54dp"
android:layout_marginHorizontal="4dp"
android:layout_weight="1"
app:cornerRadius="12dp"
android:text="Recusar"
android:textAllCaps="false"
android:textColor="@color/colorTextPrimary" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btnApagarReserva"
style="@style/Widget.Material3.Button.OutlinedButton"
android:layout_width="0dp"
android:layout_height="54dp"
android:layout_marginStart="4dp"
android:layout_weight="1"
app:cornerRadius="12dp"
app:strokeColor="@color/colorError"
android:text="Apagar"
android:textAllCaps="false"
android:textColor="@color/colorError"
android:visibility="gone" />
</LinearLayout>
<TextView
android:id="@+id/txtMensagemReserva"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:text=""
android:textColor="@color/colorSuccess"
android:textSize="14sp" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,329 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/establishmentRoot"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorBackground"
tools:context=".EstablishmentDashboardActivity">
<com.google.android.material.button.MaterialButton
android:id="@+id/btnVoltar"
style="@style/Widget.Material3.Button.TextButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:text="← Voltar"
android:textAllCaps="false"
android:textColor="@color/colorTextSecondary"
android:textSize="16sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ScrollView
android:layout_width="0dp"
android:layout_height="0dp"
android:fillViewport="true"
android:scrollbars="none"
app:layout_constraintTop_toBottomOf="@id/btnVoltar"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="24dp">
<TextView
android:id="@+id/txtEstabTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Estabelecimento"
android:textColor="@color/colorTextPrimary"
android:textSize="28sp"
android:fontFamily="sans-serif-medium" />
<TextView
android:id="@+id/txtEstabSubtitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="Veja as reservas ao vivo e controle a ocupação."
android:textColor="@color/colorTextSecondary"
android:textSize="15sp"
android:lineSpacingExtra="2dp"/>
<TextView
android:id="@+id/txtEstabRole"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="Função: ADMIN"
android:textColor="@color/colorSuccess"
android:textSize="13sp"
android:textStyle="bold" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="32dp"
android:orientation="horizontal">
<com.google.android.material.card.MaterialCardView
android:id="@+id/cardReservasHoje"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="6dp"
android:layout_weight="1"
android:foreground="?attr/selectableItemBackground"
app:cardBackgroundColor="@color/colorSurface"
app:cardCornerRadius="16dp"
app:cardElevation="2dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical"
android:padding="16dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Reservas"
android:textColor="@color/colorTextSecondary"
android:textSize="13sp" />
<TextView
android:id="@+id/txtReservasHojeDash"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:text="00"
android:textColor="@color/colorPrimary"
android:textSize="30sp"
android:fontFamily="sans-serif-medium" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
<com.google.android.material.card.MaterialCardView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="6dp"
android:layout_marginEnd="6dp"
android:layout_weight="1"
app:cardBackgroundColor="@color/colorSurface"
app:cardCornerRadius="16dp"
app:cardElevation="2dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical"
android:padding="16dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Mesas"
android:textColor="@color/colorTextSecondary"
android:textSize="13sp" />
<TextView
android:id="@+id/txtMesasLivresDash"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:text="00"
android:textColor="@color/colorTextPrimary"
android:textSize="30sp"
android:fontFamily="sans-serif-medium" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
<com.google.android.material.card.MaterialCardView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="6dp"
android:layout_weight="1"
app:cardBackgroundColor="@color/colorSurface"
app:cardCornerRadius="16dp"
app:cardElevation="2dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical"
android:padding="16dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Espera"
android:textColor="@color/colorTextSecondary"
android:textSize="13sp" />
<TextView
android:id="@+id/txtListaEsperaDash"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:text="00"
android:textColor="@color/colorWarning"
android:textSize="30sp"
android:fontFamily="sans-serif-medium" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
</LinearLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="40dp"
android:text="Próximas reservas"
android:textColor="@color/colorTextPrimary"
android:textSize="20sp"
android:fontFamily="sans-serif-medium" />
<com.google.android.material.card.MaterialCardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
app:cardBackgroundColor="@color/colorSurface"
app:cardCornerRadius="20dp"
app:cardElevation="4dp">
<LinearLayout
android:id="@+id/llProximasReservas"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="24dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="A procurar próximas reservas..."
android:textColor="@color/colorTextSecondary"
android:textSize="15sp" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="40dp"
android:text="Operações rápidas"
android:textColor="@color/colorTextPrimary"
android:textSize="20sp"
android:fontFamily="sans-serif-medium" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:orientation="vertical">
<com.google.android.material.button.MaterialButton
android:id="@+id/btnAbrirEspera"
style="@style/Widget.Material3.Button.TonalButton"
android:layout_width="match_parent"
android:layout_height="56dp"
android:layout_marginBottom="12dp"
app:cornerRadius="14dp"
android:text="Abrir lista de espera"
android:textAllCaps="false"
android:textSize="16sp" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btnGerirMesas"
style="@style/Widget.Material3.Button.OutlinedButton"
android:layout_width="match_parent"
android:layout_height="56dp"
android:layout_marginBottom="12dp"
app:cornerRadius="14dp"
android:text="Editar mesas"
android:textAllCaps="false"
android:textSize="16sp" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btnDetalhesReservas"
style="@style/Widget.Material3.Button.OutlinedButton"
android:layout_width="match_parent"
android:layout_height="56dp"
android:layout_marginBottom="12dp"
app:cornerRadius="14dp"
android:text="Detalhes das reservas"
android:textAllCaps="false"
android:textSize="16sp" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btnGestaoStaff"
style="@style/Widget.Material3.Button.OutlinedButton"
android:layout_width="match_parent"
android:layout_height="56dp"
android:layout_marginBottom="12dp"
app:cornerRadius="14dp"
android:text="Gestão de staff"
android:textAllCaps="false"
android:textSize="16sp" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btnDefinicoes"
style="@style/Widget.Material3.Button.OutlinedButton"
android:layout_width="match_parent"
android:layout_height="56dp"
android:layout_marginBottom="24dp"
app:cornerRadius="14dp"
android:text="Definições"
android:textAllCaps="false"
android:textSize="16sp" />
</LinearLayout>
<com.google.android.material.card.MaterialCardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="24dp"
app:cardBackgroundColor="@color/colorSurface"
app:cardCornerRadius="20dp"
app:strokeWidth="1dp"
app:strokeColor="@color/colorWarning"
app:cardElevation="2dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="20dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Alertas operacionais"
android:textColor="@color/colorTextPrimary"
android:textSize="16sp"
android:fontFamily="sans-serif-medium" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="• Mesa 07 aguarda confirmação há 10 min\n• 2 clientes aguardam resposta no chat"
android:textColor="@color/colorTextSecondary"
android:lineSpacingExtra="4dp"
android:textSize="14sp" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
</LinearLayout>
</ScrollView>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,198 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/explorarRoot"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorBackground"
tools:context=".ExplorarRestaurantesActivity">
<com.google.android.material.button.MaterialButton
android:id="@+id/btnVoltar"
style="@style/Widget.Material3.Button.TextButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:text="← Voltar"
android:textAllCaps="false"
android:textColor="@color/colorTextSecondary"
android:textSize="16sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/txtTituloExplorar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Explorar restaurantes"
android:textColor="@color/colorTextPrimary"
android:textSize="28sp"
android:fontFamily="sans-serif-medium"
app:layout_constraintTop_toBottomOf="@id/btnVoltar"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginTop="20dp" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvRestaurants"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginTop="24dp"
android:clipToPadding="false"
android:paddingBottom="24dp"
android:visibility="visible"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/txtTituloExplorar"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/item_restaurant" />
<ScrollView
android:id="@+id/scrollReservaDetails"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginTop="24dp"
android:fillViewport="true"
android:visibility="gone"
android:scrollbars="none"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/txtTituloExplorar">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="48dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingHorizontal="24dp"
android:layout_marginTop="8dp">
<com.google.android.material.button.MaterialButton
android:id="@+id/btnVerAvaliacoes"
style="@style/Widget.Material3.Button.OutlinedButton"
android:layout_width="0dp"
android:layout_height="54dp"
android:layout_weight="1"
android:layout_marginEnd="8dp"
app:cornerRadius="12dp"
android:text="Avaliações"
android:textAllCaps="false"
android:textColor="@color/colorPrimary"
app:strokeColor="@color/colorPrimary" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btnUploadFoto"
style="@style/Widget.Material3.Button.OutlinedButton"
android:layout_width="0dp"
android:layout_height="54dp"
android:layout_weight="1"
android:layout_marginStart="8dp"
app:cornerRadius="12dp"
android:text="Adicionar Foto"
android:textAllCaps="false"
android:textColor="@color/colorError"
app:strokeColor="@color/colorError" />
</LinearLayout>
<com.google.android.material.card.MaterialCardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="24dp"
app:cardCornerRadius="20dp"
app:cardElevation="2dp"
app:cardBackgroundColor="@color/colorSurface">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="24dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Data da reserva"
android:textColor="@color/colorTextPrimary"
android:textSize="16sp"
android:fontFamily="sans-serif-medium" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btnSelectDate"
style="@style/Widget.Material3.Button.OutlinedButton"
android:layout_width="match_parent"
android:layout_height="54dp"
android:layout_marginTop="12dp"
app:cornerRadius="12dp"
android:text="Selecionar Data"
android:textAllCaps="false"
android:textColor="@color/colorTextSecondary" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:text="Hora da reserva"
android:textColor="@color/colorTextPrimary"
android:textSize="16sp"
android:fontFamily="sans-serif-medium" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btnSelectTime"
style="@style/Widget.Material3.Button.OutlinedButton"
android:layout_width="match_parent"
android:layout_height="54dp"
android:layout_marginTop="12dp"
app:cornerRadius="12dp"
android:text="Selecionar Hora"
android:textAllCaps="false"
android:textColor="@color/colorTextSecondary" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:text="Número de pessoas"
android:textColor="@color/colorTextPrimary"
android:textSize="16sp"
android:fontFamily="sans-serif-medium" />
<EditText
android:id="@+id/etPartySize"
android:layout_width="match_parent"
android:layout_height="54dp"
android:layout_marginTop="12dp"
android:background="@drawable/input_bg"
android:inputType="number"
android:paddingHorizontal="16dp"
android:hint="Ex: 2"
android:textColor="@color/colorTextPrimary" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
<com.google.android.material.button.MaterialButton
android:id="@+id/btnConfirmarReserva"
android:layout_width="match_parent"
android:layout_height="56dp"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="32dp"
app:cornerRadius="14dp"
app:backgroundTint="@color/colorPrimary"
android:text="Confirmar Reserva"
android:textAllCaps="false"
android:textColor="@color/white"
android:textSize="16sp" />
</LinearLayout>
</ScrollView>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/favoritosRoot"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorBackground"
tools:context=".FavoritosActivity">
<com.google.android.material.button.MaterialButton
android:id="@+id/btnVoltar"
style="@style/Widget.Material3.Button.TextButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:text="← Voltar"
android:textAllCaps="false"
android:textColor="@color/colorTextSecondary"
android:textSize="16sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/txtTituloFavoritos"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Restaurantes favoritos"
android:textColor="@color/colorTextPrimary"
android:textSize="28sp"
android:fontFamily="sans-serif-medium"
app:layout_constraintTop_toBottomOf="@id/btnVoltar"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginTop="20dp" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvFavoritos"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginTop="24dp"
android:clipToPadding="false"
android:paddingBottom="24dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/txtTituloFavoritos"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/item_restaurant" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,172 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/gerirMesasRoot"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorBackground"
tools:context=".GerirMesasActivity">
<com.google.android.material.button.MaterialButton
android:id="@+id/btnVoltar"
style="@style/Widget.Material3.Button.TextButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:text="← Voltar"
android:textAllCaps="false"
android:textColor="@color/colorTextSecondary"
android:textSize="16sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/txtTituloGerirMesas"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Editar mesas"
android:textColor="@color/colorTextPrimary"
android:textSize="28sp"
android:fontFamily="sans-serif-medium"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/btnVoltar"
android:layout_marginTop="20dp" />
<TextView
android:id="@+id/txtDescricaoGerirMesas"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="32dp"
android:layout_marginTop="8dp"
android:text="Atualize rapidamente as mesas disponíveis, capacidade e estado."
android:textColor="@color/colorTextSecondary"
android:textSize="14sp"
android:textAlignment="center"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/txtTituloGerirMesas" />
<com.google.android.material.card.MaterialCardView
android:id="@+id/formMesas"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginEnd="24dp"
android:layout_marginTop="24dp"
app:cardCornerRadius="20dp"
app:cardElevation="2dp"
app:cardBackgroundColor="@color/colorSurface"
app:strokeWidth="1dp"
app:strokeColor="@color/colorDivider"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/txtDescricaoGerirMesas">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="20dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Editar ou adicionar mesa"
android:textColor="@color/colorTextPrimary"
android:textSize="18sp"
android:fontFamily="sans-serif-medium" />
<EditText
android:id="@+id/inputMesaNumero"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginTop="16dp"
android:background="@drawable/input_bg"
android:hint="Número da mesa"
android:inputType="number"
android:paddingHorizontal="16dp" />
<EditText
android:id="@+id/inputMesaCapacidade"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginTop="12dp"
android:background="@drawable/input_bg"
android:hint="Capacidade (lugares)"
android:inputType="number"
android:paddingHorizontal="16dp" />
<Spinner
android:id="@+id/spinnerEstadoMesa"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginTop="12dp" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btnGuardarMesa"
android:layout_width="match_parent"
android:layout_height="54dp"
android:layout_marginTop="16dp"
app:cornerRadius="12dp"
app:backgroundTint="@color/colorPrimary"
android:text="Guardar"
android:textAllCaps="false"
android:textColor="@color/white" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btnRemoverMesa"
style="@style/Widget.Material3.Button.OutlinedButton"
android:layout_width="match_parent"
android:layout_height="54dp"
android:layout_marginTop="8dp"
app:cornerRadius="12dp"
app:strokeColor="@color/colorError"
android:text="Remover"
android:textAllCaps="false"
android:textColor="@color/colorError" />
<TextView
android:id="@+id/txtMensagemMesa"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text=""
android:textColor="@color/colorSuccess"
android:textSize="13sp" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
<TextView
android:id="@+id/txtListaTitulo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="24dp"
android:text="Mesas registadas"
android:textColor="@color/colorTextPrimary"
android:textSize="18sp"
android:fontFamily="sans-serif-medium"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/formMesas" />
<ListView
android:id="@+id/listMesas"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginStart="24dp"
android:layout_marginEnd="24dp"
android:layout_marginTop="12dp"
android:layout_marginBottom="16dp"
android:divider="@color/colorDivider"
android:dividerHeight="1dp"
android:scrollbars="none"
android:clipToPadding="false"
app:layout_constraintTop_toBottomOf="@id/txtListaTitulo"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,188 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/gestaoStaffRoot"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorBackground"
tools:context=".GestaoStaffActivity">
<com.google.android.material.button.MaterialButton
android:id="@+id/btnVoltar"
style="@style/Widget.Material3.Button.TextButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:text="← Voltar"
android:textAllCaps="false"
android:textColor="@color/colorTextSecondary"
android:textSize="16sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/txtTituloGestaoStaff"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Gestão de staff"
android:textColor="@color/colorTextPrimary"
android:textSize="28sp"
android:fontFamily="sans-serif-medium"
app:layout_constraintTop_toBottomOf="@id/btnVoltar"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginTop="20dp" />
<TextView
android:id="@+id/txtDescricaoGestaoStaff"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="32dp"
android:layout_marginTop="12dp"
android:text="Zona para configurar turnos, equipas e disponibilidade do staff."
android:textColor="@color/colorTextSecondary"
android:textSize="14sp"
android:textAlignment="center"
app:layout_constraintTop_toBottomOf="@id/txtTituloGestaoStaff"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<com.google.android.material.card.MaterialCardView
android:id="@+id/formStaff"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginEnd="24dp"
android:layout_marginTop="24dp"
app:cardCornerRadius="20dp"
app:cardElevation="2dp"
app:cardBackgroundColor="@color/colorSurface"
app:strokeWidth="1dp"
app:strokeColor="@color/colorDivider"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/txtDescricaoGestaoStaff">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="20dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Atribuir funcionário a uma mesa"
android:textColor="@color/colorTextPrimary"
android:textSize="16sp"
android:fontFamily="sans-serif-medium" />
<Spinner
android:id="@+id/spinnerNomeStaff"
android:layout_width="match_parent"
android:layout_height="54dp"
android:layout_marginTop="16dp"
android:background="@drawable/input_bg"
android:padding="0dp" />
<Spinner
android:id="@+id/spinnerMesaStaff"
android:layout_width="match_parent"
android:layout_height="54dp"
android:layout_marginTop="12dp"
android:background="@drawable/input_bg"
android:padding="0dp" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btnAtribuirStaff"
android:layout_width="match_parent"
android:layout_height="54dp"
android:layout_marginTop="16dp"
app:cornerRadius="12dp"
app:backgroundTint="@color/colorPrimary"
android:text="Guardar atribuição"
android:textAllCaps="false"
android:textColor="@color/white" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btnEliminarStaff"
style="@style/Widget.Material3.Button.TextButton"
android:layout_width="match_parent"
android:layout_height="48dp"
android:layout_marginTop="8dp"
android:text="Eliminar Funcionário"
android:textAllCaps="false"
android:textColor="@color/colorError" />
<TextView
android:id="@+id/txtMensagemStaff"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text=""
android:textColor="@color/colorSuccess"
android:textSize="13sp" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
<TextView
android:id="@+id/txtListaStaffTitulo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="24dp"
android:text="Funcionários e mesas"
android:textColor="@color/colorTextPrimary"
android:textSize="18sp"
android:fontFamily="sans-serif-medium"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/formStaff" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btnGerirMesasStaff"
style="@style/Widget.Material3.Button.OutlinedButton"
android:layout_width="wrap_content"
android:layout_height="48dp"
android:layout_marginEnd="24dp"
app:cornerRadius="12dp"
android:text="Gerir Mesas"
android:textAllCaps="false"
android:textSize="12sp"
app:layout_constraintBottom_toBottomOf="@id/txtListaStaffTitulo"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/txtListaStaffTitulo" />
<ListView
android:id="@+id/listStaffMesas"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginStart="24dp"
android:layout_marginEnd="24dp"
android:layout_marginTop="16dp"
android:layout_marginBottom="16dp"
android:divider="@color/colorDivider"
android:dividerHeight="1dp"
android:scrollbars="none"
android:clipToPadding="false"
app:layout_constraintTop_toBottomOf="@id/txtListaStaffTitulo"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/floatingActionButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="24dp"
android:layout_marginBottom="24dp"
android:clickable="true"
app:backgroundTint="@color/colorPrimary"
app:tint="@color/white"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
tools:srcCompat="@tools:sample/avatars" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,159 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/listaEsperaRoot"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorBackground"
tools:context=".ListaEsperaActivity">
<!-- Header Section -->
<com.google.android.material.button.MaterialButton
android:id="@+id/btnVoltar"
style="@style/Widget.Material3.Button.TextButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:text="← Voltar"
android:textAllCaps="false"
android:textColor="@color/colorPrimary"
android:textSize="16sp"
android:fontFamily="sans-serif-medium"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/txtTituloListaEspera"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Lista de espera"
android:textSize="28sp"
android:fontFamily="sans-serif-medium"
android:textColor="@color/colorTextPrimary"
app:layout_constraintTop_toBottomOf="@id/btnVoltar"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginTop="24dp" />
<TextView
android:id="@+id/txtDescricaoListaEspera"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="32dp"
android:layout_marginTop="8dp"
android:text="Aqui o estabelecimento irá gerir a lista de espera em tempo real."
android:textSize="15sp"
android:textAlignment="center"
android:lineSpacingExtra="4dp"
android:textColor="@color/colorTextSecondary"
app:layout_constraintTop_toBottomOf="@id/txtTituloListaEspera"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<!-- List Section -->
<ListView
android:id="@+id/listReservasP"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="24dp"
android:layout_marginBottom="16dp"
android:background="@android:color/transparent"
android:divider="@color/colorDivider"
android:dividerHeight="1dp"
android:scrollbars="none"
android:clipToPadding="false"
android:paddingBottom="16dp"
app:layout_constraintTop_toBottomOf="@id/txtDescricaoListaEspera"
app:layout_constraintBottom_toTopOf="@id/detalhesCardP" />
<!-- Selection/Details Card Bottom -->
<com.google.android.material.card.MaterialCardView
android:id="@+id/detalhesCardP"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:layout_marginBottom="32dp"
app:cardCornerRadius="20dp"
app:cardElevation="12dp"
app:strokeWidth="1dp"
app:strokeColor="#E2E8F0"
app:cardBackgroundColor="@color/colorSurface"
app:layout_constraintBottom_toBottomOf="parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="24dp">
<TextView
android:id="@+id/txtReservaInfoP"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Selecione uma reserva"
android:textColor="@color/colorTextPrimary"
android:textSize="18sp"
android:fontFamily="sans-serif-medium" />
<TextView
android:id="@+id/txtReservaNotasP"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text=""
android:textColor="@color/colorTextSecondary"
android:lineSpacingExtra="2dp"
android:textSize="14sp" />
<TextView
android:id="@+id/txtMensagemReservaP"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:text=""
android:textColor="@color/colorPrimary"
android:textSize="14sp"
android:textStyle="italic" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:orientation="horizontal"
android:weightSum="2">
<com.google.android.material.button.MaterialButton
android:id="@+id/btnRecusarReservaP"
style="@style/Widget.Material3.Button.TonalButton"
android:layout_width="0dp"
android:layout_height="54dp"
android:layout_marginEnd="8dp"
android:layout_weight="1"
app:cornerRadius="14dp"
app:backgroundTint="#FEE2E2"
android:text="Recusar"
android:textAllCaps="false"
android:textColor="@color/colorError"
android:visibility="gone" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btnConfirmarReservaP"
android:layout_width="0dp"
android:layout_height="54dp"
android:layout_marginStart="8dp"
android:layout_weight="1"
app:cornerRadius="14dp"
app:backgroundTint="@color/colorSuccess"
android:text="Aceitar"
android:textAllCaps="false"
android:textColor="@color/white"
android:visibility="gone" />
</LinearLayout>
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,259 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/main"
android:background="@color/colorBackground"
tools:context=".MainActivity">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/logoNaMesa"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/na_mesa"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginTop="50dp" />
<TextView
android:id="@+id/txtTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="NaMesa"
android:textColor="@color/colorTextPrimary"
android:textSize="28sp"
android:fontFamily="sans-serif-medium"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/logoNaMesa" />
<TextView
android:id="@+id/txtSub"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:text="Sistema de Reserva de Mesas"
android:textColor="@color/colorTextSecondary"
android:textSize="15sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/txtTitle" />
<com.google.android.material.card.MaterialCardView
android:id="@+id/cardContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="32dp"
android:layout_marginBottom="40dp"
app:cardCornerRadius="24dp"
app:cardElevation="8dp"
app:cardBackgroundColor="@color/colorSurface"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/txtSub"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintVertical_bias="0.0">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="24dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="@drawable/bg_tabs"
android:orientation="horizontal"
android:padding="3dp">
<Button
android:id="@+id/btnCliente"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/btn_light"
android:text="Cliente"
android:textAllCaps="false"
android:textColor="#231F1F"
android:textSize="14sp" />
<Button
android:id="@+id/btnEstabelecimento"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@android:color/transparent"
android:text="Estabelecimento"
android:textAllCaps="false"
android:textColor="@color/colorTextSecondary"
android:textSize="14sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginTop="16dp"
android:background="@drawable/bg_tabs"
android:orientation="horizontal"
android:padding="3dp">
<Button
android:id="@+id/btnEntrar"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/tab_selected"
android:text="Entrar"
android:textAllCaps="false"
android:textColor="#231F1F"
android:textSize="14sp" />
<Button
android:id="@+id/btnCriarConta"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@android:color/transparent"
android:text="Criar Conta"
android:textAllCaps="false"
android:textColor="@color/colorTextSecondary"
android:textSize="14sp" />
</LinearLayout>
<EditText
android:id="@+id/inputName"
android:layout_width="match_parent"
android:layout_height="54dp"
android:layout_marginTop="20dp"
android:background="@drawable/input_bg"
android:hint="O seu nome"
android:inputType="textPersonName"
android:paddingHorizontal="16dp"
android:visibility="gone" />
<EditText
android:id="@+id/inputEmail"
android:layout_width="match_parent"
android:layout_height="54dp"
android:layout_marginTop="20dp"
android:background="@drawable/input_bg"
android:hint="Email"
android:inputType="textEmailAddress"
android:paddingHorizontal="16dp" />
<EditText
android:id="@+id/inputOwnerPhone"
android:layout_width="match_parent"
android:layout_height="54dp"
android:layout_marginTop="16dp"
android:background="@drawable/input_bg"
android:hint="Telefone do proprietário"
android:inputType="phone"
android:paddingHorizontal="16dp"
android:visibility="gone" />
<EditText
android:id="@+id/inputEstablishmentName"
android:layout_width="match_parent"
android:layout_height="54dp"
android:layout_marginTop="16dp"
android:background="@drawable/input_bg"
android:hint="Nome do estabelecimento"
android:inputType="textCapWords"
android:paddingHorizontal="16dp"
android:visibility="gone" />
<EditText
android:id="@+id/inputEstablishmentEmail"
android:layout_width="match_parent"
android:layout_height="54dp"
android:layout_marginTop="16dp"
android:background="@drawable/input_bg"
android:hint="Email do estabelecimento"
android:inputType="textEmailAddress"
android:paddingHorizontal="16dp"
android:visibility="gone" />
<EditText
android:id="@+id/inputEstablishmentPhone"
android:layout_width="match_parent"
android:layout_height="54dp"
android:layout_marginTop="16dp"
android:background="@drawable/input_bg"
android:hint="Telefone do estabelecimento"
android:inputType="phone"
android:paddingHorizontal="16dp"
android:visibility="gone" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp">
<EditText
android:id="@+id/inputPassword"
android:layout_width="match_parent"
android:layout_height="54dp"
android:background="@drawable/input_bg"
android:hint="Palavra-passe"
android:inputType="textPassword"
android:paddingStart="16dp"
android:paddingEnd="48dp" />
<ImageView
android:id="@+id/iconPasswordVisibility"
android:layout_width="48dp"
android:layout_height="54dp"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:padding="12dp"
android:src="@drawable/ic_visibility_off"
android:clickable="true"
android:focusable="true"
android:background="?attr/selectableItemBackgroundBorderless" />
</RelativeLayout>
<TextView
android:id="@+id/txtForgotPassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:layout_gravity="end"
android:text="Esqueceu-se da palavra-passe?"
android:textColor="@color/colorPrimary"
android:textSize="14sp"
android:visibility="visible"
android:clickable="true"
android:focusable="true"/>
<com.google.android.material.button.MaterialButton
android:id="@+id/btnFinalCriarConta"
android:layout_width="match_parent"
android:layout_height="56dp"
android:layout_marginTop="24dp"
app:cornerRadius="14dp"
app:backgroundTint="@color/colorPrimary"
android:text="Entrar"
android:textAllCaps="false"
android:textSize="16sp"
android:textColor="@color/white" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
</androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/minhasReservasRoot"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorBackground"
tools:context=".MinhasReservasActivity">
<com.google.android.material.button.MaterialButton
android:id="@+id/btnVoltar"
style="@style/Widget.Material3.Button.TextButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:text="← Voltar"
android:textAllCaps="false"
android:textColor="@color/colorTextSecondary"
android:textSize="16sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/txtTituloMinhasReservas"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Minhas Reservas"
android:textColor="@color/colorTextPrimary"
android:textSize="28sp"
android:fontFamily="sans-serif-medium"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/btnVoltar"
android:layout_marginTop="20dp" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvMinhasReservas"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="24dp"
android:clipToPadding="false"
android:paddingBottom="16dp"
app:layout_constraintTop_toBottomOf="@id/txtTituloMinhasReservas"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,180 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/novaReservaRoot"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorBackground"
tools:context=".NovaReservaActivity">
<com.google.android.material.button.MaterialButton
android:id="@+id/btnVoltar"
style="@style/Widget.Material3.Button.TextButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:text="← Voltar"
android:textAllCaps="false"
android:textColor="@color/colorTextSecondary"
android:textSize="16sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/txtTituloNovaReserva"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Nova reserva"
android:textColor="@color/colorTextPrimary"
android:textSize="28sp"
android:fontFamily="sans-serif-medium"
app:layout_constraintTop_toBottomOf="@id/btnVoltar"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginTop="20dp" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvCategories"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginTop="24dp"
android:visibility="visible"
android:clipToPadding="false"
android:paddingBottom="16dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/txtTituloNovaReserva"
tools:listitem="@layout/item_food_category" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvRestaurants"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginTop="24dp"
android:visibility="gone"
android:clipToPadding="false"
android:paddingBottom="16dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/txtTituloNovaReserva"
tools:listitem="@layout/item_restaurant" />
<ScrollView
android:id="@+id/scrollNovaReserva"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginTop="24dp"
android:fillViewport="true"
android:visibility="gone"
android:scrollbars="none"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/txtTituloNovaReserva">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="48dp">
<com.google.android.material.card.MaterialCardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="8dp"
app:cardCornerRadius="20dp"
app:cardElevation="2dp"
app:cardBackgroundColor="@color/colorSurface">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="24dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Data da reserva"
android:textColor="@color/colorTextPrimary"
android:textSize="16sp"
android:fontFamily="sans-serif-medium" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btnSelectDate"
style="@style/Widget.Material3.Button.OutlinedButton"
android:layout_width="match_parent"
android:layout_height="54dp"
android:layout_marginTop="12dp"
app:cornerRadius="12dp"
android:text="Selecionar Data"
android:textAllCaps="false"
android:textSize="16sp"
android:textColor="@color/colorTextSecondary" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:text="Hora da reserva"
android:textColor="@color/colorTextPrimary"
android:textSize="16sp"
android:fontFamily="sans-serif-medium" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btnSelectTime"
style="@style/Widget.Material3.Button.OutlinedButton"
android:layout_width="match_parent"
android:layout_height="54dp"
android:layout_marginTop="12dp"
app:cornerRadius="12dp"
android:text="Selecionar Hora"
android:textAllCaps="false"
android:textSize="16sp"
android:textColor="@color/colorTextSecondary" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:text="Número de pessoas"
android:textColor="@color/colorTextPrimary"
android:textSize="16sp"
android:fontFamily="sans-serif-medium" />
<EditText
android:id="@+id/etPartySize"
android:layout_width="match_parent"
android:layout_height="54dp"
android:layout_marginTop="12dp"
android:background="@drawable/input_bg"
android:inputType="number"
android:paddingHorizontal="16dp"
android:hint="Ex: 2"
android:textColor="@color/colorTextPrimary" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
<com.google.android.material.button.MaterialButton
android:id="@+id/btnConfirmarReserva"
android:layout_width="match_parent"
android:layout_height="56dp"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="32dp"
app:cornerRadius="14dp"
app:backgroundTint="@color/colorPrimary"
android:text="Confirmar Reserva"
android:textAllCaps="false"
android:textColor="@color/white"
android:textSize="16sp" />
</LinearLayout>
</ScrollView>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/partilharRoot"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorBackground"
tools:context=".PartilharReservaActivity">
<com.google.android.material.button.MaterialButton
android:id="@+id/btnVoltar"
style="@style/Widget.Material3.Button.TextButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:text="← Voltar"
android:textAllCaps="false"
android:textColor="@color/colorTextSecondary"
android:textSize="16sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/txtTituloPartilhar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Partilhar reserva"
android:textColor="@color/colorTextPrimary"
android:textSize="28sp"
android:fontFamily="sans-serif-medium"
app:layout_constraintTop_toBottomOf="@id/btnVoltar"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginTop="20dp" />
<TextView
android:id="@+id/txtDescricaoPartilhar"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="32dp"
android:layout_marginTop="12dp"
android:text="Ecrã onde o cliente poderá enviar convites/links de partilha da reserva."
android:textColor="@color/colorTextSecondary"
android:textSize="15sp"
android:textAlignment="center"
app:layout_constraintTop_toBottomOf="@id/txtTituloPartilhar"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,193 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/profileRoot"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorBackground"
tools:context=".ProfileDashboardActivity">
<com.google.android.material.button.MaterialButton
android:id="@+id/btnVoltar"
style="@style/Widget.Material3.Button.TextButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:text="← Voltar"
android:textAllCaps="false"
android:textColor="@color/colorTextSecondary"
android:textSize="16sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/txtProfileTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="O seu Perfil"
android:textColor="@color/colorTextPrimary"
android:textSize="28sp"
android:fontFamily="sans-serif-medium"
app:layout_constraintTop_toBottomOf="@id/btnVoltar"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginTop="20dp" />
<com.google.android.material.card.MaterialCardView
android:id="@+id/cardProfileBig"
android:layout_width="110dp"
android:layout_height="110dp"
android:layout_marginTop="32dp"
app:cardCornerRadius="55dp"
app:cardElevation="6dp"
app:layout_constraintTop_toBottomOf="@id/txtProfileTitle"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent">
<ImageView
android:id="@+id/imgProfile"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:src="@drawable/circle_bg" />
</com.google.android.material.card.MaterialCardView>
<ScrollView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="24dp"
app:layout_constraintTop_toBottomOf="@id/cardProfileBig"
app:layout_constraintBottom_toBottomOf="parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingHorizontal="32dp"
android:paddingBottom="40dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Nome de Exibição"
android:textColor="@color/colorTextSecondary"
android:textSize="14sp" />
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
app:boxCornerRadiusTopStart="12dp"
app:boxCornerRadiusTopEnd="12dp"
app:boxCornerRadiusBottomStart="12dp"
app:boxCornerRadiusBottomEnd="12dp"
app:boxStrokeWidth="0dp"
app:boxBackgroundColor="@color/colorSurface">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/inputProfileName"
android:layout_width="match_parent"
android:layout_height="54dp"
android:paddingHorizontal="16dp"
android:hint="O seu nome" />
</com.google.android.material.textfield.TextInputLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="Telemóvel"
android:textColor="@color/colorTextSecondary"
android:textSize="14sp" />
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
app:boxCornerRadiusTopStart="12dp"
app:boxCornerRadiusTopEnd="12dp"
app:boxCornerRadiusBottomStart="12dp"
app:boxCornerRadiusBottomEnd="12dp"
app:boxStrokeWidth="0dp"
app:boxBackgroundColor="@color/colorSurface">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/inputProfilePhone"
android:layout_width="match_parent"
android:layout_height="54dp"
android:hint="O seu número"
android:inputType="phone"
android:paddingHorizontal="16dp" />
</com.google.android.material.textfield.TextInputLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="Email"
android:textColor="@color/colorTextSecondary"
android:textSize="14sp" />
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
app:boxCornerRadiusTopStart="12dp"
app:boxCornerRadiusTopEnd="12dp"
app:boxCornerRadiusBottomStart="12dp"
app:boxCornerRadiusBottomEnd="12dp"
app:boxStrokeWidth="0dp"
app:boxBackgroundColor="@color/colorSurface">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/inputProfileEmail"
android:layout_width="match_parent"
android:layout_height="54dp"
android:hint="O seu email"
android:inputType="textEmailAddress"
android:paddingHorizontal="16dp" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.button.MaterialButton
android:id="@+id/btnSaveProfile"
android:layout_width="match_parent"
android:layout_height="56dp"
android:layout_marginTop="32dp"
app:cornerRadius="14dp"
app:backgroundTint="@color/colorPrimary"
android:text="Guardar Alterações"
android:textAllCaps="false"
android:textSize="16sp"
android:textColor="@color/white" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginVertical="32dp"
android:background="@color/colorDivider" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btnFavoritos"
style="@style/Widget.Material3.Button.TonalButton"
android:layout_width="match_parent"
android:layout_height="56dp"
app:cornerRadius="14dp"
android:text="Os meus Favoritos"
android:textAllCaps="false"
android:textSize="16sp"
android:layout_marginBottom="12dp" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btnMinhasReservas"
style="@style/Widget.Material3.Button.TonalButton"
android:layout_width="match_parent"
android:layout_height="56dp"
app:cornerRadius="14dp"
android:text="Histórico de Reservas"
android:textAllCaps="false"
android:textSize="16sp" />
</LinearLayout>
</ScrollView>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,48 @@
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.card.MaterialCardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="16dp"
android:layout_marginVertical="8dp"
app:cardCornerRadius="16dp"
app:cardElevation="4dp"
app:cardBackgroundColor="@color/colorSurface"
app:strokeWidth="1dp"
app:strokeColor="@color/colorDivider">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="16dp">
<TextView
android:id="@+id/txtCategoryName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:layout_toStartOf="@id/cvImageCategory"
android:text="Categoria"
android:textColor="@color/colorTextPrimary"
android:textSize="20sp"
android:fontFamily="sans-serif-medium" />
<com.google.android.material.card.MaterialCardView
android:id="@+id/cvImageCategory"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
app:cardCornerRadius="12dp"
app:cardElevation="0dp">
<ImageView
android:id="@+id/imgCategory"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:src="@drawable/ic_launcher_background" />
</com.google.android.material.card.MaterialCardView>
</RelativeLayout>
</com.google.android.material.card.MaterialCardView>

View File

@@ -0,0 +1,91 @@
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.card.MaterialCardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="16dp"
android:layout_marginVertical="8dp"
app:cardCornerRadius="16dp"
app:cardElevation="4dp"
app:cardBackgroundColor="@color/colorSurface"
app:strokeWidth="1dp"
app:strokeColor="@color/colorDivider">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="20dp">
<TextView
android:id="@+id/txtReservaRestaurante"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Nome do Restaurante"
android:textColor="@color/colorTextPrimary"
android:textSize="18sp"
android:fontFamily="sans-serif-medium" />
<TextView
android:id="@+id/txtReservaDataHora"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:text="Hoje às 20:00"
android:textColor="@color/colorTextSecondary"
android:textSize="14sp" />
<TextView
android:id="@+id/txtReservaStatus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="Estado: Pendente"
android:textSize="14sp"
android:textColor="@color/colorSecondary"
android:fontFamily="sans-serif-medium" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:orientation="horizontal">
<com.google.android.material.button.MaterialButton
android:id="@+id/btnCheckIn"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_weight="1"
android:layout_marginEnd="6dp"
app:cornerRadius="12dp"
app:backgroundTint="@color/colorPrimary"
android:text="Check-in"
android:textAllCaps="false"
android:textColor="@color/white" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btnCancelar"
style="@style/Widget.Material3.Button.OutlinedButton"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_weight="1"
android:layout_marginStart="6dp"
app:cornerRadius="12dp"
app:strokeColor="@color/colorError"
android:text="Cancelar"
android:textAllCaps="false"
android:textColor="@color/colorError" />
</LinearLayout>
<TextView
android:id="@+id/txtLocationWarning"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="Dê permissões de localização para aceder ao check-in."
android:textAlignment="center"
android:textColor="@color/colorWarning"
android:textSize="12sp"
android:visibility="gone" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>

View File

@@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.card.MaterialCardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="16dp"
android:layout_marginVertical="8dp"
app:cardCornerRadius="16dp"
app:cardElevation="2dp"
app:cardBackgroundColor="@color/colorSurface"
app:strokeWidth="1dp"
app:strokeColor="@color/colorDivider">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="16dp">
<com.google.android.material.imageview.ShapeableImageView
android:id="@+id/imgRestaurantThumb"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:layout_marginEnd="16dp"
android:scaleType="centerCrop"
android:src="@mipmap/ic_launcher"
app:shapeAppearanceOverlay="@style/ShapeAppearance.Material3.Corner.Medium" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toEndOf="@id/imgRestaurantThumb"
android:layout_toStartOf="@id/btnFavorite"
android:layout_centerVertical="true"
android:orientation="vertical">
<TextView
android:id="@+id/txtRestaurantName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Restaurant Name"
android:textColor="@color/colorTextPrimary"
android:textSize="18sp"
android:fontFamily="sans-serif-medium" />
<TextView
android:id="@+id/txtRestaurantCategory"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:text="Category"
android:textColor="@color/colorTextSecondary"
android:textSize="14sp" />
</LinearLayout>
<ImageButton
android:id="@+id/btnFavorite"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:background="?attr/selectableItemBackgroundBorderless"
android:padding="12dp"
android:scaleType="fitCenter"
android:src="@android:drawable/btn_star_big_off" />
</RelativeLayout>
</com.google.android.material.card.MaterialCardView>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
<monochrome android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
<monochrome android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 982 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

View File

@@ -0,0 +1,7 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Base.Theme.Pap_teste" parent="Theme.Material3.DayNight.NoActionBar">
<!-- Customize your dark theme here. -->
<!-- <item name="colorPrimary">@color/my_dark_primary</item> -->
</style>
</resources>

View File

@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Brand Colors -->
<color name="colorPrimary">#06C167</color>
<color name="colorPrimaryVariant">#05A357</color>
<color name="colorSecondary">#06C167</color>
<!-- Neutral Colors -->
<color name="black">#FF000000</color>
<color name="white">#FFFFFFFF</color>
<color name="colorBackground">#F8FAFC</color>
<color name="colorSurface">#FFFFFF</color>
<color name="colorTextPrimary">#1E293B</color>
<color name="colorTextSecondary">#64748B</color>
<!-- Semantic Colors -->
<color name="colorSuccess">#10B981</color>
<color name="colorError">#EF4444</color>
<color name="colorWarning">#F59E0B</color>
<color name="colorDivider">#E2E8F0</color>
<!-- Legacy compatibility -->
<color name="my_light_primary">#BE1F13</color>
</resources>

View File

@@ -0,0 +1,3 @@
<resources>
<string name="app_name">Pap_teste</string>
</resources>

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Base.Theme.Pap_teste" parent="Theme.Material3.DayNight.NoActionBar">
<!-- Core Colors -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryVariant">@color/colorPrimaryVariant</item>
<item name="colorSecondary">@color/colorSecondary</item>
<!-- Background and Surface Colors -->
<item name="android:colorBackground">@color/colorBackground</item>
<item name="colorSurface">@color/colorSurface</item>
<item name="colorError">@color/colorError</item>
<!-- Typography base generic configuration -->
<item name="android:fontFamily">sans-serif</item>
</style>
<style name="Theme.Pap_teste" parent="Base.Theme.Pap_teste" />
</resources>

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?><!--
Sample backup rules file; uncomment and customize as necessary.
See https://developer.android.com/guide/topics/data/autobackup
for details.
Note: This file is ignored for devices older than API 31
See https://developer.android.com/about/versions/12/backup-restore
-->
<full-backup-content>
<!--
<include domain="sharedpref" path="."/>
<exclude domain="sharedpref" path="device.xml"/>
-->
</full-backup-content>

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?><!--
Sample data extraction rules file; uncomment and customize as necessary.
See https://developer.android.com/about/versions/12/backup-restore#xml-changes
for details.
-->
<data-extraction-rules>
<cloud-backup>
<!-- TODO: Use <include> and <exclude> to control what is backed up.
<include .../>
<exclude .../>
-->
</cloud-backup>
<!--
<device-transfer>
<include .../>
<exclude .../>
</device-transfer>
-->
</data-extraction-rules>