aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/thedevstack/conversationsplus/ui/tasks/AvatarBitmapTask.java
diff options
context:
space:
mode:
authorsteckbrief <steckbrief@chefmail.de>2017-08-05 22:25:23 +0200
committersteckbrief <steckbrief@chefmail.de>2017-08-05 22:25:23 +0200
commit6f588444a953a54543661f7603d45a9093b7196a (patch)
treed9c2e1d8982336bbb3c1dcdb4d701c311ccc2d86 /src/main/java/de/thedevstack/conversationsplus/ui/tasks/AvatarBitmapTask.java
parent530d64beca87181e9bea8034353353cd8a7083a4 (diff)
Implements FS#249: Remove code duplication for avatar creation
Diffstat (limited to 'src/main/java/de/thedevstack/conversationsplus/ui/tasks/AvatarBitmapTask.java')
-rw-r--r--src/main/java/de/thedevstack/conversationsplus/ui/tasks/AvatarBitmapTask.java47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/main/java/de/thedevstack/conversationsplus/ui/tasks/AvatarBitmapTask.java b/src/main/java/de/thedevstack/conversationsplus/ui/tasks/AvatarBitmapTask.java
new file mode 100644
index 00000000..ec89b001
--- /dev/null
+++ b/src/main/java/de/thedevstack/conversationsplus/ui/tasks/AvatarBitmapTask.java
@@ -0,0 +1,47 @@
+package de.thedevstack.conversationsplus.ui.tasks;
+
+import android.graphics.Bitmap;
+import android.os.AsyncTask;
+import android.widget.ImageView;
+
+import java.lang.ref.WeakReference;
+
+import de.thedevstack.conversationsplus.dto.LoadAvatarFor;
+import de.thedevstack.conversationsplus.entities.Conversation;
+import de.thedevstack.conversationsplus.entities.Message;
+import de.thedevstack.conversationsplus.services.AvatarService;
+
+/**
+ *
+ */
+public class AvatarBitmapTask<T extends LoadAvatarFor> extends AsyncTask<T, Void, Bitmap> {
+ private final WeakReference<ImageView> imageViewReference;
+ private int avatarSize;
+
+ public AvatarBitmapTask(ImageView imageView, int size) {
+ imageViewReference = new WeakReference<>(imageView);
+ this.avatarSize = size;
+ }
+
+ @Override
+ protected Bitmap doInBackground(T... params) {
+ if (params[0] instanceof Conversation) {
+ return AvatarService.getInstance().get((Conversation)params[0], this.avatarSize);
+ } else if (params[0] instanceof Message) {
+ return AvatarService.getInstance().get((Message) params[0], this.avatarSize, isCancelled()); // Wirklich die richtige Nutzung von isCancelled()???
+ } else {
+ return null;
+ }
+ }
+
+ @Override
+ protected void onPostExecute(Bitmap bitmap) {
+ if (bitmap != null) {
+ final ImageView imageView = imageViewReference.get();
+ if (imageView != null) {
+ imageView.setImageBitmap(bitmap);
+ imageView.setBackgroundColor(0x00000000);
+ }
+ }
+ }
+}