Skip to content

Commit

Permalink
Merge branch 'master' into AC-791-registerUI
Browse files Browse the repository at this point in the history
  • Loading branch information
f4ww4z authored Jun 27, 2020
2 parents e679c93 + 2026930 commit 17c98f8
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 24 deletions.
2 changes: 2 additions & 0 deletions openmrs-client/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,8 @@ dependencies {
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.0'
//google place api
implementation 'com.google.android.libraries.places:places:2.1.0'
//Image Cropping Library
implementation 'com.github.yalantis:ucrop:2.2.5'
}

play {
Expand Down
4 changes: 4 additions & 0 deletions openmrs-client/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -283,6 +283,10 @@
android:theme="@style/AppThemeOrig"
android:label="@string/contact_us"/>

<activity
android:name="com.yalantis.ucrop.UCropActivity"
android:theme="@style/AppTheme"/>

<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="${GOOGLE_PLACE_API_KEY}"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
Expand All @@ -29,7 +30,6 @@
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.os.ParcelFileDescriptor;
import android.os.StrictMode;
import android.provider.MediaStore;
import android.text.Editable;
Expand All @@ -48,6 +48,7 @@
import androidx.annotation.NonNull;
import androidx.annotation.StringDef;
import androidx.appcompat.app.AlertDialog;
import androidx.core.app.ActivityCompat;

import com.google.android.gms.common.api.ApiException;
import com.google.android.libraries.places.api.model.AutocompletePrediction;
Expand All @@ -56,6 +57,9 @@
import com.google.android.libraries.places.api.net.FindAutocompletePredictionsRequest;
import com.google.android.libraries.places.api.net.PlacesClient;
import com.google.android.material.snackbar.Snackbar;
import com.google.android.material.textfield.TextInputLayout;
import com.hbb20.CountryCodePicker;
import com.yalantis.ucrop.UCrop;

import org.jetbrains.annotations.NotNull;
import org.joda.time.DateTime;
Expand Down Expand Up @@ -84,7 +88,6 @@

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileDescriptor;
import java.io.IOException;
import java.lang.annotation.Retention;
import java.text.SimpleDateFormat;
Expand Down Expand Up @@ -167,6 +170,7 @@ public void setErrorsVisibility(boolean givenNameError,
ApplicationConstants.RegisterPatientRequirements.MAX_PATIENT_AGE)
.toString(dateTimeFormatter);
String maximumDate = DateTime.now().toString(dateTimeFormatter);

if (binding.unidentifiedCheckbox.isChecked()) {
binding.dobError.setText(getString(R.string.dob_error_for_unidentified));
} else {
Expand Down Expand Up @@ -628,6 +632,7 @@ public void afterTextChanged(Editable s) {
binding.linearLayoutName.setVisibility(View.GONE);
binding.constraintLayoutDOB.setVisibility(View.GONE);
binding.linearLayoutContactInfo.setVisibility(View.GONE);

isPatientUnidentified = true;
} else {
binding.linearLayoutName.setVisibility(View.VISIBLE);
Expand All @@ -645,14 +650,19 @@ public void performFunction(int position) {
StrictMode.setVmPolicy(builder.build());
AddEditPatientFragmentPermissionsDispatcher.capturePhotoWithCheck(AddEditPatientFragment.this);
} else if (position == 1) {
requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, ApplicationConstants.RequestCodes.GALLERY_IMAGE_REQUEST);
if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
return;
}

Intent i;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT)
i = new Intent(Intent.ACTION_OPEN_DOCUMENT);
else
i = new Intent(Intent.ACTION_GET_CONTENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType("image/*");
startActivityForResult(i, GALLERY_IMAGE_REQUEST);
startActivityForResult(i, ApplicationConstants.RequestCodes.GALLERY_IMAGE_REQUEST);
} else {
binding.patientPhoto.setImageResource(R.drawable.ic_person_grey_500_48dp);
binding.patientPhoto.invalidate();
Expand All @@ -667,7 +677,7 @@ public void capturePhoto() {
File dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
output = new File(dir, getUniqueImageFileName());
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(output));
startActivityForResult(takePictureIntent, IMAGE_REQUEST);
startActivityForResult(takePictureIntent, ApplicationConstants.RequestCodes.IMAGE_REQUEST);
}
}

Expand Down Expand Up @@ -702,34 +712,41 @@ private Snackbar createSnackbarLong(int stringId) {

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == IMAGE_REQUEST) {
if (requestCode == ApplicationConstants.RequestCodes.IMAGE_REQUEST) {
if (resultCode == Activity.RESULT_OK) {
patientPhoto = getResizedPortraitImage(output.getPath());
Bitmap bitmap = ThumbnailUtils.extractThumbnail(patientPhoto, binding.patientPhoto.getWidth(), binding.patientPhoto.getHeight());
binding.patientPhoto.setImageBitmap(bitmap);
binding.patientPhoto.invalidate();
Uri sourceUri = Uri.fromFile(output);
openCropActivity(sourceUri, sourceUri);
} else {
output = null;
}
} else if (requestCode == GALLERY_IMAGE_REQUEST && resultCode == Activity.RESULT_OK) {

try {
ParcelFileDescriptor parcelFileDescriptor =
getActivity().getContentResolver().openFileDescriptor(data.getData(), ApplicationConstants.READ_MODE);
FileDescriptor fileDescriptor = parcelFileDescriptor.getFileDescriptor();
Bitmap image = BitmapFactory.decodeFileDescriptor(fileDescriptor);
parcelFileDescriptor.close();

patientPhoto = image;
Bitmap bitmap = ThumbnailUtils.extractThumbnail(patientPhoto, binding.patientPhoto.getWidth(), binding.patientPhoto.getHeight());
binding.patientPhoto.setImageBitmap(bitmap);
binding.patientPhoto.invalidate();
} catch (Exception e) {
logger.e("Error getting image from gallery.", e);
} else if (requestCode == ApplicationConstants.RequestCodes.GALLERY_IMAGE_REQUEST) {
if (resultCode == Activity.RESULT_OK) {
Uri sourceUri = data.getData();
File dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
output = new File(dir, getUniqueImageFileName());
Uri destinationUri = Uri.fromFile(output);
openCropActivity(sourceUri, destinationUri);
}
} else if (requestCode == UCrop.REQUEST_CROP) {
if (resultCode == Activity.RESULT_OK) {
patientPhoto = getResizedPortraitImage(output.getPath());
Bitmap bitmap = ThumbnailUtils.extractThumbnail(patientPhoto, patientImageView.getWidth(), patientImageView.getHeight());
patientImageView.setImageBitmap(bitmap);
patientImageView.invalidate();
} else {
output = null;
}
} else if (requestCode == UCrop.RESULT_ERROR) {
ToastUtil.error(String.valueOf(UCrop.getError(data)));
}
}

private void openCropActivity(Uri sourceUri, Uri destinationUri) {
UCrop.of(sourceUri, destinationUri)
.withAspectRatio(ApplicationConstants.ASPECT_RATIO_FOR_CROPPING, ApplicationConstants.ASPECT_RATIO_FOR_CROPPING)
.start(getActivity(), AddEditPatientFragment.this);
}

private String getUniqueImageFileName() {
// Create an image file name
@SuppressLint("SimpleDateFormat") String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ public abstract class ApplicationConstants {
public static final String BUNDLE = "bundle";
public static final String URI_CONTENT = "content://";
public static final String MIME_TYPE_VND = "vnd";
public static final float ASPECT_RATIO_FOR_CROPPING = 5f;

public abstract static class OpenMRSSharedPreferenceNames {
public static final String SHARED_PREFERENCES_NAME = "shared_preferences";
Expand Down Expand Up @@ -133,6 +134,8 @@ public abstract static class RequestCodes {
public static final int ADD_PROVIDER_REQ_CODE = 100;
public static final int EDIT_PROVIDER_REQ_CODE = 101;
public static final int START_SETTINGS_REQ_CODE = 102;
public final static int IMAGE_REQUEST = 1;
public final static int GALLERY_IMAGE_REQUEST = 2;
}

public abstract static class OpenMRSThemes {
Expand Down

0 comments on commit 17c98f8

Please sign in to comment.