176471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei/*
276471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei * Copyright (C) 2016 The Android Open Source Project
376471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei *
476471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei * Licensed under the Apache License, Version 2.0 (the "License");
576471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei * you may not use this file except in compliance with the License.
676471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei * You may obtain a copy of the License at
776471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei *
876471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei *      http://www.apache.org/licenses/LICENSE-2.0
976471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei *
1076471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei * Unless required by applicable law or agreed to in writing, software
1176471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei * distributed under the License is distributed on an "AS IS" BASIS,
1276471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1376471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei * See the License for the specific language governing permissions and
1476471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei * limitations under the License
1576471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei */
1676471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyuleipackage com.android.systemui.qs.external;
1776471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei
1876471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyuleiimport android.content.Context;
1976471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyuleiimport android.content.res.ColorStateList;
2076471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyuleiimport android.service.quicksettings.Tile;
2176471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyuleiimport android.support.annotation.VisibleForTesting;
2276471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyuleiimport com.android.systemui.R;
2376471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei
2476471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyuleipublic class TileColorPicker {
2576471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei    @VisibleForTesting static final int[] DISABLE_STATE_SET = {-android.R.attr.state_enabled};
2676471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei    @VisibleForTesting static final int[] ENABLE_STATE_SET = {android.R.attr.state_enabled,
2776471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei            android.R.attr.state_activated};
2876471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei    @VisibleForTesting static final int[] INACTIVE_STATE_SET = {-android.R.attr.state_activated};
2976471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei    private static TileColorPicker sInstance;
3076471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei
3176471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei    private ColorStateList mColorStateList;
3276471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei
3376471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei    private TileColorPicker(Context context) {
3476471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei        mColorStateList = context.getResources().
3576471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei                getColorStateList(R.color.tint_color_selector, context.getTheme());
3676471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei    }
3776471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei
3876471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei    public static TileColorPicker getInstance(Context context) {
3976471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei        if (sInstance == null) {
4076471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei            sInstance = new TileColorPicker(context);
4176471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei        }
4276471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei        return sInstance;
4376471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei    }
4476471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei
4576471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei    public int getColor(int state) {
4676471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei        final int defaultColor = 0;
4776471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei
4876471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei        switch (state) {
4976471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei            case Tile.STATE_UNAVAILABLE:
5076471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei                return mColorStateList.getColorForState(DISABLE_STATE_SET, defaultColor);
5176471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei            case Tile.STATE_INACTIVE:
5276471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei                return mColorStateList.getColorForState(INACTIVE_STATE_SET, defaultColor);
5376471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei            case Tile.STATE_ACTIVE:
5476471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei                return mColorStateList.getColorForState(ENABLE_STATE_SET, defaultColor);
5576471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei            default:
5676471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei                return mColorStateList.getColorForState(ENABLE_STATE_SET, defaultColor);
5776471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei        }
5876471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei    }
5976471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei
6076471a5d9ec3a5d66c43f6afa5d7274c6d58a8cajackqdyulei}
61