diff --git a/app/build.gradle b/app/build.gradle
index 12b3906..8da28f7 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -76,6 +76,13 @@ dependencies {
// mapview
implementation 'com.google.android.gms:play-services-maps:18.1.0'
+ // directions api
+ implementation 'com.google.maps:google-maps-services:2.2.0'
+ implementation 'org.slf4j:slf4j-simple:1.7.25'
+
+ // for decoding direction results into polylines
+ implementation 'com.google.maps.android:android-maps-utils:3.5.3'
+
// location
implementation 'com.google.android.gms:play-services-location:21.0.1'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 1dc175e..1d4c917 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -5,15 +5,16 @@
-
-
-
-
+
-
-
-
-
-
+
+ android:windowSoftInputMode="adjustResize" />
-
@@ -130,30 +131,26 @@
android:name=".cg_subscription.CgSubscriptionActivity"
android:exported="true"
android:screenOrientation="portrait">
-
-
-
-
-
-
-
+
+
+
+ android:exported="false"
+ android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
+
-
{
- updateCareGiverData();
+ if (isFromPatient){
+ updatePatientData();
+ }else{
+ updateCareGiverData();
+ }
}, no -> {
});
@@ -411,6 +413,53 @@ public class EditProfileInfoActivity extends AppCompatActivity implements
}
+ private void updatePatientData() {
+ if (patientData == null) return;
+
+ progressDialog.setTitle("Please wait...");
+ progressDialog.setMessage("while we update your data.");
+ progressDialog.setCancelable(false);
+ progressDialog.show();
+
+ Map body = new HashMap<>();
+
+ RequestBody user_first_name = RequestBody.create(binding.name.getText().toString().trim(), MediaType.parse("text/plain;charset=utf-8"));
+ body.put("full_name", user_first_name);
+
+ String country_code;
+ if (binding.countryCodes.getSelectedIndex() == -1 ||
+ binding.countryCodes.getSelectedIndex() >= countryCodeList.size()){
+ country_code = "+1";
+ }else{
+ country_code = countryCodeList.get(binding.countryCodes.getSelectedIndex());
+ }
+ RequestBody contact_number_part = RequestBody.create(country_code+binding.contactNumber.getText().toString(), MediaType.parse("text/plain;charset=utf-8"));
+ body.put("contact_number", contact_number_part);
+
+ RequestBody email_part = RequestBody.create(binding.email.getText().toString(), MediaType.parse("text/plain;charset=utf-8"));
+ body.put("email", email_part);
+
+ RequestBody dob_part = RequestBody.create(binding.dob.getText().toString(), MediaType.parse("text/plain;charset=utf-8"));
+ body.put("date_of_birth", dob_part);
+
+ MultipartBody.Part filePart = null;
+
+ if (selectedImageUri != null) {
+ RequestBody requestFile = RequestBody.create(MediaType.parse("image/jpeg"), new File(selectedImageUri.getPath()));
+ filePart = MultipartBody.Part.createFormData("photo",
+ "img_" + System.currentTimeMillis()
+ , requestFile);
+ }
+
+ RequestBody street_part = RequestBody.create(binding.street.getText().toString().trim(), MediaType.parse("text/plain;charset=utf-8"));
+ body.put("street", street_part);
+
+ viewModel.updatePatientData(patientData.patientId,
+ body, filePart, "Bearer " + AppUtil.getPatientToken(this),
+ this);
+
+ }
+
private void setDOB(int year, int month, int dayOfMonth) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
@@ -686,8 +735,15 @@ public class EditProfileInfoActivity extends AppCompatActivity implements
getString(R.string.changes_successful), R.raw.done_anim_primary,
3600, v3 -> {
// here v3 is null
- this.careGiverData.patientDetails = patient;
- CaregiverDataCache.setCareGiverData(careGiverData);
+ if (!isFromPatient && this.careGiverData != null){
+ this.careGiverData.patientDetails = patient;
+ CaregiverDataCache.setCareGiverData(careGiverData);
+ }else{
+ if (this.patientData != null) patient.patientId = this.patientData.patientId;
+
+ PatientDataCache.setPatientData(patient);
+ }
+
Toast.makeText(this, "Data updated.", Toast.LENGTH_SHORT).show();
onBackPressed();
});
diff --git a/app/src/main/java/com/ssb/simplitend/caregiverdashboard/fragments/CgDashBoardFragment.java b/app/src/main/java/com/ssb/simplitend/caregiverdashboard/fragments/CgDashBoardFragment.java
index e4765ef..f3466e1 100644
--- a/app/src/main/java/com/ssb/simplitend/caregiverdashboard/fragments/CgDashBoardFragment.java
+++ b/app/src/main/java/com/ssb/simplitend/caregiverdashboard/fragments/CgDashBoardFragment.java
@@ -63,16 +63,11 @@ public class CgDashBoardFragment extends Fragment implements
protected CaregiverDashFragmentBinding binding;
private CaregiverMainViewModel viewModel;
-
private ReminderViewModel reminderViewModel;
private RoutineViewModel routineViewModel;
-
private CareGiverData careGiverData;
-
private PatientData patientData;
-
private ProgressDialog progressDialog;
-
private GoogleMap mGoogleMap;
public CgDashBoardFragment(){
@@ -89,11 +84,12 @@ public class CgDashBoardFragment extends Fragment implements
progressDialog = new ProgressDialog(requireContext());
-// CaregiverDataCache.getCaregiverData(requireActivity(), (careGiverData1 -> {
-// this.careGiverData = careGiverData1;
-//
-// loadReminders();
-// }), true);
+ CaregiverDataCache.getCaregiverData(requireActivity(), (careGiverData1 -> {
+ this.careGiverData = careGiverData1;
+
+ loadReminders();
+ loadActivities();
+ }), true);
initViews();
@@ -113,16 +109,14 @@ public class CgDashBoardFragment extends Fragment implements
this.careGiverData = careGiverData1;
setDetails();
- loadReminders();
- loadActivities();
}), true);
}
private void loadActivities() {
if (careGiverData == null) return;
- binding.onGoingActivity.setText(getString(R.string.loading));
- binding.upcomingActivity.setText(getString(R.string.loading));
+ binding.onGoingActivity.setText(viewModel.ongoingActivityText);
+ binding.upcomingActivity.setText(viewModel.upcomingActivityText);
routineViewModel.getRoutines(careGiverData.patientId,
"Bearer " + AppUtil.getCgToken(requireContext()),
@@ -133,8 +127,8 @@ public class CgDashBoardFragment extends Fragment implements
private void loadReminders(){
if (careGiverData == null) return;
- binding.nearestReminder.setText(getString(R.string.loading));
- binding.dailyReminder.setText(getString(R.string.loading));
+ binding.nearestReminder.setText(viewModel.upcomingReminderText);
+ binding.dailyReminder.setText(viewModel.dailyReminderText);
reminderViewModel.getRemindersList(careGiverData.patientId,
Calendar.getInstance().get(Calendar.DAY_OF_WEEK)-1,
@@ -321,15 +315,23 @@ public class CgDashBoardFragment extends Fragment implements
@Override
public void onGeofenceDetailsFetched(GeoFenceDetails geoFenceDetails) {
progressDialog.dismiss();
- Intent intent = new Intent(requireActivity(), CgGeoFencingActivity.class);
- intent.putExtra(GEOFENCE_DETAILS_KEY, geoFenceDetails);
- startActivity(intent);
+ try {
+ Intent intent = new Intent(requireActivity(), CgGeoFencingActivity.class);
+ intent.putExtra(GEOFENCE_DETAILS_KEY, geoFenceDetails);
+ startActivity(intent);
+ } catch (Exception e) {
+ // do nothing
+ }
}
@Override
public void onGeofenceDetailsFetchFailed(Throwable throwable, String message) {
progressDialog.dismiss();
- Toast.makeText(requireContext(), message, Toast.LENGTH_SHORT).show();
+ try {
+ Toast.makeText(requireContext(), message, Toast.LENGTH_SHORT).show();
+ } catch (Exception e) {
+ // do nothing
+ }
}
@Override
@@ -339,18 +341,20 @@ public class CgDashBoardFragment extends Fragment implements
@Override
public void onFetchRemindersListFailed(Throwable t, String message) {
- binding.nearestReminder.setText(getString(R.string.couldnt_load_data));
- binding.dailyReminder.setText(getString(R.string.couldnt_load_data));
+ binding.nearestReminder.setText(R.string.couldnt_load_data);
+ binding.dailyReminder.setText(R.string.couldnt_load_data);
+
+ viewModel.upcomingReminderText = binding.nearestReminder.getText().toString();
+ viewModel.dailyReminderText = binding.dailyReminder.getText().toString();
}
@Override
public void nearestReminder(NearestReminder nearestReminder) {
Log.d("aditya", "nearestReminder: " + nearestReminder);
- // daily routine setting
- String daily_r_txt;
-
try {
+ // daily routine setting
+ String daily_r_txt;
if (nearestReminder.daily_reminder_time == null){
daily_r_txt = "No daily reminders for today";
@@ -361,11 +365,11 @@ public class CgDashBoardFragment extends Fragment implements
String daily_r_time = format_sdf.format(Objects.requireNonNull(input_sdf.parse(nearestReminder.daily_reminder_time)));
daily_r_txt = "Daily reminder at " + daily_r_time;
}
- }catch (Exception e){
- daily_r_txt = getString(R.string.couldnt_load_data);
- }
- binding.dailyReminder.setText(daily_r_txt);
+ binding.dailyReminder.setText(daily_r_txt);
+ }catch (Exception e){
+ binding.dailyReminder.setText(R.string.couldnt_load_data);
+ }
// next reminder setting
try {
@@ -399,19 +403,6 @@ public class CgDashBoardFragment extends Fragment implements
StringBuilder reminder_txt = new StringBuilder("Remind " + nearestReminder.medication_name);
-// if (h > 0){
-// reminder_txt.append(" in " ).append(h);
-//
-// if (h > 1) reminder_txt.append(" Hrs ");
-// else reminder_txt.append(" Hr ");
-// }
-//
-// if (m > 0){
-// reminder_txt.append(m).append(" Min");
-//
-// if (m > 1) reminder_txt.append("s"); // plural
-// }
-
if (time_diff > 3600){
// time greater than 60 mins
// thus, showing direct time
@@ -435,8 +426,11 @@ public class CgDashBoardFragment extends Fragment implements
}
}catch (Exception e){
- binding.nearestReminder.setText(getString(R.string.couldnt_load_data));
+ binding.nearestReminder.setText(R.string.couldnt_load_data);
}
+
+ viewModel.upcomingReminderText = binding.nearestReminder.getText().toString();
+ viewModel.dailyReminderText = binding.dailyReminder.getText().toString();
}
@Override
@@ -446,8 +440,11 @@ public class CgDashBoardFragment extends Fragment implements
@Override
public void onRoutinesFetchedFailed(Throwable t, String message) {
- binding.upcomingActivity.setText(getString(R.string.couldnt_load_data));
- binding.onGoingActivity.setText(getString(R.string.couldnt_load_data));
+ binding.upcomingActivity.setText(R.string.couldnt_load_data);
+ binding.onGoingActivity.setText(R.string.couldnt_load_data);
+
+ viewModel.ongoingActivityText = binding.onGoingActivity.getText().toString();
+ viewModel.upcomingActivityText = binding.upcomingActivity.getText().toString();
}
@Override
@@ -489,19 +486,6 @@ public class CgDashBoardFragment extends Fragment implements
StringBuilder up_activity_txt = new StringBuilder(nearestActivity.upcoming_activity_name);
-// if (h > 0){
-// up_activity_txt.append(" in " ).append(h);
-//
-// if (h > 1) up_activity_txt.append(" Hrs ");
-// else up_activity_txt.append(" Hr ");
-// }
-//
-// if (m > 0){
-// up_activity_txt.append(m).append(" Min");
-//
-// if (m > 1) up_activity_txt.append("s"); // plural
-// }
-
if (time_diff > 3600){
// time greater than 60 mins
// thus, showing direct time
@@ -525,7 +509,10 @@ public class CgDashBoardFragment extends Fragment implements
}
}catch (Exception e){
- binding.upcomingActivity.setText(getString(R.string.couldnt_load_data));
+ binding.upcomingActivity.setText(R.string.couldnt_load_data);
}
+
+ viewModel.ongoingActivityText = binding.onGoingActivity.getText().toString();
+ viewModel.upcomingActivityText = binding.upcomingActivity.getText().toString();
}
}
diff --git a/app/src/main/java/com/ssb/simplitend/caregiverdashboard/mvvm/CaregiverMainViewModel.java b/app/src/main/java/com/ssb/simplitend/caregiverdashboard/mvvm/CaregiverMainViewModel.java
index 8e5e9ce..e3e49fa 100644
--- a/app/src/main/java/com/ssb/simplitend/caregiverdashboard/mvvm/CaregiverMainViewModel.java
+++ b/app/src/main/java/com/ssb/simplitend/caregiverdashboard/mvvm/CaregiverMainViewModel.java
@@ -36,8 +36,13 @@ public class CaregiverMainViewModel extends ViewModel {
private ArrayList articleResults;
+ public String ongoingActivityText, upcomingActivityText;
+ public String upcomingReminderText, dailyReminderText;
+
public CaregiverMainViewModel(){
this.cgHomeRepository = CgHomeRepository.getHomeRepository();
+ this.ongoingActivityText = this.upcomingActivityText =
+ this.upcomingReminderText = this.dailyReminderText = "Loading...";
}
public void setArticleResults(ArrayList articleResults) {
diff --git a/app/src/main/java/com/ssb/simplitend/patient_dashboard/DirectionToHomeActivity.java b/app/src/main/java/com/ssb/simplitend/patient_dashboard/DirectionToHomeActivity.java
new file mode 100644
index 0000000..8b5db14
--- /dev/null
+++ b/app/src/main/java/com/ssb/simplitend/patient_dashboard/DirectionToHomeActivity.java
@@ -0,0 +1,247 @@
+package com.ssb.simplitend.patient_dashboard;
+
+import android.Manifest;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.location.Location;
+import android.location.LocationManager;
+import android.os.Bundle;
+import android.provider.Settings;
+import android.widget.Toast;
+
+import androidx.activity.result.ActivityResultLauncher;
+import androidx.activity.result.contract.ActivityResultContracts;
+import androidx.annotation.NonNull;
+import androidx.annotation.RequiresPermission;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.app.ActivityCompat;
+
+import com.google.android.gms.location.FusedLocationProviderClient;
+import com.google.android.gms.location.LocationListener;
+import com.google.android.gms.location.LocationRequest;
+import com.google.android.gms.location.LocationServices;
+import com.google.android.gms.maps.CameraUpdate;
+import com.google.android.gms.maps.CameraUpdateFactory;
+import com.google.android.gms.maps.GoogleMap;
+import com.google.android.gms.maps.OnMapReadyCallback;
+import com.google.android.gms.maps.SupportMapFragment;
+import com.google.android.gms.maps.model.LatLng;
+import com.google.android.gms.maps.model.LatLngBounds;
+import com.google.android.gms.maps.model.Marker;
+import com.google.android.gms.maps.model.MarkerOptions;
+import com.google.android.gms.maps.model.PolylineOptions;
+import com.google.maps.DirectionsApi;
+import com.google.maps.GeoApiContext;
+import com.google.maps.android.PolyUtil;
+import com.google.maps.model.DirectionsResult;
+import com.google.maps.model.DirectionsRoute;
+import com.ssb.simplitend.R;
+import com.ssb.simplitend.apputils.AppUtil;
+import com.ssb.simplitend.databinding.ActivityDirectionToHomeBinding;
+
+import java.util.List;
+
+public class DirectionToHomeActivity extends AppCompatActivity
+ implements OnMapReadyCallback, LocationListener {
+
+ protected ActivityDirectionToHomeBinding binding;
+
+ private ActivityResultLauncher locationPermissionLauncher;
+ private ActivityResultLauncher enableLocationIntent;
+ private FusedLocationProviderClient fusedLocationProviderClient;
+
+ private LocationRequest locationRequest;
+ private GoogleMap mGoogleMap;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ binding = ActivityDirectionToHomeBinding.inflate(getLayoutInflater());
+ setContentView(binding.getRoot());
+
+ getLocationPermission();
+
+ initViews();
+
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ if (fusedLocationProviderClient != null) {
+ fusedLocationProviderClient.removeLocationUpdates(this);
+ }
+ }
+
+ private void initViews() {
+ // Obtain the SupportMapFragment and get notified when the map is ready to be used.
+ SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
+ .findFragmentById(R.id.direction_map);
+ if (mapFragment != null) {
+ mapFragment.getMapAsync(this);
+ } else {
+ Toast.makeText(this, "Couldn't load map. Please try again.", Toast.LENGTH_SHORT).show();
+ }
+
+ fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this);
+ locationRequest = new LocationRequest.Builder(LocationRequest.PRIORITY_HIGH_ACCURACY, 5000)
+ .build();
+ }
+
+ private void getLocationPermission() {
+ enableLocationIntent = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(),
+ result -> {
+ if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
+ locationPermissionLauncher.launch(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION});
+ return;
+ }
+
+ drawRoutes();
+ });
+
+ // launching request to location permissions
+ locationPermissionLauncher = registerForActivityResult(new ActivityResultContracts
+ .RequestMultiplePermissions(), result -> {
+
+ Boolean fineLocationGranted;
+
+ if (result.containsKey(Manifest.permission.ACCESS_FINE_LOCATION)) {
+ fineLocationGranted = result.get(Manifest.permission.ACCESS_FINE_LOCATION);
+ } else {
+ fineLocationGranted = false;
+ }
+
+ Boolean coarseLocationGranted;
+
+ if (result.containsKey(Manifest.permission.ACCESS_COARSE_LOCATION)) {
+ coarseLocationGranted = result.get(Manifest.permission.ACCESS_COARSE_LOCATION);
+ } else {
+ coarseLocationGranted = false;
+ }
+
+ if ((fineLocationGranted != null && fineLocationGranted) || (coarseLocationGranted != null && coarseLocationGranted)) {
+ // one of the location access granted.
+
+ if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
+ return;
+ }
+
+ drawRoutes();
+ }
+ }
+ );
+ }
+
+ @RequiresPermission(anyOf = {Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION})
+ private void drawRoutes() {
+ if (mGoogleMap == null) return;
+
+ mGoogleMap.setMyLocationEnabled(true);
+ mGoogleMap.getUiSettings().setMyLocationButtonEnabled(true);
+
+ if (!isLocationProviderEnabled()) {
+ AppUtil.showAlert(this,
+ getString(R.string.GPS_ENABLE_REQUIRED),
+ getString(R.string.GPS_ENABLE_MESSAGE),
+ getString(R.string.SETTINGS),
+ (dialog, which) -> {
+ // Settings button click callback
+ // Sending user to turn location on
+
+ Intent intent = new Intent();
+ intent.setAction(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
+ enableLocationIntent.launch(intent);
+ },
+ getString(R.string.NOT_NOW),
+ (dialog, which) -> dialog.dismiss()
+ );
+
+ return;
+ }
+
+ fusedLocationProviderClient.requestLocationUpdates(locationRequest, this, null);
+ }
+
+ public boolean isLocationProviderEnabled() {
+ LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
+ return locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
+ }
+
+ private void addMarkersToMap(DirectionsResult results, GoogleMap mMap) throws Exception {
+ mMap.addMarker(new MarkerOptions().position(new com.google.android.gms.maps.model.LatLng(results.routes[0].legs[0].startLocation.lat,results.routes[0].legs[0].startLocation.lng)).title("Your location"));
+ mMap.addMarker(new MarkerOptions().position(new com.google.android.gms.maps.model.LatLng(results.routes[0].legs[0].endLocation.lat,results.routes[0].legs[0].endLocation.lng)).title("Senior's location"));
+ }
+
+ private void positionCamera(DirectionsRoute route, GoogleMap mMap) throws Exception{
+// LatLng center_latlng = computeCentroid(new com.google.android.gms.maps.model.LatLng(route.legs[0].startLocation.lat, route.legs[0].startLocation.lng),
+// new com.google.android.gms.maps.model.LatLng(route.legs[0].endLocation.lat, route.legs[0].endLocation.lng));
+// mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(center_latlng, 10.5f));
+
+ LatLngBounds.Builder builder = new LatLngBounds.Builder();
+ builder.include(new com.google.android.gms.maps.model.LatLng(route.legs[0].startLocation.lat, route.legs[0].startLocation.lng));
+ builder.include(new com.google.android.gms.maps.model.LatLng(route.legs[0].endLocation.lat, route.legs[0].endLocation.lng));
+ LatLngBounds bounds = builder.build();
+ int padding = ((getWindowManager().getDefaultDisplay().getWidth() * 10) / 100); // offset from edges of the map
+ // in pixels
+ CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds,
+ padding);
+ mMap.animateCamera(cu);
+ }
+
+ private LatLng computeCentroid(LatLng... points) {
+ double latitude = 0;
+ double longitude = 0;
+ int n = points.length;
+
+ for (LatLng point : points) {
+ latitude += point.latitude;
+ longitude += point.longitude;
+ }
+
+ return new LatLng(latitude/n, longitude/n);
+ }
+
+ private void addPolyline(DirectionsResult results, GoogleMap mMap) throws Exception{
+ for (int i = 0; i < results.routes.length; i++) {
+ List decodedPath = PolyUtil.decode(results.routes[i].overviewPolyline.getEncodedPath());
+ mMap.addPolyline(new PolylineOptions()
+ .addAll(decodedPath).color(R.color.color_primary).width(15));
+ }
+ }
+
+ @Override
+ public void onMapReady(@NonNull GoogleMap googleMap) {
+ this.mGoogleMap = googleMap;
+ if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED &&
+ ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
+ drawRoutes();
+ } else {
+ locationPermissionLauncher.launch(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION});
+ }
+ }
+
+ @Override
+ public void onLocationChanged(@NonNull Location location) {
+ if (fusedLocationProviderClient != null) {
+ fusedLocationProviderClient.removeLocationUpdates(this);
+ }
+
+ try {
+ DirectionsResult directionsResult = DirectionsApi.newRequest(
+ new GeoApiContext.Builder()
+ .apiKey(getString(R.string.GOOGLE_MAPS_API_KEY))
+ .build())
+ .origin(new com.google.maps.model.LatLng(location.getLatitude(), location.getLongitude()))
+ .destination(new com.google.maps.model.LatLng(28.42104670992253, 76.92862066485148))
+ .alternatives(true)
+ .await();
+
+ addMarkersToMap(directionsResult, mGoogleMap);
+ positionCamera(directionsResult.routes[0], mGoogleMap);
+ addPolyline(directionsResult, mGoogleMap);
+ } catch (Exception e) {
+ Toast.makeText(this, "Couldn't load routes", Toast.LENGTH_SHORT).show();
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/ssb/simplitend/patient_dashboard/fragments/PatientDashboardFragment.java b/app/src/main/java/com/ssb/simplitend/patient_dashboard/fragments/PatientDashboardFragment.java
index c621d90..444e7f4 100644
--- a/app/src/main/java/com/ssb/simplitend/patient_dashboard/fragments/PatientDashboardFragment.java
+++ b/app/src/main/java/com/ssb/simplitend/patient_dashboard/fragments/PatientDashboardFragment.java
@@ -15,11 +15,14 @@ import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.navigation.Navigation;
+import com.bumptech.glide.Glide;
+import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.ssb.simplitend.R;
import com.ssb.simplitend.appblocking.FUAActivity;
import com.ssb.simplitend.apputils.AppUtil;
import com.ssb.simplitend.apputils.PatientDataCache;
import com.ssb.simplitend.databinding.PatientDashboardFragmentBinding;
+import com.ssb.simplitend.patient_dashboard.DirectionToHomeActivity;
import com.ssb.simplitend.welcome.activities.WelcomeActivity;
import com.ssb.simplitend.welcome.welcomepatient.mvvm.models.PatientData;
@@ -72,11 +75,25 @@ public class PatientDashboardFragment extends Fragment {
PatientDataCache.getPatientData(requireContext(), (patientData -> {
this.patientData = patientData;
+
+ setDetails();
}), true);
return binding.getRoot();
}
+ private void setDetails() {
+ if (patientData == null) return;
+
+ Glide.with(requireContext())
+ .load(AppUtil.IMAGE_BASE_URL + patientData.profile_photo)
+ .diskCacheStrategy(DiskCacheStrategy.DATA)
+ .fitCenter()
+ .placeholder(android.R.color.darker_gray)
+ .error(R.drawable.senior_img)
+ .into(binding.profile);
+ }
+
private void initViews() {
}
@@ -134,6 +151,11 @@ public class PatientDashboardFragment extends Fragment {
Intent intent = new Intent(requireActivity(), FUAActivity.class);
startActivity(intent);
});
+
+ binding.directions.setOnClickListener(v -> {
+ Intent intent = new Intent(requireActivity(), DirectionToHomeActivity.class);
+ startActivity(intent);
+ });
}
private void updateTime() {
diff --git a/app/src/main/java/com/ssb/simplitend/patient_dashboard/fragments/PatientProfileInfoFragment.java b/app/src/main/java/com/ssb/simplitend/patient_dashboard/fragments/PatientProfileInfoFragment.java
index aa3c35e..c9746cd 100644
--- a/app/src/main/java/com/ssb/simplitend/patient_dashboard/fragments/PatientProfileInfoFragment.java
+++ b/app/src/main/java/com/ssb/simplitend/patient_dashboard/fragments/PatientProfileInfoFragment.java
@@ -7,6 +7,7 @@ import static com.ssb.simplitend.caregiverdashboard.activities.PatientProfileSho
import static com.ssb.simplitend.caregiverdashboard.activities.PatientProfileShowerActivity.MED_REMINDER_F;
import static com.ssb.simplitend.caregiverdashboard.activities.PatientProfileShowerActivity.WHICH_FRAGMENT;
+import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
@@ -18,6 +19,10 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
+import com.bumptech.glide.Glide;
+import com.ssb.simplitend.R;
+import com.ssb.simplitend.appblocking.FUAActivity;
+import com.ssb.simplitend.apputils.AppUtil;
import com.ssb.simplitend.apputils.PatientDataCache;
import com.ssb.simplitend.caregiverdashboard.activities.EditProfileInfoActivity;
import com.ssb.simplitend.caregiverdashboard.activities.PatientProfileShowerActivity;
@@ -43,13 +48,17 @@ public class PatientProfileInfoFragment extends Fragment {
clickEvents();
+ return binding.getRoot();
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
PatientDataCache.getPatientData(requireContext(), (patientData -> {
this.patientData = patientData;
setPatientDetails();
}), true);
-
- return binding.getRoot();
}
private void setPatientDetails() {
@@ -58,14 +67,14 @@ public class PatientProfileInfoFragment extends Fragment {
return;
};
-// if (patientData.p != null) {
-// // image
-// Glide.with(this)
-// .load(AppUtil.IMAGE_BASE_URL + careGiverData.profile_photo)
-// .placeholder(android.R.color.darker_gray)
-// .error(R.drawable.ic_contact)
-// .into(binding.image);
-// }
+ if (patientData.profile_photo != null) {
+ // image
+ Glide.with(this)
+ .load(AppUtil.IMAGE_BASE_URL + patientData.profile_photo)
+ .placeholder(android.R.color.darker_gray)
+ .error(R.drawable.senior_img)
+ .into(binding.image);
+ }
binding.name.setText(patientData.first_name);
binding.phoneNumber.setText(patientData.phone_number);
@@ -73,6 +82,13 @@ public class PatientProfileInfoFragment extends Fragment {
private void clickEvents() {
+ binding.backBtn.setOnClickListener(v -> {
+ Activity activity = getActivity();
+ if (activity != null){
+ activity.onBackPressed();
+ }
+ });
+
binding.medication.setOnClickListener(v -> {
gotoProfileShower(MED_REMINDER_F);
});
@@ -89,6 +105,11 @@ public class PatientProfileInfoFragment extends Fragment {
gotoProfileShower(ACTIVITY_F);
});
+ binding.freqUsedApps.setOnClickListener(v -> {
+ Intent intent = new Intent(requireActivity(), FUAActivity.class);
+ startActivity(intent);
+ });
+
binding.editBtn.setOnClickListener(v -> {
Intent intent = new Intent(requireActivity(), EditProfileInfoActivity.class);
intent.putExtra(IS_FROM_PATIENT, true);
diff --git a/app/src/main/java/com/ssb/simplitend/welcome/welcomepatient/fragments/register/LocationFragment.java b/app/src/main/java/com/ssb/simplitend/welcome/welcomepatient/fragments/register/LocationFragment.java
index 8f52958..9d7609b 100644
--- a/app/src/main/java/com/ssb/simplitend/welcome/welcomepatient/fragments/register/LocationFragment.java
+++ b/app/src/main/java/com/ssb/simplitend/welcome/welcomepatient/fragments/register/LocationFragment.java
@@ -339,7 +339,7 @@ public class LocationFragment extends Fragment implements OnMapReadyCallback,
binding.search.setOnClickListener(v -> {
List fields = Arrays.asList(Place.Field.ID
- ,Place.Field.NAME,
+ , Place.Field.NAME,
Place.Field.LAT_LNG, Place.Field.ADDRESS);
Intent intent = new Autocomplete.IntentBuilder(AutocompleteActivityMode.OVERLAY, fields)
@@ -462,7 +462,7 @@ public class LocationFragment extends Fragment implements OnMapReadyCallback,
if (currentLocation != null) {
addMarker(currentLocation, null);
googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(currentLocation, 14));
- }else{
+ } else {
googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(40.75796541422796, -73.98557368665934), 14));
}
}
@@ -490,11 +490,11 @@ public class LocationFragment extends Fragment implements OnMapReadyCallback,
binding.zipCode.setText(address.getPostalCode());
- if (title != null){
+ if (title != null) {
if (marker != null) marker.setTitle(title);
binding.street.setText(title);
- }else if (address.getThoroughfare() == null || address.getThoroughfare().isEmpty()) {
+ } else if (address.getThoroughfare() == null || address.getThoroughfare().isEmpty()) {
binding.street.setText(null);
} else {
binding.street.setText(address.getThoroughfare());
@@ -528,7 +528,7 @@ public class LocationFragment extends Fragment implements OnMapReadyCallback,
binding.countrySpinner.clearSelectedItem();
}
- }else{
+ } else {
binding.countrySpinner.clearSelectedItem();
binding.street.setText(null);
binding.stateSpinner.clearSelectedItem();
@@ -565,6 +565,12 @@ public class LocationFragment extends Fragment implements OnMapReadyCallback,
getString(R.string.NOT_NOW),
(dialog, which) -> dialog.dismiss()
);
+ return;
+ }
+
+ if (ActivityCompat.checkSelfPermission(requireContext(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(requireContext(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
+ getLocationPermission();
+ return;
}
fusedLocationProviderClient.requestLocationUpdates(locationRequest, this, null);
diff --git a/app/src/main/res/layout/activity_direction_to_home.xml b/app/src/main/res/layout/activity_direction_to_home.xml
new file mode 100644
index 0000000..18818f9
--- /dev/null
+++ b/app/src/main/res/layout/activity_direction_to_home.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_personal_info.xml b/app/src/main/res/layout/activity_personal_info.xml
index fd2a4dd..cbb8f98 100644
--- a/app/src/main/res/layout/activity_personal_info.xml
+++ b/app/src/main/res/layout/activity_personal_info.xml
@@ -250,6 +250,9 @@
android:id="@+id/email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
+
+ android:enabled="false"
+
android:background="@drawable/edit_text_bg_2"
android:layout_marginHorizontal="15dp"
android:layout_marginVertical="10dp"
diff --git a/app/src/main/res/layout/patient_dashboard_fragment.xml b/app/src/main/res/layout/patient_dashboard_fragment.xml
index ecf234b..0a1cbdb 100644
--- a/app/src/main/res/layout/patient_dashboard_fragment.xml
+++ b/app/src/main/res/layout/patient_dashboard_fragment.xml
@@ -48,7 +48,7 @@
android:layout_width="30dp"
android:layout_height="30dp"
- android:src="@drawable/static_3"
+ android:src="@drawable/senior_img"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
@@ -333,6 +333,7 @@
android:orientation="horizontal">
Miles
-
+
accessibility_service_description
ForegroundServiceChannel
All apps
@@ -412,5 +412,6 @@
No reminders for today.
No ongoing activity
No upcoming activities
+ Direction to home
\ No newline at end of file