aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/thedevstack/conversationsplus/ui/tasks/AvatarBitmapTask.java
blob: ec89b001f1009542b461bab67f9d1e98b4b55fb0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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);
            }
        }
    }
}