Loading AndroidManifest.xml +4 −4 Original line number Diff line number Diff line Loading @@ -676,12 +676,12 @@ <activity android:name=".network.telephony.ToggleSubscriptionDialogActivity" android:exported="false" android:permission="android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS" android:theme="@*android:style/Theme.DeviceDefault.Dialog.Alert.DayNight" /> android:theme="@style/Theme.AlertDialog"/> <activity android:name=".network.telephony.DeleteEuiccSubscriptionDialogActivity" android:exported="false" android:permission="android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS" android:theme="@*android:style/Theme.DeviceDefault.Dialog.Alert.DayNight" /> android:theme="@style/Theme.AlertDialog"/> <activity android:name="Settings$TetherSettingsActivity" Loading Loading @@ -4263,14 +4263,14 @@ android:exported="false" android:permission="android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS" android:launchMode="singleInstance" android:theme="@*android:style/Theme.DeviceDefault.Dialog.Alert.DayNight" /> android:theme="@style/Theme.AlertDialog"/> <activity android:name=".sim.DsdsDialogActivity" android:exported="false" android:permission="android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS" android:launchMode="singleInstance" android:theme="@*android:style/Theme.DeviceDefault.Dialog.Alert.DayNight" /> android:theme="@style/Theme.AlertDialog"/> <service android:name=".sim.SimNotificationService" android:permission="android.permission.BIND_JOB_SERVICE" /> Loading res/layout/sim_confirm_dialog_multiple_enabled_profiles_supported.xml 0 → 100644 +57 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <!-- Copyright (C) 2021 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. --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" style="@style/Theme.Material3.DayNight.Dialog.Alert"> <TextView android:id="@+id/msg" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <ListView android:id="@+id/carrier_list" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:minWidth="56dp" android:gravity="start|top" android:orientation="horizontal" android:paddingEnd="12dp" android:paddingTop="16dp" android:paddingBottom="4dp" android:baselineAligned="true"> <ImageView android:src="@drawable/ic_info_outline_24dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:tint="?android:attr/textColorTertiary"/> <TextView android:id="@+id/info_outline" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="16dp" android:paddingBottom="8dp" android:text="@string/sim_action_switch_sub_dialog_info_outline_for_turning_off" android:textColor="?android:attr/textColorSecondary" /> </LinearLayout> </LinearLayout> No newline at end of file src/com/android/settings/network/telephony/AlertDialogFragment.java +6 −5 Original line number Diff line number Diff line Loading @@ -16,13 +16,14 @@ package com.android.settings.network.telephony; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; import android.os.Bundle; import android.text.TextUtils; import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.FragmentActivity; /** Fragment to show an alert dialog which only has the positive button. */ public class AlertDialogFragment extends BaseDialogFragment implements DialogInterface.OnClickListener { Loading @@ -37,13 +38,13 @@ public class AlertDialogFragment extends BaseDialogFragment * @param title * @param msg */ public static void show(Activity activity, String title, String msg) { public static void show(FragmentActivity activity, String title, String msg) { AlertDialogFragment fragment = new AlertDialogFragment(); Bundle arguments = new Bundle(); arguments.putString(ARG_TITLE, title); arguments.putString(ARG_MSG, msg); fragment.setArguments(arguments); fragment.show(activity.getFragmentManager(), TAG); fragment.show(activity.getSupportFragmentManager(), TAG); } @Override Loading @@ -55,7 +56,7 @@ public class AlertDialogFragment extends BaseDialogFragment if (!TextUtils.isEmpty(getArguments().getString(ARG_MSG))) { builder.setMessage(getArguments().getString(ARG_MSG)); } return builder.show(); return builder.create(); } @Override Loading src/com/android/settings/network/telephony/BaseDialogFragment.java +2 −2 Original line number Diff line number Diff line Loading @@ -17,11 +17,11 @@ package com.android.settings.network.telephony; import android.app.Activity; import android.app.DialogFragment; import android.app.Fragment; import android.os.Bundle; import androidx.annotation.Nullable; import androidx.fragment.app.DialogFragment; import androidx.fragment.app.Fragment; /** * Base dialog fragment class with the functionality to make a fragment or an activity as a listener Loading src/com/android/settings/network/telephony/ConfirmDialogFragment.java +80 −8 Original line number Diff line number Diff line Loading @@ -16,13 +16,24 @@ package com.android.settings.network.telephony; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; import android.os.Bundle; import android.text.TextUtils; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.TextView; import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.FragmentActivity; import com.android.settings.R; import java.util.ArrayList; /** Fragment to show a confirm dialog. The caller should implement onConfirmListener. */ public class ConfirmDialogFragment extends BaseDialogFragment Loading @@ -32,6 +43,7 @@ public class ConfirmDialogFragment extends BaseDialogFragment private static final String ARG_MSG = "msg"; private static final String ARG_POS_BUTTON_STRING = "pos_button_string"; private static final String ARG_NEG_BUTTON_STRING = "neg_button_string"; private static final String ARG_LIST = "list"; /** * Interface defining the method that will be invoked when the user has done with the dialog. Loading @@ -51,7 +63,7 @@ public class ConfirmDialogFragment extends BaseDialogFragment /** Displays a confirmation dialog which has confirm and cancel buttons. */ public static <T> void show( Activity activity, FragmentActivity activity, Class<T> callbackInterfaceClass, int tagInCaller, String title, Loading @@ -66,7 +78,29 @@ public class ConfirmDialogFragment extends BaseDialogFragment arguments.putString(ARG_NEG_BUTTON_STRING, negButtonString); setListener(activity, null, callbackInterfaceClass, tagInCaller, arguments); fragment.setArguments(arguments); fragment.show(activity.getFragmentManager(), TAG); fragment.show(activity.getSupportFragmentManager(), TAG); } /** Displays a confirmation dialog which has confirm and cancel buttons and carrier list.*/ public static <T> void show( FragmentActivity activity, Class<T> callbackInterfaceClass, int tagInCaller, String title, String msg, String posButtonString, String negButtonString, ArrayList<String> list) { ConfirmDialogFragment fragment = new ConfirmDialogFragment(); Bundle arguments = new Bundle(); arguments.putString(ARG_TITLE, title); arguments.putCharSequence(ARG_MSG, msg); arguments.putString(ARG_POS_BUTTON_STRING, posButtonString); arguments.putString(ARG_NEG_BUTTON_STRING, negButtonString); arguments.putStringArrayList(ARG_LIST, list); setListener(activity, null, callbackInterfaceClass, tagInCaller, arguments); fragment.setArguments(arguments); fragment.show(activity.getSupportFragmentManager(), TAG); } @Override Loading @@ -75,18 +109,56 @@ public class ConfirmDialogFragment extends BaseDialogFragment String message = getArguments().getString(ARG_MSG); String posBtnString = getArguments().getString(ARG_POS_BUTTON_STRING); String negBtnString = getArguments().getString(ARG_NEG_BUTTON_STRING); ArrayList<String> list = getArguments().getStringArrayList(ARG_LIST); Log.i("Showing dialog with title = %s", title); Log.i(TAG, "Showing dialog with title =" + title); AlertDialog.Builder builder = new AlertDialog.Builder(getContext()) .setTitle(title) .setPositiveButton(posBtnString, this) .setNegativeButton(negBtnString, this); if (list != null && !list.isEmpty()) { Log.i(TAG, "list =" + list.toString()); View content = LayoutInflater.from(getContext()).inflate( R.layout.sim_confirm_dialog_multiple_enabled_profiles_supported, null); TextView dialogMessage = content.findViewById(R.id.msg); if (!TextUtils.isEmpty(message) && dialogMessage != null) { dialogMessage.setText(message); } final ArrayAdapter<String> arrayAdapterItems = new ArrayAdapter<String>( getContext(), android.R.layout.select_dialog_item, list); final ListView lvItems = content.findViewById(R.id.carrier_list); if (lvItems != null) { lvItems.setAdapter(arrayAdapterItems); lvItems.setChoiceMode(ListView.CHOICE_MODE_NONE); lvItems.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Log.i(TAG, "list onClick =" + position); Log.i(TAG, "list item =" + list.get(position)); if (position == list.size() - 1) { // user select the "cancel" item; informCaller(false, -1); } else { informCaller(true, position); } } }); } builder.setView(content); } else { if (!TextUtils.isEmpty(message)) { builder.setMessage(message); } AlertDialog dialog = builder.show(); } AlertDialog dialog = builder.create(); dialog.setCanceledOnTouchOutside(false); return dialog; } Loading Loading
AndroidManifest.xml +4 −4 Original line number Diff line number Diff line Loading @@ -676,12 +676,12 @@ <activity android:name=".network.telephony.ToggleSubscriptionDialogActivity" android:exported="false" android:permission="android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS" android:theme="@*android:style/Theme.DeviceDefault.Dialog.Alert.DayNight" /> android:theme="@style/Theme.AlertDialog"/> <activity android:name=".network.telephony.DeleteEuiccSubscriptionDialogActivity" android:exported="false" android:permission="android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS" android:theme="@*android:style/Theme.DeviceDefault.Dialog.Alert.DayNight" /> android:theme="@style/Theme.AlertDialog"/> <activity android:name="Settings$TetherSettingsActivity" Loading Loading @@ -4263,14 +4263,14 @@ android:exported="false" android:permission="android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS" android:launchMode="singleInstance" android:theme="@*android:style/Theme.DeviceDefault.Dialog.Alert.DayNight" /> android:theme="@style/Theme.AlertDialog"/> <activity android:name=".sim.DsdsDialogActivity" android:exported="false" android:permission="android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS" android:launchMode="singleInstance" android:theme="@*android:style/Theme.DeviceDefault.Dialog.Alert.DayNight" /> android:theme="@style/Theme.AlertDialog"/> <service android:name=".sim.SimNotificationService" android:permission="android.permission.BIND_JOB_SERVICE" /> Loading
res/layout/sim_confirm_dialog_multiple_enabled_profiles_supported.xml 0 → 100644 +57 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <!-- Copyright (C) 2021 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. --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" style="@style/Theme.Material3.DayNight.Dialog.Alert"> <TextView android:id="@+id/msg" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <ListView android:id="@+id/carrier_list" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:minWidth="56dp" android:gravity="start|top" android:orientation="horizontal" android:paddingEnd="12dp" android:paddingTop="16dp" android:paddingBottom="4dp" android:baselineAligned="true"> <ImageView android:src="@drawable/ic_info_outline_24dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:tint="?android:attr/textColorTertiary"/> <TextView android:id="@+id/info_outline" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="16dp" android:paddingBottom="8dp" android:text="@string/sim_action_switch_sub_dialog_info_outline_for_turning_off" android:textColor="?android:attr/textColorSecondary" /> </LinearLayout> </LinearLayout> No newline at end of file
src/com/android/settings/network/telephony/AlertDialogFragment.java +6 −5 Original line number Diff line number Diff line Loading @@ -16,13 +16,14 @@ package com.android.settings.network.telephony; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; import android.os.Bundle; import android.text.TextUtils; import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.FragmentActivity; /** Fragment to show an alert dialog which only has the positive button. */ public class AlertDialogFragment extends BaseDialogFragment implements DialogInterface.OnClickListener { Loading @@ -37,13 +38,13 @@ public class AlertDialogFragment extends BaseDialogFragment * @param title * @param msg */ public static void show(Activity activity, String title, String msg) { public static void show(FragmentActivity activity, String title, String msg) { AlertDialogFragment fragment = new AlertDialogFragment(); Bundle arguments = new Bundle(); arguments.putString(ARG_TITLE, title); arguments.putString(ARG_MSG, msg); fragment.setArguments(arguments); fragment.show(activity.getFragmentManager(), TAG); fragment.show(activity.getSupportFragmentManager(), TAG); } @Override Loading @@ -55,7 +56,7 @@ public class AlertDialogFragment extends BaseDialogFragment if (!TextUtils.isEmpty(getArguments().getString(ARG_MSG))) { builder.setMessage(getArguments().getString(ARG_MSG)); } return builder.show(); return builder.create(); } @Override Loading
src/com/android/settings/network/telephony/BaseDialogFragment.java +2 −2 Original line number Diff line number Diff line Loading @@ -17,11 +17,11 @@ package com.android.settings.network.telephony; import android.app.Activity; import android.app.DialogFragment; import android.app.Fragment; import android.os.Bundle; import androidx.annotation.Nullable; import androidx.fragment.app.DialogFragment; import androidx.fragment.app.Fragment; /** * Base dialog fragment class with the functionality to make a fragment or an activity as a listener Loading
src/com/android/settings/network/telephony/ConfirmDialogFragment.java +80 −8 Original line number Diff line number Diff line Loading @@ -16,13 +16,24 @@ package com.android.settings.network.telephony; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; import android.os.Bundle; import android.text.TextUtils; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.TextView; import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.FragmentActivity; import com.android.settings.R; import java.util.ArrayList; /** Fragment to show a confirm dialog. The caller should implement onConfirmListener. */ public class ConfirmDialogFragment extends BaseDialogFragment Loading @@ -32,6 +43,7 @@ public class ConfirmDialogFragment extends BaseDialogFragment private static final String ARG_MSG = "msg"; private static final String ARG_POS_BUTTON_STRING = "pos_button_string"; private static final String ARG_NEG_BUTTON_STRING = "neg_button_string"; private static final String ARG_LIST = "list"; /** * Interface defining the method that will be invoked when the user has done with the dialog. Loading @@ -51,7 +63,7 @@ public class ConfirmDialogFragment extends BaseDialogFragment /** Displays a confirmation dialog which has confirm and cancel buttons. */ public static <T> void show( Activity activity, FragmentActivity activity, Class<T> callbackInterfaceClass, int tagInCaller, String title, Loading @@ -66,7 +78,29 @@ public class ConfirmDialogFragment extends BaseDialogFragment arguments.putString(ARG_NEG_BUTTON_STRING, negButtonString); setListener(activity, null, callbackInterfaceClass, tagInCaller, arguments); fragment.setArguments(arguments); fragment.show(activity.getFragmentManager(), TAG); fragment.show(activity.getSupportFragmentManager(), TAG); } /** Displays a confirmation dialog which has confirm and cancel buttons and carrier list.*/ public static <T> void show( FragmentActivity activity, Class<T> callbackInterfaceClass, int tagInCaller, String title, String msg, String posButtonString, String negButtonString, ArrayList<String> list) { ConfirmDialogFragment fragment = new ConfirmDialogFragment(); Bundle arguments = new Bundle(); arguments.putString(ARG_TITLE, title); arguments.putCharSequence(ARG_MSG, msg); arguments.putString(ARG_POS_BUTTON_STRING, posButtonString); arguments.putString(ARG_NEG_BUTTON_STRING, negButtonString); arguments.putStringArrayList(ARG_LIST, list); setListener(activity, null, callbackInterfaceClass, tagInCaller, arguments); fragment.setArguments(arguments); fragment.show(activity.getSupportFragmentManager(), TAG); } @Override Loading @@ -75,18 +109,56 @@ public class ConfirmDialogFragment extends BaseDialogFragment String message = getArguments().getString(ARG_MSG); String posBtnString = getArguments().getString(ARG_POS_BUTTON_STRING); String negBtnString = getArguments().getString(ARG_NEG_BUTTON_STRING); ArrayList<String> list = getArguments().getStringArrayList(ARG_LIST); Log.i("Showing dialog with title = %s", title); Log.i(TAG, "Showing dialog with title =" + title); AlertDialog.Builder builder = new AlertDialog.Builder(getContext()) .setTitle(title) .setPositiveButton(posBtnString, this) .setNegativeButton(negBtnString, this); if (list != null && !list.isEmpty()) { Log.i(TAG, "list =" + list.toString()); View content = LayoutInflater.from(getContext()).inflate( R.layout.sim_confirm_dialog_multiple_enabled_profiles_supported, null); TextView dialogMessage = content.findViewById(R.id.msg); if (!TextUtils.isEmpty(message) && dialogMessage != null) { dialogMessage.setText(message); } final ArrayAdapter<String> arrayAdapterItems = new ArrayAdapter<String>( getContext(), android.R.layout.select_dialog_item, list); final ListView lvItems = content.findViewById(R.id.carrier_list); if (lvItems != null) { lvItems.setAdapter(arrayAdapterItems); lvItems.setChoiceMode(ListView.CHOICE_MODE_NONE); lvItems.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Log.i(TAG, "list onClick =" + position); Log.i(TAG, "list item =" + list.get(position)); if (position == list.size() - 1) { // user select the "cancel" item; informCaller(false, -1); } else { informCaller(true, position); } } }); } builder.setView(content); } else { if (!TextUtils.isEmpty(message)) { builder.setMessage(message); } AlertDialog dialog = builder.show(); } AlertDialog dialog = builder.create(); dialog.setCanceledOnTouchOutside(false); return dialog; } Loading