/* * Copyright (C) 2016 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License */ package com.android.systemui.qs.external; import android.content.Context; import android.content.res.ColorStateList; import android.service.quicksettings.Tile; import android.support.annotation.VisibleForTesting; import com.android.systemui.R; public class TileColorPicker { @VisibleForTesting static final int[] DISABLE_STATE_SET = {-android.R.attr.state_enabled}; @VisibleForTesting static final int[] ENABLE_STATE_SET = {android.R.attr.state_enabled, android.R.attr.state_activated}; @VisibleForTesting static final int[] INACTIVE_STATE_SET = {-android.R.attr.state_activated}; private static TileColorPicker sInstance; private ColorStateList mColorStateList; private TileColorPicker(Context context) { mColorStateList = context.getResources(). getColorStateList(R.color.tint_color_selector, context.getTheme()); } public static TileColorPicker getInstance(Context context) { if (sInstance == null) { sInstance = new TileColorPicker(context); } return sInstance; } public int getColor(int state) { final int defaultColor = 0; switch (state) { case Tile.STATE_UNAVAILABLE: return mColorStateList.getColorForState(DISABLE_STATE_SET, defaultColor); case Tile.STATE_INACTIVE: return mColorStateList.getColorForState(INACTIVE_STATE_SET, defaultColor); case Tile.STATE_ACTIVE: return mColorStateList.getColorForState(ENABLE_STATE_SET, defaultColor); default: return mColorStateList.getColorForState(ENABLE_STATE_SET, defaultColor); } } }