aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/eu/siacs/conversations/services/AvatarService.java
diff options
context:
space:
mode:
authorDaniel Gultsch <daniel@gultsch.de>2015-10-29 12:08:15 +0100
committerDaniel Gultsch <daniel@gultsch.de>2015-10-29 12:08:15 +0100
commit1221cff561eb2ca321f96c7510e01f9218634bd6 (patch)
treea99fd51ffa8c4d88148f9932d60a4304502e2171 /src/main/java/eu/siacs/conversations/services/AvatarService.java
parenta7fd629c051a3ba0031fba4e358ba4f3b843283d (diff)
load avatars in message adapter in background task
Diffstat (limited to 'src/main/java/eu/siacs/conversations/services/AvatarService.java')
-rw-r--r--src/main/java/eu/siacs/conversations/services/AvatarService.java21
1 files changed, 19 insertions, 2 deletions
diff --git a/src/main/java/eu/siacs/conversations/services/AvatarService.java b/src/main/java/eu/siacs/conversations/services/AvatarService.java
index 7412eb93..3cd32d79 100644
--- a/src/main/java/eu/siacs/conversations/services/AvatarService.java
+++ b/src/main/java/eu/siacs/conversations/services/AvatarService.java
@@ -16,6 +16,7 @@ import eu.siacs.conversations.entities.Bookmark;
import eu.siacs.conversations.entities.Contact;
import eu.siacs.conversations.entities.Conversation;
import eu.siacs.conversations.entities.ListItem;
+import eu.siacs.conversations.entities.Message;
import eu.siacs.conversations.entities.MucOptions;
import eu.siacs.conversations.utils.UIHelper;
@@ -179,9 +180,13 @@ public class AvatarService {
}
public Bitmap get(Account account, int size) {
+ return get(account, size, false);
+ }
+
+ public Bitmap get(Account account, int size, boolean cachedOnly) {
final String KEY = key(account, size);
Bitmap avatar = mXmppConnectionService.getBitmapCache().get(KEY);
- if (avatar != null) {
+ if (avatar != null || cachedOnly) {
return avatar;
}
avatar = mXmppConnectionService.getFileBackend().getAvatar(
@@ -193,6 +198,19 @@ public class AvatarService {
return avatar;
}
+ public Bitmap get(Message message, int size, boolean cachedOnly) {
+ if (message.getStatus() == Message.STATUS_RECEIVED) {
+ Contact contact = message.getContact();
+ if (contact != null) {
+ return get(contact, size, cachedOnly);
+ } else {
+ return get(UIHelper.getMessageDisplayName(message), size, cachedOnly);
+ }
+ } else {
+ return get(message.getConversation().getAccount(), size, cachedOnly);
+ }
+ }
+
public void clear(Account account) {
synchronized (this.sizes) {
for (Integer size : sizes) {
@@ -291,5 +309,4 @@ public class AvatarService {
Rect dst = new Rect(dstleft, dsttop, dstright, dstbottom);
canvas.drawBitmap(bm, null, dst, null);
}
-
}