diff --git a/src/com/android/settings/dashboard/DashboardAdapter.java b/src/com/android/settings/dashboard/DashboardAdapter.java index 879a4b8932a..937e6dbbf2d 100644 --- a/src/com/android/settings/dashboard/DashboardAdapter.java +++ b/src/com/android/settings/dashboard/DashboardAdapter.java @@ -18,7 +18,6 @@ package com.android.settings.dashboard; import android.app.Activity; import android.content.Context; import android.graphics.drawable.Drawable; -import android.graphics.drawable.Icon; import android.os.Bundle; import android.service.settings.suggestions.Suggestion; import android.support.annotation.VisibleForTesting; @@ -262,7 +261,7 @@ public class DashboardAdapter extends RecyclerView.Adapter icons, ViewGroup parent) { + private void updateConditionIcons(List icons, ViewGroup parent) { if (icons == null || icons.size() < 2) { parent.setVisibility(View.INVISIBLE); return; @@ -348,7 +347,7 @@ public class DashboardAdapter extends RecyclerView.Adapter conditionIcons; + public final List conditionIcons; public final CharSequence title; public final int conditionCount; diff --git a/src/com/android/settings/dashboard/conditional/AirplaneModeCondition.java b/src/com/android/settings/dashboard/conditional/AirplaneModeCondition.java index c6002bdc68a..448510f75a2 100644 --- a/src/com/android/settings/dashboard/conditional/AirplaneModeCondition.java +++ b/src/com/android/settings/dashboard/conditional/AirplaneModeCondition.java @@ -19,6 +19,7 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.graphics.drawable.Drawable; import android.graphics.drawable.Icon; import android.net.ConnectivityManager; import android.provider.Settings; @@ -58,8 +59,8 @@ public class AirplaneModeCondition extends Condition { } @Override - public Icon getIcon() { - return Icon.createWithResource(mManager.getContext(), R.drawable.ic_airplane); + public Drawable getIcon() { + return mManager.getContext().getDrawable(R.drawable.ic_airplane); } @Override diff --git a/src/com/android/settings/dashboard/conditional/BackgroundDataCondition.java b/src/com/android/settings/dashboard/conditional/BackgroundDataCondition.java index 34172c277ec..a7e160fc68d 100644 --- a/src/com/android/settings/dashboard/conditional/BackgroundDataCondition.java +++ b/src/com/android/settings/dashboard/conditional/BackgroundDataCondition.java @@ -16,7 +16,7 @@ package com.android.settings.dashboard.conditional; import android.content.Intent; -import android.graphics.drawable.Icon; +import android.graphics.drawable.Drawable; import android.net.NetworkPolicyManager; import android.util.FeatureFlagUtils; @@ -37,8 +37,8 @@ public class BackgroundDataCondition extends Condition { } @Override - public Icon getIcon() { - return Icon.createWithResource(mManager.getContext(), R.drawable.ic_data_saver); + public Drawable getIcon() { + return mManager.getContext().getDrawable(R.drawable.ic_data_saver); } @Override @@ -53,7 +53,7 @@ public class BackgroundDataCondition extends Condition { @Override public CharSequence[] getActions() { - return new CharSequence[] { mManager.getContext().getString(R.string.condition_turn_off) }; + return new CharSequence[] {mManager.getContext().getString(R.string.condition_turn_off)}; } @Override diff --git a/src/com/android/settings/dashboard/conditional/BatterySaverCondition.java b/src/com/android/settings/dashboard/conditional/BatterySaverCondition.java index d1135784d4a..f1962efa9cd 100644 --- a/src/com/android/settings/dashboard/conditional/BatterySaverCondition.java +++ b/src/com/android/settings/dashboard/conditional/BatterySaverCondition.java @@ -16,12 +16,13 @@ package com.android.settings.dashboard.conditional; import android.content.Intent; -import android.graphics.drawable.Icon; +import android.graphics.drawable.Drawable; import android.os.PowerManager; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; import com.android.settings.core.SubSettingLauncher; +import com.android.settings.fuelgauge.BatterySaverDrawable; import com.android.settings.fuelgauge.batterysaver.BatterySaverSettings; import com.android.settingslib.fuelgauge.BatterySaverUtils; @@ -37,8 +38,8 @@ public class BatterySaverCondition extends Condition { } @Override - public Icon getIcon() { - return Icon.createWithResource(mManager.getContext(), R.drawable.ic_settings_battery); + public Drawable getIcon() { + return new BatterySaverDrawable(mManager.getContext(), 0); } @Override @@ -53,7 +54,7 @@ public class BatterySaverCondition extends Condition { @Override public CharSequence[] getActions() { - return new CharSequence[] { mManager.getContext().getString(R.string.condition_turn_off) }; + return new CharSequence[] {mManager.getContext().getString(R.string.condition_turn_off)}; } @Override diff --git a/src/com/android/settings/dashboard/conditional/CellularDataCondition.java b/src/com/android/settings/dashboard/conditional/CellularDataCondition.java index 112248c56b5..bc0cbd5200f 100644 --- a/src/com/android/settings/dashboard/conditional/CellularDataCondition.java +++ b/src/com/android/settings/dashboard/conditional/CellularDataCondition.java @@ -14,9 +14,10 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; -import android.graphics.drawable.Icon; +import android.graphics.drawable.Drawable; import android.net.ConnectivityManager; import android.telephony.TelephonyManager; + import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.telephony.TelephonyIntents; import com.android.settings.R; @@ -58,8 +59,8 @@ public class CellularDataCondition extends Condition { } @Override - public Icon getIcon() { - return Icon.createWithResource(mManager.getContext(), R.drawable.ic_cellular_off); + public Drawable getIcon() { + return mManager.getContext().getDrawable(R.drawable.ic_cellular_off); } @Override diff --git a/src/com/android/settings/dashboard/conditional/Condition.java b/src/com/android/settings/dashboard/conditional/Condition.java index d66440e9e89..f2905b964a7 100644 --- a/src/com/android/settings/dashboard/conditional/Condition.java +++ b/src/com/android/settings/dashboard/conditional/Condition.java @@ -19,10 +19,10 @@ package com.android.settings.dashboard.conditional; import android.content.BroadcastReceiver; import android.content.Context; import android.content.IntentFilter; -import android.graphics.drawable.Icon; +import android.graphics.drawable.Drawable; import android.os.PersistableBundle; - import android.support.annotation.VisibleForTesting; + import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; @@ -151,7 +151,7 @@ public abstract class Condition { public abstract int getMetricsConstant(); // UI. - public abstract Icon getIcon(); + public abstract Drawable getIcon(); public abstract CharSequence getTitle(); public abstract CharSequence getSummary(); public abstract CharSequence[] getActions(); diff --git a/src/com/android/settings/dashboard/conditional/ConditionAdapter.java b/src/com/android/settings/dashboard/conditional/ConditionAdapter.java index a540b3f260a..a656cc73917 100644 --- a/src/com/android/settings/dashboard/conditional/ConditionAdapter.java +++ b/src/com/android/settings/dashboard/conditional/ConditionAdapter.java @@ -50,8 +50,8 @@ public class ConditionAdapter extends RecyclerView.Adapter //TODO: get rid of setTag/getTag Condition condition = (Condition) v.getTag(); mMetricsFeatureProvider.action(mContext, - MetricsEvent.ACTION_SETTINGS_CONDITION_CLICK, - condition.getMetricsConstant()); + MetricsEvent.ACTION_SETTINGS_CONDITION_CLICK, + condition.getMetricsConstant()); condition.onPrimaryClick(); } }; @@ -108,7 +108,7 @@ public class ConditionAdapter extends RecyclerView.Adapter @Override public void onBindViewHolder(DashboardItemHolder holder, int position) { bindViews(mConditions.get(position), holder, - position == mConditions.size() - 1, mConditionClickListener); + position == mConditions.size() - 1, mConditionClickListener); } @Override @@ -145,7 +145,7 @@ public class ConditionAdapter extends RecyclerView.Adapter View card = view.itemView.findViewById(R.id.content); card.setTag(condition); card.setOnClickListener(onClickListener); - view.icon.setImageIcon(condition.getIcon()); + view.icon.setImageDrawable(condition.getIcon()); view.title.setText(condition.getTitle()); CharSequence[] actions = condition.getActions(); diff --git a/src/com/android/settings/dashboard/conditional/DndCondition.java b/src/com/android/settings/dashboard/conditional/DndCondition.java index 673dccc0f8c..3112d48e590 100644 --- a/src/com/android/settings/dashboard/conditional/DndCondition.java +++ b/src/com/android/settings/dashboard/conditional/DndCondition.java @@ -20,7 +20,7 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; -import android.graphics.drawable.Icon; +import android.graphics.drawable.Drawable; import android.os.PersistableBundle; import android.provider.Settings; import android.provider.Settings.Global; @@ -81,8 +81,8 @@ public class DndCondition extends Condition { } @Override - public Icon getIcon() { - return Icon.createWithResource(mManager.getContext(), R.drawable.ic_zen); + public Drawable getIcon() { + return mManager.getContext().getDrawable(R.drawable.ic_zen); } @Override diff --git a/src/com/android/settings/dashboard/conditional/HotspotCondition.java b/src/com/android/settings/dashboard/conditional/HotspotCondition.java index c62b0a489ac..53e0c07978f 100644 --- a/src/com/android/settings/dashboard/conditional/HotspotCondition.java +++ b/src/com/android/settings/dashboard/conditional/HotspotCondition.java @@ -19,7 +19,7 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; -import android.graphics.drawable.Icon; +import android.graphics.drawable.Drawable; import android.net.ConnectivityManager; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiManager; @@ -64,8 +64,8 @@ public class HotspotCondition extends Condition { } @Override - public Icon getIcon() { - return Icon.createWithResource(mManager.getContext(), R.drawable.ic_hotspot); + public Drawable getIcon() { + return mManager.getContext().getDrawable(R.drawable.ic_hotspot); } private String getSsid() { diff --git a/src/com/android/settings/dashboard/conditional/NightDisplayCondition.java b/src/com/android/settings/dashboard/conditional/NightDisplayCondition.java index 9cb8605640e..78278b5dced 100644 --- a/src/com/android/settings/dashboard/conditional/NightDisplayCondition.java +++ b/src/com/android/settings/dashboard/conditional/NightDisplayCondition.java @@ -17,7 +17,7 @@ package com.android.settings.dashboard.conditional; import android.content.Intent; -import android.graphics.drawable.Icon; +import android.graphics.drawable.Drawable; import com.android.internal.app.ColorDisplayController; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; @@ -42,8 +42,8 @@ public final class NightDisplayCondition extends Condition } @Override - public Icon getIcon() { - return Icon.createWithResource(mManager.getContext(), R.drawable.ic_settings_night_display); + public Drawable getIcon() { + return mManager.getContext().getDrawable(R.drawable.ic_settings_night_display); } @Override @@ -58,7 +58,7 @@ public final class NightDisplayCondition extends Condition @Override public CharSequence[] getActions() { - return new CharSequence[] { mManager.getContext().getString(R.string.condition_turn_off) }; + return new CharSequence[] {mManager.getContext().getString(R.string.condition_turn_off)}; } @Override diff --git a/src/com/android/settings/dashboard/conditional/WorkModeCondition.java b/src/com/android/settings/dashboard/conditional/WorkModeCondition.java index cb1b60a94f8..941d5b02b68 100644 --- a/src/com/android/settings/dashboard/conditional/WorkModeCondition.java +++ b/src/com/android/settings/dashboard/conditional/WorkModeCondition.java @@ -19,7 +19,7 @@ package com.android.settings.dashboard.conditional; import android.content.Context; import android.content.Intent; import android.content.pm.UserInfo; -import android.graphics.drawable.Icon; +import android.graphics.drawable.Drawable; import android.os.UserHandle; import android.os.UserManager; @@ -60,9 +60,8 @@ public class WorkModeCondition extends Condition { } @Override - public Icon getIcon() { - return Icon.createWithResource(mManager.getContext(), - R.drawable.ic_signal_workmode_enable); + public Drawable getIcon() { + return mManager.getContext().getDrawable(R.drawable.ic_signal_workmode_enable); } @Override diff --git a/src/com/android/settings/datausage/DataUsageSummary.java b/src/com/android/settings/datausage/DataUsageSummary.java index 25ab330cc06..ccfcff1f00a 100644 --- a/src/com/android/settings/datausage/DataUsageSummary.java +++ b/src/com/android/settings/datausage/DataUsageSummary.java @@ -20,7 +20,6 @@ import android.content.Context; import android.content.Intent; import android.net.NetworkTemplate; import android.os.Bundle; -import android.os.UserManager; import android.provider.SearchIndexableResource; import android.support.annotation.VisibleForTesting; import android.support.v7.preference.Preference; @@ -35,21 +34,16 @@ import android.text.SpannableString; import android.text.TextUtils; import android.text.format.Formatter; import android.text.style.RelativeSizeSpan; -import android.view.Menu; -import android.view.MenuInflater; import android.view.MenuItem; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; -import com.android.settings.SettingsActivity; import com.android.settings.Utils; import com.android.settings.dashboard.SummaryLoader; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.Indexable; -import com.android.settings.widget.EntityHeaderController; import com.android.settingslib.NetworkPolicyEditor; import com.android.settingslib.core.AbstractPreferenceController; -import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.net.DataUsageController; import java.util.ArrayList; diff --git a/src/com/android/settings/fuelgauge/BatterySaverDrawable.java b/src/com/android/settings/fuelgauge/BatterySaverDrawable.java new file mode 100644 index 00000000000..0d3008a0e38 --- /dev/null +++ b/src/com/android/settings/fuelgauge/BatterySaverDrawable.java @@ -0,0 +1,43 @@ +/* + * Copyright (C) 2018 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.settings.fuelgauge; + +import android.content.Context; +import android.graphics.PorterDuff; +import android.graphics.PorterDuffColorFilter; + +import com.android.settingslib.Utils; +import com.android.settingslib.graph.BatteryMeterDrawableBase; + +/** + * Drawable that shows a static battery saver icon - a full battery symbol and a plus sign. + */ +public class BatterySaverDrawable extends BatteryMeterDrawableBase { + + private static final int MAX_BATTERY = 100; + + public BatterySaverDrawable(Context context, int frameColor) { + super(context, frameColor); + // Show as full so it's always uniform color + setBatteryLevel(MAX_BATTERY); + setPowerSave(true); + setCharging(false); + setPowerSaveAsColorError(false); + final int tintColor = Utils.getColorAttr(context, android.R.attr.colorAccent); + setColorFilter(new PorterDuffColorFilter(tintColor, PorterDuff.Mode.SRC_IN)); + } +} \ No newline at end of file diff --git a/tests/robotests/src/com/android/settings/dashboard/conditional/ConditionTest.java b/tests/robotests/src/com/android/settings/dashboard/conditional/ConditionTest.java index 0333ae01d8d..6d5673151a2 100644 --- a/tests/robotests/src/com/android/settings/dashboard/conditional/ConditionTest.java +++ b/tests/robotests/src/com/android/settings/dashboard/conditional/ConditionTest.java @@ -27,7 +27,7 @@ import static org.mockito.Mockito.when; import android.content.BroadcastReceiver; import android.content.Context; import android.content.IntentFilter; -import android.graphics.drawable.Icon; +import android.graphics.drawable.Drawable; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.testutils.SettingsRobolectricTestRunner; @@ -120,7 +120,7 @@ public class ConditionTest { } @Override - public Icon getIcon() { + public Drawable getIcon() { return null; }