diff --git a/app/build.gradle b/app/build.gradle
index 5606dfbb..b9646da8 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -36,6 +36,8 @@ dependencies {
implementation 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1'
implementation 'me.dm7.barcodescanner:zxing:1.9'
implementation 'com.android.support:cardview-v7:27.1.1'
+ implementation 'com.github.esafirm.android-image-picker:imagepicker:1.13.0'
+ compile 'com.github.avito-tech:krop:3e65e12'
implementation 'com.android.support:support-v4:27.1.1'
implementation 'com.mattprecious.swirl:swirl:1.0.0'
implementation 'com.madgag.spongycastle:core:1.56.0.0'
diff --git a/app/src/main/java/me/impy/aegis/ui/EditProfileActivity.java b/app/src/main/java/me/impy/aegis/ui/EditProfileActivity.java
index 6430dde8..b522471f 100644
--- a/app/src/main/java/me/impy/aegis/ui/EditProfileActivity.java
+++ b/app/src/main/java/me/impy/aegis/ui/EditProfileActivity.java
@@ -1,6 +1,9 @@
package me.impy.aegis.ui;
import android.content.Intent;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.Color;
import android.os.Bundle;
import android.support.annotation.ArrayRes;
import android.support.v7.app.ActionBar;
@@ -21,6 +24,10 @@ import android.widget.RelativeLayout;
import android.widget.Spinner;
import com.amulyakhare.textdrawable.TextDrawable;
+import com.avito.android.krop.KropView;
+import com.esafirm.imagepicker.features.ImagePicker;
+import com.esafirm.imagepicker.features.ReturnMode;
+import com.esafirm.imagepicker.model.Image;
import me.impy.aegis.R;
import me.impy.aegis.crypto.KeyInfo;
@@ -50,6 +57,8 @@ public class EditProfileActivity extends AegisActivity {
private Spinner _spinnerDigits;
private SpinnerItemSelectedListener _selectedListener = new SpinnerItemSelectedListener();
+ private KropView _kropView;
+
private RelativeLayout _advancedSettingsHeader;
private RelativeLayout _advancedSettings;
@@ -74,6 +83,7 @@ public class EditProfileActivity extends AegisActivity {
}
_iconView = findViewById(R.id.profile_drawable);
+ _kropView = findViewById(R.id.krop_view);
_textName = findViewById(R.id.text_name);
_textIssuer = findViewById(R.id.text_issuer);
_textPeriod = findViewById(R.id.text_period);
@@ -118,6 +128,24 @@ public class EditProfileActivity extends AegisActivity {
}
});
+ ImagePicker imagePicker = ImagePicker.create(EditProfileActivity.this)
+ .returnMode(ReturnMode.ALL) // set whether pick and / or camera action should return immediate result or not.
+ .folderMode(true) // folder mode (false by default)
+ .toolbarFolderTitle("Folder") // folder selection title
+ .toolbarImageTitle("Tap to select") // image selection title
+ .toolbarArrowColor(Color.BLACK) // Toolbar 'up' arrow color
+ .single() // single mode
+ .showCamera(false) // show camera or not (true by default)
+ .imageDirectory("Camera");
+
+ // Open ImagePicker when clicking on the icon
+ _iconView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ imagePicker.start(); // start image picker activity with request code
+ }
+ });
+
_advancedSettingsHeader.setOnClickListener(v -> {
openAdvancedSettings();
});
@@ -258,6 +286,20 @@ public class EditProfileActivity extends AegisActivity {
finish();
}
+ @Override
+ protected void onActivityResult(int requestCode, final int resultCode, Intent data) {
+ if (ImagePicker.shouldHandle(requestCode, resultCode, data)) {
+ // or get a single image only
+ Image image = ImagePicker.getFirstImageOrNull(data);
+ BitmapFactory.Options bmOptions = new BitmapFactory.Options();
+ Bitmap bitmap = BitmapFactory.decodeFile(image.getPath(),bmOptions);
+ _kropView.setBitmap(bitmap);
+ _kropView.setVisibility(View.VISIBLE);
+ }
+
+ super.onActivityResult(requestCode, resultCode, data);
+ }
+
private boolean onSave() {
if (_textSecret.length() == 0) {
onError("Secret is a required field.");
diff --git a/app/src/main/res/layout/activity_edit_profile.xml b/app/src/main/res/layout/activity_edit_profile.xml
index 55078e00..d048074a 100644
--- a/app/src/main/res/layout/activity_edit_profile.xml
+++ b/app/src/main/res/layout/activity_edit_profile.xml
@@ -16,18 +16,28 @@
android:layout_height="250dp"
android:background="@color/colorPrimary">
-
+
-
+ android:layout_centerHorizontal="true"
+ android:layout_centerVertical="true"
+ android:scaleType="centerCrop" />
+
+
+
+