Merge "Add data usage header to mobile network details page"

This commit is contained in:
TreeHugger Robot
2019-01-19 07:17:33 +00:00
committed by Android (Google) Code Review
6 changed files with 336 additions and 37 deletions

View File

@@ -141,7 +141,8 @@ public class DataUsageSummary extends DataUsageBaseFragment implements DataUsage
final Activity activity = getActivity();
final ArrayList<AbstractPreferenceController> controllers = new ArrayList<>();
mSummaryController =
new DataUsageSummaryPreferenceController(activity, getSettingsLifecycle(), this);
new DataUsageSummaryPreferenceController(activity, getSettingsLifecycle(), this,
DataUsageUtils.getDefaultSubscriptionId(activity));
controllers.add(mSummaryController);
getSettingsLifecycle().addObserver(mSummaryController);
return controllers;

View File

@@ -31,6 +31,7 @@ import android.util.RecurrenceRule;
import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;
import androidx.preference.PreferenceFragmentCompat;
import androidx.recyclerview.widget.RecyclerView;
import com.android.internal.util.CollectionUtils;
@@ -47,9 +48,9 @@ import com.android.settingslib.net.DataUsageController;
import java.util.List;
/**
* This is the controller for the top of the data usage screen that retrieves carrier data from the
* new subscriptions framework API if available. The controller reads subscription information from
* the framework and falls back to legacy usage data if none are available.
* This is the controller for a data usage header that retrieves carrier data from the new
* subscriptions framework API if available. The controller reads subscription information from the
* framework and falls back to legacy usage data if none are available.
*/
public class DataUsageSummaryPreferenceController extends BasePreferenceController
implements PreferenceControllerMixin, LifecycleObserver, OnStart {
@@ -63,7 +64,7 @@ public class DataUsageSummaryPreferenceController extends BasePreferenceControll
private final Activity mActivity;
private final EntityHeaderController mEntityHeaderController;
private final Lifecycle mLifecycle;
private final DataUsageSummary mDataUsageSummary;
private final PreferenceFragmentCompat mFragment;
private final DataUsageController mDataUsageController;
private final DataUsageInfoController mDataInfoController;
private final NetworkTemplate mDefaultTemplate;
@@ -94,28 +95,31 @@ public class DataUsageSummaryPreferenceController extends BasePreferenceControll
private long mCycleStart;
/** The ending time of the billing cycle in ms since the epoch */
private long mCycleEnd;
/** The subscription that we should show usage for. */
private int mSubscriptionId;
private Intent mManageSubscriptionIntent;
public DataUsageSummaryPreferenceController(Activity activity,
Lifecycle lifecycle, DataUsageSummary dataUsageSummary) {
Lifecycle lifecycle, PreferenceFragmentCompat fragment, int subscriptionId) {
super(activity, KEY);
mActivity = activity;
mEntityHeaderController = EntityHeaderController.newInstance(activity,
dataUsageSummary, null);
fragment, null);
mLifecycle = lifecycle;
mDataUsageSummary = dataUsageSummary;
mFragment = fragment;
mSubscriptionId = subscriptionId;
final int defaultSubId = DataUsageUtils.getDefaultSubscriptionId(activity);
mDefaultTemplate = DataUsageUtils.getDefaultTemplate(activity, defaultSubId);
NetworkPolicyManager policyManager = NetworkPolicyManager.from(activity);
mDefaultTemplate = DataUsageUtils.getDefaultTemplate(activity, mSubscriptionId);
NetworkPolicyManager policyManager = activity.getSystemService(NetworkPolicyManager.class);
mPolicyEditor = new NetworkPolicyEditor(policyManager);
mHasMobileData = DataUsageUtils.hasMobileData(activity)
&& defaultSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID;
&& mSubscriptionId != SubscriptionManager.INVALID_SUBSCRIPTION_ID;
mDataUsageController = new DataUsageController(activity);
mDataUsageController.setSubscriptionId(mSubscriptionId);
mDataInfoController = new DataUsageInfoController();
if (mHasMobileData) {
@@ -142,7 +146,8 @@ public class DataUsageSummaryPreferenceController extends BasePreferenceControll
Activity activity,
Lifecycle lifecycle,
EntityHeaderController entityHeaderController,
DataUsageSummary dataUsageSummary) {
PreferenceFragmentCompat fragment,
int subscriptionId) {
super(activity, KEY);
mDataUsageController = dataUsageController;
mDataInfoController = dataInfoController;
@@ -154,12 +159,13 @@ public class DataUsageSummaryPreferenceController extends BasePreferenceControll
mActivity = activity;
mLifecycle = lifecycle;
mEntityHeaderController = entityHeaderController;
mDataUsageSummary = dataUsageSummary;
mFragment = fragment;
mSubscriptionId = subscriptionId;
}
@Override
public void onStart() {
RecyclerView view = mDataUsageSummary.getListView();
RecyclerView view = mFragment.getListView();
mEntityHeaderController.setRecyclerView(view, mLifecycle);
mEntityHeaderController.styleActionBar(mActivity);
}
@@ -260,12 +266,18 @@ public class DataUsageSummaryPreferenceController extends BasePreferenceControll
mCycleEnd = info.cycleEnd;
mSnapshotTime = -1L;
final int defaultSubId = SubscriptionManager.getDefaultSubscriptionId();
final SubscriptionInfo subInfo = mSubscriptionManager.getDefaultDataSubscriptionInfo();
SubscriptionInfo subInfo = mSubscriptionManager.getActiveSubscriptionInfo(mSubscriptionId);
if (subInfo == null) {
subInfo = mSubscriptionManager.getAllSubscriptionInfoList().stream().filter(
i -> i.getSubscriptionId() == mSubscriptionId).findFirst().orElse(null);
}
if (subInfo != null && mHasMobileData) {
mCarrierName = subInfo.getCarrierName();
List<SubscriptionPlan> plans = mSubscriptionManager.getSubscriptionPlans(defaultSubId);
final SubscriptionPlan primaryPlan = getPrimaryPlan(mSubscriptionManager, defaultSubId);
List<SubscriptionPlan> plans = mSubscriptionManager.getSubscriptionPlans(
mSubscriptionId);
final SubscriptionPlan primaryPlan = getPrimaryPlan(mSubscriptionManager,
mSubscriptionId);
if (primaryPlan != null) {
mDataplanCount = plans.size();
mDataplanSize = primaryPlan.getDataLimitBytes();
@@ -284,8 +296,8 @@ public class DataUsageSummaryPreferenceController extends BasePreferenceControll
}
}
mManageSubscriptionIntent =
mSubscriptionManager.createManageSubscriptionIntent(defaultSubId);
Log.i(TAG, "Have " + mDataplanCount + " plans, dflt sub-id " + defaultSubId
mSubscriptionManager.createManageSubscriptionIntent(mSubscriptionId);
Log.i(TAG, "Have " + mDataplanCount + " plans, dflt sub-id " + mSubscriptionId
+ ", intent " + mManageSubscriptionIntent);
}

View File

@@ -34,7 +34,10 @@ import androidx.preference.Preference;
import com.android.internal.telephony.TelephonyIntents;
import com.android.settings.R;
import com.android.settings.core.FeatureFlags;
import com.android.settings.dashboard.RestrictedDashboardFragment;
import com.android.settings.datausage.DataUsageSummaryPreferenceController;
import com.android.settings.development.featureflags.FeatureFlagPersistent;
import com.android.settings.network.telephony.cdma.CdmaSubscriptionPreferenceController;
import com.android.settings.network.telephony.cdma.CdmaSystemSelectPreferenceController;
import com.android.settings.network.telephony.gsm.AutoSelectPreferenceController;
@@ -42,6 +45,7 @@ import com.android.settings.network.telephony.gsm.OpenNetworkSelectPagePreferenc
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.search.Indexable;
import com.android.settings.widget.PreferenceCategoryController;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.search.SearchIndexable;
import java.util.ArrayList;
@@ -105,12 +109,23 @@ public class MobileNetworkSettings extends RestrictedDashboardFragment {
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
mSubId = getArguments().getInt(Settings.EXTRA_SUB_ID,
SubscriptionManager.INVALID_SUBSCRIPTION_ID);
if (FeatureFlagPersistent.isEnabled(getContext(), FeatureFlags.NETWORK_INTERNET_V2) &&
mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
return Arrays.asList(
new DataUsageSummaryPreferenceController(getActivity(), getSettingsLifecycle(),
this, mSubId));
}
return Arrays.asList();
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
use(MobileDataPreferenceController.class).init(getFragmentManager(), mSubId);
use(RoamingPreferenceController.class).init(getFragmentManager(), mSubId);
use(ApnPreferenceController.class).init(mSubId);
@@ -163,7 +178,11 @@ public class MobileNetworkSettings extends RestrictedDashboardFragment {
@Override
protected int getPreferenceScreenResId() {
return R.xml.mobile_network_settings;
if (FeatureFlagPersistent.isEnabled(getContext(), FeatureFlags.NETWORK_INTERNET_V2)) {
return R.xml.mobile_network_settings_v2;
} else {
return R.xml.mobile_network_settings;
}
}
@Override