summaryrefslogtreecommitdiff
path: root/app/src/main/java/de/danoeh/antennapod/adapter/CoverTarget.java
blob: ba6e7b25d248c8e6b2e651ab579dfea822c6b7be (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
48
49
50
51
52
53
54
55
56
57
package de.danoeh.antennapod.adapter;

import android.graphics.drawable.Drawable;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

import com.bumptech.glide.Glide;
import com.bumptech.glide.load.resource.drawable.GlideDrawable;
import com.bumptech.glide.request.animation.GlideAnimation;
import com.bumptech.glide.request.target.GlideDrawableImageViewTarget;

import java.lang.ref.WeakReference;

import de.danoeh.antennapod.activity.MainActivity;
import de.danoeh.antennapod.core.glide.ApGlideSettings;

class CoverTarget extends GlideDrawableImageViewTarget {

    private final WeakReference<String> fallback;
    private final WeakReference<TextView> placeholder;
    private final WeakReference<ImageView> cover;
    private final WeakReference<MainActivity> mainActivity;

    public CoverTarget(String fallbackUri, TextView txtvPlaceholder, ImageView imgvCover, MainActivity activity) {
        super(imgvCover);
        fallback = new WeakReference<>(fallbackUri);
        placeholder = new WeakReference<>(txtvPlaceholder);
        cover = new WeakReference<>(imgvCover);
        mainActivity = new WeakReference<>(activity);
    }

    @Override
    public void onLoadFailed(Exception e, Drawable errorDrawable) {
        String fallbackUri = fallback.get();
        TextView txtvPlaceholder = placeholder.get();
        ImageView imgvCover = cover.get();
        if (fallbackUri != null && txtvPlaceholder != null && imgvCover != null) {
            MainActivity activity = mainActivity.get();
            Glide.with(activity)
                    .load(fallbackUri)
                    .diskCacheStrategy(ApGlideSettings.AP_DISK_CACHE_STRATEGY)
                    .fitCenter()
                    .dontAnimate()
                    .into(new CoverTarget(null, txtvPlaceholder, imgvCover, activity));
        }
    }

    @Override
    public void onResourceReady(GlideDrawable drawable, GlideAnimation<? super GlideDrawable> anim) {
        super.onResourceReady(drawable, anim);
        TextView txtvPlaceholder = placeholder.get();
        if (txtvPlaceholder != null) {
            txtvPlaceholder.setVisibility(View.INVISIBLE);
        }
    }
}