.
This commit is contained in:
1
.idea/gradle.xml
generated
1
.idea/gradle.xml
generated
@@ -4,6 +4,7 @@
|
||||
<component name="GradleSettings">
|
||||
<option name="linkedExternalProjectsSettings">
|
||||
<GradleProjectSettings>
|
||||
<option name="testRunner" value="GRADLE" />
|
||||
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||
<option name="gradleJvm" value="#GRADLE_LOCAL_JAVA_HOME" />
|
||||
<option name="modules">
|
||||
|
||||
@@ -7,9 +7,15 @@
|
||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
||||
<uses-permission android:name="android.permission.READ_CONTACTS" />
|
||||
<uses-permission android:name="android.permission.CALL_PHONE"/>
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <!-- For app blocking -> open new window over other apps to deny access -->
|
||||
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
|
||||
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <!-- permissions for app blocking -->
|
||||
|
||||
<uses-feature
|
||||
android:name="android.hardware.telephony"
|
||||
android:required="false" />
|
||||
|
||||
<uses-permission
|
||||
android:name="android.permission.PACKAGE_USAGE_STATS"
|
||||
tools:ignore="ProtectedPermissions" />
|
||||
@@ -25,13 +31,6 @@
|
||||
</intent>
|
||||
</queries>
|
||||
|
||||
<queries>
|
||||
<intent>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
</intent>
|
||||
</queries>
|
||||
|
||||
<application
|
||||
android:name=".apputils.SimpliTendApp"
|
||||
android:allowBackup="false"
|
||||
|
||||
@@ -23,7 +23,7 @@ public abstract class CaregiverDataCache {
|
||||
careGiverData = data;
|
||||
}
|
||||
|
||||
public static void getCaregiverData(Context context,
|
||||
public synchronized static void getCaregiverData(Context context,
|
||||
@NonNull GetCaregiverDataCallBack callBack,
|
||||
boolean show_progress){
|
||||
if (careGiverData != null && careGiverData.patientDetails != null){
|
||||
|
||||
@@ -290,7 +290,6 @@ public class EditProfileInfoActivity extends AppCompatActivity implements
|
||||
ImagePicker.with(this)
|
||||
.cropSquare()
|
||||
.maxResultSize(500, 500)
|
||||
.galleryOnly()
|
||||
.createIntent(intent -> {
|
||||
imageSelector.launch(intent);
|
||||
return null;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.app.simplitend.caregiverdashboard.fragments;
|
||||
|
||||
import static com.app.simplitend.apputils.NotificationService.CONTENT_TYPE_KEY;
|
||||
import static com.app.simplitend.apputils.RetrofitHelper.IMAGE_BASE_URL;
|
||||
import static com.app.simplitend.articles.ArticleShowerActivity.ARTICLE_TITLE;
|
||||
import static com.app.simplitend.articles.ArticleShowerActivity.ARTICLE_URL_KEY;
|
||||
import static com.app.simplitend.caregiverdashboard.activities.EditProfileInfoActivity.IS_CAREGIVER;
|
||||
@@ -14,6 +15,7 @@ import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
@@ -23,6 +25,7 @@ import android.widget.Toast;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.content.res.AppCompatResources;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.lifecycle.ViewModelProvider;
|
||||
|
||||
@@ -40,6 +43,7 @@ import com.app.simplitend.caregiverdashboard.mvvm.CgHomeContracts;
|
||||
import com.app.simplitend.caregiverdashboard.mvvm.models.GeoFenceDetails;
|
||||
import com.app.simplitend.cg_geofencing.CgGeoFencingActivity;
|
||||
import com.app.simplitend.databinding.CaregiverDashFragmentBinding;
|
||||
import com.app.simplitend.databinding.MarkerBgSmallBinding;
|
||||
import com.app.simplitend.patient_dashboard.NotificationsActivity;
|
||||
import com.app.simplitend.patientprofile.ProfileContracts;
|
||||
import com.app.simplitend.patientprofile.medreminder.mvvm.ReminderViewModel;
|
||||
@@ -51,6 +55,10 @@ import com.app.simplitend.patientprofile.setuproutine.mvvm.RoutineViewModel;
|
||||
import com.app.simplitend.welcome.welcomecg.mvvm.CareGiverData;
|
||||
import com.app.simplitend.welcome.welcomepatient.mvvm.models.PatientData;
|
||||
import com.bumptech.glide.Glide;
|
||||
import com.bumptech.glide.load.DataSource;
|
||||
import com.bumptech.glide.load.engine.GlideException;
|
||||
import com.bumptech.glide.request.RequestListener;
|
||||
import com.bumptech.glide.request.target.Target;
|
||||
import com.google.android.gms.maps.CameraUpdateFactory;
|
||||
import com.google.android.gms.maps.GoogleMap;
|
||||
import com.google.android.gms.maps.OnMapReadyCallback;
|
||||
@@ -58,6 +66,7 @@ import com.google.android.gms.maps.SupportMapFragment;
|
||||
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
|
||||
import com.google.android.gms.maps.model.LatLng;
|
||||
import com.google.android.gms.maps.model.MarkerOptions;
|
||||
import com.google.maps.android.ui.IconGenerator;
|
||||
import com.onesignal.OneSignal;
|
||||
import com.onesignal.notifications.INotificationLifecycleListener;
|
||||
import com.onesignal.notifications.INotificationWillDisplayEvent;
|
||||
@@ -106,6 +115,7 @@ public class CgDashBoardFragment extends Fragment implements
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||
binding = CaregiverDashFragmentBinding.inflate(inflater, container, false);
|
||||
|
||||
viewModel = new ViewModelProvider(requireActivity()).get(CaregiverMainViewModel.class);
|
||||
reminderViewModel = new ViewModelProvider(requireActivity()).get(ReminderViewModel.class);
|
||||
routineViewModel = new ViewModelProvider(requireActivity()).get(RoutineViewModel.class);
|
||||
@@ -494,9 +504,47 @@ public class CgDashBoardFragment extends Fragment implements
|
||||
|
||||
MarkerOptions markerOptions = new MarkerOptions()
|
||||
.position(pat_cur_latLng)
|
||||
.icon(BitmapDescriptorFactory.fromResource(R.drawable.img_pat_curr_location));
|
||||
.draggable(false);
|
||||
|
||||
if (patientData != null && patientData.profile_photo != null) {
|
||||
|
||||
MarkerBgSmallBinding markerBgBinding = MarkerBgSmallBinding.inflate(getLayoutInflater());
|
||||
|
||||
Glide.with(this)
|
||||
.load(IMAGE_BASE_URL + patientData.profile_photo)
|
||||
.error(R.drawable.img_pat_curr_location)
|
||||
.placeholder(android.R.color.darker_gray)
|
||||
.addListener(new RequestListener<Drawable>() {
|
||||
@Override
|
||||
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
|
||||
markerOptions.icon(BitmapDescriptorFactory.fromResource(R.drawable.img_pat_curr_location));
|
||||
mGoogleMap.addMarker(markerOptions);
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
|
||||
try {
|
||||
IconGenerator iconGenerator = new IconGenerator(requireContext());
|
||||
markerBgBinding.markerBgImage.setImageDrawable(resource);
|
||||
iconGenerator.setContentView(markerBgBinding.getRoot());
|
||||
iconGenerator.setBackground(AppCompatResources.getDrawable(requireContext(), android.R.color.transparent));
|
||||
|
||||
markerOptions.icon(BitmapDescriptorFactory.fromBitmap(iconGenerator.makeIcon()));
|
||||
mGoogleMap.addMarker(markerOptions);
|
||||
} catch (Exception e) {
|
||||
markerOptions.icon(BitmapDescriptorFactory.fromResource(R.drawable.img_pat_curr_location));
|
||||
mGoogleMap.addMarker(markerOptions);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
})
|
||||
.into(markerBgBinding.markerBgImage);
|
||||
} else {
|
||||
markerOptions.icon(BitmapDescriptorFactory.fromResource(R.drawable.img_pat_curr_location));
|
||||
mGoogleMap.addMarker(markerOptions);
|
||||
}
|
||||
|
||||
mGoogleMap.addMarker(markerOptions);
|
||||
mGoogleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(pat_cur_latLng, 16));;
|
||||
}
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@ import com.app.simplitend.R;
|
||||
import com.app.simplitend.apputils.AppUtil;
|
||||
import com.app.simplitend.apputils.CaregiverDataCache;
|
||||
import com.app.simplitend.apputils.Constants;
|
||||
import com.app.simplitend.apputils.PatientDataCache;
|
||||
import com.app.simplitend.apputils.RetrofitHelper;
|
||||
import com.onesignal.OneSignal;
|
||||
import com.onesignal.notifications.INotificationLifecycleListener;
|
||||
@@ -18,43 +19,85 @@ import org.json.JSONObject;
|
||||
|
||||
public class ChatsActivity extends AppCompatActivity implements INotificationLifecycleListener {
|
||||
|
||||
public static final String IS_CHATS_FOR_PATIENT = "chats_for_extra";
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_chats);
|
||||
|
||||
CaregiverDataCache.getCaregiverData(this, (careGiverData1 -> {
|
||||
if (careGiverData1 != null && careGiverData1.patientDetails != null){
|
||||
boolean isPatient = getIntent().getBooleanExtra(IS_CHATS_FOR_PATIENT, false);
|
||||
|
||||
String sender_image;
|
||||
if (careGiverData1.profile_photo == null){
|
||||
sender_image = String.valueOf(R.drawable.caregiver_img);
|
||||
}else{
|
||||
sender_image = RetrofitHelper.IMAGE_BASE_URL + careGiverData1.profile_photo;
|
||||
if (isPatient){
|
||||
PatientDataCache.getPatientData(this, (patientData -> {
|
||||
if (patientData != null){
|
||||
|
||||
try {
|
||||
String sender_image;
|
||||
if (patientData.profile_photo == null){
|
||||
sender_image = String.valueOf(R.drawable.senior_img);
|
||||
}else{
|
||||
sender_image = RetrofitHelper.IMAGE_BASE_URL + patientData.profile_photo;
|
||||
}
|
||||
|
||||
String receiver_image;
|
||||
if (patientData.caregiver_profile_photo == null){
|
||||
receiver_image = String.valueOf(R.drawable.caregiver_img);
|
||||
}else{
|
||||
receiver_image = RetrofitHelper.IMAGE_BASE_URL + patientData.caregiver_profile_photo;
|
||||
}
|
||||
|
||||
getSupportFragmentManager().beginTransaction()
|
||||
.add(R.id.chats_fcv, new ChatFragment(
|
||||
patientData.id + "",
|
||||
patientData.caregiver_iamprincipal_id,
|
||||
patientData.link_id,
|
||||
patientData.caregiver_iamprincipal_id,
|
||||
patientData.first_name,
|
||||
patientData.caregiver_name,
|
||||
sender_image,
|
||||
receiver_image
|
||||
), "patient_chat")
|
||||
.commitAllowingStateLoss();
|
||||
} catch (Exception e) {
|
||||
// do nothing
|
||||
}
|
||||
}
|
||||
}), true);
|
||||
}else{
|
||||
CaregiverDataCache.getCaregiverData(this, (careGiverData1 -> {
|
||||
if (careGiverData1 != null && careGiverData1.patientDetails != null){
|
||||
|
||||
String receiver_image;
|
||||
if (careGiverData1.patientDetails.profile_photo == null){
|
||||
receiver_image = String.valueOf(R.drawable.senior_img);
|
||||
String sender_image;
|
||||
if (careGiverData1.profile_photo == null){
|
||||
sender_image = String.valueOf(R.drawable.caregiver_img);
|
||||
}else{
|
||||
sender_image = RetrofitHelper.IMAGE_BASE_URL + careGiverData1.profile_photo;
|
||||
}
|
||||
|
||||
String receiver_image;
|
||||
if (careGiverData1.patientDetails.profile_photo == null){
|
||||
receiver_image = String.valueOf(R.drawable.senior_img);
|
||||
}else{
|
||||
receiver_image = RetrofitHelper.IMAGE_BASE_URL + careGiverData1.patientDetails.profile_photo;
|
||||
}
|
||||
|
||||
getSupportFragmentManager().beginTransaction()
|
||||
.add(R.id.chats_fcv, new ChatFragment(
|
||||
careGiverData1.id + "",
|
||||
careGiverData1.patientDetails.id + "",
|
||||
careGiverData1.link_id,
|
||||
careGiverData1.patientDetails.id + "",
|
||||
careGiverData1.first_name,
|
||||
careGiverData1.patientDetails.first_name,
|
||||
sender_image,
|
||||
receiver_image), "chat")
|
||||
.commitAllowingStateLoss();
|
||||
}else{
|
||||
receiver_image = RetrofitHelper.IMAGE_BASE_URL + careGiverData1.patientDetails.profile_photo;
|
||||
finish();
|
||||
}
|
||||
|
||||
getSupportFragmentManager().beginTransaction()
|
||||
.add(R.id.chats_fcv, new ChatFragment(
|
||||
careGiverData1.id + "",
|
||||
careGiverData1.patientDetails.id + "",
|
||||
careGiverData1.link_id,
|
||||
careGiverData1.patientDetails.id + "",
|
||||
careGiverData1.first_name,
|
||||
careGiverData1.patientDetails.first_name,
|
||||
sender_image,
|
||||
receiver_image), "chat")
|
||||
.commitAllowingStateLoss();
|
||||
}else{
|
||||
finish();
|
||||
}
|
||||
}), true);
|
||||
}), true);
|
||||
}
|
||||
|
||||
OneSignal.getNotifications().addForegroundLifecycleListener(this);
|
||||
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
package com.app.simplitend.patient_dashboard.fragments;
|
||||
|
||||
import static com.app.simplitend.chats.ChatsActivity.IS_CHATS_FOR_PATIENT;
|
||||
|
||||
import android.Manifest;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.res.Configuration;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
@@ -8,12 +12,15 @@ import android.widget.ImageButton;
|
||||
import android.widget.TableLayout;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.activity.result.ActivityResultLauncher;
|
||||
import androidx.activity.result.contract.ActivityResultContracts;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.recyclerview.widget.GridLayoutManager;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import com.app.simplitend.R;
|
||||
import com.app.simplitend.apputils.AppUtil;
|
||||
import com.app.simplitend.chats.ChatsActivity;
|
||||
import com.app.simplitend.databinding.ActivityCallsBinding;
|
||||
import com.app.simplitend.databinding.CallListDialogBinding;
|
||||
import com.app.simplitend.databinding.CreateContactViewHolderBinding;
|
||||
@@ -39,6 +46,8 @@ public class CallsActivity extends AppCompatActivity implements AddContactAdapte
|
||||
|
||||
private String select_phone_number;
|
||||
|
||||
private ActivityResultLauncher<String> permissionLauncher;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
@@ -49,6 +58,13 @@ public class CallsActivity extends AppCompatActivity implements AddContactAdapte
|
||||
|
||||
is50ContactsView = getIntent().getBooleanExtra(IS_50_CONTACTS_VIEW, false);
|
||||
|
||||
permissionLauncher = registerForActivityResult(new ActivityResultContracts.RequestPermission(),
|
||||
granted -> {
|
||||
if (select_phone_number != null){
|
||||
AppUtil.callPhone(this, select_phone_number);
|
||||
}
|
||||
});
|
||||
|
||||
initViews();
|
||||
|
||||
clickEvents();
|
||||
@@ -119,7 +135,7 @@ public class CallsActivity extends AppCompatActivity implements AddContactAdapte
|
||||
return;
|
||||
}
|
||||
|
||||
AppUtil.dialPhone(this, select_phone_number);
|
||||
permissionLauncher.launch(Manifest.permission.CALL_PHONE);
|
||||
});
|
||||
|
||||
dialogBinding.messageBtn.setOnClickListener(v -> {
|
||||
@@ -128,7 +144,15 @@ public class CallsActivity extends AppCompatActivity implements AddContactAdapte
|
||||
return;
|
||||
}
|
||||
|
||||
AppUtil.messageNumber(this, select_phone_number);
|
||||
if (contactData.care_giver_data.id != null){
|
||||
Intent chatsIntent = new Intent(this, ChatsActivity.class);
|
||||
chatsIntent.putExtra(IS_CHATS_FOR_PATIENT, true);
|
||||
startActivity(chatsIntent);
|
||||
}else{
|
||||
// not a caregiver
|
||||
AppUtil.messageNumber(this, select_phone_number);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
bsd.show();
|
||||
|
||||
@@ -246,7 +246,6 @@ public class CreateContactFragment extends Fragment implements WelcomeContracts.
|
||||
ImagePicker.with(requireActivity())
|
||||
.cropSquare()
|
||||
.maxResultSize(500, 500)
|
||||
.galleryOnly()
|
||||
.createIntent(intent -> {
|
||||
imageSelector.launch(intent);
|
||||
return null;
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_height="?android:attr/actionBarSize"
|
||||
app:cardElevation="5dp">
|
||||
|
||||
<LinearLayout
|
||||
|
||||
25
app/src/main/res/layout/marker_bg_small.xml
Normal file
25
app/src/main/res/layout/marker_bg_small.xml
Normal file
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:background="@android:color/transparent"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<de.hdodenhof.circleimageview.CircleImageView
|
||||
android:id="@+id/marker_bg_image"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"
|
||||
android:translationZ="1dp"
|
||||
android:src="@drawable/senior_img"
|
||||
app:civ_circle_background_color="@color/color_primary"
|
||||
app:civ_border_color="@color/color_primary"
|
||||
app:civ_border_width="2dp"/>
|
||||
|
||||
<ImageView
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="35dp"
|
||||
android:layout_marginTop="20dp"
|
||||
android:src="@drawable/ic_marker_bg"
|
||||
/>
|
||||
|
||||
</RelativeLayout>
|
||||
@@ -418,7 +418,7 @@
|
||||
<string name="your_location">Your location</string>
|
||||
<string name="home_address_txt">Home Address</string>
|
||||
<string name="go">go</string>
|
||||
<string name="call_and_message_your_loved_ones">Call and message your loved ones</string>
|
||||
<string name="call_and_message_your_loved_ones">Call or message your loved ones</string>
|
||||
<string name="select_number_to_cal_or_message">Select number to call or message</string>
|
||||
<string name="call">Call</string>
|
||||
<string name="no_frequently_used_apps">No frequently used apps added\nPlease select an app from below list to unlock.</string>
|
||||
|
||||
Reference in New Issue
Block a user