show own avatar after publication. no persistancy yet

iNPUTmice created

Change summary

src/eu/siacs/conversations/entities/Account.java                 | 23 +
src/eu/siacs/conversations/persistance/FileBackend.java          |  7 
src/eu/siacs/conversations/services/XmppConnectionService.java   |  1 
src/eu/siacs/conversations/ui/PublishProfilePictureActivity.java | 16 +
4 files changed, 41 insertions(+), 6 deletions(-)

Detailed changes

src/eu/siacs/conversations/entities/Account.java 🔗

@@ -12,12 +12,15 @@ import org.json.JSONException;
 import org.json.JSONObject;
 
 import eu.siacs.conversations.crypto.OtrEngine;
+import eu.siacs.conversations.persistance.FileBackend;
 import eu.siacs.conversations.utils.UIHelper;
 import eu.siacs.conversations.xmpp.XmppConnection;
 import android.content.ContentValues;
 import android.content.Context;
 import android.database.Cursor;
 import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.net.Uri;
 
 public class Account  extends AbstractEntity{
 	
@@ -58,6 +61,7 @@ public class Account  extends AbstractEntity{
 	protected String resource = "mobile";
 	protected int status = -1;
 	protected JSONObject keys = new JSONObject();
+	protected String avatar;
 	
 	protected boolean online = false;
 	
@@ -322,6 +326,23 @@ public class Account  extends AbstractEntity{
 	}
 
 	public Bitmap getImage(Context context, int size) {
-		return UIHelper.getContactPicture(getJid(), size, context, false);
+		if (this.avatar!=null) {
+			Bitmap bm = BitmapFactory.decodeFile(FileBackend.getAvatarPath(context, avatar));
+			if (bm==null) {
+				return UIHelper.getContactPicture(getJid(), size, context, false);
+			} else {
+				return bm;
+			}
+		} else {
+			return UIHelper.getContactPicture(getJid(), size, context, false);
+		}
+	}
+
+	public void setAvatar(String filename) {
+		this.avatar = filename;
+	}
+	
+	public String getAvatar() {
+		return this.avatar;
 	}
 }

src/eu/siacs/conversations/persistance/FileBackend.java 🔗

@@ -249,8 +249,7 @@ public class FileBackend {
 	}
 	
 	public void save(Avatar avatar) {
-		String path = context.getFilesDir().getAbsolutePath() + "/avatars/";
-		File file = new File(path+"/"+avatar.getFilename());
+		File file = new File(getAvatarPath(context, avatar.getFilename()));
 		file.getParentFile().mkdirs();
 		Log.d("xmppService",file.getAbsolutePath());
 		try {
@@ -271,6 +270,10 @@ public class FileBackend {
 			e.printStackTrace();
 		}
 	}
+	
+	public static String getAvatarPath(Context context, String avatar) {
+		return context.getFilesDir().getAbsolutePath() + "/avatars/"+avatar;
+	}
 
 	public Bitmap cropCenterSquare(Uri image, int size) {
 		try {

src/eu/siacs/conversations/services/XmppConnectionService.java 🔗

@@ -1214,6 +1214,7 @@ public class XmppConnectionService extends Service {
 							@Override
 							public void onIqPacketReceived(Account account, IqPacket result) {
 								if (result.getType() == IqPacket.TYPE_RESULT) {
+									account.setAvatar(avatar.getFilename());
 									callback.success(avatar);
 								} else {
 									callback.error(R.string.error_publish_avatar_server_reject, avatar);

src/eu/siacs/conversations/ui/PublishProfilePictureActivity.java 🔗

@@ -5,6 +5,7 @@ import android.content.Intent;
 import android.graphics.Bitmap;
 import android.net.Uri;
 import android.os.Bundle;
+import android.util.Log;
 import android.view.MenuItem;
 import android.view.View;
 import android.view.View.OnClickListener;
@@ -134,10 +135,19 @@ public class PublishProfilePictureActivity extends XmppActivity {
 			if (jid != null) {
 				this.account = xmppConnectionService.findAccountByJid(jid);
 				if (this.avatarUri == null) {
-					avatarUri = PhoneHelper
-							.getSefliUri(getApplicationContext());
+					if (this.account.getAvatar() != null) {
+						this.avatar.setImageBitmap(this.account.getImage(
+								getApplicationContext(), 384));
+					} else {
+						this.avatarUri = PhoneHelper
+								.getSefliUri(getApplicationContext());
+						if (this.avatarUri != null) {
+							loadImageIntoPreview(this.avatarUri);
+						}
+					}
+				} else {
+					loadImageIntoPreview(avatarUri);
 				}
-				loadImageIntoPreview(avatarUri);
 				this.accountTextView.setText(this.account.getJid());
 			}
 		}