Add more preference controllers to network page.

- To support Mobile plan preference controller, extended
  LifecycleObserver pattern to also observe onCreate and onSaveInstance.

Bug: 31799836
Test: RunSettingsRoboTests
Change-Id: Ie98db7efa91f0a8b4c8a06a784d3351237e59fe0
This commit is contained in:
Fan Zhang
2016-10-13 09:53:38 -07:00
parent fdca235dc5
commit f1acdd3a51
14 changed files with 698 additions and 235 deletions

View File

@@ -15,8 +15,12 @@
*/
package com.android.settings.network;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.util.Log;
import com.android.internal.logging.MetricsProto;
import com.android.settings.R;
import com.android.settings.core.PreferenceController;
import com.android.settings.dashboard.DashboardFragment;
@@ -25,7 +29,11 @@ import com.android.settingslib.drawer.CategoryKey;
import java.util.ArrayList;
import java.util.List;
public class NetworkDashboardFragment extends DashboardFragment {
import static com.android.settings.network.MobilePlanPreferenceController
.MANAGE_MOBILE_PLAN_DIALOG_ID;
public class NetworkDashboardFragment extends DashboardFragment implements
MobilePlanPreferenceController.MobilePlanPreferenceHost {
private static final String TAG = "NetworkDashboardFrag";
@@ -53,13 +61,50 @@ public class NetworkDashboardFragment extends DashboardFragment {
protected List<PreferenceController> getPreferenceControllers(Context context) {
final AirplaneModePreferenceController airplaneModePreferenceController =
new AirplaneModePreferenceController(context, this /* fragment */);
final MobilePlanPreferenceController mobilePlanPreferenceController =
new MobilePlanPreferenceController(context, this);
getLifecycle().addObserver(airplaneModePreferenceController);
getLifecycle().addObserver(mobilePlanPreferenceController);
final List<PreferenceController> controllers = new ArrayList<>();
controllers.add(airplaneModePreferenceController);
controllers.add(new TetherPreferenceController(context));
controllers.add(new MobileNetworkPreferenceController(context));
controllers.add(new TetherPreferenceController(context));
controllers.add(new VpnPreferenceController(context));
controllers.add(new WifiCallingPreferenceController(context));
controllers.add(new NetworkResetPreferenceController(context));
controllers.add(new ProxyPreferenceController(context));
controllers.add(mobilePlanPreferenceController);
return controllers;
}
@Override
public void showMobilePlanMessageDialog() {
showDialog(MANAGE_MOBILE_PLAN_DIALOG_ID);
}
@Override
public Dialog onCreateDialog(int dialogId) {
Log.d(TAG, "onCreateDialog: dialogId=" + dialogId);
switch (dialogId) {
case MANAGE_MOBILE_PLAN_DIALOG_ID:
final MobilePlanPreferenceController controller =
getPreferenceController(MobilePlanPreferenceController.class);
return new AlertDialog.Builder(getActivity())
.setMessage(controller.getMobilePlanDialogMessage())
.setCancelable(false)
.setPositiveButton(com.android.internal.R.string.ok,
(dialog, id) -> controller.setMobilePlanDialogMessage(null))
.create();
}
return super.onCreateDialog(dialogId);
}
@Override
public int getDialogMetricsCategory(int dialogId) {
if (MANAGE_MOBILE_PLAN_DIALOG_ID == dialogId) {
return MetricsProto.MetricsEvent.DIALOG_MANAGE_MOBILE_PLAN;
}
return 0;
}
}