Loading src/com/android/settings/datausage/BillingCycleSettings.java +41 −21 Original line number Original line Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.settings.datausage; import android.app.AlertDialog; import android.app.AlertDialog; import android.app.Dialog; import android.app.Dialog; import android.app.DialogFragment; import android.app.DialogFragment; import android.app.Fragment; import android.content.Context; import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface; import android.content.res.Resources; import android.content.res.Resources; Loading Loading @@ -44,7 +45,7 @@ import static android.net.TrafficStats.GB_IN_BYTES; import static android.net.TrafficStats.MB_IN_BYTES; import static android.net.TrafficStats.MB_IN_BYTES; public class BillingCycleSettings extends DataUsageBase implements public class BillingCycleSettings extends DataUsageBase implements Preference.OnPreferenceChangeListener { Preference.OnPreferenceChangeListener, DataUsageEditController { private static final String TAG = "BillingCycleSettings"; private static final String TAG = "BillingCycleSettings"; private static final boolean LOGD = false; private static final boolean LOGD = false; Loading Loading @@ -147,6 +148,21 @@ public class BillingCycleSettings extends DataUsageBase implements updatePrefs(); updatePrefs(); } } @Override public NetworkPolicyEditor getNetworkPolicyEditor() { return services.mPolicyEditor; } @Override public NetworkTemplate getNetworkTemplate() { return mNetworkTemplate; } @Override public void updateDataUsage() { updatePrefs(); } /** /** * Dialog to edit {@link NetworkPolicy#warningBytes}. * Dialog to edit {@link NetworkPolicy#warningBytes}. */ */ Loading @@ -156,24 +172,28 @@ public class BillingCycleSettings extends DataUsageBase implements private static final String EXTRA_LIMIT = "limit"; private static final String EXTRA_LIMIT = "limit"; private View mView; private View mView; public static void show(BillingCycleSettings parent, boolean isLimit) { public static void show(DataUsageEditController parent, boolean isLimit) { if (!parent.isAdded()) return; if (!(parent instanceof Fragment)) { return; } Fragment targetFragment = (Fragment) parent; if (!targetFragment.isAdded()) { return; } final Bundle args = new Bundle(); final Bundle args = new Bundle(); args.putParcelable(EXTRA_TEMPLATE, parent.mNetworkTemplate); args.putParcelable(EXTRA_TEMPLATE, parent.getNetworkTemplate()); args.putBoolean(EXTRA_LIMIT, isLimit); args.putBoolean(EXTRA_LIMIT, isLimit); final BytesEditorFragment dialog = new BytesEditorFragment(); final BytesEditorFragment dialog = new BytesEditorFragment(); dialog.setArguments(args); dialog.setArguments(args); dialog.setTargetFragment(parent, 0); dialog.setTargetFragment(targetFragment, 0); dialog.show(parent.getFragmentManager(), TAG_WARNING_EDITOR); dialog.show(targetFragment.getFragmentManager(), TAG_WARNING_EDITOR); } } @Override @Override public Dialog onCreateDialog(Bundle savedInstanceState) { public Dialog onCreateDialog(Bundle savedInstanceState) { final Context context = getActivity(); final Context context = getActivity(); final LayoutInflater dialogInflater = LayoutInflater.from(context); final LayoutInflater dialogInflater = LayoutInflater.from(context); final boolean isLimit = getArguments().getBoolean(EXTRA_LIMIT); final boolean isLimit = getArguments().getBoolean(EXTRA_LIMIT); mView = dialogInflater.inflate(R.layout.data_usage_bytes_editor, null, false); mView = dialogInflater.inflate(R.layout.data_usage_bytes_editor, null, false); Loading @@ -188,8 +208,8 @@ public class BillingCycleSettings extends DataUsageBase implements } } private void setupPicker(EditText bytesPicker, Spinner type) { private void setupPicker(EditText bytesPicker, Spinner type) { final BillingCycleSettings target = (BillingCycleSettings) getTargetFragment(); final DataUsageEditController target = (DataUsageEditController) getTargetFragment(); final NetworkPolicyEditor editor = target.services.mPolicyEditor; final NetworkPolicyEditor editor = target.getNetworkPolicyEditor(); final NetworkTemplate template = getArguments().getParcelable(EXTRA_TEMPLATE); final NetworkTemplate template = getArguments().getParcelable(EXTRA_TEMPLATE); final boolean isLimit = getArguments().getBoolean(EXTRA_LIMIT); final boolean isLimit = getArguments().getBoolean(EXTRA_LIMIT); Loading Loading @@ -222,8 +242,8 @@ public class BillingCycleSettings extends DataUsageBase implements if (which != DialogInterface.BUTTON_POSITIVE) { if (which != DialogInterface.BUTTON_POSITIVE) { return; return; } } final BillingCycleSettings target = (BillingCycleSettings) getTargetFragment(); final DataUsageEditController target = (DataUsageEditController) getTargetFragment(); final NetworkPolicyEditor editor = target.services.mPolicyEditor; final NetworkPolicyEditor editor = target.getNetworkPolicyEditor(); final NetworkTemplate template = getArguments().getParcelable(EXTRA_TEMPLATE); final NetworkTemplate template = getArguments().getParcelable(EXTRA_TEMPLATE); final boolean isLimit = getArguments().getBoolean(EXTRA_LIMIT); final boolean isLimit = getArguments().getBoolean(EXTRA_LIMIT); Loading @@ -241,7 +261,7 @@ public class BillingCycleSettings extends DataUsageBase implements } else { } else { editor.setPolicyWarningBytes(template, bytes); editor.setPolicyWarningBytes(template, bytes); } } target.updatePrefs(); target.updateDataUsage(); } } } } Loading @@ -268,8 +288,8 @@ public class BillingCycleSettings extends DataUsageBase implements @Override @Override public Dialog onCreateDialog(Bundle savedInstanceState) { public Dialog onCreateDialog(Bundle savedInstanceState) { final Context context = getActivity(); final Context context = getActivity(); final BillingCycleSettings target = (BillingCycleSettings) getTargetFragment(); final DataUsageEditController target = (DataUsageEditController) getTargetFragment(); final NetworkPolicyEditor editor = target.services.mPolicyEditor; final NetworkPolicyEditor editor = target.getNetworkPolicyEditor(); final AlertDialog.Builder builder = new AlertDialog.Builder(context); final AlertDialog.Builder builder = new AlertDialog.Builder(context); final LayoutInflater dialogInflater = LayoutInflater.from(builder.getContext()); final LayoutInflater dialogInflater = LayoutInflater.from(builder.getContext()); Loading @@ -294,8 +314,8 @@ public class BillingCycleSettings extends DataUsageBase implements @Override @Override public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) { final NetworkTemplate template = getArguments().getParcelable(EXTRA_TEMPLATE); final NetworkTemplate template = getArguments().getParcelable(EXTRA_TEMPLATE); final BillingCycleSettings target = (BillingCycleSettings) getTargetFragment(); final DataUsageEditController target = (DataUsageEditController) getTargetFragment(); final NetworkPolicyEditor editor = target.services.mPolicyEditor; final NetworkPolicyEditor editor = target.getNetworkPolicyEditor(); // clear focus to finish pending text edits // clear focus to finish pending text edits mCycleDayPicker.clearFocus(); mCycleDayPicker.clearFocus(); Loading @@ -303,7 +323,7 @@ public class BillingCycleSettings extends DataUsageBase implements final int cycleDay = mCycleDayPicker.getValue(); final int cycleDay = mCycleDayPicker.getValue(); final String cycleTimezone = new Time().timezone; final String cycleTimezone = new Time().timezone; editor.setPolicyCycleDay(template, cycleDay, cycleTimezone); editor.setPolicyCycleDay(template, cycleDay, cycleTimezone); target.updatePrefs(); target.updateDataUsage(); } } } } Loading src/com/android/settings/datausage/DataUsageEditController.java 0 → 100644 +38 −0 Original line number Original line Diff line number Diff line /* * 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.settings.datausage; import android.net.NetworkTemplate; import com.android.settingslib.NetworkPolicyEditor; /** * Used to create a dialog that modifies the Cellular data warning amount. */ public interface DataUsageEditController { /** * @return NetworkPolicyEditor to update the values of the data warning and usage limits. */ NetworkPolicyEditor getNetworkPolicyEditor(); /** * @return NetworkTemplate to get the currently set values of the data warning and usage limits. */ NetworkTemplate getNetworkTemplate(); /** * Callback to update the UI and values changed by the Dialog. */ void updateDataUsage(); } src/com/android/settings/datausage/DataUsageSummary.java +36 −7 Original line number Original line Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.content.Context; import android.content.Intent; import android.content.Intent; import android.net.ConnectivityManager; import android.net.ConnectivityManager; import android.net.INetworkStatsSession; import android.net.INetworkStatsSession; import android.net.NetworkPolicy; import android.net.NetworkTemplate; import android.net.NetworkTemplate; import android.net.TrafficStats; import android.net.TrafficStats; import android.os.Bundle; import android.os.Bundle; Loading Loading @@ -48,6 +49,7 @@ import com.android.settings.Utils; import com.android.settings.dashboard.SummaryLoader; import com.android.settings.dashboard.SummaryLoader; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.Indexable; import com.android.settings.search.Indexable; import com.android.settingslib.NetworkPolicyEditor; import com.android.settingslib.net.DataUsageController; import com.android.settingslib.net.DataUsageController; import java.util.ArrayList; import java.util.ArrayList; Loading @@ -56,7 +58,7 @@ import java.util.List; import static android.net.ConnectivityManager.TYPE_ETHERNET; import static android.net.ConnectivityManager.TYPE_ETHERNET; import static android.net.ConnectivityManager.TYPE_WIFI; import static android.net.ConnectivityManager.TYPE_WIFI; public class DataUsageSummary extends DataUsageBase implements Indexable { public class DataUsageSummary extends DataUsageBase implements Indexable, DataUsageEditController { private static final String TAG = "DataUsageSummary"; private static final String TAG = "DataUsageSummary"; static final boolean LOGD = false; static final boolean LOGD = false; Loading Loading @@ -87,15 +89,13 @@ public class DataUsageSummary extends DataUsageBase implements Indexable { hasMobileData = false; hasMobileData = false; } } mDefaultTemplate = getDefaultTemplate(getContext(), defaultSubId); mDefaultTemplate = getDefaultTemplate(getContext(), defaultSubId); if (hasMobileData) { mSummaryPreference = (SummaryPreference) findPreference(KEY_STATUS_HEADER); mLimitPreference = findPreference(KEY_LIMIT_SUMMARY); } else { removePreference(KEY_LIMIT_SUMMARY); } if (!hasMobileData || !isAdmin()) { if (!hasMobileData || !isAdmin()) { removePreference(KEY_RESTRICT_BACKGROUND); removePreference(KEY_RESTRICT_BACKGROUND); } } if (hasMobileData) { if (hasMobileData) { mLimitPreference = findPreference(KEY_LIMIT_SUMMARY); List<SubscriptionInfo> subscriptions = List<SubscriptionInfo> subscriptions = services.mSubscriptionManager.getActiveSubscriptionInfoList(); services.mSubscriptionManager.getActiveSubscriptionInfoList(); if (subscriptions == null || subscriptions.size() == 0) { if (subscriptions == null || subscriptions.size() == 0) { Loading @@ -104,6 +104,10 @@ public class DataUsageSummary extends DataUsageBase implements Indexable { for (int i = 0; subscriptions != null && i < subscriptions.size(); i++) { for (int i = 0; subscriptions != null && i < subscriptions.size(); i++) { addMobileSection(subscriptions.get(i).getSubscriptionId()); addMobileSection(subscriptions.get(i).getSubscriptionId()); } } mSummaryPreference.setSelectable(true); } else { removePreference(KEY_LIMIT_SUMMARY); mSummaryPreference.setSelectable(false); } } boolean hasWifiRadio = hasWifiRadio(getContext()); boolean hasWifiRadio = hasWifiRadio(getContext()); if (hasWifiRadio) { if (hasWifiRadio) { Loading @@ -116,7 +120,6 @@ public class DataUsageSummary extends DataUsageBase implements Indexable { : hasWifiRadio ? R.string.wifi_data_template : hasWifiRadio ? R.string.wifi_data_template : R.string.ethernet_data_template; : R.string.ethernet_data_template; mSummaryPreference = (SummaryPreference) findPreference(KEY_STATUS_HEADER); setHasOptionsMenu(true); setHasOptionsMenu(true); } } Loading @@ -142,6 +145,15 @@ public class DataUsageSummary extends DataUsageBase implements Indexable { return false; return false; } } @Override public boolean onPreferenceTreeClick(Preference preference) { if (preference == findPreference(KEY_STATUS_HEADER)) { BillingCycleSettings.BytesEditorFragment.show(this, false); return false; } return super.onPreferenceTreeClick(preference); } private void addMobileSection(int subId) { private void addMobileSection(int subId) { TemplatePreferenceCategory category = (TemplatePreferenceCategory) TemplatePreferenceCategory category = (TemplatePreferenceCategory) inflatePreferences(R.xml.data_usage_cellular); inflatePreferences(R.xml.data_usage_cellular); Loading Loading @@ -224,6 +236,8 @@ public class DataUsageSummary extends DataUsageBase implements Indexable { DataUsageController.DataUsageInfo info = mDataUsageController.getDataUsageInfo( DataUsageController.DataUsageInfo info = mDataUsageController.getDataUsageInfo( mDefaultTemplate); mDefaultTemplate); Context context = getContext(); Context context = getContext(); NetworkPolicy policy = services.mPolicyEditor.getPolicy(mDefaultTemplate); info.warningLevel = policy.warningBytes; if (mSummaryPreference != null) { if (mSummaryPreference != null) { mSummaryPreference.setTitle( mSummaryPreference.setTitle( formatTitle(context, getString(mDataUsageTemplate), info.usageLevel)); formatTitle(context, getString(mDataUsageTemplate), info.usageLevel)); Loading Loading @@ -258,6 +272,21 @@ public class DataUsageSummary extends DataUsageBase implements Indexable { return MetricsEvent.DATA_USAGE_SUMMARY; return MetricsEvent.DATA_USAGE_SUMMARY; } } @Override public NetworkPolicyEditor getNetworkPolicyEditor() { return services.mPolicyEditor; } @Override public NetworkTemplate getNetworkTemplate() { return mDefaultTemplate; } @Override public void updateDataUsage() { updateState(); } /** /** * Test if device has an ethernet network connection. * Test if device has an ethernet network connection. */ */ Loading Loading
src/com/android/settings/datausage/BillingCycleSettings.java +41 −21 Original line number Original line Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.settings.datausage; import android.app.AlertDialog; import android.app.AlertDialog; import android.app.Dialog; import android.app.Dialog; import android.app.DialogFragment; import android.app.DialogFragment; import android.app.Fragment; import android.content.Context; import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface; import android.content.res.Resources; import android.content.res.Resources; Loading Loading @@ -44,7 +45,7 @@ import static android.net.TrafficStats.GB_IN_BYTES; import static android.net.TrafficStats.MB_IN_BYTES; import static android.net.TrafficStats.MB_IN_BYTES; public class BillingCycleSettings extends DataUsageBase implements public class BillingCycleSettings extends DataUsageBase implements Preference.OnPreferenceChangeListener { Preference.OnPreferenceChangeListener, DataUsageEditController { private static final String TAG = "BillingCycleSettings"; private static final String TAG = "BillingCycleSettings"; private static final boolean LOGD = false; private static final boolean LOGD = false; Loading Loading @@ -147,6 +148,21 @@ public class BillingCycleSettings extends DataUsageBase implements updatePrefs(); updatePrefs(); } } @Override public NetworkPolicyEditor getNetworkPolicyEditor() { return services.mPolicyEditor; } @Override public NetworkTemplate getNetworkTemplate() { return mNetworkTemplate; } @Override public void updateDataUsage() { updatePrefs(); } /** /** * Dialog to edit {@link NetworkPolicy#warningBytes}. * Dialog to edit {@link NetworkPolicy#warningBytes}. */ */ Loading @@ -156,24 +172,28 @@ public class BillingCycleSettings extends DataUsageBase implements private static final String EXTRA_LIMIT = "limit"; private static final String EXTRA_LIMIT = "limit"; private View mView; private View mView; public static void show(BillingCycleSettings parent, boolean isLimit) { public static void show(DataUsageEditController parent, boolean isLimit) { if (!parent.isAdded()) return; if (!(parent instanceof Fragment)) { return; } Fragment targetFragment = (Fragment) parent; if (!targetFragment.isAdded()) { return; } final Bundle args = new Bundle(); final Bundle args = new Bundle(); args.putParcelable(EXTRA_TEMPLATE, parent.mNetworkTemplate); args.putParcelable(EXTRA_TEMPLATE, parent.getNetworkTemplate()); args.putBoolean(EXTRA_LIMIT, isLimit); args.putBoolean(EXTRA_LIMIT, isLimit); final BytesEditorFragment dialog = new BytesEditorFragment(); final BytesEditorFragment dialog = new BytesEditorFragment(); dialog.setArguments(args); dialog.setArguments(args); dialog.setTargetFragment(parent, 0); dialog.setTargetFragment(targetFragment, 0); dialog.show(parent.getFragmentManager(), TAG_WARNING_EDITOR); dialog.show(targetFragment.getFragmentManager(), TAG_WARNING_EDITOR); } } @Override @Override public Dialog onCreateDialog(Bundle savedInstanceState) { public Dialog onCreateDialog(Bundle savedInstanceState) { final Context context = getActivity(); final Context context = getActivity(); final LayoutInflater dialogInflater = LayoutInflater.from(context); final LayoutInflater dialogInflater = LayoutInflater.from(context); final boolean isLimit = getArguments().getBoolean(EXTRA_LIMIT); final boolean isLimit = getArguments().getBoolean(EXTRA_LIMIT); mView = dialogInflater.inflate(R.layout.data_usage_bytes_editor, null, false); mView = dialogInflater.inflate(R.layout.data_usage_bytes_editor, null, false); Loading @@ -188,8 +208,8 @@ public class BillingCycleSettings extends DataUsageBase implements } } private void setupPicker(EditText bytesPicker, Spinner type) { private void setupPicker(EditText bytesPicker, Spinner type) { final BillingCycleSettings target = (BillingCycleSettings) getTargetFragment(); final DataUsageEditController target = (DataUsageEditController) getTargetFragment(); final NetworkPolicyEditor editor = target.services.mPolicyEditor; final NetworkPolicyEditor editor = target.getNetworkPolicyEditor(); final NetworkTemplate template = getArguments().getParcelable(EXTRA_TEMPLATE); final NetworkTemplate template = getArguments().getParcelable(EXTRA_TEMPLATE); final boolean isLimit = getArguments().getBoolean(EXTRA_LIMIT); final boolean isLimit = getArguments().getBoolean(EXTRA_LIMIT); Loading Loading @@ -222,8 +242,8 @@ public class BillingCycleSettings extends DataUsageBase implements if (which != DialogInterface.BUTTON_POSITIVE) { if (which != DialogInterface.BUTTON_POSITIVE) { return; return; } } final BillingCycleSettings target = (BillingCycleSettings) getTargetFragment(); final DataUsageEditController target = (DataUsageEditController) getTargetFragment(); final NetworkPolicyEditor editor = target.services.mPolicyEditor; final NetworkPolicyEditor editor = target.getNetworkPolicyEditor(); final NetworkTemplate template = getArguments().getParcelable(EXTRA_TEMPLATE); final NetworkTemplate template = getArguments().getParcelable(EXTRA_TEMPLATE); final boolean isLimit = getArguments().getBoolean(EXTRA_LIMIT); final boolean isLimit = getArguments().getBoolean(EXTRA_LIMIT); Loading @@ -241,7 +261,7 @@ public class BillingCycleSettings extends DataUsageBase implements } else { } else { editor.setPolicyWarningBytes(template, bytes); editor.setPolicyWarningBytes(template, bytes); } } target.updatePrefs(); target.updateDataUsage(); } } } } Loading @@ -268,8 +288,8 @@ public class BillingCycleSettings extends DataUsageBase implements @Override @Override public Dialog onCreateDialog(Bundle savedInstanceState) { public Dialog onCreateDialog(Bundle savedInstanceState) { final Context context = getActivity(); final Context context = getActivity(); final BillingCycleSettings target = (BillingCycleSettings) getTargetFragment(); final DataUsageEditController target = (DataUsageEditController) getTargetFragment(); final NetworkPolicyEditor editor = target.services.mPolicyEditor; final NetworkPolicyEditor editor = target.getNetworkPolicyEditor(); final AlertDialog.Builder builder = new AlertDialog.Builder(context); final AlertDialog.Builder builder = new AlertDialog.Builder(context); final LayoutInflater dialogInflater = LayoutInflater.from(builder.getContext()); final LayoutInflater dialogInflater = LayoutInflater.from(builder.getContext()); Loading @@ -294,8 +314,8 @@ public class BillingCycleSettings extends DataUsageBase implements @Override @Override public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) { final NetworkTemplate template = getArguments().getParcelable(EXTRA_TEMPLATE); final NetworkTemplate template = getArguments().getParcelable(EXTRA_TEMPLATE); final BillingCycleSettings target = (BillingCycleSettings) getTargetFragment(); final DataUsageEditController target = (DataUsageEditController) getTargetFragment(); final NetworkPolicyEditor editor = target.services.mPolicyEditor; final NetworkPolicyEditor editor = target.getNetworkPolicyEditor(); // clear focus to finish pending text edits // clear focus to finish pending text edits mCycleDayPicker.clearFocus(); mCycleDayPicker.clearFocus(); Loading @@ -303,7 +323,7 @@ public class BillingCycleSettings extends DataUsageBase implements final int cycleDay = mCycleDayPicker.getValue(); final int cycleDay = mCycleDayPicker.getValue(); final String cycleTimezone = new Time().timezone; final String cycleTimezone = new Time().timezone; editor.setPolicyCycleDay(template, cycleDay, cycleTimezone); editor.setPolicyCycleDay(template, cycleDay, cycleTimezone); target.updatePrefs(); target.updateDataUsage(); } } } } Loading
src/com/android/settings/datausage/DataUsageEditController.java 0 → 100644 +38 −0 Original line number Original line Diff line number Diff line /* * 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.settings.datausage; import android.net.NetworkTemplate; import com.android.settingslib.NetworkPolicyEditor; /** * Used to create a dialog that modifies the Cellular data warning amount. */ public interface DataUsageEditController { /** * @return NetworkPolicyEditor to update the values of the data warning and usage limits. */ NetworkPolicyEditor getNetworkPolicyEditor(); /** * @return NetworkTemplate to get the currently set values of the data warning and usage limits. */ NetworkTemplate getNetworkTemplate(); /** * Callback to update the UI and values changed by the Dialog. */ void updateDataUsage(); }
src/com/android/settings/datausage/DataUsageSummary.java +36 −7 Original line number Original line Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.content.Context; import android.content.Intent; import android.content.Intent; import android.net.ConnectivityManager; import android.net.ConnectivityManager; import android.net.INetworkStatsSession; import android.net.INetworkStatsSession; import android.net.NetworkPolicy; import android.net.NetworkTemplate; import android.net.NetworkTemplate; import android.net.TrafficStats; import android.net.TrafficStats; import android.os.Bundle; import android.os.Bundle; Loading Loading @@ -48,6 +49,7 @@ import com.android.settings.Utils; import com.android.settings.dashboard.SummaryLoader; import com.android.settings.dashboard.SummaryLoader; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.Indexable; import com.android.settings.search.Indexable; import com.android.settingslib.NetworkPolicyEditor; import com.android.settingslib.net.DataUsageController; import com.android.settingslib.net.DataUsageController; import java.util.ArrayList; import java.util.ArrayList; Loading @@ -56,7 +58,7 @@ import java.util.List; import static android.net.ConnectivityManager.TYPE_ETHERNET; import static android.net.ConnectivityManager.TYPE_ETHERNET; import static android.net.ConnectivityManager.TYPE_WIFI; import static android.net.ConnectivityManager.TYPE_WIFI; public class DataUsageSummary extends DataUsageBase implements Indexable { public class DataUsageSummary extends DataUsageBase implements Indexable, DataUsageEditController { private static final String TAG = "DataUsageSummary"; private static final String TAG = "DataUsageSummary"; static final boolean LOGD = false; static final boolean LOGD = false; Loading Loading @@ -87,15 +89,13 @@ public class DataUsageSummary extends DataUsageBase implements Indexable { hasMobileData = false; hasMobileData = false; } } mDefaultTemplate = getDefaultTemplate(getContext(), defaultSubId); mDefaultTemplate = getDefaultTemplate(getContext(), defaultSubId); if (hasMobileData) { mSummaryPreference = (SummaryPreference) findPreference(KEY_STATUS_HEADER); mLimitPreference = findPreference(KEY_LIMIT_SUMMARY); } else { removePreference(KEY_LIMIT_SUMMARY); } if (!hasMobileData || !isAdmin()) { if (!hasMobileData || !isAdmin()) { removePreference(KEY_RESTRICT_BACKGROUND); removePreference(KEY_RESTRICT_BACKGROUND); } } if (hasMobileData) { if (hasMobileData) { mLimitPreference = findPreference(KEY_LIMIT_SUMMARY); List<SubscriptionInfo> subscriptions = List<SubscriptionInfo> subscriptions = services.mSubscriptionManager.getActiveSubscriptionInfoList(); services.mSubscriptionManager.getActiveSubscriptionInfoList(); if (subscriptions == null || subscriptions.size() == 0) { if (subscriptions == null || subscriptions.size() == 0) { Loading @@ -104,6 +104,10 @@ public class DataUsageSummary extends DataUsageBase implements Indexable { for (int i = 0; subscriptions != null && i < subscriptions.size(); i++) { for (int i = 0; subscriptions != null && i < subscriptions.size(); i++) { addMobileSection(subscriptions.get(i).getSubscriptionId()); addMobileSection(subscriptions.get(i).getSubscriptionId()); } } mSummaryPreference.setSelectable(true); } else { removePreference(KEY_LIMIT_SUMMARY); mSummaryPreference.setSelectable(false); } } boolean hasWifiRadio = hasWifiRadio(getContext()); boolean hasWifiRadio = hasWifiRadio(getContext()); if (hasWifiRadio) { if (hasWifiRadio) { Loading @@ -116,7 +120,6 @@ public class DataUsageSummary extends DataUsageBase implements Indexable { : hasWifiRadio ? R.string.wifi_data_template : hasWifiRadio ? R.string.wifi_data_template : R.string.ethernet_data_template; : R.string.ethernet_data_template; mSummaryPreference = (SummaryPreference) findPreference(KEY_STATUS_HEADER); setHasOptionsMenu(true); setHasOptionsMenu(true); } } Loading @@ -142,6 +145,15 @@ public class DataUsageSummary extends DataUsageBase implements Indexable { return false; return false; } } @Override public boolean onPreferenceTreeClick(Preference preference) { if (preference == findPreference(KEY_STATUS_HEADER)) { BillingCycleSettings.BytesEditorFragment.show(this, false); return false; } return super.onPreferenceTreeClick(preference); } private void addMobileSection(int subId) { private void addMobileSection(int subId) { TemplatePreferenceCategory category = (TemplatePreferenceCategory) TemplatePreferenceCategory category = (TemplatePreferenceCategory) inflatePreferences(R.xml.data_usage_cellular); inflatePreferences(R.xml.data_usage_cellular); Loading Loading @@ -224,6 +236,8 @@ public class DataUsageSummary extends DataUsageBase implements Indexable { DataUsageController.DataUsageInfo info = mDataUsageController.getDataUsageInfo( DataUsageController.DataUsageInfo info = mDataUsageController.getDataUsageInfo( mDefaultTemplate); mDefaultTemplate); Context context = getContext(); Context context = getContext(); NetworkPolicy policy = services.mPolicyEditor.getPolicy(mDefaultTemplate); info.warningLevel = policy.warningBytes; if (mSummaryPreference != null) { if (mSummaryPreference != null) { mSummaryPreference.setTitle( mSummaryPreference.setTitle( formatTitle(context, getString(mDataUsageTemplate), info.usageLevel)); formatTitle(context, getString(mDataUsageTemplate), info.usageLevel)); Loading Loading @@ -258,6 +272,21 @@ public class DataUsageSummary extends DataUsageBase implements Indexable { return MetricsEvent.DATA_USAGE_SUMMARY; return MetricsEvent.DATA_USAGE_SUMMARY; } } @Override public NetworkPolicyEditor getNetworkPolicyEditor() { return services.mPolicyEditor; } @Override public NetworkTemplate getNetworkTemplate() { return mDefaultTemplate; } @Override public void updateDataUsage() { updateState(); } /** /** * Test if device has an ethernet network connection. * Test if device has an ethernet network connection. */ */ Loading