diff --git a/app/src/main/java/me/impy/aegis/crypto/KeyInfo.java b/app/src/main/java/me/impy/aegis/crypto/KeyInfo.java
index 9103ec63..2307cb65 100644
--- a/app/src/main/java/me/impy/aegis/crypto/KeyInfo.java
+++ b/app/src/main/java/me/impy/aegis/crypto/KeyInfo.java
@@ -184,12 +184,17 @@ public class KeyInfo implements Serializable {
public void setImage(byte[] image)
{
- _image = Base64.encodeToString(image, Base64.DEFAULT);
+ if(image != null && !image.equals(""))
+ {
+ _image = Base64.encodeToString(image, Base64.DEFAULT);
+ } else {
+ _image = null;
+ }
}
public byte[] getImage()
{
- return Base64.decode(_image, Base64.DEFAULT);
+ return _image != null ? Base64.decode(_image, Base64.DEFAULT) : null;
}
public void setSecret(byte[] secret) {
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 20476833..5e33780b 100644
--- a/app/src/main/java/me/impy/aegis/ui/EditProfileActivity.java
+++ b/app/src/main/java/me/impy/aegis/ui/EditProfileActivity.java
@@ -49,6 +49,8 @@ import me.impy.aegis.ui.views.KeyProfile;
public class EditProfileActivity extends AegisActivity {
private boolean _isNew = false;
private boolean _edited = false;
+ private boolean _hasCustomImage = false;
+
private KeyProfile _profile;
private CircleImageView _iconView;
@@ -131,8 +133,11 @@ public class EditProfileActivity extends AegisActivity {
@Override
public void afterTextChanged(Editable s) {
- TextDrawable drawable = TextDrawableHelper.generate(s.toString(), _iconView);
- _iconView.setImageDrawable(drawable);
+ if(!_hasCustomImage)
+ {
+ TextDrawable drawable = TextDrawableHelper.generate(s.toString(), _iconView);
+ _iconView.setImageDrawable(drawable);
+ }
}
});
@@ -166,7 +171,18 @@ public class EditProfileActivity extends AegisActivity {
private void updateFields() {
DatabaseEntry entry = _profile.getEntry();
- _iconView.setImageDrawable(_profile.getDrawable(_iconView));
+
+ if (_profile.getEntry().getInfo().getImage() != null)
+ {
+ byte[] imageBytes = _profile.getEntry().getInfo().getImage();
+ Bitmap image = BitmapFactory.decodeByteArray(imageBytes, 0, imageBytes.length);
+ _iconView.setImageBitmap(image);
+ _hasCustomImage = true;
+ }
+ else
+ {
+ _iconView.setImageDrawable(_profile.getDrawable(_iconView));
+ }
_textName.setText(entry.getName());
_textIssuer.setText(entry.getInfo().getIssuer());
@@ -270,6 +286,9 @@ public class EditProfileActivity extends AegisActivity {
finish(true);
});
break;
+ case R.id.action_default_image:
+ _iconView.setImageDrawable(_profile.getDrawable(_iconView));
+ _hasCustomImage = false;
default:
return super.onOptionsItemSelected(item);
}
@@ -283,6 +302,10 @@ public class EditProfileActivity extends AegisActivity {
if (_isNew) {
menu.findItem(R.id.action_delete).setVisible(false);
}
+ if (!_hasCustomImage) {
+ menu.findItem(R.id.action_default_image).setVisible(false);
+ }
+
return true;
}
@@ -309,6 +332,7 @@ public class EditProfileActivity extends AegisActivity {
public void onClick(View v) {
_iconView.setImageBitmap(_kropView.getCroppedBitmap());
_kropView.setVisibility(View.GONE);
+ _hasCustomImage = true;
}
});
}
@@ -355,11 +379,18 @@ public class EditProfileActivity extends AegisActivity {
info.setType(type);
info.setAccountName(_textName.getText().toString());
- ByteArrayOutputStream stream = new ByteArrayOutputStream();
- drawableToBitmap(_iconView.getDrawable()).compress(Bitmap.CompressFormat.JPEG, 100, stream);
- byte[] bitmapdata = stream.toByteArray();
+ if(_hasCustomImage)
+ {
+ ByteArrayOutputStream stream = new ByteArrayOutputStream();
+ drawableToBitmap(_iconView.getDrawable()).compress(Bitmap.CompressFormat.JPEG, 100, stream);
+ byte[] bitmapdata = stream.toByteArray();
- info.setImage(bitmapdata);
+ info.setImage(bitmapdata);
+ }
+ else
+ {
+ info.setImage(null);
+ }
} catch (KeyInfoException e) {
onError("The entered info is incorrect: " + e.getMessage());
return false;
diff --git a/app/src/main/java/me/impy/aegis/ui/views/KeyProfileHolder.java b/app/src/main/java/me/impy/aegis/ui/views/KeyProfileHolder.java
index e2a4f884..c876a6e5 100644
--- a/app/src/main/java/me/impy/aegis/ui/views/KeyProfileHolder.java
+++ b/app/src/main/java/me/impy/aegis/ui/views/KeyProfileHolder.java
@@ -65,7 +65,7 @@ public class KeyProfileHolder extends RecyclerView.ViewHolder {
_profileIssuer.setText(" - " + profile.getEntry().getInfo().getIssuer());
}
- if (profile.getEntry().getInfo().getImage() != null)
+ if (profile.getEntry().getInfo().getImage() != null && !profile.getEntry().getInfo().getImage().equals(""))
{
byte[] imageBytes = profile.getEntry().getInfo().getImage();
Bitmap image = BitmapFactory.decodeByteArray(imageBytes, 0, imageBytes.length);
diff --git a/app/src/main/res/menu/menu_edit.xml b/app/src/main/res/menu/menu_edit.xml
index de645b02..ac68ddd2 100644
--- a/app/src/main/res/menu/menu_edit.xml
+++ b/app/src/main/res/menu/menu_edit.xml
@@ -11,4 +11,9 @@
android:id="@+id/action_delete"
android:title="@string/action_delete"
app:showAsAction="never"/>
+
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index f94f622c..352bb667 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -3,6 +3,7 @@
Settings
Import
Delete
+ Set default image
Discard
Save
IntroActivity