diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml index 72ba9d4..cf5be69 100644 --- a/.idea/deploymentTargetSelector.xml +++ b/.idea/deploymentTargetSelector.xml @@ -7,6 +7,14 @@ diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 0b80081..81ada05 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -50,6 +50,8 @@ dependencies { implementation(libs.credentials) implementation(libs.credentials.play.services.auth) implementation(libs.googleid) + implementation("com.google.android.gms:play-services-maps:18.2.0") + implementation("com.google.android.gms:play-services-location:21.0.1") testImplementation(libs.junit) androidTestImplementation(libs.ext.junit) androidTestImplementation(libs.espresso.core) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6e1b167..d750f77 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,6 +2,10 @@ + + + + + + + @@ -26,6 +37,9 @@ + { + mMap = googleMap; + // Check permissions and enable My Location + if (androidx.core.content.ContextCompat.checkSelfPermission(requireContext(), + android.Manifest.permission.ACCESS_FINE_LOCATION) == android.content.pm.PackageManager.PERMISSION_GRANTED) { + mMap.setMyLocationEnabled(true); + + // Move camera to finding User or Default + com.google.android.gms.location.LocationServices.getFusedLocationProviderClient(requireActivity()) + .getLastLocation() + .addOnSuccessListener(location -> { + if (location != null) { + com.google.android.gms.maps.model.LatLng current = new com.google.android.gms.maps.model.LatLng( + location.getLatitude(), location.getLongitude()); + mMap.moveCamera(com.google.android.gms.maps.CameraUpdateFactory + .newLatLngZoom(current, 15f)); + } else { + // Default to Escola Profissional de Vila do Conde + com.google.android.gms.maps.model.LatLng school = new com.google.android.gms.maps.model.LatLng( + 41.3536, -8.7424); + mMap.moveCamera( + com.google.android.gms.maps.CameraUpdateFactory.newLatLngZoom(school, 15f)); + } + }); + } else { + // Request permissions (Simplified for brevity, usually should use + // RequestPermissionLauncher) + requestPermissions(new String[] { android.Manifest.permission.ACCESS_FINE_LOCATION }, 100); + } + + mMap.setOnMapLongClickListener(latLng -> { + android.content.Intent intent = new android.content.Intent(getContext(), + com.example.pap_findu.AddZoneActivity.class); + intent.putExtra("lat", latLng.latitude); + intent.putExtra("lng", latLng.longitude); + startActivity(intent); + }); + }); + } + // Implement SOS Button logic binding.sosButton.setOnClickListener(v -> { android.content.Intent intent = new android.content.Intent(android.content.Intent.ACTION_DIAL); @@ -43,7 +89,9 @@ public class MapFragment extends Fragment { }); binding.messagesFab.setOnClickListener(v -> { - android.widget.Toast.makeText(getContext(), "Abrir Chat", android.widget.Toast.LENGTH_SHORT).show(); + android.content.Intent intent = new android.content.Intent(getContext(), + com.example.pap_findu.ChatActivity.class); + startActivity(intent); }); return root; 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 index d35f051..dd49df7 100644 --- 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 @@ -20,6 +20,19 @@ public class ProfileFragment extends Fragment { ViewGroup container, Bundle savedInstanceState) { binding = FragmentProfileBinding.inflate(inflater, container, false); View root = binding.getRoot(); + + binding.btnLogout.setOnClickListener(v -> { + // Sign out of Firebase + com.google.firebase.auth.FirebaseAuth.getInstance().signOut(); + + // Navigate back to Login Activity + android.content.Intent intent = new android.content.Intent(getActivity(), + com.example.pap_findu.login_activity.class); + intent.setFlags( + android.content.Intent.FLAG_ACTIVITY_NEW_TASK | android.content.Intent.FLAG_ACTIVITY_CLEAR_TASK); + startActivity(intent); + }); + return root; } diff --git a/app/src/main/java/com/example/pap_findu/ui/zones/ZonesFragment.java b/app/src/main/java/com/example/pap_findu/ui/zones/ZonesFragment.java index 419e1cc..d370a01 100644 --- a/app/src/main/java/com/example/pap_findu/ui/zones/ZonesFragment.java +++ b/app/src/main/java/com/example/pap_findu/ui/zones/ZonesFragment.java @@ -16,9 +16,17 @@ public class ZonesFragment extends Fragment { @Override public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { + Bundle savedInstanceState) { binding = FragmentZonesBinding.inflate(inflater, container, false); - return binding.getRoot(); + View root = binding.getRoot(); + + binding.addZoneButton.setOnClickListener(v -> { + android.content.Intent intent = new android.content.Intent(getContext(), + com.example.pap_findu.AddZoneActivity.class); + startActivity(intent); + }); + + return root; } @Override diff --git a/app/src/main/res/color/bottom_nav_selector.xml b/app/src/main/res/color/bottom_nav_selector.xml index e878464..1130154 100644 --- a/app/src/main/res/color/bottom_nav_selector.xml +++ b/app/src/main/res/color/bottom_nav_selector.xml @@ -10,3 +10,5 @@ + + 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 8802694..8becc8c 100644 --- a/app/src/main/res/drawable/bg_alert_icon_info.xml +++ b/app/src/main/res/drawable/bg_alert_icon_info.xml @@ -11,3 +11,5 @@ + + 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 220177a..f27fdc8 100644 --- a/app/src/main/res/drawable/bg_alert_icon_warning.xml +++ b/app/src/main/res/drawable/bg_alert_icon_warning.xml @@ -11,3 +11,5 @@ + + diff --git a/app/src/main/res/drawable/bg_avatar_placeholder.xml b/app/src/main/res/drawable/bg_avatar_placeholder.xml index 8d1343b..5b67d39 100644 --- a/app/src/main/res/drawable/bg_avatar_placeholder.xml +++ b/app/src/main/res/drawable/bg_avatar_placeholder.xml @@ -10,3 +10,5 @@ + + diff --git a/app/src/main/res/drawable/bg_badge.xml b/app/src/main/res/drawable/bg_badge.xml index e11c62f..afa0fb3 100644 --- a/app/src/main/res/drawable/bg_badge.xml +++ b/app/src/main/res/drawable/bg_badge.xml @@ -10,3 +10,5 @@ + + diff --git a/app/src/main/res/drawable/bg_bottom_nav.xml b/app/src/main/res/drawable/bg_bottom_nav.xml index 6d08638..0e19a78 100644 --- a/app/src/main/res/drawable/bg_bottom_nav.xml +++ b/app/src/main/res/drawable/bg_bottom_nav.xml @@ -20,3 +20,5 @@ + + diff --git a/app/src/main/res/drawable/bg_chip_muted.xml b/app/src/main/res/drawable/bg_chip_muted.xml index 35fa013..7e1c843 100644 --- a/app/src/main/res/drawable/bg_chip_muted.xml +++ b/app/src/main/res/drawable/bg_chip_muted.xml @@ -16,3 +16,5 @@ + + diff --git a/app/src/main/res/drawable/bg_chip_success.xml b/app/src/main/res/drawable/bg_chip_success.xml index bc0046d..16be6bc 100644 --- a/app/src/main/res/drawable/bg_chip_success.xml +++ b/app/src/main/res/drawable/bg_chip_success.xml @@ -16,3 +16,5 @@ + + diff --git a/app/src/main/res/drawable/bg_chip_warning.xml b/app/src/main/res/drawable/bg_chip_warning.xml index 7e84c61..9a7129b 100644 --- a/app/src/main/res/drawable/bg_chip_warning.xml +++ b/app/src/main/res/drawable/bg_chip_warning.xml @@ -16,3 +16,5 @@ + + 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 a68e464..e7b3962 100644 --- a/app/src/main/res/drawable/bg_filter_chip_active.xml +++ b/app/src/main/res/drawable/bg_filter_chip_active.xml @@ -16,3 +16,5 @@ + + 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 bf3c86a..2a1f281 100644 --- a/app/src/main/res/drawable/bg_filter_chip_neutral.xml +++ b/app/src/main/res/drawable/bg_filter_chip_neutral.xml @@ -19,3 +19,5 @@ + + diff --git a/app/src/main/res/drawable/bg_header_top.xml b/app/src/main/res/drawable/bg_header_top.xml index decc955..e262d01 100644 --- a/app/src/main/res/drawable/bg_header_top.xml +++ b/app/src/main/res/drawable/bg_header_top.xml @@ -16,3 +16,5 @@ + + diff --git a/app/src/main/res/drawable/bg_map_card.xml b/app/src/main/res/drawable/bg_map_card.xml index 2aa5b73..2994ca0 100644 --- a/app/src/main/res/drawable/bg_map_card.xml +++ b/app/src/main/res/drawable/bg_map_card.xml @@ -23,3 +23,5 @@ + + diff --git a/app/src/main/res/drawable/bg_map_surface.xml b/app/src/main/res/drawable/bg_map_surface.xml index 5be1d7b..f7e6a97 100644 --- a/app/src/main/res/drawable/bg_map_surface.xml +++ b/app/src/main/res/drawable/bg_map_surface.xml @@ -11,3 +11,5 @@ + + diff --git a/app/src/main/res/drawable/bg_marker_avatar.xml b/app/src/main/res/drawable/bg_marker_avatar.xml index 26b6e6a..1e5c251 100644 --- a/app/src/main/res/drawable/bg_marker_avatar.xml +++ b/app/src/main/res/drawable/bg_marker_avatar.xml @@ -15,3 +15,5 @@ + + diff --git a/app/src/main/res/drawable/bg_marker_label.xml b/app/src/main/res/drawable/bg_marker_label.xml index bd292d2..d21ca7b 100644 --- a/app/src/main/res/drawable/bg_marker_label.xml +++ b/app/src/main/res/drawable/bg_marker_label.xml @@ -19,3 +19,5 @@ + + diff --git a/app/src/main/res/drawable/bg_marker_user.xml b/app/src/main/res/drawable/bg_marker_user.xml index 94b1ebc..dbb69a7 100644 --- a/app/src/main/res/drawable/bg_marker_user.xml +++ b/app/src/main/res/drawable/bg_marker_user.xml @@ -14,3 +14,5 @@ + + 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 6fe6fba..9895cea 100644 --- a/app/src/main/res/drawable/bg_safe_banner_icon.xml +++ b/app/src/main/res/drawable/bg_safe_banner_icon.xml @@ -11,3 +11,5 @@ + + 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 df5c4b8..a6c9c7e 100644 --- a/app/src/main/res/drawable/bg_safe_zone_circle.xml +++ b/app/src/main/res/drawable/bg_safe_zone_circle.xml @@ -13,3 +13,5 @@ + + diff --git a/app/src/main/res/drawable/bg_status_online.xml b/app/src/main/res/drawable/bg_status_online.xml index 55fb4ce..4ed4c3f 100644 --- a/app/src/main/res/drawable/bg_status_online.xml +++ b/app/src/main/res/drawable/bg_status_online.xml @@ -11,3 +11,5 @@ + + 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 cb5def5..d2aaf93 100644 --- a/app/src/main/res/drawable/bg_zone_icon_primary.xml +++ b/app/src/main/res/drawable/bg_zone_icon_primary.xml @@ -11,3 +11,5 @@ + + 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 3ae184b..8dd6c2c 100644 --- a/app/src/main/res/drawable/bg_zone_icon_secondary.xml +++ b/app/src/main/res/drawable/bg_zone_icon_secondary.xml @@ -11,3 +11,5 @@ + + diff --git a/app/src/main/res/drawable/bg_zoom_button.xml b/app/src/main/res/drawable/bg_zoom_button.xml index 1708b73..3d6b399 100644 --- a/app/src/main/res/drawable/bg_zoom_button.xml +++ b/app/src/main/res/drawable/bg_zoom_button.xml @@ -23,3 +23,5 @@ + + diff --git a/app/src/main/res/drawable/ic_alert_warning.xml b/app/src/main/res/drawable/ic_alert_warning.xml index 5e9b322..44cb552 100644 --- a/app/src/main/res/drawable/ic_alert_warning.xml +++ b/app/src/main/res/drawable/ic_alert_warning.xml @@ -15,3 +15,5 @@ + + diff --git a/app/src/main/res/drawable/ic_battery.xml b/app/src/main/res/drawable/ic_battery.xml index 31e931b..707195a 100644 --- a/app/src/main/res/drawable/ic_battery.xml +++ b/app/src/main/res/drawable/ic_battery.xml @@ -18,3 +18,5 @@ + + diff --git a/app/src/main/res/drawable/ic_chat_bubble.xml b/app/src/main/res/drawable/ic_chat_bubble.xml index ee34d5b..052f483 100644 --- a/app/src/main/res/drawable/ic_chat_bubble.xml +++ b/app/src/main/res/drawable/ic_chat_bubble.xml @@ -15,3 +15,5 @@ + + diff --git a/app/src/main/res/drawable/ic_history.xml b/app/src/main/res/drawable/ic_history.xml index a521585..8cd493c 100644 --- a/app/src/main/res/drawable/ic_history.xml +++ b/app/src/main/res/drawable/ic_history.xml @@ -16,3 +16,5 @@ + + diff --git a/app/src/main/res/drawable/ic_location_pin.xml b/app/src/main/res/drawable/ic_location_pin.xml index 8c2f2df..eb2d302 100644 --- a/app/src/main/res/drawable/ic_location_pin.xml +++ b/app/src/main/res/drawable/ic_location_pin.xml @@ -16,3 +16,5 @@ + + diff --git a/app/src/main/res/drawable/ic_nav_alerts.xml b/app/src/main/res/drawable/ic_nav_alerts.xml index 83a170f..8860a55 100644 --- a/app/src/main/res/drawable/ic_nav_alerts.xml +++ b/app/src/main/res/drawable/ic_nav_alerts.xml @@ -15,3 +15,5 @@ + + diff --git a/app/src/main/res/drawable/ic_nav_home.xml b/app/src/main/res/drawable/ic_nav_home.xml index 6268111..1d74f48 100644 --- a/app/src/main/res/drawable/ic_nav_home.xml +++ b/app/src/main/res/drawable/ic_nav_home.xml @@ -16,3 +16,5 @@ + + diff --git a/app/src/main/res/drawable/ic_nav_zones.xml b/app/src/main/res/drawable/ic_nav_zones.xml index 5dbc103..ba31300 100644 --- a/app/src/main/res/drawable/ic_nav_zones.xml +++ b/app/src/main/res/drawable/ic_nav_zones.xml @@ -16,3 +16,5 @@ + + diff --git a/app/src/main/res/drawable/ic_navigation_plane.xml b/app/src/main/res/drawable/ic_navigation_plane.xml index 21c2cd9..6976b58 100644 --- a/app/src/main/res/drawable/ic_navigation_plane.xml +++ b/app/src/main/res/drawable/ic_navigation_plane.xml @@ -15,3 +15,5 @@ + + diff --git a/app/src/main/res/drawable/ic_profile.xml b/app/src/main/res/drawable/ic_profile.xml index fb71116..95a3a45 100644 --- a/app/src/main/res/drawable/ic_profile.xml +++ b/app/src/main/res/drawable/ic_profile.xml @@ -16,3 +16,5 @@ + + diff --git a/app/src/main/res/drawable/ic_signal_gps.xml b/app/src/main/res/drawable/ic_signal_gps.xml index 8774a84..c85271b 100644 --- a/app/src/main/res/drawable/ic_signal_gps.xml +++ b/app/src/main/res/drawable/ic_signal_gps.xml @@ -18,3 +18,5 @@ + + diff --git a/app/src/main/res/drawable/ic_zoom_minus.xml b/app/src/main/res/drawable/ic_zoom_minus.xml index 89a5ade..e81a546 100644 --- a/app/src/main/res/drawable/ic_zoom_minus.xml +++ b/app/src/main/res/drawable/ic_zoom_minus.xml @@ -15,3 +15,5 @@ + + diff --git a/app/src/main/res/drawable/ic_zoom_plus.xml b/app/src/main/res/drawable/ic_zoom_plus.xml index 51698d5..786e484 100644 --- a/app/src/main/res/drawable/ic_zoom_plus.xml +++ b/app/src/main/res/drawable/ic_zoom_plus.xml @@ -15,3 +15,5 @@ + + diff --git a/app/src/main/res/layout/fragment_history.xml b/app/src/main/res/layout/fragment_history.xml index 397a8b5..3bf1fe5 100644 --- a/app/src/main/res/layout/fragment_history.xml +++ b/app/src/main/res/layout/fragment_history.xml @@ -1,19 +1,334 @@ - - - + android:orientation="vertical" + android:paddingBottom="24dp"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/fragment_map.xml b/app/src/main/res/layout/fragment_map.xml index 5db3370..269fa45 100644 --- a/app/src/main/res/layout/fragment_map.xml +++ b/app/src/main/res/layout/fragment_map.xml @@ -245,14 +245,11 @@ android:clipToPadding="false" android:padding="24dp"> - - - - + android:orientation="vertical" + android:paddingBottom="24dp"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/fragment_zones.xml b/app/src/main/res/layout/fragment_zones.xml index 4d0e193..9d9c464 100644 --- a/app/src/main/res/layout/fragment_zones.xml +++ b/app/src/main/res/layout/fragment_zones.xml @@ -82,7 +82,7 @@ android:layout_marginEnd="24dp" android:backgroundTint="#1F6AEF" app:cornerRadius="16dp" - app:icon="@android:drawable/ic_input_add" + app:icon="@drawable/ic_add" app:iconTint="#FFFFFF" android:text="@string/zones_add_button" android:textAllCaps="false" @@ -114,8 +114,8 @@ android:padding="20dp"> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b21948b..45b85a0 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -26,9 +26,9 @@ 2 zonas monitorizadas Todas as entradas e saídas são notificadas em tempo real. Adicionar nova zona - Escola Secundária - Chegada prevista 08:45 - Ativa + Escola Profissional de Vila do Conde + Av. Júlio Graça, Vila do Conde + Seguro Entrada confirmada Atualizado há 2 min Casa