diff --git a/.idea/deviceManager.xml b/.idea/deviceManager.xml
new file mode 100644
index 0000000..91f9558
--- /dev/null
+++ b/.idea/deviceManager.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/google-services.json b/app/google-services.json
new file mode 100644
index 0000000..56c8db6
--- /dev/null
+++ b/app/google-services.json
@@ -0,0 +1,29 @@
+{
+ "project_info": {
+ "project_number": "484378399106",
+ "project_id": "pap-findu",
+ "storage_bucket": "pap-findu.firebasestorage.app"
+ },
+ "client": [
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:484378399106:android:af0d3cf9792a6b347e3f9b",
+ "android_client_info": {
+ "package_name": "com.example.pap_findu"
+ }
+ },
+ "oauth_client": [],
+ "api_key": [
+ {
+ "current_key": "AIzaSyD9UEiI214aOpL-bIIDhWhba5ERUMi9IgM"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": []
+ }
+ }
+ }
+ ],
+ "configuration_version": "1"
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/pap_findu/CriarConta.java b/app/src/main/java/com/example/pap_findu/CriarConta.java
index ef895a3..e829a1e 100644
--- a/app/src/main/java/com/example/pap_findu/CriarConta.java
+++ b/app/src/main/java/com/example/pap_findu/CriarConta.java
@@ -1,6 +1,13 @@
package com.example.pap_findu;
+import android.content.Intent;
import android.os.Bundle;
+import android.view.View;
+import android.widget.Button;
+import android.widget.CheckBox;
+import android.widget.EditText;
+import android.widget.TextView;
+import android.widget.Toast;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
@@ -10,6 +17,15 @@ import androidx.core.view.WindowInsetsCompat;
public class CriarConta extends AppCompatActivity {
+ private EditText inputFullName;
+ private EditText emailEditText;
+ private EditText passwordEditText;
+ private EditText inputConfirmPassword;
+ private CheckBox checkTerms;
+ private Button btnCreateAccount;
+ private TextView loginLink;
+ private com.google.firebase.auth.FirebaseAuth mAuth;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -20,5 +36,66 @@ public class CriarConta extends AppCompatActivity {
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
return insets;
});
+
+ // Initialize views
+ inputFullName = findViewById(R.id.inputFullName);
+ emailEditText = findViewById(R.id.emailEditText);
+ passwordEditText = findViewById(R.id.passwordEditText);
+ inputConfirmPassword = findViewById(R.id.inputConfirmPassword);
+ checkTerms = findViewById(R.id.checkTerms);
+ btnCreateAccount = findViewById(R.id.btnCreateAccount);
+ loginLink = findViewById(R.id.loginLink);
+
+ mAuth = com.google.firebase.auth.FirebaseAuth.getInstance();
+
+ // Set click listener for the create account button
+ btnCreateAccount.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ String fullName = inputFullName.getText().toString();
+ String email = emailEditText.getText().toString();
+ String password = passwordEditText.getText().toString();
+ String confirmPassword = inputConfirmPassword.getText().toString();
+
+ if (fullName.isEmpty() || email.isEmpty() || password.isEmpty() || confirmPassword.isEmpty()) {
+ Toast.makeText(CriarConta.this, "Por favor, preencha todos os campos.", Toast.LENGTH_SHORT).show();
+ } else if (!password.equals(confirmPassword)) {
+ Toast.makeText(CriarConta.this, "As palavras-passe não coincidem.", Toast.LENGTH_SHORT).show();
+ } else if (!checkTerms.isChecked()) {
+ Toast.makeText(CriarConta.this, "Você deve concordar com os Termos de Serviço.", Toast.LENGTH_SHORT).show();
+ } else {
+ mAuth.createUserWithEmailAndPassword(email, password)
+ .addOnCompleteListener(CriarConta.this, new com.google.android.gms.tasks.OnCompleteListener() {
+ @Override
+ public void onComplete(@androidx.annotation.NonNull com.google.android.gms.tasks.Task task) {
+ if (task.isSuccessful()) {
+ // Sign in success, update UI with the signed-in user's information
+ Toast.makeText(CriarConta.this, "Conta criada com sucesso!", Toast.LENGTH_SHORT).show();
+ com.google.firebase.auth.FirebaseUser user = mAuth.getCurrentUser();
+ // You could save the full name to the database or profile here
+ Intent intent = new Intent(CriarConta.this, MainActivity.class);
+ startActivity(intent);
+ finish();
+ } else {
+ // If sign in fails, display a message to the user.
+ Toast.makeText(CriarConta.this, "Falha ao criar conta: " + task.getException().getMessage(),
+ Toast.LENGTH_SHORT).show();
+ }
+ }
+ });
+ }
+ }
+ });
+
+ // Set click listener for the login link text
+ loginLink.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ // Navigate back to the login activity
+ Intent intent = new Intent(CriarConta.this, login_activity.class);
+ startActivity(intent);
+ finish();
+ }
+ });
}
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/com/example/pap_findu/MainActivity.java b/app/src/main/java/com/example/pap_findu/MainActivity.java
index ff2719f..91c06b2 100644
--- a/app/src/main/java/com/example/pap_findu/MainActivity.java
+++ b/app/src/main/java/com/example/pap_findu/MainActivity.java
@@ -12,6 +12,8 @@ import androidx.navigation.ui.NavigationUI;
import com.example.pap_findu.databinding.ActivityMainBinding;
+import androidx.navigation.fragment.NavHostFragment;
+
public class MainActivity extends AppCompatActivity {
private ActivityMainBinding binding;
@@ -25,9 +27,13 @@ public class MainActivity extends AppCompatActivity {
BottomNavigationView navView = binding.navView;
AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder(
- R.id.navigation_map, R.id.navigation_zones, R.id.navigation_alerts)
+ R.id.navigation_map, R.id.navigation_zones, R.id.navigation_alerts,
+ R.id.navigation_history, R.id.navigation_profile)
.build();
- NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_activity_main);
+
+ NavHostFragment navHostFragment = (NavHostFragment) getSupportFragmentManager()
+ .findFragmentById(R.id.nav_host_fragment_activity_main);
+ NavController navController = navHostFragment.getNavController();
NavigationUI.setupWithNavController(binding.navView, navController);
}
diff --git a/app/src/main/java/com/example/pap_findu/login_activity.java b/app/src/main/java/com/example/pap_findu/login_activity.java
index a1f17c8..1a2326f 100644
--- a/app/src/main/java/com/example/pap_findu/login_activity.java
+++ b/app/src/main/java/com/example/pap_findu/login_activity.java
@@ -4,7 +4,7 @@ import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
-import android.widget.CheckBox;
+import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
@@ -16,12 +16,12 @@ import androidx.core.view.WindowInsetsCompat;
public class login_activity extends AppCompatActivity {
- private TextView emailInputEditText;
- private TextView passwordEditText;
- private CheckBox rememberMeCheckBox;
+ private EditText emailEditText;
+ private EditText passwordEditText;
private Button btnLogin;
private TextView criarContaTextView;
- private TextView esqueceuPasseTextView;
+ private com.google.firebase.auth.FirebaseAuth mAuth;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -33,24 +33,65 @@ public class login_activity extends AppCompatActivity {
return insets;
});
- emailInputEditText = findViewById(R.id.emailEditText);
+ // Initialize Firebase Auth
+ mAuth = com.google.firebase.auth.FirebaseAuth.getInstance();
+
+ emailEditText = findViewById(R.id.emailEditText);
passwordEditText = findViewById(R.id.passwordEditText);
- rememberMeCheckBox = findViewById(R.id.rememberMeCheckBox);
btnLogin = findViewById(R.id.btnLogin);
criarContaTextView = findViewById(R.id.criarContaTextView);
- esqueceuPasseTextView = findViewById(R.id.esqueceuPasseTextView);
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- if (emailInputEditText.getText().toString().isEmpty() || passwordEditText.getText().toString().isEmpty()) {
- Toast.makeText(login_activity.this, "Preencha todos os campos", Toast.LENGTH_SHORT).show();
- } else {
- Intent intent = new Intent(login_activity.this, MainActivity.class);
- // Lógica de autenticação aqui
+ String email = emailEditText.getText().toString();
+ String password = passwordEditText.getText().toString();
+
+ if (email.isEmpty() || password.isEmpty()) {
+ Toast.makeText(login_activity.this, "Por favor, preencha todos os campos.", Toast.LENGTH_SHORT).show();
+ return;
}
+
+ mAuth.signInWithEmailAndPassword(email, password)
+ .addOnCompleteListener(login_activity.this, new com.google.android.gms.tasks.OnCompleteListener() {
+ @Override
+ public void onComplete(@androidx.annotation.NonNull com.google.android.gms.tasks.Task task) {
+ if (task.isSuccessful()) {
+ // Sign in success, update UI with the signed-in user's information
+ com.google.firebase.auth.FirebaseUser user = mAuth.getCurrentUser();
+ Toast.makeText(login_activity.this, "Login com sucesso.",
+ Toast.LENGTH_SHORT).show();
+ Intent intent = new Intent(login_activity.this, MainActivity.class);
+ startActivity(intent);
+ finish();
+ } else {
+ // If sign in fails, display a message to the user.
+ Toast.makeText(login_activity.this, "Falha na autenticação.",
+ Toast.LENGTH_SHORT).show();
+ }
+ }
+ });
}
});
+ criarContaTextView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Intent intent = new Intent(login_activity.this, CriarConta.class);
+ startActivity(intent);
+ }
+ });
}
-}
\ No newline at end of file
+
+ @Override
+ public void onStart() {
+ super.onStart();
+ // Check if user is signed in (non-null) and update UI accordingly.
+ com.google.firebase.auth.FirebaseUser currentUser = mAuth.getCurrentUser();
+ if(currentUser != null){
+ Intent intent = new Intent(login_activity.this, MainActivity.class);
+ startActivity(intent);
+ finish();
+ }
+ }
+}
diff --git a/app/src/main/java/com/example/pap_findu/ui/history/HistoryFragment.java b/app/src/main/java/com/example/pap_findu/ui/history/HistoryFragment.java
new file mode 100644
index 0000000..337b77c
--- /dev/null
+++ b/app/src/main/java/com/example/pap_findu/ui/history/HistoryFragment.java
@@ -0,0 +1,31 @@
+package com.example.pap_findu.ui.history;
+
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.fragment.app.Fragment;
+import androidx.lifecycle.ViewModelProvider;
+
+import com.example.pap_findu.databinding.FragmentHistoryBinding;
+
+public class HistoryFragment extends Fragment {
+
+ private FragmentHistoryBinding binding;
+
+ public View onCreateView(@NonNull LayoutInflater inflater,
+ ViewGroup container, Bundle savedInstanceState) {
+ binding = FragmentHistoryBinding.inflate(inflater, container, false);
+ View root = binding.getRoot();
+ return root;
+ }
+
+ @Override
+ public void onDestroyView() {
+ super.onDestroyView();
+ binding = null;
+ }
+}
diff --git a/app/src/main/java/com/example/pap_findu/ui/map/MapFragment.java b/app/src/main/java/com/example/pap_findu/ui/map/MapFragment.java
index df91fba..aea5fe8 100644
--- a/app/src/main/java/com/example/pap_findu/ui/map/MapFragment.java
+++ b/app/src/main/java/com/example/pap_findu/ui/map/MapFragment.java
@@ -14,11 +14,39 @@ public class MapFragment extends Fragment {
private FragmentMapBinding binding;
- @Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
+ Bundle savedInstanceState) {
binding = FragmentMapBinding.inflate(inflater, container, false);
- return binding.getRoot();
+ View root = binding.getRoot();
+
+ // Implement SOS Button logic
+ binding.sosButton.setOnClickListener(v -> {
+ android.content.Intent intent = new android.content.Intent(android.content.Intent.ACTION_DIAL);
+ intent.setData(android.net.Uri.parse("tel:112"));
+ startActivity(intent);
+ });
+
+ // Add dummy listeners for other interactive elements
+ binding.zoomInButton.setOnClickListener(v -> {
+ // Placeholder: Zoom In logic would go here if we had a real map
+ android.widget.Toast.makeText(getContext(), "Zoom In", android.widget.Toast.LENGTH_SHORT).show();
+ });
+
+ binding.zoomOutButton.setOnClickListener(v -> {
+ // Placeholder: Zoom Out logic
+ android.widget.Toast.makeText(getContext(), "Zoom Out", android.widget.Toast.LENGTH_SHORT).show();
+ });
+
+ binding.navigationFab.setOnClickListener(v -> {
+ android.widget.Toast.makeText(getContext(), "Centrar Localização", android.widget.Toast.LENGTH_SHORT)
+ .show();
+ });
+
+ binding.messagesFab.setOnClickListener(v -> {
+ android.widget.Toast.makeText(getContext(), "Abrir Chat", android.widget.Toast.LENGTH_SHORT).show();
+ });
+
+ return root;
}
@Override
diff --git a/app/src/main/java/com/example/pap_findu/ui/profile/ProfileFragment.java b/app/src/main/java/com/example/pap_findu/ui/profile/ProfileFragment.java
new file mode 100644
index 0000000..d35f051
--- /dev/null
+++ b/app/src/main/java/com/example/pap_findu/ui/profile/ProfileFragment.java
@@ -0,0 +1,31 @@
+package com.example.pap_findu.ui.profile;
+
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.fragment.app.Fragment;
+import androidx.lifecycle.ViewModelProvider;
+
+import com.example.pap_findu.databinding.FragmentProfileBinding;
+
+public class ProfileFragment extends Fragment {
+
+ private FragmentProfileBinding binding;
+
+ public View onCreateView(@NonNull LayoutInflater inflater,
+ ViewGroup container, Bundle savedInstanceState) {
+ binding = FragmentProfileBinding.inflate(inflater, container, false);
+ View root = binding.getRoot();
+ return root;
+ }
+
+ @Override
+ public void onDestroyView() {
+ super.onDestroyView();
+ binding = null;
+ }
+}
diff --git a/app/src/main/res/color/bottom_nav_selector.xml b/app/src/main/res/color/bottom_nav_selector.xml
index f743c01..e878464 100644
--- a/app/src/main/res/color/bottom_nav_selector.xml
+++ b/app/src/main/res/color/bottom_nav_selector.xml
@@ -7,3 +7,6 @@
+
+
+
diff --git a/app/src/main/res/drawable/bg_alert_icon_info.xml b/app/src/main/res/drawable/bg_alert_icon_info.xml
index 6dafa75..8802694 100644
--- a/app/src/main/res/drawable/bg_alert_icon_info.xml
+++ b/app/src/main/res/drawable/bg_alert_icon_info.xml
@@ -8,3 +8,6 @@
+
+
+
diff --git a/app/src/main/res/drawable/bg_alert_icon_warning.xml b/app/src/main/res/drawable/bg_alert_icon_warning.xml
index 70b2769..220177a 100644
--- a/app/src/main/res/drawable/bg_alert_icon_warning.xml
+++ b/app/src/main/res/drawable/bg_alert_icon_warning.xml
@@ -8,3 +8,6 @@
+
+
+
diff --git a/app/src/main/res/drawable/bg_avatar_placeholder.xml b/app/src/main/res/drawable/bg_avatar_placeholder.xml
index a8d7e3b..8d1343b 100644
--- a/app/src/main/res/drawable/bg_avatar_placeholder.xml
+++ b/app/src/main/res/drawable/bg_avatar_placeholder.xml
@@ -7,3 +7,6 @@
+
+
+
diff --git a/app/src/main/res/drawable/bg_badge.xml b/app/src/main/res/drawable/bg_badge.xml
index 1b914cd..e11c62f 100644
--- a/app/src/main/res/drawable/bg_badge.xml
+++ b/app/src/main/res/drawable/bg_badge.xml
@@ -7,3 +7,6 @@
+
+
+
diff --git a/app/src/main/res/drawable/bg_bottom_nav.xml b/app/src/main/res/drawable/bg_bottom_nav.xml
index de29758..6d08638 100644
--- a/app/src/main/res/drawable/bg_bottom_nav.xml
+++ b/app/src/main/res/drawable/bg_bottom_nav.xml
@@ -17,3 +17,6 @@
+
+
+
diff --git a/app/src/main/res/drawable/bg_chip_muted.xml b/app/src/main/res/drawable/bg_chip_muted.xml
index 77692e2..35fa013 100644
--- a/app/src/main/res/drawable/bg_chip_muted.xml
+++ b/app/src/main/res/drawable/bg_chip_muted.xml
@@ -13,3 +13,6 @@
+
+
+
diff --git a/app/src/main/res/drawable/bg_chip_success.xml b/app/src/main/res/drawable/bg_chip_success.xml
index 42cd57f..bc0046d 100644
--- a/app/src/main/res/drawable/bg_chip_success.xml
+++ b/app/src/main/res/drawable/bg_chip_success.xml
@@ -13,3 +13,6 @@
+
+
+
diff --git a/app/src/main/res/drawable/bg_chip_warning.xml b/app/src/main/res/drawable/bg_chip_warning.xml
index 32f4d3d..7e84c61 100644
--- a/app/src/main/res/drawable/bg_chip_warning.xml
+++ b/app/src/main/res/drawable/bg_chip_warning.xml
@@ -13,3 +13,6 @@
+
+
+
diff --git a/app/src/main/res/drawable/bg_filter_chip_active.xml b/app/src/main/res/drawable/bg_filter_chip_active.xml
index 5b5ddd4..a68e464 100644
--- a/app/src/main/res/drawable/bg_filter_chip_active.xml
+++ b/app/src/main/res/drawable/bg_filter_chip_active.xml
@@ -13,3 +13,6 @@
+
+
+
diff --git a/app/src/main/res/drawable/bg_filter_chip_neutral.xml b/app/src/main/res/drawable/bg_filter_chip_neutral.xml
index 3efb7a4..bf3c86a 100644
--- a/app/src/main/res/drawable/bg_filter_chip_neutral.xml
+++ b/app/src/main/res/drawable/bg_filter_chip_neutral.xml
@@ -16,3 +16,6 @@
+
+
+
diff --git a/app/src/main/res/drawable/bg_header_top.xml b/app/src/main/res/drawable/bg_header_top.xml
index 41ed4e7..decc955 100644
--- a/app/src/main/res/drawable/bg_header_top.xml
+++ b/app/src/main/res/drawable/bg_header_top.xml
@@ -13,3 +13,6 @@
+
+
+
diff --git a/app/src/main/res/drawable/bg_map_card.xml b/app/src/main/res/drawable/bg_map_card.xml
index fcc83e5..2aa5b73 100644
--- a/app/src/main/res/drawable/bg_map_card.xml
+++ b/app/src/main/res/drawable/bg_map_card.xml
@@ -20,3 +20,6 @@
+
+
+
diff --git a/app/src/main/res/drawable/bg_map_surface.xml b/app/src/main/res/drawable/bg_map_surface.xml
index b875849..5be1d7b 100644
--- a/app/src/main/res/drawable/bg_map_surface.xml
+++ b/app/src/main/res/drawable/bg_map_surface.xml
@@ -8,3 +8,6 @@
+
+
+
diff --git a/app/src/main/res/drawable/bg_marker_avatar.xml b/app/src/main/res/drawable/bg_marker_avatar.xml
index bc4c12a..26b6e6a 100644
--- a/app/src/main/res/drawable/bg_marker_avatar.xml
+++ b/app/src/main/res/drawable/bg_marker_avatar.xml
@@ -6,9 +6,12 @@
-
+
+
+
+
diff --git a/app/src/main/res/drawable/bg_marker_label.xml b/app/src/main/res/drawable/bg_marker_label.xml
index dfa6fc7..bd292d2 100644
--- a/app/src/main/res/drawable/bg_marker_label.xml
+++ b/app/src/main/res/drawable/bg_marker_label.xml
@@ -16,3 +16,6 @@
+
+
+
diff --git a/app/src/main/res/drawable/bg_marker_user.xml b/app/src/main/res/drawable/bg_marker_user.xml
index 31e1c70..94b1ebc 100644
--- a/app/src/main/res/drawable/bg_marker_user.xml
+++ b/app/src/main/res/drawable/bg_marker_user.xml
@@ -11,3 +11,6 @@
+
+
+
diff --git a/app/src/main/res/drawable/bg_safe_banner_icon.xml b/app/src/main/res/drawable/bg_safe_banner_icon.xml
index 3115323..6fe6fba 100644
--- a/app/src/main/res/drawable/bg_safe_banner_icon.xml
+++ b/app/src/main/res/drawable/bg_safe_banner_icon.xml
@@ -8,3 +8,6 @@
+
+
+
diff --git a/app/src/main/res/drawable/bg_safe_zone_circle.xml b/app/src/main/res/drawable/bg_safe_zone_circle.xml
index 6cb938f..df5c4b8 100644
--- a/app/src/main/res/drawable/bg_safe_zone_circle.xml
+++ b/app/src/main/res/drawable/bg_safe_zone_circle.xml
@@ -10,3 +10,6 @@
+
+
+
diff --git a/app/src/main/res/drawable/bg_status_online.xml b/app/src/main/res/drawable/bg_status_online.xml
index 63eb411..55fb4ce 100644
--- a/app/src/main/res/drawable/bg_status_online.xml
+++ b/app/src/main/res/drawable/bg_status_online.xml
@@ -8,3 +8,6 @@
+
+
+
diff --git a/app/src/main/res/drawable/bg_zone_icon_primary.xml b/app/src/main/res/drawable/bg_zone_icon_primary.xml
index 236c48f..cb5def5 100644
--- a/app/src/main/res/drawable/bg_zone_icon_primary.xml
+++ b/app/src/main/res/drawable/bg_zone_icon_primary.xml
@@ -8,3 +8,6 @@
+
+
+
diff --git a/app/src/main/res/drawable/bg_zone_icon_secondary.xml b/app/src/main/res/drawable/bg_zone_icon_secondary.xml
index 7fd8cb8..3ae184b 100644
--- a/app/src/main/res/drawable/bg_zone_icon_secondary.xml
+++ b/app/src/main/res/drawable/bg_zone_icon_secondary.xml
@@ -8,3 +8,6 @@
+
+
+
diff --git a/app/src/main/res/drawable/bg_zoom_button.xml b/app/src/main/res/drawable/bg_zoom_button.xml
index c94ed6f..1708b73 100644
--- a/app/src/main/res/drawable/bg_zoom_button.xml
+++ b/app/src/main/res/drawable/bg_zoom_button.xml
@@ -20,3 +20,6 @@
+
+
+
diff --git a/app/src/main/res/drawable/edit_text_background.xml b/app/src/main/res/drawable/edit_text_background.xml
new file mode 100644
index 0000000..d43a559
--- /dev/null
+++ b/app/src/main/res/drawable/edit_text_background.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/edit_text_background_light_gray.xml b/app/src/main/res/drawable/edit_text_background_light_gray.xml
new file mode 100644
index 0000000..6b99276
--- /dev/null
+++ b/app/src/main/res/drawable/edit_text_background_light_gray.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_alert_warning.xml b/app/src/main/res/drawable/ic_alert_warning.xml
index 4f8ad10..5e9b322 100644
--- a/app/src/main/res/drawable/ic_alert_warning.xml
+++ b/app/src/main/res/drawable/ic_alert_warning.xml
@@ -12,3 +12,6 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_battery.xml b/app/src/main/res/drawable/ic_battery.xml
index ad828c8..31e931b 100644
--- a/app/src/main/res/drawable/ic_battery.xml
+++ b/app/src/main/res/drawable/ic_battery.xml
@@ -15,3 +15,6 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_chat_bubble.xml b/app/src/main/res/drawable/ic_chat_bubble.xml
index 999ca9b..ee34d5b 100644
--- a/app/src/main/res/drawable/ic_chat_bubble.xml
+++ b/app/src/main/res/drawable/ic_chat_bubble.xml
@@ -12,3 +12,6 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_history.xml b/app/src/main/res/drawable/ic_history.xml
index f1bd2be..a521585 100644
--- a/app/src/main/res/drawable/ic_history.xml
+++ b/app/src/main/res/drawable/ic_history.xml
@@ -13,3 +13,6 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_location_pin.xml b/app/src/main/res/drawable/ic_location_pin.xml
index bc5da5b..8c2f2df 100644
--- a/app/src/main/res/drawable/ic_location_pin.xml
+++ b/app/src/main/res/drawable/ic_location_pin.xml
@@ -13,3 +13,6 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_nav_alerts.xml b/app/src/main/res/drawable/ic_nav_alerts.xml
index 1c9e310..83a170f 100644
--- a/app/src/main/res/drawable/ic_nav_alerts.xml
+++ b/app/src/main/res/drawable/ic_nav_alerts.xml
@@ -12,3 +12,6 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_nav_home.xml b/app/src/main/res/drawable/ic_nav_home.xml
index 10fe272..6268111 100644
--- a/app/src/main/res/drawable/ic_nav_home.xml
+++ b/app/src/main/res/drawable/ic_nav_home.xml
@@ -13,3 +13,6 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_nav_zones.xml b/app/src/main/res/drawable/ic_nav_zones.xml
index 9e71427..5dbc103 100644
--- a/app/src/main/res/drawable/ic_nav_zones.xml
+++ b/app/src/main/res/drawable/ic_nav_zones.xml
@@ -13,3 +13,6 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_navigation_plane.xml b/app/src/main/res/drawable/ic_navigation_plane.xml
index 892f766..21c2cd9 100644
--- a/app/src/main/res/drawable/ic_navigation_plane.xml
+++ b/app/src/main/res/drawable/ic_navigation_plane.xml
@@ -12,3 +12,6 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_profile.xml b/app/src/main/res/drawable/ic_profile.xml
index 9ea32ad..fb71116 100644
--- a/app/src/main/res/drawable/ic_profile.xml
+++ b/app/src/main/res/drawable/ic_profile.xml
@@ -13,3 +13,6 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_signal_gps.xml b/app/src/main/res/drawable/ic_signal_gps.xml
index 35fd914..8774a84 100644
--- a/app/src/main/res/drawable/ic_signal_gps.xml
+++ b/app/src/main/res/drawable/ic_signal_gps.xml
@@ -15,3 +15,6 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_zoom_minus.xml b/app/src/main/res/drawable/ic_zoom_minus.xml
index 77adcda..89a5ade 100644
--- a/app/src/main/res/drawable/ic_zoom_minus.xml
+++ b/app/src/main/res/drawable/ic_zoom_minus.xml
@@ -12,3 +12,6 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_zoom_plus.xml b/app/src/main/res/drawable/ic_zoom_plus.xml
index 83e9bab..51698d5 100644
--- a/app/src/main/res/drawable/ic_zoom_plus.xml
+++ b/app/src/main/res/drawable/ic_zoom_plus.xml
@@ -12,3 +12,6 @@
+
+
+
diff --git a/app/src/main/res/layout/activity_criar_conta.xml b/app/src/main/res/layout/activity_criar_conta.xml
index 0b8e34c..948f4c6 100644
--- a/app/src/main/res/layout/activity_criar_conta.xml
+++ b/app/src/main/res/layout/activity_criar_conta.xml
@@ -1,166 +1,135 @@
-
+ android:background="#D0E0E3"
+ android:gravity="center_horizontal"
+ android:orientation="vertical"
+ tools:context=".criar_conta_activity">
-
-
-
-
+ android:layout_width="60dp"
+ android:layout_height="60dp"
+ android:layout_marginTop="48dp"
+ android:src="@drawable/logo" />
-
+ android:textColor="#FFFFFF"
+ android:textSize="28sp"
+ android:textStyle="bold" />
-
+ android:textColor="#FFFFFF" />
-
+ android:layout_marginStart="24dp"
+ android:layout_marginTop="24dp"
+ android:layout_marginEnd="24dp"
+ android:layout_marginBottom="24dp"
+ app:cardCornerRadius="28dp"
+ app:cardElevation="4dp">
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:padding="24dp">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+ android:textSize="16sp"
+ app:cornerRadius="12dp" />
-
+ android:layout_height="wrap_content"
+ android:layout_marginTop="16dp"
+ android:gravity="center"
+ android:text="Já tem conta? Entrar agora"
+ android:textColor="#3B82F6"
+ android:textSize="14sp"
+ android:textStyle="bold" />
-
-
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 582ce2d..0e4cefc 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -10,6 +10,7 @@
+
+
+
+
diff --git a/app/src/main/res/layout/fragment_map.xml b/app/src/main/res/layout/fragment_map.xml
index 2f857a4..5db3370 100644
--- a/app/src/main/res/layout/fragment_map.xml
+++ b/app/src/main/res/layout/fragment_map.xml
@@ -1,453 +1,460 @@
-
-
+ tools:context=".ui.map.MapFragment">
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+ android:orientation="vertical"
+ android:paddingBottom="24dp">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ android:layout_height="210dp">
+ android:layout_width="match_parent"
+ android:layout_height="210dp"
+ android:background="@drawable/bg_header_top" />
-
-
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:gravity="center"
+ android:orientation="vertical">
+
+
+ android:text="@string/header_subtitle"
+ android:textColor="#E1EAFF"
+ android:textSize="14sp" />
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ android:padding="20dp">
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
-
+
+
+
+
+ android:gravity="center_horizontal"
+ android:orientation="vertical"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent">
-
-
-
-
+
-
-
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/fragment_profile.xml b/app/src/main/res/layout/fragment_profile.xml
new file mode 100644
index 0000000..e766f02
--- /dev/null
+++ b/app/src/main/res/layout/fragment_profile.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
diff --git a/app/src/main/res/layout/fragment_zones.xml b/app/src/main/res/layout/fragment_zones.xml
index 8216d1f..4d0e193 100644
--- a/app/src/main/res/layout/fragment_zones.xml
+++ b/app/src/main/res/layout/fragment_zones.xml
@@ -81,9 +81,9 @@
android:layout_marginTop="16dp"
android:layout_marginEnd="24dp"
android:backgroundTint="#1F6AEF"
- android:cornerRadius="16dp"
- android:icon="@android:drawable/ic_input_add"
- android:iconTint="#FFFFFF"
+ app:cornerRadius="16dp"
+ app:icon="@android:drawable/ic_input_add"
+ app:iconTint="#FFFFFF"
android:text="@string/zones_add_button"
android:textAllCaps="false"
android:textColor="#FFFFFF"
@@ -114,8 +114,8 @@
android:padding="20dp">
@@ -128,7 +128,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
- android:text="🏫"
+ android:text="@string/zone_school_icon"
android:textSize="24sp" />
@@ -168,7 +168,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="14dp"
- android:gravity="space_between"
+ android:gravity="center"
android:orientation="horizontal">
@@ -257,7 +257,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="14dp"
- android:gravity="space_between"
+ android:gravity="center"
android:orientation="horizontal">
-
+ android:background="#D0E0E3"
+ android:gravity="center_horizontal"
+ android:orientation="vertical"
+ tools:context=".login_activity">
-
-
-
+ android:layout_width="60dp"
+ android:layout_height="60dp"
+ android:layout_marginTop="60dp"
+ android:src="@drawable/logo" />
-
+ android:text="FindU"
+ android:textColor="#FFFFFF"
+ android:textSize="28sp"
+ android:textStyle="bold" />
-
+ android:textColor="#FFFFFF" />
-
+ android:layout_marginStart="24dp"
+ android:layout_marginTop="32dp"
+ android:layout_marginEnd="24dp"
+ app:cardCornerRadius="28dp"
+ app:cardElevation="4dp">
-
-
+ android:orientation="vertical"
+ android:padding="24dp">
-
-
-
-
-
-
-
-
-
-
-
+ android:layout_gravity="center_horizontal"
+ android:text="Bem-vindo de volta"
+ android:textColor="#1F2937"
+ android:textSize="22sp"
+ android:textStyle="bold" />
-
-
-
-
-
-
-
-
-
-
-
-
-
+ android:layout_height="50dp"
+ android:layout_marginTop="16dp"
+ android:background="@drawable/edit_text_background_light_gray"
+ android:hint="Palavra-passe"
+ android:inputType="textPassword"
+ android:paddingStart="20dp"
+ android:paddingEnd="20dp"
+ android:textSize="14sp" />
+
+
-
-
-
+ android:layout_marginTop="24dp"
+ android:gravity="center"
+ android:orientation="horizontal">
-
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/menu/bottom_tabs.xml b/app/src/main/res/menu/bottom_tabs.xml
index 4b27396..8de942d 100644
--- a/app/src/main/res/menu/bottom_tabs.xml
+++ b/app/src/main/res/menu/bottom_tabs.xml
@@ -2,27 +2,27 @@