1254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gupackage android.support.v17.leanback.widget;
2254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu
3254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Guimport android.graphics.drawable.Drawable;
4254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Guimport android.os.Build;
5254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Guimport android.view.View;
6254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Guimport android.view.ViewGroup;
7254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu
8254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gufinal class ForegroundHelper {
9254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu
10254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu    final static ForegroundHelper sInstance = new ForegroundHelper();
11254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu    ForegroundHelperVersionImpl mImpl;
12254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu
13254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu    /**
14254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu     * Interface implemented by classes that support Shadow.
15254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu     */
16254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu    static interface ForegroundHelperVersionImpl {
17254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu
18254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu        public void setForeground(View view, Drawable drawable);
19254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu
20254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu        public Drawable getForeground(View view);
21254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu    }
22254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu
23254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu    /**
24254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu     * Implementation used on api 23 (and above).
25254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu     */
26254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu    private static final class ForegroundHelperApi23Impl implements ForegroundHelperVersionImpl {
2799ec8b0cb375f7e5577ea3ec9f09e6ff7a95de0dAurimas Liutikas        ForegroundHelperApi23Impl() {
2899ec8b0cb375f7e5577ea3ec9f09e6ff7a95de0dAurimas Liutikas        }
2999ec8b0cb375f7e5577ea3ec9f09e6ff7a95de0dAurimas Liutikas
30254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu        @Override
31254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu        public void setForeground(View view, Drawable drawable) {
32254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu            ForegroundHelperApi23.setForeground(view, drawable);
33254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu        }
34254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu
35254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu        @Override
36254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu        public Drawable getForeground(View view) {
37254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu            return ForegroundHelperApi23.getForeground(view);
38254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu        }
39254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu    }
40254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu
41254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu    /**
42254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu     * Stub implementation
43254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu     */
44254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu    private static final class ForegroundHelperStubImpl implements ForegroundHelperVersionImpl {
4599ec8b0cb375f7e5577ea3ec9f09e6ff7a95de0dAurimas Liutikas        ForegroundHelperStubImpl() {
4699ec8b0cb375f7e5577ea3ec9f09e6ff7a95de0dAurimas Liutikas        }
4799ec8b0cb375f7e5577ea3ec9f09e6ff7a95de0dAurimas Liutikas
48254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu        @Override
49254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu        public void setForeground(View view, Drawable drawable) {
50254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu        }
51254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu
52254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu        @Override
53254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu        public Drawable getForeground(View view) {
54254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu            return null;
55254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu        }
56254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu    }
57254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu
58254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu    private ForegroundHelper() {
59254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu        if (supportsForeground()) {
60254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu            mImpl = new ForegroundHelperApi23Impl();
61254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu        } else {
62254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu            mImpl = new ForegroundHelperStubImpl();
63254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu        }
64254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu    }
65254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu
66254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu    public static ForegroundHelper getInstance() {
67254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu        return sInstance;
68254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu    }
69254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu
70254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu    /**
71254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu     * Returns true if view.setForeground() is supported.
72254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu     */
73254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu    public static boolean supportsForeground() {
74254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu        return Build.VERSION.SDK_INT >= 23;
75254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu    }
76254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu
77254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu    public Drawable getForeground(View view) {
78254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu        return mImpl.getForeground(view);
79254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu    }
80254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu
81254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu    public void setForeground(View view, Drawable drawable) {
82254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu        mImpl.setForeground(view, drawable);
83254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu    }
84254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu}
85